Skip to content

mcandre/rockhopper

Repository files navigation

rockhopper: Linux package generator

Docker Pulls license Donate

  o<  gak! gak!
-/)
 ^^

SUMMARY

rockhopper automates crossplatform package generation.

Distro hoppers, enjoy~

DEMO

$ 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.tgz

INSTALLATION

See INSTALL.md.

ABOUT

rockhopper bundles all the tools needed to generate packages, inside Docker containers.

Rockhopper Images

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.

USAGE

  1. 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)
  1. Inside your project, create a rockhopper-data subdirectory. Within rockhopper-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
            └── hello

Shell 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.

  1. 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'
  1. Generate packages and verify.
$ rockhopper

$ tree .rockhopper
.rockhopper
└── debian
    └── hello_1.0.0-1_all.deb

Packages 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!

CONFIGURATION

For more usage options, see CONFIGURATION.md.

ROCKLETS

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...
,/)
 ^^

SEE ALSO

  • 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

🐧

About

Linux package generator

Resources

License

Stars

Watchers

Forks

Packages

No packages published