o< gak! gak!
-/)
^^
rockhopper provides a unified framework for building binary based OS packages across many kinds of platforms.
BYOB (Bring Your Own Binaries).
$ cd example/sh
$ rockhopper
$ tree .rockhopper/artifacts
.rockhopper/artifacts
├── alpine-linux
│ └── raygun-1.2.3-r81.noarch.apk
├── fedora
│ └── raygun-1.2.3-81.noarch.rpm
├── freebsd
│ └── raygun-1.2.3_81.pkg
...See rockhopper -h for more options.
| Host | Package | |
|---|---|---|
| Alpine Linux | Intel | ARM |
| Fedora | Intel | ARM |
| FreeBSD | Intel | |
| macOS | Intel | ARM |
| NetBSD | Intel | |
| Ubuntu / Windows (WSL) | Intel | ARM |
64
For more host platforms and installation methods, see our install guide.
Where other package generators rely on host native tools, rockhopper abstracts package generation as Docker images. This abstraction simplifies the setup process, and reduces the impact of vendor lock for each of the host and target platforms involved.
| Package Manager | File Extension | Distro Primary | Docker Tag |
|---|---|---|---|
| apk | *.apk |
Alpine Linux | alpine-linux |
| apt | *.deb |
Ubuntu | ubuntu |
| dnf | *.rpm |
Fedora | fedora |
| installer | *.pkg |
macOS | macos |
| pkg | *.pkg |
FreeBSD | freebsd |
| pkg_add | *.tgz |
NetBSD | netbsd |
Image Pattern: n4jm4/rockhopper:<tag>
Multiplatform images also available. Supported platforms may vary by distro. Version pin tag aliases are also available, of the form:
[<rockhopper-version>-]<distro>[-<release-nickname]
Distro primaries exemplify entire families of related platforms. For example, apt serves packages for Ubuntu, but also Debian, Linux Mint, Pop!_OS, Raspberry Pi OS, WSL, et. al.
For information on developing custom rockhopper images, see the rocklets interface.
- a docker CLI
- a UNIX-like environment (e.g. WSL)
- Apple Silicon macOS users may want to apply
DOCKER_DEFAULT_PLATFORM=linux/amd64, as many industry Docker images lag behind in ARM support - tree
For information on configuring rockhopper, see our configuration guide.
Fully static Go/musl binaries tend to improve portability for compiled applications.
Lost? Try Raspberry Pi for Dummies. We all gotta start somewhere.
A dream of impossible colors... Let's make vendor lock a thing of the past.
-< zzZ... *as if!* zzZ...
,/)
^^
Prior art, personal plugs, and tools for developing portable applications (including non-Rust projects)!
- alien - an OS package converter
- apple-platform-rs, bomutils, stuckliste - Apple Bom format research
- cargo - a crossplatform package manager for Rust projects
- fpm - an older, host native package generator
- go mod - a crossplatform package manager for Go applications
- mcandre/chandler - an OS agnostic tar normalizer
- mcandre/crit - an automated Rust multiplatform compiler
- mcandre/factorio - an automated Go multiplatform compiler
- mcandre/tuggy - an automated Docker multiplatform image builder
- n4jm4/raspberry-pi-os - a Docker base image for Raspberry Pi OS
- UTM - a macOS emulator with support for NetBSD and other operating systems
- xgo - an automated cGo multiplatform compiler
🐧