shaka-packager/packager
Joey Parrish e6b57f72a8
feat: First phase of CMake build system implementation (#1072)
There are a lot of changes in this first phase, because there was a
lot of infrastructure required to get some meaningful amount of
porting done.  Future PRs should be simpler.

<b>Summary of changes:</b><details>

 - Remove old deps:
   - boringssl (replaced with mbedtls, lighter, easier to build)
   - gflags (replaced with absl::flags)
   - Chromium build tools
 - New deps to replace parts of Chromium base:
   - abseil-cpp
   - glog
   - nlohmann::json (for tests only)
 - Submodules, updates, and CMake build rules for third-party
   libraries:
   - curl
   - gmock/gtest
 - Ported internal libraries and their tests by removing Chromium deps
   and adding CMake build rules:
   - file (now using C++17 filesystem APIs)
   - license_notice
   - status
   - version
 - Test improvements
   - Removed file tests that can never be re-enabled
   - Re-enabled all other disabled file tests
   - Debug JSON values when HTTP tests fail
   - Fixed chunked-encoding issues in HTTP tests
 - Updated and refactored Dockerfiles testing
   - All docker files working, with OS versions updated to meet the
     new tool requirements
   - Local docker builds no longer write files to your working
     directory as root
   - Local docker builds can now be run in parallel without clobbering
     each others' build outputs
   - DEBUG=1 can drop you into an interactive shell when a docker
     build fails
 - Updated and heavily refactored workflows and Dockerfiles
   - All docker files now tested in parallel on GitHub, speeding up CI
   - All common workflow components broken out and using workflow_call
     instead of custom actions
   - Self-hosted runners now optional, to make testing easier on forks
   - CMake porting works-in-process can now be fully tested on GitHub
   - Building ported libraries and passing ported tests on all three
     platforms!
 - CI hacks for macOS removed, now testing on macos-latest!
 - Python2 no longer required!  (Only Python3)
 - Using strict build flags, treating all warnings as errors.

</details>

<b>Required to build:</b>

 - CMake >= 3.16
 - Python 3
 - A compiler supporting C++ >= 17
   - g++ >= 9 if using GCC (Clang also fine)
   - MSVC for Windows

<b>Still needs work:</b><details>

 - Moving other dependencies into submodules (if we keep them):
   - apple_apsl
   - icu
   - libevent
   - libpng
   - libwebm
   - libxml
   - modp_b64
   - protobuf
   - zlib
 - Port remaining internal libraries:
   - app
   - hls
   - media/base
   - media/chunking
   - media/codecs
   - media/crypto
   - media/demuxer
   - media/event
   - media/formats/dvb
   - media/formats/mp2t
   - media/formats/mp4
   - media/formats/packed_audio
   - media/formats/ttml
   - media/formats/webm
   - media/formats/webvtt
   - media/formats/wvm
   - media/origin
   - media/public
   - media/replicator
   - media/trick_play
   - mpd
 - Port main application
   - Add logging flags in absl and connect them to glog (which expects
     gflags)
 - Port pssh-box.py
 - Port main test targets (packager_test.py and packager_app.py)
 - Updating all requirement and build documentation
 - Remove any remaining refs to gclient, depot_tools, ninja
 - Update and complete release workflows using release-please
</details>

Issue #346 (Switch to abseil)
Issue #1047 (New build system)
2022-08-16 11:34:51 -07:00
..
app fix: dash_roles add role=description for DVS audio per DASH-IF-IOP-v4.3 (#1054) 2022-06-02 09:40:34 -07:00
file feat: First phase of CMake build system implementation (#1072) 2022-08-16 11:34:51 -07:00
hls chore: Update URLs after moving projects (#1042) 2022-03-07 11:56:34 -08:00
kv_pairs feat: First phase of CMake build system implementation (#1072) 2022-08-16 11:34:51 -07:00
media fix: webvtt single cue do not fail on EOS (#1061) 2022-06-02 09:27:47 -07:00
mpd fix: dash_roles add role=description for DVS audio per DASH-IF-IOP-v4.3 (#1054) 2022-06-02 09:40:34 -07:00
status feat: First phase of CMake build system implementation (#1072) 2022-08-16 11:34:51 -07:00
testing feat: First phase of CMake build system implementation (#1072) 2022-08-16 11:34:51 -07:00
third_party feat: First phase of CMake build system implementation (#1072) 2022-08-16 11:34:51 -07:00
tools feat: First phase of CMake build system implementation (#1072) 2022-08-16 11:34:51 -07:00
version feat: First phase of CMake build system implementation (#1072) 2022-08-16 11:34:51 -07:00
CMakeLists.txt feat: First phase of CMake build system implementation (#1072) 2022-08-16 11:34:51 -07:00
common.gypi ci: Produce static release executables on Linux (#978) 2021-08-12 20:14:43 -07:00
common.h feat: First phase of CMake build system implementation (#1072) 2022-08-16 11:34:51 -07:00
flag_saver.h feat: First phase of CMake build system implementation (#1072) 2022-08-16 11:34:51 -07:00
packager.cc Low latency DASH support (#979) 2021-08-25 08:38:05 -07:00
packager.gyp Fix Windows shared_library builds 2021-06-15 13:16:47 -07:00
packager.h cleanup: Convert all time parameters to signed 2021-08-05 18:24:15 +00:00
packager_test.cc Low latency DASH support (#979) 2021-08-25 08:38:05 -07:00
protoc.gypi build: Fix pylint 2.10 issues, use python3 where possible 2021-08-24 12:27:03 -07:00