{"id":26121528,"url":"https://github.com/fizzed/buildx","last_synced_at":"2026-05-17T19:38:35.468Z","repository":{"id":65507614,"uuid":"585034162","full_name":"fizzed/buildx","owner":"fizzed","description":"Utility for building projects across containers, hosts, operating systems, and architectures","archived":false,"fork":false,"pushed_at":"2025-01-20T19:58:35.000Z","size":3801,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-31T08:17:56.395Z","etag":null,"topics":["aarch64","docker","riscv64","ssh","x64"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fizzed.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2023-01-04T06:31:52.000Z","updated_at":"2025-01-20T19:58:36.000Z","dependencies_parsed_at":"2023-02-10T18:30:55.844Z","dependency_job_id":"aa38bb0b-4e03-4715-8688-d1d8ebb78e97","html_url":"https://github.com/fizzed/buildx","commit_stats":null,"previous_names":["fizzed/blaze-buildx"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/fizzed/buildx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fizzed%2Fbuildx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fizzed%2Fbuildx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fizzed%2Fbuildx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fizzed%2Fbuildx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fizzed","download_url":"https://codeload.github.com/fizzed/buildx/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fizzed%2Fbuildx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272858542,"owners_count":25005092,"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","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"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":["aarch64","docker","riscv64","ssh","x64"],"created_at":"2025-03-10T14:23:38.650Z","updated_at":"2026-05-17T19:38:35.458Z","avatar_url":"https://github.com/fizzed.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Buildx by Fizzed\n\n[![Maven Central](https://img.shields.io/maven-central/v/com.fizzed/buildx?color=blue\u0026style=flat-square)](https://mvnrepository.com/artifact/com.fizzed/blaze-buildx)\n\n## Overview\n\nBlaze plugin for building projects across machines, hosts, and containers.  This repository also helps build and publish\ndocker containers for cross-building Java projects that require native code, as well as images across various architectures\nand JDK versions to help test \"minimum compatible\" scenarios.\n\nBuildx lets you execute arbitrary tasks you define locally, locally in a docker container, remotely via ssh, as well\nas remotely via ssh in a docker container.\n\nBuildx handles mounting/rsyncing your project repository before executing \"actions\" on it.  Those actions are entirely up to you\nto define.  You can then rsync anything back as part of your action.  Whether you're running your tasks locally, in a docker\ncontainer, or remotely, the project environment is all setup for you to abstract away the complexity of the various\nenvironments.\n\n## Sponsorship \u0026 Support\n\n![](https://cdn.fizzed.com/github/fizzed-logo-100.png)\n\nProject by [Fizzed, Inc.](http://fizzed.com) (Follow on Twitter: [@fizzed_inc](http://twitter.com/fizzed_inc))\n\n**Developing and maintaining opensource projects requires significant time.** If you find this project useful or need\ncommercial support, we'd love to chat. Drop us an email at [ping@fizzed.com](mailto:ping@fizzed.com)\n\nProject sponsors may include the following benefits:\n\n- Priority support (outside of Github)\n- Feature development \u0026 roadmap\n- Priority bug fixes\n- Privately hosted continuous integration tests for their unique edge or use cases\n\n## Usage\n\nYou'll need to use a [Blaze](https://github.com/fizzed/blaze) project and leverage this dependency to take advantage.\n\nWe haven't had time to document this project as well as we'd like, but here are 3 examples that should help get you started.\nThese examples help build \u0026 test Java projects that have a native-compiled library across Windows, MacOS, Linux, BSDs,\nacross various architectures:\n\nhttps://github.com/fizzed/shmemj/blob/master/.blaze/blaze.java\nhttps://github.com/fizzed/tokyocabinet/blob/master/setup/blaze.java\nhttps://github.com/fizzed/tkrzw/blob/master/setup/blaze.java\n\n## Containers for Java\n\nThese containers contain a single JDK version that is set as the default, along with Maven 3.9.5, and Blaze build tools.\n\n| Container | Architecture | JDK |\n| --------- | ------------ | --- |\n| docker.io/fizzed/buildx:alpine3.11-jdk11-x64 | x64 | JDK 11 |\n| docker.io/fizzed/buildx:alpine3.11-jdk11-arm64 | arm64 | JDK 11 |\n| docker.io/fizzed/buildx:alpine3.20-jdk21-x64 | x64 | JDK 21 |\n| docker.io/fizzed/buildx:alpine3.20-jdk21-arm64 | arm64 | JDK 21 |\n| docker.io/fizzed/buildx:ubuntu16-jdk11-x64 | x64 | JDK 11 |\n| docker.io/fizzed/buildx:ubuntu16-jdk11-armhf | armhf | JDK 11 |\n| docker.io/fizzed/buildx:ubuntu16-jdk11-arm64 | arm64 | JDK 11 |\n| docker.io/fizzed/buildx:ubuntu18-jdk11-x64 | x64 | JDK 11 |\n| docker.io/fizzed/buildx:ubuntu18-jdk11-armhf | armhf | JDK 11 |\n| docker.io/fizzed/buildx:ubuntu18-jdk11-arm64 | arm64 | JDK 11 |\n| docker.io/fizzed/buildx:ubuntu20-jdk11-x64 | x64 | JDK 11 |\n| docker.io/fizzed/buildx:ubuntu20-jdk11-arm64 | arm64 | JDK 11 |\n| docker.io/fizzed/buildx:ubuntu22-jdk11-x64 | x64 | JDK 11 |\n| docker.io/fizzed/buildx:ubuntu22-jdk17-x64 | x64 | JDK 17 |\n| docker.io/fizzed/buildx:ubuntu22-jdk21-x64 | x64 | JDK 21 |\n| docker.io/fizzed/buildx:ubuntu22-jdk21-arm64 | arm64 | JDK 21 |\n| docker.io/fizzed/buildx:ubuntu22-jdk21-riscv64 | riscv64 | JDK 21 |\n| docker.io/fizzed/buildx:ubuntu22-jdk25-x64 | x64 | JDK 25 |\n| docker.io/fizzed/buildx:ubuntu22-jdk25-arm64 | arm64 | JDK 25 |\n| docker.io/fizzed/buildx:ubuntu22-jdk25-riscv64 | riscv64 | JDK 25 |\n| docker.io/fizzed/buildx:ubuntu22-jdk8-x64 | x64 | JDK 8 |\n\n\n| Container | Description |\n| --------- | ----------- |\n| docker.io/fizzed/buildx:x64-ubuntu16-jdk11-buildx-linux-x64 | Cross compiling to linux-x64 from ubuntu16 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu16-jdk11-buildx-linux-x32 | Cross compiling to linux-x32 from ubuntu16 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu16-jdk11-buildx-linux-arm64 | Cross compiling to linux-arm64 from ubuntu16 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu16-jdk11-buildx-linux-armhf | Cross compiling to linux-armhf from ubuntu16 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu16-jdk11-buildx-linux-armel | Cross compiling to linux-armel from ubuntu16 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu16-jdk11-buildx-linux_musl-x64 | Cross compiling to linux_musl-x64 from ubuntu16 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu16-jdk11-buildx-linux_musl-arm64 | Cross compiling to linux_musl-arm64 from ubuntu16 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu18-jdk11-buildx-linux-x64 | Cross compiling to linux-x64 from ubuntu18 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu18-jdk11-buildx-linux-x32 | Cross compiling to linux-x32 from ubuntu18 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu18-jdk11-buildx-linux-arm64 | Cross compiling to linux-arm64 from ubuntu18 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu18-jdk11-buildx-linux-armhf | Cross compiling to linux-armhf from ubuntu18 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu18-jdk11-buildx-linux-armel | Cross compiling to linux-armel from ubuntu18 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu18-jdk11-buildx-linux-riscv64 | Cross compiling to linux-riscv64 from ubuntu18 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu18-jdk11-buildx-linux_musl-x64 | Cross compiling to linux_musl-x64 from ubuntu18 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu18-jdk11-buildx-linux_musl-arm64 | Cross compiling to linux_musl-arm64 from ubuntu18 x64 |\n| docker.io/fizzed/buildx:x64-ubuntu18-jdk11-buildx-linux_musl-riscv64 | Cross compiling to linux_musl-riscv64 from ubuntu18 x64 |\n\n## Linux Compatibility\n\nWhen you compile software on Linux, the libraries it depends on are important for whether it will run on future versions\nof an operating system. Glibc is an important base library.  Here is a compatibility matrix for important distros:\n\n| Operating System       | GLIBC      | Released |\n|------------------------|------------|----------|\n| Debian 12 (Bookworm)   | glibc 2.36 | 2023     |\n| Debian 11 (Bullseye)   | glibc 2.31 | 2021     |\n| Debian 10 (Buster)     | glibc 2.28 | 2019     |\n| Debian 9 (Stretch)     | glibc 2.24 | 2017     |\n| Debian 8 (Jessie)      | glibc 2.19 | 2015     |\n| Debian 7 (Wheezy)      | glibc 2.13 | 2013     |\n| Debian 6 (Squeeze)     | glibc 2.11 | 2011     |\n| ---------------------  | ---------- | ----     |\n| Ubuntu 22.04 (Jammy)   | glibc 2.35 | 2022     |\n| Ubuntu 20.04 (Focal)   | glibc 2.31 | 2020     |\n| Ubuntu 18.04 (Bionic)  | glibc 2.27 | 2018     |\n| Ubuntu 16.04 (Xenial)  | glibc 2.23 | 2016     |\n| Ubuntu 14.04 (Trusty)  | glibc 2.19 | 2014     |\n| Ubuntu 12.04 (Precise) | glibc 2.15 | 2012     |\n| Ubuntu 10.04 (Lucid)   | glibc 2.11 | 2010     |\n| Ubuntu 8.04 (Hardy)    | glibc 2.6  | 2008     |\n| Ubuntu 6.06 (Dapper)   | glibc 2.3  | 2006     |\n\n## Multiple Architecture Containers\n\nYou can use an Ubuntu x86_64 host to test a wide variety of hardware architectures and operating systems.\n\nThings have changed with recent Ubuntus, on Ubuntu 25.10:\n\n    sudo apt install binfmt-support qemu-user-binfmt\n\nI **think** that registers and sets everything up correctly. I had to reboot for it to actually work.\n\nThis will now register docker to be able to detect and run various architectures automatically. You can now try it out:\n\n    podman run --rm -it --arch arm64/v8 docker.io/arm64v8/ubuntu dpkg --print-architecture           #arm64\n    podman run --rm -it --arch arm32/v7 docker.io/arm32v7/debian:12.0 dpkg --print-architecture       #armhf\n    podman run --rm -it --arch arm32/v5 docker.io/arm32v5/debian:12.0 dpkg --print-architecture       #armel\n    podman run --rm -it --arch riscv64 docker.io/riscv64/ubuntu dpkg --print-architecture            #riscv64\n    podman run --rm -it --arch i386 docker.io/i386/debian:12.0 dpkg --print-architecture             #i386\n\nIf you'd like to try various Java system properties to see what they'd look like:\n\n    podman run --rm -it --arch riscv64 docker.io/riscv64/ubuntu\n    apt update\n    apt install openjdk-11-jdk-headless\n    jshell\n    System.getProperties().forEach((k, v) -\u003e { System.out.printf(\"%s: %s\\n\", k, v); })\n\n## Build Environments\n\nAll machines will need to be accessible via SSH and include just a handful of tools. This will work across operating\nsystems, including Windows.\n\n### Testing SSH Environment Variables\n\nBlaze SSH will execute commands outside of a normal \"shell\" environment. Your environment variables that are present\nmay not be exactly what you'd expect or the same as you SSH'ing into the box.  To test this try:\n\n     ssh YOUR-HOST-HERE env\n\nIf you run a shell script once you ssh into your host, you can add the \"-l\" flag to the top of your shell script, which\nwill request a \"login\" to be run, which may set the environment variables you expect. To test this:\n\n     ssh YOUR-HOST-HERE sh -li -c \"env\"\n\nThat will run the environment command on the remote machine, but using an SSH exec, instead of it being done by \nrequesting a shell.\n\n### Windows\n\n - Setup a user account with no SPACE character in its name. Instead of \"Henry Ford\" something like \"builder\"\n - Enable the optional windows feature for \"Openssh Server\". This will only be available by default for Windows 10+\n - Rsync is critical. One way of adding it is to install Cygwin for 64-bit windows (cygwin.com)\n - When prompted for a package to install, search for rsync (and any others you'd like to add)\n - If you installed cygwin to C:\\cygwin64 then add C:\\cygwin64\\bin to your system PATH environment variable\n - Install JDKs\n - Install Maven (or your preferred java project build tool)\n - Setup password-less ssh. Be VERY CAREFUL when adding your public key to your ~/.ssh/authorized_keys file\n   - If you're an administrator, the default sshd_config config uses a global authorized keys file.\n   - Open up C:\\ProgramData\\ssh\\sshd_config as an adminstrator\n   - If you comment that out and restart the ssh server, you can now create ~/.ssh/authorized_keys manually.\n   - Also, allow UserPermitEnvironment to yes\n   - Make sure to do this ON the box (and not via ssh) so that your permissions are correct\n   - You may also want to make powershell your default shell when logging in https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration\n   - Run \"net stop sshd\" and \"net start sshd\" to restart the daemon\n   - NOTE: if passwordless ssh isn't working, the culprit is mostly likely that your authorized_keys file has bad permissions and windows will QUIETLY ignore it\n\n## License\n\nCopyright (C) 2023+ Fizzed, Inc.\n\nThis work is licensed under the Apache License, Version 2.0. See LICENSE for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffizzed%2Fbuildx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffizzed%2Fbuildx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffizzed%2Fbuildx/lists"}