Commit Graph

11 Commits

Author SHA1 Message Date
Joey Parrish 68b50f656d build: Stop using hermetic clang, libc++, etc
This brings our default build config more in line with what is
necessary for some platforms anyway: using the system-installed
toolchain and sysroot to build everything.

We will no longer fetch source or binaries for any specific build
tools, such as libc++, clang, gold, binutils, or valgrind.

The main part of this change is the changing of default gyp settings
in gyp_packager.py.  For this, a bug in gyp_packager.py had to be
fixed, in which similar GYP_DEFINE key names (such as clang and
host_clang) would conflict, causing some defaults not to be installed
properly.

In order to enable clang=0 by default, some changes had to be made in
common.gypi:
  - compiler macros added to fix a compatibility issue between
    Chromium's base/mac/ folder and the actual OSX SDK
	- replaced clang_warning_flags variables with standard cflags
	  settings, plus xcode_settings for OSX
  - turned off warnings-as-errors for non-shaka code, rather than
		allow-listing specific warning types, since we can't actually fix
    those warnings on any platform
  - disabled two specific warnings in shaka code, both of which are
    caused by headers from our non-shaka dependencies

Also, one warning (missing "override" keyword) has been fixed in
vod_media_info_dump_muxer_listener.h.

Although these changes were done to make building simpler on a wider
array of platforms (arm64, for example), it seems to make the build a
bit faster, too.  For me, at least, on my main Linux workstation:
  - "gclient sync" now runs 20-30% faster
  - "ninja -C out/Release" now runs 5-13% faster

The following environment variables are no longer required:
  - DEPOT_TOOLS_WIN_TOOLCHAIN
  - MACOSX_DEPLOYMENT_TARGET
Documentation, Dockerfiles, and GitHub Actions workflows have been
updated to reflect this.

The following GYP_DEFINES are no longer required for anyone:
  - clang=0
  - host_clang=0
  - clang_xcode=1
  - use_allocator=none
  - use_experimental_allocator_shim=0
Documentation, Dockerfiles, and GitHub Actions workflows have been
updated to reflect this.

The following repos are no longer dependencies in gclient:
  - binutils
  - clang
  - gold
  - libc++
  - libc++abi
  - valgrind

The following gclient hooks have been removed:
  - clang
  - mac_toolchain
  - sysroot

Change-Id: Ie94ccbeec722ab73c291cb7df897d20761a09a70
2021-07-29 13:54:44 -07:00
Joey Parrish 0f8749a211 CI overhaul based on GitHub Actions
This replaces Travis (for Linux & Mac) and Appveyor (for Windows) with
GitHub Actions.  In addition to using GitHub Actions to test PRs, this
also expands the automation of releases so that the only manual steps
are:

 1. Create a new CHANGELOG.md entry
 2. Create a release tag

Workflows have been create for building and testing PRs and releases,
for publishing releases to GitHub, NPM, and Docker Hub, and for
updating documentation on GitHub Pages.

When a new PR is created, GitHub Actions will:
 - Build and test on all combinations of OS, release type, and library
   type

Appveyor's workflow took ~2 hours, whereas the new GitHub Actions
workflow takes ~30 minutes.

When a new release tag is created, GitHub Actions will:
 - Create a draft release on GitHub
 - Extract release notes from CHANGELOG.md & attach them to the
   draft release
 - Build and test on all combinations of OS, release type, and library
   type, aborting if any build or test fails
 - Attach release artifacts to the draft release, aborting if any
   one artifact can't be prepared
 - Fully publish the draft release on GitHub
 - Publish the same release to NPM (triggered by GitHub release)
 - Publish the same release to Docker Hub (triggered by GitHub release)
 - Update the docs on GitHub pages

Closes #336 (GitHub Actions workflow to replace Travis and Appveyor)

b/190743862 (internal; tracking replacement of Travis)

Change-Id: Ic53eef60a8587c5d1487769a0cefaa16eb9b46e7
2021-06-16 11:52:02 -07:00
KongQun Yang ffb4d771ca Update Dockerfile due to depot_tools update
Change-Id: Iaf2415a2fb954a3f2473233eb0522edc211b4a9b
2021-06-11 11:07:41 -07:00
KongQun Yang 741ae7f545 Fix docker build
Alpine does not support python3 yet, but depot_tools enabled python3
by default recently.

Disable python3 for now.

Fixes #763.

Change-Id: I57cd414702e89cafbe1b8beee810f89760129d10
2020-11-09 18:13:51 +00:00
KongQun Yang a529d4677d Add pssh tool in docker image
Issue #550.

Change-Id: Id3fc6317789609b5d31cc671b2a361f8a8739f77
2019-02-19 23:06:05 +00:00
KongQun Yang 4640cac4eb Reduce Docker image size
This is achieved with these techniques:
- Use Alpine as the base image, which is only ~5MB.
- Use docker's multi-stage build to keep only the result binaries in
  the final image.

The new image is ~15MB after this change.

Also updated Dockerfile to use the current checkout code instead of always
sync from the latest.

Also added a .dockerignore file to ignore temporary build artifacts.

Closes #535.

Change-Id: I3c90805ebba40295e69241214ed6d7adbde465b8
2018-12-20 13:31:03 -08:00
Kongqun Yang 7cbc2720dc Fix docker build failure due to build update
Change-Id: Icc5a31b516e7f5a3baa2713a753c1738ce6c1166
2016-08-29 17:52:53 -07:00
Gabe Kopley e79115a7bf Specify Ubuntu 14.04 in Dockerfile to ensure successful build
(latest was pulling 16.04 which, while it successfully builds Release, yields an error building Debug: https://github.com/google/shaka-packager/issues/118 )
2016-07-08 13:16:36 -07:00
Kongqun Yang 06654da35a Rename edash-packager to shaka-packager in markdown files
Issue #103

Change-Id: I2d9b4985ca4046972e35ef3006691ca7017f78be
2016-05-24 21:55:07 +00:00
KongQun Yang 583f1f3352 Don't fetch git histories in docker
Change-Id: I02e5db18d49d1978960ee3d66cb48d681e5e858e
2016-03-02 18:01:36 +00:00
Leandro Moreira 44b2b07781 introduces docker for testing or development 2015-07-28 22:07:09 -03:00