o< gak! gak!
-/)
^^
rockhopper automates crossplatform package generation.
Distro hoppers, enjoy~
$ cd examples/sh
$ ./demo
$ tree .rockhopper
.rockhopper
├── alpine
│ └── hello-1.0.0-r1.noarch.apk
├── arch
│ └── hello-1.0.0-1-any.pkg.tar.zst
├── debian
│ └── hello_1.0.0-1_all.deb
├── fedora
│ └── hello-1.0.0-1.fc43.noarch.rpm
└── slack
└── hello-1.0.0-1-noarch-build.tgzSee INSTALL.md.
rockhopper bundles all the tools needed to generate packages, inside Docker containers.
| Distro | Image |
|---|---|
| Alpine Linux | n4jm4/rockhopper:alpine |
| Arch Linux | n4jm4/rockhopper:arch |
| Debian | n4jm4/rockhopper:debian |
| Fedora | n4jm4/rockhopper:fedora |
| Slackware | n4jm4/rockhopper:slack |
Version pin tags also available.
- Build Linux executables for your application.
no pain, no gain! >*
(\-
^^
Examples:
- crit (Rust)
- factorio (Go)
- snek (C/C++)
- JAR's wrapped in shell scripts (JVM)
- chmod +x (shell scripts)
- Inside your project, create a
rockhopper-datasubdirectory. Withinrockhopper-data, layout all of your application's assets as they should appear on the end user's machine after installation.
Linux, UNIX, and many other operating systems follow the Filesystem Hierarchy Standard.
Example:
$ tree
.
└── rockhopper-data
└── usr
└── bin
└── helloShell scripts and other interpreted executables may be checked this way into version control. For binary assets, configure make or another build system, to copy the files there dynamically.
- Configure target platform.
Example:
export ROCKHOPPER_NAME='hello'
export ROCKHOPPER_VERSION='1.0.0'
export ROCKHOPPER_MAINTAINER='Bob Loblaw <bob@bananastand.test>'
export ROCKHOPPER_DESCRIPTION='hello world welcomes new developers'
export ROCKHOPPER_COPYRIGHT='Copyright (C) 2026 Bob'
export ROCKHOPPER_LICENSE='0BSD'
export ROCKHOPPER_IMAGE='n4jm4/rockhopper:debian'
export ROCKHOPPER_ARCH='all'- Generate packages and verify.
$ rockhopper
$ tree .rockhopper
.rockhopper
└── debian
└── hello_1.0.0-1_all.debPackages write to .rockhopper/<distro>/<package-file>.
o< wowowweewow!!!
`/)
^^
With minor tweaks, it's possible to extend support for even more distributions. See examples/sh/demo.
You've gone from source code, to executables, to installers. Congratulations, you're above and beyond.
Remember to test your shiny new packages. Install them into a fresh environment. Run your apps. Kick the tires!
For more usage options, see CONFIGURATION.md.
For information on provisioning your own custom package building images, see the ROCKLETS interface.
A dream of impossible colors... Let's make vendor lock a thing of the past.
-< zzZ... *as if!* zzZ...
,/)
^^
- crit, an automated Rust multiplatform compiler
- factorio, an automated Go multiplatform compiler
- fpm, an older, host native package generator
- tuggy, an automated Docker multiplatform image builder
🐧