{"id":17624563,"url":"https://github.com/erlangsters/build-erlang","last_synced_at":"2026-04-28T08:35:06.269Z","repository":{"id":259087810,"uuid":"864375487","full_name":"erlangsters/build-erlang","owner":"erlangsters","description":"Build a specific version of Erlang with a Github Actions workflow.","archived":false,"fork":false,"pushed_at":"2025-06-08T06:24:32.000Z","size":54,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-08T06:27:10.663Z","etag":null,"topics":["beam","erlang","erlangsters","github-actions","s3-storage"],"latest_commit_sha":null,"homepage":"https://about.erlangsters.org","language":null,"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/erlangsters.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"publiccode":null,"codemeta":null}},"created_at":"2024-09-28T04:08:57.000Z","updated_at":"2025-06-08T06:24:38.000Z","dependencies_parsed_at":"2024-12-10T19:51:36.107Z","dependency_job_id":null,"html_url":"https://github.com/erlangsters/build-erlang","commit_stats":null,"previous_names":["erlangsters/build-erlang"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/erlangsters/build-erlang","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erlangsters%2Fbuild-erlang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erlangsters%2Fbuild-erlang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erlangsters%2Fbuild-erlang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erlangsters%2Fbuild-erlang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erlangsters","download_url":"https://codeload.github.com/erlangsters/build-erlang/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erlangsters%2Fbuild-erlang/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32373510,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"online","status_checked_at":"2026-04-28T02:00:07.250Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["beam","erlang","erlangsters","github-actions","s3-storage"],"created_at":"2024-10-22T22:04:35.909Z","updated_at":"2026-04-28T08:35:06.249Z","avatar_url":"https://github.com/erlangsters.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Build Erlang\n\nThis repository contains a Github Actions workflow to build Erlang from its\nsource files. By default, it uploads the build artifacts to the Erlangsters\n[S3 storage](https://storage.erlangsters.org/erlang/) but it can be customized\nto send them to your own S3 storage.\n\n![Github Workflow Inputs](./workflow-inputs.png)\n\nArtifacts produced by this workflow are kept in a S3 storage and are made\navailable to the community. It's also used by this Github\n[JavaScript action](https://github.com/erlangsters/setup-erlang) to set up Erlang\non your Github runners.\n\nWritten by the Erlangsters [community](https://www.erlangsters.org/) and\nreleased under the MIT [license](/https://opensource.org/license/mit).\n\nXXX: Compute MD5 and upload them\nXXX: Include build logs in the archives\n\n## How to use\n\nUnless you want to maintain your own builds of Erlang (or perhaps make some\nexperiments), you don't need this Erlang builder. But in the case you do, start\nwith forking this repository on Github.\n\nOn Github, head to the \"Actions\" tab and select the \"Build Erlang\" workflow.\nFrom there, you are able to trigger the Github Actions workflow with the\nfollowing inputs.\n\n- The Erlang version to build\n- Whether you want the artifacts uploaded to a S3 storage\n- The parameters of the targeted S3 storage\n\nClick \"Run workflow\" and the result will be made available as artifacts after\ncompletion of the workflow (if successful).\n\nIt uses the Github-hosted runner to build Erlang for the following platforms.\n\n- Debian (AMD64 and ARM64)\n- Alpine (AMD64 and ARM64)\n- macOS (ARM64 only)\n- Windows (AMD64 only)\n\nWhile 'Debian' and 'Alpine' are specific Linux distributions, we're using these\nterms to broadly represent Linux systems built on either the glibc or musl C\nlibrary.\n\nNote that you must create two large runners called `linux-amd64` and\n`linux-arm64` for the Linux builds.\n\nThe `wx` and `jinterface` applications are not included. Also, the `obdc`\napplication is only included in Linux builds. See the\n[platforms](#platform-availability) section below for platform-specific\ninformation.\n\nThe supported Erlang versions and how support evolves over time is explained in\nthe [version availability](#version-availability) section.\n\nThe source files of Erlang are taken directly from Github\n(https://github.com/erlang/otp/releases) as published by the Erlang/OTP team.\n\n## Build (and source) artifacts\n\nThe workflow will produce downloadable artifacts (from Github) that are named\nusing the following.\n\n- `erlang-source` - The\n- `erlang-build-debian-amd64`\n- `erlang-build-debian-arm64` (if enabled)\n- `erlang-build-alpine-amd64`\n- `erlang-build-alpine-arm64` (if enabled)\n- `erlang-build-macos-arm64`\n- `erlang-build-window-amd64`\n\nInside the archives, you will always find a folder named `otp_src_\u003cversion\u003e`\nfor the source archive, and `otp_build_\u003cversion\u003e` for the build archives.\n\n## S3 storage\n\nIf uploading the artifacts to a S3 storage is needed, enable it by ticking the\n\"Upload it to source/builds storage\" checkbox, then the workflow will do the\nuploading.\n\nHowever, it requires write permission which can be given by adding the\nfollowing Action secrets to your repository.\n\n- `S3_STORAGE_ACCESS_KEY`\n- `S3_STORAGE_SECRET_KEY`\n\nAll artifacts will be uploaded in the `/erlang/\u003cversion\u003e/` folder in the S3\nbuckets and have the following naming.\n\n- `erlang-\u003cversion\u003e-source.tar.gz` (for the source tarball)\n- `erlang-\u003cversion\u003e-build-\u003cplatform\u003e.tar.gz`\n\nWhere the naming scheme of `platform` value is\n`\u003clinux|linux-musl|macos|windows\u003e-\u003camd64|amd64\u003e`.\n\nXXX: The 'path prefix' value in the workflow inputs is not supported yet.\n\n## Version availability\n\nAll software has a lifespan and it would be ridiculous to insist in maintaining\nsupport for versions of Erlang/OTP when they get old. Therefore, as time\npasses, support for those versions are simply dropped.\n\nThe current supported Erlang/OTP versions are:\n\n- Erlang 25.x\n- Erlang 26.x\n- Erlang 27.x\n\nNo rule is defined to decide on those supported versions. It's simply decided\nbased on what's commonly needed by the community.\n\n## Platform availability\n\nBuilds are produced for the following platforms.\n\n- Linux (glibc and musl, AMD64 and ARM64)\n- macOS (ARM64)\n- Windows (AMD64)\n\nNo support for macOS AMD64 are planned, and no support for Windows ARM64 are\nplanned until the Erlang/OTP team officially supports it.\n\nAdditionally, Linux builds are produced for both glibc (as used by most distros\nsuch as Debian) and musl (used by the Alpine distro, commonly used to yield\ntiny images).\n\nThe default `./configure` is used, which should includes both the `emu` and\n`jit` flavors. No debug builds are produced.\n\n**Linux builds**\n\nThe Linux builds for glibc as libc are produced in Dockerized environment using\nthe `debian:12` with the following installed packages.\n\n- `autoconf`\n- `gcc`\n- `g++`\n- `make`\n- `libncurses5-dev`\n- `libssl-dev`\n- `unixodbc-dev`\n\nThe Linux builds for musl as libc are produced in Dockerized environment using\nthe `alpine:3` with the following installed packages.\n\n- `autoconf`\n- `gcc`\n- `g++`\n- `make`\n- `ncurses-dev`\n- `openssl-dev`\n- `unixodbc-dev`\n\nIn all builds, the `wx` and `jinterface` applications are disabled and excluded\nfrom the result.\n\n**macOS builds**\n\nThe macOS builds are produced in the Github-hosted runner named `macos-14`.\n\nIt's hard to tell its exact environment.\n\nThe `wx`, `jinterface` and `odbc` applications are disabled and excluded from\nthe result.\n\n**Windows builds**\n\nThe Windows builds are produced in the Github-hosted runner named\n`windows-2022`. The build happens in a WSL environment with Ubuntu 18.08.\n\nIt's hard to tell the exact environment.\n\nThe `wx`, `jinterface` and `odbc` applications are disabled and excluded from\nthe result.\n\n## Build consistency\n\nIn a fast changing environment with so many dependencies to keep track of, it's\nhard to keep consistency in a produced build at T1 and T2. However, this\nbuilder does what it can to yield as much consistency (such as assigning\nspecific image versions instead of using \"the latest one\").\n\nOf course, it will always be influenced by external factors.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferlangsters%2Fbuild-erlang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferlangsters%2Fbuild-erlang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferlangsters%2Fbuild-erlang/lists"}