{"id":21083590,"url":"https://github.com/threema-ch/webrtc-build-docker","last_synced_at":"2025-05-16T09:33:20.956Z","repository":{"id":46565318,"uuid":"71887229","full_name":"threema-ch/webrtc-build-docker","owner":"threema-ch","description":"Dockerfile to build the WebRTC PeerConnection for Android using the new GN based build system.","archived":false,"fork":false,"pushed_at":"2024-04-04T11:13:47.000Z","size":148,"stargazers_count":90,"open_issues_count":0,"forks_count":41,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-04-23T20:38:26.649Z","etag":null,"topics":["android","build-automation","docker","libjingle","webrtc"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/threema-ch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-10-25T10:45:11.000Z","updated_at":"2024-04-23T20:38:26.650Z","dependencies_parsed_at":"2023-12-14T17:42:15.967Z","dependency_job_id":"d11514ed-c9e8-451f-b461-b61950bfb021","html_url":"https://github.com/threema-ch/webrtc-build-docker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threema-ch%2Fwebrtc-build-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threema-ch%2Fwebrtc-build-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threema-ch%2Fwebrtc-build-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threema-ch%2Fwebrtc-build-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/threema-ch","download_url":"https://codeload.github.com/threema-ch/webrtc-build-docker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225419770,"owners_count":17471485,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","build-automation","docker","libjingle","webrtc"],"created_at":"2024-11-19T20:18:53.971Z","updated_at":"2025-05-16T09:33:20.950Z","avatar_url":"https://github.com/threema-ch.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libwebrtc Build Script\n\nThis is a Dockerfile to build libwebrtc for Android using the new GN based\nbuild system.\n\n**NOTE: We do not provide any support related to building special versions, or\nrelated to issues with your Docker installation, or with regard to bugs in the\nWebRTC codebase itself. We also do not provide any support on how to integrate\nthe resulting build into your application.**\n\n## TL;DR\n\nFor an initial local build:\n\n    ./cli.sh build-tools\n    ./cli.sh fetch\n    ./cli.sh patch\n    ./cli.sh build-all\n\nFor subsequent builds after an update:\n\n    ./cli.sh update\n    ./cli.sh patch\n    ./cli.sh build-all\n\nFor a (somewhat) reproducible build, created from within a temporary Docker container:\n\n    ./cli.sh build-tools\n    ./build-final.sh \u003crevision\u003e\n\n## Usage: cli.sh\n\nFirst, build the tools image:\n\n    ./cli.sh build-tools\n\nThis will download and install necessary tools to work with the libwebrtc code\nbase.\n\nThen, fetch the libwebrtc code into the `webrtc` directory. This will download\n~24 GiB and may take a while.\n\n    ./cli.sh fetch\n\nOptionally switch to a specific (release) branch:\n\n    cd webrtc/src\n    git checkout branch-heads/\u003crevision\u003e\n    cd -\n\nYou can find the corresponding branch head revisions for libwebrtc releases at\nhttps://chromiumdash.appspot.com/branches\n\nIf it has been a while since you fetched the code, you may update the code as\nsuch:\n\n    ./cli.sh update\n\nThis will work on any branch but obviously may not switch to the most recent\ncode revision (e.g. if on a release branch). When in detached head state, this\nwill automatically check out the HEAD of the main branch.\n\nIf you just want to sync libwebrtc source against the current commit/branch\nyou've checked out, run:\n\n    ./cli.sh sync\n\nThis is particularly useful when in detached head state.\n\nAs an optional step, apply our patches:\n\n    ./cli.sh patch\n\nTo create a build for all targets, run:\n\n    ./cli.sh build-all\n\nThis will take probably around half an hour on a modern computer. Once the\nscript finished, you'll get the following output in the `out/` directory:\n\n - `libwebrtc.jar`\n - `arm/libjingle_peerconnection_so.so`\n - `x86/libjingle_peerconnection_so.so`\n - `arm64/libjingle_peerconnection_so.so`\n - `x64/libjingle_peerconnection_so.so`\n - `revision.txt`\n - `patches.txt` (may not exist if no patch has been applied)\n - `build_args.txt`\n\nIt is also possible to just jump into the build image shell which allows to\ncustomise the build steps entirely:\n\n    ./cli.sh run\n\nIf you haven't updated for a longer period, it might happen that the build\ntools need updating or that the code needs to be fetched again. To clean and\nstart from scratch, run:\n\n    ./cli.sh clean\n\n## Usage: build-final.sh\n\nTo generate a (somewhat) reproducible build, without any caching and with the\nwhole process being done from within a temporary, deterministic Docker\ncontainer:\n\n    ./cli.sh build-tools\n    ./build-final.sh \u003crevision\u003e\n\nThis guarantees the absence of a cache (because it always fetches fresh code),\nconsistent permissions and filesystem paths (so that your username and workdir\nisn't included in the binary's debug info) and will ensure that you don't\nforget to apply patches (because it always applies all patches at\n`patches/*.patch`).\n\n\n## Patches\n\nPatches should be created using `git diff` inside the webrtc/src directory and\nstored in the /patches directory to be applied automatically when running\n`./cli.sh patch`.\n\n    $ git diff \u003e ../../patches/my-changes.patch\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthreema-ch%2Fwebrtc-build-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthreema-ch%2Fwebrtc-build-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthreema-ch%2Fwebrtc-build-docker/lists"}