superconfigure
superconfigure
is a collection of programs ported to run as fat binaries using
Cosmopolitan Libc. This repository includes build scripts for popular
software such as bash
, lua
, emacs
, GNU Coreutils, sed
, gcc-12
, curl
,
and others. For each of these, the source code is downloaded from the upstream
sources, compiled for x86_64
and aarch64
, and finally combined into a fat
binary using Cosmopolitan Libc's apelink
program.
The built software is split into the following zip files:
compress.zip
contains tar
, zip
, unzip
, bzip2
, zstd
, xz
, brotli
, gzip
, and pigz
.
cli.zip
contains bash
, zsh
, grep
, less
, lua
, find
, GNU coreutils, and ninja
.
editor.zip
contains vim
, nano
, and emacs
.
x86_64-gcc.zip
contains the gcc-12.3
and binutils-2.42
tools targeting (x86-64-linux-cosmo).
aarch64-gcc.zip
contains the gcc-12.3
and binutils-2.42
tools targeting (aarch64-linux-cosmo).
datasette.zip
contains datasette
a build of CPython 3.11 with the datasette library.
pypack1.zip
contains python
, a build of CPython 3.11 with a bunch of cli libraries like black
, cookiecutter
.
gui.zip
contains SDL2 test binaries built with libX11
(experimental, requires X Server to be running on the host system).
lang.zip
contains languages berry
, janet
, lua
, php
.
The Releases
page
should have the most recent builds of executables in this repo, built via Github
Actions.
If you'd like to add your own software build scripts, submit a PR! Read up
config/README.md
how all of this works.
[!TIP] If you're on Windows, after downloading the zip files you should rename the executables inside to end with
.exe
in order to run them.
The build scripts assume Debian/Ubuntu, and also use things like bash
, find
,
wget
, git
, GNU make
, patch
, cp
, mkdir
etc. (you also need sudo
access to setup a /zip
folder). You can follow the steps in
.github/workflows/release.yml
on your machine:
/zip
on your system that provides read/write access to
everyoneqemu
to run aarch64 ELF binariescosmopolitan
toolchain by running ./.github/scripts/cosmo
git clone https://github.com/ahgamut/superconfigure
cd superconfigure
git clone --depth=1 https://github.com/jart/cosmopolitan
# install build dependencies
bash ./.github/scripts/setup
bash ./.github/scripts/cosmo
bash
, less
, find
, tree
, and GNU coreutils run make -j4 cli
vim
, emacs
, and nano
run make -j4 editor
datasette
1.0.0a6 run make -j4 datasette
x86_64
run make -j4 x86_64-gcc
you can run ./.github/scripts/collectzip
to store all build results in a
ZIP file.
make
You can build fat binaries using the Makefile as well! After setting up the
toolchain, if you want to get the binaries for the web
folder, run
# assume ./.github/scripts/setup has already been run
# assume ./.github/scripts/cosmo has already been run
export MAXPROC=4
make -j4 web
ls -al results/bin/*
make
Let's say you wanted to build bash
. The steps are:
# assume ./.github/scripts/setup has already been run
# assume ./.github/scripts/cosmo has already been run
export MAXPROC=4
make -j2 o/cli/bash/built.fat
ls -al results/bin/bash*
If you'd like to add new Python scripts or pure-Python packages to the python
executables:
mkdir -p ./Lib/site-packages
cd Lib/site-packages
# add your code
cp -r your_script.py
unzip your_lib.whl
cd ../../
zip -r ./python.com Lib/
# test if the package loads
./python.com -c "import your_lib"
A similar process can be followed to add your own vimrc
, wgetrc
, nanorc
etc. to the respective binaries.