Repository: redox-os/redox Branch: master Commit: 275e5253e43f Files: 3133 Total size: 1.7 MB Directory structure: gitextract_v2ki18iw/ ├── .cargo/ │ └── config.toml ├── .gitignore ├── .gitlab/ │ ├── issue_templates/ │ │ └── Issue_template.md │ └── merge_request_templates/ │ └── Merge_request_template.md ├── .gitlab-ci.yml ├── CONTRIBUTING.md ├── Cargo.toml ├── HARDWARE.md ├── LICENSE ├── Makefile ├── README.md ├── TRADEMARK.md ├── bin/ │ ├── aarch64-unknown-redox-pkg-config │ ├── i586-unknown-redox-pkg-config │ ├── i686-unknown-redox-pkg-config │ ├── riscv64-unknown-redox-pkg-config │ ├── x86_64-unknown-redox-llvm-config │ └── x86_64-unknown-redox-pkg-config ├── build.sh ├── config/ │ ├── aarch64/ │ │ ├── ci.toml │ │ ├── demo.toml │ │ ├── dev.toml │ │ ├── jeremy.toml │ │ ├── raspi3bp/ │ │ │ └── minimal.toml │ │ └── redoxer.toml │ ├── acid.toml │ ├── auto-test.toml │ ├── base.toml │ ├── desktop-minimal.toml │ ├── desktop.toml │ ├── dev.toml │ ├── i586/ │ │ ├── ci.toml │ │ ├── demo.toml │ │ ├── dev.toml │ │ ├── jeremy.toml │ │ └── redoxer.toml │ ├── minimal.toml │ ├── os-test.toml │ ├── redoxer-gui.toml │ ├── redoxer.toml │ ├── riscv64gc/ │ │ ├── ci.toml │ │ ├── demo.toml │ │ ├── desktop.toml │ │ └── jeremy.toml │ ├── server.toml │ ├── tests.toml │ ├── wayland.toml │ ├── x11.toml │ └── x86_64/ │ ├── ci.toml │ ├── demo.toml │ ├── desktop-contain.toml │ ├── full.toml │ ├── jeremy.toml │ ├── redoxer.toml │ ├── rustconf2025.toml │ └── server-demo.toml ├── flake.nix ├── mk/ │ ├── ci.mk │ ├── config.mk │ ├── depends.mk │ ├── disk.mk │ ├── fstools.mk │ ├── podman.mk │ ├── prefix.mk │ ├── qemu.mk │ ├── repo.mk │ └── virtualbox.mk ├── native_bootstrap.sh ├── podman/ │ ├── redox-base-containerfile │ ├── redox-gdb-containerfile │ └── rustinstall.sh ├── podman_bootstrap.sh ├── recipes/ │ ├── archives/ │ │ ├── lz4/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ └── zstd/ │ │ ├── 01_redox.patch │ │ └── recipe.toml │ ├── artwork/ │ │ ├── pop-wallpapers/ │ │ │ └── recipe.toml │ │ └── ubuntu-wallpapers/ │ │ └── recipe.toml │ ├── core/ │ │ ├── base/ │ │ │ └── recipe.toml │ │ ├── base-initfs/ │ │ │ └── recipe.toml │ │ ├── binutils/ │ │ │ └── recipe.toml │ │ ├── bootloader/ │ │ │ └── recipe.toml │ │ ├── contain/ │ │ │ └── recipe.toml │ │ ├── coreutils/ │ │ │ └── recipe.toml │ │ ├── dash/ │ │ │ └── recipe.toml │ │ ├── extrautils/ │ │ │ └── recipe.toml │ │ ├── findutils/ │ │ │ └── recipe.toml │ │ ├── installer/ │ │ │ └── recipe.toml │ │ ├── ion/ │ │ │ └── recipe.toml │ │ ├── kernel/ │ │ │ └── recipe.toml │ │ ├── netdb/ │ │ │ └── recipe.toml │ │ ├── netutils/ │ │ │ └── recipe.toml │ │ ├── pkgar/ │ │ │ └── recipe.toml │ │ ├── pkgutils/ │ │ │ └── recipe.toml │ │ ├── profiled/ │ │ │ └── recipe.toml │ │ ├── redoxfs/ │ │ │ └── recipe.toml │ │ ├── relibc/ │ │ │ └── recipe.toml │ │ ├── strace/ │ │ │ └── recipe.toml │ │ ├── userutils/ │ │ │ └── recipe.toml │ │ └── uutils/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── demos/ │ │ ├── cairo-demo/ │ │ │ ├── cairo-demo.c │ │ │ └── recipe.toml │ │ ├── cmatrix/ │ │ │ └── recipe.toml │ │ ├── cpal/ │ │ │ └── recipe.toml │ │ ├── dynamic-example/ │ │ │ └── recipe.toml │ │ ├── exampled/ │ │ │ └── recipe.toml │ │ ├── gears/ │ │ │ ├── gears.c │ │ │ └── recipe.toml │ │ ├── glutin/ │ │ │ └── recipe.toml │ │ ├── iced/ │ │ │ └── recipe.toml │ │ ├── orbclient/ │ │ │ └── recipe.toml │ │ ├── osdemo/ │ │ │ ├── osdemo.c │ │ │ └── recipe.toml │ │ ├── pixelcannon/ │ │ │ └── recipe.toml │ │ ├── sdl2-gears/ │ │ │ ├── gears.c │ │ │ └── recipe.toml │ │ └── winit/ │ │ └── recipe.toml │ ├── dev/ │ │ ├── autoconf/ │ │ │ └── recipe.toml │ │ ├── automake/ │ │ │ └── recipe.toml │ │ ├── binutils-gdb/ │ │ │ └── recipe.toml │ │ ├── clang21/ │ │ │ └── recipe.toml │ │ ├── cmake/ │ │ │ └── recipe.toml │ │ ├── composer/ │ │ │ └── recipe.toml │ │ ├── crates-io-index/ │ │ │ └── recipe.toml │ │ ├── fontconfig/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── gcc13/ │ │ │ └── recipe.toml │ │ ├── gdbserver/ │ │ │ └── recipe.toml │ │ ├── gdk-pixbuf/ │ │ │ └── recipe.toml │ │ ├── git/ │ │ │ ├── git.patch │ │ │ └── recipe.toml │ │ ├── gitoxide/ │ │ │ └── recipe.toml │ │ ├── gnu-make/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── hello-world-examples/ │ │ │ └── recipe.toml │ │ ├── jq/ │ │ │ └── recipe.toml │ │ ├── lang/ │ │ │ └── gawk/ │ │ │ └── recipe.toml │ │ ├── lci/ │ │ │ └── recipe.toml │ │ ├── libtool/ │ │ │ └── recipe.toml │ │ ├── lld21/ │ │ │ └── recipe.toml │ │ ├── llvm18/ │ │ │ ├── native.cmake │ │ │ └── recipe.toml │ │ ├── llvm21/ │ │ │ ├── native.cmake │ │ │ └── recipe.toml │ │ ├── lua54/ │ │ │ └── recipe.toml │ │ ├── luajit/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── luarocks/ │ │ │ └── recipe.toml │ │ ├── nasm/ │ │ │ └── recipe.toml │ │ ├── patch/ │ │ │ ├── 01_no_rlimit.patch │ │ │ ├── 02_no_chown.patch │ │ │ ├── 03_renameat2.patch │ │ │ └── recipe.toml │ │ ├── pciids/ │ │ │ └── recipe.toml │ │ ├── php84/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── pkg-config/ │ │ │ └── recipe.toml │ │ ├── python312/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── redoxer/ │ │ │ └── recipe.toml │ │ ├── rust/ │ │ │ ├── .gitignore │ │ │ ├── config-bootstrap.toml │ │ │ ├── config.toml │ │ │ └── recipe.toml │ │ └── rustpython/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── doc/ │ │ └── book/ │ │ └── recipe.toml │ ├── emulators/ │ │ ├── dosbox/ │ │ │ ├── 01_redox.patch │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── flycast/ │ │ │ └── recipe.toml │ │ ├── libretro-super/ │ │ │ └── recipe.toml │ │ ├── mednafen/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── mgba/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── retroarch/ │ │ │ └── recipe.toml │ │ ├── rs-nes/ │ │ │ └── recipe.toml │ │ ├── rust64/ │ │ │ └── recipe.toml │ │ ├── rustual-boy/ │ │ │ └── recipe.toml │ │ ├── rvvm/ │ │ │ └── recipe.toml │ │ └── scummvm/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── files/ │ │ └── hf/ │ │ └── recipe.toml │ ├── fonts/ │ │ ├── dejavu/ │ │ │ └── recipe.toml │ │ ├── freefont/ │ │ │ └── recipe.toml │ │ ├── ibm-plex/ │ │ │ └── recipe.toml │ │ ├── intel-one-mono/ │ │ │ └── recipe.toml │ │ ├── noto-color-emoji/ │ │ │ └── recipe.toml │ │ └── ttf-hack/ │ │ └── recipe.toml │ ├── games/ │ │ ├── classicube/ │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── devilutionx/ │ │ │ └── recipe.toml │ │ ├── eduke32/ │ │ │ ├── manifest │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── freeciv/ │ │ │ └── recipe.toml │ │ ├── freedoom/ │ │ │ └── recipe.toml │ │ ├── game-2048/ │ │ │ └── recipe.toml │ │ ├── gigalomania/ │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── hematite/ │ │ │ └── recipe.toml │ │ ├── neverball/ │ │ │ ├── manifest-neverball │ │ │ ├── manifest-neverputt │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── neverball-sols/ │ │ │ └── recipe.toml │ │ ├── openjazz/ │ │ │ └── recipe.toml │ │ ├── openjk/ │ │ │ └── recipe.toml │ │ ├── openttd/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── openttd-opengfx/ │ │ │ └── recipe.toml │ │ ├── openttd-openmsx/ │ │ │ └── recipe.toml │ │ ├── openttd-opensfx/ │ │ │ └── recipe.toml │ │ ├── opentyrian/ │ │ │ ├── manifest │ │ │ ├── recipe.toml │ │ │ ├── redox.patch │ │ │ └── tyrian21.zip.sha │ │ ├── prboom/ │ │ │ ├── 01_redox.patch │ │ │ └── recipe.toml │ │ ├── quakespasm/ │ │ │ ├── manifest │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── redox-games/ │ │ │ └── recipe.toml │ │ ├── sm64ex/ │ │ │ ├── .gitignore │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── sopwith/ │ │ │ └── recipe.toml │ │ └── spacecadetpinball/ │ │ └── recipe.toml │ ├── graphics/ │ │ └── procedural-wallpapers-rs/ │ │ └── recipe.toml │ ├── groups/ │ │ ├── auto-test/ │ │ │ ├── auto-test.ion │ │ │ └── recipe.toml │ │ ├── demo/ │ │ │ └── recipe.toml │ │ ├── desktop/ │ │ │ └── recipe.toml │ │ ├── dev-essential/ │ │ │ └── recipe.toml │ │ ├── dev-redox/ │ │ │ └── recipe.toml │ │ ├── llvm21-common/ │ │ │ └── recipe.toml │ │ ├── mate-common/ │ │ │ └── recipe.toml │ │ ├── redox-tests/ │ │ │ └── recipe.toml │ │ ├── server/ │ │ │ └── recipe.toml │ │ ├── sys/ │ │ │ └── recipe.toml │ │ ├── sys-gui/ │ │ │ └── recipe.toml │ │ ├── x11-full/ │ │ │ └── recipe.toml │ │ └── x11-minimal/ │ │ └── recipe.toml │ ├── gui/ │ │ ├── installer-gui/ │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── orbdata/ │ │ │ └── recipe.toml │ │ ├── orbital/ │ │ │ └── recipe.toml │ │ ├── orbterm/ │ │ │ └── recipe.toml │ │ ├── orbutils/ │ │ │ └── recipe.toml │ │ └── orbutils-background/ │ │ └── recipe.toml │ ├── icons/ │ │ ├── cosmic-icons/ │ │ │ └── recipe.toml │ │ ├── hicolor-icon-theme/ │ │ │ └── recipe.toml │ │ └── pop-icon-theme/ │ │ └── recipe.toml │ ├── libs/ │ │ ├── atk/ │ │ │ └── recipe.toml │ │ ├── cairo/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── duktape/ │ │ │ └── recipe.toml │ │ ├── expat/ │ │ │ └── recipe.toml │ │ ├── ffmpeg6/ │ │ │ ├── binutils-2.41.patch │ │ │ ├── ffmpeg.patch │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── freetype2/ │ │ │ └── recipe.toml │ │ ├── fribidi/ │ │ │ └── recipe.toml │ │ ├── glib/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── gstreamer/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── harfbuzz/ │ │ │ └── recipe.toml │ │ ├── jansson/ │ │ │ ├── jansson.patch │ │ │ └── recipe.toml │ │ ├── libarchive/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── libatomic/ │ │ │ └── recipe.toml │ │ ├── libcosmic/ │ │ │ └── recipe.toml │ │ ├── libffi/ │ │ │ └── recipe.toml │ │ ├── libflac/ │ │ │ └── recipe.toml │ │ ├── libgcc/ │ │ │ └── recipe.toml │ │ ├── libgmp/ │ │ │ └── recipe.toml │ │ ├── libiconv/ │ │ │ ├── 01_redox.patch │ │ │ └── recipe.toml │ │ ├── libjpeg/ │ │ │ └── recipe.toml │ │ ├── libmodplug1/ │ │ │ └── recipe.toml │ │ ├── libmpfr/ │ │ │ └── recipe.toml │ │ ├── libnettle/ │ │ │ └── recipe.toml │ │ ├── libogg/ │ │ │ └── recipe.toml │ │ ├── libopus/ │ │ │ └── recipe.toml │ │ ├── liborbital/ │ │ │ └── recipe.toml │ │ ├── libpng/ │ │ │ └── recipe.toml │ │ ├── libpsl/ │ │ │ └── recipe.toml │ │ ├── libsodium/ │ │ │ └── recipe.toml │ │ ├── libssh2/ │ │ │ └── recipe.toml │ │ ├── libstdcxx/ │ │ │ └── recipe.toml │ │ ├── libstdcxx-v3/ │ │ │ └── recipe.toml │ │ ├── liburcu/ │ │ │ ├── 0001-Fix-compilation-on-Redox-OS.patch │ │ │ └── recipe.toml │ │ ├── libuv/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── libvorbis/ │ │ │ └── recipe.toml │ │ ├── libxml2/ │ │ │ └── recipe.toml │ │ ├── lua-compat-53/ │ │ │ └── recipe.toml │ │ ├── luv/ │ │ │ └── recipe.toml │ │ ├── mesa/ │ │ │ └── recipe.toml │ │ ├── mesa-glu/ │ │ │ └── recipe.toml │ │ ├── mpc/ │ │ │ └── recipe.toml │ │ ├── ncurses/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── ncursesw/ │ │ │ └── recipe.toml │ │ ├── nghttp2/ │ │ │ └── recipe.toml │ │ ├── openssl1/ │ │ │ └── recipe.toml │ │ ├── opusfile/ │ │ │ └── recipe.toml │ │ ├── pango/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── pcre/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── pcre2/ │ │ │ └── recipe.toml │ │ ├── pixman/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── readline/ │ │ │ └── recipe.toml │ │ ├── redox-fatfs/ │ │ │ └── recipe.toml │ │ ├── sdl-gfx/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── sdl1/ │ │ │ └── recipe.toml │ │ ├── sdl1-image/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── sdl1-mixer/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── sdl1-ttf/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── sdl2/ │ │ │ └── recipe.toml │ │ ├── sdl2-gfx/ │ │ │ └── recipe.toml │ │ ├── sdl2-image/ │ │ │ └── recipe.toml │ │ ├── sdl2-mixer/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── sdl2-ttf/ │ │ │ └── recipe.toml │ │ ├── termcap/ │ │ │ └── recipe.toml │ │ ├── unibilium/ │ │ │ └── recipe.toml │ │ ├── utf8proc/ │ │ │ └── recipe.toml │ │ └── zlib/ │ │ └── recipe.toml │ ├── math/ │ │ └── orbcalculator/ │ │ └── recipe.toml │ ├── net/ │ │ ├── download/ │ │ │ ├── curl/ │ │ │ │ └── recipe.toml │ │ │ └── wget/ │ │ │ └── recipe.toml │ │ ├── http/ │ │ │ └── simple-http-server/ │ │ │ └── recipe.toml │ │ ├── nginx/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── openssh/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── redox-ssh/ │ │ │ └── recipe.toml │ │ └── rsync/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── other/ │ │ ├── ca-certificates/ │ │ │ └── recipe.toml │ │ ├── cookbook/ │ │ │ └── recipe.toml │ │ ├── generaluser-gs/ │ │ │ └── recipe.toml │ │ ├── jeremy/ │ │ │ └── recipe.toml │ │ ├── myfiles/ │ │ │ └── recipe.toml │ │ ├── rustconf2025/ │ │ │ └── recipe.toml │ │ ├── shared-mime-info/ │ │ │ └── recipe.toml │ │ └── terminfo/ │ │ └── recipe.toml │ ├── shells/ │ │ ├── bash/ │ │ │ ├── etc/ │ │ │ │ ├── bash.bashrc │ │ │ │ ├── profile │ │ │ │ └── skel/ │ │ │ │ ├── .bashrc │ │ │ │ └── .profile │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ └── nushell/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── sound/ │ │ ├── freepats/ │ │ │ └── recipe.toml │ │ ├── rodioplay/ │ │ │ └── recipe.toml │ │ └── timidity/ │ │ └── recipe.toml │ ├── terminal/ │ │ ├── bash-completion/ │ │ │ └── recipe.toml │ │ ├── pls/ │ │ │ └── recipe.toml │ │ └── zoxide/ │ │ └── recipe.toml │ ├── tests/ │ │ ├── acid/ │ │ │ └── recipe.toml │ │ ├── acid-bins/ │ │ │ └── recipe.toml │ │ ├── benchmarks/ │ │ │ └── recipe.toml │ │ ├── hello-redox/ │ │ │ ├── files/ │ │ │ │ ├── test.c │ │ │ │ ├── test.cpp │ │ │ │ ├── test.go │ │ │ │ ├── test.java │ │ │ │ ├── test.js │ │ │ │ ├── test.lua │ │ │ │ ├── test.py │ │ │ │ ├── test.rs │ │ │ │ └── test.zig │ │ │ └── recipe.toml │ │ ├── iperf3/ │ │ │ └── recipe.toml │ │ ├── openposixtestsuite/ │ │ │ └── recipe.toml │ │ ├── os-test/ │ │ │ └── recipe.toml │ │ ├── os-test-bins/ │ │ │ └── recipe.toml │ │ ├── os-test-result/ │ │ │ └── recipe.toml │ │ ├── redox-posix-tests/ │ │ │ └── recipe.toml │ │ ├── relibc-tests/ │ │ │ └── recipe.toml │ │ ├── relibc-tests-bins/ │ │ │ └── recipe.toml │ │ ├── schedrs/ │ │ │ └── recipe.toml │ │ ├── sysbench/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ └── vttest/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── tools/ │ │ ├── bzip2/ │ │ │ ├── pkgconfig │ │ │ └── recipe.toml │ │ ├── cleye/ │ │ │ └── recipe.toml │ │ ├── cosmic-edit/ │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── cosmic-files/ │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── cosmic-reader/ │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── cosmic-settings/ │ │ │ └── recipe.toml │ │ ├── cosmic-store/ │ │ │ └── recipe.toml │ │ ├── cosmic-term/ │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── cosmic-text/ │ │ │ └── recipe.toml │ │ ├── diffutils/ │ │ │ ├── diffutils.patch │ │ │ └── recipe.toml │ │ ├── fd/ │ │ │ └── recipe.toml │ │ ├── file/ │ │ │ └── recipe.toml │ │ ├── friar/ │ │ │ └── recipe.toml │ │ ├── gettext/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── gnu-binutils/ │ │ │ ├── 01_build_fix.patch │ │ │ └── recipe.toml │ │ ├── gnu-grep/ │ │ │ ├── grep.patch │ │ │ └── recipe.toml │ │ ├── helix/ │ │ │ └── recipe.toml │ │ ├── libc-bench/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── lsd/ │ │ │ └── recipe.toml │ │ ├── nano/ │ │ │ └── recipe.toml │ │ ├── onefetch/ │ │ │ └── recipe.toml │ │ ├── patchelf/ │ │ │ └── recipe.toml │ │ ├── pathfinder/ │ │ │ └── recipe.toml │ │ ├── perg/ │ │ │ └── recipe.toml │ │ ├── periodictable/ │ │ │ └── recipe.toml │ │ ├── powerline/ │ │ │ └── recipe.toml │ │ ├── ripgrep/ │ │ │ └── recipe.toml │ │ ├── schismtracker/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── sed/ │ │ │ ├── recipe.toml │ │ │ └── sed.patch │ │ ├── shellharden/ │ │ │ └── recipe.toml │ │ ├── shellstorm/ │ │ │ └── recipe.toml │ │ ├── smith/ │ │ │ └── recipe.toml │ │ ├── sodium/ │ │ │ └── recipe.toml │ │ ├── tokei/ │ │ │ └── recipe.toml │ │ ├── twin-commander/ │ │ │ └── recipe.toml │ │ ├── vim/ │ │ │ ├── recipe.toml │ │ │ └── vim.patch │ │ └── xz/ │ │ └── recipe.toml │ ├── tui/ │ │ ├── goaccess/ │ │ │ ├── recipe.toml │ │ │ ├── redox1.patch │ │ │ └── redox2.patch │ │ ├── mdp/ │ │ │ └── recipe.toml │ │ └── ncdu/ │ │ └── recipe.toml │ ├── video/ │ │ └── sdl-player/ │ │ └── recipe.toml │ ├── web/ │ │ ├── netsurf/ │ │ │ ├── 01_redox.patch │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ └── website/ │ │ └── recipe.toml │ └── wip/ │ ├── a11y/ │ │ ├── espeak-ng/ │ │ │ └── recipe.toml │ │ └── orca/ │ │ └── recipe.toml │ ├── ai/ │ │ ├── nnx/ │ │ │ └── recipe.toml │ │ ├── rustgpt/ │ │ │ └── recipe.toml │ │ └── tgs/ │ │ └── recipe.toml │ ├── analysis/ │ │ ├── binsider/ │ │ │ └── recipe.toml │ │ ├── cutter/ │ │ │ └── recipe.toml │ │ ├── email-sleuth/ │ │ │ └── recipe.toml │ │ ├── flowgger/ │ │ │ └── recipe.toml │ │ ├── graphs/ │ │ │ └── recipe.toml │ │ ├── mmdr/ │ │ │ └── recipe.toml │ │ ├── netdata/ │ │ │ └── recipe.toml │ │ ├── rizin/ │ │ │ └── recipe.toml │ │ └── tmmpr/ │ │ └── recipe.toml │ ├── archives/ │ │ ├── 7-zip/ │ │ │ └── recipe.toml │ │ ├── lzip/ │ │ │ └── recipe.toml │ │ ├── mlar/ │ │ │ └── recipe.toml │ │ ├── orz/ │ │ │ └── recipe.toml │ │ ├── ouch/ │ │ │ └── recipe.toml │ │ ├── plzip/ │ │ │ └── recipe.toml │ │ └── unzrip/ │ │ └── recipe.toml │ ├── backup/ │ │ ├── borg/ │ │ │ └── recipe.toml │ │ ├── partclone/ │ │ │ └── recipe.toml │ │ ├── pika-backup/ │ │ │ └── recipe.toml │ │ └── vorta/ │ │ └── recipe.toml │ ├── bench/ │ │ ├── cargo/ │ │ │ ├── cargo-benchcmp/ │ │ │ │ └── recipe.toml │ │ │ └── cargo-criterion/ │ │ │ └── recipe.toml │ │ ├── dacapo-benchmarks/ │ │ │ └── recipe.toml │ │ ├── hpc/ │ │ │ ├── hpcc/ │ │ │ │ └── recipe.toml │ │ │ ├── hpcg/ │ │ │ │ └── recipe.toml │ │ │ └── minibude/ │ │ │ └── recipe.toml │ │ ├── hyperfine/ │ │ │ └── recipe.toml │ │ ├── io/ │ │ │ ├── blogbench/ │ │ │ │ └── recipe.toml │ │ │ ├── fio/ │ │ │ │ └── recipe.toml │ │ │ └── simple-disk-benchmark/ │ │ │ └── recipe.toml │ │ ├── jasonisnthappy/ │ │ │ └── recipe.toml │ │ ├── rodinia/ │ │ │ └── recipe.toml │ │ ├── rpc-perf/ │ │ │ └── recipe.toml │ │ ├── stress-ng/ │ │ │ └── recipe.toml │ │ └── suite/ │ │ └── pts/ │ │ └── recipe.toml │ ├── codecs/ │ │ ├── dav1d/ │ │ │ └── recipe.toml │ │ ├── faad2/ │ │ │ └── recipe.toml │ │ ├── kvazaar/ │ │ │ └── recipe.toml │ │ ├── rav1e/ │ │ │ └── recipe.toml │ │ ├── svt-av1/ │ │ │ └── recipe.toml │ │ ├── svt-hevc/ │ │ │ └── recipe.toml │ │ ├── svt-vp9/ │ │ │ └── recipe.toml │ │ ├── uvg266/ │ │ │ └── recipe.toml │ │ ├── vvenc/ │ │ │ └── recipe.toml │ │ ├── wavpack/ │ │ │ └── recipe.toml │ │ ├── x264/ │ │ │ └── recipe.toml │ │ └── x265/ │ │ └── recipe.toml │ ├── containers/ │ │ ├── crun/ │ │ │ └── recipe.toml │ │ ├── crun-vm/ │ │ │ └── recipe.toml │ │ ├── docker/ │ │ │ └── recipe.toml │ │ ├── podman/ │ │ │ └── recipe.toml │ │ ├── skopeo/ │ │ │ └── recipe.toml │ │ └── youki/ │ │ └── recipe.toml │ ├── crypto/ │ │ ├── data2sound/ │ │ │ └── recipe.toml │ │ ├── decoder/ │ │ │ └── recipe.toml │ │ ├── morse2sound/ │ │ │ └── recipe.toml │ │ ├── qrrs/ │ │ │ └── recipe.toml │ │ ├── qrscan/ │ │ │ └── recipe.toml │ │ ├── qrtool/ │ │ │ └── recipe.toml │ │ ├── steg86/ │ │ │ └── recipe.toml │ │ └── stupidfs/ │ │ └── recipe.toml │ ├── data/ │ │ └── poppler-data/ │ │ └── recipe.toml │ ├── data-integrity/ │ │ ├── b3sum/ │ │ │ └── recipe.toml │ │ ├── fim/ │ │ │ └── recipe.toml │ │ ├── hashgood/ │ │ │ └── recipe.toml │ │ └── rapidhash/ │ │ └── recipe.toml │ ├── data-recovery/ │ │ ├── ddrescue/ │ │ │ └── recipe.toml │ │ ├── foremost/ │ │ │ └── recipe.toml │ │ └── testdisk/ │ │ └── recipe.toml │ ├── db/ │ │ ├── bobby/ │ │ │ └── recipe.toml │ │ ├── clickhouse/ │ │ │ └── recipe.toml │ │ ├── cockroachdb/ │ │ │ └── recipe.toml │ │ ├── gobang/ │ │ │ └── recipe.toml │ │ ├── influxdb/ │ │ │ └── recipe.toml │ │ ├── iotdb/ │ │ │ └── recipe.toml │ │ ├── jdbrowser/ │ │ │ └── recipe.toml │ │ ├── limbo/ │ │ │ └── recipe.toml │ │ ├── mariadb/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── mariadb-lts/ │ │ │ └── recipe.toml │ │ ├── memcached/ │ │ │ └── recipe.toml │ │ ├── mongodb6/ │ │ │ └── recipe.toml │ │ ├── mongodb7/ │ │ │ └── recipe.toml │ │ ├── mysql-server/ │ │ │ └── recipe.toml │ │ ├── mysql-shell/ │ │ │ └── recipe.toml │ │ ├── pgtui/ │ │ │ └── recipe.toml │ │ ├── postgresql16/ │ │ │ └── recipe.toml │ │ ├── postgresql18/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── rainfrog/ │ │ │ └── recipe.toml │ │ ├── rocksdb/ │ │ │ └── recipe.toml │ │ ├── skytable/ │ │ │ └── recipe.toml │ │ ├── sqlite3/ │ │ │ └── recipe.toml │ │ ├── sqllogictest/ │ │ │ └── recipe.toml │ │ ├── stoolap/ │ │ │ └── recipe.toml │ │ ├── tidb-server/ │ │ │ └── recipe.toml │ │ ├── tsql/ │ │ │ └── recipe.toml │ │ └── valkey/ │ │ └── recipe.toml │ ├── demos/ │ │ ├── albedo/ │ │ │ └── recipe.toml │ │ ├── appcui/ │ │ │ └── recipe.toml │ │ ├── avian/ │ │ │ └── recipe.toml │ │ ├── avt/ │ │ │ └── recipe.toml │ │ ├── bevy/ │ │ │ └── recipe.toml │ │ ├── blade/ │ │ │ └── recipe.toml │ │ ├── blitz/ │ │ │ └── recipe.toml │ │ ├── blockish/ │ │ │ └── recipe.toml │ │ ├── blockishfire/ │ │ │ └── recipe.toml │ │ ├── blue-engine/ │ │ │ └── recipe.toml │ │ ├── bones/ │ │ │ └── recipe.toml │ │ ├── colored/ │ │ │ └── recipe.toml │ │ ├── comfy/ │ │ │ └── recipe.toml │ │ ├── console-rs/ │ │ │ └── recipe.toml │ │ ├── contrast-renderer/ │ │ │ └── recipe.toml │ │ ├── cubecl/ │ │ │ └── recipe.toml │ │ ├── dioxus-examples/ │ │ │ └── recipe.toml │ │ ├── doomfire/ │ │ │ └── recipe.toml │ │ ├── egui/ │ │ │ └── recipe.toml │ │ ├── euc/ │ │ │ └── recipe.toml │ │ ├── feoxdb/ │ │ │ └── recipe.toml │ │ ├── ferris-says/ │ │ │ └── recipe.toml │ │ ├── firewheel/ │ │ │ └── recipe.toml │ │ ├── firework-rs/ │ │ │ └── recipe.toml │ │ ├── fonterator/ │ │ │ └── recipe.toml │ │ ├── fractal-rs/ │ │ │ └── recipe.toml │ │ ├── freya/ │ │ │ └── recipe.toml │ │ ├── fundsp/ │ │ │ └── recipe.toml │ │ ├── funutd/ │ │ │ └── recipe.toml │ │ ├── fyrox/ │ │ │ └── recipe.toml │ │ ├── genpdf-rs/ │ │ │ └── recipe.toml │ │ ├── gfx-shader-watch/ │ │ │ └── recipe.toml │ │ ├── ggez/ │ │ │ └── recipe.toml │ │ ├── globe-rs/ │ │ │ └── recipe.toml │ │ ├── hotline/ │ │ │ └── recipe.toml │ │ ├── iced-7guis/ │ │ │ └── recipe.toml │ │ ├── if-watch/ │ │ │ └── recipe.toml │ │ ├── imgui-examples/ │ │ │ └── recipe.toml │ │ ├── iocraft/ │ │ │ └── recipe.toml │ │ ├── kira/ │ │ │ └── recipe.toml │ │ ├── kiss3d/ │ │ │ └── recipe.toml │ │ ├── lenia/ │ │ │ └── recipe.toml │ │ ├── macroquad/ │ │ │ └── recipe.toml │ │ ├── mage/ │ │ │ └── recipe.toml │ │ ├── mesa-demos/ │ │ │ └── recipe.toml │ │ ├── mousefood/ │ │ │ └── recipe.toml │ │ ├── nibble/ │ │ │ └── recipe.toml │ │ ├── notan/ │ │ │ └── recipe.toml │ │ ├── pingora/ │ │ │ └── recipe.toml │ │ ├── pipes-rs/ │ │ │ └── recipe.toml │ │ ├── piston/ │ │ │ └── recipe.toml │ │ ├── pix-engine/ │ │ │ └── recipe.toml │ │ ├── pixels/ │ │ │ └── recipe.toml │ │ ├── raclettui/ │ │ │ └── recipe.toml │ │ ├── rain/ │ │ │ └── recipe.toml │ │ ├── rapier/ │ │ │ └── recipe.toml │ │ ├── ratatui/ │ │ │ └── recipe.toml │ │ ├── ratatui-hypertile/ │ │ │ └── recipe.toml │ │ ├── ratzilla/ │ │ │ └── recipe.toml │ │ ├── rend3/ │ │ │ └── recipe.toml │ │ ├── renderling/ │ │ │ └── recipe.toml │ │ ├── reticulum-rs/ │ │ │ └── recipe.toml │ │ ├── rootvg/ │ │ │ └── recipe.toml │ │ ├── rpt/ │ │ │ └── recipe.toml │ │ ├── rsille/ │ │ │ └── recipe.toml │ │ ├── rui/ │ │ │ └── recipe.toml │ │ ├── ruscii/ │ │ │ └── recipe.toml │ │ ├── rust-cairo/ │ │ │ └── recipe.sh │ │ ├── rust-cairo-demo/ │ │ │ └── recipe.sh │ │ ├── rustubble/ │ │ │ └── recipe.toml │ │ ├── rustui/ │ │ │ └── recipe.toml │ │ ├── rusty-rain/ │ │ │ └── recipe.toml │ │ ├── servo-gtk/ │ │ │ └── recipe.toml │ │ ├── simdjson-rs/ │ │ │ └── recipe.toml │ │ ├── slint/ │ │ │ └── recipe.toml │ │ ├── soft-ratatui/ │ │ │ └── recipe.toml │ │ ├── speedy2d/ │ │ │ └── recipe.toml │ │ ├── spinners/ │ │ │ └── recipe.toml │ │ ├── spinoff/ │ │ │ └── recipe.toml │ │ ├── tachyonfx/ │ │ │ └── recipe.toml │ │ ├── taffy/ │ │ │ └── recipe.toml │ │ ├── tenki/ │ │ │ └── recipe.toml │ │ ├── termtree/ │ │ │ └── recipe.toml │ │ ├── ternimal/ │ │ │ └── recipe.toml │ │ ├── terra/ │ │ │ └── recipe.toml │ │ ├── three-d/ │ │ │ └── recipe.toml │ │ ├── tquic/ │ │ │ └── recipe.toml │ │ ├── uniocr/ │ │ │ └── recipe.toml │ │ ├── usfx/ │ │ │ └── recipe.toml │ │ ├── vizia/ │ │ │ └── recipe.toml │ │ ├── wavy/ │ │ │ └── recipe.toml │ │ ├── wgpu-sky-rendering/ │ │ │ └── recipe.toml │ │ ├── xaos/ │ │ │ └── recipe.toml │ │ └── xilem/ │ │ └── recipe.toml │ ├── dev/ │ │ ├── analysis/ │ │ │ ├── binocle/ │ │ │ │ └── recipe.toml │ │ │ ├── binwalk/ │ │ │ │ └── recipe.toml │ │ │ ├── code-minimap/ │ │ │ │ └── recipe.toml │ │ │ ├── codevis/ │ │ │ │ └── recipe.toml │ │ │ ├── debtmap/ │ │ │ │ └── recipe.toml │ │ │ ├── feluda/ │ │ │ │ └── recipe.toml │ │ │ ├── hex/ │ │ │ │ └── recipe.toml │ │ │ ├── hgrep/ │ │ │ │ └── recipe.toml │ │ │ ├── hl/ │ │ │ │ └── recipe.toml │ │ │ ├── honggfuzz-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── hx/ │ │ │ │ └── recipe.toml │ │ │ ├── pratdiff/ │ │ │ │ └── recipe.toml │ │ │ ├── statui/ │ │ │ │ └── recipe.toml │ │ │ ├── tinywatcher/ │ │ │ │ └── recipe.toml │ │ │ └── zizmor/ │ │ │ └── recipe.toml │ │ ├── blockchain/ │ │ │ ├── foundry/ │ │ │ │ └── recipe.toml │ │ │ ├── geth/ │ │ │ │ └── recipe.toml │ │ │ ├── solidity/ │ │ │ │ └── recipe.toml │ │ │ └── surfpool/ │ │ │ └── recipe.toml │ │ ├── build-system/ │ │ │ ├── ant/ │ │ │ │ └── recipe.toml │ │ │ ├── ccache/ │ │ │ │ └── recipe.toml │ │ │ ├── hadrian/ │ │ │ │ └── recipe.toml │ │ │ ├── just/ │ │ │ │ └── recipe.toml │ │ │ ├── lux/ │ │ │ │ └── recipe.toml │ │ │ ├── meson/ │ │ │ │ └── recipe.toml │ │ │ ├── ninja-build/ │ │ │ │ └── recipe.toml │ │ │ ├── sbt/ │ │ │ │ └── recipe.toml │ │ │ ├── scala-cli/ │ │ │ │ └── recipe.toml │ │ │ └── werk/ │ │ │ └── recipe.toml │ │ ├── cargo-tools/ │ │ │ ├── cargo-about/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-all-features/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-attribution/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-audit/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-auditable/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-auto/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-autodd/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-binutils/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-bloat/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-c/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-cache/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-careful/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-check-deadlock/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-checkmate/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-clone/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-clone-crate/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-compete/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-component/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-crev/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-deny/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-depsize/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-derivefmt/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-diet/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-dist/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-docs/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-docs-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-duplicates/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-edit/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-equip/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-expand/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-featalign/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-feature/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-feature-combinations/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-files/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-fixture/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-ft/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-fuzz/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-gc/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-geiger/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-generate/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-get/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-goggles/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-guppy/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-hack/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-hackerman/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-hakari/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-http-registry/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-info/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-lambda/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-leet/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-leptos/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-license/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-limit/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-list/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-llvm-cov/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-llvm-lines/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-loc/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-lockup/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-machete/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-make/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-modules/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-msrv/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-multivers/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-mutants/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-nextest/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-outofdate/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-packager/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-patch/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-preflight/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-public-api/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-px/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-qtest/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-rdme/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-release/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-remark/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-run-bin/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-scaffold/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-selector/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-semver-checks/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-shear/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-show-asm/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-single-line/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-smart-release/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-spellcheck/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-subspace/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-supply-chain/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-sweep/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-sync-rdme/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-tally/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-tarpaulin/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-temp/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-trend/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-trim/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-udeps/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-ui/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-unfmt/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-unmaintained/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-update/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-vendor-filterer/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-vet/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-wasi/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-wasix/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-watch/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-whatfeatures/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-wizard/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-workspace-version/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-workspaces/ │ │ │ │ └── recipe.toml │ │ │ ├── cargo-zigbuild/ │ │ │ │ └── recipe.toml │ │ │ ├── carwash/ │ │ │ │ └── recipe.toml │ │ │ └── crunch/ │ │ │ └── recipe.toml │ │ ├── debug/ │ │ │ ├── dr-memory/ │ │ │ │ └── recipe.toml │ │ │ ├── gdb/ │ │ │ │ └── recipe.toml │ │ │ ├── nnd/ │ │ │ │ └── recipe.toml │ │ │ ├── rr-debugger/ │ │ │ │ └── recipe.toml │ │ │ ├── termfu/ │ │ │ │ └── recipe.toml │ │ │ └── yetty/ │ │ │ └── recipe.toml │ │ ├── framework/ │ │ │ ├── biome/ │ │ │ │ └── recipe.toml │ │ │ ├── deno/ │ │ │ │ └── recipe.toml │ │ │ ├── feather/ │ │ │ │ └── recipe.toml │ │ │ ├── moonzoon/ │ │ │ │ └── recipe.toml │ │ │ └── sphere/ │ │ │ └── recipe.toml │ │ ├── game-engine/ │ │ │ ├── defold-engine/ │ │ │ │ └── recipe.toml │ │ │ ├── fyrox-template/ │ │ │ │ └── recipe.toml │ │ │ ├── godot4/ │ │ │ │ └── recipe.toml │ │ │ └── redot4/ │ │ │ └── recipe.toml │ │ ├── git-tools/ │ │ │ ├── auto-commit/ │ │ │ │ └── recipe.toml │ │ │ ├── git-absorb/ │ │ │ │ └── recipe.toml │ │ │ ├── git-chain/ │ │ │ │ └── recipe.toml │ │ │ ├── git-cliff/ │ │ │ │ └── recipe.toml │ │ │ ├── git-grab/ │ │ │ │ └── recipe.toml │ │ │ ├── git-graph/ │ │ │ │ └── recipe.toml │ │ │ ├── git-ignore-generator/ │ │ │ │ └── recipe.toml │ │ │ ├── git-interactive-rebase-tool/ │ │ │ │ └── recipe.toml │ │ │ ├── git-lfs/ │ │ │ │ └── recipe.toml │ │ │ ├── git-repo-manager/ │ │ │ │ └── recipe.toml │ │ │ ├── git-statuses/ │ │ │ │ └── recipe.toml │ │ │ ├── git-subset/ │ │ │ │ └── recipe.toml │ │ │ ├── git-tool-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── git-tools-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── gitlogue/ │ │ │ │ └── recipe.toml │ │ │ ├── gitv/ │ │ │ │ └── recipe.toml │ │ │ ├── keifu/ │ │ │ │ └── recipe.toml │ │ │ ├── lazygh/ │ │ │ │ └── recipe.toml │ │ │ ├── lazygit/ │ │ │ │ └── recipe.toml │ │ │ ├── oyo/ │ │ │ │ └── recipe.toml │ │ │ ├── patchy/ │ │ │ │ └── recipe.toml │ │ │ ├── riff/ │ │ │ │ └── recipe.toml │ │ │ ├── serie/ │ │ │ │ └── recipe.toml │ │ │ └── shackle-shell/ │ │ │ └── recipe.toml │ │ ├── graphics/ │ │ │ ├── bonzomatic/ │ │ │ │ └── recipe.toml │ │ │ ├── pilka/ │ │ │ │ └── recipe.toml │ │ │ └── sh4der-jockey/ │ │ │ └── recipe.toml │ │ ├── hw/ │ │ │ ├── design/ │ │ │ │ └── recipe.toml │ │ │ ├── librepcb/ │ │ │ │ └── recipe.toml │ │ │ └── uefitool/ │ │ │ └── recipe.toml │ │ ├── ide/ │ │ │ ├── asm-lsp/ │ │ │ │ └── recipe.toml │ │ │ ├── astronvim/ │ │ │ │ └── recipe.toml │ │ │ └── rust-analyzer/ │ │ │ └── recipe.toml │ │ ├── lang/ │ │ │ ├── artichoke/ │ │ │ │ └── recipe.toml │ │ │ ├── blueprint/ │ │ │ │ └── recipe.toml │ │ │ ├── brimstone/ │ │ │ │ └── recipe.toml │ │ │ ├── cjit/ │ │ │ │ └── recipe.toml │ │ │ ├── dotnet8/ │ │ │ │ └── recipe.toml │ │ │ ├── elixir/ │ │ │ │ └── recipe.toml │ │ │ ├── elm/ │ │ │ │ └── recipe.toml │ │ │ ├── erlang/ │ │ │ │ └── recipe.toml │ │ │ ├── ghc/ │ │ │ │ └── recipe.toml │ │ │ ├── ghostscript/ │ │ │ │ └── recipe.toml │ │ │ ├── go/ │ │ │ │ └── recipe.toml │ │ │ ├── goiaba/ │ │ │ │ └── recipe.toml │ │ │ ├── java/ │ │ │ │ ├── openjdk11/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── openjdk17/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── openjdk21/ │ │ │ │ │ └── recipe.toml │ │ │ │ └── openjdk8/ │ │ │ │ └── recipe.toml │ │ │ ├── kotlin/ │ │ │ │ └── recipe.toml │ │ │ ├── lacc/ │ │ │ │ └── recipe.toml │ │ │ ├── llvm-mingw/ │ │ │ │ └── recipe.toml │ │ │ ├── mono/ │ │ │ │ └── recipe.toml │ │ │ ├── nodejs-21/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── nodejs-24/ │ │ │ │ ├── 01_redox.patch │ │ │ │ └── recipe.toml │ │ │ ├── perl5/ │ │ │ │ ├── configure_tool.sh │ │ │ │ ├── recipe.toml │ │ │ │ └── redox │ │ │ ├── php80/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── python37/ │ │ │ │ ├── config.site │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── python39/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── rilua/ │ │ │ │ └── recipe.toml │ │ │ ├── ristretto/ │ │ │ │ └── recipe.toml │ │ │ ├── ruby/ │ │ │ │ └── recipe.toml │ │ │ ├── scala/ │ │ │ │ └── recipe.toml │ │ │ ├── scc/ │ │ │ │ └── recipe.toml │ │ │ ├── tcc/ │ │ │ │ └── recipe.toml │ │ │ ├── tsuki/ │ │ │ │ └── recipe.toml │ │ │ ├── tur/ │ │ │ │ └── recipe.toml │ │ │ ├── vala/ │ │ │ │ └── recipe.toml │ │ │ ├── wrecc/ │ │ │ │ └── recipe.toml │ │ │ ├── xylo/ │ │ │ │ └── recipe.toml │ │ │ └── zig/ │ │ │ └── recipe.toml │ │ ├── managers/ │ │ │ ├── moon/ │ │ │ │ └── recipe.toml │ │ │ ├── proto/ │ │ │ │ └── recipe.toml │ │ │ └── ratifact/ │ │ │ └── recipe.toml │ │ ├── other/ │ │ │ ├── abi-cafe/ │ │ │ │ └── recipe.toml │ │ │ ├── add-determinism/ │ │ │ │ └── recipe.toml │ │ │ ├── allocscope/ │ │ │ │ └── recipe.toml │ │ │ ├── alquitran/ │ │ │ │ └── recipe.toml │ │ │ ├── alt/ │ │ │ │ └── recipe.toml │ │ │ ├── apitrace/ │ │ │ │ └── recipe.toml │ │ │ ├── apr/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── apr-util/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── argp-standalone/ │ │ │ │ └── recipe.toml │ │ │ ├── bender/ │ │ │ │ └── recipe.toml │ │ │ ├── bison/ │ │ │ │ └── recipe.toml │ │ │ ├── bite/ │ │ │ │ └── recipe.toml │ │ │ ├── boon/ │ │ │ │ └── recipe.toml │ │ │ ├── bugstalker/ │ │ │ │ └── recipe.toml │ │ │ ├── cackle/ │ │ │ │ └── recipe.toml │ │ │ ├── capnproto/ │ │ │ │ └── recipe.toml │ │ │ ├── ccs-tools/ │ │ │ │ └── recipe.toml │ │ │ ├── charm++/ │ │ │ │ └── recipe.toml │ │ │ ├── chars/ │ │ │ │ └── recipe.toml │ │ │ ├── cling/ │ │ │ │ └── recipe.toml │ │ │ ├── colm/ │ │ │ │ └── recipe.toml │ │ │ ├── colmena/ │ │ │ │ └── recipe.toml │ │ │ ├── commit/ │ │ │ │ └── recipe.toml │ │ │ ├── cppunit/ │ │ │ │ └── recipe.toml │ │ │ ├── crates-tui/ │ │ │ │ └── recipe.toml │ │ │ ├── criner/ │ │ │ │ └── recipe.toml │ │ │ ├── crosstool-ng/ │ │ │ │ └── recipe.toml │ │ │ ├── customasm/ │ │ │ │ └── recipe.toml │ │ │ ├── debugedit/ │ │ │ │ └── recipe.toml │ │ │ ├── deploy-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── deps-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── difftastic/ │ │ │ │ └── recipe.toml │ │ │ ├── dioxus/ │ │ │ │ └── recipe.toml │ │ │ ├── doxygen/ │ │ │ │ └── recipe.toml │ │ │ ├── dtool/ │ │ │ │ └── recipe.toml │ │ │ ├── ecargo/ │ │ │ │ └── recipe.toml │ │ │ ├── elfshaker/ │ │ │ │ └── recipe.toml │ │ │ ├── elfutils/ │ │ │ │ └── recipe.toml │ │ │ ├── espmonitor/ │ │ │ │ └── recipe.toml │ │ │ ├── eww/ │ │ │ │ └── recipe.toml │ │ │ ├── fal/ │ │ │ │ └── recipe.toml │ │ │ ├── fazi/ │ │ │ │ └── recipe.toml │ │ │ ├── firedbg/ │ │ │ │ └── recipe.toml │ │ │ ├── flamegraph/ │ │ │ │ └── recipe.toml │ │ │ ├── flex/ │ │ │ │ └── recipe.toml │ │ │ ├── gem5/ │ │ │ │ └── recipe.toml │ │ │ ├── get-blessed/ │ │ │ │ └── recipe.toml │ │ │ ├── gex/ │ │ │ │ └── recipe.toml │ │ │ ├── gfold/ │ │ │ │ └── recipe.toml │ │ │ ├── ghostpdl/ │ │ │ │ └── recipe.toml │ │ │ ├── gist-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── gitlab-cargo-shim/ │ │ │ │ └── recipe.toml │ │ │ ├── gperf/ │ │ │ │ └── recipe.toml │ │ │ ├── grcov/ │ │ │ │ └── recipe.toml │ │ │ ├── gtest/ │ │ │ │ └── recipe.toml │ │ │ ├── guile/ │ │ │ │ └── recipe.toml │ │ │ ├── harper/ │ │ │ │ └── recipe.toml │ │ │ ├── headers/ │ │ │ │ └── recipe.toml │ │ │ ├── hexyl/ │ │ │ │ └── recipe.toml │ │ │ ├── honggfuzz/ │ │ │ │ └── recipe.toml │ │ │ ├── htmlq/ │ │ │ │ └── recipe.toml │ │ │ ├── hvm/ │ │ │ │ └── recipe.toml │ │ │ ├── icemaker/ │ │ │ │ └── recipe.toml │ │ │ ├── inko/ │ │ │ │ └── recipe.toml │ │ │ ├── intltool/ │ │ │ │ └── recipe.toml │ │ │ ├── irust/ │ │ │ │ └── recipe.toml │ │ │ ├── ispc/ │ │ │ │ └── recipe.toml │ │ │ ├── jaq/ │ │ │ │ └── recipe.toml │ │ │ ├── jco/ │ │ │ │ └── recipe.toml │ │ │ ├── jujutsu/ │ │ │ │ └── recipe.toml │ │ │ ├── kicad/ │ │ │ │ └── recipe.toml │ │ │ ├── kickstart/ │ │ │ │ └── recipe.toml │ │ │ ├── knope/ │ │ │ │ └── recipe.toml │ │ │ ├── kondo/ │ │ │ │ └── recipe.toml │ │ │ ├── ktra/ │ │ │ │ └── recipe.toml │ │ │ ├── lading/ │ │ │ │ └── recipe.toml │ │ │ ├── leetup/ │ │ │ │ └── recipe.toml │ │ │ ├── leptosfmt/ │ │ │ │ └── recipe.toml │ │ │ ├── level-zero/ │ │ │ │ └── recipe.toml │ │ │ ├── license-generator/ │ │ │ │ └── recipe.toml │ │ │ ├── licensure/ │ │ │ │ └── recipe.toml │ │ │ ├── loadlibrary/ │ │ │ │ └── recipe.toml │ │ │ ├── lockdiff/ │ │ │ │ └── recipe.toml │ │ │ ├── loco/ │ │ │ │ └── recipe.toml │ │ │ ├── lttng-ust/ │ │ │ │ └── recipe.toml │ │ │ ├── lurk/ │ │ │ │ └── recipe.toml │ │ │ ├── margo/ │ │ │ │ └── recipe.toml │ │ │ ├── memtest-vulkan/ │ │ │ │ └── recipe.toml │ │ │ ├── mise/ │ │ │ │ └── recipe.toml │ │ │ ├── mkrs/ │ │ │ │ └── recipe.toml │ │ │ ├── mnn/ │ │ │ │ └── recipe.toml │ │ │ ├── mold/ │ │ │ │ └── recipe.toml │ │ │ ├── morty/ │ │ │ │ └── recipe.toml │ │ │ ├── musl-fts/ │ │ │ │ └── recipe.toml │ │ │ ├── musl-obstack/ │ │ │ │ └── recipe.toml │ │ │ ├── ncnn/ │ │ │ │ └── recipe.toml │ │ │ ├── necessist/ │ │ │ │ └── recipe.toml │ │ │ ├── netradiant/ │ │ │ │ └── recipe.toml │ │ │ ├── ngspice/ │ │ │ │ └── recipe.toml │ │ │ ├── not-perf/ │ │ │ │ └── recipe.toml │ │ │ ├── novops/ │ │ │ │ └── recipe.toml │ │ │ ├── omni/ │ │ │ │ └── recipe.toml │ │ │ ├── omnibor-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── opam/ │ │ │ │ └── recipe.toml │ │ │ ├── opencascade/ │ │ │ │ └── recipe.toml │ │ │ ├── openradioss/ │ │ │ │ └── recipe.toml │ │ │ ├── oxc/ │ │ │ │ └── recipe.toml │ │ │ ├── oxidizer/ │ │ │ │ └── recipe.toml │ │ │ ├── panamax/ │ │ │ │ └── recipe.toml │ │ │ ├── phantom-ci/ │ │ │ │ └── recipe.toml │ │ │ ├── piccolo/ │ │ │ │ └── recipe.toml │ │ │ ├── pixi/ │ │ │ │ └── recipe.toml │ │ │ ├── precious/ │ │ │ │ └── recipe.toml │ │ │ ├── probe-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── projclean/ │ │ │ │ └── recipe.toml │ │ │ ├── projections/ │ │ │ │ └── recipe.toml │ │ │ ├── protobuf/ │ │ │ │ └── recipe.toml │ │ │ ├── protofetch/ │ │ │ │ └── recipe.toml │ │ │ ├── putzen/ │ │ │ │ └── recipe.toml │ │ │ ├── pxp/ │ │ │ │ └── recipe.toml │ │ │ ├── qbe/ │ │ │ │ └── recipe.toml │ │ │ ├── quicktest/ │ │ │ │ └── recipe.toml │ │ │ ├── radicle/ │ │ │ │ └── recipe.toml │ │ │ ├── ragel/ │ │ │ │ └── recipe.toml │ │ │ ├── rattler-build/ │ │ │ │ └── recipe.toml │ │ │ ├── rbasefind/ │ │ │ │ └── recipe.toml │ │ │ ├── redict/ │ │ │ │ └── recipe.toml │ │ │ ├── redis/ │ │ │ │ └── recipe.toml │ │ │ ├── release-plz/ │ │ │ │ └── recipe.toml │ │ │ ├── renderdoc/ │ │ │ │ └── recipe.toml │ │ │ ├── resym/ │ │ │ │ └── recipe.toml │ │ │ ├── rgit/ │ │ │ │ └── recipe.toml │ │ │ ├── rhack/ │ │ │ │ └── recipe.toml │ │ │ ├── rudra/ │ │ │ │ └── recipe.toml │ │ │ ├── rust-counter-strings/ │ │ │ │ └── recipe.toml │ │ │ ├── rusty-radamsa/ │ │ │ │ └── recipe.toml │ │ │ ├── shaderc/ │ │ │ │ └── recipe.toml │ │ │ ├── silicon/ │ │ │ │ └── recipe.toml │ │ │ ├── souper/ │ │ │ │ └── recipe.toml │ │ │ ├── steel/ │ │ │ │ └── recipe.toml │ │ │ ├── stgit/ │ │ │ │ └── recipe.toml │ │ │ ├── stitch/ │ │ │ │ └── recipe.toml │ │ │ ├── svd2rust/ │ │ │ │ └── recipe.toml │ │ │ ├── swig/ │ │ │ │ └── recipe.toml │ │ │ ├── tcl/ │ │ │ │ └── recipe.toml │ │ │ ├── tk/ │ │ │ │ └── recipe.toml │ │ │ ├── tnn/ │ │ │ │ └── recipe.toml │ │ │ ├── tokio-console/ │ │ │ │ └── recipe.toml │ │ │ ├── tv/ │ │ │ │ └── recipe.toml │ │ │ ├── twiggy/ │ │ │ │ └── recipe.toml │ │ │ ├── ucd-generate/ │ │ │ │ └── recipe.toml │ │ │ ├── ut/ │ │ │ │ └── recipe.toml │ │ │ ├── valgrind/ │ │ │ │ └── recipe.toml │ │ │ ├── verrou/ │ │ │ │ └── recipe.toml │ │ │ ├── wrkflw/ │ │ │ │ └── recipe.toml │ │ │ ├── zeal/ │ │ │ │ └── recipe.toml │ │ │ └── zepter/ │ │ │ └── recipe.toml │ │ ├── patchers/ │ │ │ └── hexpatch/ │ │ │ └── recipe.toml │ │ ├── perf/ │ │ │ ├── flamelens/ │ │ │ │ └── recipe.toml │ │ │ ├── samply/ │ │ │ │ └── recipe.toml │ │ │ ├── tracy/ │ │ │ │ └── recipe.toml │ │ │ └── vkpeak/ │ │ │ └── recipe.toml │ │ ├── proofs/ │ │ │ ├── cvc5/ │ │ │ │ └── recipe.toml │ │ │ ├── eldarica/ │ │ │ │ └── recipe.toml │ │ │ └── z3/ │ │ │ └── recipe.toml │ │ ├── python/ │ │ │ ├── py-spy/ │ │ │ │ └── recipe.toml │ │ │ ├── pyapp/ │ │ │ │ └── recipe.toml │ │ │ ├── pylyzer/ │ │ │ │ └── recipe.toml │ │ │ ├── pyrev/ │ │ │ │ └── recipe.toml │ │ │ ├── pyscan/ │ │ │ │ └── recipe.toml │ │ │ ├── python-launcher/ │ │ │ │ └── recipe.toml │ │ │ ├── ruff/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ └── uv/ │ │ │ └── recipe.toml │ │ ├── rust-tools/ │ │ │ ├── bacon/ │ │ │ │ └── recipe.toml │ │ │ ├── c2rust/ │ │ │ │ └── recipe.toml │ │ │ ├── cbindgen/ │ │ │ │ └── recipe.toml │ │ │ ├── clippy/ │ │ │ │ └── recipe.toml │ │ │ ├── coq-of-rust/ │ │ │ │ └── recipe.toml │ │ │ ├── crater/ │ │ │ │ └── recipe.toml │ │ │ ├── diplomat/ │ │ │ │ └── recipe.toml │ │ │ ├── dylint/ │ │ │ │ └── recipe.toml │ │ │ ├── evcxr-jupyter/ │ │ │ │ └── recipe.toml │ │ │ ├── evcxr-repl/ │ │ │ │ └── recipe.toml │ │ │ ├── ferrisup/ │ │ │ │ └── recipe.toml │ │ │ ├── kani/ │ │ │ │ └── recipe.toml │ │ │ ├── miri/ │ │ │ │ └── recipe.toml │ │ │ ├── rust-script/ │ │ │ │ └── recipe.toml │ │ │ ├── rust-to-npm/ │ │ │ │ └── recipe.toml │ │ │ ├── rustfmt/ │ │ │ │ └── recipe.toml │ │ │ ├── rustup/ │ │ │ │ └── recipe.toml │ │ │ ├── sccache/ │ │ │ │ └── recipe.toml │ │ │ ├── scriptisto/ │ │ │ │ └── recipe.toml │ │ │ └── tagref/ │ │ │ └── recipe.toml │ │ ├── training/ │ │ │ └── gittype/ │ │ │ └── recipe.toml │ │ ├── vcs/ │ │ │ └── mercurial/ │ │ │ └── recipe.toml │ │ ├── wasm/ │ │ │ ├── binaryen/ │ │ │ │ └── recipe.toml │ │ │ ├── trunk/ │ │ │ │ └── recipe.toml │ │ │ ├── wabt/ │ │ │ │ └── recipe.toml │ │ │ ├── wasm-pack/ │ │ │ │ └── recipe.toml │ │ │ ├── wasm-tools/ │ │ │ │ └── recipe.toml │ │ │ ├── wasmer/ │ │ │ │ └── recipe.toml │ │ │ ├── wasmi/ │ │ │ │ └── recipe.toml │ │ │ ├── wasminspect/ │ │ │ │ └── recipe.toml │ │ │ ├── wasmtime/ │ │ │ │ └── recipe.toml │ │ │ └── wepl/ │ │ │ └── recipe.toml │ │ └── web/ │ │ ├── emscripten/ │ │ │ └── recipe.toml │ │ ├── vox/ │ │ │ └── recipe.toml │ │ └── zola/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── doc/ │ │ ├── bookokrat/ │ │ │ └── recipe.toml │ │ ├── brief/ │ │ │ └── recipe.toml │ │ ├── doctave/ │ │ │ └── recipe.toml │ │ ├── gnome-doc-utils/ │ │ │ └── recipe.toml │ │ ├── gtk-doc/ │ │ │ └── recipe.toml │ │ ├── mdbook/ │ │ │ └── recipe.toml │ │ ├── newdoc/ │ │ │ └── recipe.toml │ │ ├── po4a/ │ │ │ └── recipe.toml │ │ ├── tendril-wiki/ │ │ │ └── recipe.toml │ │ └── texinfo/ │ │ └── recipe.toml │ ├── edu/ │ │ ├── bibiman/ │ │ │ └── recipe.toml │ │ ├── hacker-laws/ │ │ │ └── recipe.toml │ │ ├── nanocore/ │ │ │ └── recipe.toml │ │ ├── rustlings/ │ │ │ └── recipe.toml │ │ └── rusty-tape/ │ │ └── recipe.toml │ ├── emu/ │ │ ├── cpu/ │ │ │ ├── 6502-emulator/ │ │ │ │ └── recipe.toml │ │ │ ├── 8086-emulator/ │ │ │ │ └── recipe.toml │ │ │ ├── mipsy/ │ │ │ │ └── recipe.toml │ │ │ ├── rustzx/ │ │ │ │ └── recipe.toml │ │ │ ├── rvemu/ │ │ │ │ └── recipe.toml │ │ │ ├── scemu/ │ │ │ │ └── recipe.toml │ │ │ └── unicorn/ │ │ │ └── recipe.toml │ │ ├── game-console/ │ │ │ ├── azahar/ │ │ │ │ └── recipe.toml │ │ │ ├── clementine/ │ │ │ │ └── recipe.toml │ │ │ ├── dolphin-emu/ │ │ │ │ └── recipe.toml │ │ │ ├── finalburn-neo/ │ │ │ │ └── recipe.toml │ │ │ ├── gameboy/ │ │ │ │ ├── boytacean/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── gameroy/ │ │ │ │ │ └── recipe.toml │ │ │ │ └── mimic/ │ │ │ │ └── recipe.toml │ │ │ ├── gopher64/ │ │ │ │ └── recipe.toml │ │ │ ├── jgenesis/ │ │ │ │ └── recipe.toml │ │ │ ├── mame/ │ │ │ │ └── recipe.toml │ │ │ ├── melonds/ │ │ │ │ └── recipe.toml │ │ │ ├── meru/ │ │ │ │ └── recipe.toml │ │ │ ├── mupen64plus/ │ │ │ │ └── recipe.toml │ │ │ ├── obliteration/ │ │ │ │ └── recipe.toml │ │ │ ├── pcsx2/ │ │ │ │ └── recipe.toml │ │ │ ├── picodrive/ │ │ │ │ └── recipe.toml │ │ │ ├── play/ │ │ │ │ └── recipe.toml │ │ │ ├── ppsspp/ │ │ │ │ └── recipe.toml │ │ │ ├── ps1/ │ │ │ │ ├── duckstation/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── pcsx-rearmed/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── rpsx/ │ │ │ │ │ └── recipe.toml │ │ │ │ └── trapezoid/ │ │ │ │ └── recipe.toml │ │ │ ├── rpcs3/ │ │ │ │ └── recipe.toml │ │ │ ├── shadps4/ │ │ │ │ └── recipe.toml │ │ │ ├── snes9x/ │ │ │ │ └── recipe.toml │ │ │ ├── tetanes/ │ │ │ │ └── recipe.toml │ │ │ ├── uoyabause/ │ │ │ │ └── recipe.toml │ │ │ ├── vita3k/ │ │ │ │ └── recipe.toml │ │ │ ├── xemu/ │ │ │ │ └── recipe.toml │ │ │ ├── xenia-canary/ │ │ │ │ └── recipe.toml │ │ │ └── zsnes/ │ │ │ └── recipe.toml │ │ ├── mobile/ │ │ │ ├── touchhle/ │ │ │ │ └── recipe.toml │ │ │ └── wie/ │ │ │ └── recipe.toml │ │ ├── pc/ │ │ │ ├── darling/ │ │ │ │ └── recipe.toml │ │ │ ├── martypc/ │ │ │ │ └── recipe.toml │ │ │ ├── opengmk/ │ │ │ │ └── recipe.toml │ │ │ └── ruffle/ │ │ │ └── recipe.toml │ │ ├── security/ │ │ │ └── rust-u2f/ │ │ │ └── recipe.toml │ │ └── win/ │ │ ├── boxedwine/ │ │ │ └── recipe.toml │ │ ├── hangover/ │ │ │ └── recipe.toml │ │ ├── retrowin32/ │ │ │ └── recipe.toml │ │ └── wine-stable/ │ │ └── recipe.toml │ ├── files/ │ │ ├── exi/ │ │ │ └── recipe.toml │ │ ├── lsv/ │ │ │ └── recipe.toml │ │ ├── mc/ │ │ │ └── recipe.toml │ │ └── unf/ │ │ └── recipe.toml │ ├── finance/ │ │ ├── crypto/ │ │ │ ├── bitcoin/ │ │ │ │ ├── btc-vanity/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── btcpay-server/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── electrum/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── liana/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── nakamoto-wallet/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── nakatoshi/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── ord/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── pushtx/ │ │ │ │ │ └── recipe.toml │ │ │ │ └── rusty-blockparser/ │ │ │ │ └── recipe.toml │ │ │ ├── eth/ │ │ │ │ ├── lighthouse/ │ │ │ │ │ └── recipe.toml │ │ │ │ └── reth/ │ │ │ │ └── recipe.toml │ │ │ └── monero/ │ │ │ ├── gupax/ │ │ │ │ └── recipe.toml │ │ │ └── xmrig/ │ │ │ └── recipe.toml │ │ ├── donation/ │ │ │ └── cargo-fund/ │ │ │ └── recipe.toml │ │ ├── market/ │ │ │ ├── apcacli/ │ │ │ │ └── recipe.toml │ │ │ ├── merkato/ │ │ │ │ └── recipe.toml │ │ │ └── tick-rs/ │ │ │ └── recipe.toml │ │ ├── mgmt/ │ │ │ ├── gnucash/ │ │ │ │ └── recipe.toml │ │ │ └── tackler-ng/ │ │ │ └── recipe.toml │ │ └── rex/ │ │ └── recipe.toml │ ├── fonts/ │ │ ├── fontfor/ │ │ │ └── recipe.toml │ │ ├── fontforge/ │ │ │ └── recipe.toml │ │ ├── gerb/ │ │ │ └── recipe.toml │ │ ├── nerd-fonts/ │ │ │ └── recipe.toml │ │ ├── noto/ │ │ │ └── recipe.toml │ │ ├── noto-sans-cjk/ │ │ │ └── recipe.toml │ │ ├── noto-serif-cjk/ │ │ │ └── recipe.toml │ │ └── sitra/ │ │ └── recipe.toml │ ├── fuse/ │ │ ├── archivemount/ │ │ │ └── recipe.toml │ │ ├── btfs/ │ │ │ └── recipe.toml │ │ ├── cryfs/ │ │ │ └── recipe.toml │ │ ├── cvmfs/ │ │ │ └── recipe.toml │ │ ├── dislocker/ │ │ │ └── recipe.toml │ │ ├── dwarfs/ │ │ │ └── recipe.toml │ │ ├── e2fsprogs/ │ │ │ └── recipe.toml │ │ ├── exfat-fuse/ │ │ │ └── recipe.toml │ │ ├── ffmpegfs/ │ │ │ └── recipe.toml │ │ ├── fuse-ext2/ │ │ │ └── recipe.toml │ │ ├── fuse-nfs/ │ │ │ └── recipe.toml │ │ ├── fuse-zip/ │ │ │ └── recipe.toml │ │ ├── glusterfs/ │ │ │ └── recipe.toml │ │ ├── goofys/ │ │ │ └── recipe.toml │ │ ├── hfsfuse/ │ │ │ └── recipe.toml │ │ ├── httpdirfs/ │ │ │ └── recipe.toml │ │ ├── ifuse/ │ │ │ └── recipe.toml │ │ ├── indexfs/ │ │ │ └── recipe.toml │ │ ├── lazyfs/ │ │ │ └── recipe.toml │ │ ├── lis/ │ │ │ └── recipe.toml │ │ ├── littlefs/ │ │ │ └── recipe.toml │ │ ├── loggedfs/ │ │ │ └── recipe.toml │ │ ├── mergerfs/ │ │ │ └── recipe.toml │ │ ├── moosefs/ │ │ │ └── recipe.toml │ │ ├── mount-zip/ │ │ │ └── recipe.toml │ │ ├── ntfs-3g/ │ │ │ └── recipe.toml │ │ ├── oku-fs/ │ │ │ └── recipe.toml │ │ ├── pifs/ │ │ │ └── recipe.toml │ │ ├── rencfs/ │ │ │ └── recipe.toml │ │ ├── s3fs/ │ │ │ └── recipe.toml │ │ ├── securefs/ │ │ │ └── recipe.toml │ │ ├── simple-mtpfs/ │ │ │ └── recipe.toml │ │ ├── squashfuse/ │ │ │ └── recipe.toml │ │ ├── unionfs-fuse/ │ │ │ └── recipe.toml │ │ └── unreliablefs/ │ │ └── recipe.toml │ ├── games/ │ │ ├── action/ │ │ │ ├── battleship-rs/ │ │ │ │ └── recipe.toml │ │ │ └── bevy-combat/ │ │ │ └── recipe.toml │ │ ├── data/ │ │ │ ├── 0ad-data/ │ │ │ │ └── recipe.toml │ │ │ ├── crosshare-data/ │ │ │ │ └── recipe.toml │ │ │ ├── luanti-data/ │ │ │ │ └── recipe.toml │ │ │ ├── openjazz-shareware-data/ │ │ │ │ ├── jazzdemo.rar.sha │ │ │ │ ├── manifest │ │ │ │ └── recipe.toml │ │ │ └── quake1-shareware/ │ │ │ ├── manifest │ │ │ ├── pak0.pak.sha │ │ │ ├── quake106.zip.sha │ │ │ └── recipe.toml │ │ ├── engines/ │ │ │ ├── chocolate-doom/ │ │ │ │ └── recipe.toml │ │ │ ├── crispy-doom/ │ │ │ │ └── recipe.toml │ │ │ ├── gemrb/ │ │ │ │ └── recipe.toml │ │ │ ├── ioquake3/ │ │ │ │ └── recipe.toml │ │ │ ├── love/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── luanti/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── odamex/ │ │ │ │ └── recipe.toml │ │ │ ├── openlara/ │ │ │ │ ├── assets/ │ │ │ │ │ └── README.md │ │ │ │ └── recipe.toml │ │ │ ├── opentomb/ │ │ │ │ └── recipe.toml │ │ │ ├── rbdoom3-bfg/ │ │ │ │ └── recipe.toml │ │ │ ├── room4doom/ │ │ │ │ └── recipe.toml │ │ │ ├── rust-doom/ │ │ │ │ └── recipe.toml │ │ │ ├── shockolate/ │ │ │ │ └── recipe.toml │ │ │ ├── uzdoom/ │ │ │ │ └── recipe.toml │ │ │ ├── vkquake/ │ │ │ │ └── recipe.toml │ │ │ ├── vkquake2/ │ │ │ │ └── recipe.toml │ │ │ ├── xash3d-fwgs/ │ │ │ │ └── recipe.toml │ │ │ └── yquake2/ │ │ │ └── recipe.toml │ │ ├── fps/ │ │ │ ├── assaultcube/ │ │ │ │ └── recipe.toml │ │ │ ├── betterspades/ │ │ │ │ └── recipe.toml │ │ │ ├── et-legacy/ │ │ │ │ └── recipe.toml │ │ │ ├── openarena/ │ │ │ │ └── recipe.toml │ │ │ ├── openspades-free/ │ │ │ │ └── recipe.toml │ │ │ ├── openspades-free-pak/ │ │ │ │ └── recipe.toml │ │ │ ├── smokin-guns/ │ │ │ │ └── recipe.toml │ │ │ ├── unvanquished/ │ │ │ │ └── recipe.toml │ │ │ ├── xonotic/ │ │ │ │ └── recipe.toml │ │ │ └── zerospades-free/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── math/ │ │ │ ├── binbreak/ │ │ │ │ └── recipe.toml │ │ │ ├── cosmic-ext-2048/ │ │ │ │ └── recipe.toml │ │ │ ├── sudoku-rs/ │ │ │ │ └── recipe.toml │ │ │ └── tuxmath/ │ │ │ └── recipe.toml │ │ ├── music/ │ │ │ ├── performous/ │ │ │ │ └── recipe.toml │ │ │ ├── performous-composer/ │ │ │ │ └── recipe.toml │ │ │ └── stepmania/ │ │ │ └── recipe.toml │ │ ├── open-world/ │ │ │ ├── all-is-cubes/ │ │ │ │ └── recipe.toml │ │ │ ├── asciicker/ │ │ │ │ └── recipe.toml │ │ │ ├── cytopia/ │ │ │ │ └── recipe.toml │ │ │ ├── cytopia-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── ethertia/ │ │ │ │ └── recipe.toml │ │ │ ├── leafish/ │ │ │ │ └── recipe.toml │ │ │ ├── teloren/ │ │ │ │ └── recipe.toml │ │ │ └── veloren/ │ │ │ └── recipe.toml │ │ ├── other/ │ │ │ ├── blightmud/ │ │ │ │ └── recipe.toml │ │ │ ├── mudlet/ │ │ │ │ └── recipe.toml │ │ │ ├── oxycards/ │ │ │ │ └── recipe.toml │ │ │ ├── rust-sadari-cli/ │ │ │ │ └── recipe.toml │ │ │ ├── rustorio/ │ │ │ │ └── recipe.toml │ │ │ ├── sandbox-rs1/ │ │ │ │ └── recipe.toml │ │ │ ├── slint-tetris/ │ │ │ │ └── recipe.toml │ │ │ ├── sshattrick/ │ │ │ │ └── recipe.toml │ │ │ ├── terdle/ │ │ │ │ └── recipe.toml │ │ │ ├── tetromino/ │ │ │ │ └── recipe.toml │ │ │ ├── tintin/ │ │ │ │ └── recipe.toml │ │ │ ├── turdle/ │ │ │ │ └── recipe.toml │ │ │ ├── unvanquished-benchmarks/ │ │ │ │ └── recipe.toml │ │ │ ├── uqm/ │ │ │ │ └── recipe.toml │ │ │ ├── vong/ │ │ │ │ └── recipe.toml │ │ │ ├── vvvvvv/ │ │ │ │ └── recipe.toml │ │ │ └── wesnoth/ │ │ │ └── recipe.toml │ │ ├── platform/ │ │ │ ├── irrlamb/ │ │ │ │ └── recipe.toml │ │ │ └── supertux/ │ │ │ └── recipe.toml │ │ ├── puzzle/ │ │ │ ├── conduit/ │ │ │ │ └── recipe.toml │ │ │ ├── crosstui/ │ │ │ │ └── recipe.toml │ │ │ └── setrixtui/ │ │ │ └── recipe.toml │ │ ├── racing/ │ │ │ ├── q3rally/ │ │ │ │ └── recipe.toml │ │ │ └── supertuxkart/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── rpg/ │ │ │ ├── dcss/ │ │ │ │ └── recipe.toml │ │ │ └── kingslayer/ │ │ │ └── recipe.toml │ │ ├── rts/ │ │ │ ├── mindustry/ │ │ │ │ └── recipe.toml │ │ │ └── mindustry-beta/ │ │ │ └── recipe.toml │ │ ├── servers/ │ │ │ └── cuberite/ │ │ │ └── recipe.toml │ │ ├── shooter/ │ │ │ ├── asciiarena/ │ │ │ │ └── recipe.toml │ │ │ ├── call-of-ferris/ │ │ │ │ └── recipe.toml │ │ │ └── empty-clip/ │ │ │ └── recipe.toml │ │ ├── simulation/ │ │ │ ├── egregoria/ │ │ │ │ └── recipe.toml │ │ │ ├── formicarium/ │ │ │ │ └── recipe.toml │ │ │ ├── game-of-life-piston/ │ │ │ │ └── recipe.toml │ │ │ ├── game-of-life-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── nbodysim/ │ │ │ │ └── recipe.toml │ │ │ ├── sandbox-rs2/ │ │ │ │ └── recipe.toml │ │ │ └── symbiants/ │ │ │ └── recipe.toml │ │ ├── space/ │ │ │ ├── endless-sky/ │ │ │ │ └── recipe.toml │ │ │ ├── naev/ │ │ │ │ └── recipe.toml │ │ │ ├── osirion/ │ │ │ │ └── recipe.toml │ │ │ ├── outfly/ │ │ │ │ └── recipe.toml │ │ │ ├── rebels-in-the-sky/ │ │ │ │ └── recipe.toml │ │ │ └── rust-belt/ │ │ │ └── recipe.toml │ │ ├── strategy/ │ │ │ ├── 0ad/ │ │ │ │ └── recipe.toml │ │ │ ├── asmfish/ │ │ │ │ └── recipe.toml │ │ │ ├── balatro-tui/ │ │ │ │ └── recipe.toml │ │ │ ├── castle-game/ │ │ │ │ └── recipe.toml │ │ │ ├── cell-graph-risk/ │ │ │ │ └── recipe.toml │ │ │ ├── chess-engine/ │ │ │ │ └── recipe.toml │ │ │ ├── chess-tui/ │ │ │ │ └── recipe.toml │ │ │ ├── chessmd/ │ │ │ │ └── recipe.toml │ │ │ ├── draughts/ │ │ │ │ └── recipe.toml │ │ │ ├── hammurabi/ │ │ │ │ └── recipe.toml │ │ │ ├── hnefatafl-copenhagen/ │ │ │ │ └── recipe.toml │ │ │ ├── mazter/ │ │ │ │ └── recipe.toml │ │ │ ├── minesweep-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── offline-chess-puzzles/ │ │ │ │ └── recipe.toml │ │ │ ├── rust-sudoku/ │ │ │ │ └── recipe.toml │ │ │ ├── rustoku/ │ │ │ │ └── recipe.toml │ │ │ ├── ship-of-harkinian/ │ │ │ │ └── recipe.toml │ │ │ ├── stockfish/ │ │ │ │ └── recipe.toml │ │ │ ├── tage/ │ │ │ │ └── recipe.toml │ │ │ ├── tetris-demo/ │ │ │ │ └── recipe.toml │ │ │ ├── tic-tac-toe-rs/ │ │ │ │ └── recipe.toml │ │ │ └── warsow/ │ │ │ └── recipe.toml │ │ ├── syobonaction/ │ │ │ ├── 01_redox.patch │ │ │ └── recipe.toml │ │ └── tools/ │ │ ├── deutex/ │ │ │ └── recipe.toml │ │ └── oxyromon/ │ │ └── recipe.toml │ ├── gnome/ │ │ ├── aisleriot/ │ │ │ └── recipe.toml │ │ ├── brasero/ │ │ │ └── recipe.toml │ │ ├── cheese/ │ │ │ └── recipe.toml │ │ ├── evince/ │ │ │ └── recipe.toml │ │ ├── file-roller/ │ │ │ └── recipe.toml │ │ ├── geary/ │ │ │ └── recipe.toml │ │ ├── gimp/ │ │ │ └── recipe.toml │ │ ├── gnome-2048/ │ │ │ └── recipe.toml │ │ ├── gnome-boxes/ │ │ │ └── recipe.toml │ │ ├── gnome-builder/ │ │ │ └── recipe.toml │ │ ├── gnome-calculator/ │ │ │ └── recipe.toml │ │ ├── gnome-chess/ │ │ │ └── recipe.toml │ │ ├── gnome-connections/ │ │ │ └── recipe.toml │ │ ├── gnome-files/ │ │ │ └── recipe.toml │ │ ├── gnome-image-viewer/ │ │ │ └── recipe.toml │ │ ├── gnome-keyring/ │ │ │ └── recipe.toml │ │ ├── gnome-sudoku/ │ │ │ └── recipe.toml │ │ ├── gnome-text-editor/ │ │ │ └── recipe.toml │ │ ├── gnome-web/ │ │ │ └── recipe.toml │ │ ├── pitivi/ │ │ │ └── recipe.toml │ │ ├── simple-scan/ │ │ │ └── recipe.toml │ │ └── snapshot/ │ │ └── recipe.toml │ ├── graphics/ │ │ ├── converters/ │ │ │ ├── inkdrop/ │ │ │ │ └── recipe.toml │ │ │ └── vtracer/ │ │ │ └── recipe.toml │ │ ├── editors/ │ │ │ ├── blender/ │ │ │ │ └── recipe.toml │ │ │ ├── blender-lts/ │ │ │ │ └── recipe.toml │ │ │ ├── eyedropper/ │ │ │ │ └── recipe.toml │ │ │ ├── opentoonz/ │ │ │ │ └── recipe.toml │ │ │ ├── pencil2d/ │ │ │ │ └── recipe.toml │ │ │ └── texel/ │ │ │ └── recipe.toml │ │ ├── other/ │ │ │ ├── appleseed/ │ │ │ │ └── recipe.toml │ │ │ ├── c-ray/ │ │ │ │ └── recipe.toml │ │ │ ├── cmark/ │ │ │ │ └── recipe.toml │ │ │ ├── curvis/ │ │ │ │ └── recipe.toml │ │ │ ├── darktable/ │ │ │ │ └── recipe.toml │ │ │ ├── derive-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── dify/ │ │ │ │ └── recipe.toml │ │ │ ├── dssim/ │ │ │ │ └── recipe.toml │ │ │ ├── embree/ │ │ │ │ └── recipe.toml │ │ │ ├── flowbetween/ │ │ │ │ └── recipe.toml │ │ │ ├── gaffer/ │ │ │ │ └── recipe.toml │ │ │ ├── glou/ │ │ │ │ └── recipe.toml │ │ │ ├── gmic/ │ │ │ │ └── recipe.toml │ │ │ ├── gmic-qt/ │ │ │ │ └── recipe.toml │ │ │ ├── graphviz/ │ │ │ │ └── recipe.toml │ │ │ ├── halo/ │ │ │ │ └── recipe.toml │ │ │ ├── hdr10plus-tool/ │ │ │ │ └── recipe.toml │ │ │ ├── image-sieve/ │ │ │ │ └── recipe.toml │ │ │ ├── incompact3d/ │ │ │ │ └── recipe.toml │ │ │ ├── kantig/ │ │ │ │ └── recipe.toml │ │ │ ├── lpl/ │ │ │ │ └── recipe.toml │ │ │ ├── luxcorerender/ │ │ │ │ └── recipe.toml │ │ │ ├── lyon/ │ │ │ │ └── recipe.toml │ │ │ ├── matugen/ │ │ │ │ └── recipe.toml │ │ │ ├── naga/ │ │ │ │ └── recipe.toml │ │ │ ├── ocrs/ │ │ │ │ └── recipe.toml │ │ │ ├── oculante/ │ │ │ │ └── recipe.toml │ │ │ ├── openscad/ │ │ │ │ └── recipe.toml │ │ │ ├── ospray/ │ │ │ │ └── recipe.toml │ │ │ ├── ospray-studio/ │ │ │ │ └── recipe.toml │ │ │ ├── oxipng/ │ │ │ │ └── recipe.toml │ │ │ ├── paraview/ │ │ │ │ └── recipe.toml │ │ │ ├── paraview-data/ │ │ │ │ └── recipe.toml │ │ │ ├── pix-image-viewer/ │ │ │ │ └── recipe.toml │ │ │ ├── pixsort/ │ │ │ │ └── recipe.toml │ │ │ ├── rascii/ │ │ │ │ └── recipe.toml │ │ │ ├── rawtherapee/ │ │ │ │ └── recipe.toml │ │ │ ├── reve/ │ │ │ │ └── recipe.toml │ │ │ ├── rimage/ │ │ │ │ └── recipe.toml │ │ │ ├── satty/ │ │ │ │ └── recipe.toml │ │ │ ├── shadergarden/ │ │ │ │ └── recipe.toml │ │ │ ├── simp/ │ │ │ │ └── recipe.toml │ │ │ ├── smag/ │ │ │ │ └── recipe.toml │ │ │ ├── toybrot/ │ │ │ │ └── recipe.toml │ │ │ ├── tungsten-renderer/ │ │ │ │ └── recipe.toml │ │ │ ├── viu/ │ │ │ │ └── recipe.toml │ │ │ ├── vulkan-tools/ │ │ │ │ └── recipe.toml │ │ │ └── watch-stl/ │ │ │ └── recipe.toml │ │ ├── shaders/ │ │ │ ├── glsl-viewer/ │ │ │ │ └── recipe.toml │ │ │ ├── glslang/ │ │ │ │ └── recipe.toml │ │ │ ├── shadertoy-rs/ │ │ │ │ └── recipe.toml │ │ │ └── vibe/ │ │ │ └── recipe.toml │ │ ├── terminal/ │ │ │ ├── 3d-terminal-renderer/ │ │ │ │ └── recipe.toml │ │ │ ├── aarty/ │ │ │ │ └── recipe.toml │ │ │ ├── ascii-image/ │ │ │ │ └── recipe.toml │ │ │ ├── blockpaint/ │ │ │ │ └── recipe.toml │ │ │ ├── display3d/ │ │ │ │ └── recipe.toml │ │ │ ├── img2text/ │ │ │ │ └── recipe.toml │ │ │ ├── kakikun/ │ │ │ │ └── recipe.toml │ │ │ ├── sloth/ │ │ │ │ └── recipe.toml │ │ │ └── tapciify/ │ │ │ └── recipe.toml │ │ ├── viewers/ │ │ │ └── exhibit/ │ │ │ └── recipe.toml │ │ └── vr/ │ │ └── alvr/ │ │ └── recipe.toml │ ├── gui/ │ │ ├── gpcl/ │ │ │ └── recipe.toml │ │ ├── ordinary/ │ │ │ └── recipe.toml │ │ └── slop/ │ │ └── recipe.toml │ ├── health/ │ │ ├── blanket/ │ │ │ └── recipe.toml │ │ └── dosage/ │ │ └── recipe.toml │ ├── hw/ │ │ └── piper/ │ │ └── recipe.toml │ ├── icons/ │ │ ├── adwaita-icon-theme/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ └── breeze-icons/ │ │ └── recipe.toml │ ├── image/ │ │ ├── converters/ │ │ │ └── dipc/ │ │ │ └── recipe.toml │ │ ├── editors/ │ │ │ ├── ascii-draw/ │ │ │ │ └── recipe.toml │ │ │ ├── drawing/ │ │ │ │ └── recipe.toml │ │ │ ├── inkscape/ │ │ │ │ └── recipe.toml │ │ │ ├── rx/ │ │ │ │ └── recipe.toml │ │ │ ├── watermarker/ │ │ │ │ └── recipe.toml │ │ │ └── xpano/ │ │ │ └── recipe.toml │ │ ├── other/ │ │ │ ├── converseen/ │ │ │ │ └── recipe.toml │ │ │ ├── curtail/ │ │ │ │ └── recipe.toml │ │ │ ├── dominant-colours/ │ │ │ │ └── recipe.toml │ │ │ ├── ferrishot/ │ │ │ │ └── recipe.toml │ │ │ ├── graphicsmagick/ │ │ │ │ └── recipe.toml │ │ │ ├── imageflow/ │ │ │ │ └── recipe.toml │ │ │ ├── imagemagick/ │ │ │ │ └── recipe.toml │ │ │ ├── jpegoptim/ │ │ │ │ └── recipe.toml │ │ │ ├── jxl-oxide/ │ │ │ │ └── recipe.toml │ │ │ ├── lsix/ │ │ │ │ └── recipe.toml │ │ │ ├── oxvg/ │ │ │ │ └── recipe.toml │ │ │ ├── pngquant/ │ │ │ │ └── recipe.toml │ │ │ ├── satpaper/ │ │ │ │ └── recipe.toml │ │ │ └── sic/ │ │ │ └── recipe.toml │ │ └── upscaling/ │ │ ├── jdpixelupscaler/ │ │ │ └── recipe.toml │ │ ├── rscale2x/ │ │ │ └── recipe.toml │ │ ├── upscaler/ │ │ │ └── recipe.toml │ │ ├── upscaler-rs/ │ │ │ └── recipe.toml │ │ ├── upscayl-ncnn/ │ │ │ └── recipe.toml │ │ └── video2x/ │ │ └── recipe.toml │ ├── kde/ │ │ ├── ark/ │ │ │ └── recipe.toml │ │ ├── discover/ │ │ │ └── recipe.toml │ │ ├── k3b/ │ │ │ └── recipe.toml │ │ ├── kamoso/ │ │ │ └── recipe.toml │ │ ├── kde-dolphin/ │ │ │ └── recipe.toml │ │ ├── kdenlive/ │ │ │ └── recipe.toml │ │ ├── kdevelop/ │ │ │ └── recipe.toml │ │ ├── kpatience/ │ │ │ └── recipe.toml │ │ ├── krita/ │ │ │ └── recipe.toml │ │ ├── ktorrent/ │ │ │ └── recipe.toml │ │ ├── kwave/ │ │ │ └── recipe.toml │ │ ├── marble/ │ │ │ └── recipe.toml │ │ ├── okteta/ │ │ │ └── recipe.toml │ │ └── skanpage/ │ │ └── recipe.toml │ ├── lang/ │ │ ├── kana/ │ │ │ └── recipe.toml │ │ └── uroman-rs/ │ │ └── recipe.toml │ ├── libs/ │ │ ├── archives/ │ │ │ └── libzip/ │ │ │ └── recipe.toml │ │ ├── audio/ │ │ │ ├── boca/ │ │ │ │ └── recipe.toml │ │ │ ├── libalsa/ │ │ │ │ └── recipe.toml │ │ │ ├── libcanberra/ │ │ │ │ └── recipe.toml │ │ │ ├── libopenshot-audio/ │ │ │ │ └── recipe.toml │ │ │ ├── mpg123/ │ │ │ │ └── recipe.toml │ │ │ ├── openal/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── soundtouch/ │ │ │ │ └── recipe.toml │ │ │ ├── speex/ │ │ │ │ └── recipe.toml │ │ │ ├── speexdsp/ │ │ │ │ └── recipe.toml │ │ │ └── zmusic/ │ │ │ └── recipe.toml │ │ ├── debug/ │ │ │ └── libbacktrace/ │ │ │ └── recipe.toml │ │ ├── fs/ │ │ │ ├── libattr/ │ │ │ │ └── recipe.toml │ │ │ ├── libnfs/ │ │ │ │ └── recipe.toml │ │ │ └── physicsfs/ │ │ │ └── recipe.toml │ │ ├── gnome/ │ │ │ ├── at-spi2-core/ │ │ │ │ └── recipe.toml │ │ │ ├── atkmm/ │ │ │ │ └── recipe.toml │ │ │ ├── clutter/ │ │ │ │ └── recipe.toml │ │ │ ├── clutter-gst/ │ │ │ │ └── recipe.toml │ │ │ ├── clutter-gtk/ │ │ │ │ └── recipe.toml │ │ │ ├── cogl/ │ │ │ │ └── recipe.toml │ │ │ ├── dconf/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── dspy/ │ │ │ │ └── recipe.toml │ │ │ ├── gegl/ │ │ │ │ └── recipe.toml │ │ │ ├── gexiv2/ │ │ │ │ └── recipe.toml │ │ │ ├── glib-networking/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── glibmm/ │ │ │ │ └── recipe.toml │ │ │ ├── gnome2-common/ │ │ │ │ └── recipe.toml │ │ │ ├── gnome3-common/ │ │ │ │ └── recipe.toml │ │ │ ├── gobject-introspection/ │ │ │ │ └── recipe.toml │ │ │ ├── graphene/ │ │ │ │ └── recipe.toml │ │ │ ├── gtk-engines/ │ │ │ │ └── recipe.toml │ │ │ ├── gtk-vnc/ │ │ │ │ └── recipe.toml │ │ │ ├── gtk2/ │ │ │ │ └── recipe.toml │ │ │ ├── gtk2mm/ │ │ │ │ └── recipe.toml │ │ │ ├── gtk3/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── gtk3mm/ │ │ │ │ └── recipe.toml │ │ │ ├── gtk4/ │ │ │ │ └── recipe.toml │ │ │ ├── gtk4mm/ │ │ │ │ └── recipe.toml │ │ │ ├── gtkglext/ │ │ │ │ └── recipe.toml │ │ │ ├── gtksourceview/ │ │ │ │ └── recipe.toml │ │ │ ├── json-glib/ │ │ │ │ └── recipe.toml │ │ │ ├── jsonrpc-glib/ │ │ │ │ └── recipe.toml │ │ │ ├── libadwaita/ │ │ │ │ └── recipe.toml │ │ │ ├── libart/ │ │ │ │ └── recipe.toml │ │ │ ├── libayatana-appindicator-glib/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── libdex/ │ │ │ │ └── recipe.toml │ │ │ ├── libepoxy/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── libgee/ │ │ │ │ └── recipe.toml │ │ │ ├── libgspell-gtk3/ │ │ │ │ └── recipe.toml │ │ │ ├── libgspell-gtk4/ │ │ │ │ └── recipe.toml │ │ │ ├── libhandy/ │ │ │ │ └── recipe.toml │ │ │ ├── libnotify/ │ │ │ │ └── recipe.toml │ │ │ ├── libpanel/ │ │ │ │ └── recipe.toml │ │ │ ├── libpeas/ │ │ │ │ └── recipe.toml │ │ │ ├── librsvg/ │ │ │ │ └── recipe.toml │ │ │ ├── libsecret/ │ │ │ │ └── recipe.toml │ │ │ ├── libsigcpp/ │ │ │ │ └── recipe.toml │ │ │ ├── libsoup/ │ │ │ │ └── recipe.toml │ │ │ ├── libspelling/ │ │ │ │ └── recipe.toml │ │ │ ├── libwnck3/ │ │ │ │ └── recipe.toml │ │ │ ├── libxslt/ │ │ │ │ └── recipe.toml │ │ │ ├── pangomm/ │ │ │ │ └── recipe.toml │ │ │ ├── totem-pl-parser/ │ │ │ │ └── recipe.toml │ │ │ ├── vte/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── xdg-user-dirs-gtk/ │ │ │ │ └── recipe.toml │ │ │ └── zenity/ │ │ │ └── recipe.toml │ │ ├── graphics/ │ │ │ ├── libnoise/ │ │ │ │ └── recipe.toml │ │ │ ├── libvulkan/ │ │ │ │ └── recipe.toml │ │ │ └── vulkan-headers/ │ │ │ └── recipe.toml │ │ ├── gui/ │ │ │ ├── girara/ │ │ │ │ └── recipe.toml │ │ │ ├── imgui/ │ │ │ │ └── recipe.toml │ │ │ └── libappindicator/ │ │ │ └── recipe.toml │ │ ├── hw/ │ │ │ └── libratbag/ │ │ │ └── recipe.toml │ │ ├── image/ │ │ │ ├── libavif/ │ │ │ │ └── recipe.toml │ │ │ ├── libgphoto2/ │ │ │ │ └── recipe.toml │ │ │ ├── libheif/ │ │ │ │ └── recipe.toml │ │ │ ├── libjxl/ │ │ │ │ └── recipe.toml │ │ │ ├── libraw/ │ │ │ │ └── recipe.toml │ │ │ ├── libsixel/ │ │ │ │ └── recipe.toml │ │ │ ├── libwebp/ │ │ │ │ └── recipe.toml │ │ │ └── libwebp2/ │ │ │ └── recipe.toml │ │ ├── kde/ │ │ │ ├── kf5/ │ │ │ │ ├── kf5-activities/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-activities-stats/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-apidox/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-archive/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-attica/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-auth/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-baloo/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-bookmarks/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-calendarcore/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-cmake-modules/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-cmutils/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-codecs/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-completion/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-config/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-configwidgets/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-contacts/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-coreaddons/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-crash/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-dav/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-dbusaddons/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-declarative/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-dnssd/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-doctools/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-emoticons/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-filemetadata/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-frameworkintegration/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-globalaccel/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-guiaddons/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-holidays/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-i18n/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-iconthemes/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-idletime/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-init/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-io/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-itemmodels/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-itemviews/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-jobwidgets/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-kded/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-kdesu/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-kirigami/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-modem-manager/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-networkmanager/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-newstuff/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-notifications/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-notifyconfig/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-package/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-parts/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-people/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-plasma-framework/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-plotting/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-prison/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-pty/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-purpose/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-qqc2-desktop-style/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-quickcharts/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-runner/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-service/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-solid/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-sonnet/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-syndication/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-syntax-highlighting/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-sysguard/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-texteditor/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-textwidgets/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-threadweaver/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-unitconversion/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-wayland/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-widgetaddons/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── kf5-windowsystem/ │ │ │ │ │ └── recipe.toml │ │ │ │ └── kf5-xmlgui/ │ │ │ │ └── recipe.toml │ │ │ ├── kf6/ │ │ │ │ ├── kcodecs6/ │ │ │ │ │ └── recipe.toml │ │ │ │ └── ktexteditor6/ │ │ │ │ └── recipe.toml │ │ │ ├── libkdcraw/ │ │ │ │ └── recipe.toml │ │ │ ├── libkomparediff2/ │ │ │ │ └── recipe.toml │ │ │ └── libseexpr-kde/ │ │ │ └── recipe.toml │ │ ├── lua/ │ │ │ └── lpeg/ │ │ │ └── recipe.toml │ │ ├── ml/ │ │ │ └── libtorch/ │ │ │ └── recipe.toml │ │ ├── mobile/ │ │ │ ├── libimobiledevice/ │ │ │ │ └── recipe.toml │ │ │ └── libusbmuxd/ │ │ │ └── recipe.toml │ │ ├── mozjs/ │ │ │ └── recipe.toml │ │ ├── net/ │ │ │ ├── c-ares/ │ │ │ │ └── recipe.toml │ │ │ ├── libfilezilla/ │ │ │ │ └── recipe.toml │ │ │ ├── libidn/ │ │ │ │ └── recipe.toml │ │ │ ├── libtirpc/ │ │ │ │ └── recipe.toml │ │ │ ├── libtorrent/ │ │ │ │ └── recipe.toml │ │ │ ├── nghttp3/ │ │ │ │ └── recipe.toml │ │ │ └── ngtcp2/ │ │ │ └── recipe.toml │ │ ├── other/ │ │ │ ├── appstream/ │ │ │ │ └── recipe.toml │ │ │ ├── aws-lc-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── babl/ │ │ │ │ └── recipe.toml │ │ │ ├── boost/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── bullet-physics/ │ │ │ │ └── recipe.toml │ │ │ ├── cairomm10+/ │ │ │ │ └── recipe.toml │ │ │ ├── cairomm116+/ │ │ │ │ └── recipe.toml │ │ │ ├── dcmtk/ │ │ │ │ └── recipe.toml │ │ │ ├── fftw/ │ │ │ │ └── recipe.toml │ │ │ ├── fltk13/ │ │ │ │ └── recipe.toml │ │ │ ├── fltk14/ │ │ │ │ └── recipe.toml │ │ │ ├── freealut/ │ │ │ │ └── recipe.toml │ │ │ ├── freeglut/ │ │ │ │ └── recipe.toml │ │ │ ├── freetype-sys/ │ │ │ │ └── recipe.toml │ │ │ ├── gdbm/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── gflags/ │ │ │ │ └── recipe.toml │ │ │ ├── glew/ │ │ │ │ └── recipe.toml │ │ │ ├── glfw3/ │ │ │ │ └── recipe.toml │ │ │ ├── gpgme/ │ │ │ │ └── recipe.toml │ │ │ ├── grpc/ │ │ │ │ └── recipe.toml │ │ │ ├── hdf5/ │ │ │ │ └── recipe.toml │ │ │ ├── hwdata/ │ │ │ │ └── recipe.toml │ │ │ ├── hwloc/ │ │ │ │ └── recipe.toml │ │ │ ├── imlib2/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── inih/ │ │ │ │ └── recipe.toml │ │ │ ├── iniparser/ │ │ │ │ └── recipe.toml │ │ │ ├── json-c/ │ │ │ │ └── recipe.toml │ │ │ ├── kerberos5/ │ │ │ │ └── recipe.toml │ │ │ ├── lame/ │ │ │ │ └── recipe.toml │ │ │ ├── lammps/ │ │ │ │ └── recipe.toml │ │ │ ├── lib2geom/ │ │ │ │ └── recipe.toml │ │ │ ├── liba52/ │ │ │ │ └── recipe.toml │ │ │ ├── libabsl/ │ │ │ │ └── recipe.toml │ │ │ ├── libaio/ │ │ │ │ └── recipe.toml │ │ │ ├── libaom/ │ │ │ │ └── recipe.toml │ │ │ ├── libargon2/ │ │ │ │ └── recipe.toml │ │ │ ├── libaspell/ │ │ │ │ └── recipe.toml │ │ │ ├── libass/ │ │ │ │ └── recipe.toml │ │ │ ├── libatomic-ops/ │ │ │ │ └── recipe.toml │ │ │ ├── libbluray/ │ │ │ │ └── recipe.toml │ │ │ ├── libbotan/ │ │ │ │ └── recipe.toml │ │ │ ├── libbrotli/ │ │ │ │ └── recipe.toml │ │ │ ├── libbsd/ │ │ │ │ └── recipe.toml │ │ │ ├── libburn/ │ │ │ │ └── recipe.toml │ │ │ ├── libcaca/ │ │ │ │ └── recipe.toml │ │ │ ├── libcamera/ │ │ │ │ └── recipe.toml │ │ │ ├── libcap/ │ │ │ │ └── recipe.toml │ │ │ ├── libcdio/ │ │ │ │ └── recipe.toml │ │ │ ├── libcdio-paranoia/ │ │ │ │ └── recipe.toml │ │ │ ├── libcdr/ │ │ │ │ └── recipe.toml │ │ │ ├── libcpuid/ │ │ │ │ └── recipe.toml │ │ │ ├── libcups/ │ │ │ │ └── recipe.toml │ │ │ ├── libde265/ │ │ │ │ └── recipe.toml │ │ │ ├── libdecor/ │ │ │ │ └── recipe.toml │ │ │ ├── libdeflate/ │ │ │ │ └── recipe.toml │ │ │ ├── libdmx/ │ │ │ │ └── recipe.toml │ │ │ ├── libdotconf/ │ │ │ │ └── recipe.toml │ │ │ ├── libdouble-conversion/ │ │ │ │ └── recipe.toml │ │ │ ├── libdvbpsi/ │ │ │ │ └── recipe.toml │ │ │ ├── libdvdcss/ │ │ │ │ └── recipe.toml │ │ │ ├── libdvdnav/ │ │ │ │ └── recipe.toml │ │ │ ├── libdvdread/ │ │ │ │ └── recipe.toml │ │ │ ├── libebml/ │ │ │ │ └── recipe.toml │ │ │ ├── libedit/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── libeditline/ │ │ │ │ └── recipe.toml │ │ │ ├── libeigen/ │ │ │ │ └── recipe.toml │ │ │ ├── libenet/ │ │ │ │ └── recipe.toml │ │ │ ├── liberty-eiffel/ │ │ │ │ └── recipe.toml │ │ │ ├── libev/ │ │ │ │ └── recipe.toml │ │ │ ├── libevdev/ │ │ │ │ └── recipe.toml │ │ │ ├── libevent/ │ │ │ │ └── recipe.toml │ │ │ ├── libfmt/ │ │ │ │ └── recipe.toml │ │ │ ├── libfs/ │ │ │ │ └── recipe.toml │ │ │ ├── libfuse2/ │ │ │ │ └── recipe.toml │ │ │ ├── libfuse3/ │ │ │ │ └── recipe.toml │ │ │ ├── libgav1/ │ │ │ │ └── recipe.toml │ │ │ ├── libgc/ │ │ │ │ └── recipe.toml │ │ │ ├── libgcrypt/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── libgdal/ │ │ │ │ └── recipe.toml │ │ │ ├── libgit2/ │ │ │ │ └── recipe.toml │ │ │ ├── libglm/ │ │ │ │ └── recipe.toml │ │ │ ├── libgloox/ │ │ │ │ └── recipe.toml │ │ │ ├── libgpg-error/ │ │ │ │ └── recipe.toml │ │ │ ├── libgpm/ │ │ │ │ └── recipe.toml │ │ │ ├── libgrantlee/ │ │ │ │ └── recipe.toml │ │ │ ├── libgsl/ │ │ │ │ └── recipe.toml │ │ │ ├── libgumbo/ │ │ │ │ └── recipe.toml │ │ │ ├── libharu/ │ │ │ │ └── recipe.toml │ │ │ ├── libhidapi/ │ │ │ │ └── recipe.toml │ │ │ ├── libhyphen/ │ │ │ │ └── recipe.toml │ │ │ ├── libicu/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── libimath/ │ │ │ │ └── recipe.toml │ │ │ ├── libimmer/ │ │ │ │ └── recipe.toml │ │ │ ├── libinput/ │ │ │ │ └── recipe.toml │ │ │ ├── libisoburn/ │ │ │ │ └── recipe.toml │ │ │ ├── libisofs/ │ │ │ │ └── recipe.toml │ │ │ ├── libjasper/ │ │ │ │ └── recipe.toml │ │ │ ├── liblager/ │ │ │ │ └── recipe.toml │ │ │ ├── liblapack/ │ │ │ │ └── recipe.toml │ │ │ ├── liblcms/ │ │ │ │ └── recipe.toml │ │ │ ├── liblensfun/ │ │ │ │ └── recipe.toml │ │ │ ├── liblo/ │ │ │ │ └── recipe.toml │ │ │ ├── libm17n/ │ │ │ │ └── recipe.toml │ │ │ ├── libmad/ │ │ │ │ └── recipe.toml │ │ │ ├── libmd/ │ │ │ │ └── recipe.toml │ │ │ ├── libmpeg2/ │ │ │ │ └── recipe.toml │ │ │ ├── libmtp/ │ │ │ │ └── recipe.toml │ │ │ ├── libmypaint/ │ │ │ │ └── recipe.toml │ │ │ ├── libnlopt/ │ │ │ │ └── recipe.toml │ │ │ ├── libnsl/ │ │ │ │ └── recipe.toml │ │ │ ├── libonig/ │ │ │ │ └── recipe.toml │ │ │ ├── libotf/ │ │ │ │ └── recipe.toml │ │ │ ├── libpcap/ │ │ │ │ └── recipe.toml │ │ │ ├── libpcsclite/ │ │ │ │ └── recipe.toml │ │ │ ├── libplist/ │ │ │ │ └── recipe.toml │ │ │ ├── libpoppler/ │ │ │ │ └── recipe.toml │ │ │ ├── libportaudio/ │ │ │ │ └── recipe.toml │ │ │ ├── libpthread-stubs/ │ │ │ │ └── recipe.toml │ │ │ ├── libpugixml/ │ │ │ │ └── recipe.toml │ │ │ ├── libqalculate/ │ │ │ │ └── recipe.toml │ │ │ ├── libqrcodegenc/ │ │ │ │ └── recipe.toml │ │ │ ├── libraptor2/ │ │ │ │ └── recipe.toml │ │ │ ├── librasqal/ │ │ │ │ └── recipe.toml │ │ │ ├── librdf/ │ │ │ │ └── recipe.toml │ │ │ ├── librevenge/ │ │ │ │ └── recipe.toml │ │ │ ├── librist/ │ │ │ │ └── recipe.toml │ │ │ ├── librkcommon/ │ │ │ │ └── recipe.toml │ │ │ ├── libsamplerate/ │ │ │ │ └── recipe.toml │ │ │ ├── libskia/ │ │ │ │ └── recipe.toml │ │ │ ├── libslirp/ │ │ │ │ └── recipe.toml │ │ │ ├── libsmooth/ │ │ │ │ └── recipe.toml │ │ │ ├── libsndfile/ │ │ │ │ └── recipe.toml │ │ │ ├── libsoundio/ │ │ │ │ └── recipe.toml │ │ │ ├── libspdlog/ │ │ │ │ └── recipe.toml │ │ │ ├── libspiro/ │ │ │ │ └── recipe.toml │ │ │ ├── libsrt/ │ │ │ │ └── recipe.toml │ │ │ ├── libssh/ │ │ │ │ └── recipe.toml │ │ │ ├── libstatgrab/ │ │ │ │ └── recipe.toml │ │ │ ├── libstk/ │ │ │ │ └── recipe.toml │ │ │ ├── libtasn1/ │ │ │ │ └── recipe.toml │ │ │ ├── libtatsu/ │ │ │ │ └── recipe.toml │ │ │ ├── libtheora/ │ │ │ │ └── recipe.toml │ │ │ ├── libtickit/ │ │ │ │ └── recipe.toml │ │ │ ├── libtiff/ │ │ │ │ └── recipe.toml │ │ │ ├── libunibreak/ │ │ │ │ └── recipe.toml │ │ │ ├── libunistring/ │ │ │ │ └── recipe.toml │ │ │ ├── libunwind/ │ │ │ │ └── recipe.toml │ │ │ ├── liburiparser/ │ │ │ │ └── recipe.toml │ │ │ ├── libusb/ │ │ │ │ └── recipe.toml │ │ │ ├── libuuid/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── libuuid-ossp/ │ │ │ │ └── recipe.toml │ │ │ ├── libva/ │ │ │ │ └── recipe.toml │ │ │ ├── libvisio/ │ │ │ │ └── recipe.toml │ │ │ ├── libvncserver/ │ │ │ │ └── recipe.toml │ │ │ ├── libvterm/ │ │ │ │ └── recipe.toml │ │ │ ├── libwebsocket++/ │ │ │ │ └── recipe.toml │ │ │ ├── libwebsockets/ │ │ │ │ └── recipe.toml │ │ │ ├── libwmf/ │ │ │ │ └── recipe.toml │ │ │ ├── libwpd/ │ │ │ │ └── recipe.toml │ │ │ ├── libxcrypt/ │ │ │ │ └── recipe.toml │ │ │ ├── libxcursor/ │ │ │ │ └── recipe.toml │ │ │ ├── libxkbcommon/ │ │ │ │ └── recipe.toml │ │ │ ├── libxsimd/ │ │ │ │ └── recipe.toml │ │ │ ├── libxss/ │ │ │ │ └── recipe.toml │ │ │ ├── libxtl/ │ │ │ │ └── recipe.toml │ │ │ ├── libxtst/ │ │ │ │ └── recipe.toml │ │ │ ├── libxv/ │ │ │ │ └── recipe.toml │ │ │ ├── libxvmc/ │ │ │ │ └── recipe.toml │ │ │ ├── libyaml/ │ │ │ │ └── recipe.toml │ │ │ ├── libzimg/ │ │ │ │ └── recipe.toml │ │ │ ├── libzug/ │ │ │ │ └── recipe.toml │ │ │ ├── libzvbi/ │ │ │ │ └── recipe.toml │ │ │ ├── lilv/ │ │ │ │ └── recipe.toml │ │ │ ├── liquid-dsp/ │ │ │ │ └── recipe.toml │ │ │ ├── livedotcom/ │ │ │ │ └── recipe.toml │ │ │ ├── lrdf/ │ │ │ │ └── recipe.toml │ │ │ ├── lv2/ │ │ │ │ └── recipe.toml │ │ │ ├── lzlib/ │ │ │ │ └── recipe.toml │ │ │ ├── m4/ │ │ │ │ └── recipe.toml │ │ │ ├── maven/ │ │ │ │ └── recipe.toml │ │ │ ├── mimalloc/ │ │ │ │ └── recipe.toml │ │ │ ├── mlt/ │ │ │ │ └── recipe.toml │ │ │ ├── mozangle/ │ │ │ │ └── recipe.toml │ │ │ ├── musepack/ │ │ │ │ └── recipe.toml │ │ │ ├── nlohmann-json/ │ │ │ │ └── recipe.toml │ │ │ ├── oidn/ │ │ │ │ └── recipe.toml │ │ │ ├── onednn/ │ │ │ │ └── recipe.toml │ │ │ ├── onetbb/ │ │ │ │ └── recipe.toml │ │ │ ├── openblas/ │ │ │ │ └── recipe.toml │ │ │ ├── opencolorio/ │ │ │ │ └── recipe.toml │ │ │ ├── opencv4/ │ │ │ │ └── recipe.toml │ │ │ ├── openexr/ │ │ │ │ └── recipe.toml │ │ │ ├── openimageio/ │ │ │ │ └── recipe.toml │ │ │ ├── openjpeg/ │ │ │ │ └── recipe.toml │ │ │ ├── openmpi/ │ │ │ │ └── recipe.toml │ │ │ ├── openvkl/ │ │ │ │ └── recipe.toml │ │ │ ├── pjsip/ │ │ │ │ └── recipe.toml │ │ │ ├── popt/ │ │ │ │ └── recipe.toml │ │ │ ├── projectm/ │ │ │ │ └── recipe.toml │ │ │ ├── pystring/ │ │ │ │ └── recipe.toml │ │ │ ├── quantlib/ │ │ │ │ └── recipe.toml │ │ │ ├── raylib/ │ │ │ │ └── recipe.toml │ │ │ ├── rdflib/ │ │ │ │ └── recipe.toml │ │ │ ├── rnnoise/ │ │ │ │ └── recipe.toml │ │ │ ├── rubberband/ │ │ │ │ └── recipe.toml │ │ │ ├── rustls-openssl-compat/ │ │ │ │ └── recipe.toml │ │ │ ├── scotch/ │ │ │ │ └── recipe.toml │ │ │ ├── sdl-pango/ │ │ │ │ └── recipe.toml │ │ │ ├── sdl2-net/ │ │ │ │ └── recipe.toml │ │ │ ├── sdl2-pango/ │ │ │ │ └── recipe.toml │ │ │ ├── sdl3/ │ │ │ │ └── recipe.toml │ │ │ ├── simdjson/ │ │ │ │ └── recipe.toml │ │ │ ├── simdutf/ │ │ │ │ └── recipe.toml │ │ │ ├── snappy/ │ │ │ │ └── recipe.toml │ │ │ ├── sord/ │ │ │ │ └── recipe.toml │ │ │ ├── sratom/ │ │ │ │ └── recipe.toml │ │ │ ├── suil/ │ │ │ │ └── recipe.toml │ │ │ ├── t4kcommon/ │ │ │ │ └── recipe.toml │ │ │ ├── taglib/ │ │ │ │ └── recipe.toml │ │ │ ├── tree-sitter/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── twolame/ │ │ │ │ └── recipe.toml │ │ │ ├── vamp-plugin-sdk/ │ │ │ │ └── recipe.toml │ │ │ ├── volk/ │ │ │ │ └── recipe.toml │ │ │ ├── webkit/ │ │ │ │ └── recipe.toml │ │ │ ├── wxpython/ │ │ │ │ └── recipe.toml │ │ │ ├── wxwidgets-gtk3/ │ │ │ │ └── recipe.toml │ │ │ ├── xxhash/ │ │ │ │ └── recipe.toml │ │ │ ├── yajl/ │ │ │ │ └── recipe.toml │ │ │ └── zlib-ng/ │ │ │ └── recipe.toml │ │ ├── perf/ │ │ │ └── openmp/ │ │ │ └── recipe.toml │ │ ├── qt/ │ │ │ ├── qt4/ │ │ │ │ └── recipe.toml │ │ │ ├── qt5/ │ │ │ │ ├── qt5-3d/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-activeqt/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-base/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-charts/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-coap/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-connectivity/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-datavis3d/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-declarative/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-doc/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-full/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-gamepad/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-graphical-effects/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-imageformats/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-knx/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-location/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-lottie/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-mqtt/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-multimedia/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-networkauth/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-opcua/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-purchasing/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-quick3d/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-quickcontrols/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-quickcontrols2/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-quicktimeline/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-remoteobjects/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-script/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-scxml/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-sensors/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-serialbus/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-serialport/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-speech/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-svg/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-tools/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-tqtc/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-translations/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-virtualkeyboard/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-wayland/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-webchannel/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-webengine/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-webglplugin/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-webkit/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-websockets/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-webview/ │ │ │ │ │ └── recipe.toml │ │ │ │ ├── qt5-x11extras/ │ │ │ │ │ └── recipe.toml │ │ │ │ └── qt5-xmlpatterns/ │ │ │ │ └── recipe.toml │ │ │ └── qt6/ │ │ │ ├── qt6-3d/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-activeqt/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-base/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-charts/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-connectivity/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-datavis3d/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-declarative/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-doc/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-full/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-graphs/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-grpc/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-httpserver/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-imageformats/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-languageserver/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-location/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-lottie/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-multimedia/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-networkauth/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-positioning/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-qt5compat/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-quick3d/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-quick3dphysics/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-quickeffectmaker/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-quicktimeline/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-remoteobjects/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-scxml/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-sensors/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-serialbus/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-serialport/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-shadertools/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-speech/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-svg/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-tools/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-translations/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-virtualkeyboard/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-wayland/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-webchannel/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-webengine/ │ │ │ │ └── recipe.toml │ │ │ ├── qt6-websockets/ │ │ │ │ └── recipe.toml │ │ │ └── qt6-webview/ │ │ │ └── recipe.toml │ │ ├── security/ │ │ │ └── libacl/ │ │ │ └── recipe.toml │ │ ├── text/ │ │ │ └── hunspell/ │ │ │ └── recipe.toml │ │ ├── tikv-jemallocator/ │ │ │ └── recipe.toml │ │ ├── tls/ │ │ │ ├── gnutls3/ │ │ │ │ └── recipe.toml │ │ │ ├── mbedtls3/ │ │ │ │ └── recipe.toml │ │ │ ├── mbedtls4/ │ │ │ │ └── recipe.toml │ │ │ ├── openssl3/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ └── wolfssl5/ │ │ │ └── recipe.toml │ │ └── video/ │ │ ├── libgif/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── libmatroska/ │ │ │ └── recipe.toml │ │ ├── libopenshot/ │ │ │ └── recipe.toml │ │ └── libvpx/ │ │ └── recipe.toml │ ├── logging/ │ │ └── krapslog/ │ │ └── recipe.toml │ ├── math/ │ │ ├── cosmic-ext-calculator/ │ │ │ └── recipe.toml │ │ ├── fend/ │ │ │ └── recipe.toml │ │ ├── fractal-explorer/ │ │ │ └── recipe.toml │ │ ├── kalc/ │ │ │ └── recipe.toml │ │ ├── kalker/ │ │ │ └── recipe.toml │ │ ├── numbat/ │ │ │ └── recipe.toml │ │ ├── numr/ │ │ │ └── recipe.toml │ │ ├── primesieve/ │ │ │ └── recipe.toml │ │ ├── qalculate-gtk/ │ │ │ └── recipe.toml │ │ └── rink/ │ │ └── recipe.toml │ ├── media/ │ │ └── effy/ │ │ └── recipe.toml │ ├── mobile/ │ │ └── android-tools/ │ │ └── recipe.toml │ ├── monitors/ │ │ ├── bandwhich/ │ │ │ └── recipe.toml │ │ ├── bottom/ │ │ │ └── recipe.toml │ │ ├── conky/ │ │ │ └── recipe.toml │ │ ├── cosmic-ext-observatory/ │ │ │ └── recipe.toml │ │ ├── fluere/ │ │ │ └── recipe.toml │ │ ├── hearth/ │ │ │ └── recipe.toml │ │ ├── htop/ │ │ │ └── recipe.toml │ │ ├── latencymon/ │ │ │ └── recipe.toml │ │ ├── mountstatus/ │ │ │ └── recipe.toml │ │ ├── resources/ │ │ │ └── recipe.toml │ │ ├── rtop/ │ │ │ └── recipe.toml │ │ ├── sentrum/ │ │ │ └── recipe.toml │ │ ├── serial-monitor-rs/ │ │ │ └── recipe.toml │ │ ├── sniffnet/ │ │ │ └── recipe.toml │ │ ├── socktop/ │ │ │ └── recipe.toml │ │ ├── sysinfo/ │ │ │ └── recipe.toml │ │ └── xtop/ │ │ └── recipe.toml │ ├── net/ │ │ ├── admin/ │ │ │ └── webmin/ │ │ │ └── recipe.toml │ │ ├── analysis/ │ │ │ ├── angryether-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── echo/ │ │ │ │ └── recipe.toml │ │ │ ├── pepe/ │ │ │ │ └── recipe.toml │ │ │ ├── r-lanscan/ │ │ │ │ └── recipe.toml │ │ │ ├── rkik/ │ │ │ │ └── recipe.toml │ │ │ └── ttl/ │ │ │ └── recipe.toml │ │ ├── bittorrent/ │ │ │ ├── aquatic-udp/ │ │ │ │ └── recipe.toml │ │ │ ├── attractorr/ │ │ │ │ └── recipe.toml │ │ │ ├── btpd/ │ │ │ │ └── recipe.toml │ │ │ ├── rtorrent/ │ │ │ │ └── recipe.toml │ │ │ ├── superseedr/ │ │ │ │ └── recipe.toml │ │ │ ├── synapse-bt/ │ │ │ │ └── recipe.toml │ │ │ ├── transg-tui/ │ │ │ │ └── recipe.toml │ │ │ ├── transmission-cli/ │ │ │ │ └── recipe.toml │ │ │ ├── transmission-daemon/ │ │ │ │ └── recipe.toml │ │ │ ├── transmission-gtk/ │ │ │ │ └── recipe.toml │ │ │ └── webtorrent-cli/ │ │ │ └── recipe.toml │ │ ├── chat/ │ │ │ ├── bitchat-tui/ │ │ │ │ └── recipe.toml │ │ │ ├── gosuto/ │ │ │ │ └── recipe.toml │ │ │ ├── halloy/ │ │ │ │ └── recipe.toml │ │ │ ├── iamb/ │ │ │ │ └── recipe.toml │ │ │ ├── jami/ │ │ │ │ └── recipe.toml │ │ │ ├── pidgin/ │ │ │ │ └── recipe.toml │ │ │ ├── telegram-desktop/ │ │ │ │ └── recipe.toml │ │ │ ├── termchat/ │ │ │ │ └── recipe.toml │ │ │ └── tiny/ │ │ │ └── recipe.toml │ │ ├── download/ │ │ │ ├── aim/ │ │ │ │ └── recipe.toml │ │ │ ├── anime-downloader/ │ │ │ │ └── recipe.toml │ │ │ ├── apkeep/ │ │ │ │ └── recipe.toml │ │ │ ├── aria2/ │ │ │ │ └── recipe.toml │ │ │ ├── curlio/ │ │ │ │ └── recipe.toml │ │ │ ├── kget/ │ │ │ │ └── recipe.toml │ │ │ ├── kitget/ │ │ │ │ └── recipe.toml │ │ │ ├── parabolic/ │ │ │ │ └── recipe.toml │ │ │ ├── rusty-psn-cli/ │ │ │ │ └── recipe.toml │ │ │ ├── rusty-psn-gui/ │ │ │ │ └── recipe.toml │ │ │ ├── wget2/ │ │ │ │ └── recipe.toml │ │ │ ├── yaydl/ │ │ │ │ └── recipe.toml │ │ │ ├── youtube-tui/ │ │ │ │ └── recipe.toml │ │ │ └── yt-dlp/ │ │ │ └── recipe.toml │ │ ├── email/ │ │ │ ├── neverest/ │ │ │ │ └── recipe.toml │ │ │ └── thunderbird/ │ │ │ ├── mozconfig │ │ │ └── recipe.toml │ │ ├── ftp/ │ │ │ ├── filezilla-client/ │ │ │ │ └── recipe.toml │ │ │ ├── filezilla-server/ │ │ │ │ └── recipe.toml │ │ │ └── unftp/ │ │ │ └── recipe.toml │ │ ├── gemini/ │ │ │ └── lagrange/ │ │ │ └── recipe.toml │ │ ├── http/ │ │ │ ├── apache-httpd/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── easyp/ │ │ │ │ └── recipe.toml │ │ │ ├── ferron/ │ │ │ │ └── recipe.toml │ │ │ ├── freenginx/ │ │ │ │ └── recipe.toml │ │ │ ├── http-server-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── lighttpd/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── miniserve/ │ │ │ │ ├── recipe.toml │ │ │ │ └── redox.patch │ │ │ ├── quark/ │ │ │ │ └── recipe.toml │ │ │ ├── sozu/ │ │ │ │ └── recipe.toml │ │ │ ├── sws/ │ │ │ │ └── recipe.toml │ │ │ └── thttpd/ │ │ │ └── recipe.toml │ │ ├── lan/ │ │ │ ├── lantun/ │ │ │ │ └── recipe.toml │ │ │ ├── malai/ │ │ │ │ └── recipe.toml │ │ │ ├── zerotier/ │ │ │ │ └── recipe.toml │ │ │ └── ztui/ │ │ │ └── recipe.toml │ │ ├── monitor/ │ │ │ ├── network-monitor-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── rustnet/ │ │ │ │ └── recipe.toml │ │ │ └── somo/ │ │ │ └── recipe.toml │ │ ├── onion-routing/ │ │ │ ├── arti/ │ │ │ │ └── recipe.toml │ │ │ ├── i2pd/ │ │ │ │ └── recipe.toml │ │ │ ├── tor/ │ │ │ │ └── recipe.toml │ │ │ └── tor-browser/ │ │ │ ├── mozconfig │ │ │ └── recipe.toml │ │ ├── other/ │ │ │ ├── agnos/ │ │ │ │ └── recipe.toml │ │ │ ├── altuntun/ │ │ │ │ └── recipe.toml │ │ │ ├── arp-scanner/ │ │ │ │ └── recipe.toml │ │ │ ├── bita/ │ │ │ │ └── recipe.toml │ │ │ ├── bore/ │ │ │ │ └── recipe.toml │ │ │ ├── celeste/ │ │ │ │ └── recipe.toml │ │ │ ├── cobalt/ │ │ │ │ └── recipe.toml │ │ │ ├── crab-dlna/ │ │ │ │ └── recipe.toml │ │ │ ├── dnst/ │ │ │ │ └── recipe.toml │ │ │ ├── dqy/ │ │ │ │ └── recipe.toml │ │ │ ├── drill/ │ │ │ │ └── recipe.toml │ │ │ ├── dufs/ │ │ │ │ └── recipe.toml │ │ │ ├── floresta/ │ │ │ │ └── recipe.toml │ │ │ ├── guacamole-client/ │ │ │ │ └── recipe.toml │ │ │ ├── gws/ │ │ │ │ └── recipe.toml │ │ │ ├── havn/ │ │ │ │ └── recipe.toml │ │ │ ├── hinoki/ │ │ │ │ └── recipe.toml │ │ │ ├── hurl/ │ │ │ │ └── recipe.toml │ │ │ ├── impala/ │ │ │ │ └── recipe.toml │ │ │ ├── lldap/ │ │ │ │ └── recipe.toml │ │ │ ├── lychee/ │ │ │ │ └── recipe.toml │ │ │ ├── lynx/ │ │ │ │ └── recipe.toml │ │ │ ├── meli/ │ │ │ │ └── recipe.toml │ │ │ ├── miniupnpc/ │ │ │ │ └── recipe.toml │ │ │ ├── moonfire-nvr-server/ │ │ │ │ └── recipe.toml │ │ │ ├── netop/ │ │ │ │ └── recipe.toml │ │ │ ├── netscanner/ │ │ │ │ └── recipe.toml │ │ │ ├── nmap/ │ │ │ │ └── recipe.toml │ │ │ ├── nspr/ │ │ │ │ └── recipe.toml │ │ │ ├── nss/ │ │ │ │ └── recipe.toml │ │ │ ├── nss-pem/ │ │ │ │ └── recipe.toml │ │ │ ├── oha/ │ │ │ │ └── recipe.toml │ │ │ ├── pavao/ │ │ │ │ └── recipe.toml │ │ │ ├── phantun/ │ │ │ │ └── recipe.toml │ │ │ ├── quincy/ │ │ │ │ └── recipe.toml │ │ │ ├── rallyup/ │ │ │ │ └── recipe.toml │ │ │ ├── rathole/ │ │ │ │ └── recipe.toml │ │ │ ├── realm/ │ │ │ │ └── recipe.toml │ │ │ ├── rlt/ │ │ │ │ └── recipe.toml │ │ │ ├── rqbit/ │ │ │ │ └── recipe.toml │ │ │ ├── rustscan/ │ │ │ │ └── recipe.toml │ │ │ ├── samba/ │ │ │ │ ├── answers.txt │ │ │ │ └── recipe.toml │ │ │ ├── sandhole/ │ │ │ │ └── recipe.toml │ │ │ ├── slumber/ │ │ │ │ └── recipe.toml │ │ │ ├── smb-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── socat/ │ │ │ │ └── recipe.toml │ │ │ ├── speedtest-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── spiko/ │ │ │ │ └── recipe.toml │ │ │ ├── spis/ │ │ │ │ └── recipe.toml │ │ │ ├── srsran-4g/ │ │ │ │ └── recipe.toml │ │ │ ├── srsran-project/ │ │ │ │ └── recipe.toml │ │ │ ├── tobaru/ │ │ │ │ └── recipe.toml │ │ │ ├── trippy/ │ │ │ │ └── recipe.toml │ │ │ ├── turn-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── unbound/ │ │ │ │ └── recipe.toml │ │ │ ├── updns/ │ │ │ │ └── recipe.toml │ │ │ ├── varia/ │ │ │ │ └── recipe.toml │ │ │ ├── vimini/ │ │ │ │ └── recipe.toml │ │ │ ├── vopono/ │ │ │ │ └── recipe.toml │ │ │ ├── vpncloud/ │ │ │ │ └── recipe.toml │ │ │ ├── vsd/ │ │ │ │ └── recipe.toml │ │ │ ├── wireguard-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── wstunnel/ │ │ │ │ └── recipe.toml │ │ │ └── yazi/ │ │ │ └── recipe.toml │ │ ├── p2p/ │ │ │ ├── dumbpipe/ │ │ │ │ └── recipe.toml │ │ │ ├── easytier/ │ │ │ │ └── recipe.toml │ │ │ └── oku/ │ │ │ └── recipe.toml │ │ ├── proxy/ │ │ │ ├── hitch/ │ │ │ │ └── recipe.toml │ │ │ └── stunnel/ │ │ │ └── recipe.toml │ │ ├── remote/ │ │ │ ├── bayesian-ssh/ │ │ │ │ └── recipe.toml │ │ │ ├── do-ssh/ │ │ │ │ └── recipe.toml │ │ │ ├── ethersync/ │ │ │ │ └── recipe.toml │ │ │ ├── iroh-ssh/ │ │ │ │ └── recipe.toml │ │ │ ├── jupii/ │ │ │ │ └── recipe.toml │ │ │ ├── remmina/ │ │ │ │ └── recipe.toml │ │ │ ├── rustconn/ │ │ │ │ └── recipe.toml │ │ │ ├── sanzu/ │ │ │ │ └── recipe.toml │ │ │ ├── shared/ │ │ │ │ └── recipe.toml │ │ │ ├── ssh-portfolio/ │ │ │ │ └── recipe.toml │ │ │ ├── tigervnc/ │ │ │ │ └── recipe.toml │ │ │ └── zeco/ │ │ │ └── recipe.toml │ │ ├── scan/ │ │ │ └── netpeek/ │ │ │ └── recipe.toml │ │ ├── security/ │ │ │ └── yadb/ │ │ │ └── recipe.toml │ │ ├── server/ │ │ │ ├── bitcoin-core/ │ │ │ │ └── recipe.toml │ │ │ ├── devserver/ │ │ │ │ └── recipe.toml │ │ │ ├── doh-server/ │ │ │ │ └── recipe.toml │ │ │ ├── dora/ │ │ │ │ └── recipe.toml │ │ │ ├── electrs/ │ │ │ │ └── recipe.toml │ │ │ ├── encrypted-dns-server/ │ │ │ │ └── recipe.toml │ │ │ ├── feox-server/ │ │ │ │ └── recipe.toml │ │ │ ├── guacamole-server/ │ │ │ │ └── recipe.toml │ │ │ ├── nea/ │ │ │ │ └── recipe.toml │ │ │ ├── nostr-rs-relay/ │ │ │ │ └── recipe.toml │ │ │ ├── quick-serve/ │ │ │ │ └── recipe.toml │ │ │ ├── rustdesk-server/ │ │ │ │ └── recipe.toml │ │ │ ├── rustypaste/ │ │ │ │ └── recipe.toml │ │ │ ├── shoes/ │ │ │ │ └── recipe.toml │ │ │ ├── spadesx/ │ │ │ │ └── recipe.toml │ │ │ ├── toe-beans/ │ │ │ │ └── recipe.toml │ │ │ └── vproxy/ │ │ │ └── recipe.toml │ │ ├── sharing/ │ │ │ ├── gday/ │ │ │ │ └── recipe.toml │ │ │ ├── hakanai/ │ │ │ │ └── recipe.toml │ │ │ ├── lan-mouse/ │ │ │ │ └── recipe.toml │ │ │ ├── magic-wormhole-rs/ │ │ │ │ └── recipe.toml │ │ │ ├── microbin/ │ │ │ │ └── recipe.toml │ │ │ ├── qft/ │ │ │ │ └── recipe.toml │ │ │ ├── sendme/ │ │ │ │ └── recipe.toml │ │ │ └── warp/ │ │ │ └── recipe.toml │ │ ├── social/ │ │ │ ├── nostui/ │ │ │ │ └── recipe.toml │ │ │ ├── perch/ │ │ │ │ └── recipe.toml │ │ │ ├── reddix/ │ │ │ │ └── recipe.toml │ │ │ └── tuba/ │ │ │ └── recipe.toml │ │ └── ssh/ │ │ ├── color-ssh/ │ │ │ └── recipe.toml │ │ ├── dropbear/ │ │ │ └── recipe.toml │ │ ├── fastssh/ │ │ │ └── recipe.toml │ │ ├── filessh/ │ │ │ └── recipe.toml │ │ ├── mosh/ │ │ │ └── recipe.toml │ │ ├── russh/ │ │ │ └── recipe.toml │ │ ├── ssh-pilot/ │ │ │ └── recipe.toml │ │ ├── sshfs/ │ │ │ └── recipe.toml │ │ ├── sshs/ │ │ │ └── recipe.toml │ │ ├── sshx/ │ │ │ └── recipe.toml │ │ └── termirs/ │ │ └── recipe.toml │ ├── news/ │ │ ├── feedr/ │ │ │ └── recipe.toml │ │ ├── moccasin/ │ │ │ └── recipe.toml │ │ ├── news-rs/ │ │ │ └── recipe.toml │ │ ├── newsflash/ │ │ │ └── recipe.toml │ │ └── tuifeed/ │ │ └── recipe.toml │ ├── office/ │ │ ├── cactui/ │ │ │ └── recipe.toml │ │ ├── doxx/ │ │ │ └── recipe.toml │ │ ├── letters/ │ │ │ └── recipe.toml │ │ ├── libreoffice/ │ │ │ └── recipe.toml │ │ ├── libreoffice-dictionaries/ │ │ │ └── recipe.toml │ │ ├── libreoffice-translations/ │ │ │ └── recipe.toml │ │ ├── sheetsui/ │ │ │ └── recipe.toml │ │ ├── xleak/ │ │ │ └── recipe.toml │ │ └── zathura/ │ │ └── recipe.toml │ ├── players/ │ │ ├── clapper/ │ │ │ └── recipe.toml │ │ ├── cmus/ │ │ │ └── recipe.toml │ │ ├── cosmic-player/ │ │ │ ├── manifest │ │ │ └── recipe.toml │ │ ├── festival/ │ │ │ └── recipe.toml │ │ ├── glide/ │ │ │ └── recipe.toml │ │ ├── kronos/ │ │ │ └── recipe.toml │ │ ├── mpv/ │ │ │ └── recipe.toml │ │ ├── podcasts/ │ │ │ └── recipe.toml │ │ ├── pragha/ │ │ │ └── recipe.toml │ │ ├── recordbox/ │ │ │ └── recipe.toml │ │ ├── rustcloud/ │ │ │ └── recipe.toml │ │ ├── rustic/ │ │ │ └── recipe.toml │ │ ├── spoify/ │ │ │ └── recipe.toml │ │ ├── spotify-player/ │ │ │ └── recipe.toml │ │ ├── symphonia-play/ │ │ │ └── recipe.toml │ │ ├── tap/ │ │ │ └── recipe.toml │ │ ├── termusic/ │ │ │ └── recipe.toml │ │ ├── tplay/ │ │ │ └── recipe.toml │ │ ├── ttv/ │ │ │ └── recipe.toml │ │ ├── vlc/ │ │ │ └── recipe.toml │ │ └── ytermusic/ │ │ └── recipe.toml │ ├── recorders/ │ │ ├── asciinema/ │ │ │ └── recipe.toml │ │ ├── autocast/ │ │ │ └── recipe.toml │ │ ├── gpu-screen-recorder/ │ │ │ └── recipe.toml │ │ ├── gpu-screen-recorder-gtk/ │ │ │ └── recipe.toml │ │ └── obs-studio/ │ │ └── recipe.toml │ ├── scan/ │ │ ├── sane-backends/ │ │ │ └── recipe.toml │ │ └── zbar/ │ │ └── recipe.toml │ ├── science/ │ │ ├── alevin-fry/ │ │ │ └── recipe.toml │ │ ├── astroterm/ │ │ │ └── recipe.toml │ │ ├── celestia/ │ │ │ └── recipe.toml │ │ ├── celestia-data/ │ │ │ └── recipe.toml │ │ ├── chem-creator/ │ │ │ └── recipe.toml │ │ ├── cosmic-weather/ │ │ │ └── recipe.toml │ │ ├── gaia-sky/ │ │ │ └── recipe.toml │ │ ├── gromacs/ │ │ │ └── recipe.toml │ │ ├── mrbayes/ │ │ │ └── recipe.toml │ │ ├── nucleus/ │ │ │ └── recipe.toml │ │ ├── oarfish/ │ │ │ └── recipe.toml │ │ ├── openfoam/ │ │ │ └── recipe.toml │ │ ├── openspace/ │ │ │ └── recipe.toml │ │ ├── piscem/ │ │ │ └── recipe.toml │ │ ├── polypolish/ │ │ │ └── recipe.toml │ │ ├── qmcpack/ │ │ │ └── recipe.toml │ │ ├── scidataflow/ │ │ │ └── recipe.toml │ │ ├── simpleaf/ │ │ │ └── recipe.toml │ │ ├── siril/ │ │ │ └── recipe.toml │ │ ├── sonde/ │ │ │ └── recipe.toml │ │ ├── specfem2d/ │ │ │ └── recipe.toml │ │ ├── specfem3d/ │ │ │ └── recipe.toml │ │ ├── specfem3d-globe/ │ │ │ └── recipe.toml │ │ ├── stellarium/ │ │ │ └── recipe.toml │ │ ├── vidoxide/ │ │ │ └── recipe.toml │ │ ├── weather/ │ │ │ └── cosmic-ext-forecast/ │ │ │ └── recipe.toml │ │ └── wthrr/ │ │ └── recipe.toml │ ├── search/ │ │ ├── clapgrep/ │ │ │ └── recipe.toml │ │ ├── fzf/ │ │ │ └── recipe.toml │ │ ├── localsearch/ │ │ │ └── recipe.toml │ │ ├── lstr/ │ │ │ └── recipe.toml │ │ ├── scout/ │ │ │ └── recipe.toml │ │ ├── srgn/ │ │ │ └── recipe.toml │ │ ├── television/ │ │ │ └── recipe.toml │ │ └── ugrep/ │ │ └── recipe.toml │ ├── security/ │ │ ├── airgorah/ │ │ │ └── recipe.toml │ │ ├── angryoxide/ │ │ │ └── recipe.toml │ │ ├── apbf/ │ │ │ └── recipe.toml │ │ ├── authenticator/ │ │ │ └── recipe.toml │ │ ├── authoscope/ │ │ │ └── recipe.toml │ │ ├── binsec/ │ │ │ └── recipe.toml │ │ ├── breakmancer/ │ │ │ └── recipe.toml │ │ ├── burrow/ │ │ │ └── recipe.toml │ │ ├── capstone/ │ │ │ └── recipe.toml │ │ ├── cargo-scan/ │ │ │ └── recipe.toml │ │ ├── clamav/ │ │ │ └── recipe.toml │ │ ├── cotp/ │ │ │ └── recipe.toml │ │ ├── deoptimizer/ │ │ │ └── recipe.toml │ │ ├── dfir-toolkit/ │ │ │ └── recipe.toml │ │ ├── feroxbuster/ │ │ │ └── recipe.toml │ │ ├── flawz/ │ │ │ └── recipe.toml │ │ ├── gnupg/ │ │ │ └── recipe.toml │ │ ├── gnupg-lts/ │ │ │ └── recipe.toml │ │ ├── john-the-ripper/ │ │ │ └── recipe.toml │ │ ├── kanha/ │ │ │ └── recipe.toml │ │ ├── keepassxc/ │ │ │ └── recipe.toml │ │ ├── keyscope/ │ │ │ └── recipe.toml │ │ ├── lynis/ │ │ │ └── recipe.toml │ │ ├── motus/ │ │ │ └── recipe.toml │ │ ├── nitrocli/ │ │ │ └── recipe.toml │ │ ├── openpgp-ca/ │ │ │ └── recipe.toml │ │ ├── otti/ │ │ │ └── recipe.toml │ │ ├── pass/ │ │ │ └── recipe.toml │ │ ├── please/ │ │ │ └── recipe.toml │ │ ├── plutus-rustus/ │ │ │ └── recipe.toml │ │ ├── rage/ │ │ │ └── recipe.toml │ │ ├── retdec/ │ │ │ └── recipe.toml │ │ ├── rowhammer-test/ │ │ │ └── recipe.toml │ │ ├── rshijack/ │ │ │ └── recipe.toml │ │ ├── rustyvault/ │ │ │ └── recipe.toml │ │ ├── safecloset/ │ │ │ └── recipe.toml │ │ ├── sn0int/ │ │ │ └── recipe.toml │ │ ├── sniffglue/ │ │ │ └── recipe.toml │ │ ├── sq/ │ │ │ └── recipe.toml │ │ ├── sqop/ │ │ │ └── recipe.toml │ │ ├── sqv/ │ │ │ └── recipe.toml │ │ ├── sss-cli/ │ │ │ └── recipe.toml │ │ ├── stegano/ │ │ │ └── recipe.toml │ │ ├── sudo-rs/ │ │ │ └── recipe.toml │ │ ├── tyr/ │ │ │ └── recipe.toml │ │ ├── vagga/ │ │ │ └── recipe.toml │ │ ├── veldora/ │ │ │ └── recipe.toml │ │ ├── veracrypt/ │ │ │ └── recipe.toml │ │ ├── weggli/ │ │ │ └── recipe.toml │ │ ├── whyno/ │ │ │ └── recipe.toml │ │ └── yara-x/ │ │ └── recipe.toml │ ├── services/ │ │ ├── ala-lape/ │ │ │ └── recipe.toml │ │ ├── busd/ │ │ │ └── recipe.toml │ │ ├── coppwr/ │ │ │ └── recipe.toml │ │ ├── dbus/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── elogind/ │ │ │ └── recipe.toml │ │ ├── eudev/ │ │ │ └── recipe.toml │ │ ├── grub/ │ │ │ └── recipe.toml │ │ ├── hickory-dns/ │ │ │ └── recipe.toml │ │ ├── jack/ │ │ │ └── recipe.toml │ │ ├── lemurs/ │ │ │ └── recipe.toml │ │ ├── limine/ │ │ │ └── recipe.toml │ │ ├── ntpd-rs/ │ │ │ └── recipe.toml │ │ ├── pipewire/ │ │ │ └── recipe.toml │ │ ├── qpwgraph/ │ │ │ └── recipe.toml │ │ ├── runst/ │ │ │ └── recipe.toml │ │ ├── seatd/ │ │ │ └── recipe.toml │ │ └── wireplumber/ │ │ └── recipe.toml │ ├── shells/ │ │ ├── brush/ │ │ │ └── recipe.toml │ │ ├── cicada/ │ │ │ └── recipe.toml │ │ ├── dune/ │ │ │ └── recipe.toml │ │ ├── fish-shell/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── nsh/ │ │ │ └── recipe.toml │ │ ├── pure/ │ │ │ └── recipe.toml │ │ ├── relish/ │ │ │ └── recipe.toml │ │ ├── sheldon/ │ │ │ └── recipe.toml │ │ └── zsh/ │ │ ├── 01_redox.patch │ │ └── recipe.toml │ ├── sim/ │ │ ├── coulomb/ │ │ │ └── recipe.toml │ │ └── trmt/ │ │ └── recipe.toml │ ├── sound/ │ │ ├── asak/ │ │ │ └── recipe.toml │ │ ├── aubio/ │ │ │ └── recipe.toml │ │ ├── audacity/ │ │ │ └── recipe.toml │ │ ├── audeye/ │ │ │ └── recipe.toml │ │ ├── auditorium/ │ │ │ └── recipe.toml │ │ ├── chiptrack/ │ │ │ └── recipe.toml │ │ ├── daw/ │ │ │ ├── ardour/ │ │ │ │ └── recipe.toml │ │ │ ├── lmms/ │ │ │ │ └── recipe.toml │ │ │ └── tek/ │ │ │ └── recipe.toml │ │ ├── easy-effects/ │ │ │ └── recipe.toml │ │ ├── freac/ │ │ │ └── recipe.toml │ │ ├── fretboard/ │ │ │ └── recipe.toml │ │ ├── jukebox-cli/ │ │ │ └── recipe.toml │ │ ├── lang/ │ │ │ ├── chuck/ │ │ │ │ └── recipe.toml │ │ │ └── glicol/ │ │ │ └── recipe.toml │ │ ├── libpulse/ │ │ │ └── recipe.toml │ │ ├── lookas/ │ │ │ └── recipe.toml │ │ ├── miniaudicle/ │ │ │ └── recipe.toml │ │ ├── mixxx/ │ │ │ └── recipe.toml │ │ ├── mousai/ │ │ │ └── recipe.toml │ │ ├── music/ │ │ │ ├── metronome/ │ │ │ │ └── recipe.toml │ │ │ ├── mpd/ │ │ │ │ └── recipe.toml │ │ │ ├── neothesia/ │ │ │ │ └── recipe.toml │ │ │ └── tempo/ │ │ │ └── recipe.toml │ │ ├── odin2/ │ │ │ └── recipe.toml │ │ ├── pcmg/ │ │ │ └── recipe.toml │ │ ├── piano-rs/ │ │ │ └── recipe.toml │ │ ├── players/ │ │ │ ├── euphonica/ │ │ │ │ └── recipe.toml │ │ │ ├── ncspot/ │ │ │ │ └── recipe.toml │ │ │ └── rmpc/ │ │ │ └── recipe.toml │ │ ├── rustyvibes/ │ │ │ └── recipe.toml │ │ ├── ruxguitar/ │ │ │ └── recipe.toml │ │ ├── scope-tui/ │ │ │ └── recipe.toml │ │ ├── shezem-rs/ │ │ │ └── recipe.toml │ │ ├── sndio/ │ │ │ └── recipe.toml │ │ ├── sonobus/ │ │ │ └── recipe.toml │ │ ├── sonusmix/ │ │ │ └── recipe.toml │ │ ├── soundboard/ │ │ │ └── recipe.toml │ │ ├── soundscope/ │ │ │ └── recipe.toml │ │ ├── soundux/ │ │ │ └── recipe.toml │ │ ├── speech-dispatcher/ │ │ │ └── recipe.toml │ │ ├── swyh-rs/ │ │ │ └── recipe.toml │ │ ├── tori/ │ │ │ └── recipe.toml │ │ ├── tuisic/ │ │ │ └── recipe.toml │ │ ├── viewer/ │ │ │ ├── cava/ │ │ │ │ └── recipe.toml │ │ │ └── cavasik/ │ │ │ └── recipe.toml │ │ ├── whis/ │ │ │ └── recipe.toml │ │ └── wiremix/ │ │ └── recipe.toml │ ├── storage/ │ │ ├── bmap-rs/ │ │ │ └── recipe.toml │ │ ├── ezio/ │ │ │ └── recipe.toml │ │ ├── kiorg/ │ │ │ └── recipe.toml │ │ ├── stor-age/ │ │ │ └── recipe.toml │ │ └── wiper/ │ │ └── recipe.toml │ ├── sys-info/ │ │ ├── bb/ │ │ │ └── recipe.toml │ │ ├── btop/ │ │ │ └── recipe.toml │ │ ├── cpu-x/ │ │ │ └── recipe.toml │ │ ├── cyme/ │ │ │ └── recipe.toml │ │ ├── ffetch/ │ │ │ └── recipe.toml │ │ ├── freshfetch/ │ │ │ └── recipe.toml │ │ ├── macchina/ │ │ │ └── recipe.toml │ │ ├── mission-center/ │ │ │ └── recipe.toml │ │ ├── neofetch/ │ │ │ └── recipe.toml │ │ ├── pciutils/ │ │ │ └── recipe.toml │ │ ├── pfetch-rs/ │ │ │ └── recipe.toml │ │ ├── process-viewer/ │ │ │ └── recipe.toml │ │ ├── procps-ng/ │ │ │ └── recipe.toml │ │ ├── procs/ │ │ │ └── recipe.toml │ │ ├── rfetch/ │ │ │ └── recipe.toml │ │ ├── rsftch/ │ │ │ └── recipe.toml │ │ ├── usbutils/ │ │ │ └── recipe.toml │ │ └── zeitfetch/ │ │ └── recipe.toml │ ├── system/ │ │ ├── pik/ │ │ │ └── recipe.toml │ │ ├── procman/ │ │ │ └── recipe.toml │ │ ├── rustysd/ │ │ │ └── recipe.toml │ │ └── topgrade/ │ │ └── recipe.toml │ ├── tel/ │ │ ├── sms-server/ │ │ │ └── recipe.toml │ │ └── sms-terminal/ │ │ └── recipe.toml │ ├── terminal/ │ │ ├── agg/ │ │ │ └── recipe.toml │ │ ├── alacritty/ │ │ │ └── recipe.toml │ │ ├── ascii-gen/ │ │ │ └── recipe.toml │ │ ├── asciiquarium/ │ │ │ └── recipe.toml │ │ ├── bobr/ │ │ │ └── recipe.toml │ │ ├── boulette/ │ │ │ └── recipe.toml │ │ ├── cbonsai/ │ │ │ └── recipe.toml │ │ ├── chafa/ │ │ │ └── recipe.toml │ │ ├── chatd/ │ │ │ └── recipe.toml │ │ ├── contour-terminal/ │ │ │ └── recipe.toml │ │ ├── countryfetch/ │ │ │ └── recipe.toml │ │ ├── desktop-tui/ │ │ │ └── recipe.toml │ │ ├── envx/ │ │ │ └── recioe.toml │ │ ├── fsel/ │ │ │ └── recipe.toml │ │ ├── ghostie/ │ │ │ └── recipe.toml │ │ ├── leadr/ │ │ │ └── recipe.toml │ │ ├── lk/ │ │ │ └── recipe.toml │ │ ├── logria/ │ │ │ └── recipe.toml │ │ ├── loriini/ │ │ │ └── recipe.toml │ │ ├── lule/ │ │ │ └── recipe.toml │ │ ├── ngrv/ │ │ │ └── recipe.toml │ │ ├── otter-launcher/ │ │ │ └── recipe.toml │ │ ├── pastel/ │ │ │ └── recipe.toml │ │ ├── pay-respects/ │ │ │ └── recipe.toml │ │ ├── pipecolor/ │ │ │ └── recipe.toml │ │ ├── pipes-sh/ │ │ │ └── recipe.toml │ │ ├── pretty/ │ │ │ └── recipe.toml │ │ ├── rioterm/ │ │ │ └── recipe.toml │ │ ├── rterm/ │ │ │ └── recipe.toml │ │ ├── scooter/ │ │ │ └── recipe.toml │ │ ├── so/ │ │ │ └── recipe.toml │ │ ├── starship/ │ │ │ └── recipe.toml │ │ ├── tab-rs/ │ │ │ └── recipe.toml │ │ ├── tarts/ │ │ │ └── recipe.toml │ │ ├── tattoy/ │ │ │ └── recipe.toml │ │ ├── tere/ │ │ │ └── recipe.toml │ │ ├── term39/ │ │ │ └── recipe.toml │ │ ├── termimage/ │ │ │ └── recipe.toml │ │ ├── terminal-toys/ │ │ │ └── recipe.toml │ │ ├── terminal-yt/ │ │ │ └── recipe.toml │ │ ├── thokr/ │ │ │ └── recipe.toml │ │ ├── tmux/ │ │ │ └── recipe.toml │ │ ├── tmuxpanel/ │ │ │ └── recipe.toml │ │ ├── toyterm/ │ │ │ └── recipe.toml │ │ ├── tvk/ │ │ │ └── recipe.toml │ │ ├── useenv/ │ │ │ └── recipe.toml │ │ ├── wezterm/ │ │ │ └── recipe.toml │ │ └── zellij/ │ │ └── recipe.toml │ ├── tests/ │ │ ├── pjdfstest/ │ │ │ └── recipe.toml │ │ └── xfstests/ │ │ └── recipe.toml │ ├── text/ │ │ ├── amp/ │ │ │ └── recipe.toml │ │ ├── basalt/ │ │ │ └── recipe.toml │ │ ├── bat/ │ │ │ └── recipe.toml │ │ ├── blogr/ │ │ │ └── recipe.toml │ │ ├── csview/ │ │ │ └── recipe.toml │ │ ├── csvlens/ │ │ │ └── recipe.toml │ │ ├── dog/ │ │ │ └── recipe.toml │ │ ├── duat/ │ │ │ └── recipe.toml │ │ ├── edit/ │ │ │ └── recipe.toml │ │ ├── emacs-nox/ │ │ │ └── recipe.toml │ │ ├── emacs-pgtk/ │ │ │ └── recipe.toml │ │ ├── flowfix/ │ │ │ └── recipe.toml │ │ ├── fsrx/ │ │ │ └── recipe.toml │ │ ├── helix-gpui/ │ │ │ └── recipe.toml │ │ ├── igrep/ │ │ │ └── recipe.toml │ │ ├── jt/ │ │ │ └── recipe.toml │ │ ├── keypunch/ │ │ │ └── recipe.toml │ │ ├── ki-editor/ │ │ │ └── recipe.toml │ │ ├── kibi/ │ │ │ └── recipe.toml │ │ ├── mado/ │ │ │ └── recipe.toml │ │ ├── md-tui/ │ │ │ └── recipe.toml │ │ ├── mdcat/ │ │ │ └── recipe.toml │ │ ├── nanorust/ │ │ │ └── recipe.toml │ │ ├── neovide/ │ │ │ └── recipe.toml │ │ ├── neovim/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── octotype/ │ │ │ └── recipe.toml │ │ ├── quicknotes/ │ │ │ └── recipe.toml │ │ ├── read-it-later/ │ │ │ └── recipe.toml │ │ ├── repgrep/ │ │ │ └── recipe.toml │ │ ├── revi/ │ │ │ └── recipe.toml │ │ ├── rhyolite/ │ │ │ └── recipe.toml │ │ ├── ripgrep-all/ │ │ │ └── recipe.toml │ │ ├── ripwc/ │ │ │ └── recipe.toml │ │ ├── rnote/ │ │ │ └── recipe.toml │ │ ├── rucola/ │ │ │ └── recipe.toml │ │ ├── sd/ │ │ │ └── recipe.toml │ │ ├── sed-rs/ │ │ │ └── recipe.toml │ │ ├── serpl/ │ │ │ └── recipe.toml │ │ ├── svgbob/ │ │ │ └── recipe.toml │ │ ├── syncat/ │ │ │ └── recipe.toml │ │ ├── t/ │ │ │ └── recipe.toml │ │ ├── treemd/ │ │ │ └── recipe.toml │ │ ├── tylax/ │ │ │ └── recipe.toml │ │ ├── typesetter/ │ │ │ └── recipe.toml │ │ ├── yes-rs/ │ │ │ └── recipe.toml │ │ ├── zed/ │ │ │ └── recipe.toml │ │ └── zee/ │ │ └── recipe.toml │ ├── time/ │ │ ├── dispute/ │ │ │ └── recipe.toml │ │ ├── litime/ │ │ │ └── recipe.toml │ │ ├── rsclock/ │ │ │ └── recipe.toml │ │ ├── timer-rs/ │ │ │ └── recipe.toml │ │ ├── tomotroid/ │ │ │ └── recipe.toml │ │ ├── trackie/ │ │ │ └── recipe.toml │ │ ├── worktime-tui/ │ │ │ └── recipe.toml │ │ └── zman/ │ │ └── recipe.toml │ ├── tools/ │ │ ├── aeruginous/ │ │ │ └── recipe.toml │ │ ├── ani-cli/ │ │ │ └── recipe.toml │ │ ├── ani-skip/ │ │ │ └── recipe.toml │ │ ├── arrow-tools/ │ │ │ └── recipe.toml │ │ ├── artem/ │ │ │ └── recipe.toml │ │ ├── ast-grep/ │ │ │ └── recipe.toml │ │ ├── astc-encoder/ │ │ │ └── recipe.toml │ │ ├── astyle/ │ │ │ └── recipe.toml │ │ ├── atm-cli/ │ │ │ └── recipe.toml │ │ ├── atuin/ │ │ │ └── recipe.toml │ │ ├── backhand/ │ │ │ └── recipe.toml │ │ ├── bacup/ │ │ │ └── recipe.toml │ │ ├── bartib/ │ │ │ └── recipe.toml │ │ ├── battop/ │ │ │ └── recipe.toml │ │ ├── bdt/ │ │ │ └── recipe.toml │ │ ├── binserve/ │ │ │ └── recipe.toml │ │ ├── birdy/ │ │ │ └── recipe.toml │ │ ├── blockish-caca/ │ │ │ └── recipe.toml │ │ ├── broot/ │ │ │ └── recipe.toml │ │ ├── busybox/ │ │ │ └── recipe.toml │ │ ├── bvr/ │ │ │ └── recipe.toml │ │ ├── byteblitz/ │ │ │ └── recipe.toml │ │ ├── caesium/ │ │ │ └── recipe.toml │ │ ├── caligula/ │ │ │ └── recipe.toml │ │ ├── carbonyl/ │ │ │ └── recipe.toml │ │ ├── cb/ │ │ │ └── recipe.toml │ │ ├── cfait/ │ │ │ └── recipe.toml │ │ ├── checkpwn/ │ │ │ └── recipe.toml │ │ ├── choose/ │ │ │ └── recipe.toml │ │ ├── chromazone/ │ │ │ └── recipe.toml │ │ ├── clipcat/ │ │ │ └── recipe.toml │ │ ├── clipshare-desktop/ │ │ │ └── recipe.toml │ │ ├── clipshare-server/ │ │ │ └── recipe.toml │ │ ├── clog-cli/ │ │ │ └── recipe.toml │ │ ├── conceal/ │ │ │ └── recipe.toml │ │ ├── conserve/ │ │ │ └── recipe.toml │ │ ├── counts/ │ │ │ └── recipe.toml │ │ ├── cpuminer-opt/ │ │ │ └── recipe.toml │ │ ├── crunchy-cli/ │ │ │ └── recipe.toml │ │ ├── cube-timer/ │ │ │ └── recipe.toml │ │ ├── cute/ │ │ │ └── recipe.toml │ │ ├── czkawka/ │ │ │ └── recipe.toml │ │ ├── daktilo/ │ │ │ └── recipe.toml │ │ ├── dead-ringer/ │ │ │ └── recipe.toml │ │ ├── delta/ │ │ │ └── recipe.toml │ │ ├── desed/ │ │ │ └── recipe.toml │ │ ├── dfm/ │ │ │ └── recipe.toml │ │ ├── diffr/ │ │ │ └── recipe.toml │ │ ├── diffutils-rs/ │ │ │ └── recipe.toml │ │ ├── diffy/ │ │ │ └── recipe.toml │ │ ├── dim/ │ │ │ └── recipe.toml │ │ ├── dirscan/ │ │ │ └── recipe.toml │ │ ├── diskonaut/ │ │ │ └── recipe.toml │ │ ├── dispatch/ │ │ │ └── recipe.toml │ │ ├── dog-dns/ │ │ │ └── recipe.toml │ │ ├── dotr/ │ │ │ └── recipe.toml │ │ ├── dotter/ │ │ │ └── recipe.toml │ │ ├── dply/ │ │ │ └── recipe.toml │ │ ├── dprint/ │ │ │ └── recipe.toml │ │ ├── dra-cla/ │ │ │ └── recipe.toml │ │ ├── dua/ │ │ │ └── recipe.toml │ │ ├── dui/ │ │ │ └── recipe.toml │ │ ├── dura/ │ │ │ └── recipe.toml │ │ ├── dust/ │ │ │ └── recipe.toml │ │ ├── dutree/ │ │ │ └── recipe.toml │ │ ├── dysk/ │ │ │ └── recipe.toml │ │ ├── emplace/ │ │ │ └── recipe.toml │ │ ├── enchant/ │ │ │ └── recipe.toml │ │ ├── envio/ │ │ │ └── recipe.toml │ │ ├── epub2txt/ │ │ │ └── recipe.toml │ │ ├── erdtree/ │ │ │ └── recipe.toml │ │ ├── espanso/ │ │ │ └── recipe.toml │ │ ├── eureka/ │ │ │ └── recipe.toml │ │ ├── eva/ │ │ │ └── recipe.toml │ │ ├── exa/ │ │ │ └── recipe.toml │ │ ├── exhaust/ │ │ │ └── recipe.toml │ │ ├── exuberant-ctags/ │ │ │ └── recipe.toml │ │ ├── eza/ │ │ │ └── recipe.toml │ │ ├── fclones/ │ │ │ └── recipe.toml │ │ ├── felix/ │ │ │ └── recipe.toml │ │ ├── fennec/ │ │ │ └── recipe.toml │ │ ├── ffizer/ │ │ │ └── recipe.toml │ │ ├── findutils-rs/ │ │ │ └── recipe.toml │ │ ├── flameshot/ │ │ │ └── recipe.toml │ │ ├── flowtime/ │ │ │ └── recipe.toml │ │ ├── fselect/ │ │ │ └── recipe.toml │ │ ├── fuc/ │ │ │ └── recipe.toml │ │ ├── fuga/ │ │ │ └── recipe.toml │ │ ├── funzzy/ │ │ │ └── recipe.toml │ │ ├── fzf-make/ │ │ │ └── recipe.toml │ │ ├── gengo/ │ │ │ └── recipe.toml │ │ ├── germ/ │ │ │ └── recipe.toml │ │ ├── gifski/ │ │ │ └── recipe.toml │ │ ├── gnu-radio/ │ │ │ └── recipe.toml │ │ ├── gnuplot/ │ │ │ └── recipe.toml │ │ ├── goldboot/ │ │ │ └── recipe.toml │ │ ├── goxel/ │ │ │ └── recipe.toml │ │ ├── gpg-tui/ │ │ │ └── recipe.toml │ │ ├── gphoto2/ │ │ │ └── recipe.toml │ │ ├── gping/ │ │ │ └── recipe.toml │ │ ├── gptman/ │ │ │ └── recipe.toml │ │ ├── gptube-cli/ │ │ │ └── recipe.toml │ │ ├── grex/ │ │ │ └── recipe.toml │ │ ├── groff/ │ │ │ └── recipe.toml │ │ ├── guix/ │ │ │ └── recipe.toml │ │ ├── halp/ │ │ │ └── recipe.toml │ │ ├── hawkeye/ │ │ │ └── recipe.toml │ │ ├── haylxon/ │ │ │ └── recipe.toml │ │ ├── himalaya/ │ │ │ └── recipe.toml │ │ ├── hired/ │ │ │ └── recipe.toml │ │ ├── hoard/ │ │ │ └── recipe.toml │ │ ├── horsetab/ │ │ │ └── recipe.toml │ │ ├── humphrey/ │ │ │ └── recipe.toml │ │ ├── hwatch/ │ │ │ └── recipe.toml │ │ ├── imager/ │ │ │ └── recipe.toml │ │ ├── inlyne/ │ │ │ └── recipe.toml │ │ ├── innernet-cli/ │ │ │ └── recipe.toml │ │ ├── innernet-server/ │ │ │ └── recipe.toml │ │ ├── intelli-shell/ │ │ │ └── recipe.toml │ │ ├── interaction-calculus/ │ │ │ └── recipe.toml │ │ ├── intermodal/ │ │ │ └── recipe.toml │ │ ├── itstool/ │ │ │ └── recipe.toml │ │ ├── jirust/ │ │ │ └── recipe.toml │ │ ├── jless/ │ │ │ └── recipe.toml │ │ ├── joshuto/ │ │ │ └── recipe.toml │ │ ├── jql/ │ │ │ └── recipe.toml │ │ ├── kami/ │ │ │ └── recipe.toml │ │ ├── kanata/ │ │ │ └── recipe.toml │ │ ├── kbt/ │ │ │ └── recipe.toml │ │ ├── kodi/ │ │ │ └── recipe.toml │ │ ├── lapce/ │ │ │ └── recipe.toml │ │ ├── lazy-etherscan/ │ │ │ └── recipe.toml │ │ ├── lcs-image-diff/ │ │ │ └── recipe.toml │ │ ├── lddtree-rs/ │ │ │ └── recipe.toml │ │ ├── legdur/ │ │ │ └── recipe.toml │ │ ├── lemmeknow/ │ │ │ └── recipe.toml │ │ ├── less/ │ │ │ └── recipe.toml │ │ ├── lines-rs/ │ │ │ └── recipe.toml │ │ ├── lineselect/ │ │ │ └── recipe.toml │ │ ├── logss/ │ │ │ └── recipe.toml │ │ ├── lowcharts/ │ │ │ └── recipe.toml │ │ ├── lucid/ │ │ │ └── recipe.toml │ │ ├── mandy/ │ │ │ └── recipe.toml │ │ ├── mangohud/ │ │ │ └── recipe.toml │ │ ├── mask/ │ │ │ └── recipe.toml │ │ ├── matui/ │ │ │ └── recipe.toml │ │ ├── maze-tui/ │ │ │ └── recipe.toml │ │ ├── mcfly/ │ │ │ └── recipe.toml │ │ ├── menyoki/ │ │ │ └── recipe.toml │ │ ├── mhv/ │ │ │ └── recipe.toml │ │ ├── minmon/ │ │ │ └── recipe.toml │ │ ├── mkisofs-rs/ │ │ │ └── recipe.toml │ │ ├── mprocs/ │ │ │ └── recipe.toml │ │ ├── navi/ │ │ │ └── recipe.toml │ │ ├── nickel/ │ │ │ └── recipe.toml │ │ ├── nix/ │ │ │ └── recipe.toml │ │ ├── nomad/ │ │ │ └── recipe.toml │ │ ├── nomino/ │ │ │ └── recipe.toml │ │ ├── notnow/ │ │ │ └── recipe.toml │ │ ├── objdiff/ │ │ │ └── recipe.toml │ │ ├── odilia/ │ │ │ └── recipe.toml │ │ ├── omega/ │ │ │ └── recipe.toml │ │ ├── oranda/ │ │ │ └── recipe.toml │ │ ├── orchaldir-texture-generator/ │ │ │ └── recipe.toml │ │ ├── pdbview/ │ │ │ └── recipe.toml │ │ ├── pdu/ │ │ │ └── recipe.toml │ │ ├── pipr/ │ │ │ └── recipe.toml │ │ ├── pixcil/ │ │ │ └── recipe.toml │ │ ├── pixelsort/ │ │ │ └── recipe.toml │ │ ├── planify/ │ │ │ └── recipe.toml │ │ ├── pomky/ │ │ │ └── recipe.toml │ │ ├── porsmo/ │ │ │ └── recipe.toml │ │ ├── posixutils-rs/ │ │ │ └── recipe.toml │ │ ├── potrace/ │ │ │ └── recipe.toml │ │ ├── presenterm/ │ │ │ └── recipe.toml │ │ ├── pueue/ │ │ │ └── recipe.toml │ │ ├── qv/ │ │ │ └── recipe.toml │ │ ├── rana/ │ │ │ └── recipe.toml │ │ ├── rargs/ │ │ │ └── recipe.toml │ │ ├── rclone/ │ │ │ └── recipe.toml │ │ ├── restic/ │ │ │ └── recipe.toml │ │ ├── rfz/ │ │ │ └── recipe.toml │ │ ├── rip/ │ │ │ └── recipe.toml │ │ ├── ripasso/ │ │ │ └── recipe.toml │ │ ├── ripsecrets/ │ │ │ └── recipe.toml │ │ ├── rix/ │ │ │ └── recipe.toml │ │ ├── rnr/ │ │ │ └── recipe.toml │ │ ├── rq/ │ │ │ └── recipe.toml │ │ ├── ruke/ │ │ │ └── recipe.toml │ │ ├── run/ │ │ │ └── recipe.toml │ │ ├── ruplacer/ │ │ │ └── recipe.toml │ │ ├── rusty/ │ │ │ └── recipe.toml │ │ ├── rusty-krab-manager/ │ │ │ └── recipe.toml │ │ ├── rusync/ │ │ │ └── recipe.toml │ │ ├── sad/ │ │ │ └── recipe.toml │ │ ├── sam/ │ │ │ └── recipe.toml │ │ ├── scribus/ │ │ │ └── recipe.toml │ │ ├── scrying/ │ │ │ └── recipe.toml │ │ ├── shd/ │ │ │ └── recipe.toml │ │ ├── shellfirm/ │ │ │ └── recipe.toml │ │ ├── shokunin/ │ │ │ └── recipe.toml │ │ ├── sig/ │ │ │ └── recipe.toml │ │ ├── sigi/ │ │ │ └── recipe.toml │ │ ├── simplemoji/ │ │ │ └── recipe.toml │ │ ├── skim/ │ │ │ └── recipe.toml │ │ ├── skyspell/ │ │ │ └── recipe.toml │ │ ├── smartmontools/ │ │ │ └── recipe.toml │ │ ├── snappy-rs/ │ │ │ └── recipe.toml │ │ ├── spacer/ │ │ │ └── recipe.toml │ │ ├── spidey/ │ │ │ └── recipe.toml │ │ ├── sprinkles/ │ │ │ └── recipe.toml │ │ ├── succeed2ban-tui/ │ │ │ └── recipe.toml │ │ ├── sued/ │ │ │ └── recipe.toml │ │ ├── svg2pdf/ │ │ │ └── recipe.toml │ │ ├── swc/ │ │ │ └── recipe.toml │ │ ├── t-rec/ │ │ │ └── recipe.toml │ │ ├── tailspin/ │ │ │ └── recipe.toml │ │ ├── tarlz/ │ │ │ └── recipe.toml │ │ ├── task-maker-rs/ │ │ │ └── recipe.toml │ │ ├── taskserver/ │ │ │ └── recipe.toml │ │ ├── taskwarrior/ │ │ │ └── recipe.toml │ │ ├── taskwarrior-tui/ │ │ │ └── recipe.toml │ │ ├── tauno-monitor/ │ │ │ └── recipe.toml │ │ ├── tealdeer/ │ │ │ └── recipe.toml │ │ ├── teip/ │ │ │ └── recipe.toml │ │ ├── thwack/ │ │ │ └── recipe.toml │ │ ├── tin-summer/ │ │ │ └── recipe.toml │ │ ├── tinywasm/ │ │ │ └── recipe.toml │ │ ├── tl-rs/ │ │ │ └── recipe.toml │ │ ├── tock/ │ │ │ └── recipe.toml │ │ ├── toipe/ │ │ │ └── recipe.toml │ │ ├── torrust-tracker/ │ │ │ └── recipe.toml │ │ ├── toybox/ │ │ │ └── recipe.toml │ │ ├── tp-note/ │ │ │ └── recipe.toml │ │ ├── tq/ │ │ │ └── recipe.toml │ │ ├── treq/ │ │ │ └── recipe.toml │ │ ├── tsuchita/ │ │ │ └── recipe.toml │ │ ├── tts-tui/ │ │ │ └── recipe.toml │ │ ├── ttyper/ │ │ │ └── recipe.toml │ │ ├── tui-journal/ │ │ │ └── recipe.toml │ │ ├── tvix/ │ │ │ └── recipe.toml │ │ ├── typst/ │ │ │ └── recipe.toml │ │ ├── upx/ │ │ │ └── recipe.toml │ │ ├── util-linux/ │ │ │ └── recipe.toml │ │ ├── vector/ │ │ │ └── recipe.toml │ │ ├── ventoy/ │ │ │ └── recipe.toml │ │ ├── vincenzo/ │ │ │ └── recipe.toml │ │ ├── watchexec/ │ │ │ └── recipe.toml │ │ ├── watchmen/ │ │ │ └── recipe.toml │ │ ├── wayback-rs/ │ │ │ └── recipe.toml │ │ ├── wayshot/ │ │ │ └── recipe.toml │ │ ├── wethr/ │ │ │ └── recipe.toml │ │ ├── weylus/ │ │ │ └── recipe.toml │ │ ├── wick/ │ │ │ └── recipe.toml │ │ ├── wpaperd/ │ │ │ └── recipe.toml │ │ ├── xcp/ │ │ │ └── recipe.toml │ │ ├── xdg-utils/ │ │ │ └── recipe.toml │ │ ├── xdotool/ │ │ │ └── recipe.toml │ │ ├── xdvdfs/ │ │ │ └── recipe.toml │ │ ├── xh/ │ │ │ └── recipe.toml │ │ ├── xiu/ │ │ │ └── recipe.toml │ │ ├── xorriso/ │ │ │ └── recipe.toml │ │ ├── xsv/ │ │ │ └── recipe.toml │ │ └── zet/ │ │ └── recipe.toml │ ├── tui/ │ │ ├── finch/ │ │ │ └── recipe.toml │ │ ├── gitu/ │ │ │ └── recipe.toml │ │ ├── gitui/ │ │ │ └── recipe.toml │ │ ├── gyr/ │ │ │ └── recipe.toml │ │ ├── heh/ │ │ │ └── recipe.toml │ │ ├── heretek/ │ │ │ └── recipe.toml │ │ ├── lazyjj/ │ │ │ └── recipe.toml │ │ ├── manga-tui/ │ │ │ └── recipe.toml │ │ ├── nnn/ │ │ │ └── recipe.toml │ │ ├── nyaa-rs/ │ │ │ └── recipe.toml │ │ ├── oatmeal/ │ │ │ └── recipe.toml │ │ ├── otree/ │ │ │ └── recipe.toml │ │ ├── projectable/ │ │ │ └── recipe.toml │ │ ├── radicle-tui/ │ │ │ └── recipe.toml │ │ ├── regname/ │ │ │ └── recipe.toml │ │ ├── russ/ │ │ │ └── recipe.toml │ │ ├── rust-kanban/ │ │ │ └── recipe.toml │ │ ├── rust-traverse/ │ │ │ └── recipe.toml │ │ ├── syndicationd/ │ │ │ └── recipe.toml │ │ ├── tenere/ │ │ │ └── recipe.toml │ │ ├── terminusdm/ │ │ │ └── recipe.toml │ │ ├── termlaunch/ │ │ │ └── recipe.toml │ │ ├── termscp/ │ │ │ └── recipe.toml │ │ ├── thesaurust/ │ │ │ └── recipe.toml │ │ ├── tooters/ │ │ │ └── recipe.toml │ │ ├── tui-slides/ │ │ │ └── recipe.toml │ │ ├── twitch-tui/ │ │ │ └── recipe.toml │ │ ├── xplr/ │ │ │ └── recipe.toml │ │ └── zenith/ │ │ └── recipe.toml │ ├── vice/ │ │ ├── 01_redox.patch │ │ └── recipe.sh │ ├── video/ │ │ ├── camera/ │ │ │ ├── cosmic-ext-camera/ │ │ │ │ └── recipe.toml │ │ │ ├── tuicam/ │ │ │ │ └── recipe.toml │ │ │ └── webcamoid/ │ │ │ └── recipe.toml │ │ ├── converters/ │ │ │ ├── handbrake-cli/ │ │ │ │ └── recipe.toml │ │ │ └── trv/ │ │ │ └── recipe.toml │ │ ├── editors/ │ │ │ ├── anime-effects/ │ │ │ │ └── recipe.toml │ │ │ ├── blind/ │ │ │ │ └── recipe.toml │ │ │ ├── openshot/ │ │ │ │ └── recipe.toml │ │ │ └── video-trimmer/ │ │ │ └── recipe.toml │ │ └── other/ │ │ ├── alass/ │ │ │ └── recipe.toml │ │ ├── av1an/ │ │ │ └── recipe.toml │ │ ├── avp/ │ │ │ └── recipe.toml │ │ ├── detect-scene-change/ │ │ │ └── recipe.toml │ │ ├── dovi-tool/ │ │ │ └── recipe.toml │ │ ├── gnome-video-effects/ │ │ │ └── recipe.toml │ │ ├── gopro-assembler/ │ │ │ └── recipe.toml │ │ ├── gyroflow/ │ │ │ └── recipe.toml │ │ ├── imdb-rename/ │ │ │ └── recipe.toml │ │ ├── jerry/ │ │ │ └── recipe.toml │ │ ├── lecturecut/ │ │ │ └── recipe.toml │ │ ├── lobster/ │ │ │ └── recipe.toml │ │ ├── pipeline/ │ │ │ └── recipe.toml │ │ ├── smoothie-rs/ │ │ │ └── recipe.toml │ │ ├── streamlib/ │ │ │ └── recipe.toml │ │ ├── sub-batch/ │ │ │ └── recipe.toml │ │ ├── teres/ │ │ │ └── recipe.toml │ │ ├── timelens/ │ │ │ └── recipe.toml │ │ ├── trimmeroni/ │ │ │ └── recipe.toml │ │ ├── vapoursynth/ │ │ │ └── recipe.toml │ │ ├── video4discord/ │ │ │ └── recipe.toml │ │ ├── vidmerger/ │ │ │ └── recipe.toml │ │ └── yt-chanvids/ │ │ └── recipe.toml │ ├── vm/ │ │ ├── cloud-hypervisor/ │ │ │ └── recipe.toml │ │ ├── crosvm/ │ │ │ └── recipe.toml │ │ ├── firecracker/ │ │ │ └── recipe.toml │ │ ├── libguestfs/ │ │ │ └── recipe.toml │ │ ├── libvirt/ │ │ │ └── recipe.toml │ │ ├── qemu/ │ │ │ └── recipe.toml │ │ ├── v86/ │ │ │ └── recipe.toml │ │ └── virtualbox/ │ │ └── recipe.toml │ ├── wayland/ │ │ ├── anvil/ │ │ │ └── recipe.toml │ │ ├── cosmic-app-library/ │ │ │ └── recipe.toml │ │ ├── cosmic-comp/ │ │ │ └── recipe.toml │ │ ├── cosmic-panel/ │ │ │ └── recipe.toml │ │ ├── fht-compositor/ │ │ │ └── recipe.toml │ │ ├── hyprland/ │ │ │ └── recipe.toml │ │ ├── iced-wayland/ │ │ │ └── recipe.toml │ │ ├── libcosmic-wayland/ │ │ │ └── recipe.toml │ │ ├── libwayland/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── niri/ │ │ │ └── recipe.toml │ │ ├── pinnacle/ │ │ │ └── recipe.toml │ │ ├── smallvil/ │ │ │ └── recipe.toml │ │ ├── softbuffer-wayland/ │ │ │ └── recipe.toml │ │ ├── sway/ │ │ │ └── recipe.toml │ │ ├── wayland-protocols/ │ │ │ └── recipe.toml │ │ ├── wayland-rs/ │ │ │ └── recipe.toml │ │ ├── wayland-utils/ │ │ │ └── recipe.toml │ │ ├── waylandpp/ │ │ │ └── recipe.toml │ │ ├── winit-wayland/ │ │ │ └── recipe.toml │ │ ├── wlroots/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ └── xwayland/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── web/ │ │ ├── basilisk/ │ │ │ └── recipe.toml │ │ ├── chromium/ │ │ │ └── recipe.toml │ │ ├── dillo/ │ │ │ └── recipe.toml │ │ ├── dirble/ │ │ │ └── recipe.toml │ │ ├── dodeca/ │ │ │ └── recipe.toml │ │ ├── elinks/ │ │ │ └── recipe.toml │ │ ├── faircamp/ │ │ │ └── recipe.toml │ │ ├── firefox-esr/ │ │ │ ├── mozconfig │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── gosub/ │ │ │ └── recipe.toml │ │ ├── librewolf/ │ │ │ ├── mozconfig │ │ │ └── recipe.toml │ │ ├── marmite/ │ │ │ └── recipe.toml │ │ ├── monolith/ │ │ │ └── recipe.toml │ │ ├── pale-moon/ │ │ │ ├── .mozconfig │ │ │ └── recipe.toml │ │ ├── rustyink/ │ │ │ └── recipe.toml │ │ ├── servo/ │ │ │ ├── .servobuild │ │ │ └── recipe.toml │ │ ├── share-preview/ │ │ │ └── recipe.toml │ │ ├── sitesmith/ │ │ │ └── recipe.toml │ │ ├── spider/ │ │ │ └── recipe.toml │ │ ├── sukr/ │ │ │ └── recipe.toml │ │ ├── surf/ │ │ │ └── recipe.toml │ │ ├── teacat/ │ │ │ └── recipe.toml │ │ ├── tola-ssg/ │ │ │ └── recipe.toml │ │ ├── verso/ │ │ │ └── recipe.toml │ │ ├── vidium/ │ │ │ └── recipe.toml │ │ ├── webkitgtk3/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── webkitgtk4/ │ │ │ └── recipe.toml │ │ └── zen-browser/ │ │ └── recipe.toml │ └── x11/ │ ├── drm-info/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── feh/ │ │ └── recipe.toml │ ├── font-util/ │ │ └── recipe.toml │ ├── i3/ │ │ └── i3/ │ │ └── recipe.toml │ ├── iso-codes/ │ │ └── recipe.toml │ ├── jwm/ │ │ └── recipe.toml │ ├── keybinder3/ │ │ └── recipe.toml │ ├── leftwm/ │ │ └── recipe.toml │ ├── libdrm/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── libfontenc/ │ │ └── recipe.toml │ ├── libglvnd/ │ │ └── recipe.toml │ ├── libice/ │ │ └── recipe.toml │ ├── libsm/ │ │ └── recipe.toml │ ├── libx11/ │ │ └── recipe.toml │ ├── libxau/ │ │ └── recipe.toml │ ├── libxaw/ │ │ └── recipe.toml │ ├── libxcb/ │ │ └── recipe.toml │ ├── libxcomposite/ │ │ └── recipe.toml │ ├── libxcvt/ │ │ └── recipe.toml │ ├── libxdamage/ │ │ └── recipe.toml │ ├── libxdmcp/ │ │ └── recipe.toml │ ├── libxext/ │ │ └── recipe.toml │ ├── libxfixes/ │ │ └── recipe.toml │ ├── libxfont2/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── libxft/ │ │ └── recipe.toml │ ├── libxi/ │ │ └── recipe.toml │ ├── libxinerama/ │ │ └── recipe.toml │ ├── libxkbcommon-x11/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── libxkbfile/ │ │ └── recipe.toml │ ├── libxklavier/ │ │ └── recipe.toml │ ├── libxmu/ │ │ └── recipe.toml │ ├── libxpm/ │ │ └── recipe.toml │ ├── libxrandr/ │ │ └── recipe.toml │ ├── libxrender/ │ │ └── recipe.toml │ ├── libxres/ │ │ └── recipe.toml │ ├── libxscrnsaver/ │ │ └── recipe.toml │ ├── libxshmfence/ │ │ └── recipe.toml │ ├── libxt/ │ │ └── recipe.toml │ ├── libxxf86vm/ │ │ └── recipe.toml │ ├── lxde/ │ │ ├── libfm-extra/ │ │ │ └── recipe.toml │ │ ├── libfm-gtk3/ │ │ │ └── recipe.toml │ │ ├── libmenu-cache/ │ │ │ └── recipe.toml │ │ └── lxpanel/ │ │ └── recipe.toml │ ├── mate/ │ │ ├── caja/ │ │ │ └── recipe.toml │ │ ├── dbus-glib/ │ │ │ └── recipe.toml │ │ ├── libmate-desktop-2/ │ │ │ └── recipe.toml │ │ ├── libmate-menu/ │ │ │ └── recipe.toml │ │ ├── libmatekbd/ │ │ │ └── recipe.toml │ │ ├── libmateweather/ │ │ │ └── recipe.toml │ │ ├── marco/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── mate-control-center/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── mate-icon-theme/ │ │ │ └── recipe.toml │ │ ├── mate-panel/ │ │ │ └── recipe.toml │ │ ├── mate-session-manager/ │ │ │ └── recipe.toml │ │ ├── mate-settings-daemon/ │ │ │ └── recipe.toml │ │ └── mate-terminal/ │ │ └── recipe.toml │ ├── mesa-demos-x11/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── mesa-glu-x11/ │ │ └── recipe.toml │ ├── mesa-x11/ │ │ └── recipe.toml │ ├── openbox/ │ │ └── recipe.toml │ ├── startup-notification/ │ │ └── recipe.toml │ ├── twm/ │ │ └── recipe.toml │ ├── x11proto/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── x11proto-kb/ │ │ └── recipe.toml │ ├── xcb-proto/ │ │ └── recipe.toml │ ├── xcb-util/ │ │ └── recipe.toml │ ├── xcb-util-cursor/ │ │ └── recipe.toml │ ├── xcb-util-image/ │ │ └── recipe.toml │ ├── xcb-util-keysyms/ │ │ └── recipe.toml │ ├── xcb-util-renderutil/ │ │ └── recipe.toml │ ├── xcb-util-wm/ │ │ └── recipe.toml │ ├── xcb-util-xrm/ │ │ └── recipe.toml │ ├── xev/ │ │ └── recipe.toml │ ├── xextproto/ │ │ └── recipe.toml │ ├── xeyes/ │ │ └── recipe.toml │ ├── xfce4/ │ │ ├── garcon/ │ │ │ └── recipe.toml │ │ ├── libxfce4ui/ │ │ │ └── recipe.toml │ │ ├── libxfce4util/ │ │ │ └── recipe.toml │ │ ├── libxfce4windowing/ │ │ │ ├── recipe.toml │ │ │ └── redox.patch │ │ ├── xfce4-panel/ │ │ │ └── recipe.toml │ │ ├── xfconf/ │ │ │ └── recipe.toml │ │ └── xfwm4/ │ │ └── recipe.toml │ ├── xinit/ │ │ └── recipe.toml │ ├── xkbcomp/ │ │ └── recipe.toml │ ├── xkbutils/ │ │ └── recipe.toml │ ├── xkeyboard-config/ │ │ └── recipe.toml │ ├── xserver-xorg/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── xserver-xorg-video-orbital/ │ │ ├── recipe.toml │ │ └── redox.patch │ ├── xterm/ │ │ ├── recipe.toml │ │ └── redox.patch │ └── xtrans/ │ └── recipe.toml ├── redox.ipxe ├── rust-toolchain.toml ├── scripts/ │ ├── backtrace.sh │ ├── cargo-update.sh │ ├── category.sh │ ├── changelog.sh │ ├── check-ci-config.sh │ ├── commit-hash.sh │ ├── dual-boot.sh │ ├── executables.sh │ ├── find-recipe.sh │ ├── include-recipes.sh │ ├── mount-redoxfs.sh │ ├── network-boot.sh │ ├── pkg-size.sh │ ├── print-recipe.sh │ ├── recipe-match.sh │ ├── recipe-path.sh │ ├── show-package.sh │ └── ventoy.sh └── src/ ├── bin/ │ ├── cookbook_redoxer.rs │ ├── repo.rs │ └── repo_builder.rs ├── blake3.rs ├── config.rs ├── cook/ │ ├── cook_build.rs │ ├── fetch.rs │ ├── fetch_repo.rs │ ├── fs.rs │ ├── ident.rs │ ├── package.rs │ ├── pty.rs │ ├── script.rs │ └── tree.rs ├── cook.rs ├── lib.rs ├── progress_bar.rs ├── recipe.rs ├── web/ │ ├── html.rs │ └── style.css └── web.rs ================================================ FILE CONTENTS ================================================ ================================================ FILE: .cargo/config.toml ================================================ [target.aarch64-unknown-redox] linker = "aarch64-unknown-redox-gcc" rustflags = [] [target.i586-unknown-redox] linker = "i586-unknown-redox-gcc" rustflags = [] [target.i686-unknown-redox] linker = "i686-unknown-redox-gcc" rustflags = [] [target.x86_64-unknown-redox] linker = "x86_64-unknown-redox-gcc" rustflags = [] [target.riscv64gc-unknown-redox] linker = "riscv64-unknown-redox-gcc" rustflags = [] [env] CFLAGS_riscv64gc_unknown_redox="-march=rv64gc -mabi=lp64d" ================================================ FILE: .gitignore ================================================ /build/ /prefix/ .config **/my_* # Local settings folder for Jetbrains products (RustRover, IntelliJ, CLion) .idea/ # Local settings folder for Visual Studio Professional .vs/ # Local settings folder for vscode .vscode/ # Local settings folder for the devcontainer extension that most IDEs support. .devcontainer/ # Cookbook /repo /web /cookbook.toml source source.tmp source-new source-old source.tar source.tar.tmp target wget-log ================================================ FILE: .gitlab/issue_templates/Issue_template.md ================================================ - [ ] I agree that I have searched opened and closed issues to prevent duplicates. -------------------- ## Description Replace me ## Environment info - Redox OS Release: 0.0.0 Remove me - Operating system: Replace me - `uname -a`: `Replace me` - `rustc -V`: `Replace me` - `git rev-parse HEAD`: `Replace me` - Replace me: Replace me ## Steps to reproduce 1. Replace me 2. Replace me 3. ... ## Behavior - **Expected behavior**: Replace me - **Actual behavior**: Replace me ``` Replace me ``` - **Proposed solution**: Replace me ## Optional references Related to: - #0000 Remove me - Replace me - ... Blocked by: - #0000 Remove me - ... ## Optional extras Replace me ================================================ FILE: .gitlab/merge_request_templates/Merge_request_template.md ================================================ **Problem**: [describe the problem you try to solve with this PR.] **Solution**: [describe carefully what you change by this PR.] **Changes introduced by this pull request**: - [...] - [...] - [...] **Drawbacks**: [if any, describe the drawbacks of this pull request.] **TODOs**: [what is not done yet.] **Fixes**: [what issues this fixes.] **State**: [the state of this PR, e.g. WIP, ready, etc.] **Blocking/related**: [issues or PRs blocking or being related to this issue.] **Other**: [optional: for other relevant information that should be known or cannot be described in the other fields.] ------ _The above template is not necessary for smaller PRs._ ================================================ FILE: .gitlab-ci.yml ================================================ # The GitLab Continuous Integration configuration variables: GIT_STRATEGY: "clone" stages: - lint - test workflow: rules: - if: '$CI_COMMIT_BRANCH == "master" && $CI_PROJECT_NAMESPACE == "redox-os"' - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"' fmt: image: "rust:trixie" stage: lint script: - rustup component add rustfmt - cargo fmt -- --check cargo-test: image: "rust:trixie" stage: lint script: - cargo test --locked img: image: "redoxos/redox-base" stage: test script: - | export PATH="$HOME/.cargo/bin:$PATH" && (curl "https://sh.rustup.rs" -sSf | sh -s -- -y --default-toolchain stable --profile minimal ) && cargo install cbindgen && PODMAN_BUILD=0 SKIP_CHECK_TOOLS=1 REPO_BINARY=1 FSTOOLS_NO_MOUNT=1 COOKBOOK_VERBOSE=false make ci-img IMG_TAG=$CI_COMMIT_REF_NAME pkg: image: "rust:trixie" stage: test script: - | export PATH="$HOME/.cargo/bin:$PATH" PODMAN_BUILD=0 && make CONFIG_NAME=ci SKIP_CHECK_TOOLS=1 repo-tree ARCH=x86_64 && make CONFIG_NAME=ci SKIP_CHECK_TOOLS=1 repo-tree ARCH=i586 && make CONFIG_NAME=ci SKIP_CHECK_TOOLS=1 repo-tree ARCH=aarch64 && make CONFIG_NAME=ci SKIP_CHECK_TOOLS=1 repo-tree ARCH=riscv64gc ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing to Redox **Thank you for your interest in contributing to Redox!** This document will outline the basics of where to start if you wish to contribute to the project. There are many ways to help us out and and we appreciate all of them. We look forward to **your contribution!** **Please read this document until the end** ## Code Of Conduct We follow the [Rust Code Of Conduct](https://www.rust-lang.org/policies/code-of-conduct). ## License In general, your contributions to Redox are governed by the [MIT License](https://en.wikipedia.org/wiki/MIT_License). Each project repository has a `LICENSE` file that provides the license terms for that project. Please review the `LICENSE` file for the project you are contributing to. [This](https://doc.redox-os.org/book/philosophy.html) page we explain why we use the MIT license. ## Contribution Terms When making a contribution you agree to the following terms: - I understand these changes in full and will be able to respond to review comments. - I have read the [Developer Certificate of Origin](https://developercertificate.org/) and certify my contribution under its conditions. ## AI Policy Redox OS does not accept contributions generated by LLMs ([Large Language Models](https://en.wikipedia.org/wiki/Large_language_model)), sometimes also referred to as "AI". This policy is not open to discussion, any content submitted that is clearly labelled as LLM-generated (including issues, merge requests, and merge request descriptions) will be immediately closed, and any attempt to bypass this policy will result in a ban from the project. ## Chat You can join in our chat platforms to discuss development, issues or ask questions. ### [Matrix](https://matrix.to/#/#redox-join:matrix.org) Matrix is the official way to talk with Redox OS team and community (these rooms are English-only, we don't accept other languages because we don't understand them). Matrix has several different clients. [Element](https://element.io/) is a commonly used choice, it works on web browsers, Linux, MacOSX, Windows, Android and iOS. If you have problems with Element, try [Fractal](https://gitlab.gnome.org/World/fractal). - Join the [Join Requests](https://matrix.to/#/#redox-join:matrix.org) room and send a message requesting for an invite to the Redox Matrix space (the purpose of this is to avoid spam and bots). - #redox-join:matrix.org (Use this Matrix room address if you don't want to use the external Matrix link) (We recommend that you leave the "Join Requests" room after your entry on Redox space) If you want to have a big discussion in our rooms, you should use a Element thread, it's more organized and easy to keep track if more discussions happen on the same room. You cand find more information on the [Chat](https://doc.redox-os.org/book/chat.html) page. ### [Discord](https://discord.gg/JfggvrHGDY) We have a Discord server as an alternative for Matrix, open the #join-requests channel and send a message requesting to be a member (the purpose of this is to avoid spam and bots) The Matrix messages are sent to Discord and vice-versa using a bot, but sometimes some Discord messages aren't sent to Matrix (if this happens to you join in our Matrix space above) ## [GitLab](https://gitlab.redox-os.org/redox-os/redox) A slightly more formal way of communication with fellow Redox developers, but a little less quick and convenient like the chat. Submit an issue when you run into problems compiling or testing. Issues can also be used if you would like to discuss a certain topic: be it features, code style, code inconsistencies, minor changes and fixes, etc. If you want to create an account, read the [Signing in to GitLab](https://doc.redox-os.org/book/signing-in-to-gitlab.html) page. Once you create an issue don't forget to post the link on the Dev or Support rooms of the chat, because the GitLab email notifications have distractions (service messages or spam) and most developers don't left their GitLab pages open to receive desktop notifications from the web browser (which require a custom setting to receive issue notifications). By doing this you help us to pay attention to your issues and avoid them to be accidentally forgotten. If you have ready MRs (merge requests) you must send the links in the [MRs](https://matrix.to/#/#redox-mrs:matrix.org) room. To join this room, you will need to request an invite in the [Join Requests](https://matrix.to/#/#redox-join:matrix.org) room. By sending a message in the room, your MR will not be forgotten or accumulate conflicts. ## Best Practices and Guidelines You can read the best practices and guidelines on the [Best practices and guidelines](https://doc.redox-os.org/book/best-practices.html) chapter. ## Development Recommendations and Tips - Copy-paste prevent and reduce typos - Read the entire [Build System Reference](https://doc.redox-os.org/book/build-system-reference.html) and [Developer FAQ](https://doc.redox-os.org/book/developer-faq.html) pages - Make sure your build system is up-to-date, read the [Update The Build System](https://doc.redox-os.org/book/build-system-reference.html#update-the-build-system) section if in doubt. - If you want to make local changes in recipe sources it's recommended to automatic recipe source update, read [this](https://doc.redox-os.org/book/configuration-settings.html#local-recipe-changes) section to learn how to this for one or multiple recipes and [this](https://doc.redox-os.org/book/configuration-settings.html#cookbook-offline-mode) section for all recipes. - If you want to make changes to system components, drivers or RedoxFS you need to manually update initfs, read [this](https://doc.redox-os.org/book/coding-and-building.html#how-to-update-initfs) section to learn how to do that. - If some program can't build or work, something can be missing/hiding on [relibc](https://gitlab.redox-os.org/redox-os/relibc), like a POSIX/Linux function or bug. - If you have some error on QEMU remember to test different settings or verify your operating system (Pop_OS!, Ubuntu, Debian and Fedora are the recommend Linux distributions to do testing/development for Redox). - Remember to log all errors, you can use this command as example: ```sh your-command 2>&1 | tee file-name.log ``` - If you have a problem that seems to not have a solution, think on simple/stupid things. Sometimes you are very confident on your method and forget obvious things (very common). - If you want a quick review of your Merge Request, make it small. - If your big Merge Request is taking too long to be reviewed and merged try to split it in small MRs. But make sure it don't break anything, if this method break your changes, don't shrink. ## Style Guidelines ### Rust Since **Rust** is a relatively small and new language compared to others like C and C++, there's really only one standard. Just follow the official Rust standards for formatting, and maybe run `rustfmt` on your changes, until we setup the CI system to do it automatically. ### Git Please follow our [Git style](https://doc.redox-os.org/book/creating-proper-pull-requests.html) for pull requests. ## GitLab ### Identity Once your GitLab account is created, you should add your Matrix or Discord username (the name after the `@` symbol) on the "About" section of your profile, that way we recognize you properly. ### Issues We use issues to organize and track our current and pending work, to know how to create issues on the Redox GitLab read the [Filing Issues](https://doc.redox-os.org/book/filing-issues.html) page. Once you create an issue don't forget to post the link on the Dev or Support rooms of the chat, because the GitLab email notifications have distractions (service messages or spam) and most developers don't left their GitLab pages open to receive desktop notifications from the web browser (which require a custom setting to receive issue notifications). By doing this you help us to pay attention to your issues and avoid them to be accidentally forgotten. You can see all issues on [this](https://gitlab.redox-os.org/groups/redox-os/-/issues) link. ### Pull Requests Please follow [our process](https://doc.redox-os.org/book/creating-proper-pull-requests.html) for creating proper pull requests. ## Important Places to Contribute Before starting to contribute, we recommend reading the [General FAQ](https://www.redox-os.org/faq/) and the [Redox Book](https://doc.redox-os.org/book/). You can contribute to the Redox documentation and code on the following repositories (non-exhaustive, easiest-to-hardest order): - [Website](https://gitlab.redox-os.org/redox-os/website) - [Book](https://gitlab.redox-os.org/redox-os/book) - High-level documentation - [Build System Configuration](https://gitlab.redox-os.org/redox-os/redox) - Our main repository - [Orbital](https://gitlab.redox-os.org/redox-os/orbital) - Display Server and Window Manager - [pkgutils](https://gitlab.redox-os.org/redox-os/pkgutils) - Package Manager - [acid](https://gitlab.redox-os.org/redox-os/acid) - Redox Test Suite - [relibc](https://gitlab.redox-os.org/redox-os/relibc) - Redox C Library - [libredox](https://gitlab.redox-os.org/redox-os/libredox) - Redox System Library - [Bootloader](https://gitlab.redox-os.org/redox-os/bootloader) - [RedoxFS](https://gitlab.redox-os.org/redox-os/redoxfs) - Default filesystem - [Base](https://gitlab.redox-os.org/redox-os/base) - Essential system components and drivers - [Kernel](https://gitlab.redox-os.org/redox-os/kernel) To see all Redox repositories open the [redox-os group](https://gitlab.redox-os.org/redox-os). ### Skill Levels If you don't know programming: - Test the [daily images](https://static.redox-os.org/img/) on your computer and add the report on the [Hardware Compatibility](https://gitlab.redox-os.org/redox-os/redox/-/blob/master/HARDWARE.md) list - Monitor and warn developers if the [daily images](https://static.redox-os.org/img/) are outdated - Use/test Redox and create issues for bugs or needed features (please check for duplicates first) - Fix and write documentation - Find or fix typos in configuration If you don't know how to code in Rust but know other programming languages: - Web development on the website (we only accept minimal JavaScript code to preserve performance) - Write unit tests (may require minimal knowledge of Rust) - Port C/C++ programs to Redox (read the `TODO`s of the recipes on the [WIP category](https://gitlab.redox-os.org/redox-os/redox/-/tree/master/recipes/wip)) - Port programs to Redox If you know how to code in Rust but don't know operating system development: - See the [easy](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=easy) issues - See the "[good first issue](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=good%20first%20issue)" issues - See the [help wanted](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=help%20wanted) issues (it's worth noting the skill level varies between projects, but a large subset of these should be approachable by contributors familiar with regular Rust/Unix application programming) - Improve the package manager, or build system tooling like `redoxer` or `installer` - Improve the [Ion](https://gitlab.redox-os.org/redox-os/ion) shell, or other high-level or mid-level projects - Port Rust programs (also look for issues with the `port` label) - Improve application compatibility in relibc by e.g. implementing missing POSIX/Linux functions If you know how to code in Rust, and have experience with systems software/OS development: - Familiarize yourself with the repository layout, code, and build system - Update old code to remove warnings - Search for `TODO`, `FIXME`, `BUG`, `UNOPTIMIZED`, `REWRITEME`, `DOCME`, and `PRETTYFYME` and fix the code you find - Look in general for issues with the following labels: `critical`, `help wanted`, `feature`, `enhancement`, `bug` or `port` - Improve internal libraries and abstractions, e.g. `libredox`, `redox-scheme`, `redox-event` etc. - Help upstream Redox-specific functionality to the Rust ecosystem - Improve Redox's automated testing suite and continuous integration testing processes - Improve, profile, and optimize code, especially in the kernel, filesystem, and network stack - Improve or write device drivers For those who want to contribute to the Redox GUI, our GUI strategy has changed. - We are improving the [Orbital](https://gitlab.redox-os.org/redox-os/orbital) display server and window manager, you can read more about it on [this tracking issue](https://gitlab.redox-os.org/redox-os/redox/-/issues/1430). - OrbTk is in maintenance mode, and its developers have moved to other projects such as the ones below. There is currently no Redox-specific GUI development underway. ## Priorities You can use the following GitLab issue label filters to know our development priorities on the moment: - [Critical](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=critical) - [High-priority](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=high-priority) - [Medium-priority](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=medium-priority) - [Low-priority](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=low-priority) ## Roadmap We use tracking issues for the goals in our roadmap, you can see them in the filter below: - [Tracking issues](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=tracking%20issue) ## RFCs For more significant changes that affect Redox's architecture, we use the [Request for Comments](https://gitlab.redox-os.org/redox-os/rfcs) repository. ## Build System To download the build system use the following commands: (You need to have [curl](https://curl.se/) installed on your system) ```sh curl -sf https://gitlab.redox-os.org/redox-os/redox/raw/master/podman_bootstrap.sh -o podman_bootstrap.sh ``` ```sh time bash -e podman_bootstrap.sh ``` To start the compilation of the default recipes run the command below: ```sh make all ``` In case your operating system does not use SELinux, you must set the `USE_SELINUX` to `0` when calling `make all`, otherwise you might experience errors: ```sh make all USE_SELINUX=0 ``` You can find the build system organization and commands on the [Build System](https://doc.redox-os.org/book/build-system-reference.html) page. ## Developer FAQ You can see the most common questions and problems on the [Developer FAQ](https://doc.redox-os.org/book/developer-faq.html) page. ## Porting Software You can read how to use the Cookbook recipe system to port applications on the [Application Porting](https://doc.redox-os.org/book/porting-applications.html) page. **Always verify if a recipe for your program or library already exist before porting to not break the build system with a recipe duplication or waste time.** ## Libraries and APIs You can read the [Libraries and APIs](https://doc.redox-os.org/book/libraries-apis.html) page to learn about the libraries and APIs used in Redox. ## Visual Studio Code (VS Code) Configuration To learn how to configure your VS Code to do Redox development please read the information below the [Visual Studio Code Configuration](https://doc.redox-os.org/book/coding-and-building.html#visual-studio-code-configuration) section. ## References We maintain a list of wikis, articles and videos to learn Rust, OS development and computer science on the [References](https://doc.redox-os.org/book/references.html) page. If you are skilled/experienced there's still a possibility that they could improve your knowledge in some way. ## Other Ways to Contribute If you aren't good on coding, but you still want to help keep the project going, you can contribute and support in a variety of ways! We'll try to find a way to use anything you have to offer. ### Design If you're a good designer, whether it's 2D graphics, 3D graphics, interfaces, web design, you can help. We need logos, UI design, UI skins, app icons, desktop backgrounds, etc. - [Redox backgrounds](https://gitlab.redox-os.org/redox-os/backgrounds) - You can send your wallpapers on this repository. - [Redox assets](https://gitlab.redox-os.org/redox-os/assets) - You can send your logos, icons and themes on this repository. If you have questions about the graphic design, ask us on the [Chat](https://doc.redox-os.org/book/chat.html). ### Donate to Redox If you are interested in donating to the Redox OS Nonprofit, you can find instructions on the [Donate](https://www.redox-os.org/donate/) page. ================================================ FILE: Cargo.toml ================================================ [package] name = "redox_cookbook" version = "0.1.0" authors = ["Jeremy Soller "] edition = "2024" default-run = "repo" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [[bin]] name = "cookbook_redoxer" path = "src/bin/cookbook_redoxer.rs" [[bin]] name = "repo" path = "src/bin/repo.rs" [[bin]] name = "repo_builder" path = "src/bin/repo_builder.rs" [lib] name = "cookbook" path = "src/lib.rs" doctest = false [features] #TODO: Actually make without tui feature works default = ["tui"] tui = ["ratatui", "ansi-to-tui", "strip-ansi-escapes"] [dependencies] anyhow = "1" blake3 = "1" globset = "0.4" libc = "0.2" ignore = "0.4" object = { version = "0.38", features = ["build_core"] } pbr = "1.0.2" pkgar = { git = "https://gitlab.redox-os.org/redox-os/pkgar.git" } pkgar-core = { git = "https://gitlab.redox-os.org/redox-os/pkgar.git" } pkgar-keys = { git = "https://gitlab.redox-os.org/redox-os/pkgar.git" } redox-pkg = { git = "https://gitlab.redox-os.org/redox-os/pkgutils.git", default-features = false } redox_installer = { git = "https://gitlab.redox-os.org/redox-os/installer.git", default-features = false } redoxer = { git = "https://gitlab.redox-os.org/redox-os/redoxer.git", default-features = false } regex = "1.11" serde = { version = "=1.0.197", features = ["derive"] } termion = "4" toml = "0.8" walkdir = "2.3.1" ansi-to-tui = { version = "8", optional = true } strip-ansi-escapes = { version = "0.2.1", optional = true } [dependencies.ratatui] version = "0.30" default-features = false features = ["termion"] optional = true ================================================ FILE: HARDWARE.md ================================================ # Hardware Compatibility This document tracks the current hardware compatibility of Redox OS. - [Why are hardware reports needed?](#why-are-hardware-reports-needed) - [What if my computer is customized?](#what-if-my-computer-is-customized) - [Status](#status) - [General](#general) - [Contribute to this document](#contribute-to-this-document) - [Template](#template) - [Table row ordering](#table-row-ordering) - [Recommended](#recommended) - [Booting](#booting) - [Broken](#broken) ## Why are hardware reports needed? Each computer model has different hardware interfaces, firmware implementations, and devices, which can cause the following problems: - Boot bugs - Lack of device support - Performance degradation These reports helps us to fix the problems above, your report may help to fix many computers affected by the same bugs or missing drivers. ## What if my computer is customized? If your desktop is customized (common) you should use the "Custom" word on the "Vendor" category and insert the motherboard and CPU vendor/model in the "Model" category. A customized laptop should only be reported if you replaced the original CPU, report the CPU vendor and model in the "Model" category. We also recommend to add your `pciutils` log on [this](https://gitlab.redox-os.org/redox-os/base/-/blob/main/drivers/COMMUNITY-HW.md) document to help us with probable porting. ## Status - **Recommended:** The operating system boots with video, sound, PS/2 or USB input, Ethernet, terminal and Orbital working. - **Booting:** The operating system boots with some issues or lacking hardware support (write the issues and what supported hardware is not working in the "Report" section). - **Broken:** The boot loader don't work or can't bootstrap the operating system. ## General This section contain limitations that apply to any status. - ACPI support is incomplete (some things are hardcoded on the kernel to work) - Wi-Fi and Bluetooth aren't supported yet - AMD, NVIDIA, ARM, and PowerVR GPUs aren't supported yet (only BIOS VESA and UEFI GOP) - I2C devices aren't supported yet (PS/2 or USB devices should be used) - USB support varies on each device model because some USB devices require specific drivers (use input devices with standardized controls for more compatibility) - Automatic operating system discovery is not implemented in the boot loader yet (remember this before installing Redox) ## Contribute to this document To contribute to this document, learn how to create your GitLab account, follow the project-wide contribution guidelines and suggestions, please refer to the [CONTRIBUTING.md](./CONTRIBUTING.md) document. ### Template You will use this template to insert your computer on the table. ``` | | | | | | | | | ``` The Redox image date should use the [ISO format](https://en.wikipedia.org/wiki/ISO_8601) ### Table row ordering New reports should use an independent alphabetical order in the "Vendor" and "Model" table rows, for example: ``` | ASUS | ROG g55vw | | ASUS | X554L | | System76 | Galago Pro (galp5) | | System76 | Lemur Pro (lemp9) | ``` A comes before S, R comes before X, G comes before L Each "Vendor" has its own alphabetical order in "Model", independent from models from other vendor. ## Recommended | **Vendor** | **Model** | **Redox Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** | |------------|-----------|-------------------|----------------|-------------|----------------------|--------------------------|------------| | Lenovo | IdeaPad Y510P | 0.8.0 | 2022-11-11 | desktop | x86-64 | BIOS, UEFI | Boots to Orbital | | System76 | Galago Pro (galp5) | 0.8.0 | 2022-11-11 | desktop | x86-64 | UEFI | Boots to Orbital | | System76 | Lemur Pro (lemp9) | 0.8.0 | 2022-11-11 | desktop | x86-64 | UEFI | Boots to Orbital | ## Booting | **Vendor** | **Model** | **Redox Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** | |------------|-----------|-------------------|----------------|-------------|----------------------|--------------------------|------------| | ASUS | Eee PC 900 | 0.8.0 | 2022-11-11 | desktop | i686 | BIOS | Boots to Orbital, No ethernet driver, Correct video mode not offered (firmware issue) | | ASUS | PRIME B350M-E (custom) | 0.9.0 | 2024-09-20 | desktop | x86-64 | UEFI | Partial support for the PS/2 keyboard, PS/2 mouse is broken | | ASUS | ROG g55vw | 0.8.0 | 2023-11-11 | desktop | x86-64 | BIOS | Boots to Orbital, UEFI panic in SETUP | | ASUS | X554L | 0.8.0 | 2022-11-11 | desktop | x86-64 | BIOS | Boots to Orbital, No audio, HDA driver cannot find output pins | | ASUS | Vivobook 15 OLED (M1503Q) | 0.9.0 | 2025-08-04 | desktop | x86-64 | UEFI | Boots to Orbital, touchpad and usb do not work, cannot connect to the internet, right maximum display resolution 2880x1620 | | Dell | XPS 13 (9350) | 0.8.0 | 2022-11-11 | desktop | i686 | BIOS | Boots to Orbital, NVMe driver livelocks | | Dell | XPS 13 (9350) | 0.8.0 | 2022-11-11 | desktop | x86-64 | BIOS, UEFI | Boots to Orbital, NVMe driver livelocks | | HP | Dev One | 0.8.0 | 2022-11-11 | desktop | x86-64 | UEFI | Boots to Orbital, No touchpad support, requires I2C HID | | HP | EliteBook Folio 9480M | 0.9.0 | 2025-11-04 | desktop | x86-64 | UEFI | Boots to Orbital, touchpad and usb work, cannot connect to the Internet, install failed, right maximum display resolution 1600x900 | Lenovo | ThinkPad Yoga 260 Laptop - Type 20FE | 0.9.0 | 2024-09-07 | demo | x86-64 | UEFI | Boots to Orbital, No audio | | Lenovo | Yoga S730-13IWL | 0.9.0 | 2024-11-09 | desktop | x86-64 | UEFI | Boots to Orbital, No trackpad or USB mouse input support | | Raspberry Pi | 3 Model B+ | 0.8.0 | Unknown | server | ARM64 | U-Boot | Boots to UART serial console (pl011) | | Samsung | Series 3 (NP350V5C) | 0.9.0 | 2025-08-04 | desktop | x86-64 | UEFI | Boots to Orbital, touchpad works, USB does not work, can connect to the Internet through LAN. Wrong maximum display resolution 1024x768 | | System76 | Oryx Pro (oryp10) | 0.8.0 | 2022-11-11 | desktop | x86-64 | UEFI | Boots to Orbital, No touchpad support, though it should be working | | System76 | Pangolin (pang12) | 0.8.0 | 2022-11-11 | desktop | x86-64 | UEFI | Boots to Orbital, No touchpad support, requires I2C HID | | Toshiba | Satellite L500 | 0.8.0 | 2022-11-11 | desktop | x86-64 | BIOS | Boots to Orbital, No Ethernet driver, Correct video mode not offered (firmware issue) | ## Broken | **Vendor** | **Model** | **Redox Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** | |------------|-----------|-------------------|----------------|-------------|----------------------|--------------------------|------------| | ASUS | PN41 | 0.8.0 | 2024-05-30 | server | x86-64 | Unknown | Aborts after panic in xhcid | | BEELINK | U59 | 0.8.0 | 2024-05-30 | server | x86-64 | Unknown | Aborts after panic in xhcid | | Framework | Laptop 16 (AMD Ryzen 7040 Series) | 0.9.0 | 2024-09-07 | server, demo | x86-64 | UEFI | Black screen and unresponsive after the bootloader and resolution selection | | HP | Compaq nc6120 | 0.9.0 | 2024-11-08 | desktop, server | i686 | BIOS | Unloads into memory at a rate slower than 1MB/s after selecting resolution. When unloading is complete the logger initializes and crashes after kernel::acpi, some information about APIC is printed. Boot logs do not progress after this point. | | HP | EliteBook 2570p | 0.8.0 | 2022-11-23 | demo | x86-64 | BIOS (CSM mode?) | Gets to resolution selection, Fails assert in `src/os/bios/mod.rs:77` after selecting resolution | | Lenovo | G570 | 0.8.0 | 2022-11-11 | desktop | x86-64 | BIOS | Bootloader panics in `alloc_zeroed_page_aligned`, Correct video mode not offered (firmware issue) | | Lenovo | IdeaPad Y510P | 0.8.0 | 2022-11-11 | desktop | i686 | BIOS | Panics on `phys_to_virt overflow`, probably having invalid mappings for 32-bit | | Lenovo | ThinkCentre M83 | 0.9.0 | 2025-11-09 | desktop | x86_64 | UEFI | Presents user with a set of display resolution options. After user selects an option, it takes a long time for the "live" thing to load all the way to 647MiB. Once it does reach 647MiB, however, it dumps a bunch of logs onto the screen. Those logs also happen to be offset so that the leftmost portion of all text "exists" past the leftmost part of the screen, resulting in the logs being only partially visible. The logs appear to include (among other things) 1. "thread 'main' (1) panicked at acpid/src/acpi.rs:256:68: Called `Result::unwrap()` on an `Err` value: Aml(NoCurrentOp)"; 2. "thread 'main' (1) panicked at acpid/src/main.rs:147:39:acpid: failed to daemonize: Error `I/O error` 5"; 3. "... [@hwd:40 ERROR] failed to probe with error No such device (os error 19)..."; etc. | | Panasonic | Toughbook CF-18 | 0.8.0 | 2022-11-11 | desktop | i686 | BIOS | Hangs after PIT initialization | | Toshiba | Satellite L500 | 0.8.0 | 2022-11-11 | desktop | i686 | BIOS | Correct video mode not offered (firmware issue), Panics on `phys_to_virt overflow`, probably having invalid mappings for 32-bit | | XMG (Schenker) | Apex 17 (M21) | 0.9.0 | 2024-09-30 | demo, server | x86-64 | UEFI | After selecting resolution, (release) repeats `...::interrupt::irq::ERROR -- Local apic internal error: ESR=0x40` a few times before it freezes; (daily) really slowly prints statements from `...::rmm::INFO` before it abruptly aborts | ================================================ FILE: LICENSE ================================================ Copyright (c) 2016 Redox OS Developers MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: Makefile ================================================ # This file contains the build system commands configuration # and environment variables include mk/config.mk # Build system dependencies include mk/depends.mk all: $(BUILD)/harddrive.img live: -$(FUMOUNT) $(BUILD)/filesystem/ || true -$(FUMOUNT) /tmp/redox_installer/ || true rm -f $(BUILD)/redox-live.iso $(MAKE) $(BUILD)/redox-live.iso popsicle: $(BUILD)/redox-live.iso popsicle-gtk $(BUILD)/redox-live.iso image: -$(FUMOUNT) $(BUILD)/filesystem/ || true -$(FUMOUNT) /tmp/redox_installer/ || true rm -f $(BUILD)/harddrive.img $(BUILD)/redox-live.iso $(MAKE) all rebuild: -$(FUMOUNT) $(BUILD)/filesystem/ || true -$(FUMOUNT) /tmp/redox_installer/ || true rm -rf $(BUILD)/repo.tag $(BUILD)/harddrive.img $(BUILD)/redox-live.iso $(MAKE) all # To tell that it's not safe # to execute the cookbook binary NOT_ON_PODMAN?=0 clean: ifeq ($(PODMAN_BUILD),1) ifneq ("$(wildcard $(CONTAINER_TAG))","") $(PODMAN_RUN) make $@ else $(info will not run cookbook clean as container is not built) $(MAKE) clean PODMAN_BUILD=0 NOT_ON_PODMAN=1 SKIP_CHECK_TOOLS=1 endif # CONTAINER_TAG else ifneq ($(NOT_ON_PODMAN),1) $(MAKE) repo_clean -$(FUMOUNT) $(BUILD)/filesystem/ || true -$(FUMOUNT) /tmp/redox_installer/ || true endif # NOT_ON_PODMAN rm -rf repo rm -rf $(BUILD) $(PREFIX) $(MAKE) fstools_clean endif # PODMAN_BUILD distclean: ifeq ($(PODMAN_BUILD),1) ifneq ("$(wildcard $(CONTAINER_TAG))","") $(PODMAN_RUN) make $@ else $(info will not run cookbook unfetch as container is not built) $(MAKE) distclean PODMAN_BUILD=0 NOT_ON_PODMAN=1 SKIP_CHECK_TOOLS=1 endif # CONTAINER_TAG else ifneq ($(NOT_ON_PODMAN),1) $(MAKE) fetch_clean endif # NOT_ON_PODMAN $(MAKE) clean NOT_ON_PODMAN=1 endif # PODMAN_BUILD pull: git pull rm -f $(FSTOOLS_TAG) repo: $(BUILD)/repo.tag repo_clean: c.--all fetch_clean: u.--all # Podman build recipes and vars include mk/podman.mk # Disk Imaging and Cookbook tools include mk/fstools.mk # Cross compiler recipes include mk/prefix.mk # Repository maintenance include mk/repo.mk # Disk images include mk/disk.mk # Emulation recipes include mk/qemu.mk include mk/virtualbox.mk # CI include mk/ci.mk env: prefix FORCE $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else export PATH="$(PREFIX_PATH):$$PATH" && \ bash endif setenv: FORCE @echo export ARCH='$(ARCH)' @echo export BOARD='$(BOARD)' @echo export CONFIG_NAME='$(CONFIG_NAME)' @echo BUILD='$(BUILD)' export RUST_GDB=gdb-multiarch # Necessary when debugging for another architecture than the host GDB_KERNEL_FILE=recipes/core/kernel/target/$(TARGET)/build/kernel.sym gdb: FORCE rust-gdb $(GDB_KERNEL_FILE) --eval-command="target remote :1234" # This target allows debugging a userspace application without requiring gdbserver running inside # the VM. Because gdb doesn't know when the userspace application is scheduled by the kernel and as # it stops the entire VM rather than just the userspace application that the user wants to debug, # connecting to a gdbserver running inside the VM is highly encouraged when possible. This target # should only be used when the application to debug runs early during boot before the network stack # has started or you need to debug the interaction between the application and the kernel. # tl;dr: DO NOT USE THIS TARGET UNLESS YOU HAVE TO gdb-userspace: FORCE rust-gdb $(GDB_APP_FILE) --eval-command="add-symbol-file $(GDB_KERNEL_FILE)" --eval-command="target remote :1234" # An empty target FORCE: # Wireshark wireshark: FORCE wireshark $(BUILD)/network.pcap ================================================ FILE: README.md ================================================

Redox

This repository is the **Build System** for Redox OS. Redox is under active development by a vibrant community, you can see the key links below: - [The **main website** for Redox OS](https://www.redox-os.org). - [The Redox Book](https://doc.redox-os.org/book/) and [Build Instructions](https://doc.redox-os.org/book/podman-build.html). - [Redox Chat and Support](https://matrix.to/#/#redox-join:matrix.org). - [Patreon](https://www.patreon.com/redox_os), [Donate](https://redox-os.org/donate/) and [Merch](https://redox-os.creator-spring.com/). - Scroll down for a list of key Redox components and their repositories. [Redox](https://www.redox-os.org) is an open-source operating system written in Rust, a language with focus on safety, efficiency and high performance. Redox uses a microkernel architecture, and aims to be reliable, secure, usable, correct, and free. Redox is inspired by previous operating systems, such as seL4, MINIX, Plan 9, Linux and BSD. Redox _is not_ just a kernel, it's a **full-featured operating system**, providing components (file system, display server, core utilities, etc.) that together make up a functional and convenient operating system. Redox uses the COSMIC desktop apps, and provides source code compatibility with many Rust, Linux and BSD programs. [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) ## More Links - [Book](https://doc.redox-os.org/book/) - [Contribute](CONTRIBUTING.md) - [Hardware Compatibility](https://doc.redox-os.org/book/hardware-support.html) - Run Redox in a [Virtual Machine](https://doc.redox-os.org/book/running-vm.html) or on [Real Hardware](https://doc.redox-os.org/book/real-hardware.html) - [Trying Out Redox](https://doc.redox-os.org/book/trying-out-redox.html) - [Building Redox](https://doc.redox-os.org/book/podman-build.html) - [Build System Documentation](https://doc.redox-os.org/book/build-system-reference.html) - [Developer FAQ](https://doc.redox-os.org/book/developer-faq.html) - [Chat/Discussions/Help](https://doc.redox-os.org/book/chat.html) ## Ecosystem Some of the key repositories on the Redox GitLab: | Essential Repositories | Maintainer |-------------------------------------------------------------------------------------------------------------|--------------------------- | [Kernel](https://gitlab.redox-os.org/redox-os/kernel) | **@jackpot51** | [Base (essential system components and drivers)](https://gitlab.redox-os.org/redox-os/base) | **@jackpot51** | [RedoxFS (default filesystem)](https://gitlab.redox-os.org/redox-os/redoxfs) | **@jackpot51** | [relibc (C POSIX library written in Rust)](https://gitlab.redox-os.org/redox-os/relibc) | **@jackpot51** | [Ion (defauilt shell)](https://gitlab.redox-os.org/redox-os/ion) | **@jackpot51** | [Termion (terminal library)](https://gitlab.redox-os.org/redox-os/termion) | **@jackpot51** | [pkgutils (current package manager)](https://gitlab.redox-os.org/redox-os/pkgutils) | **@jackpot51** | [Orbital (display server and window manager)](https://gitlab.redox-os.org/redox-os/orbital) | **@jackpot51** | This repo - the root of the Build System | **@jackpot51** **@hatred_45** | [Redoxer (tool for easy Redox development on Linux)](https://gitlab.redox-os.org/redox-os/redoxer) | **@jackpot51** | [The Redox Book](https://gitlab.redox-os.org/redox-os/book) | **@jackpot51** **@hatred_45** | [Website](https://gitlab.redox-os.org/redox-os/website) | **@jackpot51** **@hatred_45** ## What it looks like See [Redox in Action](https://www.redox-os.org/screens/) for photos and videos. Redox Redox Redox Redox Redox Redox ================================================ FILE: TRADEMARK.md ================================================ # Redox OS Trademark Policy This document outlines the policy regarding the use of the Redox OS trademark owned by the Redox OS nonprofit. The purpose of this policy is to ensure that the Redox OS trademark is used correctly and consistently, maintaining the integrity and reputation of the Redox OS brand. 1. Usage of the Redox OS Trademark 1. The Redox OS trademark includes, but is not limited to, the name "Redox OS", the Redox OS logo, and any associated symbols or designs. 2. The Redox OS trademark may only be used in accordance with this policy. Unauthorized use of the trademark is prohibited. 2. Permissible Use 1. Community Projects: Community projects may use the Redox OS trademark to refer to the operating system, provided that such use is not misleading and does not imply endorsement by the Redox OS nonprofit without explicit permission. 2. Educational and Informational Use: The Redox OS trademark may be used in educational and informational materials, including books, websites, and articles, to refer to the operating system, provided that such use complies with the guidelines set forth in this policy. 3. Marketing and Promotional Use: Partners and affiliates of the Redox OS nonprofit may use the Redox OS trademark in marketing and promotional materials with prior written consent from the Redox OS nonprofit. 3. Prohibited Use 1. Misrepresentation: The Redox OS trademark must not be used in a way that misrepresents or implies false association with, endorsement by, or sponsorship from the Redox OS nonprofit. 2. Modification: The Redox OS trademark must not be altered, modified, or used as part of another trademark or logo without prior written permission from the Redox OS nonprofit. 3. Merchandising: The Redox OS trademark must not be used on merchandise (e.g., T-shirts, mugs) for commercial purposes without explicit authorization from the Redox OS nonprofit. 4. Logo Usage Guidelines 1. The Redox OS logo must be used as provided by the Redox OS nonprofit without any modifications. This includes maintaining the logo’s colors, proportions, and overall design. 2. The Redox OS logo must be displayed in a manner that is clear and legible. Sufficient clear space should be maintained around the logo to ensure it is not crowded by other visual elements. 3. The Redox OS name should be identified as a trademark using the “™” symbol. 5. Official Redox OS Software 1. Software hosted at [the Redox OS GitLab group](https://gitlab.redox-os.org/redox-os/) is considered official Redox OS software. Only software that has been approved by the Redox OS nonprofit is permitted to use the Redox OS trademarks to refer to itself. Software that is official Redox OS software may use the “redox-os-” package namespace and “org.redox_os.” prefixed reverse-DNS ID. Other software should avoid using these prefixes. 2. Third-party software that integrates with or extend the Redox OS operating system must not use the Redox OS trademark in a way that implies official status or endorsement without prior approval from the Redox OS nonprofit. Third-party developers are encouraged to use the "redox-os-ext-" package namespace. This software may be described as "for the Redox OS™ operating system". 3. Third-party software may request inclusion as official Redox OS software. To request inclusion, please contact the Redox OS nonprofit at trademark@redox-os.org. 6. Request for Permission 1. To request permission for uses of the Redox OS trademark not covered by this policy, please contact the Redox OS nonprofit at trademark@redox-os.org. 2. All requests will be reviewed on a case-by-case basis, and the Redox OS nonprofit reserves the right to grant or deny permission at its sole discretion. 7. Enforcement 1. The Redox OS nonprofit reserves the right to take appropriate legal action against any unauthorized use of the Redox OS trademark. 2. The Redox OS nonprofit may, at its discretion, require the cessation of use of the Redox OS trademark by any party that fails to comply with this policy. ## Contact Information For any questions or to request permission to use the Redox OS trademark, please contact:

Redox OS
trademark@redox-os.org

This trademark policy is effective as of December 3, 2025 and may be updated from time to time at the discretion of the Redox OS nonprofit. --- By adhering to these guidelines, you help us protect the Redox OS brand and ensure it remains a symbol of quality and innovation. Thank you for your cooperation. ================================================ FILE: bin/aarch64-unknown-redox-pkg-config ================================================ #!/usr/bin/env bash export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" if [ -n "${COOKBOOK_DYNAMIC}" ] then exec pkg-config "$@" else exec pkg-config --static "$@" fi ================================================ FILE: bin/i586-unknown-redox-pkg-config ================================================ #!/usr/bin/env bash export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" if [ -n "${COOKBOOK_DYNAMIC}" ] then exec pkg-config "$@" else exec pkg-config --static "$@" fi ================================================ FILE: bin/i686-unknown-redox-pkg-config ================================================ #!/usr/bin/env bash export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" if [ -n "${COOKBOOK_DYNAMIC}" ] then exec pkg-config "$@" else exec pkg-config --static "$@" fi ================================================ FILE: bin/riscv64-unknown-redox-pkg-config ================================================ #!/usr/bin/env bash export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" if [ -n "${COOKBOOK_DYNAMIC}" ] then exec pkg-config "$@" else exec pkg-config --static "$@" fi ================================================ FILE: bin/x86_64-unknown-redox-llvm-config ================================================ #!/usr/bin/env python3 # This script wraps llvm-config that intended for cross compiling to Redox. # Because we can't run llvm-config compiled to Redox, we wrap it here # and filter out architectures that do not match the current $TARGET. import os import sys import subprocess LLVM_CONFIG = "/bin/llvm-config" # name of (--targets-built, --components prefix, --libs prefix) ARCH_MAP = { "x86_64": ("X86", "x86", "X86"), "i586": ("X86", "x86", "X86"), "aarch64": ("AArch64", "aarch64", "AArch64"), "riscv64gc": ("RISCV", "riscv", "RISCV"), } ALL_ARCH_COMPS = ["x86", "aarch64", "riscv"] ALL_ARCH_LIBS = ["X86", "AArch64", "RISCV"] def is_unwanted_arch(item, allowed_prefix, all_prefixes, is_lib=False): matched_arch = None for arch in all_prefixes: # libraries e.g., -lLLVMX86CodeGen / libLLVMAArch64Desc.a if is_lib and f"LLVM{arch}" in item: matched_arch = arch break # components e.g., x86codegen, aarch64desc elif not is_lib and item.startswith(arch): matched_arch = arch break if matched_arch and matched_arch != allowed_prefix: return True return False def main(): toolchain_path = os.environ.get("COOKBOOK_HOST_SYSROOT") sysroot_path = os.environ.get("COOKBOOK_SYSROOT") target_triple = os.environ.get("TARGET") if not toolchain_path or not sysroot_path or not target_triple: print("Error: COOKBOOK_HOST_SYSROOT or COOKBOOK_SYSROOT or TARGET not set", file=sys.stderr) sys.exit(1) target_arch = target_triple.split('-')[0] if target_triple else "" mapped_archs = ARCH_MAP.get(target_arch) target_built_name, comp_prefix, lib_prefix = mapped_archs cmd = [toolchain_path + LLVM_CONFIG] + sys.argv[1:] try: result = subprocess.run( cmd, stdout=subprocess.PIPE, stderr=sys.stderr, check=False, text=True ) except FileNotFoundError: print(f"Error: Could not find executable '{LLVM_CONFIG}'", file=sys.stderr) sys.exit(1) if result.returncode != 0: sys.exit(result.returncode) output = result.stdout.strip() args_set = set(sys.argv[1:]) if "--bindir" in args_set: output = toolchain_path + "/usr/bin" elif "--targets-built" in args_set: output = target_built_name elif "--components" in args_set: components = output.split() filtered = [c for c in components if not is_unwanted_arch(c, comp_prefix, ALL_ARCH_COMPS, is_lib=False)] output = " ".join(filtered) elif "--libs" in args_set: libs = output.split() filtered = [l for l in libs if not is_unwanted_arch(l, lib_prefix, ALL_ARCH_LIBS, is_lib=True)] output = " ".join(filtered) # if "--ldflags" in args_set: src = toolchain_path.rstrip(os.sep) dst = sysroot_path.rstrip(os.sep) output = output.replace(src, dst) else: src = toolchain_path.rstrip(os.sep) dst = sysroot_path.rstrip(os.sep) output = output.replace(src, dst) print(output + '\n', end='') if __name__ == "__main__": main() ================================================ FILE: bin/x86_64-unknown-redox-pkg-config ================================================ #!/usr/bin/env bash export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" export PKG_CONFIG_LIBDIR="${PKG_CONFIG_SYSROOT_DIR}/lib/pkgconfig" export PKG_CONFIG_PATH="${PKG_CONFIG_SYSROOT_DIR}/share/pkgconfig" if [ -n "${COOKBOOK_DYNAMIC}" ] then exec pkg-config "$@" else exec pkg-config --static "$@" fi ================================================ FILE: build.sh ================================================ #!/usr/bin/env bash # Alternative script for the build system Makefiles ########################################################################### # # # Build the system, with a specified processor type and filesystem config # # # ########################################################################### usage() { echo "build.sh: Invoke make for a particular architecture and configuration." echo "Usage:" echo "./build.sh [-X | -A | -5 | -R | -a ARCH] [-c CONFIG] [-f FILESYSTEM_CONFIG] TARGET..." echo " -X Equivalent to -a x86_64." echo " -A Equivalent to -a aarch64." echo " -5 Equivalent to -a i586." echo " -6 Equivalent to -a i586 (deprecated, use -5 instead)." echo " -R Equivalent to -a riscv64gc." echo " -a ARCH: Processor Architecture. Normally one of x86_64, aarch64 or" echo " i686. ARCH is not checked, so you can add a new architecture." echo " Defaults to the directory containing the FILESYSTEM_CONFIG file," echo " or x86_64 if no FILESYSTEM_CONFIG is specified." echo " -c CONFIG: The name of the config, e.g. desktop, server or demo." echo " Determines the name of the image, build/ARCH/CONFIG/harddrive.img" echo " e.g. build/x86_64/desktop/harddrive.img" echo " Determines the name of FILESYSTEM_CONFIG if none is specified." echo " Defaults to the basename of FILESYSTEM_CONFIG, or 'desktop'" echo " if FILESYSTEM_CONFIG is not specified." echo " -f FILESYSTEM_CONFIG:" echo " The config file to use. It can be in any location." echo " However, if the file is not in a directory named x86_64, aarch64" echo " or i686, you must specify the architecture." echo " If -f is not specified, FILESYSTEM_CONFIG is set to" echo " config/ARCH/CONFIG.toml" echo " If you specify both CONFIG and FILESYSTEM_CONFIG, it is not" echo " necessary that they match, but it is recommended." echo " Examples: ./build.sh -c demo live - make build/x86_64/demo/redox-live.iso" echo " ./build.sh -6 qemu - make build/i686/desktop/harddrive.img and" echo " and run it in qemu" echo " NOTE: If you do not change ARCH or CONFIG very often, edit mk/config.mk" echo " and set ARCH and FILESYSTEM_CONFIG. You only need to use this" echo " script when you want to override them." } if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then usage exit fi defaultarch="x86_64" defaultname="desktop" ARCH="" CONFIG_NAME="" FILESYSTEM_CONFIG="" while getopts ":c:f:a:dhXA6" opt do case "$opt" in a) ARCH="$OPTARG";; c) CONFIG_NAME="$OPTARG";; f) FILESYSTEM_CONFIG="$OPTARG";; X) ARCH="x86_64";; A) ARCH="aarch64";; R) ARCH="riscv64gc";; 5) ARCH="i586";; 6) ARCH="i586";; h) usage;; \?) echo "Unknown option -$OPTARG, try -h for help"; exit;; :) echo "-$OPTARG requires a value"; exit;; esac done shift $((OPTIND -1)) if [ -z "$ARCH" ] && [ -n "$FILESYSTEM_CONFIG" ]; then dirname=`dirname "$FILESYSTEM_CONFIG"` ARCH=`basename $dirname` case "$ARCH" in x86_64) : ;; aarch64) : ;; riscv64gc) : ;; i586) : ;; \?) ARCH=""; echo "Unknown Architecture, please specify x86_64, aarch64, riscv64gc or i586";; esac fi if [ -z "$config_name" ] && [ -n "$FILESYSTEM_CONFIG" ]; then CONFIG_NAME=`basename "$FILESYSTEM_CONFIG" .toml` fi if [ -z "$ARCH" ]; then ARCH="$defaultarch" fi if [ -z "$CONFIG_NAME" ]; then CONFIG_NAME="$defaultname" fi if [ -z "$FILESYSTEM_CONFIG" ]; then FILESYSTEM_CONFIG="config/$ARCH/$CONFIG_NAME.toml" fi export ARCH CONFIG_NAME FILESYSTEM_CONFIG make $@ ================================================ FILE: config/aarch64/ci.toml ================================================ # The Redox build server configuration # General settings [general] # Do not prompt if settings are not defined prompt = false # Package settings [packages] # If you need to disable some broken package comment out instead of removal to not increase the maintenance cost #TODO: commented out recipes need to be built and tested inside of Redox to verify if they returned to work # Meta-packages below # auto-test = {} # dev-essential = {} # dev-redox = {} # redox-tests = {} # x11-minimal = {} # x11-full = {} # Normal packages below acid = {} acid-bins = {} base = {} base-initfs = {} bash = {} bash-completion = {} bootloader = {} bottom = {} ca-certificates = {} contain = {} coreutils = {} cosmic-edit = {} cosmic-files = {} cosmic-icons = {} cosmic-term = {} cosmic-text = {} curl = {} dash = {} dejavu = {} diffutils = {} expat = {} extrautils = {} findutils = {} freefont = {} freetype2 = {} gcc13 = {} gettext = {} git = {} gnu-binutils = {} gnu-make = {} hicolor-icon-theme = {} installer = {} installer-gui = {} ion = {} kernel = {} kibi = {} libffi = {} libgcc = {} libiconv = {} libjpeg = {} libogg = {} liborbital = {} libpng = {} libstdcxx = {} libvorbis = {} libxkbcommon = {} libxml2 = {} llvm21 = {} nano = {} nasm = {} ncurses = {} netdb = {} netsurf = {} netutils = {} nghttp2 = {} openssl1 = {} openssl3 = {} orbdata = {} orbital = {} orbterm = {} orbutils = {} patch = {} patchelf = {} pcre = {} pkgutils = {} pls = {} pop-icon-theme = {} redoxfs = {} relibc = {} ripgrep = {} rust = {} rustpython = {} sdl1 = {} sed = {} shared-mime-info = {} smith = {} terminfo = {} userutils = {} uutils = {} vim = {} xz = {} zlib = {} zstd = {} # #"gcc13.cxx" = {} # #"llvm21.clang" = {} # #"llvm21.clang-dev" = {} # #"llvm21.dev" = {} # #"llvm21.lld" = {} # #"llvm21.lld-dev" = {} # #"llvm21.runtime" = {} # #"python312.dev" = {} # #"rust.doc" = {} # #atk = {} # depends on glib which does not build # #benchmarks = {} # #binutils-gdb = {} # #book = {} # #cairo-demo = {} # linking errors # #classicube = {} # #cmake = {} # #cmatrix = {} # needs ncursesw now # #cookbook = {} # #cosmic-reader = {} # #cosmic-settings = {} # #cosmic-store = {} # #devilutionx = {} # #dynamic-example = {} # #fal # #fd = {} # ctrlc-3.1.1 # #file = {} # #flycast = {} # #freeciv = {} # #freeglut = {} # #friar = {} # mio patch # #game-2048 = {} # rustc-serialize # #gawk = {} # langinfo.h # #gigalomania = {} # old recipe format # #gitoxide = {} # #goaccess = {} # #gstreamer = {} # conflict with thread local errno # #harfbuzz = {} # depends on glib which does not build # #helix = {} # #hello-redox = {} # #hematite = {} # needs crate patches for redox-unix # #hf = {} # #ibm-plex = {} # #iced = {} # #jansson = {} # needs config.sub update # #jq = {} # #libarchive = {} # #libatomic = {} # #libcosmic = {} # #libflac = {} # #libmodplug1 = {} # #libmpfr = {} # #libnettle = {} # #libogg = {} # #libpsl = {} # #libssh2 = {} # #libtool = {} # #liburcu = {} # #libuv = {} # #lua-compat-53 = {} # #luajit = {} # #luarocks = {} # #luv = {} # #mdp = {} # gcc hangs # #miniserve = {} # actix # #mpc = {} # #mupen64plus = {} # #ncdu = {} # multiple definitions of symbols # #newlib = {} # obsolete # #newlibtest = {} # obsolete # #noto-color-emoji = {} # #nushell = {} # needs cargo update # #openjk = {} # #openposixtestsuite = {} # #opentyrian = {} # #orbcalculator = {} # #ostest-bins = {} # #pango = {} # undefined references to std::__throw_system_error(int) # #pastel = {} # needs crate patches for redox-unix # #pathfinder = {} # servo-fontconfig # #pciids = {} # #pcre2 = {} # #pixman = {} # depends on glib which does not build # #pkgar = {} # uses virtual Cargo.toml, needs recipe update # #pls = {} # #pop-wallpapers = {} # #powerline = {} # dirs # #qemu = {} # can be built, but not working # #quakespasm = {} # #redox-posix-tests = {} # #redox-ssh = {} # does not compile # #retroarch = {} # OS_TLSIndex not declared # #rust-cairo = {} # linking errors # #rust-cairo-demo = {} # linking errors # #rvvm = {} # #schismtracker = {} # uses system includes # #sdl-player = {} # wctype_t # #sdl2-gfx = {} # #sm64ex = {} # #spacecadetpinball = {} # #twin-commander = {} # #ubuntu-wallpapers = {} # #unibilium = {} # #utf8proc = {} # #vice = {} # linker errors # #vvvvvv = {} # did not compile # #webrender = {} # unwind # #website = {} # #wesnoth = {} # #wget = {} # autoconf = {} # automake = {} # binutils = {} # bzip2 = {} # cairo = {} # cleye = {} # composer = {} # cpal = {} # dosbox = {} # duktape = {} # eduke32 = {} # exampled = {} # expat = {} # extrautils = {} # ffmpeg6 = {} # fontconfig = {} # freedoom = {} # freepats = {} # fribidi = {} # gdbserver = {} # wrong libc type # gdk-pixbuf = {} # gears = {} # generaluser-gs = {} # glib = {} # glutin = {} # gnu-grep = {} # htop = {} # intel-one-mono = {} # lci = {} # libavif = {} # libc-bench = {} # libedit = {} # libgmp = {} # libicu = {} # libonig = {} # libsodium = {} # libuuid = {} # libwebp = {} # lsd = {} # lua54 = {} # lz4 = {} # mednafen = {} # mesa = {} # libudev was not found # mesa-glu = {} # depends on mesa # mgba = {} # mpc = {} # libmpfr not found # ncursesw = {} # neverball = {} # nginx = {} # onefetch = {} # openjazz = {} # openssh = {} # openttd = {} # openttd-opengfx = {} # openttd-openmsx = {} # openttd-opensfx = {} # orbclient = {} # osdemo = {} # perg = {} # periodictable = {} # perl5 = {} # php84 = {} # pixelcannon = {} # pkg-config = {} # prboom = {} # procedural-wallpapers-rs = {} # python312 = {} # readline = {} # redox-fatfs = {} # redox-games = {} # relibc-tests = {} # relibc-tests-bins = {} # rodioplay = {} # rs-nes = {} # rsync = {} # rust64 = {} # rustual-boy = {} # scummvm = {} # sdl-gfx = {} # sdl1-image = {} # sdl1-mixer = {} # sdl1-ttf = {} # sdl2 = {} # sdl2-gears = {} # sdl2-image = {} # sdl2-mixer = {} # sdl2-ttf = {} # servo = {} # shellharden = {} # shellstorm = {} # simple-http-server = {} # sodium = {} # sopwith = {} # sqlite3 = {} # strace = {} # unknown syscall # syobonaction = {} # timidity = {} # tokei = {} # ttf-hack = {} # vttest = {} # webkitgtk3 = {} # winit = {} # xxhash = {} # zoxide = {} # untested ================================================ FILE: config/aarch64/demo.toml ================================================ # Configuration for demonstration include = ["../desktop.toml"] ================================================ FILE: config/aarch64/dev.toml ================================================ # Configuration for development include = ["../dev.toml"] # Override the default settings here # General settings [general] # Filesystem size in MiB # filesystem_size = 1024 # Package settings [packages] # see ci.toml for error reasons gdbserver = "ignore" gnu-binutils = "ignore" mesa = "ignore" mesa-glu = "ignore" mpc = "ignore" strace = "ignore" ================================================ FILE: config/aarch64/jeremy.toml ================================================ # Configuration for Jeremy Soller include = ["desktop.toml"] ================================================ FILE: config/aarch64/raspi3bp/minimal.toml ================================================ # Minimal configuration include = ["../../minimal.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 256 # EFI partition size in MiB efi_partition_size = 128 ================================================ FILE: config/aarch64/redoxer.toml ================================================ # Configuration used for building redoxer base image include = ["../redoxer.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 1024 ================================================ FILE: config/acid.toml ================================================ # Configuration for "acid" testing include = ["base.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 1024 # Package settings [packages] acid = {} coreutils = {} ion = {} [[files]] path = "/usr/lib/init.d/10_acid" data = """ requires_weak 00_drivers ion /usr/lib/run_acid.ion """ [[files]] path = "/usr/lib/run_acid.ion" data = """ #!/usr/bin/env ion export RUST_BACKTRACE=full cd /home/user/acid cargo test shutdown """ ================================================ FILE: config/auto-test.toml ================================================ # Configuration for automated testing of essential test suites # Smaller test suites are executed first to catch possible bugs or regressions faster include = ["base.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 1024 # Package settings [packages] auto-test = {} [[files]] path = "/usr/lib/init.d/30_console" data = """ requires_weak 10_net ion /usr/lib/run_tests.ion """ [[files]] path = "/usr/lib/run_tests.ion" data = """ #!/usr/bin/env ion export RUST_BACKTRACE=full cd /home/user/acid cargo test bash /root/relibc-tests/run.sh os-test-runner shutdown """ ================================================ FILE: config/base.toml ================================================ # Base configuration: This configuration is meant to be included by # other configurations rather than use directly. It is the greatest # common divisor of all other configurations and misses several # parts necessary to create a bootable system. # General settings [general] # Do not prompt if settings are not defined prompt = false [packages] base = {} base-initfs = {} bootloader = {} kernel = {} libgcc = {} libstdcxx = {} netdb = {} netutils = {} relibc = {} userutils = {} uutils = {} ## Configuration files [[files]] path = "/usr/lib/init.d/00_base" data = """ # clear and recreate tmpdir with 0o1777 permission rm -rf /tmp mkdir -m a=rwxt /tmp notify ipcd notify ptyd nowait sudo --daemon """ [[files]] path = "/usr/lib/init.d/00_drivers" data = """ requires_weak 00_base pcid-spawner """ ## Network init [[files]] path = "/usr/lib/init.d/10_net" data = """ requires_weak 00_drivers notify smolnetd nowait dhcpd """ [[files]] path = "/etc/login_schemes.toml" data = """ [user_schemes.root] schemes = ["*"] [user_schemes.user] schemes = [ # Kernel schemes "debug", "event", "memory", "pipe", "serio", "irq", "time", "sys", # Base schemes "rand", "null", "zero", "log", # Network schemes "ip", "icmp", "tcp", "udp", # IPC schemes "shm", "chan", "uds_stream", "uds_dgram", # File schemes "file", # Display schemes "display.vesa", "display*", # Other schemes "pty", "sudo", "audio", "orbital", ] """ [[files]] path = "/etc/hostname" data = "redox" ## Default net configuration (optimized for QEMU) [[files]] path = "/etc/net/dns" data = """ 9.9.9.9 """ [[files]] path = "/etc/net/ip" data = """ 10.0.2.15 """ [[files]] path = "/etc/net/ip_router" data = """ 10.0.2.2 """ [[files]] path = "/etc/net/ip_subnet" data = """ 255.255.255.0 """ # https://www.freedesktop.org/software/systemd/man/latest/os-release.html [[files]] path = "/usr/lib/os-release" data = """ PRETTY_NAME="Redox OS 0.9.0" NAME="Redox OS" VERSION_ID="0.9.0" VERSION="0.9.0" ID="redox-os" HOME_URL="https://redox-os.org/" DOCUMENTATION_URL="https://redox-os.org/docs/" SUPPORT_URL="https://redox-os.org/community/" """ # FIXME maybe add VARIANT= and VARIANT_ID= keys depending on the chosen configuration? [[files]] path = "/etc/os-release" data = "../usr/lib/os-release" symlink = true [[files]] path = "/etc/pkg.d/50_redox" data = "https://static.redox-os.org/pkg" ## /usr and symlinks for usrmerge [[files]] path = "/usr" data = "" directory = true mode = 0o755 [[files]] path = "/usr/bin" data = "" directory = true mode = 0o755 [[files]] path = "/bin" data = "usr/bin" symlink = true [[files]] path = "/usr/include" data = "" directory = true mode = 0o755 [[files]] path = "/include" data = "usr/include" symlink = true [[files]] path = "/usr/lib" data = "" directory = true mode = 0o755 [[files]] path = "/lib" data = "usr/lib" symlink = true [[files]] path = "/usr/libexec" data = "" directory = true mode = 0o755 [[files]] path = "/usr/share" data = "" directory = true mode = 0o755 [[files]] path = "/share" data = "usr/share" symlink = true [[files]] path = "/ui" data = "usr/share/ui" symlink = true ## legacy orbital font directory [[files]] path = "/usr/share/ui/fonts" data = "/usr/share/fonts" symlink = true ## legacy orbital icon directory [[files]] path = "/usr/share/ui/icons" data = "/usr/share/icons" symlink = true ## /var [[files]] path = "/var" data = "" directory = true mode = 0o755 [[files]] path = "/var/cache" data = "" directory = true mode = 0o755 [[files]] path = "/var/lib" data = "" directory = true mode = 0o755 [[files]] path = "/var/lock" data = "" directory = true mode = 0o1777 [[files]] path = "/var/log" data = "" directory = true mode = 0o755 [[files]] path = "/var/run" data = "" directory = true mode = 0o755 [[files]] path = "/var/tmp" data = "" directory = true mode = 0o1777 ## Device file symlinks [[files]] path = "/dev/null" data = "/scheme/null" symlink = true [[files]] path = "/dev/random" data = "/scheme/rand" symlink = true [[files]] path = "/dev/urandom" data = "/scheme/rand" symlink = true [[files]] path = "/dev/zero" data = "/scheme/zero" symlink = true [[files]] path = "/dev/tty" data = "libc:tty" symlink = true [[files]] path = "/dev/stdin" data = "libc:stdin" symlink = true [[files]] path = "/dev/stdout" data = "libc:stdout" symlink = true [[files]] path = "/dev/stderr" data = "libc:stderr" symlink = true # User settings [users.root] password = "password" uid = 0 gid = 0 shell = "/usr/bin/ion" [users.user] # Password is unset password = "" shell = "/usr/bin/ion" # Group settings [groups.sudo] gid = 1 members = ["user"] ================================================ FILE: config/desktop-minimal.toml ================================================ # Minimal desktop configuration include = ["minimal.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 256 # Package settings [packages] orbdata = {} orbital = {} orbterm = {} orbutils = {} [[files]] path = "/usr/lib/init.d/20_orbital" data = """ requires_weak 10_net notify audiod nowait VT=3 orbital orblogin launcher """ # Override console config to not switch to VT 2 [[files]] path = "/usr/lib/init.d/30_console" data = """ requires_weak 20_orbital nowait getty 2 nowait getty /scheme/debug/no-preserve -J """ ================================================ FILE: config/desktop.toml ================================================ # Default build system configuration include = ["desktop-minimal.toml", "server.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 650 # Package settings [packages] cosmic-edit = {} cosmic-files = {} cosmic-icons = {} cosmic-term = {} dejavu = {} freefont = {} hicolor-icon-theme = {} installer-gui = {} netsurf = {} patchelf = {} pop-icon-theme = {} shared-mime-info = {} # orbterm from desktop-minimal should be ignored orbterm = "ignore" ================================================ FILE: config/dev.toml ================================================ # Configuration for development include = ["desktop.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 20000 # Do not prompt if settings are not defined prompt = false # Package settings [packages] dev-redox = {} hello-redox = {} ================================================ FILE: config/i586/ci.toml ================================================ # The Redox build server configuration # General settings [general] # Do not prompt if settings are not defined prompt = false # Package settings [packages] # If you need to disable some broken package comment out instead of removal to not increase the maintenance cost #TODO: commented out recipes need to be built and tested inside of Redox to verify if they returned to work # Meta-packages below # auto-test = {} # dev-essential = {} # dev-redox = {} # redox-tests = {} # x11-minimal = {} # x11-full = {} # Normal packages below # acid = {} # rust require dynamic linking acid-bins = {} base = {} base-initfs = {} bash = {} bash-completion = {} bootloader = {} bottom = {} ca-certificates = {} contain = {} coreutils = {} cosmic-edit = {} cosmic-files = {} cosmic-icons = {} cosmic-term = {} cosmic-text = {} curl = {} dash = {} dejavu = {} diffutils = {} expat = {} extrautils = {} findutils = {} freefont = {} freetype2 = {} gettext = {} git = {} gnu-make = {} hicolor-icon-theme = {} installer = {} installer-gui = {} ion = {} kernel = {} kibi = {} libffi = {} libgcc = {} libiconv = {} libjpeg = {} libogg = {} liborbital = {} libpng = {} libstdcxx = {} libvorbis = {} libxkbcommon = {} libxml2 = {} nano = {} nasm = {} ncurses = {} netdb = {} netsurf = {} netutils = {} nghttp2 = {} openssl1 = {} orbdata = {} orbital = {} orbterm = {} orbutils = {} patch = {} pcre = {} patchelf = {} pop-icon-theme = {} pkgutils = {} redoxfs = {} relibc = {} ripgrep = {} rustpython = {} sdl1 = {} sed = {} shared-mime-info = {} smith = {} terminfo = {} userutils = {} uutils = {} xz = {} #vim = {} # conflicting types zlib = {} # #"gcc13.cxx" = {} # #"llvm21.clang" = {} # #"llvm21.clang-dev" = {} # #"llvm21.dev" = {} # #"llvm21.lld" = {} # #"llvm21.lld-dev" = {} # #"llvm21.runtime" = {} # #"python312.dev" = {} # #"rust.doc" = {} # #atk = {} # depends on glib which does not build # #benchmarks = {} # #binutils-gdb = {} # #book = {} # #cairo-demo = {} # linking errors # #classicube = {} # #cmake = {} # #cmatrix = {} # needs ncursesw now # #cookbook = {} # #cosmic-reader = {} # #cosmic-settings = {} # #cosmic-store = {} # #devilutionx = {} # #dynamic-example = {} # #fal # #fd = {} # ctrlc-3.1.1 # #file = {} # #flycast = {} # #freeciv = {} # #freeglut = {} # #friar = {} # mio patch # #game-2048 = {} # rustc-serialize # #gawk = {} # langinfo.h # #gigalomania = {} # old recipe format # #gitoxide = {} # #goaccess = {} # #gstreamer = {} # conflict with thread local errno # #harfbuzz = {} # depends on glib which does not build # #helix = {} # #hello-redox = {} # #hematite = {} # needs crate patches for redox-unix # #hf = {} # #ibm-plex = {} # #iced = {} # #jansson = {} # needs config.sub update # #jq = {} # #libarchive = {} # #libatomic = {} # #libcosmic = {} # #libflac = {} # #libmodplug1 = {} # #libmpfr = {} # #libnettle = {} # #libogg = {} # #libpsl = {} # #libssh2 = {} # #libtool = {} # #liburcu = {} # #libuv = {} # #lua-compat-53 = {} # #luajit = {} # #luarocks = {} # #luv = {} # #mdp = {} # gcc hangs # #miniserve = {} # actix # #mpc = {} # #mupen64plus = {} # #ncdu = {} # multiple definitions of symbols # #newlib = {} # obsolete # #newlibtest = {} # obsolete # #noto-color-emoji = {} # #nushell = {} # needs cargo update # #openjk = {} # #openposixtestsuite = {} # #opentyrian = {} # #orbcalculator = {} # #ostest-bins = {} # #pango = {} # undefined references to std::__throw_system_error(int) # #pastel = {} # needs crate patches for redox-unix # #pathfinder = {} # servo-fontconfig # #pciids = {} # #pcre2 = {} # #pixman = {} # depends on glib which does not build # #pkgar = {} # uses virtual Cargo.toml, needs recipe update # #pls = {} # #pop-wallpapers = {} # #powerline = {} # dirs # #qemu = {} # can be built, but not working # #quakespasm = {} # #redox-posix-tests = {} # #redox-ssh = {} # does not compile # #retroarch = {} # OS_TLSIndex not declared # #rust-cairo = {} # linking errors # #rust-cairo-demo = {} # linking errors # #rvvm = {} # #schismtracker = {} # uses system includes # #sdl-player = {} # wctype_t # #sdl2-gfx = {} # #sm64ex = {} # #spacecadetpinball = {} # #twin-commander = {} # #ubuntu-wallpapers = {} # #unibilium = {} # #utf8proc = {} # #vice = {} # linker errors # #vvvvvv = {} # did not compile # #webrender = {} # unwind # #website = {} # #wesnoth = {} # #wget = {} # autoconf = {} # automake = {} # binutils = {} # bzip2 = {} # cairo = {} # cleye = {} # composer = {} # cpal = {} # dosbox = {} # duktape = {} # eduke32 = {} # exampled = {} # ffmpeg6 = {} # fontconfig = {} # freedoom = {} # freepats = {} # fribidi = {} # gcc13 = {} # gdbserver = {} # gdk-pixbuf = {} # gears = {} # generaluser-gs = {} # glib = {} # glutin = {} # gnu-binutils = {} # gnu-grep = {} # htop = {} # intel-one-mono = {} # lci = {} # libavif = {} # libc-bench = {} # libedit = {} # libgmp = {} # libicu = {} # libonig = {} # libsodium = {} # libuuid = {} # libwebp = {} # llvm21 = {} # lsd = {} # lua54 = {} # lz4 = {} # mednafen = {} # mesa = {} # mesa-glu = {} # mgba = {} # ncursesw = {} # neverball = {} # nginx = {} # onefetch = {} # openjazz = {} # openssh = {} # openssl3 = {} # openttd = {} # openttd-opengfx = {} # openttd-openmsx = {} # openttd-opensfx = {} # orbclient = {} # osdemo = {} # perg = {} # periodictable = {} # perl5 = {} # php84 = {} # pixelcannon = {} # pkg-config = {} # prboom = {} # procedural-wallpapers-rs = {} # python312 = {} # readline = {} # redox-fatfs = {} # redox-games = {} # relibc-tests = {} # relibc-tests-bins = {} # rodioplay = {} # rs-nes = {} # rsync = {} # rust = {} # rust64 = {} # rustual-boy = {} # scummvm = {} # sdl-gfx = {} # sdl1-image = {} # sdl1-mixer = {} # sdl1-ttf = {} # sdl2 = {} # sdl2-gears = {} # sdl2-image = {} # sdl2-mixer = {} # sdl2-ttf = {} # servo = {} # shellharden = {} # shellstorm = {} # simple-http-server = {} # sodium = {} # sopwith = {} # sqlite3 = {} # strace = {} # syobonaction = {} # timidity = {} # tokei = {} # ttf-hack = {} # vttest = {} # webkitgtk3 = {} # winit = {} # xxhash = {} # zoxide = {} # untested # zstd = {} ================================================ FILE: config/i586/demo.toml ================================================ # Configuration for demonstration include = ["../desktop.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 768 # Package settings [packages] # Games dosbox = {} freedoom = {} prboom = {} redox-games = {} # Demos pixelcannon = {} # MIDI freepats = {} [[files]] path = "/home/user/Welcome.txt" data = """ ############################################################################## # # # Welcome to Redox! # # # # Redox is an operating system written in Rust, a language with focus # # on safety and high performance. Redox, following the microkernel design, # # aims to be secure, usable, and free. Redox is inspired by previous kernels # # and operating systems, such as SeL4, MINIX, Plan 9, and BSD. # # # # Redox _is not_ just a kernel, it's a full-featured Operating System, # # providing packages (memory allocator, file system, display manager, core # # utilities, etc.) that together make up a functional and convenient # # operating system. You can loosely think of it as the GNU or BSD ecosystem, # # but in a memory safe language and with modern technology. # # # # The website can be found at https://www.redox-os.org. # # # # For things to try on Redox, please see # # https://doc.redox-os.org/book/ch02-06-trying-out-redox.html # # # ############################################################################## """ ================================================ FILE: config/i586/dev.toml ================================================ # Configuration for development include = ["../dev.toml"] # Override the default settings here # General settings [general] # Filesystem size in MiB # filesystem_size = 1024 # Package settings [packages] # example = {} ================================================ FILE: config/i586/jeremy.toml ================================================ # Configuration for Jeremy Soller include = ["../desktop.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 4000 # Package settings [packages] # apps cosmic-text = {} pixelcannon = {} sodium = {} # cli acid = {} cleye = {} ripgrep = {} # demos cpal = {} orbclient = {} rodioplay = {} winit = {} # games dosbox = {} eduke32 = {} freedoom = {} prboom = {} redox-games = {} # stuff freepats = {} generaluser-gs = {} jeremy = {} ttf-hack = {} ================================================ FILE: config/i586/redoxer.toml ================================================ # Configuration used for building redoxer base image include = ["../redoxer.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 1024 ================================================ FILE: config/minimal.toml ================================================ # Minimal configuration include = ["base.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 196 # Package settings [packages] ca-certificates = {} coreutils = {} extrautils = {} ion = {} pkgutils = {} kibi = {} [[files]] path = "/usr/lib/init.d/30_console" data = """ requires_weak 10_net inputd -A 2 nowait getty 2 nowait getty /scheme/debug/no-preserve -J """ ================================================ FILE: config/os-test.toml ================================================ # Configuration for "os-test" testing include = ["server.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 1024 # Do not prompt if settings are not defined prompt = false # Package settings [packages] os-test-bins = {} # Provides source and cross-compiled binaries [[files]] path = "/usr/lib/init.d/30_console" data = """ requires_weak 10_net RUST_BACKTRACE=full os-test-runner shutdown """ ================================================ FILE: config/redoxer-gui.toml ================================================ # Configuration for the Redoxer GUI image include = ["redoxer.toml"] # Package settings [packages] orbdata = {} orbital = {} # Override to run inside of orbital [[files]] path = "/usr/lib/init.d/30_redoxer" data = """ requires_weak 10_net echo echo "## running redoxer in orbital ##" nowait VT=3 orbital redoxerd """ ================================================ FILE: config/redoxer.toml ================================================ # Configuration for the Redoxer image include = ["base.toml"] # Package settings [packages] bash = {} ca-certificates = {} coreutils = {} extrautils = {} findutils = {} gnu-make = {} ion = {} pkgutils = {} relibc = {} sed = {} # Override to not background dhcpd [[files]] path = "/usr/lib/init.d/10_net" data = """ requires_weak 00_drivers notify smolnetd dhcpd """ [[files]] path = "/usr/lib/init.d/30_redoxer" data = """ requires_weak 10_net ion /usr/lib/run_redoxer.ion """ [[files]] path = "/usr/lib/run_redoxer.ion" data = """ #!/usr/bin/env ion echo echo "## preparing environment ##" export GROUPS=0 export HOME=/root export HOST=redox export SHELL=/bin/sh export UID=0 export USER=root cd /root env echo echo "## running redoxer ##" redoxerd """ ================================================ FILE: config/riscv64gc/ci.toml ================================================ # The Redox build server configuration # General settings [general] # Do not prompt if settings are not defined prompt = false # Package settings [packages] # If you need to disable some broken package comment out instead of removal to not increase the maintenance cost #TODO: commented out recipes need to be built and tested inside of Redox to verify if they returned to work # Meta-packages below # auto-test = {} # dev-essential = {} # dev-redox = {} # redox-tests = {} # x11-minimal = {} # x11-full = {} # Normal packages below # acid = {} # rust require dynamic linking acid-bins = {} base = {} base-initfs = {} bash = {} bash-completion = {} bootloader = {} bottom = {} ca-certificates = {} #contain = {} # redox_syscall 0.4 not working on riscv64gc? coreutils = {} cosmic-edit = {} cosmic-files = {} cosmic-icons = {} cosmic-term = {} #cosmic-text = {} # need to bump redox_syscall curl = {} dash = {} dejavu = {} diffutils = {} expat = {} extrautils = {} findutils = {} freefont = {} freetype2 = {} gettext = {} git = {} gnu-make = {} hicolor-icon-theme = {} installer = {} #installer-gui = {} # redox_syscall 0.4 not working on riscv64gc? ion = {} kernel = {} kibi = {} libffi = {} libgcc = {} #libiconv = {} # not tested yet, netsurf is commented out libjpeg = {} libogg = {} #liborbital = {} # not tested yet, netsurf is commented out libpng = {} libstdcxx = {} libvorbis = {} libxkbcommon = {} libxml2 = {} #nano = {} # error compiling ncurses nasm = {} #ncurses = {} netdb = {} #netsurf = {} # error compiling nghttp2 netutils = {} #nghttp2 = {} openssl1 = {} orbdata = {} orbital = {} orbterm = {} orbutils = {} #patch = {} error configure machine `riscv64gc-unknown' not recognized pcre = {} patchelf = {} pop-icon-theme = {} pkgutils = {} redoxfs = {} relibc = {} ripgrep = {} rustpython = {} #sdl1 = {} # not tested yet, netsurf is commented out sed = {} shared-mime-info = {} smith = {} terminfo = {} userutils = {} uutils = {} xz = {} #vim = {} # error compiling ncurses zlib = {} # #"gcc13.cxx" = {} # #"llvm21.clang" = {} # #"llvm21.clang-dev" = {} # #"llvm21.dev" = {} # #"llvm21.lld" = {} # #"llvm21.lld-dev" = {} # #"llvm21.runtime" = {} # #"python312.dev" = {} # #"rust.doc" = {} # #atk = {} # depends on glib which does not build # #benchmarks = {} # #binutils-gdb = {} # #book = {} # #cairo-demo = {} # linking errors # #classicube = {} # #cmake = {} # #cmatrix = {} # needs ncursesw now # #cookbook = {} # #cosmic-reader = {} # #cosmic-settings = {} # #cosmic-store = {} # #devilutionx = {} # #dynamic-example = {} # #fal # #fd = {} # ctrlc-3.1.1 # #file = {} # #flycast = {} # #freeciv = {} # #freeglut = {} # #friar = {} # mio patch # #game-2048 = {} # rustc-serialize # #gawk = {} # langinfo.h # #gigalomania = {} # old recipe format # #gitoxide = {} # #goaccess = {} # #gstreamer = {} # conflict with thread local errno # #harfbuzz = {} # depends on glib which does not build # #helix = {} # #hello-redox = {} # #hematite = {} # needs crate patches for redox-unix # #hf = {} # #ibm-plex = {} # #iced = {} # #jansson = {} # needs config.sub update # #jq = {} # #libarchive = {} # #libatomic = {} # #libcosmic = {} # #libflac = {} # #libmodplug1 = {} # #libmpfr = {} # #libnettle = {} # #libogg = {} # #libpsl = {} # #libssh2 = {} # #libtool = {} # #liburcu = {} # #libuv = {} # #lua-compat-53 = {} # #luajit = {} # #luarocks = {} # #luv = {} # #mdp = {} # gcc hangs # #miniserve = {} # actix # #mpc = {} # #mupen64plus = {} # #ncdu = {} # multiple definitions of symbols # #newlib = {} # obsolete # #newlibtest = {} # obsolete # #noto-color-emoji = {} # #nushell = {} # needs cargo update # #openjk = {} # #openposixtestsuite = {} # #opentyrian = {} # #orbcalculator = {} # #ostest-bins = {} # #pango = {} # undefined references to std::__throw_system_error(int) # #pastel = {} # needs crate patches for redox-unix # #pathfinder = {} # servo-fontconfig # #pciids = {} # #pcre2 = {} # #pixman = {} # depends on glib which does not build # #pkgar = {} # uses virtual Cargo.toml, needs recipe update # #pls = {} # #pop-wallpapers = {} # #powerline = {} # dirs # #qemu = {} # can be built, but not working # #quakespasm = {} # #redox-posix-tests = {} # #redox-ssh = {} # does not compile # #retroarch = {} # OS_TLSIndex not declared # #rust-cairo = {} # linking errors # #rust-cairo-demo = {} # linking errors # #rvvm = {} # #schismtracker = {} # uses system includes # #sdl-player = {} # wctype_t # #sdl2-gfx = {} # #sm64ex = {} # #spacecadetpinball = {} # #twin-commander = {} # #ubuntu-wallpapers = {} # #unibilium = {} # #utf8proc = {} # #vice = {} # linker errors # #vvvvvv = {} # did not compile # #webrender = {} # unwind # #website = {} # #wesnoth = {} # #wget = {} # autoconf = {} # automake = {} # binutils = {} # bzip2 = {} # cairo = {} # cleye = {} # composer = {} # cosmic-text = {} # cpal = {} # dosbox = {} # duktape = {} # eduke32 = {} # exampled = {} # ffmpeg6 = {} # fontconfig = {} # freedoom = {} # freepats = {} # fribidi = {} # gcc13 = {} # gdbserver = {} # gdk-pixbuf = {} # gears = {} # generaluser-gs = {} # glib = {} # glutin = {} # gnu-binutils = {} # gnu-grep = {} # htop = {} # intel-one-mono = {} # lci = {} # libavif = {} # libc-bench = {} # libedit = {} # libgmp = {} # libicu = {} # libonig = {} # libsodium = {} # libuuid = {} # libwebp = {} # llvm21 = {} # lsd = {} # lua54 = {} # lz4 = {} # mednafen = {} # mesa = {} # mesa-glu = {} # mgba = {} # ncursesw = {} # neverball = {} # nginx = {} # onefetch = {} # openjazz = {} # openssh = {} # openssl3 = {} # openttd = {} # openttd-opengfx = {} # openttd-openmsx = {} # openttd-opensfx = {} # orbclient = {} # osdemo = {} # perg = {} # periodictable = {} # perl5 = {} # php84 = {} # pixelcannon = {} # pkg-config = {} # prboom = {} # procedural-wallpapers-rs = {} # python312 = {} # readline = {} # redox-fatfs = {} # redox-games = {} # relibc-tests = {} # relibc-tests-bins = {} # rodioplay = {} # rs-nes = {} # rsync = {} # rust = {} # rust64 = {} # rustual-boy = {} # scummvm = {} # sdl-gfx = {} # sdl1-image = {} # sdl1-mixer = {} # sdl1-ttf = {} # sdl2 = {} # sdl2-gears = {} # sdl2-image = {} # sdl2-mixer = {} # sdl2-ttf = {} # servo = {} # shellharden = {} # shellstorm = {} # simple-http-server = {} # sodium = {} # sopwith = {} # sqlite3 = {} # strace = {} # syobonaction = {} # timidity = {} # tokei = {} # ttf-hack = {} # vttest = {} # webkitgtk3 = {} # winit = {} # xxhash = {} # zoxide = {} # untested # zstd = {} ================================================ FILE: config/riscv64gc/demo.toml ================================================ # Configuration for demonstration include = ["desktop.toml"] ================================================ FILE: config/riscv64gc/desktop.toml ================================================ # Default build system configuration include = ["../desktop.toml"] # Override the default settings here # General settings [general] # Filesystem size in MiB # filesystem_size = 1024 # Package settings [packages] # example = {} netsurf = "ignore" # liborbital fails to link in due to mismatching float ABI ================================================ FILE: config/riscv64gc/jeremy.toml ================================================ # Configuration for Jeremy Soller include = ["desktop.toml"] ================================================ FILE: config/server.toml ================================================ # Server configuration include = ["minimal.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 512 # Package settings [packages] bash = {} bottom = {} #contain = {} # needs to update dependencies curl = {} diffutils = {} findutils = {} git = {} installer = {} kibi = {} redoxfs = {} ================================================ FILE: config/tests.toml ================================================ # Configuration for testing include = ["server.toml"] # General settings [general] # Filesystem size in MiB filesystem_size = 10000 # Do not prompt if settings are not defined prompt = false # Package settings [packages] redox-tests = {} benchmarks = {} ================================================ FILE: config/wayland.toml ================================================ # Wayland configuration include = ["desktop.toml"] # Override the default settings here # General settings [general] # Filesystem size in MiB filesystem_size = 2048 # Package settings [packages] adwaita-icon-theme = {} bash = {} cosmic-app-library = {} cosmic-comp = {} gtk3 = {} libcosmic-wayland = {} libxcursor = {} iced-wayland = {} mesa = {} "pop-icon-theme.cursors" = {} smallvil = {} softbuffer-wayland = {} wayland-rs = {} #webkitgtk3 = {} winit-wayland = {} xkeyboard-config = {} # Overridden to launch wayland compositor instead of orblogin [[files]] path = "/usr/lib/init.d/20_orbital" data = """ requires_weak 10_net notify audiod nowait BROWSER=/bin/netsurf-fb VT=3 orbital orbital-wayland """ [[files]] path = "/usr/bin/orbital-wayland" mode = 0o755 data = """ #!/usr/bin/env bash set -ex # Prepare environment unset DISPLAY export COSMIC_BACKEND=winit export HOME=/root export LD_DEBUG=all export RUST_BACKTRACE=full export RUST_LOG=debug export XCURSOR_THEME=Pop export XDG_RUNTIME_DIR=/tmp/run/user/0 # Create XDG runtime directory #TODO: mkdir -p not working mkdir -p /tmp/run mkdir -p /tmp/run/user mkdir -p /tmp/run/user/0 # Compile glib schemas glib-compile-schemas /usr/share/glib-2.0/schemas/ # For cosmic-comp (more features) cosmic-comp wayland-session # For smallvil (easier to debug) #smallvil -c wayland-session& """ [[files]] path = "/usr/bin/wayland-session" mode = 0o755 data = """ #!/usr/bin/env bash set -ex #env G_MAIN_POLL_DEBUG=1 G_MESSAGES_DEBUG=all LD_DEBUG=all WEBKIT_DEBUG=all MiniBrowser& printenv #wayland-rs_simple_window #winit-wayland_window #softbuffer-wayland_animation #iced-wayland_sctk_lazy libcosmic-wayland_application #gtk3-widget-factory #cosmic-app-library run """ [[files]] path = "/etc/gtk-3.0/settings.ini" data = """ [Settings] gtk-cursor-theme-name = "Pop" gtk-icon-theme-name = "Cosmic" """ ================================================ FILE: config/x11.toml ================================================ # X11 configuration include = ["desktop.toml"] # Override the default settings here # General settings [general] # Filesystem size in MiB filesystem_size = 2048 # Package settings [packages] adwaita-icon-theme = {} dbus = {} gtk3 = {} mate-common = {} mesa-demos-x11 = {} #webkitgtk3 = {} # not compiling #xfce4-panel = {} #xfwm4 = {} x11-full = {} zenity = {} [[files]] path = "/usr/lib/init.d/10_dbus" data = """ requires_weak 10_net bash /usr/bin/start-dbus.sh """ [[files]] path = "/usr/bin/start-dbus.sh" mode = 0o755 data = """ #!/usr/bin/env bash export DBUS_DEBUG_OUTPUT=1 #export DBUS_VERBOSE=1 #export G_DBUS_DEBUG=all mkdir -p /var/lib/dbus dbus-uuidgen --ensure mkdir -p /run/dbus rm -f /run/dbus/pid dbus-daemon --system """ [[files]] path = "/usr/lib/init.d/10_xenv" data = """ requires_weak 10_net glib-compile-schemas /usr/share/glib-2.0/schemas/ """ # Overridden to launch X instead of orblogin [[files]] path = "/usr/lib/init.d/20_orbital" data = """ requires_weak 10_dbus 10_xenv notify audiod nowait BROWSER=/bin/netsurf-fb VT=3 orbital orbital-x11 """ [[files]] path = "/usr/bin/orbital-x11" mode = 0o755 data = """ #!/usr/bin/env bash set -ex # for ice authority and pixbuf export HOME=/home/root export XDG_DATA_DIRS=/usr/share # Generate config file WIDTH="$((0x$(grep FRAMEBUFFER_WIDTH /scheme/sys/env | cut -d '=' -f 2)))" HEIGHT="$((0x$(grep FRAMEBUFFER_HEIGHT /scheme/sys/env | cut -d '=' -f 2)))" mkdir -p /usr/share/X11/xorg.conf.d cat > /usr/share/X11/xorg.conf.d/orbital.conf < php /bin/composer install """ [[files]] postinstall = true data = "" path = "/etc/nginx/conf.d" directory = true [[files]] postinstall = true path = "/etc/nginx/nginx.conf" data = """ user nginx; # currently nginx does a lot spin locking for some reason worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; include mime.types; include fastcgi.conf; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; } """ [[files]] postinstall = true path = "/etc/nginx/conf.d/localhost.conf" data = """ server { listen 80; server_name localhost; root /usr/share/website; absolute_redirect off; location / { index index.html index.htm; } } """ [[files]] postinstall = true path = "/etc/nginx/conf.d/php-www.conf" data = """ server { listen 8081; server_name localhost; root /var/www/html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \\.php$ { # because we're not using PHP FPM (see rustysd php.service) # include fastcgi_params; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; proxy_pass http://127.0.0.1:9000; } } """ [[files]] postinstall = true path = "/etc/php/84/php-fpm.conf" data = """ error_log=/var/log/php-fpm.log include=/etc/php/84/php-fpm.d/*.conf """ [[files]] postinstall = true path = "/etc/php/84/php-fpm.d/www.conf" data = """ [www] user = user group = user listen = 127.0.0.1:9000 pm = static pm.max_children = 1 """ [[files]] postinstall = true path = "/etc/ssh/sshd_config" data = """ Port 22 AddressFamily inet AuthorizedKeysFile .ssh/authorized_keys PermitRootLogin yes PasswordAuthentication yes PermitEmptyPasswords yes Subsystem sftp /usr/libexec/sftp-server """ [users.nobody] password = "" shell = "/usr/bin/ion" #TODO: nologin? [users.nginx] password = "" shell = "/usr/bin/ion" #TODO: nologin? [[files]] path = "/root/keygen.sh" data = """ #!/usr/bin/env bash if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" fi """ [[files]] path = "/home/user/server.sh" data = """ #!/usr/bin/env bash /bin/sshd -D & nginx -g "daemon off;" & php-fpm --nodaemonize & """ [[files]] path = "/home/user/Welcome.txt" data = """ ############################################################################## # Welcome to Redox Server Demo! # # This is a quick demonstration of Redox used as server stack. # At the moment we support SSH, NGINX, Python, PHP. There's more to come # # This server demo is insecure by design, we encourage you to get familiar into # basics of server security if you wish to use this as a production server. # # There should be rustysd already running, if not, you can try start it manually # > sudo rustysd --conf /etc/rustysd # # You can also try running all daemons manually # > sudo bash server.sh # # The server will start port 22 (ssh), 80 (static web) and 8081 (php) # If you use the Redox OS build system, starting QEMU with `net=redir` # should expose those port to 8022, 8080 and 8081. # Try logging in to console via SSH with `ssh user@localhost -p 8022` # ############################################################################## """ ================================================ FILE: flake.nix ================================================ { description = "The Nix-flake for Redox development on NixOS"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ nixpkgs, flake-parts, rust-overlay, ... }: flake-parts.lib.mkFlake { inherit inputs; } ( top@{ config, withSystem, moduleWithSystem, ... }: { systems = [ "i686-linux" "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; perSystem = { system, lib, inputs', ... }: let pkgs = import nixpkgs { inherit system; overlays = [ rust-overlay.overlays.default ]; }; rust-bin = pkgs.rust-bin.nightly."2025-10-03".default.override { extensions = [ "rust-analyzer" "rust-src" ]; targets = [ "x86_64-unknown-redox" ]; }; in { formatter = pkgs.nixfmt-rfc-style; # TODO: Create Redox OS Image as package # TODO: No cross-compile for now, as there is no pkgsCross.aarch64-unknown-redox and so on # TODO: Get rid of make env step: package custom libtool and setup rust toolchain properly devShells = { # Podman config taken from https://nixos.wiki/wiki/Podman and https://gist.github.com/adisbladis/187204cb772800489ee3dac4acdd9947 # Provides a script that copies required files to ~/ default = let rustPlatform = pkgs.makeRustPlatform { cargo = rust-bin; rustc = rust-bin; }; podmanSetupScript = let registriesConf = pkgs.writeText "registries.conf" '' [registries.search] registries = ['docker.io'] [registries.block] registries = [] ''; in pkgs.writeScript "podman-setup" '' #!${pkgs.runtimeShell} # Dont overwrite customised configuration if ! test -f ~/.config/containers/policy.json; then install -Dm555 ${pkgs.skopeo.src}/default-policy.json ~/.config/containers/policy.json fi if ! test -f ~/.config/containers/registries.conf; then install -Dm555 ${registriesConf} ~/.config/containers/registries.conf fi systemctl --user start podman.socket || true export PODMAN_SYSTEMD_UNIT=podman.socket ''; # Provides a fake "docker" binary mapping to podman dockerCompat = pkgs.runCommand "docker-podman-compat" { } '' mkdir -p $out/bin ln -s ${pkgs.podman}/bin/podman $out/bin/docker ''; in pkgs.mkShell rec { buildInputs = with pkgs; [ # Podman dockerCompat podman # Docker compat runc # Container runtime conmon # Container runtime monitor skopeo # Interact with container registry slirp4netns # User-mode networking for unprivileged namespaces fuse-overlayfs # CoW for images, much faster than default vfs # with FSTOOLS_IN_PODMAN=1 these are not needed # without it, the installer fails to link FUSE somehow #fuse #rust-bin qemu_kvm ]; LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; NIX_SHELL_BUILD = "1"; FSTOOLS_IN_PODMAN = "1"; shellHook = '' # Install required configuration ${podmanSetupScript} echo "Redox podman build environment loaded" ''; }; #TODO: This isn't tested yet, use at your own risk native = pkgs.mkShell rec { nativeBuildInputs = let autoreconf269 = pkgs.writeShellScriptBin "autoreconf2.69" "${pkgs.autoconf269}/bin/autoreconf"; in with pkgs; [ ant autoconf autoreconf269 # gnu-binutils automake bison cmake curl doxygen file flex gettext gnumake gnupatch gperf help2man just llvmPackages.clang llvmPackages.llvm lua m4 meson nasm ninja perl perl540Packages.HTMLParser perl540Packages.Po4a pkg-config pkgconf (python3.withPackages (ps: with ps; [ mako ])) qemu_kvm rust-cbindgen scons texinfo unzip waf wget xdg-utils xxd zip ] ++ pkgs.lib.optionals pkgs.stdenv.hostPlatform.isx86 [ pkgs.syslinux ]; buildInputs = with pkgs; [ rust-bin fuse # fuser libpng # netsurf fontconfig # orbutils SDL # prboom xorg.utilmacros # libX11 xorg.xtrans # libX11 ]; LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; PERL_PATH = "${pkgs.perl}/bin/perl"; NIX_SHELL_BUILD = "1"; PODMAN_BUILD = "0"; shellHook = with pkgs; '' export PKG_CONFIG_PATH="${fuse.dev}/lib/pkgconfig\ :${libpng.dev}/lib/pkgconfig" ''; }; }; }; } ); } ================================================ FILE: mk/ci.mk ================================================ # Configuration file of the build system commands for the build server IMG_TAG?=$(shell git describe --tags) IMG_SEPARATOR?=_ IMG_DIR?=build/img/$(ARCH) OS_TEST_DIR?=build/os-test/$(ARCH) CI_COOKBOOK_CONFIG?=CI=1 COOKBOOK_LOGS=true COOKBOOK_CLEAN_BUILD=true COOKBOOK_VERBOSE=false COOKBOOK_COMPRESSED=true # CI image target - build standard images # To leave out the build tag, set both IMG_TAG and IMG_SEPARATOR to null ci-img: FORCE rm -rf $(IMG_DIR) mkdir -p $(IMG_DIR) $(MAKE) server desktop demo cd $(IMG_DIR) && zstd --rm * cd $(IMG_DIR) && sha256sum -b * > SHA256SUM # The name of the target must match the name of the filesystem config file server desktop demo: FORCE rm -f "build/$(ARCH)/$@/harddrive.img" "build/$(ARCH)/$@/redox-live.iso" export $(CI_COOKBOOK_CONFIG) REPO_NONSTOP=0 && \ $(MAKE) CONFIG_NAME=$@ build/$(ARCH)/$@/harddrive.img build/$(ARCH)/$@/redox-live.iso mkdir -p $(IMG_DIR) cp "build/$(ARCH)/$@/harddrive.img" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_harddrive.img" cp "build/$(ARCH)/$@/redox-live.iso" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_livedisk.iso" ci-os-test: FORCE make CONFIG_NAME=os-test unmount rm -f "build/$(ARCH)/os-test/harddrive.img" $(MAKE) CONFIG_NAME=os-test qemu gpu=no rm -rf $(OS_TEST_DIR) mkdir -p $(OS_TEST_DIR) $(MAKE) CONFIG_NAME=os-test mount cp -rv build/$(ARCH)/os-test/filesystem/usr/share/os-test/html $(OS_TEST_DIR) cp -v build/$(ARCH)/os-test/filesystem/usr/share/os-test/os-test.json $(OS_TEST_DIR) tar \ --create \ --gzip \ --file "$(OS_TEST_DIR)/out.tar.gz" \ --directory="build/$(ARCH)/os-test/filesystem/usr/share/os-test" \ out $(MAKE) CONFIG_NAME=os-test unmount # CI packaging target ci-pkg: prefix $(FSTOOLS_TAG) $(CONTAINER_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(HOST_CARGO) build --manifest-path Cargo.toml --release export $(CI_COOKBOOK_CONFIG) REPO_NONSTOP=1 PATH="$(PREFIX_PATH):$$PATH" COOKBOOK_HOST_SYSROOT="$(ROOT)/$(PREFIX_INSTALL)" && \ $(REPO_BIN) cook --with-package-deps "--filesystem=config/$(ARCH)/ci.toml" endif # CI toolchain ci-toolchain: $(CONTAINER_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(MAKE) PREFIX_BINARY=0 \ "prefix/$(TARGET)/gcc-install.tar.gz" \ "prefix/$(TARGET)/relibc-install.tar.gz" \ "prefix/$(TARGET)/rust-install.tar.gz" \ "prefix/$(TARGET)/clang-install.tar.gz" rm -rf "build/toolchain/$(HOST_TARGET)/$(TARGET)" mkdir -p "build/toolchain/$(HOST_TARGET)/$(TARGET)" cp "prefix/$(TARGET)/gcc-install.tar.gz" "build/toolchain/$(HOST_TARGET)/$(TARGET)/gcc-install.tar.gz" cp "prefix/$(TARGET)/relibc-install.tar.gz" "build/toolchain/$(HOST_TARGET)/$(TARGET)/relibc-install.tar.gz" cp "prefix/$(TARGET)/rust-install.tar.gz" "build/toolchain/$(HOST_TARGET)/$(TARGET)/rust-install.tar.gz" cp "prefix/$(TARGET)/clang-install.tar.gz" "build/toolchain/$(HOST_TARGET)/$(TARGET)/clang-install.tar.gz" cd "build/toolchain/$(HOST_TARGET)/$(TARGET)" && sha256sum -b * > SHA256SUM endif ================================================ FILE: mk/config.mk ================================================ # Configuration file of the build system environment variables -include .config HOST_ARCH?=$(shell uname -m) # Configuration ## Architecture to build Redox for (aarch64, i586, or x86_64). Defaults to a host one ARCH?=$(HOST_ARCH) ## Sub-device type for aarch64 if needed BOARD?= ## Enable to use binary prefix (much faster) PREFIX_BINARY?=1 ## Enable to use up-to-date rust compiler (experimental, only available to Tier 2 targets) ## Even more experimental, add -Zbuild-std to cookbook.toml to allow compilation to Tier 3 targets PREFIX_USE_UPSTREAM_RUST_COMPILER?=0 ## Enable to use binary packages (much faster) REPO_BINARY?=0 ## Name of the configuration to include in the image name e.g. desktop or server CONFIG_NAME?=desktop ## Build appstream data for repo REPO_APPSTREAM?=0 ## Ignore errors when building the repo, attempt to build every package REPO_NONSTOP?=0 ## Do not update source repos, attempt to build in offline condition REPO_OFFLINE?=0 ## Do not strip debug info for local build REPO_DEBUG?=0 ## Old config value that need to be corrected ifeq ($(ARCH),i686) ARCH=i586 endif ## Select filesystem config ifeq ($(BOARD),) ifeq ($(wildcard config/$(ARCH)/$(CONFIG_NAME).toml),) FILESYSTEM_CONFIG?=config/$(CONFIG_NAME).toml else FILESYSTEM_CONFIG?=config/$(ARCH)/$(CONFIG_NAME).toml endif else FILESYSTEM_CONFIG?=config/$(ARCH)/$(BOARD)/$(CONFIG_NAME).toml endif HOST_CARGO=env -u RUSTUP_TOOLCHAIN -u CC -u TARGET cargo ## Filesystem size in MB (default comes from filesystem_size in the FILESYSTEM_CONFIG) ## FILESYSTEM_SIZE?=$(shell $(INSTALLER) --filesystem-size -c $(FILESYSTEM_CONFIG)) ## Flags to pass to redoxfs-mkfs. Add --encrypt to set up disk encryption REDOXFS_MKFS_FLAGS?= ## Set to 1 to enable Podman build, any other value will disable it PODMAN_BUILD?=1 ## Set to 1 to put filesystem tools inside podman, any other value will install it to host FSTOOLS_IN_PODMAN?=0 ## Set to 1 if FUSE is not available and we are running in a container FSTOOLS_NO_MOUNT?=0 ## Enable sccache to speed up cargo builds ## only do this by default if this is inside podman SCCACHE_BUILD?=$(shell [ -f /run/.containerenv ] && echo 1 || echo 0) ## The containerfile to use for the Podman base image CONTAINERFILE?=podman/redox-base-containerfile # Per host variables NPROC=nproc SED=sed FIND=find REPO_BIN=./target/release/repo ifneq ($(PODMAN_BUILD),1) FSTOOLS_IN_PODMAN=0 HOST_TARGET := $(shell env -u RUSTUP_TOOLCHAIN rustc -vV | grep host | cut -d: -f2 | tr -d " ") # x86_64 linux hosts have all toolchains ifeq ($(PREFIX_BINARY),1) ifeq ($(HOST_TARGET),aarch64-unknown-linux-gnu) ifneq ($(ARCH),aarch64) ifneq ($(ARCH),x86_64) $(info The $(ARCH) binary prefix is only built for x86_64 Linux hosts) PREFIX_BINARY=0 endif endif else ifeq ($(HOST_TARGET),x86_64-unknown-linux-gnu) else $(info The $(ARCH) binary prefix is only built for Linux hosts) PREFIX_BINARY=0 endif endif endif ifeq ($(SCCACHE_BUILD),1) ifeq (,$(shell command -v sccache)) $(info sccache not found in PATH) SCCACHE_BUILD=0 endif endif ifeq ($(REPO_APPSTREAM),1) export COOKBOOK_APPSTREAM=true endif ifeq ($(REPO_NONSTOP),1) export COOKBOOK_NONSTOP=true endif ifeq ($(REPO_OFFLINE),1) export COOKBOOK_OFFLINE=true endif ifeq ($(REPO_DEBUG),1) export COOKBOOK_NOSTRIP=true export COOKBOOK_DEBUG=true #TODO: https://gitlab.redox-os.org/redox-os/relibc/-/issues/226 # export PROFILE=debug # export RUSTCFLAGS="-Cdebuginfo=2" endif UNAME := $(shell uname) ifeq ($(UNAME),Darwin) FUMOUNT=umount NPROC=sysctl -n hw.ncpu SED=gsed FIND=gfind VB_AUDIO=coreaudio VBM=/Applications/VirtualBox.app/Contents/MacOS/VBoxManage else ifeq ($(UNAME),FreeBSD) FIND=gfind FUMOUNT=sudo umount VB_AUDIO=pulse # To check, will probably be OSS on most setups VBM=VBoxManage else ifeq ($(UNAME),Redox) PODMAN_BUILD=0 # TODO: allow overriding to cross compiler toolchain when build server have one prebuilt HOSTED_REDOX=1 ifneq ($(shell which repo),) REPO_BIN=repo endif else # Detect which version of the fusermount binary is available. ifneq (, $(shell which fusermount3)) FUMOUNT=fusermount3 -u else FUMOUNT=fusermount -u endif VB_AUDIO=pulse VBM=VBoxManage endif # Automatic variables ROOT=$(CURDIR) export RUST_COMPILER_RT_ROOT=$(ROOT)/rust/src/llvm-project/compiler-rt export TESTBIN?= RUNNING_IN_PODMAN=$(shell [ -f /run/.containerenv ] && echo 1 || echo 0) ifeq ($(PODMAN_BUILD),1) ifeq ($(RUNNING_IN_PODMAN),1) $(info Please unset PODMAN_BUILD=1 in .config!) endif endif ALLOW_FSTOOLS?=0 ifeq ($(FSTOOLS_IN_PODMAN),0) ifeq ($(RUNNING_IN_PODMAN),0) ALLOW_FSTOOLS=1 endif endif ## Userspace variables ifeq ($(ARCH),riscv64gc) export TARGET=riscv64gc-unknown-redox export GNU_TARGET=riscv64-unknown-redox else export TARGET=$(ARCH)-unknown-redox export GNU_TARGET=$(ARCH)-unknown-redox endif BUILD=build/$(ARCH)/$(CONFIG_NAME) MOUNT_DIR=$(BUILD)/filesystem FSTOOLS=build/fstools INSTALLER=$(FSTOOLS)/bin/redox_installer REDOXFS=$(FSTOOLS)/bin/redoxfs REDOXFS_MKFS=$(FSTOOLS)/bin/redoxfs-mkfs INSTALLER_OPTS=--cookbook=. INSTALLER_FEATURES= REDOXFS_FEATURES= COOKBOOK_OPTS="--filesystem=$(FILESYSTEM_CONFIG)" ifeq ($(REPO_BINARY),1) INSTALLER_OPTS+=--repo-binary COOKBOOK_OPTS+=--repo-binary endif ifeq ($(FSTOOLS_NO_MOUNT),1) INSTALLER_OPTS+=--no-mount INSTALLER_FEATURES=--no-default-features --features installer REDOXFS_FEATURES= --no-default-features --features std,log endif REPO_TAG=$(BUILD)/repo.tag FSTOOLS_TAG=build/fstools.tag export BOARD FIND ifeq ($(SCCACHE_BUILD),1) export CC_WRAPPER:=sccache export RUSTC_WRAPPER:=$(CC_WRAPPER) endif ifeq ($(HOSTED_REDOX),1) FSTOOLS_TAG= endif ## If Podman is being used, a container is required ifeq ($(PODMAN_BUILD),1) CONTAINER_TAG=build/container.tag else CONTAINER_TAG= endif ================================================ FILE: mk/depends.mk ================================================ # Configuration file for the build system dependencies # Don't check for dependencies if you will be using Podman ifneq ($(PODMAN_BUILD),1) # Don't check for dependencies if you will be using Hosted Redox ifneq ($(HOSTED_REDOX),1) # don't check for Rust and Cargo if building on a Nix system ifneq ($(NIX_SHELL_BUILD),1) ifeq ($(shell which rustup),) $(error rustup not found, install from "https://rustup.rs/") endif endif # don't check for compile tools, used internally when installing fstools on host ifneq ($(SKIP_CHECK_TOOLS),1) ifeq ($(shell which cbindgen),) $(error cbindgen not found, install from crates.io or from your package manager) endif ifeq ($(shell which nasm),) $(error nasm not found, install from your package manager) endif ifeq ($(shell which just),) $(error 'just' not found, install from crates.io or from your package manager) endif endif endif endif ================================================ FILE: mk/disk.mk ================================================ # Configuration file with the commands configuration of the Redox image $(BUILD)/harddrive.img: $(FSTOOLS) $(REPO_TAG) ifeq ($(FSTOOLS_IN_PODMAN),1) $(PODMAN_RUN) make $@ else mkdir -p $(BUILD) -$(FUMOUNT) $(MOUNT_DIR) || true -$(FUMOUNT) /tmp/redox_installer || true rm -rf $@ $@.partial $(MOUNT_DIR) FILESYSTEM_SIZE=$(FILESYSTEM_SIZE) && \ if [ -z "$$FILESYSTEM_SIZE" ] ; then \ FILESYSTEM_SIZE=$(shell $(INSTALLER) --filesystem-size -c $(FILESYSTEM_CONFIG)); \ fi && \ truncate -s "$$FILESYSTEM_SIZE"m $@.partial umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) $@.partial mv $@.partial $@ endif $(BUILD)/redox-live.iso: $(FSTOOLS) $(REPO_TAG) redox.ipxe ifeq ($(FSTOOLS_IN_PODMAN),1) $(PODMAN_RUN) make $@ else mkdir -p $(BUILD) rm -rf $@ $@.partial -$(FUMOUNT) /tmp/redox_installer || true FILESYSTEM_SIZE=$(FILESYSTEM_SIZE) && \ if [ -z "$$FILESYSTEM_SIZE" ] ; then \ FILESYSTEM_SIZE=$(shell $(INSTALLER) --filesystem-size -c $(FILESYSTEM_CONFIG)); \ fi && \ truncate -s "$$FILESYSTEM_SIZE"m $@.partial umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) --write-bootloader="$(BUILD)/bootloader-live.efi" --live $@.partial mv $@.partial $@ cp redox.ipxe $(BUILD)/redox.ipxe endif $(BUILD)/filesystem.img: $(FSTOOLS) $(REPO_TAG) ifeq ($(FSTOOLS_IN_PODMAN),1) $(PODMAN_RUN) make $@ else mkdir -p $(BUILD) -$(FUMOUNT) $(MOUNT_DIR) || true rm -rf $@ $@.partial $(MOUNT_DIR) -$(FUMOUNT) /tmp/redox_installer || true FILESYSTEM_SIZE=$(FILESYSTEM_SIZE) && \ if [ -z "$$FILESYSTEM_SIZE" ] ; then \ FILESYSTEM_SIZE=$(shell $(INSTALLER) --filesystem-size -c $(FILESYSTEM_CONFIG)); \ fi && \ truncate -s "$$FILESYSTEM_SIZE"m $@.partial $(REDOXFS_MKFS) $(REDOXFS_MKFS_FLAGS) $@.partial mkdir -p $(MOUNT_DIR) $(REDOXFS) $@.partial $(MOUNT_DIR) sleep 1 pgrep redoxfs umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) $(MOUNT_DIR) sync -$(FUMOUNT) $(MOUNT_DIR) || true rm -rf $(MOUNT_DIR) mv $@.partial $@ endif mount: $(FSTOOLS) FORCE ifeq ($(FSTOOLS_IN_PODMAN),1) $(PODMAN_RUN) make $@ else @mkdir -p $(MOUNT_DIR) $(REDOXFS) $(BUILD)/harddrive.img $(MOUNT_DIR) @sleep 2 @echo "\033[1;36;49mharddrive.img mounted ($$(pgrep redoxfs))\033[0m" endif mount_extra: $(FSTOOLS) FORCE ifeq ($(FSTOOLS_IN_PODMAN),1) $(PODMAN_RUN) make $@ else @mkdir -p $(MOUNT_DIR) $(REDOXFS) $(BUILD)/extra.img $(MOUNT_DIR) @sleep 2 @echo "\033[1;36;49mextra.img mounted ($$(pgrep redoxfs))\033[0m" endif mount_live: $(FSTOOLS) FORCE ifeq ($(FSTOOLS_IN_PODMAN),1) $(PODMAN_RUN) make $@ else @mkdir -p $(MOUNT_DIR) $(REDOXFS) $(BUILD)/redox-live.iso $(MOUNT_DIR) @sleep 2 @echo "\033[1;36;49mredox-live.iso mounted ($$(pgrep redoxfs))\033[0m" endif unmount: FORCE ifeq ($(FSTOOLS_IN_PODMAN),1) $(PODMAN_RUN) make $@ else @sync -$(FUMOUNT) $(MOUNT_DIR) @rm -rf $(MOUNT_DIR) @-$(FUMOUNT) /tmp/redox_installer 2>/dev/null || true @echo "\033[1;36;49mFilesystem unmounted\033[0m" endif ================================================ FILE: mk/fstools.mk ================================================ # Configuration file for redox-installer, Cookbook and RedoxFS FUSE fstools: $(FSTOOLS_TAG) $(FSTOOLS) GOING_TO_PODMAN_AGAIN?=0 # These tools run inside Podman if it is used, or on the host if Podman is not used $(FSTOOLS): | prefix $(CONTAINER_TAG) $(FSTOOLS_TAG) ifeq ($(PODMAN_BUILD),1) ifeq ($(FSTOOLS_IN_PODMAN),1) $(PODMAN_RUN) make $@ else $(MAKE) $@ PODMAN_BUILD=0 SKIP_CHECK_TOOLS=1 GOING_TO_PODMAN_AGAIN=1 endif else rm -rf $@ $@.partial mkdir -p $@.partial ln -s ../../recipes $@.partial/recipes $(MAKE) fstools_fetch PODMAN_BUILD=$(GOING_TO_PODMAN_AGAIN) # Compile installer and redoxfs for host (may be outside of podman container) cd $@.partial && \ export CARGO_TARGET_DIR=../$@-target && \ $(HOST_CARGO) install --root . --path recipes/core/installer/source $(INSTALLER_FEATURES) && \ $(HOST_CARGO) install --root . --path recipes/core/redoxfs/source $(REDOXFS_FEATURES) mv $@.partial $@ touch $@ endif fstools_fetch: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(REPO_BIN) fetch installer redoxfs endif CARGO_OFFLINE_FLAG= ifeq ($(REPO_OFFLINE),1) CARGO_OFFLINE_FLAG=--offline endif $(FSTOOLS_TAG): $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(HOST_CARGO) build --manifest-path Cargo.toml --release --locked $(CARGO_OFFLINE_FLAG) mkdir -p $(@D) touch $@ endif fstools_clean: FORCE rm -rf target rm -rf $(FSTOOLS) rm -rf $(FSTOOLS)-target rm -f $(FSTOOLS_TAG) ================================================ FILE: mk/podman.mk ================================================ # Configuration file of the Podman commands # Configuration variables for running make in Podman ## Tag the podman image $IMAGE_TAG IMAGE_TAG?=redox-base ## Working Directory in Podman CONTAINER_WORKDIR?=/mnt/redox ## Flag passed to the Podman volumes. :Z can be used only with SELinux USE_SELINUX?=1 ifeq ($(USE_SELINUX),1) PODMAN_VOLUME_FLAG=:Z else PODMAN_VOLUME_FLAG= endif # Cache layers to redox-os docker hub PODMAN_CACHE= PODMAN_CACHE_PATH=docker.io/redoxos/$(IMAGE_TAG) PODMAN_CACHE_PULL?=1 ifeq ($(PODMAN_CACHE_PULL),1) PODMAN_CACHE+=--cache-from=$(PODMAN_CACHE_PATH) endif PODMAN_CACHE_PUSH?=0 ifeq ($(PODMAN_CACHE_PUSH),1) PODMAN_CACHE+=--cache-to=$(PODMAN_CACHE_PATH) endif ## Podman Home Directory PODMAN_HOME=$(ROOT)/build/podman ## Podman command with its many arguments PODMAN_VOLUMES=--volume $(ROOT):$(CONTAINER_WORKDIR)$(PODMAN_VOLUME_FLAG) --volume $(PODMAN_HOME):/root$(PODMAN_VOLUME_FLAG) PODMAN_ENV=--env PATH=/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env PODMAN_BUILD=0 PODMAN_CONFIG=--env ARCH=$(ARCH) --env BOARD=$(BOARD) --env CONFIG_NAME=$(CONFIG_NAME) --env FILESYSTEM_CONFIG=$(FILESYSTEM_CONFIG) --env PREFIX_BINARY=$(PREFIX_BINARY) \ --env CI=$(CI) --env COOKBOOK_MAKE_JOBS=$(COOKBOOK_MAKE_JOBS) --env COOKBOOK_LOGS=$(COOKBOOK_LOGS) --env COOKBOOK_VERBOSE=$(COOKBOOK_VERBOSE) --env COOKBOOK_COMPRESSED=$(COOKBOOK_COMPRESSED) \ --env REPO_APPSTREAM=$(REPO_APPSTREAM) --env REPO_BINARY=$(REPO_BINARY) --env REPO_NONSTOP=$(REPO_NONSTOP) --env REPO_OFFLINE=$(REPO_OFFLINE) --env TESTBIN=$(TESTBIN) \ --env HOSTED_REDOX=$(HOSTED_REDOX) --env PREFIX_USE_UPSTREAM_RUST_COMPILER=$(PREFIX_USE_UPSTREAM_RUST_COMPILER) PODMAN_OPTIONS=--rm --workdir $(CONTAINER_WORKDIR) --interactive --tty --cap-add SYS_ADMIN --device /dev/fuse --network=host --env TERM=$(TERM) --pids-limit=-1 PODMAN_RUN=podman run $(PODMAN_OPTIONS) $(PODMAN_VOLUMES) $(PODMAN_ENV) $(PODMAN_CONFIG) $(IMAGE_TAG) container_shell: build/container.tag ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) bash else @echo PODMAN_BUILD=$(PODMAN_BUILD), please set it to 1 in mk/config.mk endif container_clean: FORCE rm -f build/container.tag @echo "If podman dir cannot be removed, remove with \"sudo rm\"." -rm -rf $(PODMAN_HOME) || true @echo "For complete clean of images and containers, use \"podman system reset\"" -podman image rm --force $(IMAGE_TAG) || true container_touch: FORCE ifeq ($(PODMAN_BUILD),1) rm -f build/container.tag podman image exists $(IMAGE_TAG) || (echo "Image does not exist, it will be rebuilt during normal make."; exit 1) touch build/container.tag else @echo PODMAN_BUILD=$(PODMAN_BUILD), container not required. endif container_kill: FORCE podman kill --latest --signal SIGKILL ## Must match the value of CONTAINER_TAG in config.mk build/container.tag: $(CONTAINERFILE) ifeq ($(PODMAN_BUILD),1) rm -f $@ $(FSTOOLS_TAG) -podman image rm --force $(IMAGE_TAG) || true mkdir -p $(PODMAN_HOME) @echo "Building Podman image. This may take some time." cat $(CONTAINERFILE) | podman build --file - $(PODMAN_VOLUMES) $(PODMAN_CACHE) --tag $(IMAGE_TAG) $(PODMAN_RUN) bash -e podman/rustinstall.sh mkdir -p build touch $@ @echo "Podman ready!" else @echo PODMAN_BUILD=$(PODMAN_BUILD), container not required. endif container_push: build/container.tag podman push $(IMAGE_TAG) $(PODMAN_CACHE_PATH) KERNEL_PATH := recipes/core/kernel KERNEL_PATH_SOURCE := $(ROOT)/$(KERNEL_PATH)/source KERNEL_PATH_TARGET := $(ROOT)/$(KERNEL_PATH)/target/$(TARGET) # TODO: make this work using `make debug.kernel` and remove this kernel_debugger: @echo "Building and running gdbgui container..." podman build -t redox-kernel-debug - < $(ROOT)/podman/redox-gdb-containerfile podman run --rm -p 5000:5000 -it --name redox-gdb \ -v "$(KERNEL_PATH_TARGET)/build/kernel.sym:/kernel.sym" \ -v "$(KERNEL_PATH_SOURCE)/src:/src" \ redox-kernel-debug --gdb-cmd "gdb -ex 'set confirm off' \ -ex 'add-symbol-file /kernel.sym' \ -ex 'target remote host.containers.internal:1234'" ================================================ FILE: mk/prefix.mk ================================================ # Configuration file for the Rust/GCC cross-compilers, relibc and libtool PREFIX=prefix/$(TARGET) PREFIX_INSTALL=$(PREFIX)/sysroot/ PREFIX_PATH=$(ROOT)/$(PREFIX_INSTALL)/bin BINUTILS_TARGET=recipes/dev/binutils-gdb/target/$(HOST_TARGET)/$(TARGET) LIBTOOL_TARGET=recipes/dev/libtool/target/$(HOST_TARGET) GCC_TARGET=recipes/dev/gcc13/target/$(HOST_TARGET)/$(TARGET) LIBSTDCXX_TARGET=recipes/libs/libstdcxx-v3/target/$(TARGET)/$(HOST_TARGET) RELIBC_FREESTANDING_TARGET=recipes/core/relibc/target/$(TARGET)/$(HOST_TARGET) RELIBC_TARGET=recipes/core/relibc/target/$(TARGET) LLVM_TARGET=recipes/dev/llvm21/target/$(HOST_TARGET)/$(TARGET) RUST_TARGET=recipes/dev/rust/target/$(HOST_TARGET)/$(TARGET) CLANG_TARGET=recipes/dev/clang21/target/$(HOST_TARGET)/$(TARGET) LLD_TARGET=recipes/dev/lld21/target/$(HOST_TARGET)/$(TARGET) # official RISC-V support introduced in newer version UPSTREAM_RUSTC_VERSION=2025-11-15 export PREFIX_RUSTFLAGS=-L $(ROOT)/$(PREFIX_INSTALL)/$(TARGET)/lib export RUSTUP_TOOLCHAIN=$(ROOT)/$(PREFIX_INSTALL) export REDOXER_TOOLCHAIN=$(RUSTUP_TOOLCHAIN) PREFIX_CONFIG=CI=1 COOKBOOK_CLEAN_BUILD=true COOKBOOK_CLEAN_TARGET=false COOKBOOK_VERBOSE=true COOKBOOK_NONSTOP=false prefix: $(PREFIX)/sysroot # Remove prefix builds and downloads prefix_clean: rm -rf $(PREFIX) # Remove relibc in sysroot and all statically linked recipes static_clean: | $(FSTOOLS_TAG) $(MAKE) c.relibc $(MAKE) c.base,base-initfs,extrautils,kernel,ion,pkgutils,redoxfs $(MAKE) c.bash,luajit,gettext,openssl1,openssl3,pcre2,sdl1,zstd,zlib,bzip2,xz $(MAKE) c.expat,freetype2,libffi,libiconv,libjpeg,liborbital,libpng,libxml2,ncurses,ncursesw rm -rf $(REPO_TAG) $(PREFIX)/relibc-install: $(PREFIX)/clang-install $(PREFIX)/rust-install $(PREFIX)/gcc-install | $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding relibc-install\033[0m" rm -rf "$@.partial" "$@" mkdir "$@.partial" cp -r "$(PREFIX)/gcc-install/". "$@.partial" cp -r "$(PREFIX)/rust-install/". "$@.partial" cp -r "$(PREFIX)/clang-install/". "$@.partial" rm -rf "$@.partial/$(GNU_TARGET)/include/"* cp -r "$(PREFIX)/gcc-install/$(GNU_TARGET)/include/c++" "$@.partial/$(GNU_TARGET)/include/c++" export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ export CARGO="env -u CARGO cargo" $(PREFIX_CONFIG) && \ $(REPO_BIN) cook relibc cp -r "$(RELIBC_TARGET)/stage/usr/". "$@.partial/$(GNU_TARGET)" mkdir -p "$@.partial/$(GNU_TARGET)/usr" ln -s "../include" "$@.partial/$(GNU_TARGET)/usr/include" ln -s "../lib" "$@.partial/$(GNU_TARGET)/usr/lib" touch "$@.partial" mv "$@.partial" "$@" endif $(PREFIX)/relibc-install.tar.gz: $(PREFIX)/relibc-install tar \ --create \ --gzip \ --file "$@" \ --directory="$<" \ . $(PREFIX)/sysroot: $(PREFIX)/relibc-install $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else rm -rf "$@" cp -r "$(PREFIX)/relibc-install/" "$@" # adapt path for libtoolize sed 's|/usr/share|$(ROOT)/$@/share|g' "$@/bin/libtoolize.orig" > "$@/bin/libtoolize" chmod 0755 "$@/bin/libtoolize" touch "$@" endif # PREFIX_BINARY --------------------------------------------------- ifeq ($(PREFIX_BINARY),1) # PREFIX_BINARY FOR LINUX ----------------------------------------- ifneq ($(HOSTED_REDOX),1) $(PREFIX)/%.tar.gz: | $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p "$(@D)" wget -O $@.partial "https://static.redox-os.org/toolchain/$(HOST_TARGET)/$(TARGET)/$(@F)" mv $@.partial $@ endif $(PREFIX)/gcc-install $(PREFIX)/rust-install $(PREFIX)/clang-install: %: %.tar.gz | $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else rm -rf "$@.partial" "$@" mkdir -p "$@.partial" tar --extract --file "$<" --directory "$@.partial" --no-same-owner --strip-components=1 touch "$@.partial" mv "$@.partial" "$@" endif # PREFIX_BINARY FOR REDOX ----------------------------------------- else $(PREFIX)/id_ed25519.pub.toml: | $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p "$(@D)" wget -O $@.partial "https://static.redox-os.org/pkg/id_ed25519.pub.toml" mv $@.partial $@ endif $(PREFIX)/%.pkgar: $(PREFIX)/id_ed25519.pub.toml | $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p "$(@D)" wget -O $@.partial "https://static.redox-os.org/pkg/$(TARGET)/$(@F)" mv $@.partial $@ endif $(PREFIX)/gcc-install: $(PREFIX)/gcc13.pkgar $(PREFIX)/gcc13.cxx.pkgar $(PREFIX)/libgcc.pkgar $(PREFIX)/libstdcxx.pkgar $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else rm -rf "$@.partial" "$@" mkdir -p "$@.partial" pkgar extract --pkey $(PREFIX)/id_ed25519.pub.toml --archive "$(PREFIX)/gcc13.pkgar" "$@.partial" pkgar extract --pkey $(PREFIX)/id_ed25519.pub.toml --archive "$(PREFIX)/gcc13.cxx.pkgar" "$@.partial" pkgar extract --pkey $(PREFIX)/id_ed25519.pub.toml --archive "$(PREFIX)/libgcc.pkgar" "$@.partial" pkgar extract --pkey $(PREFIX)/id_ed25519.pub.toml --archive "$(PREFIX)/libstdcxx.pkgar" "$@.partial" touch "$@.partial" mv "$@.partial" "$@" endif $(PREFIX)/rust-install: $(PREFIX)/llvm21.pkgar $(PREFIX)/rust.pkgar $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else rm -rf "$@.partial" "$@" mkdir -p "$@.partial" pkgar extract --pkey $(PREFIX)/id_ed25519.pub.toml --archive "$(PREFIX)/llvm21.pkgar" "$@.partial" pkgar extract --pkey $(PREFIX)/id_ed25519.pub.toml --archive "$(PREFIX)/rust.pkgar" "$@.partial" touch "$@.partial" mv "$@.partial" "$@" endif $(PREFIX)/clang-install: $(PREFIX)/llvm21.runtime.pkgar $(PREFIX)/clang21.pkgar $(PREFIX)/lld21.pkgar $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else rm -rf "$@.partial" "$@" mkdir -p "$@.partial" pkgar extract --pkey $(PREFIX)/id_ed25519.pub.toml --archive "$(PREFIX)/llvm21.runtime.pkgar" "$@.partial" pkgar extract --pkey $(PREFIX)/id_ed25519.pub.toml --archive "$(PREFIX)/clang21.pkgar" "$@.partial" pkgar extract --pkey $(PREFIX)/id_ed25519.pub.toml --archive "$(PREFIX)/lld21.pkgar" "$@.partial" touch "$@.partial" mv "$@.partial" "$@" endif endif else $(PREFIX)/%.tar.gz: $(PREFIX)/% tar \ --create \ --gzip \ --file "$@" \ --directory="$<" \ . # BUILD GCC --------------------------------------------------- $(PREFIX)/libtool-install: | $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding libtool-install\033[0m" rm -rf "$@.partial" "$@" mkdir -p "$@.partial" export $(PREFIX_CONFIG) COOKBOOK_HOST_SYSROOT=/usr && \ $(REPO_BIN) cook host:libtool cp -r "$(LIBTOOL_TARGET)/stage/usr/". "$@.partial" mv "$@.partial/bin/libtoolize" "$@.partial/bin/libtoolize.orig" # adapt path for libtoolize sed 's|/usr/share|$(ROOT)/$@/share|g' "$@.partial/bin/libtoolize.orig" > "$@.partial/bin/libtoolize" chmod 0755 "$@.partial/bin/libtoolize" touch "$@.partial" mv "$@.partial" "$@" endif $(PREFIX)/binutils-install: | $(PREFIX)/libtool-install $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding binutils-install\033[0m" rm -rf "$@.partial" "$@" mkdir -p "$@.partial" export $(PREFIX_CONFIG) PATH="$(ROOT)/$(PREFIX)/libtool-install/bin:$$PATH" \ COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) COOKBOOK_CROSS_GNU_TARGET=$(GNU_TARGET) && \ $(REPO_BIN) cook host:binutils-gdb cp -r "$(BINUTILS_TARGET)/stage/usr/". "$@.partial" touch "$@.partial" mv "$@.partial" "$@" endif $(PREFIX)/gcc-freestanding-install: $(PREFIX)/binutils-install | $(PREFIX)/libtool-install $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding gcc-freestanding-install\033[0m" rm -rf "$@.partial" "$@" $(PREFIX)/relibc-freestanding-install $(PREFIX)/sysroot mkdir -p "$@.partial" $(PREFIX)/relibc-freestanding-install/$(GNU_TARGET)/include export $(PREFIX_CONFIG) PATH="$(ROOT)/$(PREFIX)/libtool-install/bin:$(ROOT)/$(PREFIX)/binutils-install/bin:$$PATH" \ COOKBOOK_LIBTOOL_DIR=$(ROOT)/$(PREFIX)/libtool-install COOKBOOK_CROSS_TARGET=$(TARGET) COOKBOOK_CROSS_GNU_TARGET=$(GNU_TARGET) \ COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_SYSROOT=$(ROOT)/$(PREFIX)/relibc-freestanding-install/$(GNU_TARGET) && \ $(REPO_BIN) cook host:gcc13 cp -r "$(GCC_TARGET)/stage/usr/". "$@.partial" cp -r "$(GCC_TARGET)/stage.cxx/usr/". "$@.partial" cp -r "$(PREFIX)/binutils-install/". "$@.partial" rm -rf $(PREFIX)/relibc-freestanding-install touch "$@.partial" mv "$@.partial" "$@" endif $(PREFIX)/relibc-freestanding-install: $(PREFIX)/gcc-freestanding-install | $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding relibc-freestanding-install\033[0m" rm -rf "$@.partial" "$@" mkdir -p "$@.partial" export CARGO="env -u CARGO -u RUSTUP_TOOLCHAIN cargo" RUSTUP="env -u CARGO -u RUSTUP_TOOLCHAIN rustup" && \ export PATH="$(ROOT)/$(PREFIX)/gcc-freestanding-install/bin:$$PATH" && \ export CC_$(subst -,_,$(TARGET))="$(GNU_TARGET)-gcc -isystem $(ROOT)/$@.partial/$(GNU_TARGET)/include" LINKFLAGS="" && \ export $(PREFIX_CONFIG) COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(HOST_TARGET) && \ $(REPO_BIN) cook relibc cp -r "$(RELIBC_FREESTANDING_TARGET)/stage/usr/". "$@.partial/$(GNU_TARGET)" touch "$@.partial" mv "$@.partial" "$@" endif $(PREFIX)/gcc-install: $(PREFIX)/relibc-freestanding-install | $(PREFIX)/libtool-install $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding gcc-install\033[0m" rm -rf "$@.partial" "$@-build.partial" "$@" if [ ! -d "$(ROOT)/$(GCC_TARGET)" ]; then \ echo "\033[1;38;5;196m Incomplete build stages. Please re-run the build\033[0m"; \ rm -rf "$(PREFIX)"/gcc-freestanding-install && "$(PREFIX)"/relibc-freestanding-install && \ exit 1; fi mkdir -p "$@.partial" "$@-build.partial" cp -r "$(PREFIX)/gcc-freestanding-install/". "$@.partial" cp -r "$(PREFIX)/relibc-freestanding-install/". "$@.partial" cp -r "$(PREFIX)/libtool-install/". "$@.partial" @#TODO: how to make this not conflict with libc? rm -f "$@.partial/lib/gcc/$(GNU_TARGET)/13.2.0/include/limits.h" # libgcc and freestanding libstdcxx export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ $(MAKE) -C "$(ROOT)/$(GCC_TARGET)/build" all-target-libgcc all-target-libstdc++-v3 && \ $(MAKE) -C "$(ROOT)/$(GCC_TARGET)/build" install-target-libgcc install-target-libstdc++-v3 DESTDIR="$(ROOT)/$@-build.partial/usr" cp -r "$@-build.partial/usr/". "$@.partial" @#TODO: in riscv64gc libgcc_s.so is a GNU ld script rm -f "$@.partial"/$(GNU_TARGET)/lib/libgcc_s.so ln -s libgcc_s.so.1 "$@.partial"/$(GNU_TARGET)/lib/libgcc_s.so @#TODO: generates wrong lib path for libtool rm -f "$@.partial"/$(GNU_TARGET)/lib/libstdc++.la rm -f "$@.partial"/$(GNU_TARGET)/lib/libsupc++.la # hosted libstdcxx export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \ export $(PREFIX_CONFIG) "COOKBOOK_HOST_SYSROOT=$(ROOT)/$@.partial" COOKBOOK_CROSS_TARGET=$(HOST_TARGET) && \ rm -rf "$(LIBSTDCXX_TARGET)/stage" && $(REPO_BIN) cook libstdcxx-v3 cp -r "$(LIBSTDCXX_TARGET)/stage/usr/". "$@.partial/$(GNU_TARGET)" rm -rf "$@-build.partial" touch "$@.partial" mv "$@.partial" "$@" # no longer needed, delete build files to save disk space rm -rf $(BINUTILS_TARGET) $(LIBTOOL_TARGET) $(GCC_TARGET) $(LIBSTDCXX_TARGET) $(RELIBC_FREESTANDING_TARGET) endif # RUST FROM UPSTREAM COMPILER --------------------------------------------------- ifeq ($(PREFIX_USE_UPSTREAM_RUST_COMPILER),1) PREFIX_RUST_VERSION_TAG=$(PREFIX)/rustc-version-tag-$(UPSTREAM_RUSTC_VERSION) $(PREFIX_RUST_VERSION_TAG): rm -f "$(PREFIX)"/rustc-version-tag-* rm -f "$(PREFIX)"/rustc-install.tar.xz rm -f "$(PREFIX)"/cargo-install.tar.xz rm -f "$(PREFIX)"/rust-std-host-install.tar.xz rm -f "$(PREFIX)"/rust-std-target-install.tar.xz rm -f "$(PREFIX)"/rust-src-install.tar.xz: mkdir -p "$(@D)" touch $@ $(PREFIX)/rustc-install.tar.xz $(PREFIX)/cargo-install.tar.xz: $(PREFIX)/%-install.tar.xz: | $(PREFIX_RUST_VERSION_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p "$(@D)" wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/$*-nightly-$(HOST_TARGET).tar.xz" mv $@.partial $@ endif $(PREFIX)/rust-std-host-install.tar.xz: | $(PREFIX_RUST_VERSION_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p "$(@D)" wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rust-std-nightly-$(HOST_TARGET).tar.xz" mv $@.partial $@ endif $(PREFIX)/rust-std-target-install.tar.xz: | $(PREFIX_RUST_VERSION_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p "$(@D)" ifeq ($(TARGET),x86_64-unknown-redox) wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rust-std-nightly-$(TARGET).tar.xz" mv $@.partial $@ else touch $@ endif endif $(PREFIX)/rust-src-install.tar.xz: | $(PREFIX_RUST_VERSION_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p "$(@D)" wget -O $@.partial "https://static.rust-lang.org/dist/$(UPSTREAM_RUSTC_VERSION)/rust-src-nightly.tar.xz" mv $@.partial $@ endif $(PREFIX)/rust-install: $(PREFIX)/rustc-install.tar.xz $(PREFIX)/cargo-install.tar.xz $(PREFIX)/rust-std-host-install.tar.xz $(PREFIX)/rust-std-target-install.tar.xz $(PREFIX)/rust-src-install.tar.xz ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding rust-install\033[0m" rm -rf "$@.partial" "$@" mkdir -p "$@.partial" tar --extract --file "$(PREFIX)/rustc-install.tar.xz" -C "$@.partial" rustc-nightly-$(HOST_TARGET)/rustc/ --strip-components=2 tar --extract --file "$(PREFIX)/cargo-install.tar.xz" --directory "$@.partial" cargo-nightly-$(HOST_TARGET)/cargo/ --strip-components=2 tar --extract --file "$(PREFIX)/rust-std-host-install.tar.xz" --directory "$@.partial" rust-std-nightly-$(HOST_TARGET)/rust-std-$(HOST_TARGET)/ --strip-components=2 tar --extract --file "$(PREFIX)/rust-src-install.tar.xz" --directory "$@.partial" rust-src-nightly/rust-src/ --strip-components=2 ifeq ($(TARGET),x86_64-unknown-redox) tar --extract --file "$(PREFIX)/rust-std-target-install.tar.xz" --directory "$@.partial" rust-std-nightly-$(TARGET)/rust-std-$(TARGET)/ --strip-components=2 endif rm -f "$@.partial/manifest.in" touch "$@.partial" mv "$@.partial" "$@" endif # BUILD RUST --------------------------------------------------- else $(PREFIX)/rust-install: | $(PREFIX)/libtool-install $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding rust-install\033[0m" rm -rf "$@.partial" "$@" export PATH="$(ROOT)/$(PREFIX)/libtool-install/bin:$$PATH" \ $(PREFIX_CONFIG) COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) && \ $(REPO_BIN) cook host:llvm21 host:rust cp -r "$(RUST_TARGET)/stage/usr/". "$@.partial" cp -r "$(LLVM_TARGET)/stage/usr/". "$@.partial" mv "$@.partial" "$@" # TODO: Cache from RUST_TARGET is currently not cleared. # TIP: If you're developing std for rust, remove COOKBOOK_CLEAN_BUILD=true # at the top of this file so your next rust build reuses the build cache endif endif # BUILD CLANG --------------------------------------------------- $(PREFIX)/clang-install: | $(PREFIX)/rust-install $(PREFIX)/libtool-install $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @echo "\033[1;36;49mBuilding clang-install\033[0m" rm -rf "$@.partial" "$@" export PATH="$(ROOT)/$(PREFIX)/libtool-install/bin:$$PATH" \ $(PREFIX_CONFIG) COOKBOOK_HOST_SYSROOT=/usr COOKBOOK_CROSS_TARGET=$(TARGET) && \ $(REPO_BIN) cook host:llvm21 host:clang21 host:lld21 # llvm libraries is already in rust if building ifeq ($(PREFIX_USE_UPSTREAM_RUST_COMPILER),1) cp -r "$(LLVM_TARGET)/stage/usr/". "$@.partial" endif cp -r "$(LLVM_TARGET)/stage.dev/usr/". "$@.partial" cp -r "$(LLVM_TARGET)/stage.runtime/usr/". "$@.partial" cp -r "$(CLANG_TARGET)/stage/usr/". "$@.partial" cp -r "$(LLD_TARGET)/stage/usr/". "$@.partial" mv "$@.partial" "$@" # no longer needed, delete build files to save disk space rm -rf $(LLVM_TARGET) $(CLANG_TARGET) $(LLD_TARGET) endif endif ================================================ FILE: mk/qemu.mk ================================================ # Configuration file for QEMU QEMU=qemu-system-$(QEMU_ARCH) QEMUFLAGS=-d guest_errors -name "Redox OS $(ARCH)" netboot?=no redoxer?=no VGA_SUPPORTED=no ifeq ($(ARCH),i586) audio?=ac97 disk?=ata gpu?=vga uefi=no VGA_SUPPORTED=yes QEMU_ARCH=i386 QEMU_MACHINE?=pc QEMU_CPU?=pentium2 QEMU_SMP?=1 QEMU_MEM?=1024 # Default to using kvm when arch is i586 and host is x86_64 ifeq ($(HOST_ARCH),x86_64) kvm?=yes endif else ifeq ($(ARCH),x86_64) gpu?=vga uefi?=yes VGA_SUPPORTED=yes QEMU_ARCH=x86_64 QEMU_MACHINE?=q35 QEMU_CPU?=core2duo QEMU_SMP?=4 QEMU_MEM?=2048 ifeq ($(uefi),yes) FIRMWARE=$(firstword \ $(wildcard /usr/share/ovmf/OVMF.fd) \ $(wildcard /usr/share/OVMF/OVMF_CODE.fd) \ ) ifeq ($(FIRMWARE),) PFLASH0=$(firstword \ $(wildcard /usr/share/qemu/edk2-x86_64-code.fd) \ $(wildcard /opt/homebrew/opt/qemu/share/qemu/edk2s-x86_64-code.fd) \ ) endif endif ifneq ($(usb),no) QEMUFLAGS+=-device qemu-xhci endif else ifeq ($(ARCH),aarch64) # Default to UEFI as U-Boot doesn't set up a framebuffer for us and we don't yet support # setting up a framebuffer ourself. uefi?=yes live?=yes gpu?=ramfb QEMU_ARCH=aarch64 QEMU_MACHINE?=virt QEMU_CPU=max QEMU_SMP?=1 QEMU_MEM?=2048 ifeq ($(BOARD),raspi3bp) QEMU_KERNEL=$(BUILD)/raspi3bp_uboot.rom disk?=sdcard gpu=none QEMU_MACHINE:=raspi3b QEMU_SMP:=4 QEMU_MEM:=1024 net:=usb-net audio:=no ifneq ($(usb),no) QEMUFLAGS+=-usb -device usb-kbd -device usb-tablet endif else ifeq ($(uefi),yes) FIRMWARE=$(firstword \ $(wildcard /usr/share/AAVMF/AAVMF_CODE.fd) \ ) ifeq ($(FIRMWARE),) PFLASH0=$(firstword \ $(wildcard /usr/share/qemu/edk2-aarch64-code.fd) \ $(wildcard /opt/homebrew/opt/qemu/share/qemu/edk2-aarch64-code.fd) \ ) endif else FIRMWARE=$(BUILD)/qemu_uboot.rom endif ifneq ($(usb),no) QEMUFLAGS+=-device qemu-xhci -device usb-kbd -device usb-tablet endif endif # Default to using HVF when host is MacOS Silicon ifeq ($(HOST_ARCH),arm64) kvm?=yes endif else ifeq ($(ARCH),riscv64gc) live=no audio=no gpu?=ramfb net=bridge QEMU_ARCH=riscv64 # QEMU_MACHINE=virt for ACPI mode instead of DTB QEMU_MACHINE=virt,acpi=off # QEMU_MACHINE:=${QEMU_MACHINE},aclint=on # QEMU_MACHINE:=${QEMU_MACHINE},aia=aplic # QEMU_MACHINE:=${QEMU_MACHINE},aia=aplic-imsic QEMU_SMP?=4 QEMU_MEM?=2048 QEMU_CPU=max PFLASH0=$(firstword \ $(wildcard /usr/share/qemu-efi-riscv64/RISCV_VIRT_CODE.fd) \ $(wildcard /usr/share/edk2/riscv/RISCV_VIRT_CODE.fd) \ $(wildcard /usr/share/qemu/edk2-riscv-code.fd) \ $(wildcard /opt/homebrew/opt/qemu/share/qemu/edk2-riscv-code.fd) \ ) PFLASH1=$(firstword \ $(wildcard /usr/share/qemu-efi-riscv64/RISCV_VIRT_VARS.fd) \ $(wildcard /usr/share/edk2/riscv/RISCV_VIRT_VARS.fd) \ $(wildcard /usr/share/qemu/edk2-riscv-vars.fd) \ $(wildcard /opt/homebrew/opt/qemu/share/qemu/edk2-riscv-vars.fd) \ ) ifneq ($(usb),no) QEMUFLAGS+=-device qemu-xhci -device usb-kbd -device usb-tablet endif else $(error Unsupported ARCH for QEMU "$(ARCH)")) endif QEMUFLAGS+=-smp $(QEMU_SMP) -m $(QEMU_MEM) # If host and target arch do not match, disable kvm # (unless overridden above or by environment) ifneq ($(ARCH),$(HOST_ARCH)) kvm?=no endif # wsl2: run qemu on windows instead ifeq ($(QEMU_ON_WINDOWS),1) QEMU:=$(QEMU).exe WINDOWS_DISK=/mnt/c/ProgramData/redox.img disk=windows net=windows QEMU_MACHINE=pc FIRMWARE= QEMU_KERNEL= QEMUFLAGS+=-device usb-tablet endif ifneq ($(FIRMWARE),) QEMUFLAGS+=-bios $(FIRMWARE) endif ifneq ($(QEMU_KERNEL),) QEMUFLAGS+=-kernel $(QEMU_KERNEL) endif ifeq ($(live),yes) DISK=$(BUILD)/redox-live.iso else DISK=$(BUILD)/harddrive.img endif ifeq ($(serial),no) QEMUFLAGS+=-chardev stdio,id=debug -device isa-debugcon,iobase=0x402,chardev=debug else QEMUFLAGS+=-chardev stdio,id=debug,signal=off,mux=on,"$(if $(qemu_serial_logfile),logfile=$(qemu_serial_logfile))" QEMUFLAGS+=-serial chardev:debug -mon chardev=debug endif # redoxer exit code: 51 => success, 53 => failure ifeq ($(redoxer),yes) ifeq ($(ARCH),x86_64) QEMUFLAGS+=-device isa-debug-exit else ifeq ($(ARCH),i586) QEMUFLAGS+=-device isa-debug-exit else ifeq ($(ARCH),aarch64) QEMUFLAGS+=-semihosting-config enable=on,target=native,userspace=on endif endif ifeq ($(iommu),yes) QEMUFLAGS+=-machine $(QEMU_MACHINE),iommu=on else QEMUFLAGS+=-machine $(QEMU_MACHINE) endif ifeq ($(audio),no) # No audio else ifeq ($(audio),ac97) # AC'97 QEMUFLAGS+=-device AC97 else # Intel High Definition Audio QEMUFLAGS+=-device ich9-intel-hda -device hda-output endif ifeq ($(net),no) QEMUFLAGS+=-net none else ifeq ($(net),rtl8139) # RTL8139 QEMUFLAGS+=-device rtl8139,netdev=net0 else ifeq ($(net),virtio) # virtio-net QEMUFLAGS+=-device virtio-net,netdev=net0 else ifeq ($(net),usb-net) QEMUFLAGS+=-device usb-net,netdev=net0 else QEMUFLAGS+=-device e1000,netdev=net0,id=nic0 endif EXTRANETARGS= ifeq ($(netboot),yes) EXTRANETARGS+=,tftp=$(BUILD),bootfile=redox.ipxe QEMUFLAGS+=-kernel /usr/lib/ipxe/ipxe-amd64.efi endif ifneq ($(bridge),) QEMUFLAGS+=-netdev bridge,br=$(bridge),id=net0 else ifeq ($(net),redir) # port 8022 - ssh # port 8080-8083 - webservers # port 64126 - our gdbserver implementation FWD_PORTS := 8081 8082 8083 64126 FWD_FLAGS := hostfwd=tcp::8022-:22,hostfwd=tcp::8080-:80 FWD_FLAGS2 := $(foreach p,$(FWD_PORTS),,hostfwd=tcp::$(p)-:$(p)) QEMUFLAGS += -netdev user,id=net0,$(FWD_FLAGS)$(subst $(eval ) ,,$(FWD_FLAGS2))$(EXTRANETARGS) else ifeq ($(net),windows) QEMUFLAGS+=-netdev user,id=net0$(EXTRANETARGS) else QEMUFLAGS+=-netdev user,id=net0$(EXTRANETARGS) -object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap endif endif ifeq ($(gpu),no) QEMUFLAGS+=-nographic -vga none else ifeq ($(gpu),vga) ifeq ($(VGA_SUPPORTED),yes) QEMUFLAGS+=-vga std else QEMUFLAGS+=-vga none -device secondary-vga endif else ifeq ($(gpu),ramfb) QEMUFLAGS+=-vga none -device ramfb else ifeq ($(gpu),multi) ifeq ($(VGA_SUPPORTED),yes) QEMUFLAGS+=-display sdl -vga none -device virtio-vga,max_outputs=2 else QEMUFLAGS+=-display sdl -vga none -device virtio-gpu,max_outputs=2 endif else ifeq ($(gpu),virtio) ifeq ($(VGA_SUPPORTED),yes) QEMUFLAGS+=-vga none -device virtio-vga else QEMUFLAGS+=-vga none -device virtio-gpu endif else ifeq ($(gpu),virtio-sdl) ifeq ($(VGA_SUPPORTED),yes) QEMUFLAGS+=-vga none -device virtio-vga -display sdl,show-cursor=on else QEMUFLAGS+=-vga none -device virtio-gpu -display sdl,show-cursor=on endif else ifeq ($(gpu),virtio-gl) ifeq ($(VGA_SUPPORTED),yes) QEMUFLAGS+=-display gtk,gl=on -vga none -device virtio-vga-gl else QEMUFLAGS+=-display gtk,gl=on -vga none -device virtio-gpu-gl endif endif EXTRA_DISK=$(BUILD)/extra.img disk?=nvme ifeq ($(disk),ata) # For i386, ata will use ided # For aarch64 and x86_64, ata will use ahcid QEMUFLAGS+= \ -drive file=$(DISK),format=raw \ -drive file=$(EXTRA_DISK),format=raw else ifeq ($(disk),nvme) QEMUFLAGS+= \ -drive file=$(DISK),format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \ -drive file=$(EXTRA_DISK),format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA else ifeq ($(disk),usb) QEMUFLAGS+= \ -drive if=none,id=usbstick,format=raw,file=$(DISK) \ -device usb-storage,drive=usbstick else ifeq ($(disk),virtio) QEMUFLAGS+= \ -drive file=$(DISK),format=raw,if=virtio \ -drive file=$(EXTRA_DISK),format=raw,if=virtio else ifeq ($(disk),cdrom) QEMUFLAGS+= \ -boot d -cdrom $(DISK) \ -drive file=$(EXTRA_DISK),format=raw else ifeq ($(disk),sdcard) QEMUFLAGS+=-drive file=$(DISK),if=sd,format=raw else ifeq ($(disk),windows) QEMUFLAGS+=-drive file="$(shell wslpath -w $(WINDOWS_DISK))",format=raw,if=virtio endif ifeq ($(gdb),yes) QEMUFLAGS+=-d cpu_reset -s -S else ifeq ($(gdb),nonblock) # Allow attaching gdb, but don't block for it QEMUFLAGS+=-d cpu_reset -s endif ifeq ($(UNAME),Linux) ifneq ($(kvm),no) ifeq ($(QEMU_ON_WINDOWS),1) QEMUFLAGS+=-accel whpx,kernel-irqchip=off -cpu Broadwell,x2apic=off else QEMUFLAGS+=-enable-kvm -cpu host endif else QEMUFLAGS+=-cpu $(QEMU_CPU) endif endif ifeq ($(UNAME),Darwin) ifneq ($(kvm),no) QEMUFLAGS+=-accel hvf -cpu max else QEMUFLAGS+=-cpu $(QEMU_CPU) endif endif ifneq ($(PFLASH0),) QEMUFLAGS+=-drive if=pflash,format=raw,unit=0,file=$(PFLASH0),readonly=on endif ifneq ($(PFLASH1),) QEMUFLAGS+=-drive if=pflash,format=raw,unit=1,file=$(BUILD)/fw_vars.bin endif .PHONY: qemu-deps qemu-deps: $(DISK) ifeq ($(disk),usb) else ifeq ($(disk),sdcard) else ifeq ($(disk),windows) qemu-deps: $(WINDOWS_DISK) else qemu-deps: $(EXTRA_DISK) endif qemu-deps:$(FIRMWARE) qemu-deps:$(QEMU_KERNEL) qemu-deps: $(PFLASH0) ifneq ($(PFLASH1),) qemu-deps: $(BUILD)/fw_vars.bin .PRECIOUS: $(BUILD)/fw_vars.bin $(BUILD)/fw_vars.bin: $(PFLASH1) cp "$<" "$@" endif $(EXTRA_DISK): truncate -s 1g $@ $(WINDOWS_DISK): $(BUILD)/harddrive.img rm -f $@ mkdir -p $(shell dirname $@) cp "$<" "$@" $(BUILD)/raspi3bp_uboot.rom: wget -O $@ https://gitlab.redox-os.org/Ivan/redox_firmware/-/raw/main/platform/raspberry_pi/rpi3/u-boot-rpi-3-b-plus.bin $(BUILD)/qemu_uboot.rom: wget -O $@ https://gitlab.redox-os.org/Ivan/redox_firmware/-/raw/main/platform/qemu/qemu_arm64/u-boot-qemu-arm64.bin qemu: qemu-deps $(QEMU) $(QEMUFLAGS) ================================================ FILE: mk/repo.mk ================================================ # Configuration file for recipe commands $(REPO_TAG): prefix $(FILESYSTEM_CONFIG) | $(FSTOOLS) $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else export PATH="$(PREFIX_PATH):$$PATH" && \ export COOKBOOK_HOST_SYSROOT="$(ROOT)/$(PREFIX_INSTALL)" && \ $(REPO_BIN) cook $(COOKBOOK_OPTS) --with-package-deps mkdir -p $(BUILD) touch $@ endif comma := , # List all recipes in a cook-tree fashion specified by the filesystem config repo-tree: $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @$(REPO_BIN) cook-tree $(COOKBOOK_OPTS) --with-package-deps endif # List all recipes in a push-tree fashion specified by the filesystem config image-tree: $(FSTOOLS_TAG) $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @$(REPO_BIN) push-tree $(COOKBOOK_OPTS) endif # Clean specific target to all recipes, similar to repo_clean but more specific repo_clean_target: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(REPO_BIN) clean-target --all endif # Fetch all recipes source or binary from filesystem config fetch: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else export PATH="$(PREFIX_PATH):$$PATH" && \ export COOKBOOK_HOST_SYSROOT="$(ROOT)/$(PREFIX_INSTALL)" && \ $(REPO_BIN) fetch $(COOKBOOK_OPTS) --with-package-deps endif # Fetch Cargo dependencies for the cookbook tool (needed for REPO_OFFLINE=1 builds) cargo-fetch: FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(HOST_CARGO) fetch --manifest-path Cargo.toml --locked endif # Find recipe for one or more targets separated by comma find.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else @$(REPO_BIN) find $(foreach f,$(subst $(comma), ,$*),$(f)) endif # Invoke clean for relibc in recipe and relibc in sysroot c.relibc: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(REPO_BIN) clean relibc rm -rf $(PREFIX)/relibc-install $(PREFIX)/sysroot @echo "\033[1;36;49mSysroot cleaned\033[0m" endif # Invoke clean for one or more targets separated by comma c.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(REPO_BIN) clean $(foreach f,$(subst $(comma), ,$*),$(f)) endif # Invoke fetch for one or more targets separated by comma f.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else export PATH="$(PREFIX_PATH):$$PATH" && \ export COOKBOOK_HOST_SYSROOT="$(ROOT)/$(PREFIX_INSTALL)" && \ $(REPO_BIN) fetch $(foreach f,$(subst $(comma), ,$*),$(f)) $(COOKBOOK_OPTS) endif # Invoke cook for one or more targets separated by comma r.%: prefix $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else export PATH="$(PREFIX_PATH):$$PATH" && \ export COOKBOOK_HOST_SYSROOT="$(ROOT)/$(PREFIX_INSTALL)" && \ $(REPO_BIN) cook $(foreach f,$(subst $(comma), ,$*),$(f)) $(COOKBOOK_OPTS) endif # Show what to cook rt.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(REPO_BIN) cook-tree $(foreach f,$(subst $(comma), ,$*),$(f)) $(COOKBOOK_OPTS) endif MOUNTED_TAG=$(MOUNT_DIR)~ # Push compiled package into existing image # DO NOT RUN THIS WHILE QEMU ALIVE, THE DISK MIGHT CORRUPT IN DOING SO p.%: $(FSTOOLS_TAG) FORCE ifeq ($(ALLOW_FSTOOLS),1) @rm -f $(MOUNTED_TAG) @if [ ! -d "$(MOUNT_DIR)" ]; then \ $(MAKE) mount; \ touch $(MOUNTED_TAG); \ fi endif ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ ALLOW_FSTOOLS=$(FSTOOLS_IN_PODMAN) else $(REPO_BIN) push $(foreach f,$(subst $(comma), ,$*),$(f)) "--sysroot=$(MOUNT_DIR)" endif ifeq ($(ALLOW_FSTOOLS),1) @if [ -f $(MOUNTED_TAG) ]; then \ $(MAKE) unmount && rm -f $(MOUNTED_TAG); \ else echo "\033[0;33;49mNot unmounting by ourself, don't forget to do it\033[0m"; \ fi endif # Show what to push pt.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(REPO_BIN) push-tree $(foreach f,$(subst $(comma), ,$*),$(f)) $(COOKBOOK_OPTS) endif # Push all recipes specified by the filesystem config push: $(FSTOOLS_TAG) FORCE ifeq ($(ALLOW_FSTOOLS),1) @rm -f $(MOUNTED_TAG) @if [ ! -d "$(MOUNT_DIR)" ]; then \ $(MAKE) mount; \ touch $(MOUNTED_TAG); \ fi endif ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ ALLOW_FSTOOLS=$(FSTOOLS_IN_PODMAN) else $(REPO_BIN) push $(COOKBOOK_OPTS) --with-package-deps "--sysroot=$(MOUNT_DIR)" endif ifeq ($(ALLOW_FSTOOLS),1) @if [ -f $(MOUNTED_TAG) ]; then \ $(MAKE) unmount && rm -f $(MOUNTED_TAG); \ else echo "\033[1;33;49mNot unmounting by ourself, don't forget to do it\033[0m"; \ fi endif # Rebuild and push all recipes specified by the filesystem config rebuild-push: $(FSTOOLS_TAG) FORCE rm -f $(REPO_TAG) $(MAKE) repo $(MAKE) push # Invoke unfetch for one or more targets separated by comma u.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(REPO_BIN) unfetch $(foreach f,$(subst $(comma), ,$*),$(f)) endif # Invoke clean, and repo.sh for one of more targets separated by comma cr.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(MAKE) c.$* $(MAKE) r.$* endif # Invoke unfetch, clean, and repo.sh for one or more targets separated by comma ucr.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(MAKE) u.$* $(MAKE) cr.$* endif # Invoke unfetch and clean for one or more targets separated by comma uc.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(MAKE) u.$* $(MAKE) c.$* endif # Invoke unfetch, clean and fetch for one or more targets separated by comma ucf.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else $(MAKE) uc.$* $(MAKE) f.$* endif # Invoke repo.sh and push for one of more targets separated by comma # Don't use podman here, as the p target cannot mount inside podman rp.%: $(FSTOOLS_TAG) FORCE $(MAKE) r.$*,--with-package-deps $(MAKE) p.$* # Invoke clean, repo.sh and push for one of more targets separated by comma crp.%: $(FSTOOLS_TAG) FORCE $(MAKE) cr.$*,--with-package-deps $(MAKE) p.$* # Invoke unfetch. clean, repo.sh and push for one of more targets separated by comma ucrp.%: $(FSTOOLS_TAG) FORCE $(MAKE) ucr.$*,--with-package-deps $(MAKE) p.$* export DEBUG_BIN?= # Debug a statically linked program with gdbgui, for example: debug.drivers-initfs DEBUG_BIN=pcid # Enable debug symbols with `REPO_DEBUG=1 make cr.recipe rebuild`, make sure `file` outputs "debug_info, not stripped" # Open http://localhost:5000/dashboard, start QEMU with `make qemu kvm=no QEMU_SMP=1 gdb=yes` before opening a session # Experimental, may not work if ARCH is different with what host is running debug.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) @cd $(shell make find.$* | grep ^recipes) && \ export RECIPE_STAGE=target/$(TARGET)/stage && \ export BIN_PATH=$$(find $$RECIPE_STAGE -type f -name "$(DEBUG_BIN)" -or -type f -name "$*") && \ file $$BIN_PATH 2> /dev/null || ( echo "Binary is not found, please set DEBUG_BIN" && exit 1 ) && \ echo "Opening gdbgui for debugging $* with binary '$$BIN_PATH'" && echo "----------" && \ podman build -t redox-kernel-debug - < $(ROOT)/podman/redox-gdb-containerfile > /dev/null && \ podman run --rm -p 5000:5000 -it --name redox-gdb \ -v "./$$BIN_PATH:/binary" \ -v "./source:/source" -w "/source" \ redox-kernel-debug --gdb-cmd "gdb -ex 'set confirm off' \ -ex 'add-symbol-file /binary' \ -ex 'target remote host.containers.internal:1234'" else @cd $(shell make find.$* | grep ^recipes) && \ export RECIPE_STAGE=target/$(TARGET)/stage && \ export BIN_PATH=$$(find $$RECIPE_STAGE -type f -name "$(DEBUG_BIN)" -or -type f -name "$*") && \ file $$BIN_PATH 2> /dev/null || ( echo "Binary is not found, please set DEBUG_BIN" && exit 1 ) && \ echo "Opening gdbgui for debugging $* with binary '$$BIN_PATH'" && echo "----------" && \ gdbgui.pex --gdb-cmd "gdb -ex 'set confirm off' \ -ex 'add-symbol-file $$BIN_PATH' \ -ex 'target remote localhost:1234'" endif ================================================ FILE: mk/virtualbox.mk ================================================ # Configuration file for VirtualBox, it creates a VirtualBox virtual machine virtualbox: $(BUILD)/harddrive.img echo "Delete VM" -$(VBM) unregistervm Redox --delete; \ if [ $$? -ne 0 ]; \ then \ if [ -d "$$HOME/VirtualBox VMs/Redox" ]; \ then \ echo "Redox directory exists, deleting..."; \ $(RM) -rf "$$HOME/VirtualBox VMs/Redox"; \ fi \ fi echo "Delete Disk" -$(RM) harddrive.vdi echo "Create VM" $(VBM) createvm --name Redox --register echo "Set Configuration" $(VBM) modifyvm Redox --memory 2048 $(VBM) modifyvm Redox --vram 32 if [ "$(net)" != "no" ]; \ then \ $(VBM) modifyvm Redox --nic1 nat; \ $(VBM) modifyvm Redox --nictype1 82540EM; \ $(VBM) modifyvm Redox --cableconnected1 on; \ $(VBM) modifyvm Redox --nictrace1 on; \ $(VBM) modifyvm Redox --nictracefile1 "$(ROOT)/$(BUILD)/network.pcap"; \ fi $(VBM) modifyvm Redox --uart1 0x3F8 4 $(VBM) modifyvm Redox --uartmode1 file "$(ROOT)/$(BUILD)/serial.log" $(VBM) modifyvm Redox --usb off # on $(VBM) modifyvm Redox --keyboard ps2 $(VBM) modifyvm Redox --mouse ps2 $(VBM) modifyvm Redox --audio-driver $(VB_AUDIO) $(VBM) modifyvm Redox --audiocontroller hda $(VBM) modifyvm Redox --audioout on $(VBM) modifyvm Redox --nestedpaging on echo "Create Disk" $(VBM) convertfromraw $< $(BUILD)/harddrive.vdi echo "Attach Disk" $(VBM) storagectl Redox --name ATA --add sata --controller IntelAHCI --bootable on --portcount 1 $(VBM) storageattach Redox --storagectl ATA --port 0 --device 0 --type hdd --medium $(BUILD)/harddrive.vdi echo "Run VM" $(VBM) startvm Redox ================================================ FILE: native_bootstrap.sh ================================================ #!/usr/bin/env bash # This script is used to setup the Redox build system # It installs Rustup, the recipe dependencies for cross-compilation # and downloads the build system configuration files set -e ########################################################## # This function is simply a banner to introduce the script ########################################################## banner() { echo "|------------------------------------------|" echo "|----- Welcome to the Redox bootstrap -----|" echo "|------------------------------------------|" } ############################################################################ # This function takes care of installing a dependency via package manager of # choice for building Redox on BSDs (macOS, FreeBSD, etc.). # @params: $1 package manager # $2 package name # $3 binary name (optional) ############################################################################ install_bsd_pkg() { PKG_MANAGER=$1 PKG_NAME=$2 BIN_NAME=$3 if [ -z "$BIN_NAME" ]; then BIN_NAME=$PKG_NAME fi BIN_LOCATION=$(which $BIN_NAME || true) if [ -z "$BIN_LOCATION" ]; then echo "$PKG_MANAGER install $PKG_NAME" $PKG_MANAGER install "$PKG_NAME" else echo "$BIN_NAME already exists at $BIN_LOCATION, no need to install $PKG_NAME..." fi } install_macports_pkg() { install_bsd_pkg "sudo port" "$1" "$2" } install_brew_pkg() { install_bsd_pkg "brew" $@ } install_brew_cask_pkg() { install_bsd_pkg "brew cask" $@ } install_freebsd_pkg() { install_bsd_pkg "sudo pkg" $@ } ############################################################################## # This function checks which of the supported package managers is available on # the macOS host. # If a supported package manager is found, it delegates the installing work to # the relevant function. # Otherwise this function will exit this script with an error. ############################################################################## osx() { if [ ! -z "$(which brew)" ]; then osx_homebrew $@ elif [ ! -z "$(which port)" ]; then osx_macports $@ else echo "Please install either Homebrew or MacPorts, if you wish to use this script" echo "Re-run this script once you installed one of those package managers" echo "Will not install, now exiting..." exit 1 fi } ############################################################################ # This function takes care of installing all dependencies using MacPorts for # building Redox on macOS # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################ osx_macports() { echo "MacPorts detected! Now updating..." sudo port -v selfupdate echo "Installing missing packages..." install_macports_pkg "git" if [ "$1" == "qemu" ]; then install_macports_pkg "qemu" "qemu-system-x86_64" elif [ "$1" == "virtualbox" ]; then install_macports_pkg "virtualbox" else echo "Unknown emulator: $1" exit 1 fi install_macports_pkg "autoconf" install_macports_pkg "automake" install_macports_pkg "bison" install_macports_pkg "cmake" install_macports_pkg "coreutils" install_macports_pkg "curl" install_macports_pkg "doxygen" install_macports_pkg "expat" install_macports_pkg "file" install_macports_pkg "findutils" install_macports_pkg "flex" install_macports_pkg "gcc14" install_macports_pkg "gdb +multiarch" install_macports_pkg "gmake" install_macports_pkg "gmp" install_macports_pkg "gpatch" install_macports_pkg "jpeg" install_macports_pkg "libpng" install_macports_pkg "libsdl12" install_macports_pkg "libsdl2_ttf" install_macports_pkg "libtool" install_macports_pkg "m4" install_macports_pkg "meson" install_macports_pkg "nasm" install_macports_pkg "ninja" install_macports_pkg "openssl11" install_macports_pkg "openssl3" install_macports_pkg "osxfuse" install_macports_pkg "p5-html-parser" install_macports_pkg "patchelf" install_macports_pkg "perl5.24" install_macports_pkg "pkgconfig" install_macports_pkg "po4a" install_macports_pkg "protobuf-c" install_macports_pkg "py37-mako" install_macports_pkg "python311" install_macports_pkg "scons" install_macports_pkg "texinfo" install_macports_pkg "unzip" install_macports_pkg "wget" install_macports_pkg "x86_64-elf-gcc" install_macports_pkg "xdg-utils" install_macports_pkg "zip" } ############################################################################ # This function takes care of installing all dependencies using Homebrew for # building Redox on macOS # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################ osx_homebrew() { echo "Homebrew detected! Now updating..." brew update echo "Installing missing packages..." install_brew_pkg "git" if [ "$1" == "qemu" ]; then install_brew_pkg "qemu" "qemu-system-x86_64" elif [ "$1" == "virtualbox" ]; then install_brew_pkg "virtualbox" else echo "Unknown emulator: $1" exit 1 fi install_brew_pkg "ant" install_brew_pkg "autoconf" install_brew_pkg "automake" install_brew_pkg "bison" install_brew_pkg "cmake" install_brew_pkg "curl" install_brew_pkg "doxygen" install_brew_pkg "expat" install_brew_pkg "findutils" install_brew_pkg "flex" install_brew_pkg "gcc@14" install_brew_pkg "gdb" install_brew_pkg "gettext" install_brew_pkg "gmp" install_brew_pkg "gpatch" install_brew_pkg "jpeg" install_brew_pkg "libpng" install_brew_pkg "libtool" install_brew_pkg "llvm" install_brew_pkg "m4" install_brew_pkg "macfuse" install_brew_pkg "make" install_brew_pkg "meson" install_brew_pkg "nasm" install_brew_pkg "ninja" install_brew_pkg "openssl@1.1" install_brew_pkg "openssl@3.0" install_brew_pkg "patchelf" install_brew_pkg "perl" install_brew_pkg "pkg-config" install_brew_pkg "po4a" install_brew_pkg "protobuf" install_brew_pkg "python@3.11" install_brew_pkg "scons" install_brew_pkg "sdl12-compat" install_brew_pkg "sdl2_ttf" install_brew_pkg "texinfo" install_brew_pkg "unzip" install_brew_pkg "wget" install_brew_pkg "zip" install_brew_pkg "redox-os/gcc_cross_compilers/x86_64-elf-gcc" "x86_64-elf-gcc" } ####################################################################### # This function takes care of installing all dependencies using pkg for # building Redox on FreeBSD # @params: $1 the emulator to install, "virtualbox" or "qemu" ####################################################################### freebsd() { set -x echo "FreeBSD detected!" echo "Installing missing packages..." install_freebsd_pkg "git" if [ "$1" == "qemu" ]; then install_freebsd_pkg "qemu" "qemu-system-x86_64" elif [ "$1" == "virtualbox" ]; then install_freebsd_pkg "virtualbox" else echo "Unknown emulator: $1" exit 1 fi install_freebsd_pkg "autoconf" install_freebsd_pkg "automake" install_freebsd_pkg "bison" install_freebsd_pkg "cmake" install_freebsd_pkg "coreutils" install_freebsd_pkg "curl" install_freebsd_pkg "doxygen" install_freebsd_pkg "expat2" install_freebsd_pkg "file" install_freebsd_pkg "findutils" install_freebsd_pkg "flex" install_freebsd_pkg "fusefs-libs3" install_freebsd_pkg "gcc" install_freebsd_pkg "gdb" install_freebsd_pkg "gettext" install_freebsd_pkg "gmake" install_freebsd_pkg "gmp" install_freebsd_pkg "libjpeg-turbo" install_freebsd_pkg "libtool" install_freebsd_pkg "m4" install_freebsd_pkg "meson" install_freebsd_pkg "nasm" install_freebsd_pkg "ninja" install_freebsd_pkg "openssl" install_freebsd_pkg "p5-HTML-Parser" install_freebsd_pkg "patch" install_freebsd_pkg "patchelf" install_freebsd_pkg "perl5.36" install_freebsd_pkg "pkgconf" install_freebsd_pkg "png" install_freebsd_pkg "po4a" install_freebsd_pkg "py-protobuf-compiler" install_freebsd_pkg "python" install_freebsd_pkg "scons" install_freebsd_pkg "sdl12" install_freebsd_pkg "sdl2_ttf" install_freebsd_pkg "syslinux" install_freebsd_pkg "texinfo" install_freebsd_pkg "unzip" install_freebsd_pkg "wget" install_freebsd_pkg "xdg-utils" install_freebsd_pkg "zip" set +x } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Arch Linux # @params: $1 the emulator to install, "virtualbox" or "qemu" # $2 install non-interactively, boolean ############################################################################### archLinux() { noninteractive=$2 pacman_install="pacman -S --needed" if [ "$noninteractive" = true ]; then pacman_install+=" --noconfirm" fi echo "Detected Arch Linux" packages="ant \ autoconf \ automake \ bison \ cmake \ curl \ doxygen \ expat \ file \ flex \ fuse \ gdb \ git \ gmp \ libjpeg-turbo \ libpng \ libtool \ m4 \ make \ meson \ nasm \ patch \ patchelf \ perl \ perl-html-parser \ pkgconf \ po4a \ protobuf \ python \ python-mako \ rsync \ scons \ sdl12-compat \ syslinux \ texinfo \ unzip \ waf \ wget \ xdg-utils \ zip" if [ "$1" == "qemu" ]; then packages="$packages qemu-system-x86 qemu-system-arm qemu-system-riscv" elif [ "$1" == "virtualbox" ]; then packages="$packages virtualbox" else echo "Unknown emulator: $1" exit 1 fi # Scripts should not cause a system update in order to just install a # couple of packages. If pacman -S --needed is going to fail, let it fail # and the user will figure out the issues (without updating if required) # and rerun the script. #echo "Updating system..." #sudo pacman -Syu echo "Installing packages $packages..." sudo $pacman_install $packages } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Debian-based Linux # @params: $1 the emulator to install, "virtualbox" or "qemu" # $2 install non-interactively, boolean # $3 the package manager to use ############################################################################### ubuntu() { noninteractive=$2 package_manager=$3 echo "Detected Ubuntu/Debian" echo "Updating system..." sudo $package_manager update if [ $package_manager == "apt-get" ]; then if [ "$noninteractive" = true ]; then install_command+="DEBIAN_FRONTEND=noninteractive apt-get install --assume-yes --quiet" else install_command="apt-get install" fi else install_command="$package_manager install" fi echo "Installing required packages..." pkgs="\ ant \ appstream \ appstream-compose \ autoconf \ autoconf2.69 \ automake \ autopoint \ bison \ bsdextrautils \ build-essential \ clang \ cmake \ curl \ dos2unix \ doxygen \ expect \ file \ flex \ fuse3 \ g++ \ gdb-multiarch \ genisoimage \ git \ git-lfs \ gtk-doc-tools \ help2man \ intltool \ libc6-dev-i386 \ libfuse3-dev \ libgdk-pixbuf2.0-bin \ libglib2.0-dev-bin \ libgmp-dev \ libhtml-parser-perl \ libjpeg-dev \ libmpfr-dev \ libparse-yapp-perl \ libsdl1.2-dev \ libsdl2-ttf-dev \ llvm \ lua5.4 \ lzip \ m4 \ make \ meson \ nasm \ ninja-build \ patch \ patchelf \ perl \ pkg-config \ po4a \ protobuf-compiler \ python3 \ python3-dev \ python3-mako \ python3-venv \ rsync \ ruby \ scons \ ssh \ syslinux-utils \ texinfo \ unifdef \ unzip \ wget \ xdg-utils \ xfonts-utils \ xorg-dev \ xutils-dev \ xxd \ zip \ zstd" # Not availible for at least ARM hosts case "$host_arch" in x86*|i?86) pkgs="$pkgs libc6-dev-i386 syslinux-utils";; esac sudo $install_command $pkgs if [ "$1" == "qemu" ]; then if [ -z "$(which qemu-system-x86_64)" ]; then echo "Installing QEMU..." sudo $install_command qemu-system-x86 qemu-kvm sudo $install_command qemu-system-arm qemu-efi-aarch64 sudo $install_command qemu-system-riscv else echo "QEMU already installed!" fi elif [ "$1" == "virtualbox" ]; then if [ -z "$(which virtualbox)" ]; then if grep '^ID=debian$' /etc/os-release > /dev/null; then echo "Virtualbox is not in the official debian packages" echo "To install virtualbox on debian, see https://wiki.debian.org/VirtualBox" echo "Please install VirtualBox and re-run this script," echo "or run with -e qemu" exit 1 else echo "Installing VirtualBox..." sudo $install_command virtualbox fi else echo "VirtualBox already installed!" fi else echo "Unknown emulator: $1" exit 1 fi } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Fedora Linux # @params: $1 the emulator to install, "virtualbox" or "qemu" # $2 install non-interactively, boolean ############################################################################### fedora() { noninteractive=$2 dnf_install="dnf install" if [ "$noninteractive" = true ]; then dnf_install+=" --assumeyes --quiet" fi echo "Detected Fedora" if [ -z "$(which git)" ]; then echo "Installing git..." sudo $dnf_install git-all fi if [ "$1" == "qemu" ]; then if [ -z "$(which qemu-system-x86_64)" ]; then echo "Installing QEMU..." sudo $dnf_install qemu-system-x86 qemu-kvm sudo $dnf_install qemu-system-arm edk2-aarch64 sudo $dnf_install qemu-system-riscv else echo "QEMU already installed!" fi elif [ "$1" == "virtualbox" ]; then if [ -z "$(which virtualbox)" ]; then echo "Please install VirtualBox and re-run this script," echo "or run with -e qemu" exit 1 else echo "VirtualBox already installed!" fi else echo "Unknown emulator: $1" exit 1 fi # Use rpm -q to check if it's already installed PKGS=$(for pkg in @development-tools \ ant \ autoconf \ automake \ bison \ cmake \ curl \ doxygen \ expat \ expat-devel \ file \ flex \ fuse-devel \ fuse3-devel \ gcc \ gcc-c++ \ gdb \ genisoimage \ gettext-devel \ glibc-devel.i686 \ gmp-devel \ help2man \ libjpeg-turbo-devel \ libpng-devel \ libtool \ lzip \ m4 \ make \ meson \ nasm \ ninja-build \ openssl \ patch \ patchelf \ perl \ perl-FindBin \ perl-HTML-Parser \ perl-Pod-Html \ perl-Pod-Xhtml \ pkgconf-pkg-config \ po4a \ protobuf-compiler \ python3-mako \ SDL2_ttf-devel \ sdl12-compat-devel \ syslinux \ texinfo \ unzip \ vim \ waf \ zip \ zstd ; do rpm -q $pkg > /dev/null || echo $pkg; done) # If the list of packages is not empty, install missing COUNT=$(echo $PKGS | wc -w) if [ $COUNT -ne 0 ]; then echo "Installing necessary build tools..." sudo $dnf_install $PKGS fi } ############################################################################### # This function takes care of installing all dependencies for building Redox on # *SUSE Linux ############################################################################### suse() { echo "Detected SUSE Linux" packages=( "ant" "autoconf" "automake" "bison" "cmake" "curl" "doxygen" "file" "flex" "fuse-devel" "gcc" "gcc-c++" "gdb-multiarch" "gettext-tools" "glibc-devel-32bit" "gmp-devel" "libexpat-devel" "libjpeg8-devel" "libpng16-devel" "libtool" "m4" "make" "meson" "nasm" "ninja" "openssl" "patch" "patchelf" "perl" "perl-HTML-Parser" "pkgconf" "po4a" "protobuf" "python-Mako" "scons" "syslinux-utils" "unzip" "wget" "xdg-utils" "zip" ) if [ -z "$(which git)" ]; then echo "Will install git ..." packages+=(git) fi if [ "$1" == "qemu" ]; then if [ -z "$(which qemu-system-x86_64)" ]; then echo "Will install QEMU..." packages+=(qemu-x86 qemu-kvm) else echo "QEMU already installed!" fi elif [ "$1" == "virtualbox" ]; then if [ -z "$(which virtualbox)" ]; then echo "Please install VirtualBox and re-run this script," echo "or run with -e qemu" exit 1 else echo "VirtualBox already installed!" fi else echo "Unknown emulator: $1" exit 1 fi echo "Installing necessary build tools..." # We could install all the packages in a single zypper command with: # # zypper install package1 package2 package3 # # But there is an issue with this: zypper returns a success code if at # least one of the packages was correctly installed, but we need it to fail # if any of the packages is missing. # # To confirm that the packages are available, we try to install them one by # one with --dry-run. # We still install all the packages in a single zypper command so that the # user has to confirm only once. for p in ${packages[@]}; do if rpm -q "${p}" > /dev/null ; then echo "${p} is already installed" else # Zypper shows a confirmation prompt and the "y" answer even with # --non-interactive and --no-confirm: # # 1 new package to install. # Overall download size: 281.7 KiB. Already cached: 0 B. # After the operation, additional 394.6 KiB will be used. # Continue? [y/n/v/...? shows all options] (y): y # # That could make the user think that the package was installed, # when it was only a dry run. # To avoid the confusion, we hide the output unless there was an # error. if out="$(zypper --non-interactive install --no-confirm --dry-run --force-resolution ${p} 2>&1)" ; then echo "${p} can be installed" else echo "no" echo "" echo "Zypper output:" echo "" echo "${out}" echo "" echo "Could not find how to install '${p}', try running:" echo "" echo " zypper install ${p}" echo "" exit 1 fi fi done zypper install ${packages[@]} } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Gentoo Linux # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### gentoo() { echo "Detected Gentoo Linux" if [ -z "$(which nasm)" ]; then echo "Installing nasm..." sudo emerge dev-lang/nasm fi if [ -z "$(which git)" ]; then echo "Installing git..." sudo emerge dev-vcs/git fi if [ -z "$(which fusermount 2>/dev/null)" ] && [ -z "$(which fusermount3 2>/dev/null)" ]; then echo "Installing fuse..." sudo emerge sys-fs/fuse fi if [ "$1" == "qemu" ]; then if [ -z "$(which qemu-system-x86_64)" ]; then echo "Please install QEMU and re-run this script" echo "Step1. Add QEMU_SOFTMMU_TARGETS=\"x86_64\" to /etc/portage/make.conf" echo "Step2. Execute \"sudo emerge app-emulation/qemu\"" exit 1 else echo "QEMU already installed!" fi elif [ "$1" == "virtualbox" ]; then if [ -z "$(which virtualbox)" ]; then echo "Please install VirtualBox and re-run this script," echo "or run with -e qemu" exit 1 else echo "VirtualBox already installed!" fi else echo "Unknown emulator: $1" exit 1 fi if [ -z "$(which cmake)" ]; then echo "Installing cmake..." sudo emerge dev-util/cmake fi if [ -z "$(ldconfig -p | grep fontconfig)" ]; then sudo emerge media-libs/fontconfig fi } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Solus # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### solus() { echo "Detected Solus" if [ "$1" == "qemu" ]; then if [ -z "$(which qemu-system-x86_64)" ]; then sudo eopkg it qemu else echo "QEMU already installed!" fi elif [ "$1" == "virtualbox" ]; then if [ -z "$(which virtualbox)" ]; then echo "Please install VirtualBox and re-run this script," echo "or run with -e qemu" exit 1 else echo "VirtualBox already installed!" fi else echo "Unknown emulator: $1" exit 1 fi echo "Installing necessary build tools..." #if guards are not necessary with eopkg since it does nothing if latest version is already installed sudo eopkg it autoconf \ automake \ binutils-gold \ bison \ cmake \ flex \ fuse-devel \ fuse2-devel \ g++ \ gcc \ glibc-devel \ git \ libgcc-32bit \ libpng-devel \ libstdc++-32bit \ libtool-devel \ linux-headers \ m4 \ make \ nasm \ patch \ patchelf \ perl-html-parser \ pkg-config \ po4a \ rsync } ############################################################################### # Helper function to detect if we're running on Redox OS # This needs to be checked before FreeBSD since both use 'pkg' package manager ############################################################################### is_os_redox() { [ "$(uname -s)" = "Redox" ] } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Redox OS itself (bootstrapping Redox on Redox) # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### redox() { echo "Detected Redox OS" # Check if git is installed if [ -z "$(which git)" ]; then echo "Installing git..." sudo pkg install git fi # Handle emulator selection if [ "$1" == "qemu" ]; then echo "QEMU is not available on Redox OS yet, but it is mandatory for running the built system." echo "Please install QEMU manually on a compatible host or use another machine to run the emulator." exit 1 elif [ "$1" == "virtualbox" ]; then echo "VirtualBox is not supported on Redox OS." exit 1 else echo "Unknown emulator: $1" exit 1 fi echo "Installing necessary build tools..." # Core development packages that are available on x86_64 Redox # This list is based on list of "cookbook" and "dev-essential" recipe packages="autoconf \ automake \ cbindgen \ expat \ gcc13 \ gcc13.cxx \ git \ gnu-grep \ gnu-make \ installer \ libgmp \ libjpeg \ libpng \ nasm \ patch \ pkgar \ pkg-config \ python312 \ rust \ sdl1 \ sdl2-ttf \ vim" # Try to install packages, but don't fail if some are unavailable # since Redox package ecosystem is still developing for pkg in $PKGS; do if ! pkg list | grep -q "^${pkg}"; then echo "Attempting to install ${pkg}..." if ! sudo pkg install ${pkg} 2>/dev/null; then echo "Warning: ${pkg} could not be installed. It may not be available yet." fi else echo "${pkg} is already installed." fi done echo "" echo "Note: Building Redox on Redox itself is experimental." echo "Some dependencies may not be available yet in the Redox package repository." echo "For the best build experience, consider using podman_bootstrap.sh on another system." } ###################################################################### # This function outlines the different options available for bootstrap ###################################################################### usage() { echo "------------------------" echo "|Redox bootstrap script|" echo "------------------------" echo "Usage: ./native_bootstrap.sh" echo "OPTIONS:" echo echo " -h,--help Show this prompt" echo " -u [branch] Update git repo and update rust" echo " If blank defaults to master" echo " -s Check the status of the current travis build" echo " -e [emulator] Install specific emulator, virtualbox or qemu" echo " -p [package Choose an Ubuntu package manager, apt-fast or" echo " manager] aptitude" echo " -d Only install the dependencies, skip boot step" echo " -y Install non-interactively. Answer \"yes\" or" echo " select the default option for rustup and package" echo " managers. Only the apt, dnf and pacman" echo " package managers are supported." echo "EXAMPLES:" echo echo "./native_bootstrap.sh -e qemu" exit } ############################################################# # Looks for and installs a cargo-managed binary or subcommand ############################################################# cargoInstall() { if is_os_redox ; then # in redox OS, cargo is not based on rustup. Packages are managed by pkg return 0 fi if [[ "`cargo +stable install --list`" != *"$1 v$2"* ]]; then cargo +stable install --force --version "$2" "$1" else echo "You have $1 version $2 installed already!" fi } ############################################################################# # This function takes care of everything associated to rust, and the version # manager that controls it, it can install rustup and uninstall multirust as # well as making sure that the correct version of rustc is selected by rustup # @params: $1 install non-interactively, boolean ############################################################################# rustInstall() { if is_os_redox ; then # in redox OS, rustup is not available. Packages are managed by pkg return 0 fi noninteractive=$1 # Check to see if multirust is installed, we don't want it messing with rustup # In the future we can probably remove this but I believe it's good to have for now if [ -e /usr/local/lib/rustlib/uninstall.sh ] ; then echo "It appears that multirust is installed on your system." echo "This tool has been deprecated by the maintainer, and will cause issues." echo "This script can remove multirust from your system if you wish." printf "Uninstall multirust (y/N):" read multirust if echo "$multirust" | grep -iq "^y" ;then sudo /usr/local/lib/rustlib/uninstall.sh else echo "Please manually uninstall multirust and any other versions of rust, then re-run bootstrap." exit 1 fi fi # If rustup is not installed we should offer to install it for them if [ -z "$(which rustup)" ]; then rustup_options="--default-toolchain stable" echo "You do not have rustup installed." if [ "$noninteractive" = true ]; then rustup="y" rustup_options+=" -y" else echo "We HIGHLY recommend using rustup." echo "Would you like to install it now?" echo "*WARNING* this involves a 'curl | sh' style command" printf "(y/N): " read rustup fi if echo "$rustup" | grep -iq "^y" ;then #install rustup curl https://sh.rustup.rs -sSf | sh -s -- $rustup_options # You have to add the rustup variables to the $PATH echo "export PATH=\"\$HOME/.cargo/bin:\$PATH\"" >> ~/.bashrc # source the variables so that we can execute rustup commands in the current shell source ~/.cargo/env else echo "Rustup will not be installed!" fi fi if [ -z "$(which rustc)" ]; then echo "Rust is not installed" echo "Please either run the script again, accepting rustup install" echo "or install rustc stable manually (not recommended) via:" echo "\#curl -sSf https://static.rust-lang.org/rustup.sh | sh -s -- --channel=stable" exit 1 else echo "Your Rust install looks good!" fi } #################################################################### # This function gets the current build status from travis and prints # a message to the user #################################################################### statusCheck() { for i in $(echo "$(curl -sf https://api.travis-ci.org/repositories/redox-os/redox.json)" | tr "," "\n") do if echo "$i" | grep -iq "last_build_status" ;then if echo "$i" | grep -iq "0" ;then echo echo "********************************************" echo "Travis reports that the last build succeeded!" echo "Looks like you are good to go!" echo "********************************************" elif echo "$i" | grep -iq "null" ;then echo echo "******************************************************************" echo "The Travis build did not finish, this is an error with its config." echo "I cannot reliably determine whether the build is succeeding or not." echo "Consider checking for and maybe opening an issue on gitlab" echo "******************************************************************" else echo echo "**************************************************" echo "Travis reports that the last build *FAILED* :(" echo "Might want to check out the issues before building" echo "**************************************************" fi fi done } ########################################################################### # This function is the main logic for the bootstrap; it clones the git repo # then it installs the rust version manager and the latest version of rustc ########################################################################### boot() { echo "Cloning gitlab repo..." git clone https://gitlab.redox-os.org/redox-os/redox.git --origin upstream echo "Creating .config with PODMAN_BUILD=0" echo 'PODMAN_BUILD?=0' > redox/.config echo "Cleaning up..." rm native_bootstrap.sh echo echo "---------------------------------------" echo "Well it looks like you are ready to go!" echo "---------------------------------------" statusCheck echo echo "** Be sure to update your path to include Rust - run the following command: **" echo 'source $HOME/.cargo/env' echo echo "Run the following commands to build Redox:" echo "cd redox" MAKE="make" if [[ "$(uname)" == "FreeBSD" ]]; then MAKE="gmake" echo "kldload fuse.ko # This loads the kernel module for FUSE" fi echo "$MAKE all" echo "$MAKE virtualbox or qemu" echo echo " Good luck!" exit } if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then usage elif [ "$1" == "-u" ]; then git pull upstream master exit elif [ "$1" == "-s" ]; then statusCheck exit fi host_arch=$(uname -m) emulator="qemu" defpackman="apt-get" dependenciesonly=false update=false noninteractive=false while getopts ":e:p:udhys" opt do case "$opt" in e) emulator="$OPTARG";; p) defpackman="$OPTARG";; d) dependenciesonly=true;; u) update=true;; h) usage;; y) noninteractive=true;; s) statusCheck && exit;; \?) echo "I don't know what to do with that option, try -h for help"; exit 1;; esac done banner if [ "Darwin" == "$(uname -s)" ]; then echo "Detected macOS!" echo "WARNING: Building Redox OS on MacOS is not recommended, please use podman_bootstrap.sh instead." echo "WARNING: Our toolchain is not designed to work on MacOS and it relies on FUSE which requires kernel extensions." echo "WARNING: If you want to continue anyway, please wait for 3 seconds or cancel this script now!" sleep 3 fi if [ "$update" == "true" ]; then git pull upstream master exit fi rustInstall "$noninteractive" if [ "Darwin" == "$(uname -s)" ]; then osx "$emulator" else # Here we will use package managers to determine which operating system the user is using. # Redox OS if is_os_redox; then redox "$emulator" # SUSE and derivatives elif hash 2>/dev/null zypper; then suse "$emulator" # Debian or any derivative of it elif hash 2>/dev/null apt-get; then ubuntu "$emulator" "$noninteractive" "$defpackman" # Fedora elif hash 2>/dev/null dnf; then fedora "$emulator" "$noninteractive" # Gentoo elif hash 2>/dev/null emerge; then gentoo "$emulator" # Solus elif hash 2>/dev/null eopkg; then solus "$emulator" # Arch Linux elif hash 2>/dev/null pacman; then archLinux "$emulator" "$noninteractive" # FreeBSD elif hash 2>/dev/null pkg; then freebsd "$emulator" # Unsupported platform else printf "\e[31;1mFatal error: \e[0;31mUnsupported platform, please open an issue\e[0m\n" fi fi cargoInstall just 1.42.4 cargoInstall cbindgen 0.29.0 if [ "$dependenciesonly" = false ]; then boot fi echo "Redox bootstrap complete!" ================================================ FILE: podman/redox-base-containerfile ================================================ # Configuration file to install the recipe dependencies inside the Podman container FROM docker.io/library/debian:trixie RUN apt-get update \ && apt-get install -y --no-install-recommends \ appstream \ appstream-compose \ autoconf \ autoconf2.69 \ automake \ autopoint \ bison \ bsdextrautils \ build-essential \ cmake \ curl \ dos2unix \ doxygen \ expect \ file \ flex \ fuse3 \ g++ \ genisoimage \ git \ git-lfs \ gobject-introspection \ gtk-doc-tools \ gtk-update-icon-cache \ help2man \ ipxe-qemu \ intltool \ libaudiofile-dev \ libdbus-glib-1-dev-bin \ libfuse3-dev \ libgdk-pixbuf2.0-bin \ libglib2.0-dev-bin \ libhtml-parser-perl \ librsvg2-common \ libsdl1.2-dev \ libsdl2-ttf-dev \ lzip \ m4 \ make \ meson \ nano \ nasm \ ninja-build \ patch \ patchelf \ perl \ pkg-config \ po4a \ protobuf-compiler \ qemu-system-x86 \ qemu-system-arm \ qemu-efi-aarch64 \ python3 \ python3-dev \ python3-libxml2 \ python3-mako \ python3-venv \ rsync \ ruby \ scons \ ssh \ texinfo \ unifdef \ unzip \ wget \ xdg-utils \ xfonts-utils \ xserver-xorg-dev \ xutils-dev \ xxd \ zip \ && if [ "$(uname -m)" = "x86_64" ]; then \ apt-get install -y --no-install-recommends \ libc6-dev-i386 \ syslinux-utils \ ; fi ================================================ FILE: podman/redox-gdb-containerfile ================================================ FROM debian:stable-backports RUN apt-get update \ && apt-get install -y --no-install-recommends -t stable-backports \ python3 \ python3-pip \ gdb \ curl \ && rm -rf /var/lib/apt/lists/* RUN pip3 install gdbgui --break-system-packages EXPOSE 5000 ENTRYPOINT [ "gdbgui", "--remote", "--port", "5000" ] ================================================ FILE: podman/rustinstall.sh ================================================ #!/usr/bin/env bash # This must be run outside podman build so the build/podman volume mount to /root contains all home folder changes set -ex echo "Installing rust..." curl "https://sh.rustup.rs" -sSf | sh -s -- -y --default-toolchain stable --profile minimal echo "Downloading sccache..." SCCACHE_URL="https://github.com/mozilla/sccache/releases/download/v0.10.0/sccache-v0.10.0-$(uname -m)-unknown-linux-musl.tar.gz" wget -qO- --show-progress "${SCCACHE_URL}" | tar -xz -C ~/.cargo/bin --strip-components=1 --wildcards '*/sccache' echo "Downloading just..." JUST_URL="https://github.com/casey/just/releases/download/1.45.0/just-1.45.0-$(uname -m)-unknown-linux-musl.tar.gz" wget -qO- --show-progress "${JUST_URL}" | tar -xz -C ~/.cargo/bin --wildcards 'just' echo "Downloading cbindgen..." CBINDGEN_NAME="$( [ "$(uname -m)" = "x86_64" ] && echo "ubuntu22.04" || echo "ubuntu22.04-aarch64" )" CBINDGEN_URL="https://github.com/mozilla/cbindgen/releases/download/0.29.0/cbindgen-${CBINDGEN_NAME}" wget -qO- --show-progress "${CBINDGEN_URL}" > ~/.cargo/bin/cbindgen chmod +x ~/.cargo/bin/cbindgen ================================================ FILE: podman_bootstrap.sh ================================================ #!/usr/bin/env bash # This script setup the Redox build system with Podman # It install the Podman dependencies for cross-compilation # and download the build system configuration files set -e ########################################################## # This function is simply a banner to introduce the script ########################################################## banner() { echo "|------------------------------------------|" echo "|----- Welcome to the redox bootstrap -----|" echo "|-------- for building with Podman --------|" echo "|------------------------------------------|" } ############################################################################ # This function takes care of installing a dependency via package manager of # choice for building Redox on BSDs (macOS, FreeBSD, etc.). # @params: $1 package manager # $2 package name # $3 binary name (optional) ############################################################################ install_bsd_pkg() { PKG_MANAGER=$1 PKG_NAME=$2 BIN_NAME=$3 if [ -z "$BIN_NAME" ]; then BIN_NAME=$PKG_NAME fi BIN_LOCATION=$(which $BIN_NAME || true) if [ -z "$BIN_LOCATION" ]; then echo "$PKG_MANAGER install $PKG_NAME" $PKG_MANAGER install "$PKG_NAME" else echo "$BIN_NAME already exists at $BIN_LOCATION, no need to install $PKG_NAME..." fi } install_macports_pkg() { install_bsd_pkg "sudo port" "$1" "$2" } install_brew_pkg() { install_bsd_pkg "brew" $@ } install_brew_cask_pkg() { install_bsd_pkg "brew cask" $@ } install_freebsd_pkg() { install_bsd_pkg "sudo pkg" $@ } ############################################################################### # This function checks which of the supported package managers # is available on the macOS host. # If a supported package manager is found, it delegates the installing work to # the relevant function. # Otherwise this function will exit this script with an error. ############################################################################### osx() { echo "Detected macOS!" if [ ! -z "$(which brew)" ]; then osx_homebrew $@ elif [ ! -z "$(which port)" ]; then osx_macports $@ else echo "Please install either Homebrew or MacPorts, if you wish to use this script" echo "Re-run this script once you installed one of those package managers" echo "Will not install, now exiting..." exit 1 fi } ############################################################################### # This function takes care of installing all dependencies using MacPorts # for building Redox on macOS # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### osx_macports() { echo "MacPorts detected! Now updating..." sudo port -v selfupdate echo "Installing missing packages..." install_macports_pkg "git" install_macports_pkg "gmake" install_macports_pkg "curl" install_macports_pkg "podman" install_macports_pkg "gdb +multiarch" if [ "$1" == "qemu" ]; then install_macports_pkg "qemu" "qemu-system-x86_64" elif [ "$1" == "virtualbox" ]; then install_macports_pkg "virtualbox" else echo "Unknown emulator: $1" exit 1 fi } ############################################################################### # This function takes care of installing all dependencies using Homebrew # for building Redox on macOS # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### osx_homebrew() { echo "Homebrew detected! Now updating..." brew update echo "Installing missing packages..." install_brew_pkg "git" install_brew_pkg "make" install_brew_pkg "curl" install_brew_pkg "podman" install_brew_pkg "gdb" if [ "$1" == "qemu" ]; then install_brew_pkg "qemu" "qemu-system-x86_64" elif [ "$1" == "virtualbox" ]; then install_brew_pkg "virtualbox" else echo "Unknown emulator: $1" exit 1 fi } ############################################################################### # This function takes care of installing all dependencies using pkg # for building Redox on FreeBSD # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### freebsd() { set -x echo "FreeBSD detected!" echo "Installing missing packages..." install_freebsd_pkg "git" install_freebsd_pkg "gmake" install_freebsd_pkg "curl" install_freebsd_pkg "podman" install_freebsd_pkg "gdb" if [ "$1" == "qemu" ]; then install_freebsd_pkg "qemu" "qemu-system-x86_64" elif [ "$1" == "virtualbox" ]; then install_freebsd_pkg "virtualbox" else echo "Unknown emulator: $1" exit 1 fi set +x } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Arch Linux # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### archLinux() { echo "Detected Arch Linux" packages="git make curl fuse3 fuse-overlayfs slirp4netns podman gdb" if [ "$1" == "qemu" ]; then packages="$packages qemu-system-x86 qemu-system-arm qemu-system-riscv" elif [ "$1" == "virtualbox" ]; then packages="$packages virtualbox" else echo "Unknown emulator: $1" exit 1 fi # Scripts should not cause a system update in order to just install a # couple of packages. If pacman -S --needed is going to fail, let it fail # and the user will figure out the issues (without updating if required) # and rerun the script. #echo "Updating system..." #sudo pacman -Syu echo "Installing packages $packages..." sudo pacman -S --needed $packages } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Debian-based Linux # @params: $1 the emulator to install, "virtualbox" or "qemu" # $2 the package manager to use ############################################################################### ubuntu() { echo "Detected Ubuntu/Debian" echo "Updating system..." sudo "$2" update echo "Installing required packages..." sudo "$2" install \ podman curl git make pkg-config fuse3 libfuse3-dev fuse-overlayfs slirp4netns gdb-multiarch if [ "$1" == "qemu" ]; then if [ -z "$(which qemu-system-x86_64)" ]; then echo "Installing QEMU..." sudo "$2" install qemu-system-x86 qemu-kvm sudo "$2" install qemu-system-arm qemu-efi-aarch64 sudo "$2" install qemu-system-riscv else echo "QEMU already installed!" fi elif [ "$1" == "virtualbox" ]; then if [ -z "$(which virtualbox)" ]; then if grep '^ID=debian$' /etc/os-release > /dev/null; then echo "Virtualbox is not in the official debian packages" echo "To install virtualbox on debian, see https://wiki.debian.org/VirtualBox" echo "Please install VirtualBox and re-run this script," echo "or run with -e qemu" exit 1 else echo "Installing VirtualBox..." sudo "$2" install virtualbox fi else echo "VirtualBox already installed!" fi else echo "Unknown emulator: $1" exit 1 fi } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Fedora Linux # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### fedora() { echo "Detected Fedora" if [ -z "$(which git)" ]; then echo "Installing git..." sudo dnf install git-all fi if [ "$1" == "qemu" ]; then if [ -z "$(which qemu-system-x86_64)" ]; then echo "Installing QEMU..." sudo dnf install qemu-system-x86 qemu-system-arm \ qemu-system-riscv qemu-kvm edk2-aarch64 else echo "QEMU already installed!" fi elif [ "$1" == "virtualbox" ]; then if [ -z "$(which virtualbox)" ]; then echo "Please install VirtualBox and re-run this script," echo "or run with -e qemu" exit 1 else echo "VirtualBox already installed!" fi else echo "Unknown emulator: $1" exit 1 fi # Use rpm -q to check if it's already installed PKGS=$(for pkg in podman curl make fuse3 fuse3-devel fuse-overlayfs slirp4netns gdb; do rpm -q $pkg > /dev/null || echo $pkg; done) # If the list of packages is not empty, install missing COUNT=$(echo $PKGS | wc -w) if [ $COUNT -ne 0 ]; then echo "Installing necessary build tools..." sudo dnf install $PKGS fi } ############################################################################### # This function takes care of installing all dependencies for building Redox on # *SUSE Linux # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### suse() { echo "Detected SUSE Linux" packages=( "git" "curl" "make" "fuse" "fuse-overlayfs" "slirp4netns" "podman" "gdb-multiarch" ) if [ -z "$(which git)" ]; then echo "Will install git ..." packages+=(git) fi if [ "$1" == "qemu" ]; then if [ -z "$(which qemu-system-x86_64)" ]; then echo "Will install QEMU..." packages+=(qemu-x86 qemu-kvm) else echo "QEMU already installed!" fi elif [ "$1" == "virtualbox" ]; then if [ -z "$(which virtualbox)" ]; then echo "Please install VirtualBox and re-run this script," echo "or run with -e qemu" exit 1 else echo "VirtualBox already installed!" fi else echo "Unknown emulator: $1" exit 1 fi echo "Installing necessary build tools..." # We could install all the packages in a single zypper command with: # # zypper install package1 package2 package3 # # But there is an issue with this: zypper returns a success code if at # least one of the packages was correctly installed, but we need it to fail # if any of the packages is missing. # # To confirm that the packages are available, we try to install them one by # one with --dry-run. # We still install all the packages in a single zypper command so that the # user has to confirm only once. for p in ${packages[@]}; do if rpm -q "${p}" > /dev/null ; then echo "${p} is already installed" else # Zypper shows a confirmation prompt and the "y" answer even with # --non-interactive and --no-confirm: # # 1 new package to install. # Overall download size: 281.7 KiB. Already cached: 0 B. # After the operation, additional 394.6 KiB will be used. # Continue? [y/n/v/...? shows all options] (y): y # # That could make the user think that the package was installed, # when it was only a dry run. # To avoid the confusion, we hide the output unless there was an # error. if out="$(zypper --non-interactive install --no-confirm --dry-run --force-resolution ${p} 2>&1)" ; then echo "${p} can be installed" else echo "no" echo "" echo "Zypper output:" echo "" echo "${out}" echo "" echo "Could not find how to install '${p}', try running:" echo "" echo " zypper install ${p}" echo "" exit 1 fi fi done zypper install ${packages[@]} } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Gentoo Linux # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### gentoo() { echo "Detected Gentoo Linux" if [ -z "$(which git)" ]; then echo "Installing git..." sudo emerge dev-vcs/git fi if [ -z "$(which fusermount 2>/dev/null)" ] && [ -z "$(which fusermount3 2>/dev/null)" ]; then echo "Installing fuse..." sudo emerge sys-fs/fuse fi if [ "$1" == "qemu" ]; then if [ -z "$(which qemu-system-x86_64)" ]; then echo "Please install QEMU and re-run this script" echo "Step1. Add QEMU_SOFTMMU_TARGETS=\"x86_64\" to /etc/portage/make.conf" echo "Step2. Execute \"sudo emerge app-emulation/qemu\"" exit 1 else echo "QEMU already installed!" fi elif [ "$1" == "virtualbox" ]; then if [ -z "$(which virtualbox)" ]; then echo "Please install VirtualBox and re-run this script," echo "or run with -e qemu" exit 1 else echo "VirtualBox already installed!" fi else echo "Unknown emulator: $1" exit 1 fi if [ -z "$(which cmake)" ]; then echo "Installing cmake..." sudo emerge dev-util/cmake fi if [ -z "$(which podman)" ]; then echo "Please install Podman, https://wiki.gentoo.org/wiki/Podman" exit 1 fi } ############################################################################### # This function takes care of installing all dependencies for building Redox on # Solus # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### solus() { echo "Detected Solus" if [ "$1" == "qemu" ]; then if [ -z "$(which qemu-system-x86_64)" ]; then sudo eopkg it qemu else echo "QEMU already installed!" fi elif [ "$1" == "virtualbox" ]; then if [ -z "$(which virtualbox)" ]; then echo "Please install VirtualBox and re-run this script," echo "or run with -e qemu" exit 1 else echo "VirtualBox already installed!" fi else echo "Unknown emulator: $1" exit 1 fi echo "Installing necessary build tools..." # if guards are not necessary with eopkg since it does nothing if latest # version is already installed sudo eopkg it fuse-devel git make fuse2-devel rsync if [ -z "$(which podman)" ]; then echo "Please install Podman" exit 1 fi } ###################################################################### # This function outlines the different options available for bootstrap ###################################################################### usage() { echo "------------------------" echo "|Redox bootstrap script|" echo "------------------------" echo "Usage: ./podman_bootstrap.sh" echo "OPTIONS:" echo echo " -h,--help Show this prompt" echo " -u [branch] Update git repo and update rust" echo " If blank defaults to master" echo " -e [emulator] Install specific emulator, virtualbox or qemu" echo " -p [package Choose an Ubuntu package manager, apt-fast or" echo " manager] aptitude" echo " -d Only install the dependencies, skip boot step" echo "EXAMPLES:" echo echo "./podman_bootstrap.sh -e qemu" exit } ############################################################################# # This function takes care of everything associated to rust, and the version # manager that controls it, it can install rustup and uninstall multirust as # well as making sure that the correct version of rustc is selected by rustup # @params: $1 install non-interactively, boolean ############################################################################# rustInstall() { noninteractive=$1 # Check to see if multirust is installed, we don't want it messing with rustup # In the future we can probably remove this but I believe it's good to have for now if [ -e /usr/local/lib/rustlib/uninstall.sh ] ; then echo "It appears that multirust is installed on your system." echo "This tool has been deprecated by the maintainer, and will cause issues." echo "This script can remove multirust from your system if you wish." printf "Uninstall multirust (y/N):" read multirust if echo "$multirust" | grep -iq "^y" ;then sudo /usr/local/lib/rustlib/uninstall.sh else echo "Please manually uninstall multirust and any other versions of rust, then re-run bootstrap." exit 1 fi fi # If rustup is not installed we should offer to install it for them if [ -z "$(which rustup)" ]; then rustup_options="--default-toolchain stable" echo "You do not have rustup installed." if [ "$noninteractive" = true ]; then rustup="y" rustup_options+=" -y" else echo "We HIGHLY recommend using rustup." echo "Would you like to install it now?" echo "*WARNING* this involves a 'curl | sh' style command" printf "(y/N): " read rustup fi if echo "$rustup" | grep -iq "^y" ;then #install rustup curl https://sh.rustup.rs -sSf | sh -s -- $rustup_options # You have to add the rustup variables to the $PATH echo "export PATH=\"\$HOME/.cargo/bin:\$PATH\"" >> ~/.bashrc # source the variables so that we can execute rustup commands in the current shell source ~/.cargo/env else echo "Rustup will not be installed!" fi fi if [ -z "$(which rustc)" ]; then echo "Rust is not installed" echo "Please either run the script again, accepting rustup install" echo "or install rustc stable manually (not recommended) via:" echo "\#curl -sSf https://static.rust-lang.org/rustup.sh | sh -s -- --channel=stable" exit 1 else echo "Your Rust install looks good!" fi } ########################################################################### # This function is the main logic for the bootstrap; it clones the git repo # then it installs the dependent packages ########################################################################### boot() { echo "Cloning gitlab repo..." git clone https://gitlab.redox-os.org/redox-os/redox.git --origin upstream echo "Creating .config with PODMAN_BUILD=1" echo 'PODMAN_BUILD?=1' > redox/.config if [[ "$(uname -m)" == "arm64" ]]; then echo "Appending .config with ARCH=aarch64" echo 'ARCH=aarch64' >> redox/.config fi echo "Cleaning up..." rm podman_bootstrap.sh echo echo "---------------------------------------" echo "Well it looks like you are ready to go!" echo "---------------------------------------" echo "The file redox/.config was created with PODMAN_BUILD=1." echo "If you need a much quicker installation, run: " echo " echo REPO_BINARY=1 >> redox/.config" echo echo "Run the following commands to build Redox using Podman:" echo echo "cd redox" MAKE="make" if [[ "$(uname)" == "FreeBSD" ]]; then MAKE="gmake" fi echo "$MAKE all" echo "$MAKE $emulator" echo echo " Good luck!" exit } if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then usage elif [ "$1" == "-u" ]; then git pull upstream master exit fi emulator="qemu" defpackman="apt-get" dependenciesonly=false update=false while getopts ":e:p:udhs" opt do case "$opt" in e) emulator="$OPTARG";; p) defpackman="$OPTARG";; d) dependenciesonly=true;; u) update=true;; h) usage;; \?) echo "I don't know what to do with that option, try -h for help"; exit 1;; esac done banner rustInstall "$noninteractive" if [ "$update" == "true" ]; then git pull upstream master exit fi if [ "Darwin" == "$(uname -s)" ]; then osx "$emulator" else # Here we will use package managers to determine which operating system the user is using. # SUSE and derivatives if hash 2>/dev/null zypper; then suse "$emulator" # Debian or any derivative of it elif hash 2>/dev/null apt-get; then ubuntu "$emulator" "$defpackman" # Fedora elif hash 2>/dev/null dnf; then fedora "$emulator" # Gentoo elif hash 2>/dev/null emerge; then gentoo "$emulator" # Solus elif hash 2>/dev/null eopkg; then solus "$emulator" # Arch Linux elif hash 2>/dev/null pacman; then archLinux "$emulator" # FreeBSD elif hash 2>/dev/null pkg; then freebsd "$emulator" # Unsupported platform else printf "\e[31;1mFatal error: \e[0;31mUnsupported platform, please open an issue\e[0m\n" fi fi if [ "$dependenciesonly" = false ]; then boot fi echo "Redox bootstrap complete!" ================================================ FILE: recipes/archives/lz4/recipe.toml ================================================ [source] tar = "https://github.com/lz4/lz4/releases/download/v1.10.0/lz4-1.10.0.tar.gz" blake3 = "3e69fd475e7852e17594985528b5232afeba7d3d56cfebe2e89071768b2ab36a" patches = ["redox.patch"] [build] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export CPPFLAGS="${CPPFLAGS} -D_REDOX" ${COOKBOOK_MAKE} prefix="/usr" ${COOKBOOK_MAKE} install DESTDIR="${COOKBOOK_STAGE}" prefix="/usr" """ ================================================ FILE: recipes/archives/lz4/redox.patch ================================================ diff '--color=auto' -ruwN source/programs/util.h source-new/programs/util.h --- source/programs/util.h 2024-07-21 13:29:49.000000000 -0400 +++ source-new/programs/util.h 2024-12-13 02:21:03.032769559 -0500 @@ -52,6 +52,9 @@ #include /* time */ #include /* INT_MAX */ #include +#if defined(_REDOX) +# include /* utimes */ +#endif @@ -239,12 +242,20 @@ timebuf.modtime = statbuf->st_mtime; res += utime(filename, &timebuf); /* set access and modification times */ #else + #if defined(_REDOX) + struct timeval timebuf[2]; + memset(timebuf, 0, sizeof(timebuf)); + timebuf[0].tv_usec = UTIME_NOW; + timebuf[1].tv_sec = statbuf->st_mtime; + res += utimes(filename, timebuf); + #else struct timespec timebuf[2]; memset(timebuf, 0, sizeof(timebuf)); timebuf[0].tv_nsec = UTIME_NOW; timebuf[1].tv_sec = statbuf->st_mtime; res += utimensat(AT_FDCWD, filename, timebuf, 0); /* set access and modification times */ #endif +#endif } #if !defined(_WIN32) ================================================ FILE: recipes/archives/zstd/01_redox.patch ================================================ diff -ruwN source/programs/platform.h source-new/programs/platform.h --- source/programs/platform.h 2025-02-19 07:04:24.000000000 +0700 +++ source-new/programs/platform.h 2025-07-21 22:52:07.716447723 +0700 @@ -109,6 +109,11 @@ #endif /* PLATFORM_POSIX_VERSION */ +#if defined(__redox__) +/* TODO: AT_FDCWD && utimensat must be defined to conform _POSIX_VERSION */ +# define PLATFORM_POSIX_VERSION 1 +#endif + #if PLATFORM_POSIX_VERSION > 1 /* glibc < 2.26 may not expose struct timespec def without this. * See issue #1920. */ ================================================ FILE: recipes/archives/zstd/recipe.toml ================================================ [source] tar = "https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz" patches = [ "01_redox.patch" ] [build] template = "custom" script = """ DYNAMIC_STATIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ # TODO: fPIC is the default on linux but not on redox and # required by llvm21 as zstd statically linked there export CPPFLAGS="$CPPFLAGS -fPIC" ${COOKBOOK_MAKE} ${COOKBOOK_MAKE} install DESTDIR="${COOKBOOK_STAGE}" prefix="/usr" """ ================================================ FILE: recipes/artwork/pop-wallpapers/recipe.toml ================================================ [source] git = "https://github.com/pop-os/wallpapers" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wallpapers cp -rv "${COOKBOOK_SOURCE}"/original/* "${COOKBOOK_STAGE}"/usr/share/wallpapers """ ================================================ FILE: recipes/artwork/ubuntu-wallpapers/recipe.toml ================================================ [source] tar = "https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/ubuntu-wallpapers/23.10.4/ubuntu-wallpapers_23.10.4.orig.tar.gz" blake3 = "1e479d0aa48fe3f2961a2dac28c3ed397a29616cf6e7d73f5ceb6fabfd6449e1" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wallpapers cp -rv "${COOKBOOK_SOURCE}"/ubuntu-wallpapers-23.10.4/*.{jpg,png} "${COOKBOOK_STAGE}"/usr/share/wallpapers """ ================================================ FILE: recipes/core/base/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/base.git" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/bin" for package in audiod ipcd ptyd; do "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${package}/Cargo.toml" \ ${build_flags} cp -v \ "target/${TARGET}/${build_type}/${package}" \ "${COOKBOOK_STAGE}/usr/bin/${package}" done "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/netstack/Cargo.toml" \ ${build_flags} cp -v \ "target/${TARGET}/${build_type}/smolnetd" \ "${COOKBOOK_STAGE}/usr/bin/smolnetd" # Drivers that are built on all architectures, and NOT in drivers-initfs BINS=( e1000d ihdad ihdgd ixgbed pcid pcid-spawner rtl8139d rtl8168d usbctl usbhidd usbhubd usbscsid virtio-netd xhcid inputd redoxerd ) # Add additional drivers to the list to build, that are not in drivers-initfs # depending on the target architecture case "${TARGET}" in i586-unknown-redox | i686-unknown-redox | x86_64-unknown-redox) BINS+=(ac97d bgad sb16d vboxd) ;; *) ;; esac #Build each driver in the list mkdir -pv "${COOKBOOK_STAGE}/usr/bin" "${COOKBOOK_STAGE}/usr/lib/drivers" export CARGO_PROFILE_RELEASE_OPT_LEVEL=s export CARGO_PROFILE_RELEASE_PANIC=abort "${COOKBOOK_CARGO}" build ${build_flags} \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) for bin in "${BINS[@]}" do if [[ "${bin}" == "inputd" || "${bin}" == "pcid" || "${bin}" == "pcid-spawner" || "${bin}" == "redoxerd" ]]; then cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/usr/bin" else cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_STAGE}/usr/lib/drivers" fi done mkdir -pv "${COOKBOOK_STAGE}/lib/pcid.d" ${FIND} "${COOKBOOK_SOURCE}/drivers" -maxdepth 3 -type f -name 'config.toml' | while read conf do driver="$(basename "$(dirname "$conf")")" cp -v "$conf" "${COOKBOOK_STAGE}/lib/pcid.d/$driver.toml" done """ ================================================ FILE: recipes/core/base-initfs/recipe.toml ================================================ [source] same_as = "../base" [build] template = "custom" dependencies = [ "redoxfs", ] script = """ BINS=( init logd ramfs randd zerod acpid fbbootlogd fbcond hwd inputd lived nvmed pcid pcid-spawner rtcd vesad ) virt_bins() { BINS+=(virtio-blkd virtio-gpud) } x86_common_bins() { BINS+=(ahcid ided ps2d vesad) virt_bins } aarch64_bins() { case "${BOARD}" in raspi3b*) BINS+=(bcm2835-sdhcid) ;; *) #qemu-virt virt_bins ;; esac } case "${TARGET}" in i586-unknown-redox | i686-unknown-redox) x86_common_bins ;; x86_64-unknown-redox) x86_common_bins ;; aarch64-unknown-redox) aarch64_bins ;; *) ;; esac rm -rf "${COOKBOOK_BUILD}/initfs" mkdir -p "${COOKBOOK_BUILD}/initfs/lib/init.d" cp "${COOKBOOK_SOURCE}/init.d"/* "${COOKBOOK_BUILD}/initfs/lib/init.d/" mkdir -pv "${COOKBOOK_BUILD}/initfs/lib/pcid.d" cp -v "${COOKBOOK_SOURCE}/drivers/initfs.toml" "${COOKBOOK_BUILD}/initfs/lib/pcid.d/initfs.toml" export CARGO_PROFILE_RELEASE_OPT_LEVEL=s export CARGO_PROFILE_RELEASE_PANIC=abort "${COOKBOOK_CARGO}" build ${build_flags} \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ $(for bin in "${BINS[@]}"; do echo "-p" "${bin}"; done) mkdir -pv "${COOKBOOK_BUILD}/initfs/bin" "${COOKBOOK_BUILD}/initfs/lib/drivers" for bin in "${BINS[@]}" do case "${bin}" in init | logd | ramfs | randd | zerod | pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid | rtcd | hwd) cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_BUILD}/initfs/bin" ;; *) cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_BUILD}/initfs/lib/drivers" ;; esac done cp "${COOKBOOK_SYSROOT}/usr/bin/redoxfs" "${COOKBOOK_BUILD}/initfs/bin" ARCH="$(echo "${GNU_TARGET}" | cut -d - -f1)" RUSTFLAGS="$RUSTFLAGS -Ctarget-feature=+crt-static" cargo \ -Zbuild-std=core,alloc,compiler_builtins \ -Zbuild-std-features=compiler-builtins-mem build \ --target "${TARGET}" \ --manifest-path "${COOKBOOK_SOURCE}/bootstrap/Cargo.toml" \ --release \ --target-dir "${COOKBOOK_BUILD}" "${GNU_TARGET}-ld" \ -o "${COOKBOOK_BUILD}/bootstrap" \ --gc-sections \ -T "${COOKBOOK_SOURCE}/bootstrap/src/${ARCH}.ld" \ -z max-page-size=4096 \ "${COOKBOOK_BUILD}/${TARGET}/release/libbootstrap.a" env -u CARGO -u RUSTFLAGS cargo run --manifest-path "${COOKBOOK_SOURCE}/initfs/tools/Cargo.toml" --bin redox-initfs-ar -- "${COOKBOOK_BUILD}/initfs" "${COOKBOOK_BUILD}/bootstrap" -o "${COOKBOOK_BUILD}/initfs.img" mkdir -pv "${COOKBOOK_STAGE}/usr/lib/boot" cp "${COOKBOOK_BUILD}/initfs.img" "${COOKBOOK_STAGE}/usr/lib/boot/initfs" """ ================================================ FILE: recipes/core/binutils/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/binutils.git" [build] template = "cargo" ================================================ FILE: recipes/core/bootloader/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/bootloader.git" [build] template = "custom" script = """ OUTDIR="${COOKBOOK_BUILD}" mkdir -pv "${COOKBOOK_STAGE}/usr/lib/boot" function bootloader { export TARGET="$1" src="$2" dst="$3" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" -f "${COOKBOOK_SOURCE}/Makefile" -C "${OUTDIR}" "${OUTDIR}/${src}" cp -v "${OUTDIR}/${src}" "${COOKBOOK_STAGE}/usr/lib/boot/${dst}" } ARCH="$(echo "${TARGET}" | cut -d - -f1)" # Build BIOS bootloader for supported architectures if [ "${ARCH}" == "i586" -o "${ARCH}" == "i686" -o "${ARCH}" == "x86_64" ] then bootloader "x86-unknown-none" bootloader.bin bootloader.bios bootloader "x86-unknown-none" bootloader-live.bin bootloader-live.bios fi # Build UEFI bootloader for supported architectures if [ "${ARCH}" == "aarch64" -o "${ARCH}" == "x86_64" -o "${ARCH}" == "riscv64gc" ] then bootloader "${ARCH}-unknown-uefi" bootloader.efi bootloader.efi bootloader "${ARCH}-unknown-uefi" bootloader-live.efi bootloader-live.efi fi """ ================================================ FILE: recipes/core/contain/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/contain.git" [build] template = "cargo" ================================================ FILE: recipes/core/coreutils/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/coreutils.git" [build] template = "cargo" ================================================ FILE: recipes/core/dash/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/dash.git" branch = "redox" [build] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ ./autogen.sh ./configure \ --host="${TARGET}" \ --prefix="" \ --enable-static \ cross_compiling=yes # See https://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux. sed -i'' -e 's|#define HAVE_GETRLIMIT 1|/* #undef HAVE_GETRLIMIT */|g' config.h # Skip configure COOKBOOK_CONFIGURE="true" COOKBOOK_CONFIGURE_FLAGS=() cookbook_configure """ ================================================ FILE: recipes/core/extrautils/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/extrautils.git" [build] template = "custom" dependencies = [ "xz" ] script = """ # TODO: Can't be linked correctly yet # DYNAMIC_INIT if [ "${COOKBOOK_DYNAMIC}" != "1" ]; then install_flags+=" --features=static" fi cookbook_cargo """ ================================================ FILE: recipes/core/findutils/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/findutils.git" [build] template = "cargo" cargoflags = [ "--bin find" ] ================================================ FILE: recipes/core/installer/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/installer.git" [build] template = "cargo" ================================================ FILE: recipes/core/ion/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/ion.git" [build] template = "custom" script = """ # Must be statically linked cookbook_cargo """ ================================================ FILE: recipes/core/kernel/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/kernel.git" [build] template = "custom" script = """ make -f ${COOKBOOK_SOURCE}/Makefile mkdir -pv "${COOKBOOK_STAGE}/usr/lib/boot" cp -v kernel "${COOKBOOK_STAGE}/usr/lib/boot" """ ================================================ FILE: recipes/core/netdb/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/netdb.git" [build] template = "custom" script = """ cp -rv "${COOKBOOK_SOURCE}/"* "${COOKBOOK_STAGE}" """ ================================================ FILE: recipes/core/netutils/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/netutils.git" [build] template = "cargo" ================================================ FILE: recipes/core/pkgar/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/pkgar.git" [build] template = "cargo" cargopackages = [ "pkgar", "pkgar-keys", ] cargoflags = [ "--features cli" ] ================================================ FILE: recipes/core/pkgutils/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/pkgutils.git" [build] template = "custom" script = """ # Must be statically linked COOKBOOK_CARGO_PATH=pkg-cli cookbook_cargo """ ================================================ FILE: recipes/core/profiled/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/profiled.git" [build] template = "custom" script = """ # Must be statically linked cookbook_cargo """ ================================================ FILE: recipes/core/redoxfs/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/redoxfs.git" [build] template = "custom" script = """ # Must be statically linked cookbook_cargo """ ================================================ FILE: recipes/core/relibc/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/relibc.git" [build] template = "custom" script = """ # obscure crash if jobs number is too much COOKBOOK_MAKE_JOBS="$(( ${COOKBOOK_MAKE_JOBS} > 8 ? 8 : ${COOKBOOK_MAKE_JOBS} ))" # rustup workaround https://github.com/rust-lang/rustup/issues/988 if [ "${COOKBOOK_HOST_SYSROOT}" = "/usr" ]; then if command -v rustup >/dev/null 2>&1; then pushd ${COOKBOOK_SOURCE} ${RUSTUP:-rustup} install popd fi fi export CARGO=${CARGO:-env -u CARGO cargo} "${COOKBOOK_MAKE}" \ -C "${COOKBOOK_SOURCE}" \ -j"${COOKBOOK_MAKE_JOBS}" \ DESTDIR="${COOKBOOK_STAGE}/usr" \ install """ ================================================ FILE: recipes/core/strace/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/strace-redox.git" [build] template = "cargo" ================================================ FILE: recipes/core/userutils/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/userutils.git" [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo cp -rv "${COOKBOOK_SOURCE}/res" "${COOKBOOK_STAGE}/etc" ln -s id "${COOKBOOK_STAGE}/usr/bin/whoami" """ ================================================ FILE: recipes/core/uutils/recipe.toml ================================================ # TODO Fix coreutils i18n/l10n behavior on Redox # TODO Fix locale init bug on aarch64 before removing patches [source] git = "https://github.com/uutils/coreutils" rev = "0.7.0" patches = [ "redox.patch" ] [build] template = "custom" script = """ DYNAMIC_INIT # TODO: upstream changes, consider using feat_require_unix_core if relibc is ready? CARGO_PROFILE_RELEASE_LTO=thin cookbook_cargo --no-default-features --features feat_os_unix_redox,kill --bin coreutils BINS=( '[' b2sum b3sum base32 base64 basename basenc cat chmod cksum comm cp csplit cut date dd #df not working, use redox coreutils dir dircolors dirname du echo env expand expr factor false fmt fold hashsum head join install kill link ln ls md5sum mkdir mktemp more mv nl nproc numfmt od paste pr printenv printf ptx pwd readlink realpath rm rmdir seq sha1sum sha224sum sha256sum sha3-224sum sha3-256sum sha3-384sum sha3-512sum sha384sum sha3sum sha512sum shake128sum shake256sum shred shuf sleep sort split stat sum tac tail tee test touch tr true truncate tsort unexpand uname uniq unlink vdir wc yes ) for bin in "${BINS[@]}" do ln -sv coreutils "${COOKBOOK_STAGE}/usr/bin/$bin" done """ ================================================ FILE: recipes/core/uutils/redox.patch ================================================ diff --git a/Cargo.toml b/Cargo.toml index b0015fa6f..cfb2b1b30 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -326,6 +326,7 @@ feat_os_unix_redox = [ "feat_common_core", # "chmod", + "nproc", "stat", "uname", ] diff --git a/src/uucore/src/lib/features/fs.rs b/src/uucore/src/lib/features/fs.rs index fd1f30303..c508f6b9b 100644 --- a/src/uucore/src/lib/features/fs.rs +++ b/src/uucore/src/lib/features/fs.rs @@ -13,7 +13,7 @@ use libc::{ S_IRUSR, S_ISGID, S_ISUID, S_ISVTX, S_IWGRP, S_IWOTH, S_IWUSR, S_IXGRP, S_IXOTH, S_IXUSR, mkfifo, mode_t, }; -#[cfg(all(unix, not(target_os = "redox")))] +#[cfg(unix)] pub use libc::{major, makedev, minor}; use std::collections::HashSet; use std::collections::VecDeque; @@ -849,24 +849,6 @@ pub fn make_fifo(path: &Path) -> std::io::Result<()> { } } -// Redox's libc appears not to include the following utilities - -#[cfg(target_os = "redox")] -pub fn major(dev: libc::dev_t) -> libc::c_uint { - (((dev >> 8) & 0xFFF) | ((dev >> 32) & 0xFFFFF000)) as _ -} - -#[cfg(target_os = "redox")] -pub fn minor(dev: libc::dev_t) -> libc::c_uint { - ((dev & 0xFF) | ((dev >> 12) & 0xFFFFF00)) as _ -} - -#[cfg(target_os = "redox")] -pub fn makedev(maj: libc::c_uint, min: libc::c_uint) -> libc::dev_t { - let [maj, min] = [maj as libc::dev_t, min as libc::dev_t]; - (min & 0xff) | ((maj & 0xfff) << 8) | ((min & !0xff) << 12) | ((maj & !0xfff) << 32) -} - #[cfg(test)] mod tests { // Note this useful idiom: importing names from outer (for mod tests) scope. diff --git a/src/uucore/src/lib/mods/locale.rs b/src/uucore/src/lib/mods/locale.rs index e7d05f4c7..d86e51e98 100644 --- a/src/uucore/src/lib/mods/locale.rs +++ b/src/uucore/src/lib/mods/locale.rs @@ -212,10 +212,11 @@ fn init_localization( } }; - LOCALIZER.with(|lock| { + // TODO: In aarch64 redox OS, this lock (once cell) is already initialized out of nothing + let _ = LOCALIZER.with(|lock| { lock.set(loc) .map_err(|_| LocalizationError::Bundle("Localizer already initialized".into())) - })?; + }); Ok(()) } @@ -431,10 +432,12 @@ pub fn setup_localization(p: &str) -> Result<(), LocalizationError> { let english_bundle = create_english_bundle_from_embedded(&default_locale, p)?; let localizer = Localizer::new(english_bundle); - LOCALIZER.with(|lock| { + // TODO: In aarch64 redox OS, this lock (once cell) is already initialized out of nothing + // TODO: When this code is used? Patching for keep sake + let _ = LOCALIZER.with(|lock| { lock.set(localizer) .map_err(|_| LocalizationError::Bundle("Localizer already initialized".into())) - })?; + }); } LOCALIZER_IS_SET.with(|f| f.set(true)); Ok(()) ================================================ FILE: recipes/demos/cairo-demo/cairo-demo.c ================================================ #include #include #include #include #include #ifndef M_PI #define M_PI 3.14159265 #endif static int width = 800; static int height = 600; static void travel_path (cairo_t *cr) { cairo_pattern_t *pat; pat = cairo_pattern_create_linear (0.0, 0.0, 0.0, 256.0); cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 1); cairo_pattern_add_color_stop_rgba (pat, 0, 1, 1, 1, 1); cairo_rectangle (cr, 0, 0, 256, 256); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); pat = cairo_pattern_create_radial (115.2, 102.4, 25.6, 102.4, 102.4, 128.0); cairo_pattern_add_color_stop_rgba (pat, 0, 1, 1, 1, 1); cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 1); cairo_set_source (cr, pat); cairo_arc (cr, 128.0, 128.0, 76.8, 0, 2 * M_PI); cairo_fill (cr); cairo_pattern_destroy (pat); double x = 305.6, /* parameters like cairo_rectangle */ y = 25.6, width = 204.8, height = 204.8, aspect = 1.0, /* aspect ratio */ corner_radius = height / 10.0; /* and corner curvature radius */ double radius = corner_radius / aspect; double degrees = M_PI / 180.0; cairo_new_sub_path (cr); cairo_arc (cr, x + width - radius, y + radius, radius, -90 * degrees, 0 * degrees); cairo_arc (cr, x + width - radius, y + height - radius, radius, 0 * degrees, 90 * degrees); cairo_arc (cr, x + radius, y + height - radius, radius, 90 * degrees, 180 * degrees); cairo_arc (cr, x + radius, y + radius, radius, 180 * degrees, 270 * degrees); cairo_close_path (cr); cairo_set_source_rgb (cr, 0.5, 0.5, 1); cairo_fill_preserve (cr); cairo_set_source_rgba (cr, 0.5, 0, 0, 0.5); cairo_set_line_width (cr, 10.0); cairo_stroke (cr); double xc = 128.0; double yc = 128.0; radius = 100.0; double angle1 = 45.0 * (M_PI/180.0); /* angles are specified */ double angle2 = 180.0 * (M_PI/180.0); /* in radians */ cairo_set_line_width (cr, 10.0); cairo_arc (cr, xc, yc, radius, angle1, angle2); cairo_stroke (cr); /* draw helping lines */ cairo_set_source_rgba (cr, 1, 0.2, 0.2, 0.6); cairo_set_line_width (cr, 6.0); cairo_arc (cr, xc, yc, 10.0, 0, 2*M_PI); cairo_fill (cr); cairo_arc (cr, xc, yc, radius, angle1, angle1); cairo_line_to (cr, xc, yc); cairo_arc (cr, xc, yc, radius, angle2, angle2); cairo_line_to (cr, xc, yc); cairo_stroke (cr); } static void draw (cairo_surface_t *surface) { cairo_t *cr; cr = cairo_create (surface); travel_path (cr); cairo_destroy (cr); } int main(int argc, char *argv[]) { void * window = orb_window_new(-1, -1, width, height, "CairoDemo"); //Cairo uint32_t * frame_data = orb_window_data(window); cairo_surface_t *surface = cairo_image_surface_create_for_data((uint8_t*) frame_data, CAIRO_FORMAT_ARGB32, width, height, cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, width)); cairo_create(surface); draw (surface); orb_window_sync(window); char running = 1; while (running) { void * event_iter = orb_window_events(window); OrbEventOption event_option; do { event_option = orb_events_next(event_iter); switch (event_option.tag) { case OrbEventOption_Quit: running = 0; break; default: break; } } while (running && event_option.tag != OrbEventOption_None); orb_events_destroy(event_iter); } orb_window_destroy(window); return 0; /* ANSI C requires main to return int. */ } ================================================ FILE: recipes/demos/cairo-demo/recipe.toml ================================================ # source is part of cookbook [build] dependencies = [ "cairo", "expat", "fontconfig", "freetype2", "liborbital", "libpng", "pixman", "zlib", ] template = "custom" script = """ "${CXX}" \ $("${PKG_CONFIG}" --cflags cairo) \ "${COOKBOOK_RECIPE}/cairo-demo.c" \ -o cairo-demo \ -static \ $("${PKG_CONFIG}" --libs cairo) \ -lorbital mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "cairo-demo" "${COOKBOOK_STAGE}/bin/cairo-demo" """ ================================================ FILE: recipes/demos/cmatrix/recipe.toml ================================================ [source] git = "https://github.com/abishekvashok/cmatrix" script = """ autoreconf -i """ [build] template = "custom" dependencies = [ "ncursesw" ] script = """ export LIBS="-lncursesw" COOKBOOK_CONFIGURE_FLAGS+=( --without-fonts ) "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" sed -i -e 's|#define USE_TIOCSTI 1|/* #undef USE_TIOCSTI */|g' config.h "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" """ [package] dependencies = [ "terminfo" ] ================================================ FILE: recipes/demos/cpal/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/cpal.git" branch = "redox" upstream = "https://github.com/tomaka/cpal.git" [build] template = "custom" script = """ cookbook_cargo_examples beep """ ================================================ FILE: recipes/demos/dynamic-example/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/dynamic-example.git" [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo """ ================================================ FILE: recipes/demos/exampled/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/exampled.git" [build] template = "cargo" ================================================ FILE: recipes/demos/gears/gears.c ================================================ /* gears.c */ /* * 3-D gear wheels. This program is in the public domain. * * Brian Paul */ /* Conversion to GLUT by Mark J. Kilgard */ #include #include #include #include #include #include #include #ifndef M_PI #define M_PI 3.14159265 #endif /** Draw a gear wheel. You'll probably want to call this function when building a display list since we do a lot of trig here. Input: inner_radius - radius of hole at center outer_radius - radius at center of teeth width - width of gear teeth - number of teeth tooth_depth - depth of tooth **/ static void gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, GLint teeth, GLfloat tooth_depth) { GLint i; GLfloat r0, r1, r2; GLfloat angle, da; GLfloat u, v, len; r0 = inner_radius; r1 = outer_radius - tooth_depth / 2.0; r2 = outer_radius + tooth_depth / 2.0; da = 2.0 * M_PI / teeth / 4.0; glShadeModel(GL_FLAT); glNormal3f(0.0, 0.0, 1.0); /* draw front face */ glBegin(GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); } glEnd(); /* draw front sides of teeth */ glBegin(GL_QUADS); da = 2.0 * M_PI / teeth / 4.0; for (i = 0; i < teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); } glEnd(); glNormal3f(0.0, 0.0, -1.0); /* draw back face */ glBegin(GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); } glEnd(); /* draw back sides of teeth */ glBegin(GL_QUADS); da = 2.0 * M_PI / teeth / 4.0; for (i = 0; i < teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); } glEnd(); /* draw outward faces of teeth */ glBegin(GL_QUAD_STRIP); for (i = 0; i < teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); u = r2 * cos(angle + da) - r1 * cos(angle); v = r2 * sin(angle + da) - r1 * sin(angle); len = sqrt(u * u + v * v); u /= len; v /= len; glNormal3f(v, -u, 0.0); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); glNormal3f(cos(angle), sin(angle), 0.0); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); glNormal3f(v, -u, 0.0); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); glNormal3f(cos(angle), sin(angle), 0.0); } glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); glEnd(); glShadeModel(GL_SMOOTH); /* draw inside radius cylinder */ glBegin(GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0 * M_PI / teeth; glNormal3f(-cos(angle), -sin(angle), 0.0); glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); } glEnd(); } static int width = 800; static int height = 600; static void * buffer = NULL; static void * window = NULL; static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; static GLint gear1, gear2, gear3; static GLfloat angle = 0.0; static GLuint limit; static GLuint count = 1; static void sync(void) { glFinish(); uint32_t * frame_data = orb_window_data(window); uint32_t * image_data = (uint32_t *)buffer; int i; for(i = 0; i < width * height; i++) { frame_data[i] = image_data[i] | 0xFF000000; } orb_window_sync(window); } static void draw(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glRotatef(view_rotx, 1.0, 0.0, 0.0); glRotatef(view_roty, 0.0, 1.0, 0.0); glRotatef(view_rotz, 0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(-3.0, -2.0, 0.0); glRotatef(angle, 0.0, 0.0, 1.0); glCallList(gear1); glPopMatrix(); glPushMatrix(); glTranslatef(3.1, -2.0, 0.0); glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); glCallList(gear2); glPopMatrix(); glPushMatrix(); glTranslatef(-3.1, 4.2, 0.0); glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); glCallList(gear3); glPopMatrix(); glPopMatrix(); sync(); count++; if (count == limit) { exit(0); } } static void idle(void) { angle += 2.0; draw(); } /* new window size or exposure */ static void reshape(int width, int height) { GLfloat h = (GLfloat) height / (GLfloat) width; glViewport(0, 0, (GLint) width, (GLint) height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0, 0.0, -40.0); } static void init(void) { static GLfloat pos[4] = {5.0, 5.0, 10.0, 0.0}; static GLfloat red[4] = {0.8, 0.1, 0.0, 1.0}; static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0}; static GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0}; glLightfv(GL_LIGHT0, GL_POSITION, pos); glEnable(GL_CULL_FACE); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST); /* make the gears */ gear1 = glGenLists(1); glNewList(gear1, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); gear(1.0, 4.0, 1.0, 20, 0.7); glEndList(); gear2 = glGenLists(1); glNewList(gear2, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); gear(0.5, 2.0, 2.0, 10, 0.7); glEndList(); gear3 = glGenLists(1); glNewList(gear3, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); gear(1.3, 2.0, 0.5, 10, 0.7); glEndList(); glEnable(GL_NORMALIZE); } main(int argc, char *argv[]) { if (argc > 1) { /* do 'n' frames then exit */ limit = atoi(argv[1]) + 1; } else { limit = 0; } OSMesaContext ctx = OSMesaCreateContextExt(OSMESA_BGRA, 16, 0, 0, NULL); if (!ctx) { printf("OSMesaCreateContextExt failed\n"); return 1; } buffer = malloc(width * height * 4); if(!buffer) { printf("malloc failed\n"); OSMesaDestroyContext(ctx); return 1; } if (!OSMesaMakeCurrent(ctx, buffer, GL_UNSIGNED_BYTE, width, height)) { printf("OSMesaMakeCurrent failed\n"); OSMesaDestroyContext(ctx); return 1; } OSMesaPixelStore(OSMESA_Y_UP, 0); OSMesaColorClamp(GL_TRUE); window = orb_window_new_flags(-1, -1, width, height, "Gears", ORB_WINDOW_ASYNC); init(); reshape(width, height); char running = 1; while (running) { idle(); void * event_iter = orb_window_events(window); OrbEventOption event_option; do { event_option = orb_events_next(event_iter); switch (event_option.tag) { case OrbEventOption_Quit: running = 0; break; default: break; } } while (running && event_option.tag != OrbEventOption_None); orb_events_destroy(event_iter); } orb_window_destroy(window); OSMesaDestroyContext(ctx); free(buffer); return 0; /* ANSI C requires main to return int. */ } ================================================ FILE: recipes/demos/gears/recipe.toml ================================================ [build] dependencies=[ "liborbital", "mesa", "mesa-glu", "zlib", ] template = "custom" script = """ DYNAMIC_INIT ${CXX} -O2 -I "${COOKBOOK_SYSROOT}/usr/include" \ $LDFLAGS "${COOKBOOK_RECIPE}/gears.c" \ -o gears -lorbital $("${PKG_CONFIG}" --libs glu) -lz mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v "gears" "${COOKBOOK_STAGE}/usr/bin/gears" """ ================================================ FILE: recipes/demos/glutin/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/glutin.git" branch = "redox-0.30" upstream = "https://github.com/rust-windowing/glutin.git" [build] template = "custom" dependencies = [ "mesa", "zlib" ] script = """ DYNAMIC_INIT EXAMPLES=( window ) for example in "${EXAMPLES[@]}" do cargo rustc \ --target "$TARGET" \ --release \ --manifest-path "${COOKBOOK_SOURCE}/glutin_examples/Cargo.toml" \ --example "${example}" \ -- -C link-args="$LDFLAGS $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "target/${TARGET}/release/examples/${example}" "${COOKBOOK_STAGE}/bin/glutin_${example}" done """ ================================================ FILE: recipes/demos/iced/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/iced.git" branch = "redox" [build] template = "custom" script = """ cookbook_cargo_packages styling """ ================================================ FILE: recipes/demos/orbclient/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/orbclient.git" [build] template = "cargo" cargoexamples = [ "simple" ] ================================================ FILE: recipes/demos/osdemo/osdemo.c ================================================ /* * Test OSMesa interface at 8, 16 and 32 bits/channel. * * Usage: osdemo [options] * * Options: * -f generate image files * -g render gradient and print color values */ #include #include #include #include #include #include #include #include #define WIDTH 600 #define HEIGHT 600 static GLboolean DisplayImages = GL_FALSE; static GLboolean WriteFiles = GL_FALSE; static GLboolean Gradient = GL_FALSE; static void Sphere(float radius, int slices, int stacks) { GLUquadric *q = gluNewQuadric(); gluQuadricNormals(q, GLU_SMOOTH); gluSphere(q, radius, slices, stacks); gluDeleteQuadric(q); } static void Cone(float base, float height, int slices, int stacks) { GLUquadric *q = gluNewQuadric(); gluQuadricDrawStyle(q, GLU_FILL); gluQuadricNormals(q, GLU_SMOOTH); gluCylinder(q, base, 0.0, height, slices, stacks); gluDeleteQuadric(q); } static void Torus(float innerRadius, float outerRadius, int sides, int rings) { /* from GLUT... */ int i, j; GLfloat theta, phi, theta1; GLfloat cosTheta, sinTheta; GLfloat cosTheta1, sinTheta1; const GLfloat ringDelta = 2.0 * M_PI / rings; const GLfloat sideDelta = 2.0 * M_PI / sides; theta = 0.0; cosTheta = 1.0; sinTheta = 0.0; for (i = rings - 1; i >= 0; i--) { theta1 = theta + ringDelta; cosTheta1 = cos(theta1); sinTheta1 = sin(theta1); glBegin(GL_QUAD_STRIP); phi = 0.0; for (j = sides; j >= 0; j--) { GLfloat cosPhi, sinPhi, dist; phi += sideDelta; cosPhi = cos(phi); sinPhi = sin(phi); dist = outerRadius + innerRadius * cosPhi; glNormal3f(cosTheta1 * cosPhi, -sinTheta1 * cosPhi, sinPhi); glVertex3f(cosTheta1 * dist, -sinTheta1 * dist, innerRadius * sinPhi); glNormal3f(cosTheta * cosPhi, -sinTheta * cosPhi, sinPhi); glVertex3f(cosTheta * dist, -sinTheta * dist, innerRadius * sinPhi); } glEnd(); theta = theta1; cosTheta = cosTheta1; sinTheta = sinTheta1; } } static void Cube(float size) { size = 0.5 * size; glBegin(GL_QUADS); /* +X face */ glNormal3f(1, 0, 0); glVertex3f(size, -size, size); glVertex3f(size, -size, -size); glVertex3f(size, size, -size); glVertex3f(size, size, size); /* -X face */ glNormal3f(-1, 0, 0); glVertex3f(-size, size, size); glVertex3f(-size, size, -size); glVertex3f(-size, -size, -size); glVertex3f(-size, -size, size); /* +Y face */ glNormal3f(0, 1, 0); glVertex3f(-size, size, size); glVertex3f( size, size, size); glVertex3f( size, size, -size); glVertex3f(-size, size, -size); /* -Y face */ glNormal3f(0, -1, 0); glVertex3f(-size, -size, -size); glVertex3f( size, -size, -size); glVertex3f( size, -size, size); glVertex3f(-size, -size, size); /* +Z face */ glNormal3f(0, 0, 1); glVertex3f(-size, -size, size); glVertex3f( size, -size, size); glVertex3f( size, size, size); glVertex3f(-size, size, size); /* -Z face */ glNormal3f(0, 0, -1); glVertex3f(-size, size, -size); glVertex3f( size, size, -size); glVertex3f( size, -size, -size); glVertex3f(-size, -size, -size); glEnd(); } /** * Draw red/green gradient across bottom of image. * Read pixels to check deltas. */ static void render_gradient(void) { GLfloat row[WIDTH][4]; int i; glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1, 1, -1, 1, -1, 1); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glBegin(GL_POLYGON); glColor3f(1, 0, 0); glVertex2f(-1, -1.0); glVertex2f(-1, -0.9); glColor3f(0, 1, 0); glVertex2f(1, -0.9); glVertex2f(1, -1.0); glEnd(); glFinish(); glReadPixels(0, 0, WIDTH, 1, GL_RGBA, GL_FLOAT, row); for (i = 0; i < 4; i++) { printf("row[i] = %f, %f, %f\n", row[i][0], row[i][1], row[i][2]); } } static void render_image(void) { static const GLfloat light_ambient[4] = { 0.0, 0.0, 0.0, 1.0 }; static const GLfloat light_diffuse[4] = { 1.0, 1.0, 1.0, 1.0 }; static const GLfloat light_specular[4] = { 1.0, 1.0, 1.0, 1.0 }; static const GLfloat light_position[4] = { 1.0, 1.0, 1.0, 0.0 }; static const GLfloat red_mat[4] = { 1.0, 0.2, 0.2, 1.0 }; static const GLfloat green_mat[4] = { 0.2, 1.0, 0.2, 1.0 }; static const GLfloat blue_mat[4] = { 0.2, 0.2, 1.0, 1.0 }; #if 0 static const GLfloat yellow_mat[4] = { 0.8, 0.8, 0.0, 1.0 }; #endif static const GLfloat purple_mat[4] = { 0.8, 0.4, 0.8, 0.6 }; glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHT0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-1.0, 1.0, -1.0, 1.0, 2.0, 50.0); glMatrixMode(GL_MODELVIEW); glTranslatef(0, 0.5, -7); glClearColor(0.3, 0.3, 0.7, 0.0); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glPushMatrix(); glRotatef(20.0, 1.0, 0.0, 0.0); /* ground */ glEnable(GL_TEXTURE_2D); glBegin(GL_POLYGON); glNormal3f(0, 1, 0); glTexCoord2f(0, 0); glVertex3f(-5, -1, -5); glTexCoord2f(1, 0); glVertex3f( 5, -1, -5); glTexCoord2f(1, 1); glVertex3f( 5, -1, 5); glTexCoord2f(0, 1); glVertex3f(-5, -1, 5); glEnd(); glDisable(GL_TEXTURE_2D); glEnable(GL_LIGHTING); glPushMatrix(); glTranslatef(-1.5, 0.5, 0.0); glRotatef(90.0, 1.0, 0.0, 0.0); glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, red_mat ); Torus(0.275, 0.85, 20, 20); glPopMatrix(); glPushMatrix(); glTranslatef(-1.5, -0.5, 0.0); glRotatef(270.0, 1.0, 0.0, 0.0); glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, green_mat ); Cone(1.0, 2.0, 16, 1); glPopMatrix(); glPushMatrix(); glTranslatef(0.95, 0.0, -0.8); glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blue_mat ); glLineWidth(2.0); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); Sphere(1.2, 20, 20); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glPopMatrix(); #if 0 glPushMatrix(); glTranslatef(0.75, 0.0, 1.3); glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, yellow_mat ); glutWireTeapot(1.0); glPopMatrix(); #endif glPushMatrix(); glTranslatef(-0.25, 0.0, 2.5); glRotatef(40, 0, 1, 0); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); glEnable(GL_CULL_FACE); glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, purple_mat ); Cube(1.0); glDisable(GL_BLEND); glDisable(GL_CULL_FACE); glPopMatrix(); glDisable(GL_LIGHTING); glPopMatrix(); glDisable(GL_DEPTH_TEST); } static void init_context(void) { const GLint texWidth = 64, texHeight = 64; GLubyte *texImage; int i, j; /* checker image */ texImage = (GLubyte *)malloc(texWidth * texHeight * 4); for (i = 0; i < texHeight; i++) { for (j = 0; j < texWidth; j++) { int k = (i * texWidth + j) * 4; if ((i % 5) == 0 || (j % 5) == 0) { texImage[k+0] = 200; texImage[k+1] = 200; texImage[k+2] = 200; texImage[k+3] = 255; } else { if ((i % 5) == 1 || (j % 5) == 1) { texImage[k+0] = 50; texImage[k+1] = 50; texImage[k+2] = 50; texImage[k+3] = 255; } else { texImage[k+0] = 100; texImage[k+1] = 100; texImage[k+2] = 100; texImage[k+3] = 255; } } } } glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, texImage); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); free(texImage); } static void display_image(const char *filename, const GLubyte *buffer, int width, int height) { void * window = orb_window_new(-1, -1, width, height, filename); uint32_t * frame_data = orb_window_data(window); uint32_t * image_data = (uint32_t *)buffer; int x, y; for(y = 0; y < height; y++) { for(x = 0; x < width; x++) { frame_data[y * width + x] = image_data[(height - 1 - y) * width + x] | 0xFF000000; } } orb_window_sync(window); char running = 1; while (running) { void * event_iter = orb_window_events(window); OrbEventOption event_option; do { event_option = orb_events_next(event_iter); switch (event_option.tag) { case OrbEventOption_Quit: running = 0; break; default: break; } } while (running && event_option.tag != OrbEventOption_None); orb_events_destroy(event_iter); } orb_window_destroy(window); } static void write_ppm(const char *filename, const GLubyte *buffer, int width, int height) { const int binary = 0; FILE *f = fopen( filename, "w" ); if (f) { int i, x, y; const GLubyte *ptr = buffer; if (binary) { fprintf(f,"P6\n"); fprintf(f,"# ppm-file created by osdemo.c\n"); fprintf(f,"%i %i\n", width,height); fprintf(f,"255\n"); fclose(f); f = fopen( filename, "ab" ); /* reopen in binary append mode */ for (y=height-1; y>=0; y--) { for (x=0; x=0; y--) { for (x=0; x> 8; display_image(filename, buffer8, WIDTH, HEIGHT); free(buffer8); } else if (type == GL_FLOAT) { GLfloat *buffer32 = (GLfloat *) buffer; GLubyte *buffer8 = (GLubyte *) malloc(WIDTH * HEIGHT * 4); int i; /* colors may be outside [0,1] so we need to clamp */ for (i = 0; i < WIDTH * HEIGHT * 4; i++) buffer8[i] = (GLubyte) (buffer32[i] * 255.0); display_image(filename, buffer8, WIDTH, HEIGHT); free(buffer8); } else { display_image(filename, (const GLubyte *)buffer, WIDTH, HEIGHT); } } if (WriteFiles && filename != NULL) { if (type == GL_UNSIGNED_SHORT) { GLushort *buffer16 = (GLushort *) buffer; GLubyte *buffer8 = (GLubyte *) malloc(WIDTH * HEIGHT * 4); int i; for (i = 0; i < WIDTH * HEIGHT * 4; i++) buffer8[i] = buffer16[i] >> 8; write_ppm(filename, buffer8, WIDTH, HEIGHT); free(buffer8); } else if (type == GL_FLOAT) { GLfloat *buffer32 = (GLfloat *) buffer; GLubyte *buffer8 = (GLubyte *) malloc(WIDTH * HEIGHT * 4); int i; /* colors may be outside [0,1] so we need to clamp */ for (i = 0; i < WIDTH * HEIGHT * 4; i++) buffer8[i] = (GLubyte) (buffer32[i] * 255.0); write_ppm(filename, buffer8, WIDTH, HEIGHT); free(buffer8); } else { write_ppm(filename, (const GLubyte *)buffer, WIDTH, HEIGHT); } } OSMesaDestroyContext(ctx); free(buffer); return 1; } int main( int argc, char *argv[] ) { int i; printf("Use -f to write image files\n"); for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-d") == 0) DisplayImages = GL_TRUE; else if (strcmp(argv[i], "-f") == 0) WriteFiles = GL_TRUE; else if (strcmp(argv[i], "-g") == 0) Gradient = GL_TRUE; } test(GL_UNSIGNED_BYTE, 8, "image8.ppm"); test(GL_UNSIGNED_SHORT, 16, "image16.ppm"); test(GL_FLOAT, 32, "image32.ppm"); return 0; } ================================================ FILE: recipes/demos/osdemo/recipe.toml ================================================ [build] template = "custom" dependencies = [ "liborbital", "mesa", "mesa-glu", "zlib" ] script = """ DYNAMIC_INIT cp "${COOKBOOK_SOURCE}/../osdemo.c" ./osdemo.c ${CXX} -O2 -I "${COOKBOOK_SYSROOT}/include" $LDFLAGS osdemo.c -o osdemo \ -lorbital $("${PKG_CONFIG}" --libs glu) -lz mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v "osdemo" "${COOKBOOK_STAGE}/usr/bin/osdemo" """ ================================================ FILE: recipes/demos/pixelcannon/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/pixelcannon.git" [build] template = "custom" script = """ cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/apps/pixelcannon" cp -Rv "${COOKBOOK_SOURCE}/assets" "${COOKBOOK_STAGE}/apps/pixelcannon" mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_SOURCE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/pixelcannon" """ [package] dependencies = [ "orbital", ] ================================================ FILE: recipes/demos/sdl2-gears/gears.c ================================================ /* gears.c */ /* * 3-D gear wheels. This program is in the public domain. * * Brian Paul */ /* Conversion to GLUT by Mark J. Kilgard */ #include #include #include #include #include #ifndef M_PI #define M_PI 3.14159265 #endif /** Draw a gear wheel. You'll probably want to call this function when building a display list since we do a lot of trig here. Input: inner_radius - radius of hole at center outer_radius - radius at center of teeth width - width of gear teeth - number of teeth tooth_depth - depth of tooth **/ static void gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, GLint teeth, GLfloat tooth_depth) { GLint i; GLfloat r0, r1, r2; GLfloat angle, da; GLfloat u, v, len; r0 = inner_radius; r1 = outer_radius - tooth_depth / 2.0; r2 = outer_radius + tooth_depth / 2.0; da = 2.0 * M_PI / teeth / 4.0; glShadeModel(GL_FLAT); glNormal3f(0.0, 0.0, 1.0); /* draw front face */ glBegin(GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); } glEnd(); /* draw front sides of teeth */ glBegin(GL_QUADS); da = 2.0 * M_PI / teeth / 4.0; for (i = 0; i < teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); } glEnd(); glNormal3f(0.0, 0.0, -1.0); /* draw back face */ glBegin(GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); } glEnd(); /* draw back sides of teeth */ glBegin(GL_QUADS); da = 2.0 * M_PI / teeth / 4.0; for (i = 0; i < teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); } glEnd(); /* draw outward faces of teeth */ glBegin(GL_QUAD_STRIP); for (i = 0; i < teeth; i++) { angle = i * 2.0 * M_PI / teeth; glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); u = r2 * cos(angle + da) - r1 * cos(angle); v = r2 * sin(angle + da) - r1 * sin(angle); len = sqrt(u * u + v * v); u /= len; v /= len; glNormal3f(v, -u, 0.0); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); glNormal3f(cos(angle), sin(angle), 0.0); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); glNormal3f(v, -u, 0.0); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); glNormal3f(cos(angle), sin(angle), 0.0); } glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5); glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5); glEnd(); glShadeModel(GL_SMOOTH); /* draw inside radius cylinder */ glBegin(GL_QUAD_STRIP); for (i = 0; i <= teeth; i++) { angle = i * 2.0 * M_PI / teeth; glNormal3f(-cos(angle), -sin(angle), 0.0); glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); } glEnd(); } static int width = 800; static int height = 600; static SDL_Window *window = NULL; static SDL_GLContext context = NULL; static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; static GLint gear1, gear2, gear3; static GLfloat angle = 0.0; static GLfloat delta = 2.0f; static void draw(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glRotatef(view_rotx, 1.0, 0.0, 0.0); glRotatef(view_roty, 0.0, 1.0, 0.0); glRotatef(view_rotz, 0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(-3.0, -2.0, 0.0); glRotatef(angle, 0.0, 0.0, 1.0); glCallList(gear1); glPopMatrix(); glPushMatrix(); glTranslatef(3.1, -2.0, 0.0); glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); glCallList(gear2); glPopMatrix(); glPushMatrix(); glTranslatef(-3.1, 4.2, 0.0); glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); glCallList(gear3); glPopMatrix(); glPopMatrix(); } static void idle(void) { angle += delta; if (angle > 360.0f) angle -= 360.0f; draw(); SDL_GL_SwapWindow(window); } /* new window size or exposure */ static void reshape(int width, int height) { GLfloat h = (GLfloat)height / (GLfloat)width; glViewport(0, 0, (GLint)width, (GLint)height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0, 0.0, -40.0); } static void init(void) { static GLfloat pos[4] = {5.0, 5.0, 10.0, 0.0}; static GLfloat red[4] = {0.8, 0.1, 0.0, 1.0}; static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0}; static GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0}; glLightfv(GL_LIGHT0, GL_POSITION, pos); glEnable(GL_CULL_FACE); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST); /* make the gears */ gear1 = glGenLists(1); glNewList(gear1, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red); gear(1.0, 4.0, 1.0, 20, 0.7); glEndList(); gear2 = glGenLists(1); glNewList(gear2, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green); gear(0.5, 2.0, 2.0, 10, 0.7); glEndList(); gear3 = glGenLists(1); glNewList(gear3, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue); gear(1.3, 2.0, 0.5, 10, 0.7); glEndList(); glEnable(GL_NORMALIZE); } void CheckSDLError(int line) { const char *error = SDL_GetError(); if (error != "") { printf("SLD Error: %s\n", error); if (line != -1) printf("\nLine: %d\n", line); SDL_ClearError(); } } SDL_Surface *image; const char *IMAGE_FILE_NAME = "/usr/games/sdl2_gears/assets/image.png"; Mix_Music *music = NULL; const char *MUSIC_FILE_NAME = "/usr/games/sdl2_gears/assets/music.wav"; TTF_Font *font = NULL; const char *TTF_FILE_NAME = "/usr/games/sdl2_gears/assets/font.ttf"; void cleanup() { if (context != NULL) { SDL_GL_DeleteContext(context); context = NULL; } if (window != NULL) { SDL_DestroyWindow(window); window = NULL; } if (image != NULL) { SDL_FreeSurface(image); image = NULL; IMG_Quit(); } if (music != NULL) { Mix_FreeMusic(music); music = NULL; Mix_CloseAudio(); } if (font != NULL) { TTF_CloseFont(font); font = NULL; } // Shutdown SDL 2 SDL_Quit(); } int main(int argc, char *argv[]) { // Main printf("Initializing SDL\n"); if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) { printf("Failed to init SDL\n"); CheckSDLError(__LINE__); cleanup(); return -1; } // Video / window printf("Creating SDL window\n"); window = SDL_CreateWindow( "Gears", -1, -1, width, height, SDL_WINDOW_OPENGL); if (window == NULL) { printf("Unable to create window\n"); CheckSDLError(__LINE__); cleanup(); return -1; } printf("Creating SDL GL context\n"); context = SDL_GL_CreateContext(window); if (context == NULL) { printf("Unable to create SDL GL context\n"); CheckSDLError(__LINE__); cleanup(); return -1; } init(); reshape(width, height); // Image printf("Initializing SDL image supporting formats png and jpeg\n"); int flags = IMG_INIT_JPG | IMG_INIT_PNG; int initted = IMG_Init(flags); if ((initted & flags) != flags) { printf("IMG_Init: Failed to init required jpg and png support: %s\n", IMG_GetError()); CheckSDLError(__LINE__); cleanup(); return -1; } image = IMG_Load(IMAGE_FILE_NAME); if (image == NULL) { printf("IMG_Load failed: %s\n", IMG_GetError()); CheckSDLError(__LINE__); cleanup(); return -1; } // Audio printf("Opening SDL mixer audio\n"); if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 4096) < 0) { fprintf(stderr, "Couldn't open audio mixer: %s\n", SDL_GetError()); CheckSDLError(__LINE__); cleanup(); return -1; } music = Mix_LoadMUS(MUSIC_FILE_NAME); if (music == NULL) { fprintf(stderr, "Couldn't open audio file %s: %s\n", MUSIC_FILE_NAME, SDL_GetError()); CheckSDLError(__LINE__); cleanup(); return -1; } if (Mix_PlayMusic(music, -1) < 0) { fprintf(stderr, "Couldn't play music: %s\n", SDL_GetError()); CheckSDLError(__LINE__); cleanup(); return -1; } // TTF printf("Initializing TTF\n"); if (TTF_Init() < 0) { printf("Failed to init TTF\n"); CheckSDLError(__LINE__); cleanup(); return -1; } font = TTF_OpenFont(TTF_FILE_NAME, 30); if (font == NULL) { printf("Couldn't open TTF file %s: %s\n", TTF_FILE_NAME, SDL_GetError()); CheckSDLError(__LINE__); cleanup(); return -1; } int running = 1; SDL_Event event; int playing_audio = 0; while (running) { idle(); // Loop track Mix_PlayingMusic(); while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) running = 0; if (event.type == SDL_KEYDOWN) { switch (event.key.keysym.sym) { case SDLK_p: { if (!Mix_PlayingMusic()) { if (Mix_PlayMusic(music, -1) < 0) { fprintf(stderr, "Couldn't play music: %s\n", SDL_GetError()); CheckSDLError(__LINE__); cleanup(); return -1; } } else { if (Mix_PausedMusic()) { Mix_ResumeMusic(); } else { Mix_PauseMusic(); } } break; } case SDLK_a: case SDLK_LEFT: { delta -= 0.2f; break; } case SDLK_d: case SDLK_RIGHT: { delta += 0.2f; break; } case SDLK_ESCAPE: { running = 0; break; } default: break; } } if (event.type == SDL_MOUSEBUTTONDOWN) { if (event.button.button == SDL_BUTTON_LEFT) { printf("Left mouse btn pressed at position %d,%d\n", event.button.x, event.button.y); } else if (event.button.button == SDL_BUTTON_MIDDLE) { printf("Middle mouse btn pressed at position %d,%d\n", event.button.x, event.button.y); } else if (event.button.button == SDL_BUTTON_RIGHT) { printf("Right mouse btn pressed at position %d,%d\n", event.button.x, event.button.y); } } } SDL_Delay(10); } cleanup(); return 0; } ================================================ FILE: recipes/demos/sdl2-gears/recipe.toml ================================================ [build] template = "custom" dependencies = [ "sdl2-image", "sdl2-mixer", "sdl2-ttf", ] script = """ DYNAMIC_INIT mkdir -p "${COOKBOOK_STAGE}/usr/games/sdl2_gears" ${CXX} -O2 -I "${COOKBOOK_SYSROOT}/include" $LDFLAGS ${COOKBOOK_RECIPE}/gears.c \ -o sdl2_gears -dynamic \ -lSDL2_image -lSDL2_mixer -lSDL2_ttf $("${PKG_CONFIG}" --libs osmesa) \ -lSDL2 -lorbital -lfreetype -lpng -ljpeg -lvorbisfile -lvorbis -logg -lz cp -rv "${COOKBOOK_RECIPE}/assets" "${COOKBOOK_STAGE}/usr/games/sdl2_gears/" cp -v sdl2_gears "${COOKBOOK_STAGE}/usr/games/sdl2_gears/" """ ================================================ FILE: recipes/demos/winit/recipe.toml ================================================ [source] git = "https://github.com/pop-os/winit.git" branch = "winit-0.29" [build] template = "custom" script = """ cookbook_cargo_examples cursor_grab drag_window window window_debug """ ================================================ FILE: recipes/dev/autoconf/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.xz" blake3 = "da1cc8af8551c343de9f42af0ae53fd7dff3623487157623892b6cd7e3bb5692" [build] template = "configure" [package] dependencies = ["perl5"] ================================================ FILE: recipes/dev/automake/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz" blake3 = "f42cfc333aaaa11f2bcb05b5b0273b8706c820c22f9ba4367f7eb920551695cd" [build] template = "configure" [package] dependencies = ["perl5"] ================================================ FILE: recipes/dev/binutils-gdb/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/binutils-gdb" branch = "redox-2.43.1" shallow_clone = true [build] template = "custom" dependencies = [ "libgmp", "libmpfr", # TODO: this zlib get linked when boostrapping binutils # "zlib" ] script = """ DYNAMIC_INIT if [ "${COOKBOOK_HOST_SYSROOT}" = "/usr" ]; then # not specifying --enable-shared as it will link shared deps COOKBOOK_CONFIGURE_FLAGS=( --prefix=/usr --host="${GNU_TARGET}" --program-prefix="${COOKBOOK_CROSS_GNU_TARGET:-$GNU_TARGET}-" ) fi COOKBOOK_CONFIGURE_FLAGS+=( --target="${COOKBOOK_CROSS_GNU_TARGET:-$GNU_TARGET}" --enable-default-hash-style=gnu --disable-werror # --with-system-zlib ) cookbook_configure """ ================================================ FILE: recipes/dev/clang21/recipe.toml ================================================ [source] same_as = "../llvm21" [build] template = "custom" dependencies = [ "llvm21", ] dev-dependencies = [ "libstdcxx", # no idea "llvm21.dev", "llvm21.runtime", "host:xz", "host:libarchive", # workaround for cmake error ] script = """ DYNAMIC_INIT ARCH="$(echo "${TARGET}" | cut -d - -f1)" generate_cookbook_cmake_file $COOKBOOK_HOST_TARGET "" "$COOKBOOK_TOOLCHAIN" native.cmake COOKBOOK_CMAKE_FLAGS+=( -DLLVM_ROOT="${COOKBOOK_SYSROOT}" -DCLANG_LINK_CLANG_DYLIB=ON -DLIBCLANG_BUILD_STATIC=1 -DLLVM_BUILD_UTILS=On # the shared options from llvm -DCMAKE_CXX_FLAGS="--std=gnu++11" -DBUILD_SHARED_LIBS=False -DLLVM_BUILD_EXAMPLES=Off -DLLVM_BUILD_TESTS=Off -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}" -DLLVM_ENABLE_LTO=Off -DLLVM_ENABLE_RTTI=On -DLLVM_ENABLE_THREADS=On -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH=$ARCH -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin -DUNIX=1 ) COOKBOOK_SOURCE="$COOKBOOK_SOURCE/clang" if [ "$TARGET" = "$COOKBOOK_HOST_TARGET" ]; then COOKBOOK_CMAKE_FLAGS+=( -DLLVM_TABLEGEN_EXE=${COOKBOOK_TOOLCHAIN}/bin/llvm-tblgen ) "${COOKBOOK_CMAKE}" "${COOKBOOK_SOURCE}" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_INCLUDEDIR=include \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_OLDINCLUDEDIR=/include \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_SBINDIR=bin \ -DCMAKE_TOOLCHAIN_FILE=native.cmake \ -GNinja \ -Wno-dev \ "${COOKBOOK_CMAKE_FLAGS[@]}" \ "$@" # All distros use clever tricks to this problem. I have no idea how I came up with this export PATH="$PATH:$COOKBOOK_STAGE/usr/bin" DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install-clang-tblgen "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" else COOKBOOK_CMAKE_FLAGS+=( -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath native.cmake)" -DCLANG_TABLEGEN_EXE=${COOKBOOK_HOST_SYSROOT}/bin/clang-tblgen -DLLVM_TABLEGEN_EXE=${COOKBOOK_HOST_SYSROOT}/bin/llvm-tblgen ) cookbook_cmake fi """ [[optional-packages]] name = "dev" files = [ "usr/include/clang*/**", "usr/lib/libclang*.a", "usr/lib/cmake/clang/**", ] ================================================ FILE: recipes/dev/cmake/recipe.toml ================================================ [source] tar = "https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3.tar.gz" [build] template = "custom" dependencies = [ "bzip2", # "cppdap", "curl", "expat", # "form", # "jsoncpp", "libarchive", # "liblzma", # "librhash", "libuv", "nghttp2", "openssl1", "zlib", "zstd", ] script = """ DYNAMIC_INIT COOKBOOK_CMAKE_FLAGS+=( -DBUILD_TESTING=Off -DCMAKE_USE_SYSTEM_BZIP2=On -DCMAKE_USE_SYSTEM_CURL=On -DCMAKE_USE_SYSTEM_EXPAT=On -DCMAKE_USE_SYSTEM_LIBARCHIVE=On -DCMAKE_USE_SYSTEM_LIBUV=On -DCMAKE_USE_SYSTEM_NGHTTP2=On -DCMAKE_USE_SYSTEM_ZLIB=On -DCMAKE_USE_SYSTEM_ZSTD=On ) cookbook_cmake set -x mv -vT "${COOKBOOK_STAGE}"/usr/bin "${COOKBOOK_STAGE}/bin" mv -vT "${COOKBOOK_STAGE}"/usr/share "${COOKBOOK_STAGE}/share" rm -rf "${COOKBOOK_STAGE}"/usr/doc rmdir -v "${COOKBOOK_STAGE}"/usr set +x """ ================================================ FILE: recipes/dev/composer/recipe.toml ================================================ #TODO must be run using `php $(which composer)` [build] template = "custom" script = """ mkdir -p "${COOKBOOK_STAGE}"/usr/bin wget -c https://getcomposer.org/download/2.8.12/composer.phar chmod a+x composer.phar cp composer.phar ${COOKBOOK_STAGE}/usr/bin/composer """ ================================================ FILE: recipes/dev/crates-io-index/recipe.toml ================================================ [source] git = "https://github.com/rust-lang/crates.io-index.git" shallow_clone = true [build] template = "custom" script = """ dir="${COOKBOOK_STAGE}/home/user/.cargo/registry/index/github.com-1ecc6299db9ec823" mkdir -pv "${dir}" cp -rv "${COOKBOOK_SOURCE}/.git" "${dir}" """ ================================================ FILE: recipes/dev/fontconfig/recipe.toml ================================================ [source] tar = "https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.16.0.tar.xz" blake3 = "5c95d48f5b9150f4a06d8acac12c25edaac956007df95a3bf527df02a5908f0e" patches = [ "redox.patch" ] [build] template = "meson" dependencies = [ "expat", "freetype2", "libpng", "zlib", ] dev-dependencies = [ "host:gperf" ] mesonflags = [ "-Ddoc=disabled" ] ================================================ FILE: recipes/dev/fontconfig/redox.patch ================================================ diff -ruwN source/src/fccache.c source-new/src/fccache.c --- source/src/fccache.c 2019-06-10 05:36:37.000000000 -0600 +++ source-new/src/fccache.c 2019-10-02 19:48:10.459642095 -0600 @@ -1526,7 +1526,7 @@ #if defined(_WIN32) if (_locking (fd, _LK_LOCK, 1) == -1) goto bail; -#else +#elif !defined(__redox__) struct flock fl; fl.l_type = F_WRLCK; @@ -1556,7 +1556,7 @@ { #if defined(_WIN32) _locking (fd, _LK_UNLCK, 1); -#else +#elif !defined(__redox__) struct flock fl; fl.l_type = F_UNLCK; diff -ruwN source/src/fccharset.c source-new/src/fccharset.c --- source/src/fccharset.c 2018-06-05 04:36:38.000000000 -0600 +++ source-new/src/fccharset.c 2019-10-02 19:48:53.082862133 -0600 @@ -600,7 +600,7 @@ static FcChar32 FcCharSetPopCount (FcChar32 c1) { -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +#if !defined(__redox__) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) return __builtin_popcount (c1); #else /* hackmem 169 */ ================================================ FILE: recipes/dev/gcc13/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/gcc" branch = "redox-13.2.0" shallow_clone = true script = """ DYNAMIC_INIT COOKBOOK_AUTORECONF=autoreconf2.69 autotools_recursive_regenerate -I"$(realpath ./config)" LIBTOOL_BUILD_AUX="${COOKBOOK_LIBTOOL_DIR:-$COOKBOOK_HOST_SYSROOT}"/share/libtool/build-aux cp -fpv "$LIBTOOL_BUILD_AUX"/{config.sub,config.guess,install-sh} libiberty/ """ [build] template = "custom" dependencies = [ "libgmp", "libmpfr", "mpc", # TODO: this zlib get linked when boostrapping gcc # "zlib" ] script = """ DYNAMIC_STATIC_INIT CROSS_GNU_TARGET=${COOKBOOK_CROSS_GNU_TARGET:-$GNU_TARGET} if [ "${COOKBOOK_HOST_SYSROOT}" = "/usr" ]; then # not specifying --enable-shared as it will link shared deps COOKBOOK_STAGE+="/usr" COOKBOOK_CONFIGURE_FLAGS=( --prefix="" --host="${GNU_TARGET}" --program-prefix="${CROSS_GNU_TARGET}-" --with-native-system-header-dir="/include" --disable-hosted-libstdcxx --with-sysroot --with-build-sysroot="${COOKBOOK_CROSS_SYSROOT:-$COOKBOOK_SYSROOT}" --disable-bootstrap ) else export CFLAGS_FOR_TARGET="${CPPFLAGS}" CXXFLAGS_FOR_TARGET="${CPPFLAGS}" LDFLAGS_FOR_TARGET="${LDFLAGS}" export CC_FOR_BUILD="$CC_WRAPPER gcc" CXX_FOR_BUILD="$CC_WRAPPER g++" unset CFLAGS CPPFLAGS LDFLAGS COOKBOOK_CONFIGURE_FLAGS+=( --with-sysroot=/ --with-gmp="${COOKBOOK_SYSROOT}/usr" --with-mpfr="${COOKBOOK_SYSROOT}/usr" --with-mpc="${COOKBOOK_SYSROOT}/usr" ) fi if [ "${CROSS_GNU_TARGET}" = "riscv64gc-unknown-redox" ]; then COOKBOOK_CONFIGURE_FLAGS+=( --with-arch=rv64gc --with-abi=lp64d ) fi if [ "${CROSS_GNU_TARGET}" != "i586-unknown-redox" ]; then COOKBOOK_CONFIGURE_FLAGS+=( --enable-frame-pointer ) fi COOKBOOK_CONFIGURE_FLAGS+=( --target="${CROSS_GNU_TARGET}" --with-linker-hash-style=gnu --enable-languages=c,c++,lto --enable-initfini-array --disable-nls --disable-multilib # --with-system-zlib --enable-host-shared --enable-threads=posix --enable-libstdcxx-threads --with-bugurl="https://gitlab.redox-os.org/redox-os/gcc/-/issues" ) "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-gcc "${COOKBOOK_MAKE}" install-gcc DESTDIR="${COOKBOOK_STAGE}" # requires relibc which is not available on bootstrapping if [ "${COOKBOOK_HOST_SYSROOT}" != "/usr" ]; then "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" all-target-libgcc all-target-libstdc++-v3 "${COOKBOOK_MAKE}" install-target-libgcc install-target-libstdc++-v3 DESTDIR="${COOKBOOK_STAGE}" ln -s "gcc" "${COOKBOOK_STAGE}/usr/bin/cc" # Avoid conflict with libgcc & libstdcxx rm -f "${COOKBOOK_STAGE}"/usr/lib/libgcc_s.so* "${COOKBOOK_STAGE}"/usr/lib/libstdc++.so* fi """ [package] dependencies = [ "gnu-binutils" ] [[optional-packages]] name = "cxx" dependencies = [] files = [ "usr/bin/*c++", "usr/bin/*g++", "usr/include/c++/**", "usr/lib/*c++*", "usr/libexec/gcc/**/cc1plus", "usr/share/gcc-*/python/libstdcxx/**", ] ================================================ FILE: recipes/dev/gdbserver/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/gdbserver.git" [build] template = "cargo" ================================================ FILE: recipes/dev/gdk-pixbuf/recipe.toml ================================================ [source] tar = "https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.44/gdk-pixbuf-2.44.4.tar.xz" blake3 = "94db7bebffbd6be84a1b58a05771e411e9f7c16b06d73fcedaf0e6c0e552be9c" [build] dependencies = [ "gettext", "glib", "libffi", "libiconv", "libjpeg", "libpng", "pcre2", "shared-mime-info", "zlib", ] template = "meson" mesonflags = [ "-Dbuiltin_loaders=all", "-Dinstalled_tests=false", "-Dman=false", "-Dtests=false", ] ================================================ FILE: recipes/dev/git/git.patch ================================================ diff -ruwN git-2.13.1/compat/bswap.h source/compat/bswap.h --- git-2.13.1/compat/bswap.h 2017-06-04 19:08:11.000000000 -0600 +++ source/compat/bswap.h 2025-04-24 11:20:06.475749424 -0600 @@ -1,3 +1,7 @@ +#if defined(__redox__) +#include +#endif + /* * Let's make sure we always have a sane definition for ntohl()/htonl(). * Some libraries define those as a function call, just to perform byte diff -ruwN git-2.13.1/compat/terminal.c source/compat/terminal.c --- git-2.13.1/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 +++ source/compat/terminal.c 2025-04-18 10:00:11.318697446 -0600 @@ -137,6 +137,18 @@ return buf.buf; } +#elif defined(__redox__) + +ssize_t __getline(char **lptr, size_t *n, FILE *fp); + +char *git_terminal_prompt(const char *prompt, int echo) +{ + char *line = NULL; + size_t n = 0; + __getline(&line, &n, stdin); + return line; // XXX leak +} + #else char *git_terminal_prompt(const char *prompt, int echo) diff -ruwN git-2.13.1/configure source/configure --- git-2.13.1/configure 2017-06-04 19:08:11.000000000 -0600 +++ source/configure 2025-04-18 10:00:11.318697446 -0600 @@ -6156,7 +6156,7 @@ ac_res=$ac_cv_search_getaddrinfo if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - NO_IPV6= + NO_IPV6=YesPlease else NO_IPV6=YesPlease fi diff -ruwN git-2.13.1/daemon.c source/daemon.c --- git-2.13.1/daemon.c 2017-06-04 19:08:11.000000000 -0600 +++ source/daemon.c 2025-04-18 10:00:11.319697447 -0600 @@ -71,13 +71,21 @@ return hi->ip_address.buf; } +#if defined(__redox__) +#define LOG_ERR 0 +#define LOG_INFO 1 +#endif + static void logreport(int priority, const char *err, va_list params) { +#if !defined(__redox__) if (log_syslog) { char buf[1024]; vsnprintf(buf, sizeof(buf), err, params); syslog(priority, "%s", buf); - } else { + } else +#endif + { /* * Since stderr is set to buffered mode, the * logging of different processes will not overlap @@ -888,8 +896,12 @@ if (!reuseaddr) return 0; +#if defined(__redox__) + return 0; +#else return setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); +#endif } struct socketlist { @@ -1174,11 +1186,7 @@ if (!group_name) c.gid = c.pass->pw_gid; else { - struct group *group = getgrnam(group_name); - if (!group) die("group not found - %s", group_name); - - c.gid = group->gr_gid; } return &c; @@ -1348,10 +1356,12 @@ usage(daemon_usage); } +#if !defined(__redox__) if (log_syslog) { openlog("git-daemon", LOG_PID, LOG_DAEMON); set_die_routine(daemon_die); } else +#endif /* avoid splitting a message in the middle */ setvbuf(stderr, NULL, _IOFBF, 4096); diff -ruwN git-2.13.1/git-compat-util.h source/git-compat-util.h --- git-2.13.1/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 +++ source/git-compat-util.h 2025-04-18 10:00:11.319697447 -0600 @@ -1,6 +1,18 @@ #ifndef GIT_COMPAT_UTIL_H #define GIT_COMPAT_UTIL_H +#ifndef SIG_DFL +#define SIG_DFL ((void (*)(int))0) +#endif + +#ifndef SIG_IGN +#define SIG_IGN ((void (*)(int))1) +#endif + +#ifndef SIG_ERR +#define SIG_ERR ((void (*)(int))-1) +#endif + #define _FILE_OFFSET_BITS 64 @@ -323,6 +335,14 @@ #define PATH_SEP ':' #endif +#ifndef DEV_NULL +#if defined(__redox__) +#define DEV_NULL "/scheme/null" +#else +#define DEV_NULL "/dev/null" +#endif +#endif + #ifdef HAVE_PATHS_H #include #endif diff -ruwN git-2.13.1/Makefile source/Makefile --- git-2.13.1/Makefile 2017-06-05 08:08:11.000000000 +0700 +++ source/Makefile 2025-09-01 04:41:10.339224568 +0700 @@ -979,7 +979,7 @@ BUILTIN_OBJS += builtin/write-tree.o GITLIBS = common-main.o $(LIB_FILE) $(XDIFF_LIB) -EXTLIBS = +EXTLIBS = -lnghttp2 GIT_USER_AGENT = git/$(GIT_VERSION) @@ -1802,7 +1802,6 @@ $(BUILT_INS): git$X $(QUIET_BUILT_IN)$(RM) $@ && \ - ln $< $@ 2>/dev/null || \ ln -s $< $@ 2>/dev/null || \ cp $< $@ @@ -2096,7 +2095,6 @@ $(REMOTE_CURL_ALIASES): $(REMOTE_CURL_PRIMARY) $(QUIET_LNCP)$(RM) $@ && \ - ln $< $@ 2>/dev/null || \ ln -s $< $@ 2>/dev/null || \ cp $< $@ @@ -2449,14 +2447,12 @@ for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \ $(RM) "$$bindir/$$p" && \ test -z "$(NO_INSTALL_HARDLINKS)" && \ - ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \ ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \ cp "$$bindir/git$X" "$$bindir/$$p" || exit; \ done && \ for p in $(BUILT_INS); do \ $(RM) "$$execdir/$$p" && \ test -z "$(NO_INSTALL_HARDLINKS)" && \ - ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \ ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git$X" "$$execdir/$$p" || exit; \ done && \ @@ -2464,7 +2460,6 @@ for p in $$remote_curl_aliases; do \ $(RM) "$$execdir/$$p" && \ test -z "$(NO_INSTALL_HARDLINKS)" && \ - ln "$$execdir/git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ done && \ diff -ruwN git-2.13.1/run-command.c source/run-command.c --- git-2.13.1/run-command.c 2017-06-04 19:08:11.000000000 -0600 +++ source/run-command.c 2025-04-18 10:00:11.320697447 -0600 @@ -120,9 +120,9 @@ #ifndef GIT_WINDOWS_NATIVE static inline void dup_devnull(int to) { - int fd = open("/dev/null", O_RDWR); + int fd = open(DEV_NULL, O_RDWR); if (fd < 0) - die_errno(_("open /dev/null failed")); + die_errno(_("open %s failed"), DEV_NULL); if (dup2(fd, to) < 0) die_errno(_("dup2(%d,%d) failed"), fd, to); close(fd); diff -ruwN git-2.13.1/setup.c source/setup.c --- git-2.13.1/setup.c 2017-06-05 08:08:11.000000000 +0700 +++ source/setup.c 2025-09-01 04:41:10.339224568 +0700 @@ -1146,11 +1146,11 @@ /* if any standard file descriptor is missing open it to /dev/null */ void sanitize_stdfds(void) { - int fd = open("/dev/null", O_RDWR, 0); + int fd = open(DEV_NULL, O_RDWR, 0); while (fd != -1 && fd < 2) fd = dup(fd); if (fd == -1) - die_errno("open /dev/null or dup failed"); + die_errno("open %s or dup failed", DEV_NULL); if (fd > 2) close(fd); } @@ -1169,8 +1169,10 @@ default: exit(0); } +#if !defined(__redox__) if (setsid() == -1) die_errno("setsid failed"); +#endif close(0); close(1); close(2); ================================================ FILE: recipes/dev/git/recipe.toml ================================================ [source] tar = "https://www.kernel.org/pub/software/scm/git/git-2.13.1.tar.xz" blake3 = "bc78271bffd60c5b8b938d8c08fd74dc2de8d21fbaf8f8e0e3155436d9263f17" patches = ["git.patch"] [build] dependencies=[ "curl", "expat", "nghttp2", "openssl3", "zlib" ] template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ DYNAMIC_INIT MAKEFLAGS=( NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 NO_IPV6=1 NO_PREAD=1 NO_MMAP=1 NO_SETITIMER=1 NO_UNIX_SOCKETS=1 NEEDS_LIBICONV= NEEDS_LIBRT= BLK_SHA1=1 V=1 ) export CURL_CONFIG="${COOKBOOK_SYSROOT}/usr/bin/curl-config" ./configure \ --host="${GNU_TARGET}" \ --prefix=/usr \ ac_cv_fread_reads_directories=yes \ ac_cv_snprintf_returns_bogus=yes \ ac_cv_lib_curl_curl_global_init=yes "${COOKBOOK_MAKE}" "${MAKEFLAGS[@]}" -j"${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" DESTDIR="${COOKBOOK_STAGE}" "${MAKEFLAGS[@]}" install rm -rf "${COOKBOOK_STAGE}/usr/share/man" """ [package] dependencies = [ "ca-certificates", "nghttp2" ] ================================================ FILE: recipes/dev/gitoxide/recipe.toml ================================================ [source] git = "https://github.com/Byron/gitoxide.git" [build] dependencies = [ "openssl1", ] template = "custom" script = """ export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export OPENSSL_STATIC="true" cookbook_cargo """ ================================================ FILE: recipes/dev/gnu-make/recipe.toml ================================================ #TODO very basic makefiles are tested to work but needs more testing [source] tar = "http://ftp.gnu.org/gnu/make/make-4.4.tar.gz" patches = [ "redox.patch" ] script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( # TODO: https://gitlab.redox-os.org/redox-os/redox/-/issues/1753 'ac_cv_func_mkfifo=no' ) cookbook_configure """ ================================================ FILE: recipes/dev/gnu-make/redox.patch ================================================ diff -ruwN make-4.4/src/arscan.c source/src/arscan.c --- make-4.4/src/arscan.c 2022-10-23 16:52:32.000000000 +0200 +++ source/src/arscan.c 2024-08-23 18:28:49.206084084 +0200 @@ -331,7 +331,7 @@ #endif #ifndef WINDOWS32 -# if !defined (__ANDROID__) && !defined (__BEOS__) +# if 0 # include # else /* These platforms don't have but have archives in the same format diff -ruwN make-4.4/src/getopt1.c source/src/getopt1.c --- make-4.4/src/getopt1.c 2022-10-23 21:52:32.000000000 +0700 +++ source/src/getopt1.c 2026-01-24 23:28:34.306706884 +0700 @@ -48,6 +48,10 @@ #endif #endif +#ifdef __redox__ +#define ELIDE_CODE +#endif + #ifndef ELIDE_CODE diff -ruwN make-4.4/src/getopt.c source/src/getopt.c --- make-4.4/src/getopt.c 2022-10-23 21:52:32.000000000 +0700 +++ source/src/getopt.c 2026-01-24 23:21:09.488487860 +0700 @@ -56,6 +56,10 @@ # endif #endif +#ifdef __redox__ +#define ELIDE_CODE +#endif + #ifndef ELIDE_CODE ================================================ FILE: recipes/dev/hello-world-examples/recipe.toml ================================================ [source] git = "https://github.com/leachim6/hello-world" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/home/user/hello-world-examples cp -rv "${COOKBOOK_SOURCE}"/[#,a-z] "${COOKBOOK_STAGE}"/home/user/hello-world-examples """ ================================================ FILE: recipes/dev/jq/recipe.toml ================================================ #TODO undefined reference [source] tar = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-1.8.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/dev/lang/gawk/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/gawk.git" upstream = "https://git.savannah.gnu.org/git/gawk.git" branch = "redox" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( ac_cv_func_gethostbyname=no ac_cv_func_connect=no ) cookbook_configure """ ================================================ FILE: recipes/dev/lci/recipe.toml ================================================ [source] git = "https://github.com/jD91mZM2/rust-lci" [build] template = "cargo" ================================================ FILE: recipes/dev/libtool/recipe.toml ================================================ #TODO can build, not tested [source] git = "https://gitlab.redox-os.org/redox-os/libtool" branch = "v2.5.4-redox" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT # libtool saves absolute path to sysroot which contains nothing unset CFLAGS cp -r "${COOKBOOK_SOURCE}"/. ./ ./bootstrap \ --skip-po \ --force \ --gnulib-srcdir=./gnulib COOKBOOK_CONFIGURE="./configure" cookbook_configure """ ================================================ FILE: recipes/dev/lld21/recipe.toml ================================================ [source] same_as = "../llvm21" [build] template = "custom" dependencies = [ "llvm21", "zstd", ] dev-dependencies = [ "llvm21.dev", "llvm21.runtime", ] script = """ DYNAMIC_INIT ARCH="$(echo "${TARGET}" | cut -d - -f1)" generate_cookbook_cmake_file $COOKBOOK_HOST_TARGET "" "$COOKBOOK_TOOLCHAIN" native.cmake if [ "$TARGET" = "$COOKBOOK_HOST_TARGET" ]; then COOKBOOK_CMAKE_FLAGS+=( -DLLVM_TABLEGEN_EXE=${COOKBOOK_TOOLCHAIN}/bin/llvm-tblgen ) else COOKBOOK_CMAKE_FLAGS+=( -DLLVM_TABLEGEN_EXE=${COOKBOOK_HOST_SYSROOT}/bin/llvm-tblgen ) fi COOKBOOK_CMAKE_FLAGS+=( -DLLVM_ROOT="${COOKBOOK_SYSROOT}" -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath native.cmake)" -DLLVM_USE_STATIC_ZSTD=On # the shared options from llvm -DCMAKE_CXX_FLAGS="--std=gnu++11" -DBUILD_SHARED_LIBS=False -DLLVM_BUILD_EXAMPLES=Off -DLLVM_BUILD_TESTS=Off -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}" -DLLVM_ENABLE_LTO=Off -DLLVM_ENABLE_RTTI=On -DLLVM_ENABLE_THREADS=On -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH=$ARCH -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin -DUNIX=1 ) COOKBOOK_SOURCE="$COOKBOOK_SOURCE/lld" cookbook_cmake """ [[optional-packages]] name = "dev" dependencies = [] files = [ "usr/include/lld*/**", "usr/lib/liblld*.a", "usr/lib/cmake/lld/**", ] ================================================ FILE: recipes/dev/llvm18/native.cmake ================================================ set(CMAKE_C_COMPILER cc) set(CMAKE_CXX_COMPILER c++) ================================================ FILE: recipes/dev/llvm18/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/llvm-project.git" upstream = "https://github.com/rust-lang/llvm-project.git" branch = "redox-2024-05-11" shallow_clone = true [build] template = "custom" dependencies = [ "zlib" ] script = """ DYNAMIC_INIT # https://llvm.org/docs/CMake.html case "${TARGET}" in x86-unknown-redox) LLVM_TARGETS_TO_BUILD="X86" ;; x86_64-unknown-redox) LLVM_TARGETS_TO_BUILD="X86" ;; aarch64-unknown-redox) LLVM_TARGETS_TO_BUILD="AArch64" ;; riscv64gc-unknown-redox) LLVM_TARGETS_TO_BUILD="RISCV" ;; *) LLVM_TARGETS_TO_BUILD="host" ;; esac COOKBOOK_CMAKE_FLAGS+=( -DCMAKE_CXX_FLAGS="--std=gnu++11" -DBUILD_SHARED_LIBS=False -DLLVM_LINK_LLVM_DYLIB=On -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath "${COOKBOOK_RECIPE}/native.cmake")" -DLLVM_BUILD_BENCHMARKS=Off -DLLVM_BUILD_EXAMPLES=Off -DLLVM_BUILD_TESTS=Off -DLLVM_BUILD_UTILS=Off -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}" -DLLVM_ENABLE_LTO=Off -DLLVM_ENABLE_RTTI=On -DLLVM_ENABLE_THREADS=On -DLLVM_ENABLE_ZSTD=Off -DLLVM_INCLUDE_BENCHMARKS=Off -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_INCLUDE_UTILS=Off -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH="$(echo "${TARGET}" | cut -d - -f1)" -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS_TO_BUILD}" -DLLVM_TOOL_LLVM_COV_BUILD=Off -DLLVM_TOOL_LLVM_LTO_BUILD=Off -DLLVM_TOOL_LLVM_LTO2_BUILD=Off -DLLVM_TOOL_LLVM_PROFDATA_BUILD=Off -DLLVM_TOOL_LLVM_RTDYLD_BUILD=Off -DLLVM_TOOL_LLVM_XRAY_BUILD=Off -DLLVM_TOOL_LLI_BUILD=Off -DLLVM_TOOL_LTO_BUILD=Off -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin -DUNIX=1 -DLLVM_ENABLE_PROJECTS="llvm" ) # Native tablegen build fails with too many jobs, limit to 16 COOKBOOK_MAKE_JOBS="$(( ${COOKBOOK_MAKE_JOBS} > 16 ? 16 : ${COOKBOOK_MAKE_JOBS} ))" cookbook_cmake "${COOKBOOK_SOURCE}/llvm" """ ================================================ FILE: recipes/dev/llvm21/native.cmake ================================================ set(CMAKE_C_COMPILER cc) set(CMAKE_CXX_COMPILER c++) ================================================ FILE: recipes/dev/llvm21/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/llvm-project.git" upstream = "https://github.com/rust-lang/llvm-project.git" branch = "redox-2025-10-03" shallow_clone = true [build] template = "custom" dependencies = [ "zstd", ] script = """ DYNAMIC_INIT ARCH="$(echo "${TARGET}" | cut -d - -f1)" case "${ARCH}" in x86 | x86_64) LLVM_TARGETS_TO_BUILD="X86";; aarch64) LLVM_TARGETS_TO_BUILD="AArch64";; riscv64gc) LLVM_TARGETS_TO_BUILD="RISCV";; esac if [ "${COOKBOOK_HOST_SYSROOT}" = "/usr" ]; then LLVM_TARGETS_TO_BUILD="X86;AArch64;RISCV" fi # This just build the LLVM library and tools just enough for Rust, to build the rest of LLVM see # https://github.com/llvm/llvm-zorg/blob/main/zorg/buildbot/builders/annotated/standalone-build.sh COOKBOOK_CMAKE_FLAGS+=( -DLLVM_BUILD_LLVM_DYLIB=On -DLLVM_LINK_LLVM_DYLIB=On -DLLVM_INCLUDE_UTILS=On -DLLVM_INSTALL_UTILS=On -DLLVM_TOOL_LLVM_COV_BUILD=On -DLLVM_TOOL_LLVM_PROFDATA_BUILD=On -DLLVM_TARGETS_TO_BUILD="$LLVM_TARGETS_TO_BUILD" -DLLVM_ENABLE_ZLIB=Off -DLLVM_USE_STATIC_ZSTD=On -DLLVM_ENABLE_LIBXML2=Off # the rest of options that shared to clang -DCROSS_TOOLCHAIN_FLAGS_NATIVE="-DCMAKE_TOOLCHAIN_FILE=$(realpath "${COOKBOOK_RECIPE}/native.cmake")" -DCMAKE_CXX_FLAGS="--std=gnu++11" -DBUILD_SHARED_LIBS=False -DLLVM_BUILD_EXAMPLES=Off -DLLVM_BUILD_TESTS=Off -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET}" -DLLVM_ENABLE_LTO=Off -DLLVM_ENABLE_RTTI=On -DLLVM_ENABLE_THREADS=On -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_TARGET_ARCH=$ARCH -DLLVM_TOOLS_INSTALL_DIR=bin -DLLVM_UTILS_INSTALL_DIR=bin -DUNIX=1 ) COOKBOOK_SOURCE="$COOKBOOK_SOURCE/llvm" cookbook_cmake """ # llvm runtime [[optional-packages]] name = "runtime" files = [ "usr/bin/**", ] [[optional-packages]] name = "dev" dependencies = [ ".runtime" ] files = [ "usr/include/llvm*/**", "usr/lib/libLLVM*.a", "usr/lib/cmake/llvm/**", ] ================================================ FILE: recipes/dev/lua54/recipe.toml ================================================ [source] tar = "https://lua.org/ftp/lua-5.4.7.tar.gz" blake3 = "e51c2f347e3185479d5ff95cae8ac77511db486853269443c56bedaa0a6ae629" [build] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" posix \ AR="${AR} rcu" \ CC="${CC} -std=gnu99" \ RANLIB="${RANLIB}" \ SYSLDFLAGS="$LDFLAGS" "${COOKBOOK_MAKE}" install INSTALL_TOP="${COOKBOOK_STAGE}" """ ================================================ FILE: recipes/dev/luajit/recipe.toml ================================================ [source] git = "https://luajit.org/git/luajit.git" rev = "a4f56a459a588ae768801074b46ba0adcfb49eb1" patches = ["redox.patch"] [build] template = "custom" script = """ DYNAMIC_INIT rsync -av "${COOKBOOK_SOURCE}/" ./ OS=$(echo "${TARGET}" | cut -d - -f3) case "${OS}" in linux) SYS=Linux;; redox) SYS=Redox;; esac ${COOKBOOK_MAKE} -j ${COOKBOOK_MAKE_JOBS} install \ PREFIX="${COOKBOOK_STAGE}" \ TARGET_SYS="${SYS}" \ CROSS="${GNU_TARGET}-" """ ================================================ FILE: recipes/dev/luajit/redox.patch ================================================ diff --git a/src/Makefile b/src/Makefile index 3a6a4329..450e8fe6 100644 --- a/src/Makefile +++ b/src/Makefile @@ -351,6 +351,9 @@ else ifeq (GNU/kFreeBSD,$(TARGET_SYS)) TARGET_XLIBS+= -ldl endif + ifeq (Redox,$(TARGET_SYS)) + TARGET_XCFLAGS+= -DLUAJIT_OS=LUAJIT_OS_POSIX + endif endif endif endif @@ -367,12 +370,16 @@ ifneq ($(HOST_SYS),$(TARGET_SYS)) else ifeq (iOS,$(TARGET_SYS)) HOST_XCFLAGS+= -DLUAJIT_OS=LUAJIT_OS_OSX -DTARGET_OS_IPHONE=1 + else + ifeq (Redox,$(TARGET_SYS)) + HOST_XCFLAGS+= -DLUAJIT_OS=LUAJIT_OS_POSIX else HOST_XCFLAGS+= -DLUAJIT_OS=LUAJIT_OS_OTHER endif endif endif endif + endif endif ifneq (,$(CCDEBUG)) ================================================ FILE: recipes/dev/luarocks/recipe.toml ================================================ [source] git = "https://github.com/luarocks/luarocks.git" [build] template = "custom" dependencies = [ "lua54" ] script = """ COOKBOOK_CONFIGURE_FLAGS=( --sysconfdir=$COOKBOOK_SYSROOT --with-lua-include=$COOKBOOK_SYSROOT/include --with-lua-bin=$COOKBOOK_SYSROOT/bin --with-lua-lib=$COOKBOOK_SYSROOT/lib ) cd "${COOKBOOK_SOURCE}" cookbook_configure """ ================================================ FILE: recipes/dev/nasm/recipe.toml ================================================ [source] #TODO: nasm.us is down: tar = "https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz" tar = "https://gstreamer.freedesktop.org/src/mirror/nasm-2.14.02.tar.xz" blake3 = "f66c0cc852c3b9e3321f57c33ef336e17a128bd3d854ee095aae7e6f64629f20" [build] template = "configure" ================================================ FILE: recipes/dev/patch/01_no_rlimit.patch ================================================ diff -ru source/lib/getdtablesize.c source-new/lib/getdtablesize.c --- source/lib/getdtablesize.c 2015-03-06 16:31:45.000000000 -0800 +++ source-new/lib/getdtablesize.c 2017-08-08 19:33:33.993874985 -0700 @@ -106,15 +106,6 @@ int getdtablesize (void) { - struct rlimit lim; - - if (getrlimit (RLIMIT_NOFILE, &lim) == 0 - && 0 <= lim.rlim_cur && lim.rlim_cur <= INT_MAX - && lim.rlim_cur != RLIM_INFINITY - && lim.rlim_cur != RLIM_SAVED_CUR - && lim.rlim_cur != RLIM_SAVED_MAX) - return lim.rlim_cur; - return INT_MAX; } Only in source-new/lib: getdtablesize.c.orig diff -ru source/src/safe.c source-new/src/safe.c --- source/src/safe.c 2015-03-06 16:34:20.000000000 -0800 +++ source-new/src/safe.c 2017-08-08 19:33:53.447430811 -0700 @@ -92,11 +92,7 @@ static void init_dirfd_cache (void) { - struct rlimit nofile; - max_cached_fds = 8; - if (getrlimit (RLIMIT_NOFILE, &nofile) == 0) - max_cached_fds = MAX (nofile.rlim_cur / 4, max_cached_fds); cached_dirfds = hash_initialize (max_cached_fds, NULL, ================================================ FILE: recipes/dev/patch/02_no_chown.patch ================================================ diff -ru source/src/util.c source-new/src/util.c --- source/src/util.c 2015-03-06 16:34:20.000000000 -0800 +++ source-new/src/util.c 2017-08-11 18:24:56.991729200 -0700 @@ -271,6 +271,7 @@ /* May fail if we are not privileged to set the file owner, or we are not in group instat.st_gid. Ignore those errors. */ + /* if ((uid != -1 || gid != -1) && safe_lchown (to, uid, gid) != 0 && (errno != EPERM @@ -281,6 +282,7 @@ (uid == -1) ? "owner" : "owning group", S_ISLNK (mode) ? "symbolic link" : "file", quotearg (to)); + */ } if (attr & FA_XATTRS) if (copy_attr (from, to) != 0 ================================================ FILE: recipes/dev/patch/03_renameat2.patch ================================================ --- source-old/lib/renameat2.c 2018-02-03 05:41:53.000000000 -0700 +++ source/lib/renameat2.c 2025-11-01 08:39:54.945513820 -0600 @@ -70,6 +70,7 @@ Obey FLAGS when doing the renaming. If FLAGS is zero, this function is equivalent to renameat (FD1, SRC, FD2, DST). */ +#if !defined(__redox__) int renameat2 (int fd1, char const *src, int fd2, char const *dst, unsigned int flags) @@ -225,3 +226,4 @@ #endif /* !HAVE_RENAMEAT */ } +#endif ================================================ FILE: recipes/dev/patch/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz" blake3 = "d46d14c12aa4ea51e356bf92091c368fd871e1d770b94bc29027886737aecd5f" patches = [ "01_no_rlimit.patch", "02_no_chown.patch", "03_renameat2.patch", ] script = """ wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" autoreconf """ [build] template = "custom" script = """ COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/configure" COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="/" --build="$(gcc -dumpmachine)" ) cookbook_configure ${TARGET}-strip "${COOKBOOK_STAGE}/bin/"* rm -rf "${COOKBOOK_STAGE}/share" "${COOKBOOK_STAGE}/lib" """ ================================================ FILE: recipes/dev/pciids/recipe.toml ================================================ [source] git = "https://github.com/pciutils/pciids.git" [build] template = "custom" script = """ install -d "${COOKBOOK_STAGE}/share/misc/" install "${COOKBOOK_SOURCE}"/pci.ids "${COOKBOOK_STAGE}/share/misc/" """ ================================================ FILE: recipes/dev/php84/recipe.toml ================================================ [source] tar = "https://www.php.net/distributions/php-8.4.17.tar.xz" blake3 = "a8478dddd948d4b26e51c5727ac0895440da76e8ad9be947098a4284ca0b7f2a" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "bzip2", "curl", "gettext", "libffi", "libgmp", "libavif", "libicu", "libjpeg", "libedit", "libonig", "libpng", "libsodium", "libwebp", "libxml2", "libiconv", "libzip", "ncursesw", "nghttp2", "openssl1", "openssl3", # put this after openssl1 "pcre", "sqlite3", "xz", "zlib", "zstd", ] script = """ DYNAMIC_INIT export SUFFIX="84" export CURL_LIBS="-lcurl -lnghttp2 -lssl -lcrypto" COOKBOOK_CONFIGURE_FLAGS+=( --program-suffix=${SUFFIX} --sysconfdir=/etc/php/$SUFFIX --with-config-file-path=/etc/php/$SUFFIX --with-config-file-scan-dir=/etc/php/$SUFFIX/conf.d --with-iconv="${COOKBOOK_SYSROOT}/usr" --disable-opcache --enable-bcmath --enable-calendar --enable-fpm # need times function --enable-gd --enable-intl --enable-mbstring --with-curl --with-gettext --with-gmp --with-jpeg --with-webp --with-avif --with-ffi --with-libedit --with-openssl --with-sodium --with-zip ) "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "$@" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install \ INSTALL_ROOT="${COOKBOOK_STAGE}" \ datarootdir=/usr/share localstatedir=/var mv ${COOKBOOK_STAGE}/usr/sbin/* ${COOKBOOK_STAGE}/usr/bin/ for bin in "php-cgi" "php-config" "php" "phpdbg" "phpize" "php-fpm"; do ln -s "$bin$SUFFIX" ${COOKBOOK_STAGE}/usr/bin/$bin done # will not exist on bash but exist on other shell rm -f ${COOKBOOK_STAGE}/usr/bin/phar$SUFFIX cp ${COOKBOOK_SOURCE}/php.ini* ${COOKBOOK_STAGE}/etc/php/$SUFFIX/ """ ================================================ FILE: recipes/dev/php84/redox.patch ================================================ diff -ruwN source/configure source-new/configure --- source/configure 2026-01-14 00:17:10.000000000 +0700 +++ source-new/configure 2026-01-16 15:56:01.944755811 +0700 @@ -26007,7 +26007,7 @@ then : ac_cv_lib_curl_curl_easy_perform=yes else case e in #( - e) ac_cv_lib_curl_curl_easy_perform=no ;; + e) ac_cv_lib_curl_curl_easy_perform=yes ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ @@ -37728,7 +37728,7 @@ then : php_cv_lib_gd_works=yes else case e in #( - e) php_cv_lib_gd_works=no ;; + e) php_cv_lib_gd_works=yes ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ @@ -40464,7 +40464,7 @@ LIBS_SAVED=$LIBS CFLAGS="$CFLAGS $GMP_CFLAGS" LIBS="$LIBS $GMP_LIBS" - gmp_check=no + gmp_check=yes ac_fn_c_check_header_compile "$LINENO" "gmp.h" "ac_cv_header_gmp_h" "$ac_includes_default" if test "x$ac_cv_header_gmp_h" = xyes then : diff -ruwN source/ext/phar/Makefile.frag source-new/ext/phar/Makefile.frag --- source/ext/phar/Makefile.frag 2026-01-14 00:17:10.000000000 +0700 +++ source-new/ext/phar/Makefile.frag 2026-01-16 15:56:01.946130660 +0700 @@ -30,7 +30,7 @@ -@test -f $(builddir)/phar/phar.inc || cp $(srcdir)/phar/phar.inc $(builddir)/phar/phar.inc TEST_PHP_EXECUTABLE = $(shell $(PHP_EXECUTABLE) -v 2>&1) -TEST_PHP_EXECUTABLE_RES = $(shell echo "$(TEST_PHP_EXECUTABLE)" | grep -c 'Exec format error') +TEST_PHP_EXECUTABLE_RES = $(shell echo "$(TEST_PHP_EXECUTABLE)" | grep -E -c 'Exec format error|required file not found') $(builddir)/phar.php: $(srcdir)/build_precommand.php $(srcdir)/phar/*.inc $(srcdir)/phar/*.php $(SAPI_CLI_PATH) -@(echo "Generating phar.php"; \ diff -ruwN source/ext/posix/posix.c source-new/ext/posix/posix.c --- source/ext/posix/posix.c 2026-01-14 00:17:10.000000000 +0700 +++ source-new/ext/posix/posix.c 2026-01-16 15:56:01.946290813 +0700 @@ -375,7 +375,7 @@ ZEND_PARSE_PARAMETERS_NONE(); - if ((ticks = times(&t)) == -1) { + { POSIX_G(last_error) = errno; RETURN_FALSE; } diff -ruwN source/sapi/fpm/fpm/fpm_status.c source-new/sapi/fpm/fpm/fpm_status.c --- source/sapi/fpm/fpm/fpm_status.c 2026-01-14 00:17:10.000000000 +0700 +++ source-new/sapi/fpm/fpm/fpm_status.c 2026-01-16 15:57:37.781307156 +0700 @@ -84,6 +84,7 @@ continue; } /* prevent NaN */ +#ifdef HAVE_TIMES if (proc_p->cpu_duration.tv_sec == 0 && proc_p->cpu_duration.tv_usec == 0) { cpu = 0.; } else { @@ -91,6 +92,9 @@ proc_p->last_request_cpu.tms_cstime) / fpm_scoreboard_get_tick() / (proc_p->cpu_duration.tv_sec + proc_p->cpu_duration.tv_usec / 1000000.) * 100.; } +#else + cpu = 0.; +#endif array_init(&fpm_proc_stat); add_assoc_long(&fpm_proc_stat, "pid", proc_p->pid); @@ -573,11 +577,15 @@ } /* prevent NaN */ +#ifdef HAVE_TIMES if (proc->cpu_duration.tv_sec == 0 && proc->cpu_duration.tv_usec == 0) { cpu = 0.; } else { cpu = (proc->last_request_cpu.tms_utime + proc->last_request_cpu.tms_stime + proc->last_request_cpu.tms_cutime + proc->last_request_cpu.tms_cstime) / fpm_scoreboard_get_tick() / (proc->cpu_duration.tv_sec + proc->cpu_duration.tv_usec / 1000000.) * 100.; } +#else + cpu = 0.; +#endif if (proc->request_stage == FPM_REQUEST_ACCEPTING) { duration = proc->duration; ================================================ FILE: recipes/dev/pkg-config/recipe.toml ================================================ [source] tar = "https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz" blake3 = "713372b09a1fafeec130dc9bf812a3880f2a90496af5d2194e508d91ccf667d0" script = """ GNU_CONFIG_GET config.sub """ [build] dependencies = [ "gettext", "glib", "libiconv", "pcre2", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/dev/python312/recipe.toml ================================================ [source] tar = "https://www.python.org/ftp/python/3.12.12/Python-3.12.12.tar.xz" blake3 = "29636fdae3e0ee8d0fe585e528c9376fe43876f5f3f0f7892140567946fd907b" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "target:bzip2", "target:libffi", "target:openssl3", "target:ncursesw", "target:readline", "target:sqlite3", "target:zlib", "target:xz", "target:zstd", ] dev-dependencies = [ "host:python312" ] script = """ DYNAMIC_INIT export PYTHONDONTWRITEBYTECODE=1 ARCH="${TARGET%%-*}" OS=$(echo "${TARGET}" | cut -d - -f3-4) if [ "$TARGET" != "$COOKBOOK_HOST_TARGET" ]; then COOKBOOK_CONFIGURE_FLAGS=( --prefix=/usr --disable-ipv6 --host=${GNU_TARGET} --build="$ARCH" --with-build-python="${COOKBOOK_TOOLCHAIN}/usr/bin/python3.12" --with-ensurepip=install --disable-test-modules --with-ssl-default-suites=openssl ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ) else COOKBOOK_CONFIGURE_FLAGS=(--prefix=/usr) fi if [ "${COOKBOOK_DYNAMIC}" != "1" ]; then export MODULE_BUILDTYPE=static COOKBOOK_CONFIGURE_FLAGS+=( --enable-shared ) fi cookbook_configure # A same file to save 60MB (cd "${COOKBOOK_STAGE}/usr/lib/python3.12/config-3.12-$ARCH-$OS" && \ rm -f libpython3.12.a && ln -s ../../libpython3.12.a) """ [[optional-packages]] name = "dev" files = [ "usr/lib/python3.12/config-*/**", "usr/lib/libpython*.a" ] ================================================ FILE: recipes/dev/python312/redox.patch ================================================ diff -ruwN source/configure source-new/configure --- source/configure 2025-10-09 18:07:00.000000000 +0700 +++ source-new/configure 2025-12-09 22:14:30.781035339 +0700 @@ -4283,6 +4283,9 @@ *-*-wasi) ac_sys_system=WASI ;; + *-*-redox*) + ac_sys_system=Redox + ;; *) # for now, limit cross builds to known configurations MACHDEP="unknown" @@ -4307,6 +4310,7 @@ case $MACHDEP in aix*) MACHDEP="aix";; linux*) MACHDEP="linux";; + redox*) MACHDEP="redox";; cygwin*) MACHDEP="cygwin";; darwin*) MACHDEP="darwin";; '') MACHDEP="unknown";; @@ -4327,7 +4331,7 @@ if test "$cross_compiling" = yes; then case "$host" in - *-*-linux*) + *-*-linux*|*-*-redox*) case "$host_cpu" in arm*) _host_cpu=arm @@ -6762,6 +6766,7 @@ #undef cris #undef fr30 #undef linux +#undef redox #undef hppa #undef hpux #undef i386 @@ -6907,6 +6912,18 @@ # endif #elif defined(__gnu_hurd__) i386-gnu +#elif defined(__redox__) +# if defined(__x86_64__) + x86_64-redox +# elif defined(__i386__) + i386-redox +# elif defined(__aarch64__) + aarch64-redox +# elif defined(__riscv) + riscv64-redox +# else +# error unknown platform triplet +# endif #elif defined(__APPLE__) darwin #elif defined(__VXWORKS__) @@ -7507,7 +7524,7 @@ PY3LIBRARY=libpython3.so fi ;; - Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*) + Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*|Redox*) LDLIBRARY='libpython$(LDVERSION).so' BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} @@ -12815,7 +12832,7 @@ Emscripten*|WASI*) LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; - Linux*|GNU*|QNX*|VxWorks*|Haiku*) + Linux*|GNU*|QNX*|VxWorks*|Haiku*|Redox*) LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; FreeBSD*) @@ -12901,7 +12918,7 @@ else CCSHARED="+z"; fi;; Linux-android*) ;; - Linux*|GNU*) CCSHARED="-fPIC";; + Linux*|GNU*|Redox*) CCSHARED="-fPIC";; Emscripten*|WASI*) if test "x$enable_wasm_dynamic_linking" = xyes then : @@ -12939,7 +12956,7 @@ LINKFORSHARED="-Wl,-E -Wl,+s";; # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; - Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; + Linux*|GNU*|Redox*) LINKFORSHARED="-Xlinker -export-dynamic";; # -u libsys_s pulls in all symbols in libsys Darwin/*) LINKFORSHARED="$extra_undefs -framework CoreFoundation" diff -ruwN source/Include/pyport.h source-new/Include/pyport.h --- source/Include/pyport.h 2025-10-09 18:07:00.000000000 +0700 +++ source-new/Include/pyport.h 2025-12-09 22:14:30.781035339 +0700 @@ -684,7 +684,7 @@ # error "Py_TRACE_REFS ABI is not compatible with release and debug ABI" #endif -#if defined(__ANDROID__) || defined(__VXWORKS__) +#if defined(__ANDROID__) || defined(__VXWORKS__) || defined(__redox__) // Use UTF-8 as the locale encoding, ignore the LC_CTYPE locale. // See _Py_GetLocaleEncoding(), PyUnicode_DecodeLocale() // and PyUnicode_EncodeLocale(). diff -ruwN source/Modules/_cryptmodule.c source-new/Modules/_cryptmodule.c --- source/Modules/_cryptmodule.c 2025-10-09 18:07:00.000000000 +0700 +++ source-new/Modules/_cryptmodule.c 2025-12-09 22:14:30.781035339 +0700 @@ -38,13 +38,7 @@ /*[clinic end generated code: output=0512284a03d2803c input=0e8edec9c364352b]*/ { char *crypt_result; -#ifdef HAVE_CRYPT_R - struct crypt_data data; - memset(&data, 0, sizeof(data)); - crypt_result = crypt_r(word, salt, &data); -#else crypt_result = crypt(word, salt); -#endif if (crypt_result == NULL) { return PyErr_SetFromErrno(PyExc_OSError); } diff -ruwN source/Modules/resource.c source-new/Modules/resource.c --- source/Modules/resource.c 2025-10-09 18:07:00.000000000 +0700 +++ source-new/Modules/resource.c 2025-12-09 22:14:30.781035339 +0700 @@ -216,7 +216,7 @@ { struct rlimit rl; - if (resource < 0 || resource >= RLIM_NLIMITS) { + if (resource < 0 || resource >= RLIMIT_NLIMITS) { PyErr_SetString(PyExc_ValueError, "invalid resource specified"); return NULL; @@ -244,7 +244,7 @@ { struct rlimit rl; - if (resource < 0 || resource >= RLIM_NLIMITS) { + if (resource < 0 || resource >= RLIMIT_NLIMITS) { PyErr_SetString(PyExc_ValueError, "invalid resource specified"); return NULL; @@ -292,7 +292,7 @@ struct rlimit old_limit, new_limit; int retval; - if (resource < 0 || resource >= RLIM_NLIMITS) { + if (resource < 0 || resource >= RLIMIT_NLIMITS) { PyErr_SetString(PyExc_ValueError, "invalid resource specified"); return NULL; ================================================ FILE: recipes/dev/redoxer/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/redoxer" branch = "master" [build] template = "cargo" ================================================ FILE: recipes/dev/rust/.gitignore ================================================ /llvm-build/ /llvm-prefix/ /llvm-source/ ================================================ FILE: recipes/dev/rust/config-bootstrap.toml ================================================ [llvm] download-ci-llvm = false static-libstdcpp = false link-shared = true [build] host = ["TARGET"] target = ["TARGET", "i586-unknown-redox", "x86_64-unknown-redox", "aarch64-unknown-redox", "riscv64gc-unknown-redox"] cargo-native-static = true submodules = false docs = false tools = ["cargo", "clippy", "rustdoc", "rustfmt", "src"] extended = true verbose = 1 [install] prefix = "install" sysconfdir = "etc" [rust] backtrace = false codegen-tests = false [target.aarch64-unknown-linux-gnu] llvm-config = "COOKBOOK_TOOLCHAIN/bin/llvm-config" [target.x86_64-unknown-linux-gnu] llvm-config = "COOKBOOK_TOOLCHAIN/bin/llvm-config" ================================================ FILE: recipes/dev/rust/config.toml ================================================ [llvm] download-ci-llvm = false static-libstdcpp = false link-shared = true [build] host = ["COOKBOOK_TARGET"] target = ["COOKBOOK_TARGET"] submodules = false docs = false tools = ["cargo", "clippy", "rustdoc", "rustfmt", "src"] extended = true verbose = 1 [install] prefix = "install" sysconfdir = "etc" [rust] backtrace = false codegen-tests = false [target.COOKBOOK_TARGET] cc = "COOKBOOK_GNU_TARGET-gcc" cxx = "COOKBOOK_GNU_TARGET-g++" ar = "COOKBOOK_GNU_TARGET-ar" linker = "COOKBOOK_GNU_TARGET-gcc" rpath = false crt-static = false llvm-config = "COOKBOOK_SYSROOT/bin/llvm-config" [target.aarch64-unknown-linux-gnu] llvm-config = "COOKBOOK_TOOLCHAIN/bin/llvm-config" [target.x86_64-unknown-linux-gnu] llvm-config = "COOKBOOK_TOOLCHAIN/bin/llvm-config" ================================================ FILE: recipes/dev/rust/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/rust.git" branch = "redox-2025-10-03" shallow_clone = true [build] template = "custom" dependencies = [ "llvm21", "zlib", "curl", "openssl3", ] dev-dependencies = [ "llvm21.dev", "llvm21.runtime", "lld21", ] script = """ if [ "${COOKBOOK_HOST_SYSROOT}" = "/usr" ]; then cat ${COOKBOOK_RECIPE}/config-bootstrap.toml > config.toml sed -i "s|TARGET|${TARGET}|g" config.toml sed -i "s|COOKBOOK_TOOLCHAIN|${COOKBOOK_TOOLCHAIN}|g" config.toml else DYNAMIC_INIT # Linker flags for stage2 compiler (host -> target) ARCH="${TARGET%%-*}" export CARGO_TARGET_${ARCH^^}_UNKNOWN_REDOX_RUSTFLAGS="${RUSTFLAGS}" # Rust # Hack for Rust errorneusly running `llvm-config --version` on cross compiled llvm-config cat "${COOKBOOK_ROOT}/bin/${TARGET}-llvm-config" > "${COOKBOOK_SYSROOT}/bin/llvm-config" # Hack for Rust stage1 being dynamically linked with LLVM in prefix toolchain export LD_LIBRARY_PATH="${COOKBOOK_HOST_SYSROOT}/lib:${LD_LIBRARY_PATH}" # Linker flags for stage1 compiler (host -> host) export RUSTFLAGS_BOOTSTRAP="\ -Clink-args=-L${COOKBOOK_HOST_SYSROOT}/lib \ -Clink-args=-Wl,-rpath-link,${COOKBOOK_HOST_SYSROOT}/lib" export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="${RUSTFLAGS_BOOTSTRAP}" export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="${RUSTFLAGS_BOOTSTRAP}" cat ${COOKBOOK_RECIPE}/config.toml > config.toml sed -i "s|COOKBOOK_SYSROOT|${COOKBOOK_SYSROOT}|g" config.toml sed -i "s|COOKBOOK_TOOLCHAIN|${COOKBOOK_HOST_SYSROOT}|g" config.toml sed -i "s|COOKBOOK_TARGET|${TARGET}|g" config.toml sed -i "s|COOKBOOK_GNU_TARGET|${GNU_TARGET}|g" config.toml fi # Don't poison the stage1 compiler (host -> host) unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS CARGO_ENCODED_RUSTFLAGS STRIP python3 "${COOKBOOK_SOURCE}/x.py" install \ --config config.toml \ --jobs ${COOKBOOK_MAKE_JOBS} mkdir -p "${COOKBOOK_STAGE}"/usr rsync -av --delete "${COOKBOOK_BUILD}"/install/* "${COOKBOOK_STAGE}"/usr/ rm -rf "${COOKBOOK_STAGE}"/usr/lib/rustlib/*.log # workaround for rust.lld, needed by e.g. compiling bootloader # https://github.com/rust-lang/rust/issues/143076#issuecomment-3011710678 LLD_DIR="${COOKBOOK_STAGE}/usr/lib/rustlib/$TARGET/bin" mkdir -p $LLD_DIR/gcc-ld cp ${COOKBOOK_SYSROOT}/usr/bin/lld $LLD_DIR/rust-lld ln -s rust-lld $LLD_DIR/wasm-component-ld ln -s ../rust-lld $LLD_DIR/gcc-ld/ld.lld ln -s ../rust-lld $LLD_DIR/gcc-ld/ld64.lld ln -s ../rust-lld $LLD_DIR/gcc-ld/lld-link ln -s ../rust-lld $LLD_DIR/gcc-ld/wasm-ld ln -s ../../../libLLVM.so.21.1 $LLD_DIR/../lib/libLLVM.so.21.1 """ [[optional-packages]] name = "doc" files = [ "usr/share/doc/**", ] ================================================ FILE: recipes/dev/rustpython/recipe.toml ================================================ [source] git = "https://github.com/RustPython/RustPython" # newer rev requires 'bits/libc-header-start.h' for bindgen rev = "2025-10-13-main-51" shallow_clone = true patches = [ "redox.patch" ] [build] dependencies = [ "openssl3", "zlib", ] template = "custom" script = """ DYNAMIC_INIT export BUILDTIME_RUSTPYTHONPATH=/lib/rustpython export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export ZLIB_STATIC=1 cookbook_cargo --features ssl mkdir -p "${COOKBOOK_STAGE}/lib" rsync -aE \ --exclude 'test/' \ --exclude '__pycache__/' \ --exclude '*.pyc' \ --exclude '/README.md' \ "${COOKBOOK_SOURCE}"/Lib/ "${COOKBOOK_STAGE}/lib/rustpython" """ ================================================ FILE: recipes/dev/rustpython/redox.patch ================================================ diff --git a/stdlib/src/posixsubprocess.rs b/stdlib/src/posixsubprocess.rs index 7f418c899..4da6a6858 100644 --- a/stdlib/src/posixsubprocess.rs +++ b/stdlib/src/posixsubprocess.rs @@ -441,15 +441,14 @@ fn close_dir_fds(keep: KeepFds<'_>) -> nix::Result<()> { fn close_filetable_fds(keep: KeepFds<'_>) -> nix::Result<()> { use nix::fcntl; use std::os::fd::{FromRawFd, OwnedFd}; - let fd = fcntl::open( + let filetable = fcntl::open( c"/scheme/thisproc/current/filetable", fcntl::OFlag::O_RDONLY, nix::sys::stat::Mode::empty(), )?; - let filetable = unsafe { OwnedFd::from_raw_fd(fd) }; let read_one = || -> nix::Result<_> { let mut byte = 0; - let n = nix::unistd::read(filetable.as_raw_fd(), std::slice::from_mut(&mut byte))?; + let n = nix::unistd::read(&filetable, std::slice::from_mut(&mut byte))?; Ok((n > 0).then_some(byte)) }; while let Some(c) = read_one()? { ================================================ FILE: recipes/doc/book/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/book.git" [build] template = "custom" script = """ dir="${COOKBOOK_STAGE}/usr/share/book" mkdir -pv "${dir}" mdbook build --dest-dir "${dir}" "${COOKBOOK_SOURCE}" """ ================================================ FILE: recipes/emulators/dosbox/01_redox.patch ================================================ diff -rupNw source-original/include/cross.h source/include/cross.h --- source-original/include/cross.h 2010-05-10 19:43:54.000000000 +0200 +++ source/include/cross.h 2018-05-04 21:14:40.397157710 +0200 @@ -64,7 +64,7 @@ //Solaris maybe others #if defined (DB_HAVE_NO_POWF) #include -static inline float powf (float x, float y) { return (float) pow (x,y); } +//static inline float powf (float x, float y) { return (float) pow (x,y); } #endif class Cross { diff -rupNw source-original/src/gui/sdlmain.cpp source/src/gui/sdlmain.cpp --- source-original/src/gui/sdlmain.cpp 2010-05-10 19:43:54.000000000 +0200 +++ source/src/gui/sdlmain.cpp 2018-05-04 21:15:31.937672555 +0200 @@ -1518,7 +1518,7 @@ void Config_Add_SDL() { Pstring = sdl_sec->Add_path("mapperfile",Property::Changeable::Always,MAPPERFILE); Pstring->Set_help("File used to load/save the key/event mappings from. Resetmapper only works with the defaul value."); - Pbool = sdl_sec->Add_bool("usescancodes",Property::Changeable::Always,true); + Pbool = sdl_sec->Add_bool("usescancodes",Property::Changeable::Always,false); Pbool->Set_help("Avoid usage of symkeys, might not work on all operating systems."); } ================================================ FILE: recipes/emulators/dosbox/manifest ================================================ name=DOSBox category=Games binary=/bin/dosbox icon=/ui/icons/apps/dosbox.png ================================================ FILE: recipes/emulators/dosbox/recipe.toml ================================================ [source] tar = "https://sourceforge.net/projects/dosbox/files/dosbox/0.74-3/dosbox-0.74-3.tar.gz/download" blake3 = "8bc50ffdba20579fb3080a0dca32cb939c8a3c19259aed026482c6ac069b0007" patches = ["01_redox.patch"] script = """ ./autogen.sh GNU_CONFIG_GET config.sub """ [build] dependencies = [ "liborbital", "sdl1", ] template = "custom" script = """ DYNAMIC_INIT export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL" export CPPFLAGS="${CPPFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL" export LDFLAGS+=" -lorbital" COOKBOOK_CONFIGURE_FLAGS+=( --disable-opengl --disable-sdltest --with-sdl-prefix="${COOKBOOK_SYSROOT}" ) cookbook_configure mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/dosbox" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/apps" cp -v "${COOKBOOK_RECIPE}/icon.png" "${COOKBOOK_STAGE}/usr/share/icons/apps/dosbox.png" """ ================================================ FILE: recipes/emulators/flycast/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/flycast.git" [build] template = "custom" dependencies = [ "curl", "libiconv", "liborbital", "mesa", "nghttp2", "openssl1", "sdl2", "zlib", ] script = """ DYNAMIC_INIT export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/usr/include/SDL2" export CXXFLAGS="${CXXFLAGS} -D_GLIBCXX_USE_C99_MATH_TR1=1 -I${COOKBOOK_SYSROOT}/usr/include/SDL2" #TODO: don't use this export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" #TODO: don't add curl export SDL_LIBS="${SDL_LIBS} -lcurl -lnghttp2 -lssl -lcrypto" COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_VERBOSE_MAKEFILE=On -DCMAKE_CROSSCOMPILING=True -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="/usr" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DREDOX=1 -DUNIX=1 -DUSE_HOST_LIBZIP=OFF -DUSE_OPENMP=OFF -DUSE_VULKAN=OFF -DZLIB_LIBRARY="-lz" # Hacks for cmake errors -DHAVE___INT8_LIBZIP=False -DHAVE___INT16_LIBZIP=False -DHAVE___INT32_LIBZIP=False -DHAVE___INT64_LIBZIP=False -DHAVE_FICLONERANGE=False -DHAVE_NULLABLE=False # Hack for Threads -DCMAKE_THREAD_LIBS_INIT="-lc" -DCMAKE_HAVE_THREADS_LIBRARY=1 -DCMAKE_USE_WIN32_THREADS_INIT=0 -DCMAKE_USE_PTHREADS_INIT=1 -DTHREADS_PREFER_PTHREAD_FLAG=ON "${COOKBOOK_SOURCE}" ) cookbook_configure # appstream generation broken rm -rf "${COOKBOOK_STAGE}/usr/share/metainfo" """ ================================================ FILE: recipes/emulators/libretro-super/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/libretro-super.git" [build] template = "custom" dependencies = [ "zlib", ] script = """ CORES=( snes9x ) pushd "${COOKBOOK_SOURCE}" ./libretro-fetch.sh "${CORES[@]}" popd rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export platform=Redox export STATIC_LINKING=1 ./libretro-build.sh "${CORES[@]}" ./libretro-install.sh "${COOKBOOK_STAGE}/share/libretro" """ ================================================ FILE: recipes/emulators/mednafen/recipe.toml ================================================ [source] tar = "https://mednafen.github.io/releases/files/mednafen-1.29.0.tar.xz" blake3 = "c75c1044cdc9328b2349915a67972d6135c77eb53eb0d995788f22b7daacf79b" patches = [ "redox.patch", ] [build] template = "custom" dependencies = [ #TODO: libflac "libiconv", "liborbital", "mesa", "sdl2", "zlib", ] script = """ DYNAMIC_INIT export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" COOKBOOK_CONFIGURE_FLAGS+=( --without-libflac ) cookbook_configure """ ================================================ FILE: recipes/emulators/mednafen/redox.patch ================================================ diff -ruwN source-old/src/sound/SwiftResampler.cpp source/src/sound/SwiftResampler.cpp --- source-old/src/sound/SwiftResampler.cpp 2022-01-18 14:16:23.000000000 -0700 +++ source/src/sound/SwiftResampler.cpp 2022-12-16 20:01:02.263159230 -0700 @@ -608,6 +608,9 @@ if(hp_tc > 0) { +#ifndef M_E +#define M_E 2.7182818284590452354 +#endif double tdm = (pow(2.0 - pow(M_E, -1.0), 1.0 / (hp_tc * output_rate)) - 1.0); //printf("%f\n", tdm); ================================================ FILE: recipes/emulators/mgba/recipe.toml ================================================ [source] tar = "https://github.com/mgba-emu/mgba/archive/0.10.5.tar.gz" blake3 = "a1b9e797a5058f5264d276805aef5643b7ea460916e491a0098ba32d87f1519e" patches = ["redox.patch"] [build] dependencies = ["libiconv", "liborbital", "libpng", "pixman", "sdl1", "zlib"] template = "cmake" cmakeflags = [ "-DBUILD_QT=OFF", "-DBUILD_SHARED=ON", "-DBUILD_STATIC=OFF", "-DUSE_SQLITE3=OFF", "-DUSE_DEBUGGERS=OFF", "-DBUILD_SDL=ON", "-DSDL_VERSION=1.2", "-DSDL_LIBRARY=-lSDL -lorbital", ] ================================================ FILE: recipes/emulators/mgba/redox.patch ================================================ diff -ruwN mgba-0.10.5/src/third-party/zlib/contrib/minizip/ioapi.h source/src/third-party/zlib/contrib/minizip/ioapi.h --- mgba-0.10.5/src/third-party/zlib/contrib/minizip/ioapi.h 2025-03-08 20:09:26.000000000 -0700 +++ source/src/third-party/zlib/contrib/minizip/ioapi.h 2025-06-13 13:07:13.489517096 -0600 @@ -50,7 +50,7 @@ #define ftello64 ftell #define fseeko64 fseek #else -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__redox__) #define fopen64 fopen #define ftello64 ftello #define fseeko64 fseeko ================================================ FILE: recipes/emulators/retroarch/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/retroarch.git" [build] template = "custom" dependencies = [ "liborbital", "libretro-super", "mesa", "openssl1", "sdl2", "zlib", ] script = """ pushd "${COOKBOOK_SOURCE}" ./fetch-submodules.sh popd rsync -av --delete "${COOKBOOK_SOURCE}/" ./ # For now, we will statically link with the snes9x libretro mkdir -pv "${COOKBOOK_SYSROOT}/lib" cp -v "${COOKBOOK_SYSROOT}/share/libretro/snes9x_libretro.a" "${COOKBOOK_SYSROOT}/lib/libretro.a" COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="/" --disable-builtinzlib # conflicts with zlib --disable-discord # does not link --disable-dylib --disable-dynamic --disable-netplaydiscovery # missing ifaddrs.h --disable-thread_storage # crash in pthread_setspecific called by sthread_tls_set --disable-threads # prevents hang --enable-opengl --enable-sdl2 --enable-ssl --enable-zlib --with-libretro="-lretro -lstdc++ -lz" ) cookbook_configure """ ================================================ FILE: recipes/emulators/rs-nes/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/rs-nes.git" #git_upstream = "https://github.com/bgourlie/rs-nes.git" [build] template = "cargo" dependencies = [ "orbital" ] ================================================ FILE: recipes/emulators/rust64/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/rust64.git" #git_upstream = "https://github.com/kondrak/rust64.git" [build] template = "cargo" dependencies = [ "orbital" ] ================================================ FILE: recipes/emulators/rustual-boy/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/rustual-boy.git" upstream = "https://github.com/emu-rs/rustual-boy.git" branch = "redox" [build] template = "custom" script = """ COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/rustual-boy-cli" cookbook_cargo """ [package] dependencies = [ "orbital", ] ================================================ FILE: recipes/emulators/rvvm/recipe.toml ================================================ [source] git = "https://github.com/LekKit/RVVM.git" upstream = "https://github.com/LekKit/RVVM" [build] template = "custom" # SDL2 is tough to link statically, use SDL1 for now dependencies = [ "sdl1", "liborbital", ] script = """ export BUILDDIR="${COOKBOOK_BUILD}" export DESTDIR="${COOKBOOK_STAGE}" # Redox currently doesn't support dynamic library loading export LDFLAGS="${LDFLAGS} $(pkg-config --libs sdl)" # Networking is currently broken on Redox (missing setsockopt?) export USE_NET=0 # Use SDL1 export USE_SDL=1 # Building a shared library is currently broken on Redox export USE_LIB=0 export OS=Redox # Let's goo "${COOKBOOK_MAKE}" install -C "${COOKBOOK_SOURCE}" """ ================================================ FILE: recipes/emulators/scummvm/recipe.toml ================================================ [source] tar = "https://downloads.scummvm.org/frs/scummvm/2.0.0/scummvm-2.0.0.tar.xz" blake3 = "02e6791fd43ad3cb4238c07d23350ca1459a0f692689e585dba1d46648f64327" patches = ["redox.patch"] script = """ GNU_CONFIG_GET config.sub """ [build] template = "custom" dependencies = [ "sdl1", "liborbital", "freetype2", "zlib", "libpng", ] script = """ DYNAMIC_INIT export LDFLAGS+=" -lorbital" COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="/usr" --with-sdl-prefix="${COOKBOOK_SYSROOT}" --with-freetype2-prefix="${COOKBOOK_SYSROOT}" --with-png-prefix="${COOKBOOK_SYSROOT}" --with-zlib-prefix="${COOKBOOK_SYSROOT}" --disable-timidity --disable-mt32emu ) cookbook_configure """ ================================================ FILE: recipes/emulators/scummvm/redox.patch ================================================ diff -rupNw source-original/common/stream.cpp source/common/stream.cpp --- source-original/common/stream.cpp 2017-12-08 23:21:10.000000000 +0100 +++ source/common/stream.cpp 2018-12-06 02:01:50.454108198 +0100 @@ -95,7 +95,7 @@ bool MemoryReadStream::seek(int32 offs, break; } // Post-Condition - assert(_pos <= _size); + //assert(_pos <= _size); // Reset end-of-stream flag on a successful seek _eos = false; diff -rupNw source-original/configure source/configure --- source-original/configure 2017-12-08 23:21:13.000000000 +0100 +++ source/configure 2018-12-06 02:01:50.458108239 +0100 @@ -3610,7 +3610,7 @@ case $_host_os in amigaos* | cygwin* | dreamcast | ds | gamecube | mingw* | n64 | ps2 | ps3 | psp2 | psp | wii | wince) _posix=no ;; - 3ds | android | androidsdl | beos* | bsd* | darwin* | freebsd* | gnu* | gph-linux | haiku* | hpux* | iphone | ios7 | irix*| k*bsd*-gnu* | linux* | maemo | mint* | netbsd* | openbsd* | riscos | solaris* | sunos* | uclinux* | webos) + 3ds | android | androidsdl | beos* | bsd* | darwin* | freebsd* | gnu* | gph-linux | haiku* | hpux* | iphone | ios7 | irix*| k*bsd*-gnu* | linux* | maemo | mint* | netbsd* | openbsd* | riscos | redox* | solaris* | sunos* | uclinux* | webos) _posix=yes ;; os2-emx*) ================================================ FILE: recipes/files/hf/recipe.toml ================================================ [source] git = "https://github.com/sorairolake/hf" [build] template = "cargo" ================================================ FILE: recipes/fonts/dejavu/recipe.toml ================================================ [source] tar="http://sourceforge.net/projects/dejavu/files/dejavu/2.37/dejavu-fonts-ttf-2.37.tar.bz2" blake3="b702bac8a0f8e0802758549da3b4d8041c3c83c3894e1e8a960eab53af18cce8" [build] template = "custom" script = """ #TODO: Mono style included in Sans directory for style in Sans Serif do DEST="${COOKBOOK_STAGE}/usr/share/fonts/${style}/DejaVu" mkdir -pv "${DEST}" cp -v "${COOKBOOK_SOURCE}/ttf/DejaVu${style}"*".ttf" "${DEST}" done """ ================================================ FILE: recipes/fonts/freefont/recipe.toml ================================================ [source] tar="https://ftp.gnu.org/gnu/freefont/freefont-otf-20120503.tar.gz" blake3="e950397741d84981106cf648fbc143c7827b61d637c86c916232d47aabdfe253" [build] template = "custom" script = """ for style in Mono Sans Serif do DEST="${COOKBOOK_STAGE}/usr/share/fonts/${style}/FreeFont" mkdir -pv "${DEST}" cp -v "${COOKBOOK_SOURCE}/Free${style}"*".otf" "${DEST}" done """ ================================================ FILE: recipes/fonts/ibm-plex/recipe.toml ================================================ [source] tar="https://github.com/IBM/plex/archive/refs/tags/v6.3.0.tar.gz" blake3="6c67f5bf8069762eea1e31f5cca5b4e6f57ea1151b34b338046c7976072ccdef" [build] template = "custom" script = """ for style in Mono Sans Serif do DEST="${COOKBOOK_STAGE}/usr/share/fonts/${style}/IBM-Plex" mkdir -pv "${DEST}" cp -v "${COOKBOOK_SOURCE}/IBM-Plex-${style}/fonts/complete/ttf/"*".ttf" "${DEST}" done """ ================================================ FILE: recipes/fonts/intel-one-mono/recipe.toml ================================================ [source] tar="https://github.com/intel/intel-one-mono/archive/refs/tags/V1.3.0.tar.gz" blake3="9caff71b0a9fe8627253c55889964612ea4ae144584a283cd2fe88b7a14a4140" [build] template = "custom" script = """ DEST="${COOKBOOK_STAGE}/usr/share/fonts/Mono/Intel-One" mkdir -pv "${DEST}" cp -v "${COOKBOOK_SOURCE}/fonts/ttf/"*".ttf" "${DEST}" """ ================================================ FILE: recipes/fonts/noto-color-emoji/recipe.toml ================================================ [source] git = "https://github.com/googlefonts/noto-emoji" rev = "e8073ab740292f8d5f19b5de144087ac58044d06" [build] template = "custom" script = """ DEST="${COOKBOOK_STAGE}/usr/share/fonts/Emoji/Noto" mkdir -pv "${DEST}" cp -v "${COOKBOOK_SOURCE}/fonts/NotoColorEmoji.ttf" "${DEST}" """ ================================================ FILE: recipes/fonts/ttf-hack/recipe.toml ================================================ [source] tar = "https://github.com/source-foundry/Hack/releases/download/v3.003/Hack-v3.003-ttf.tar.xz" blake3 = "acd40f61f6f512b0808d4bf530ab4aeb5a8ec3aa1f65bf5a1d08964d1bc3d044" [build] template = "custom" script = """ for file in "${COOKBOOK_SOURCE}"/*.ttf; do install -D -m 644 "$file" "${COOKBOOK_STAGE}/usr/share/fonts/Mono/Hack/$(basename "$file")" done """ ================================================ FILE: recipes/games/classicube/manifest ================================================ name=ClassiCube category=Games binary=/usr/games/classicube/ClassiCube icon=/ui/icons/apps/classicube.png ================================================ FILE: recipes/games/classicube/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/ClassiCube.git" [build] template = "custom" dependencies = [ "liborbital", "mesa", "sdl2", "zlib", ] script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" -C src redox mkdir -pv "${COOKBOOK_STAGE}/usr/games/classicube" cp -v "src/ClassiCube" "${COOKBOOK_STAGE}/usr/games/classicube" mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/classicube" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/apps" cp -v "${COOKBOOK_SOURCE}/misc/CCicon.png" "${COOKBOOK_STAGE}/usr/share/icons/apps/classicube.png" """ ================================================ FILE: recipes/games/devilutionx/recipe.toml ================================================ [source] tar = "https://github.com/diasurgical/devilutionX/archive/refs/tags/1.5.4.tar.gz" blake3 = "d4a61ff3a7c69d86a29158918aad48ab9c4866c6a22a3e8da5feadbb7d23b3ca" [build] template = "custom" dependencies = [ "bzip2", "libiconv", "liborbital", "sdl1", "zlib", ] script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=ON -DCMAKE_CXX_COMPILER="${TARGET}-g++" -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_VERBOSE_MAKEFILE=ON -DDEVILUTIONX_SYSTEM_BZIP2=ON -DDEVILUTIONX_SYSTEM_ZLIB=ON -DNONET=ON -DSDL_LIBRARY="-lSDL -lorbital" -DUSE_SDL1=ON "${COOKBOOK_SOURCE}" ) cookbook_configure mkdir -v "${COOKBOOK_STAGE}/bin" cp -v devilutionx "${COOKBOOK_STAGE}/bin" """ ================================================ FILE: recipes/games/eduke32/manifest ================================================ name=EDuke32 category=Games binary=/usr/games/eduke32 icon=/ui/icons/apps/eduke32.png ================================================ FILE: recipes/games/eduke32/recipe.toml ================================================ [source] tar = "https://dukeworld.com/eduke32/synthesis/20181010-7067/eduke32_src_20181010-7067.tar.xz" blake3 = "b0b759fe9ca51849f42669e4832ae1ae1f9ad7938529769108f7cf6a6a176558" patches = ["redox.patch"] [build] dependencies = [ "sdl1", "sdl1-mixer", "liborbital", "libiconv", "libogg", "libvorbis", ] template = "custom" script = """ DYNAMIC_INIT # Copy source to build directory rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL" export SDLCONFIG="${COOKBOOK_SYSROOT}/bin/sdl-config --prefix=${COOKBOOK_SYSROOT}" PLATFORM=REDOX "${COOKBOOK_MAKE}" -j"$COOKBOOK_MAKE_JOBS" mkdir -pv "${COOKBOOK_STAGE}/usr/games" cp -v ./eduke32 "${COOKBOOK_STAGE}/usr/games/eduke32" cp -v ./mapster32 "${COOKBOOK_STAGE}/usr/games/mapster32" mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/eduke32" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/apps" cp -v "${COOKBOOK_RECIPE}/icon.png" "${COOKBOOK_STAGE}/usr/share/icons/apps/eduke32.png" """ ================================================ FILE: recipes/games/eduke32/redox.patch ================================================ diff -rupwN source/Common.mak source-new/Common.mak --- source/Common.mak 2018-07-14 15:36:44.000000000 -0600 +++ source-new/Common.mak 2023-01-20 10:38:24.948044222 -0700 @@ -93,7 +93,7 @@ endif ##### Makefile meta-settings -PRETTY_OUTPUT := 1 +PRETTY_OUTPUT := 0 NULLSTREAM := /dev/null @@ -172,6 +172,10 @@ ifeq ($(PLATFORM),WII) CCFULLPATH = $(DEVKITPPC)/bin/$(CC) endif +ifeq ($(PLATFORM),REDOX) + CROSS := $(TARGET)- +endif + CC := $(CROSS)gcc$(CROSS_SUFFIX) CXX := $(CROSS)g++$(CROSS_SUFFIX) @@ -383,6 +387,16 @@ else ifeq ($(PLATFORM),$(filter $(PLATFO override NOASM := 1 else ifeq ($(PLATFORM),$(filter $(PLATFORM),BEOS SKYOS)) override NOASM := 1 +else ifeq ($(PLATFORM),REDOX) + override HAVE_FLAC := 0 + override HAVE_GTK2 := 0 + override HAVE_XMP := 0 + override MIXERTYPE := SDL + override NETCODE := 0 + override NOASM := 1 + override USE_OPENGL := 0 + OPTOPT := -mtune=generic + SDL_TARGET := 1 endif ifneq (i386,$(strip $(IMPLICIT_ARCH))) @@ -868,7 +882,7 @@ ifeq ($(RENDERTYPE),SDL) SDLCONFIG := sdl2-config SDLNAME := SDL2 else ifeq ($(SDL_TARGET),1) - SDLCONFIG := sdl-config + #SDLCONFIG := sdl-config SDLNAME := SDL ifeq (0,$(RELEASE)) COMPILERFLAGS += -DNOSDLPARACHUTE @@ -957,9 +971,11 @@ else ifeq ($(PLATFORM),WII) LIBS += -laesnd_tueidj -lfat -lwiiuse -lbte -lwiikeyboard -logc else ifeq ($(SUBPLATFORM),LINUX) LIBS += -lrt +else ifeq ($(PLATFORM),REDOX) + LIBS += -lorbital -lvorbisfile -lvorbis -logg endif -ifeq (,$(filter $(PLATFORM),WINDOWS WII)) +ifeq (,$(filter $(PLATFORM),WINDOWS WII REDOX)) ifneq ($(PLATFORM),BSD) LIBS += -ldl endif Binary files source/.Common.mak.swp and source-new/.Common.mak.swp differ diff -rupwN source/source/build/include/compat.h source-new/source/build/include/compat.h --- source/source/build/include/compat.h 2018-10-06 23:21:24.000000000 -0600 +++ source-new/source/build/include/compat.h 2023-01-20 10:31:10.843745693 -0700 @@ -7,6 +7,9 @@ #pragma once +# define B_LITTLE_ENDIAN 1 +# define B_BIG_ENDIAN 0 + #ifdef _WIN32 # include "windows_inc.h" #endif @@ -400,6 +403,7 @@ defined __x86_64__ || defined __amd64__ #include #include #include +#include #include #include @@ -542,8 +546,8 @@ typedef FILE BFILE; # define BS_IWRITE S_IWUSR # define BS_IREAD S_IRUSR #else -# define BS_IWRITE S_IWRITE -# define BS_IREAD S_IREAD +# define BS_IWRITE S_IWUSR +# define BS_IREAD S_IRUSR #endif #if defined(__cplusplus) && defined(_MSC_VER) diff -rupwN source/source/build/src/baselayer.cpp source-new/source/build/src/baselayer.cpp --- source/source/build/src/baselayer.cpp 2018-10-06 23:21:43.000000000 -0600 +++ source-new/source/build/src/baselayer.cpp 2023-01-20 10:31:49.591772332 -0700 @@ -498,7 +498,7 @@ int32_t baselayer_init(void) void maybe_redirect_outputs(void) { -#if !(defined __APPLE__ && defined __BIG_ENDIAN__) +#if 0 char *argp; // pipe standard outputs to files diff -rupwN source/source/build/src/sdlayer.cpp source-new/source/build/src/sdlayer.cpp --- source/source/build/src/sdlayer.cpp 2018-10-06 23:23:44.000000000 -0600 +++ source-new/source/build/src/sdlayer.cpp 2023-01-20 10:30:49.223730830 -0700 @@ -305,7 +305,7 @@ void wm_setapptitle(const char *name) // /* XXX: libexecinfo could be used on systems without gnu libc. */ -#if !defined _WIN32 && defined __GNUC__ && !defined __OpenBSD__ && !(defined __APPLE__ && defined __BIG_ENDIAN__) && !defined GEKKO && !defined EDUKE32_TOUCH_DEVICES && !defined __OPENDINGUX__ +#if 0 # define PRINTSTACKONSEGV 1 # include #endif diff -rupwN source/source/duke3d/src/common.cpp source-new/source/duke3d/src/common.cpp --- source/source/duke3d/src/common.cpp 2018-10-06 23:20:23.000000000 -0600 +++ source-new/source/duke3d/src/common.cpp 2023-01-20 10:30:49.223730830 -0700 @@ -1173,6 +1173,7 @@ int32_t S_OpenAudio(const char *fn, char Bfree(testfn); return origfp; } +#endif void Duke_CommonCleanup(void) { @@ -1181,4 +1182,3 @@ void Duke_CommonCleanup(void) DO_FREE_AND_NULL(g_rtsNamePtr); } -#endif diff -rupwN source/source/duke3d/src/game.cpp source-new/source/duke3d/src/game.cpp --- source/source/duke3d/src/game.cpp 2018-10-06 23:23:48.000000000 -0600 +++ source-new/source/duke3d/src/game.cpp 2023-01-20 10:30:49.223730830 -0700 @@ -6697,7 +6697,7 @@ MAIN_LOOP_RESTART: static char buf[128]; #ifndef GEKKO int32_t flag = 1; - ioctl(0, FIONBIO, &flag); + //ioctl(0, FIONBIO, &flag); #endif if ((nb = read(0, &ch, 1)) > 0 && bufpos < sizeof(buf)) { diff -rupwN source/source/enet/include/enet/unix.h source-new/source/enet/include/enet/unix.h --- source/source/enet/include/enet/unix.h 2014-06-16 17:16:08.000000000 -0600 +++ source-new/source/enet/include/enet/unix.h 2023-01-20 10:30:49.223730830 -0700 @@ -6,6 +6,7 @@ #define __ENET_UNIX_H__ #include +#include #include #include #if defined(GEKKO) ================================================ FILE: recipes/games/freeciv/recipe.toml ================================================ [source] tar = "https://files.freeciv.org/stable/freeciv-3.1.4.tar.xz" blake3 = "212630af5e50fb72662ca62a71cdd57318d0cf309b53e46377dd24c8199923a4" [build] dependencies = [ "curl", "freetype2", "libiconv", "libicu", "liborbital", "libjpeg", "libpng", "openssl1", "mesa", "nghttp2", "sdl2", "sdl2-gfx", "sdl2-image", "sdl2-ttf", "zlib", ] template = "custom" script = """ DYNAMIC_INIT export CURL_LIBS="-lcurl -lnghttp2 -lssl -lcrypto" export CURL_MIME_API_LIBS="${CURL_LIBS}" export ICU_LIBS="-licuuc -licudata -lstdc++" export SDL2_LIBS="\ -lSDL2_gfx \ -lSDL2_image \ -lSDL2_ttf \ -lSDL2 \ -lorbital \ $("${PKG_CONFIG}" --libs osmesa) \ -ljpeg \ -lpng \ -lz \ " COOKBOOK_CONFIGURE_FLAGS+=( --enable-fcdb=no --enable-fcmp=no --enable-ipv6=no --enable-client=sdl2 ac_cv_lib_SDL2_gfx_rotozoomSurface=yes ac_cv_lib_SDL2_image_IMG_Load=yes ac_cv_lib_SDL2_ttf_TTF_OpenFont=yes ) export V=1 cookbook_configure """ ================================================ FILE: recipes/games/freedoom/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/freedoom.git" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/games" "${COOKBOOK_STAGE}/share/games/doom" "${COOKBOOK_STAGE}/usr/share/ui/apps" "${COOKBOOK_STAGE}/usr/share/icons/apps" for file in "${COOKBOOK_SOURCE}/"*.wad do game="$(basename "$file" .wad)" wad="/share/games/doom/$game.wad" cp -v "$file" "${COOKBOOK_STAGE}$wad" bin="/usr/games/$game" echo "#!/bin/ion" > "${COOKBOOK_STAGE}$bin" echo "/usr/games/prboom -geom 800x600 -vidmode 32 -iwad $wad" >> "${COOKBOOK_STAGE}$bin" chmod +x "${COOKBOOK_STAGE}$bin" echo "name=$game" | sed 's/freedoom/FreeDOOM: Phase /' | sed 's/doom1/DOOM (Shareware)/' > "${COOKBOOK_STAGE}/usr/share/ui/apps/$game" echo "category=Games" >> "${COOKBOOK_STAGE}/usr/share/ui/apps/$game" echo "binary=/usr/games/$game" >> "${COOKBOOK_STAGE}/usr/share/ui/apps/$game" echo "icon=/ui/icons/apps/$game.png" >> "${COOKBOOK_STAGE}/usr/share/ui/apps/$game" cp -v "${COOKBOOK_SOURCE}/$game.png" "${COOKBOOK_STAGE}/usr/share/icons/apps/$game.png" done """ [package] dependencies = [ "ion", "prboom", ] ================================================ FILE: recipes/games/game-2048/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/2048-rs.git" #git_upstream = "https://github.com/pierrechevalier83/2048-rs.git" [build] template = "cargo" ================================================ FILE: recipes/games/gigalomania/manifest ================================================ name=Gigalomania category=Games binary=/usr/games/gigalomania/gigalomania icon=/ui/icons/apps/gigalomania.png ================================================ FILE: recipes/games/gigalomania/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/gigalomania.git" branch = "master" [build] template = "custom" dependencies = [ "sdl1-mixer", "sdl1-image", "sdl1", "liborbital", "libogg", "libpng", "libjpeg", "libvorbis", "zlib" ] script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export CPPHOST="${TARGET}-g++" "${COOKBOOK_MAKE}" all -j"${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" VERBOSE=1 DESTDIR="${COOKBOOK_STAGE}/usr" install rm -rf "${COOKBOOK_STAGE}/bundle" mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/gigalomania" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/apps" cp -v "gigalomania64.png" "${COOKBOOK_STAGE}/usr/share/icons/apps/gigalomania.png" """ ================================================ FILE: recipes/games/hematite/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/hematite.git" branch = "redox" upstream = "https://github.com/PistonDevelopers/hematite.git" [build] template = "custom" dependencies = [ "mesa", "zlib" ] script = """ cargo rustc \ --target "$TARGET" \ --release \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ -- \ -L "${COOKBOK_SYSROOT}/lib" \ -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "target/${TARGET}/release/hematite" "${COOKBOOK_STAGE}/bin/hematite" """ ================================================ FILE: recipes/games/neverball/manifest-neverball ================================================ name=Neverball category=Games binary=/usr/games/neverball/neverball icon=/ui/icons/apps/neverball.png ================================================ FILE: recipes/games/neverball/manifest-neverputt ================================================ name=Neverputt category=Games binary=/usr/games/neverball/neverputt icon=/ui/icons/apps/neverputt.png ================================================ FILE: recipes/games/neverball/recipe.toml ================================================ [source] tar = "https://neverball.org/neverball-1.6.0.tar.gz" blake3 = "74f3b68595f475e89fd2ca8b5fc349837ff36fbbe141f321dfc232dbf8fccf51" patches = ["redox.patch"] [build] dependencies = [ "freetype2", "libjpeg", "libvorbis", "sdl2", "sdl2-ttf", ] dev-dependencies = [ "host:neverball-sols" ] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio ENABLE_NLS=0 neverball neverputt # Create install directories mkdir -pv "${COOKBOOK_STAGE}/usr/games/neverball" "${COOKBOOK_STAGE}/usr/share/ui/apps" "${COOKBOOK_STAGE}/usr/share/icons/apps" # Copy assets cp -rv ${COOKBOOK_TOOLCHAIN}/usr/games/neverball/data "${COOKBOOK_STAGE}/usr/games/neverball" # For each game for bin in neverball neverputt do # Install binary "${STRIP}" -v "${bin}" -o "${COOKBOOK_STAGE}/usr/games/neverball/${bin}" # Install manifest cp -v "${COOKBOOK_RECIPE}/manifest-${bin}" "${COOKBOOK_STAGE}/usr/share/ui/apps/${bin}" # Install icon cp -v "dist/${bin}_64.png" "${COOKBOOK_STAGE}/usr/share/icons/apps/${bin}.png" done """ ================================================ FILE: recipes/games/neverball/redox.patch ================================================ diff -ruwN neverball-1.6.0/Makefile source/Makefile --- neverball-1.6.0/Makefile 2014-05-21 07:21:43.000000000 -0600 +++ source/Makefile 2023-09-09 20:03:22.113348963 -0600 @@ -38,11 +38,11 @@ ifeq ($(DEBUG),1) CFLAGS := -g CXXFLAGS := -g - CPPFLAGS := + CPPFLAGS += else CFLAGS := -O2 CXXFLAGS := -O2 - CPPFLAGS := -DNDEBUG + CPPFLAGS += -DNDEBUG endif #------------------------------------------------------------------------------ @@ -64,8 +64,8 @@ # Preprocessor... -SDL_CPPFLAGS := $(shell sdl2-config --cflags) -PNG_CPPFLAGS := $(shell libpng-config --cflags) +SDL_CPPFLAGS := $(shell $(PKG_CONFIG) sdl2 --cflags) +PNG_CPPFLAGS := $(shell $(PKG_CONFIG) libpng --cflags) ALL_CPPFLAGS := $(SDL_CPPFLAGS) $(PNG_CPPFLAGS) -Ishare @@ -124,8 +124,8 @@ #------------------------------------------------------------------------------ # Libraries -SDL_LIBS := $(shell sdl2-config --libs) -PNG_LIBS := $(shell libpng-config --libs) +SDL_LIBS := $(shell $(PKG_CONFIG) sdl2 --libs) +PNG_LIBS := $(shell $(PKG_CONFIG) libpng --libs) ifeq ($(ENABLE_FS),stdio) FS_LIBS := @@ -148,7 +148,7 @@ endif endif -OGL_LIBS := -lGL +OGL_LIBS := -lorbital $(shell $(PKG_CONFIG) osmesa --libs) ifeq ($(PLATFORM),mingw) ifneq ($(ENABLE_NLS),0) @@ -175,8 +175,8 @@ /usr/local/lib)) endif -OGG_LIBS := -lvorbisfile -TTF_LIBS := -lSDL2_ttf +OGG_LIBS := $(shell $(PKG_CONFIG) ogg vorbis vorbisfile --libs) +TTF_LIBS := $(shell $(PKG_CONFIG) SDL2_ttf --libs) -lfreetype ALL_LIBS := $(HMD_LIBS) $(TILT_LIBS) $(INTL_LIBS) $(TTF_LIBS) \ $(OGG_LIBS) $(SDL_LIBS) $(OGL_LIBS) $(BASE_LIBS) @@ -411,11 +411,11 @@ all : $(BALL_TARG) $(PUTT_TARG) $(MAPC_TARG) sols locales desktops -ifeq ($(ENABLE_HMD),libovr) +#ifeq ($(ENABLE_HMD),libovr) LINK := $(CXX) $(ALL_CXXFLAGS) -else -LINK := $(CC) $(ALL_CFLAGS) -endif +#else +#LINK := $(CC) $(ALL_CFLAGS) +#endif $(BALL_TARG) : $(BALL_OBJS) $(LINK) -o $(BALL_TARG) $(BALL_OBJS) $(LDFLAGS) $(ALL_LIBS) diff -ruwN neverball-1.6.0/share/text.h source/share/text.h --- neverball-1.6.0/share/text.h 2014-05-21 07:21:43.000000000 -0600 +++ source/share/text.h 2023-09-09 20:02:10.117248865 -0600 @@ -15,7 +15,7 @@ /*---------------------------------------------------------------------------*/ -char text_input[MAXSTR]; +extern char text_input[MAXSTR]; void text_input_start(void (*cb)(int typing)); void text_input_stop(void); ================================================ FILE: recipes/games/neverball-sols/recipe.toml ================================================ [source] same_as = "../neverball" [build] dependencies = [ "libjpeg", "libogg", ] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" ENABLE_FS=stdio PKG_CONFIG="pkg-config" CC="cc" mapc sols # Copy assets mkdir -p "${COOKBOOK_STAGE}/usr/games/neverball" cp -rv data "${COOKBOOK_STAGE}/usr/games/neverball" """ ================================================ FILE: recipes/games/openjazz/recipe.toml ================================================ [source] tar = "https://github.com/AlisterT/openjazz/archive/refs/tags/20240919.tar.gz" blake3 = "c419066dd7bf50510c5ef0746fc47450ab8f5a17a0010a1bc0ad67d0e63538da" [build] template = "custom" dependencies = [ "liborbital", "libiconv", "sdl1", "zlib", ] script = """ export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include" export DATAPATH="/usr/share/games/openjazz/" COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=ON -DCMAKE_CXX_COMPILER="${TARGET}-g++" -DCMAKE_C_COMPILER="${TARGET}-gcc" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_VERBOSE_MAKEFILE=ON -DLEGACY_SDL=ON -DSDL_LIBRARY="-lSDL -lorbital" -DNETWORK=ON "${COOKBOOK_SOURCE}" ) cookbook_configure ASSETS_DIR="${COOKBOOK_STAGE}${DATAPATH}" INSTALL_DIR="${COOKBOOK_STAGE}/usr/games" ICON_DIR="${COOKBOOK_STAGE}/usr/share/icons/apps" MAN_ROOT="${COOKBOOK_STAGE}/usr/share/man" mkdir -p "${ASSETS_DIR}" "${INSTALL_DIR}" "${ICON_DIR}" "${MAN_ROOT}" cp -v "${COOKBOOK_SOURCE}/res/unix/OpenJazz.png" "${ICON_DIR}" # TODO: Man pages need to be compiled # cp -v "${COOKBOOK_SOURCE}/res/unix/OpenJazz.6" "${MAN_ROOT}/man6" mv OpenJazz "${INSTALL_DIR}" """ ================================================ FILE: recipes/games/openjk/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/OpenJK" upstream = "https://github.com/JACoders/OpenJK.git" [build] template = "custom" dependencies = [ "libjpeg", "liborbital", "libpng", "mesa", "sdl2", "zlib", ] script = """ DYNAMIC_INIT export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" cat > redox.cmake <pid) { case 0: { close(0); +#if defined(__redox__) + int d = open("null:", O_RDONLY); +#else int d = open("/dev/null", O_RDONLY); +#endif if (d != -1 && dup2(d, 1) != -1 && dup2(d, 2) != -1) { execvp(this->params[0], this->params); } diff -ruw source/src/os/unix/unix.cpp source-new/src/os/unix/unix.cpp --- source/src/os/unix/unix.cpp 2019-06-19 08:34:01.294040885 -0600 +++ source-new/src/os/unix/unix.cpp 2019-06-27 16:39:06.400266392 -0600 @@ -69,12 +69,12 @@ bool FiosIsRoot(const char *path) { -#if !defined(__MORPHOS__) && !defined(__AMIGAOS__) +#if !defined(__redox__) return path[1] == '\0'; #else - /* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */ + /* On Redox paths look like: "scheme:/directory/subdirectory" */ const char *s = strchr(path, ':'); - return s != NULL && s[1] == '\0'; + return (s != NULL) && (strlen(s) == 2) && (s[1] == '/') && (s[2] == '\0'); #endif } @@ -106,10 +106,10 @@ { char filename[MAX_PATH]; int res; -#if defined(__MORPHOS__) || defined(__AMIGAOS__) - /* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */ +#if defined(__redox__) + /* On Redox paths look like: "scheme:/directory/subdirectory" */ if (FiosIsRoot(path)) { - res = seprintf(filename, lastof(filename), "%s:%s", path, ent->d_name); + res = seprintf(filename, lastof(filename), "%s%s", path, ent->d_name); } else // XXX - only next line! #else assert(path[strlen(path) - 1] == PATHSEPCHAR); @@ -370,7 +370,7 @@ if (child_pid != 0) return; const char *args[3]; - args[0] = "xdg-open"; + args[0] = "netsurf-fb"; args[1] = url; args[2] = NULL; execvp(args[0], const_cast(args)); diff -ruw source/src/rev.cpp.in source-new/src/rev.cpp.in --- source/src/rev.cpp.in 2019-06-19 08:34:01.298040904 -0600 +++ source-new/src/rev.cpp.in 2019-06-27 16:39:06.400266392 -0600 @@ -57,7 +57,7 @@ * (compiling from sources without any version control software) * and 2 is for modified revision. */ -const byte _openttd_revision_modified = !!MODIFIED!!; +const byte _openttd_revision_modified = 2; /** * The NewGRF revision of OTTD: diff -ruw source/src/stdafx.h source-new/src/stdafx.h --- source/src/stdafx.h 2019-06-19 08:34:01.334041067 -0600 +++ source-new/src/stdafx.h 2019-06-27 16:39:06.400266392 -0600 @@ -12,6 +12,9 @@ #ifndef STDAFX_H #define STDAFX_H +#include +#include + #if defined(__APPLE__) #include "os/macosx/osx_stdafx.h" #endif /* __APPLE__ */ diff -ruw source/src/string.cpp source-new/src/string.cpp --- source/src/string.cpp 2019-06-19 08:34:01.334041067 -0600 +++ source-new/src/string.cpp 2019-06-27 16:39:06.400266392 -0600 @@ -528,7 +528,7 @@ return length; } -#ifdef DEFINE_STRCASESTR +#if 0 char *strcasestr(const char *haystack, const char *needle) { size_t hay_len = strlen(haystack); ================================================ FILE: recipes/games/openttd-opengfx/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/openttd-opengfx.git" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/share/games/openttd/baseset/opengfx" cp -Rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/share/games/openttd/baseset/opengfx" """ ================================================ FILE: recipes/games/openttd-openmsx/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/openttd-openmsx.git" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/share/games/openttd/baseset/openmsx" cp -Rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/share/games/openttd/baseset/openmsx" """ ================================================ FILE: recipes/games/openttd-opensfx/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/openttd-opensfx.git" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/share/games/openttd/baseset/opensfx" cp -Rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/share/games/openttd/baseset/opensfx" """ ================================================ FILE: recipes/games/opentyrian/manifest ================================================ name=OpenTyrian category=Games binary=/usr/games/opentyrian icon=/ui/icons/apps/opentyrian.png ================================================ FILE: recipes/games/opentyrian/recipe.toml ================================================ # Version date: 02-August-2024 # # Notes: # As Tyrian is an ancient, sprite based game, the code isn't updated # super frequently. So instead of just pinning the version to the last # official release in 2022, I'm pulling from main because it's unlikely # anything will break. The last two commits were small fixes, one in 2023 # and one in 2024. [source] git = "https://github.com/opentyrian/opentyrian" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "liborbital", "mesa", "sdl2", "zlib", # "sdl2-net" ] script = """ DYNAMIC_INIT # Build system is only a standalone Makefile COOKBOOK_CONFIGURE="true" COOKBOOK_CONFIGURE_FLAGS="" # See Makefile for variables to override export PKG_CONFIG="${TARGET}-pkg-config" ASSETSDIR="${COOKBOOK_STAGE}/usr/share/games/tyrian" export WITH_NETWORK=false export REDOX_OVERRIDE=true export prefix="/usr" export bindir="${prefix}/games" export icondir="/usr/share/icons/apps" export gamesdir="${prefix}/share/games" if [ "${COOKBOOK_DYNAMIC}" == "1" ]; then LDFLAGS+=" -lstdc++" fi # Prepare the sources and download Tyrian (freeware) rsync -av --delete "${COOKBOOK_SOURCE}/" "${COOKBOOK_RECIPE}/tyrian21.zip.sha" ./ mkdir -p "${ASSETSDIR}" curl -OL https://camanis.net/tyrian/tyrian21.zip sha256sum -c tyrian21.zip.sha unzip -jd "${ASSETSDIR}" tyrian21.zip cookbook_configure """ ================================================ FILE: recipes/games/opentyrian/redox.patch ================================================ Binary files source/.git/index and source-new/.git/index differ diff '--color=auto' -rupwN source/Makefile source-new/Makefile --- source/Makefile 2024-10-21 02:46:06.720225834 -0400 +++ source-new/Makefile 2024-10-25 01:03:37.283351544 -0400 @@ -5,10 +5,11 @@ ifneq ($(filter Msys Cygwin, $(shell una TYRIAN_DIR = C:\\TYRIAN else PLATFORM := UNIX - TYRIAN_DIR = $(gamesdir)/tyrian + TYRIAN_DIR ?= $(gamesdir)/tyrian endif -WITH_NETWORK := true +WITH_NETWORK ?= true +REDOX_OVERRIDE ?= false ################################################################################ @@ -114,11 +115,15 @@ installdirs : mkdir -p $(DESTDIR)$(docdir) mkdir -p $(DESTDIR)$(man6dir) mkdir -p $(DESTDIR)$(desktopdir) - mkdir -p $(DESTDIR)$(icondir)/hicolor/22x22/apps - mkdir -p $(DESTDIR)$(icondir)/hicolor/24x24/apps - mkdir -p $(DESTDIR)$(icondir)/hicolor/32x32/apps - mkdir -p $(DESTDIR)$(icondir)/hicolor/48x48/apps - mkdir -p $(DESTDIR)$(icondir)/hicolor/128x128/apps + if [ "$(REDOX_OVERRIDE)" = "true" ]; then\ + mkdir -p $(DESTDIR)$(icondir);\ + else\ + mkdir -p $(DESTDIR)$(icondir)/hicolor/22x22/apps;\ + mkdir -p $(DESTDIR)$(icondir)/hicolor/24x24/apps;\ + mkdir -p $(DESTDIR)$(icondir)/hicolor/32x32/apps;\ + mkdir -p $(DESTDIR)$(icondir)/hicolor/48x48/apps;\ + mkdir -p $(DESTDIR)$(icondir)/hicolor/128x128/apps;\ + fi;\ .PHONY : install install : $(TARGET) installdirs @@ -126,11 +131,15 @@ install : $(TARGET) installdirs $(INSTALL_DATA) NEWS README $(DESTDIR)$(docdir)/ $(INSTALL_DATA) linux/man/opentyrian.6 $(DESTDIR)$(man6dir)/opentyrian$(man6ext) $(INSTALL_DATA) linux/opentyrian.desktop $(DESTDIR)$(desktopdir)/ - $(INSTALL_DATA) linux/icons/tyrian-22.png $(DESTDIR)$(icondir)/hicolor/22x22/apps/opentyrian.png - $(INSTALL_DATA) linux/icons/tyrian-24.png $(DESTDIR)$(icondir)/hicolor/24x24/apps/opentyrian.png - $(INSTALL_DATA) linux/icons/tyrian-32.png $(DESTDIR)$(icondir)/hicolor/32x32/apps/opentyrian.png - $(INSTALL_DATA) linux/icons/tyrian-48.png $(DESTDIR)$(icondir)/hicolor/48x48/apps/opentyrian.png - $(INSTALL_DATA) linux/icons/tyrian-128.png $(DESTDIR)$(icondir)/hicolor/128x128/apps/opentyrian.png + if [ "$(REDOX_OVERRIDE)" = "true" ]; then\ + $(INSTALL_DATA) linux/icons/tyrian-32.png $(DESTDIR)$(icondir)/opentyrian.png;\ + else\ + $(INSTALL_DATA) linux/icons/tyrian-22.png $(DESTDIR)$(icondir)/hicolor/22x22/apps/opentyrian.png;\ + $(INSTALL_DATA) linux/icons/tyrian-24.png $(DESTDIR)$(icondir)/hicolor/24x24/apps/opentyrian.png;\ + $(INSTALL_DATA) linux/icons/tyrian-32.png $(DESTDIR)$(icondir)/hicolor/32x32/apps/opentyrian.png;\ + $(INSTALL_DATA) linux/icons/tyrian-48.png $(DESTDIR)$(icondir)/hicolor/48x48/apps/opentyrian.png;\ + $(INSTALL_DATA) linux/icons/tyrian-128.png $(DESTDIR)$(icondir)/hicolor/128x128/apps/opentyrian.png;\ + fi;\ .PHONY : uninstall uninstall : ================================================ FILE: recipes/games/opentyrian/tyrian21.zip.sha ================================================ 7790d09a2a3addcd33c66ef063d5900eb81cc9c342f4807eb8356364dd1d9277 tyrian21.zip ================================================ FILE: recipes/games/prboom/01_redox.patch ================================================ diff -burpN source-original/src/m_misc.c source/src/m_misc.c --- source-original/src/m_misc.c 2008-11-09 10:13:04.000000000 -0700 +++ source/src/m_misc.c 2024-09-07 10:09:06.890301682 -0600 @@ -954,6 +954,12 @@ void M_LoadDefaults (void) // read the file in, overriding any set defaults f = fopen (defaultfile, "r"); +#if defined(__redox__) + if (f) { + printf("disabling load of config file on redox\n"); + f = NULL; + } +#endif if (f) { while (!feof(f)) ================================================ FILE: recipes/games/prboom/recipe.toml ================================================ [source] tar = "https://downloads.sourceforge.net/project/prboom/prboom%20stable/2.5.0/prboom-2.5.0.tar.gz" blake3 = "24c1b9b5aa15fd73e59162055f2c6d8faa82759b76ddfca9828cd2a5c8dc6b2a" script = """ autotools_recursive_regenerate wget -O autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" """ [build] template = "custom" dependencies = [ "sdl1", "liborbital", "sdl1-mixer", "libogg", "libvorbis" ] script = """ DYNAMIC_INIT export MIXER_LIBS="-lSDL_mixer -lvorbisfile -lvorbis -logg" COOKBOOK_CONFIGURE_FLAGS+=( --disable-cpu-opt --disable-i386-asm --disable-gl --disable-sdltest --without-net --with-sdl-prefix="${COOKBOOK_SYSROOT}" ac_cv_lib_SDL_mixer_Mix_OpenAudio=yes ac_cv_type_gid_t=yes ac_cv_type_uid_t=yes ) cookbook_configure """ ================================================ FILE: recipes/games/quakespasm/manifest ================================================ name=QuakeSpasm category=Games binary=/usr/games/quakespasm icon=/ui/icons/apps/quakespasm.png ================================================ FILE: recipes/games/quakespasm/recipe.toml ================================================ # TODO: Promote # Version: 0.96.3 # Version date: 31-July-2024 [source] git = "https://github.com/sezero/quakespasm" rev = "cc32abe09ed417ce3be10af300d2dc2f686349ba" [build] template = "custom" dependencies = [ "libiconv", "libogg", "liborbital", "libvorbis", "mesa", # "sdl1", "sdl2", "zlib", ] script = """ DYNAMIC_INIT # Skip configuring because QuakeSpasm uses a custom build system COOKBOOK_CONFIGURE="true" COOKBOOK_CONFIGURE_FLAGS="" # Ensure the build system is aware of Redox # The build system uses sdl-config for Unix, but SDL recommends using pkg-config export HOST_OS="redox" export PKG_CONFIG="${TARGET}-pkg-config" # Config options for the Makefile. Set as necessary (see Makefile). # MP3 is disabled because libmad doesn't compile at the moment # Other options weren't tested, but SDL and SDL2 both compile fine export USE_SDL2=1 export USE_CODEC_MP3=0 export DO_USERDIRS=1 if [ "${COOKBOOK_DYNAMIC}" == "1" ]; then LDFLAGS+=" -lstdc++" fi # Source is in Quake/ and icons are in Misc/ rsync -av --delete "${COOKBOOK_SOURCE}/Quake/" "${COOKBOOK_SOURCE}/Misc" ./ # According to frantic grepping, the Redox build system doesn't apply patches to git git apply "${COOKBOOK_RECIPE}/redox.patch" cookbook_configure """ ================================================ FILE: recipes/games/quakespasm/redox.patch ================================================ diff '--color=auto' -rupwN source/Makefile source-new/Makefile --- source/Makefile 2024-10-15 21:21:14.824589882 -0400 +++ source-new/Makefile 2024-10-16 00:42:27.651948743 -0400 @@ -4,28 +4,34 @@ # "make SDL_CONFIG=/path/to/sdl-config" for unusual SDL installations. # "make DO_USERDIRS=1" to enable user directories support +# Base install directory +DESTDIR ?= "/" +INSTALLDIR = "${DESTDIR}/usr/games/" +DATADIR = "${DESTDIR}/usr/share/games/quake1/id1/" +ICODIR = "${DESTDIR}/usr/share/icons/apps/" + # Enable/Disable user directories support -DO_USERDIRS=0 +DO_USERDIRS ?= 0 ### Enable/Disable SDL2 -USE_SDL2=0 +USE_SDL2 ?= 0 ### Enable/Disable codecs for streaming music support -USE_CODEC_WAVE=1 -USE_CODEC_FLAC=0 -USE_CODEC_MP3=1 -USE_CODEC_VORBIS=1 -USE_CODEC_OPUS=0 +USE_CODEC_WAVE ?= 1 +USE_CODEC_FLAC ?= 0 +USE_CODEC_MP3 ?= 1 +USE_CODEC_VORBIS ?= 1 +USE_CODEC_OPUS ?= 0 # either xmp or mikmod (or modplug) -USE_CODEC_MIKMOD=0 -USE_CODEC_XMP=0 -USE_CODEC_MODPLUG=0 -USE_CODEC_UMX=0 +USE_CODEC_MIKMOD ?= 0 +USE_CODEC_XMP ?= 0 +USE_CODEC_MODPLUG ?= 0 +USE_CODEC_UMX ?= 0 # which library to use for mp3 decoding: mad or mpg123 -MP3LIB=mad +MP3LIB ?= mad # which library to use for ogg decoding: vorbis or tremor -VORBISLIB=vorbis +VORBISLIB ?= vorbis # --------------------------- # Helper functions @@ -35,7 +41,7 @@ check_gcc = $(shell if echo | $(CC) $(1) # --------------------------- -HOST_OS = $(shell uname|sed -e s/_.*//|tr '[:upper:]' '[:lower:]') +HOST_OS ?= $(shell uname|sed -e s/_.*//|tr '[:upper:]' '[:lower:]') DEBUG ?= 0 @@ -49,7 +55,7 @@ LINKER = $(CC) STRIP ?= strip PKG_CONFIG ?= pkg-config -CPUFLAGS= +CPUFLAGS ?= LDFLAGS?= DFLAGS ?= CFLAGS ?= -Wall -Wno-trigraphs -MMD @@ -81,11 +87,19 @@ endif ifeq ($(USE_SDL2),1) SDL_CONFIG ?= sdl2-config +SDL_VERSION = sdl2 else SDL_CONFIG ?= sdl-config +SDL_VERSION = sdl endif + +ifeq ($(HOST_OS),redox) +SDL_CFLAGS = $(shell $(PKG_CONFIG) --cflags $(SDL_VERSION)) +SDL_LIBS = $(shell $(PKG_CONFIG) --libs $(SDL_VERSION)) +else SDL_CFLAGS = $(shell $(SDL_CONFIG) --cflags) SDL_LIBS = $(shell $(SDL_CONFIG) --libs) +endif NET_LIBS = ifeq ($(HOST_OS),sunos) @@ -164,6 +178,8 @@ endif ifeq ($(HOST_OS),haiku) COMMON_LIBS= -lGL +else ifeq ($(HOST_OS),redox) +COMMON_LIBS= -lorbital $(shell $(PKG_CONFIG) --libs osmesa zlib) else COMMON_LIBS= -lGL -lm endif @@ -290,7 +306,10 @@ install: quakespasm cp quakespasm.pak $(QS_APP_DIR) else install: quakespasm - cp quakespasm /usr/local/games/quake + mkdir -p "${INSTALLDIR}" "${DATADIR}" "${ICODIR}" + cp quakespasm "${INSTALLDIR}/quakespasm" + # xxx Probably requires resizing + cp Misc/QuakeSpasm_512.png "${ICODIR}/quakespasm.png" endif sinclude $(OBJS:.o=.d) ================================================ FILE: recipes/games/redox-games/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/games.git" [build] template = "cargo" ================================================ FILE: recipes/games/sm64ex/.gitignore ================================================ /baserom.us.z64 ================================================ FILE: recipes/games/sm64ex/manifest ================================================ name=Super Mario 64 EX category=Games binary=/bin/sm64 icon=/ui/icons/apps/sm64ex.png ================================================ FILE: recipes/games/sm64ex/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/sm64ex.git" [build] template = "custom" dependencies = [ "liborbital", "mesa", "sdl2", "zlib", ] script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ # You must find your own ROM cp -v "${COOKBOOK_RECIPE}/baserom.us.z64" baserom.us.z64 #TODO: do this in cook instead unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP export REDOX_CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include" export REDOX_LDFLAGS="${LDFLAGS}" unset CFLAGS LDFLAGS export CROSS="${TARGET}-" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" mkdir -p "${COOKBOOK_STAGE}/bin" cp -v build/us_pc/sm64.us.f3dex2e "${COOKBOOK_STAGE}/bin/sm64" mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/sm64ex" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/apps" wget -O "${COOKBOOK_STAGE}/usr/share/icons/apps/sm64ex.png" https://evilgames.eu/texture-packs/thumb/sm64-reloaded.png """ ================================================ FILE: recipes/games/sopwith/recipe.toml ================================================ [source] tar = "https://github.com/fragglet/sdl-sopwith/releases/download/sdl-sopwith-1.8.4/sopwith-1.8.4.tar.gz" blake3 = "44e1404a9c4bea257d7778d2a4b1512231603a74b0a7b18eac5d18f36730ed3e" [build] template = "custom" dependencies = [ "sdl1", "liborbital", "libiconv", ] script = """ export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL" export LIBS="-lSDL -lorbital" # TODO: Uses sdl-config instead of pkg-config # For some reason, cook_configure breaks spectacularly on this # We will just copy instead rsync -av --delete "${COOKBOOK_SOURCE}/" ./ wget -O autotools/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" ./configure \\ --build="$(gcc -dumpmachine)" \\ --host="${TARGET}" \\ --prefix="" \\ --with-sdl-prefix="${COOKBOOK_SYSROOT}" make -j"$(nproc)" make DESTDIR="${COOKBOOK_STAGE}" install """ ================================================ FILE: recipes/games/spacecadetpinball/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/xTibor/SpaceCadetPinball.git" upstream = "https://github.com/k4zmu2a/SpaceCadetPinball.git" branch = "redox" [build] template = "custom" dependencies = [ "libogg", "liborbital", "libvorbis", "mesa", "sdl2", "sdl2-mixer", "zlib", ] script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS=( -DSDL2_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include/SDL2" -DSDL2_LIBRARY="-lSDL2_mixer -lvorbisfile -lvorbis -logg -lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa)" -DSDL2_MIXER_INCLUDE_DIR="${COOKBOOK_SYSROOT}/include/SDL2" -DSDL2_MIXER_LIBRARY="SDL2_mixer" ) cookbook_cmake """ ================================================ FILE: recipes/graphics/procedural-wallpapers-rs/recipe.toml ================================================ [source] git = "https://github.com/lukas-kirschner/procedural-wallpapers-rs.git" [build] template = "cargo" cargopath = "procedural_wallpapers" ================================================ FILE: recipes/groups/auto-test/auto-test.ion ================================================ #!/usr/bin/env ion export RUST_BACKTRACE=full cd /home/user/acid cargo test bash /root/relibc-tests/run.sh os-test-runner ================================================ FILE: recipes/groups/auto-test/recipe.toml ================================================ # Meta-package for automated testing of essential test suites # Smaller test suites are executed first to catch possible bugs or regressions faster [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -rv "${COOKBOOK_RECIPE}/auto-test.ion" "${COOKBOOK_STAGE}/usr/bin/auto-test" chmod a+x "${COOKBOOK_STAGE}/usr/bin/auto-test" """ [package] dependencies = [ "acid", "coreutils", "ion", "os-test-bins", "relibc-tests-bins", ] ================================================ FILE: recipes/groups/demo/recipe.toml ================================================ # demo variant meta-package [package] dependencies = [ "desktop", "periodictable", "intel-one-mono", "gnu-grep", "htop", "ripgrep", "terminfo", "vim", "dosbox", "freedoom", "neverball", "prboom", "redox-games", "sopwith", "orbclient", "pixelcannon", "rodioplay", "freepats", ] ================================================ FILE: recipes/groups/desktop/recipe.toml ================================================ # desktop variant meta-package [package] dependencies = [ "server", "cosmic-edit", "cosmic-files", "cosmic-icons", "cosmic-term", "dejavu", "freefont", "hicolor-icon-theme", "installer-gui", "netsurf", "orbdata", "orbital", "orbutils", "patchelf", "pop-icon-theme", "shared-mime-info", ] ================================================ FILE: recipes/groups/dev-essential/recipe.toml ================================================ [package] dependencies = [ "autoconf", "automake", "gcc13", "gcc13.cxx", "gnu-binutils", "gnu-make", "gnu-grep", "perl5", "python312", "ripgrep", "lua54", "nasm", "patch", "pkg-config", "rust", "sed", ] ================================================ FILE: recipes/groups/dev-redox/recipe.toml ================================================ [package] dependencies = [ "dev-essential", "redox-tests", "exampled", "gdbserver", "libgmp", "libiconv", "liborbital", "libsodium", "libxml2", "ncursesw", "nghttp2", "openssl3", "orbclient", "pcre", "terminfo", "xz", "zlib", ] ================================================ FILE: recipes/groups/llvm21-common/recipe.toml ================================================ [package] dependencies = [ "clang21", "llvm21", "llvm21.runtime", "lld21", ] ================================================ FILE: recipes/groups/mate-common/recipe.toml ================================================ [package] dependencies = [ "caja", "marco", "mate-control-center", "mate-icon-theme", "mate-panel", "mate-session-manager", "mate-settings-daemon", "mate-terminal", ] ================================================ FILE: recipes/groups/redox-tests/recipe.toml ================================================ [package] dependencies = [ "acid", "acid-bins", "auto-test", "hello-redox", "os-test", "os-test-bins", "openposixtestsuite", "redox-posix-tests", "relibc-tests", "relibc-tests-bins", "vttest", ] ================================================ FILE: recipes/groups/server/recipe.toml ================================================ # server variant meta-package [package] dependencies = [ "bash", "bottom", "ca-certificates", #"contain", "coreutils", "curl", "diffutils", "extrautils", "findutils", "git", "installer", "ion", "kibi", ] ================================================ FILE: recipes/groups/sys/recipe.toml ================================================ [package] dependencies = [ "bootloader", "kernel", "relibc", "base", "coreutils", "base-initfs", ] ================================================ FILE: recipes/groups/sys-gui/recipe.toml ================================================ [package] dependencies = [ "orbital", "orbdata", "orbutils", ] ================================================ FILE: recipes/groups/x11-full/recipe.toml ================================================ [package] dependencies = [ "x11-minimal", "twm", "xev", "xeyes", "xkbutils", "xterm", ] ================================================ FILE: recipes/groups/x11-minimal/recipe.toml ================================================ [package] dependencies = [ "xinit", "xkbcomp", "xkeyboard-config", "xserver-xorg", "xserver-xorg-video-orbital", ] ================================================ FILE: recipes/gui/installer-gui/manifest ================================================ name=Redox Installer category=System binary=/usr/bin/redox_installer_gui icon=/usr/share/icons/Pop/48x48/apps/system-os-installer.svg author=Jeremy Soller description=GUI Installer for Redox ================================================ FILE: recipes/gui/installer-gui/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/installer-gui.git" [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/redox-installer-gui" """ ================================================ FILE: recipes/gui/orbdata/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/orbdata.git" [build] template = "custom" script = """ cp -rv "${COOKBOOK_SOURCE}/"* "${COOKBOOK_STAGE}/" """ ================================================ FILE: recipes/gui/orbital/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/orbital.git" [build] template = "cargo" [package] dependencies = [ "orbdata" ] ================================================ FILE: recipes/gui/orbterm/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/orbterm.git" [build] template = "custom" script = """ DYNAMIC_INIT mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui" cp -rv "${COOKBOOK_SOURCE}/apps" "${COOKBOOK_STAGE}/usr/share/ui/apps" cookbook_cargo """ [package] dependencies = [ "orbital" ] ================================================ FILE: recipes/gui/orbutils/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/orbutils.git" [build] template = "custom" script = """ DYNAMIC_INIT mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui" cp -rv "${COOKBOOK_SOURCE}/apps" "${COOKBOOK_STAGE}/usr/share/ui/apps" COOKBOOK_CARGO_PATH="orbutils" cookbook_cargo COOKBOOK_CARGO_PATH="launcher" cookbook_cargo """ ================================================ FILE: recipes/gui/orbutils-background/recipe.toml ================================================ [source] same_as = "../orbutils" [build] template = "cargo" cargopath = "orbutils" cargoflags = [ "--bin background" ] [package] dependencies = [ "orbital" ] ================================================ FILE: recipes/icons/cosmic-icons/recipe.toml ================================================ [source] git = "https://github.com/pop-os/cosmic-icons.git" rev = "f93dcdfa1060c2cf3f8cf0b56b0338292edcafa5" shallow_clone = true [build] template = "custom" script = """ cd "${COOKBOOK_SOURCE}" just rootdir="${COOKBOOK_STAGE}" prefix="" install """ ================================================ FILE: recipes/icons/hicolor-icon-theme/recipe.toml ================================================ [source] git = "https://gitlab.freedesktop.org/xdg/default-icon-theme.git" [build] template = "custom" script = """ meson setup --reconfigure -Dprefix=/usr . "${COOKBOOK_SOURCE}" env DESTDIR="${COOKBOOK_STAGE}" meson install """ ================================================ FILE: recipes/icons/pop-icon-theme/recipe.toml ================================================ [source] git = "https://github.com/pop-os/icon-theme.git" shallow_clone = true [build] template = "custom" script = """ meson setup -Dprefix=/ . "${COOKBOOK_SOURCE}" env DESTDIR="${COOKBOOK_STAGE}" meson install """ [[optional-packages]] name = "cursors" files = [ "share/icons/Pop/cursors**", "share/icons/Pop/cursor.theme", ] ================================================ FILE: recipes/libs/atk/recipe.toml ================================================ [source] tar = "https://download.gnome.org/sources/atk/2.38/atk-2.38.0.tar.xz" blake3 = "cbc1b7ba03009ee5cc0e646d8a86117e0d65bf8d105f2e8714fbde0299a8012e" script = """ GNU_CONFIG_GET config.sub """ [build] dependencies = [ "gettext", "glib", #TODO "gobject-introspection", "libffi", "libiconv", "pcre2", ] template = "custom" script = """ DYNAMIC_INIT cookbook_meson -Dintrospection=false """ ================================================ FILE: recipes/libs/cairo/recipe.toml ================================================ [source] tar = "https://www.cairographics.org/releases/cairo-1.18.4.tar.xz" blake3 = "b9fa14e02f85ec4e72396c62236c98502d04dbbdf8daf01ab9557a1c7aa7106e" patches = ["redox.patch"] [build] dependencies = [ "expat", "freetype2", "fontconfig", "gettext", "glib", "libffi", "libiconv", "libpng", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "pcre2", "pixman", "x11proto", "zlib", ] template = "custom" script = """ DYNAMIC_INIT #TODO: fix mutex implementation #TODO: why are math defines missing? CFLAGS="${CFLAGS} -DCAIRO_NO_MUTEX=1 -DM_SQRT2=1.41421356237309504880 -DM_LN2=0.69314718055994530942" cookbook_meson \ -Dxlib-xcb=enabled \ -Dtests=disabled """ ================================================ FILE: recipes/libs/cairo/redox.patch ================================================ diff -ruwN cairo-1.18.4/meson.build source/meson.build --- cairo-1.18.4/meson.build 2025-03-08 05:35:35.000000000 -0700 +++ source/meson.build 2025-05-04 18:07:04.594213814 -0600 @@ -440,13 +440,13 @@ if feature_conf.get('CAIRO_HAS_XCB_SURFACE', 0) == 1 xcbshm_dep = dependency('xcb-shm', required: get_option('xcb')) if xcbshm_dep.found() - feature_conf.set('CAIRO_HAS_XCB_SHM_FUNCTIONS', 1) - deps += [xcbshm_dep] - built_features += [{ - 'name': 'cairo-xcb-shm', - 'description': 'XCB/SHM functions', - 'deps': [xcbshm_dep], - }] + #feature_conf.set('CAIRO_HAS_XCB_SHM_FUNCTIONS', 1) + #deps += [xcbshm_dep] + #built_features += [{ + # 'name': 'cairo-xcb-shm', + # 'description': 'XCB/SHM functions', + # 'deps': [xcbshm_dep], + #}] endif endif diff -ruwN cairo-1.18.4/perf/Makefile.in source/perf/Makefile.in --- cairo-1.18.4/perf/Makefile.in 1969-12-31 17:00:00.000000000 -0700 +++ source/perf/Makefile.in 2025-05-01 12:52:11.400963345 -0600 @@ -0,0 +1,3 @@ +all: + +install: diff -ruwN cairo-1.18.4/src/cairo-ps-surface.c source/src/cairo-ps-surface.c --- cairo-1.18.4/src/cairo-ps-surface.c 2025-03-08 05:35:35.000000000 -0700 +++ source/src/cairo-ps-surface.c 2025-05-04 18:08:43.821264417 -0600 @@ -102,7 +102,7 @@ #define DEBUG_FALLBACK(s) #endif -#ifndef HAVE_CTIME_R +#if !defined(HAVE_CTIME_R) && !defined(__redox__) static char *ctime_r(const time_t *timep, char *buf) { (void)buf; diff -ruwN cairo-1.18.4/test/Makefile.in source/test/Makefile.in --- cairo-1.18.4/test/Makefile.in 1969-12-31 17:00:00.000000000 -0700 +++ source/test/Makefile.in 2025-05-01 12:52:11.400963345 -0600 @@ -0,0 +1,3 @@ +all: + +install: ================================================ FILE: recipes/libs/duktape/recipe.toml ================================================ [source] tar = "https://duktape.org/duktape-2.7.0.tar.xz" blake3 = "b0a17da888847bc9c73624ae3ba7f858ec327a9bbce9d287aee6a2489e518448" [build] template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ sed -i "s/= gcc/= ${TARGET}-gcc/g" Makefile.cmdline "${COOKBOOK_MAKE}" -f Makefile.cmdline -j"$COOKBOOK_MAKE_JOBS" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp ./duk "${COOKBOOK_STAGE}/usr/bin/duk" """ ================================================ FILE: recipes/libs/expat/recipe.toml ================================================ [source] tar = "https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.xz" blake3 = "ea89dd9a5a2e48d5e44fed38554b36a8f2e365a5091a99d08e30bfb1c15dda5e" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_STATIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --without-docbook --without-examples --without-tests --without-xmlwf ) cookbook_configure """ ================================================ FILE: recipes/libs/ffmpeg6/binutils-2.41.patch ================================================ From effadce6c756247ea8bae32dc13bb3e6f464f0eb Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sun, 16 Jul 2023 18:18:02 +0300 Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift instructions within inline assembly Fixes assembling with binutil as >= 2.41 Signed-off-by: James Almer --- libavcodec/x86/mathops.h | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h index 6298f5ed19..ca7e2dffc1 100644 --- a/libavcodec/x86/mathops.h +++ b/libavcodec/x86/mathops.h @@ -35,12 +35,20 @@ static av_always_inline av_const int MULL(int a, int b, unsigned shift) { int rt, dummy; + if (__builtin_constant_p(shift)) __asm__ ( "imull %3 \n\t" "shrdl %4, %%edx, %%eax \n\t" :"=a"(rt), "=d"(dummy) - :"a"(a), "rm"(b), "ci"((uint8_t)shift) + :"a"(a), "rm"(b), "i"(shift & 0x1F) ); + else + __asm__ ( + "imull %3 \n\t" + "shrdl %4, %%edx, %%eax \n\t" + :"=a"(rt), "=d"(dummy) + :"a"(a), "rm"(b), "c"((uint8_t)shift) + ); return rt; } @@ -113,19 +121,31 @@ __asm__ volatile(\ // avoid +32 for shift optimization (gcc should do that ...) #define NEG_SSR32 NEG_SSR32 static inline int32_t NEG_SSR32( int32_t a, int8_t s){ + if (__builtin_constant_p(s)) __asm__ ("sarl %1, %0\n\t" : "+r" (a) - : "ic" ((uint8_t)(-s)) + : "i" (-s & 0x1F) ); + else + __asm__ ("sarl %1, %0\n\t" + : "+r" (a) + : "c" ((uint8_t)(-s)) + ); return a; } #define NEG_USR32 NEG_USR32 static inline uint32_t NEG_USR32(uint32_t a, int8_t s){ + if (__builtin_constant_p(s)) __asm__ ("shrl %1, %0\n\t" : "+r" (a) - : "ic" ((uint8_t)(-s)) + : "i" (-s & 0x1F) ); + else + __asm__ ("shrl %1, %0\n\t" + : "+r" (a) + : "c" ((uint8_t)(-s)) + ); return a; } -- 2.30.2 ================================================ FILE: recipes/libs/ffmpeg6/ffmpeg.patch ================================================ diff -rupN source-original/configure source/configure --- source-original/configure 2018-03-04 11:13:59.000000000 +0100 +++ source/configure 2018-03-04 11:18:10.026033282 +0100 @@ -5141,6 +5141,8 @@ case $target_os in ;; minix) ;; + redox) + ;; none) ;; *) diff -rupN source-original/fftools/ffmpeg.c source/fftools/ffmpeg.c --- source-original/fftools/ffmpeg.c 2018-03-04 11:13:59.000000000 +0100 +++ source/fftools/ffmpeg.c 2018-03-04 11:45:38.326394016 +0100 @@ -91,7 +91,7 @@ #if HAVE_TERMIOS_H #include -#include +//#include #include #include #elif HAVE_KBHIT ================================================ FILE: recipes/libs/ffmpeg6/manifest ================================================ name=ffplay binary=/usr/bin/ffplay accept=*.mp3 accept=*.ogg accept=*.opus accept=*.m4a accept=*.flac accept=*.wav accept=*.mp4 accept=*.mkv accept=*.webm accept=*.3gp accept=*.mov author=FFMPEG Developers description=FFMPEG Media Player ================================================ FILE: recipes/libs/ffmpeg6/recipe.toml ================================================ [source] tar = "https://ffmpeg.org/releases/ffmpeg-6.0.tar.xz" blake3 = "4879074c357102f85932673044c57c144b0c188ae58edec2a115965536ee340f" patches = [ "ffmpeg.patch", "binutils-2.41.patch", ] [build] template = "custom" dependencies = [ "liborbital", "mesa", "sdl2", "zlib", ] script = """ DYNAMIC_INIT export LDFLAGS="$LDFLAGS -lSDL2 -lorbital -lOSMesa -lstdc++" ARCH="${TARGET%%-*}" COOKBOOK_CONFIGURE_FLAGS=( --enable-cross-compile --target-os=redox --arch="${ARCH}" --cross_prefix="${TARGET}-" --prefix=/usr --disable-doc --enable-shared --disable-static --disable-network --enable-sdl2 --enable-zlib --enable-encoder=png --enable-decoder=png ) cookbook_configure mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/ffplay" """ ================================================ FILE: recipes/libs/freetype2/recipe.toml ================================================ [source] tar = "https://sourceforge.net/projects/freetype/files/freetype2/2.13.3/freetype-2.13.3.tar.xz/download" blake3 = "07a01894ccdb584943ce817b57341a8595ce9a92bfaa77c602ec4757dfabd5e2" [build] template = "custom" dependencies = [ "libpng", "zlib" ] script = """ DYNAMIC_STATIC_INIT cookbook_meson """ ================================================ FILE: recipes/libs/fribidi/recipe.toml ================================================ [source] tar = "https://github.com/fribidi/fribidi/releases/download/v1.0.16/fribidi-1.0.16.tar.xz" blake3 = "c16ee250f73f149d7d52dc7d285eb73ac755bad7907d237391e23f429b2b71d5" [build] template = "custom" script = """ DYNAMIC_INIT cookbook_meson -Dbin=false -Dtests=false """ ================================================ FILE: recipes/libs/glib/recipe.toml ================================================ [source] tar = "https://download.gnome.org/sources/glib/2.87/glib-2.87.0.tar.xz" blake3 = "26b77ae24bc02f85d1c6742fe601167b056085f117cda70da7b805cefa6195e9" patches = [ "redox.patch", ] [build] template = "custom" dependencies = [ "gettext", "libffi", "libiconv", "pcre2", "zlib", ] script = """ DYNAMIC_INIT cookbook_meson \ -Ddefault_library=shared \ -Dxattr=false """ ================================================ FILE: recipes/libs/glib/redox.patch ================================================ diff -ruwN glib-2.87.0/fuzzing/fuzz_resolver.c source/fuzzing/fuzz_resolver.c --- glib-2.87.0/fuzzing/fuzz_resolver.c 2025-11-03 19:42:10.000000000 +0700 +++ source/fuzzing/fuzz_resolver.c 2026-02-19 13:53:45.717898735 +0700 @@ -29,7 +29,7 @@ gint rrtype) { /* g_resolver_records_from_res_query() is only available on Unix */ -#ifdef G_OS_UNIX +#if defined(G_OS_UNIX) && !defined(__redox__) GList *record_list = NULL; /* Data too long? */ diff -ruwN glib-2.87.0/gio/gcredentialsprivate.h source/gio/gcredentialsprivate.h --- glib-2.87.0/gio/gcredentialsprivate.h 2025-11-03 19:42:10.000000000 +0700 +++ source/gio/gcredentialsprivate.h 2026-02-19 13:53:45.717995965 +0700 @@ -104,7 +104,7 @@ */ #undef G_CREDENTIALS_HAS_PID -#ifdef __linux__ +#if defined(__linux__) || defined(__redox__) #define G_CREDENTIALS_SUPPORTED 1 #define G_CREDENTIALS_USE_LINUX_UCRED 1 #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_LINUX_UCRED diff -ruwN glib-2.87.0/gio/glocalfile.c source/gio/glocalfile.c --- glib-2.87.0/gio/glocalfile.c 2025-11-03 19:42:10.000000000 +0700 +++ source/gio/glocalfile.c 2026-02-19 13:53:45.718204283 +0700 @@ -47,6 +47,10 @@ #include #endif +#if defined(__redox__) +#undef AT_FDCWD +#endif + #ifndef O_BINARY #define O_BINARY 0 #endif diff -ruwN glib-2.87.0/gio/gnetworking.h.in source/gio/gnetworking.h.in --- glib-2.87.0/gio/gnetworking.h.in 2025-11-03 19:42:10.000000000 +0700 +++ source/gio/gnetworking.h.in 2026-02-19 13:53:45.718380100 +0700 @@ -40,13 +40,17 @@ #include #include #include +#if !defined(__redox__) #include +#endif #include #include #include #include +#if !defined(__redox__) #include +#endif @NAMESER_COMPAT_INCLUDE@ #ifndef __GI_SCANNER__ diff -ruwN glib-2.87.0/gio/gsocket.c source/gio/gsocket.c --- glib-2.87.0/gio/gsocket.c 2025-11-03 19:42:10.000000000 +0700 +++ source/gio/gsocket.c 2026-03-05 11:29:00.807439664 +0700 @@ -3133,7 +3133,8 @@ { int errsv = get_socket_errno (); - if (errsv == EINTR) + // TODO: uds connect() in redox is blocking + if (errsv == EINTR || errsv == EAGAIN) continue; #ifndef G_OS_WIN32 diff -ruwN glib-2.87.0/gio/gthreadedresolver.c source/gio/gthreadedresolver.c --- glib-2.87.0/gio/gthreadedresolver.c 2025-11-03 05:42:10.000000000 -0700 +++ source/gio/gthreadedresolver.c 2026-01-15 18:35:07.059664185 -0700 @@ -698,7 +698,7 @@ } -#if defined(G_OS_UNIX) +#if defined(G_OS_UNIX) && !defined(__redox__) #if defined __BIONIC__ && !defined BIND_4_COMPAT /* Copy from bionic/libc/private/arpa_nameser_compat.h @@ -1393,7 +1393,11 @@ { GList *records; -#if defined(G_OS_UNIX) +#if defined(__redox__) + g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL, + _("No support for resolving “%s” on redox"), rrname); + return NULL; +#elif defined(G_OS_UNIX) gint len = 512; gint herr; GByteArray *answer; diff -ruwN glib-2.87.0/gio/gunixconnection.c source/gio/gunixconnection.c --- glib-2.87.0/gio/gunixconnection.c 2025-11-03 05:42:10.000000000 -0700 +++ source/gio/gunixconnection.c 2026-01-15 18:35:07.059895298 -0700 @@ -496,7 +496,7 @@ GSocket *socket; gint n; gssize num_bytes_read; -#ifdef __linux__ +#if defined(__linux__) || defined(__redox__) gboolean turn_off_so_passcreds; #endif @@ -512,7 +512,7 @@ * already. We also need to turn it off when we're done. See * #617483 for more discussion. */ -#ifdef __linux__ +#if defined(__linux__) || defined(__redox__) { gint opt_val; @@ -626,7 +626,7 @@ out: -#ifdef __linux__ +#if defined(__linux__) || defined(__redox__) if (turn_off_so_passcreds) { if (!g_socket_set_option (socket, diff -ruwN glib-2.87.0/gio/gunixmounts.c source/gio/gunixmounts.c --- glib-2.87.0/gio/gunixmounts.c 2025-11-03 05:42:10.000000000 -0700 +++ source/gio/gunixmounts.c 2026-01-15 18:35:07.060167680 -0700 @@ -1114,7 +1114,7 @@ } /* QNX {{{2 */ -#elif defined (HAVE_QNX) +#elif defined (HAVE_QNX) || defined(__redox__) static char * get_mtab_monitor_file (void) @@ -1758,6 +1758,28 @@ return NULL; } +#elif defined(__redox__) + +static GUnixMountPoint ** +_g_unix_mount_points_get_from_file (const char *table_path, + uint64_t *time_read_out, + size_t *n_points_out) +{ + /* Not supported on Redox. */ + if (time_read_out != NULL) + *time_read_out = 0; + if (n_points_out != NULL) + *n_points_out = 0; + return NULL; +} + +static GList * +_g_get_unix_mount_points (void) +{ + /* Not supported on Redox. */ + return NULL; +} + /* Common code {{{2 */ #else #error No g_get_mount_table() implementation for system diff -ruwN glib-2.87.0/gio/meson.build source/gio/meson.build --- glib-2.87.0/gio/meson.build 2025-11-03 19:42:10.000000000 +0700 +++ source/gio/meson.build 2026-02-19 13:53:45.718994535 +0700 @@ -18,7 +18,7 @@ gnetworking_h_nameser_compat_include = '' -if host_system not in ['windows', 'android'] +if host_system not in ['windows', 'android', 'redox'] # Don't check for C_IN on Android since it does not define it in public # headers, we define it ourselves wherever necessary if not cc.compiles('''#include @@ -39,7 +39,7 @@ network_libs = [ ] network_args = [ ] -if host_system != 'windows' +if host_system not in ['windows', 'redox'] # res_query() res_query_test = '''#include int main (int argc, char ** argv) { diff -ruwN glib-2.87.0/gio/tests/gdbus-server-auth.c source/gio/tests/gdbus-server-auth.c --- glib-2.87.0/gio/tests/gdbus-server-auth.c 2025-11-03 19:42:10.000000000 +0700 +++ source/gio/tests/gdbus-server-auth.c 2026-02-19 13:53:45.719091042 +0700 @@ -243,7 +243,7 @@ } else /* We should prefer EXTERNAL whenever it is allowed. */ { -#ifdef __linux__ +#if defined(__linux__) || defined(__redox__) /* We know that both GDBus and libdbus support full credentials-passing * on Linux. */ g_assert_cmpint (uid, ==, getuid ()); diff -ruwN glib-2.87.0/glib/glib-unix.c source/glib/glib-unix.c --- glib-2.87.0/glib/glib-unix.c 2025-11-03 19:42:10.000000000 +0700 +++ source/glib/glib-unix.c 2026-02-19 13:53:45.719219012 +0700 @@ -74,6 +74,10 @@ #include #endif /* defined (__FreeBSD__ )*/ +#if defined(__redox__) +#include +#endif + G_STATIC_ASSERT (sizeof (ssize_t) == GLIB_SIZEOF_SSIZE_T); G_STATIC_ASSERT (G_ALIGNOF (gssize) == G_ALIGNOF (ssize_t)); G_STATIC_ASSERT (G_SIGNEDNESS_OF (ssize_t) == 1); @@ -1004,6 +1008,20 @@ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOSYS, "g_unix_fd_query_path() not supported on HURD"); return NULL; +#elif defined(__redox__) + char file_path[PATH_MAX] = {0}; + + if (redox_fpath (fd, file_path, PATH_MAX) < 0) + { + int errsv = errno; + + g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errsv), + "Error querying file information for FD %d: %s", + fd, g_strerror (errsv)); + return NULL; + } + + return g_strdup (file_path); #else #error "g_unix_fd_query_path() not supported on this platform" #endif diff -ruwN glib-2.87.0/glib/gstrfuncs.c source/glib/gstrfuncs.c --- glib-2.87.0/glib/gstrfuncs.c 2025-11-03 19:42:10.000000000 +0700 +++ source/glib/gstrfuncs.c 2026-02-19 13:53:45.719384853 +0700 @@ -707,7 +707,7 @@ gchar *fail_pos; gdouble val; -#ifndef __BIONIC__ +#if !defined(__BIONIC__) && !defined(__redox__) struct lconv *locale_data; #endif const char *decimal_point; @@ -720,7 +720,7 @@ fail_pos = NULL; -#ifndef __BIONIC__ +#if !defined(__BIONIC__) && !defined(__redox__) locale_data = localeconv (); decimal_point = locale_data->decimal_point; decimal_point_len = strlen (decimal_point); @@ -931,7 +931,7 @@ return buffer; #else -#ifndef __BIONIC__ +#if !defined(__BIONIC__) && !defined(__redox__) struct lconv *locale_data; #endif const char *decimal_point; @@ -964,7 +964,7 @@ _g_snprintf (buffer, buf_len, format, d); -#ifndef __BIONIC__ +#if !defined(__BIONIC__) && !defined(__redox__) locale_data = localeconv (); decimal_point = locale_data->decimal_point; decimal_point_len = strlen (decimal_point); ================================================ FILE: recipes/libs/gstreamer/recipe.toml ================================================ [source] tar = "https://gitlab.freedesktop.org/gstreamer/gstreamer/-/archive/1.24.12/gstreamer-1.24.12.tar.gz" blake3 = "181daf73050f7472ec656e7461b7f67028d6002c1133870576033a32e43a364f" patches = ["redox.patch"] [build] template = "custom" dependencies = [ "bzip2", "cairo", "curl", "expat", #TODO: "ffmpeg6", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", "harfbuzz", "libass", "libffi", "libgmp", "libiconv", "libicu", "libjpeg", "libmodplug1", "libnettle", "libogg", "libpng", "libpsl", "libpthread-stubs", "libsndfile", "libsoup", "libvorbis", "libwebp", "libx11", "libxau", "libxcb", #TODO: "libxdamage", "libxext", "libxfixes", "libxi", "libxml2", "libxxf86vm", "mesa-x11", "nghttp2", #TODO: "openal", "openssl1", "pango", "pcre2", "pixman", "sqlite3", "x11proto", "xextproto", "xz", "zlib", ] script = """ DYNAMIC_INIT export GLIB_GENMARSHAL="$(which glib-genmarshal)" export GLIB_MKENUMS="$(which glib-mkenums)" CFLAGS="${CFLAGS} -DM_LN2=0.69314718055994530942" cookbook_meson \ -Ddevtools=disabled \ -Dexamples=disabled \ -Dlibav=disabled \ -Dlibnice=disabled \ -Dorc=disabled \ -Dtests=disabled \ -Dtools=enabled \ -Dgstreamer:check=disabled \ -Dgstreamer:coretracers=disabled \ -Dgst-plugins-bad:shm=disabled \ -Dgst-plugins-base:xshm=disabled \ -Dgst-plugins-good:ximagesrc-xshm=disabled """ ================================================ FILE: recipes/libs/gstreamer/redox.patch ================================================ diff -ruw gstreamer-1.24.12/subprojects/gst-plugins-bad/ext/dtls/gstdtlsconnection.c source/subprojects/gst-plugins-bad/ext/dtls/gstdtlsconnection.c --- gstreamer-1.24.12/subprojects/gst-plugins-bad/ext/dtls/gstdtlsconnection.c 2025-01-29 13:12:29.000000000 -0700 +++ source/subprojects/gst-plugins-bad/ext/dtls/gstdtlsconnection.c 2026-02-10 19:13:12.530288659 -0700 @@ -49,6 +49,10 @@ #include #endif +#if defined(__redox__) +#include // For struct timeval +#endif + GST_DEBUG_CATEGORY_STATIC (gst_dtls_connection_debug); #define GST_CAT_DEFAULT gst_dtls_connection_debug diff -ruw gstreamer-1.24.12/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build source/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build --- gstreamer-1.24.12/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build 2025-01-29 13:12:29.000000000 -0700 +++ source/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build 2026-02-10 19:09:53.259120404 -0700 @@ -136,10 +136,10 @@ install: false) endif -executable('mklicensestables', 'mklicensestables.c', - c_args : gst_plugins_base_args, - include_directories: [configinc], - dependencies : [tag_dep, gst_base_dep], - install : false) +#executable('mklicensestables', 'mklicensestables.c', +# c_args : gst_plugins_base_args, +# include_directories: [configinc], +# dependencies : [tag_dep, gst_base_dep], +# install : false) gst_tag_dir = meson.current_source_dir() Only in source/subprojects/gst-plugins-base/gst-libs/gst/tag: meson.build.orig ================================================ FILE: recipes/libs/harfbuzz/recipe.toml ================================================ [source] tar = "https://github.com/harfbuzz/harfbuzz/releases/download/11.0.1/harfbuzz-11.0.1.tar.xz" blake3 = "51f0edaaf2e9b7a7176d3252f15d03d409ef7ad35f77b050c407de89f85b77c5" [build] template = "custom" dependencies = [ "freetype2", "gettext", "glib", "libffi", "libiconv", "libicu", "libpng", "pcre2", "zlib" ] script = """ DYNAMIC_INIT cookbook_meson \ -Ddocs=disabled \ -Dtests=disabled """ ================================================ FILE: recipes/libs/jansson/jansson.patch ================================================ diff -ru source-new/config.sub source/config.sub --- source-new/config.sub 2017-11-06 18:59:18.499577613 -0800 +++ source/config.sub 2017-11-02 19:26:02.253397873 -0700 @@ -1368,7 +1368,7 @@ # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + -gnu* | -bsd* | -redox* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ ================================================ FILE: recipes/libs/jansson/recipe.toml ================================================ [source] tar = "https://github.com/akheron/jansson/releases/download/v2.10/jansson-2.10.tar.gz" blake3 = "3c74f374a6c7ac5e323f72d87e49e5309ca922ca26cfe4992873b31f28776624" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/libarchive/recipe.toml ================================================ [source] tar = "https://libarchive.org/downloads/libarchive-3.6.2.tar.xz" blake3 = "f98695fe81235a74fa3fc2c3ba0f0d4f13ea15f9be3850b83e304cf5d78be710" patches = [ "redox.patch" ] [build] template = "configure" ================================================ FILE: recipes/libs/libarchive/redox.patch ================================================ diff -ruwN source/configure source-new/configure --- source/configure 2022-12-09 20:38:47.000000000 +0700 +++ source-new/configure 2025-09-14 17:17:50.138530195 +0700 @@ -19039,7 +19039,8 @@ ac_fn_c_check_func "$LINENO" "fstatat" "ac_cv_func_fstatat" if test "x$ac_cv_func_fstatat" = xyes then : - printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h +# When fstatat works, remove this patch +# printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "fstatfs" "ac_cv_func_fstatfs" ================================================ FILE: recipes/libs/libatomic/recipe.toml ================================================ [source] same_as = "../../dev/gcc13" [build] template = "custom" dependencies = [ "libgmp", "libmpfr", "mpc", "zlib" ] script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/libatomic/configure" cookbook_configure """ ================================================ FILE: recipes/libs/libcosmic/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/libcosmic.git" branch = "redox" [build] template = "custom" script = """ cookbook_cargo_packages cosmic """ ================================================ FILE: recipes/libs/libffi/recipe.toml ================================================ [source] tar = "https://github.com/libffi/libffi/releases/download/v3.4.5/libffi-3.4.5.tar.gz" blake3 = "f9a2cfe1d2ac8d211c18c99f9cfafe5537925101bfb92c2d44d844680dd82264" script = """ DYNAMIC_INIT cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/libtool.m4 ./m4/ cp -fp ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/ltmain.sh ./ cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/ltversion.m4 ./m4/ autotools_recursive_regenerate -I$(realpath ./m4) """ [build] template = "custom" script = """ DYNAMIC_STATIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/libflac/recipe.toml ================================================ [source] tar = "https://github.com/xiph/flac/releases/download/1.5.0/flac-1.5.0.tar.xz" blake3 = "2adca3cd8da4b577ebb9c12e73c91cf6f6a7feb7485b3f003853b82710bada84" script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "libogg", ] script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --with-ogg="${COOKBOOK_SYSROOT}" ) cookbook_configure """ ================================================ FILE: recipes/libs/libgcc/recipe.toml ================================================ [build] template = "custom" script = """ mkdir -p "${COOKBOOK_STAGE}/lib" cp -av ${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/lib/libgcc_s.so* ${COOKBOOK_STAGE}/lib/ """ ================================================ FILE: recipes/libs/libgmp/recipe.toml ================================================ # GNU Multiple Precision Arithmetic Library (GMP) is a free and open source # library for arbitrary-precision arithmetic, operating on signed integers, # rational numbers, and floating-point numbers. [source] tar = "https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz" blake3 = "fffe4996713928ae19331c8ef39129e46d3bf5b7182820656fd4639435cd83a4" [build] template = "custom" script = """ # libgmp fails to regenerate autotools when building for host toolchain # To workaround this, the source is copied to the build dir and autotools is # only regenerated when not building for the host rsync -a --delete "${COOKBOOK_SOURCE}/" ./ COOKBOOK_SOURCE="${COOKBOOK_BUILD}" if [ "$TARGET" != "$COOKBOOK_HOST_TARGET" ]; then autotools_recursive_regenerate # need to invoke configure in specific way to make shared libs work ./configure --host="${GNU_TARGET}" --prefix="/usr" COOKBOOK_CONFIGURE=true fi DYNAMIC_STATIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/libiconv/01_redox.patch ================================================ diff '--color=auto' -ur source/srclib/getprogname.c source-new/srclib/getprogname.c --- source/srclib/getprogname.c 2022-01-04 19:33:29.000000000 +1100 +++ source-new/srclib/getprogname.c 2024-11-24 00:42:48.384997609 +1100 @@ -28,6 +28,14 @@ # include #endif +#if defined(__redox__) +# include +# include +# include +# include +# include +#endif + #ifdef __MVS__ # ifndef _OPEN_SYS # define _OPEN_SYS @@ -287,6 +295,17 @@ close (fd); } return "?"; +# elif defined(__redox__) + char filename[PATH_MAX]; + int fd = open ("sys:exe", O_RDONLY); + if (fd > 0) { + int len = read(fd, filename, PATH_MAX-1); + if (len > 0) { + filename[len] = '\0'; + return strdup(filename); + } + } + return NULL; # else # error "getprogname module not ported to this OS" # endif ================================================ FILE: recipes/libs/libiconv/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/libiconv/libiconv-1.17.tar.gz" blake3 = "820b3b9fd3e2181bfb95475f01e9a3451e6d751e4f8c98ebcdcca1d8aa720f7f" patches = [ "01_redox.patch" ] script = """ DYNAMIC_INIT cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/libtool.m4 ./m4/ cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/libtool.m4 ./libcharset/m4/ cp -fp ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/ltmain.sh ./build-aux/ cp -fp ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/ltmain.sh ./libcharset/build-aux/ cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/ltversion.m4 ./m4/ cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/ltversion.m4 ./libcharset/m4/ autotools_recursive_regenerate -I$(realpath ./m4) -I$(realpath ./srcm4) """ [build] template = "custom" script = """ DYNAMIC_STATIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( ac_cv_have_decl_program_invocation_name=no ) cookbook_configure """ ================================================ FILE: recipes/libs/libjpeg/recipe.toml ================================================ # libjpeg-turbo is compatible with libjpeg [source] tar = "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.1.0/libjpeg-turbo-3.1.0.tar.gz" blake3 = "3efc14da55c56fc0a6a50f109d9e1ee8a91f5ae7dd17a21d3aebe04a65f3ee96" [build] template = "custom" script = """ DYNAMIC_STATIC_INIT cookbook_cmake """ ================================================ FILE: recipes/libs/libmodplug1/recipe.toml ================================================ [source] tar = "https://pilotfiber.dl.sourceforge.net/project/modplug-xmms/libmodplug/0.8.9.0/libmodplug-0.8.9.0.tar.gz" blake3 = "01d71f7fe4e1abeb848db02b74c70ab2fd51e824f5ea7e9e18631571a76c3592" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/libmpfr/recipe.toml ================================================ [source] tar = "https://www.mpfr.org/mpfr-current/mpfr-4.2.2.tar.xz" blake3 = "11d59d061ef8db588650bc7dc5172594a6e5aad013994801c6f63011a62b191d" script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "libgmp", ] script = """ DYNAMIC_STATIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/libnettle/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/nettle/nettle-3.9.1.tar.gz" blake3 = "e4bfbda32f4fdf5ed96c152efe3a3867193b690faa5378d02a2a6fd052ee3393" script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "libgmp" ] script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/libogg/recipe.toml ================================================ [source] tar = "https://github.com/xiph/ogg/releases/download/v1.3.4/libogg-1.3.4.tar.xz" blake3 = "1cffbe7c498555ddfdb1390d7a38179c4bead6129ea37b1b1d54f3a76b816304" script = """ autotools_recursive_regenerate """ [build] template = "configure" ================================================ FILE: recipes/libs/libopus/recipe.toml ================================================ [source] tar = "https://downloads.xiph.org/releases/opus/opus-1.6.1.tar.gz" blake3 = "874bd7d28e24f10d88105c7d846a2e5bf085284af91a0ee36b05674a8f78e759" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT # Redox does not support any of the aarch64 run-time cpu capability detection # APIs supported by libopus case "${TARGET}" in aarch64-*-redox) COOKBOOK_CONFIGURE_FLAGS+=(--disable-rtcd);; esac cookbook_configure """ ================================================ FILE: recipes/libs/liborbital/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/liborbital.git" [build] template = "custom" script = """ DYNAMIC_STATIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_CARGO}" build --release # other than x86_64 this will trigger error because of lacking .so files, which is fine "${COOKBOOK_MAKE}" install HOST="${TARGET}" DESTDIR="${COOKBOOK_STAGE}" || true """ ================================================ FILE: recipes/libs/libpng/recipe.toml ================================================ [source] tar = "https://github.com/pnggroup/libpng/archive/refs/tags/v1.6.46.tar.gz" blake3 = "36f4bbb48c70975116b00ab0cff577931b96f703b2774ac3b33131d001419435" script = """ DYNAMIC_INIT chmod +w config.sub GNU_CONFIG_GET config.sub autotools_recursive_regenerate """ [build] template = "custom" dependencies = ["zlib"] script = """ DYNAMIC_STATIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/libpsl/recipe.toml ================================================ [source] tar = "https://github.com/rockdaboot/libpsl/releases/download/0.21.5/libpsl-0.21.5.tar.lz" blake3 = "91318b7b876b12ff4649b7a0d6f6ed4ab1ab44f48a49508c8978ab7b4ccf3298" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/libsodium/recipe.toml ================================================ [source] tar = "https://github.com/jedisct1/libsodium/archive/1.0.16.tar.gz" blake3 = "2482633f872c173f9a42e6badb44c3efb042e783e664fdf8b1046babfa2405e7" script = """ autotools_recursive_regenerate wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" """ [build] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/libssh2/recipe.toml ================================================ [source] tar = "https://www.libssh2.org/download/libssh2-1.10.0.tar.gz" blake3 = "2447216ce82c1d22301456bb02f60dfb6688f1461417b90f900c099a87f1292f" script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = ["openssl1"] script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/libstdcxx/recipe.toml ================================================ [build] template = "custom" script = """ if [ "$TARGET" != "$COOKBOOK_HOST_TARGET" ]; then mkdir -p "${COOKBOOK_STAGE}/lib" cp -av ${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/lib/libstdc++.so* ${COOKBOOK_STAGE}/lib/ fi """ ================================================ FILE: recipes/libs/libstdcxx-v3/recipe.toml ================================================ [source] same_as = "../../dev/gcc13" [build] template = "custom" script = """ DYNAMIC_STATIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --enable-threads=posix --enable-libstdcxx-threads ) # TODO: Investigate why mutex is not available in riscv64 if [ "${TARGET}" = "riscv64gc-unknown-redox" ]; then COOKBOOK_CONFIGURE_FLAGS+=( --without-libstdcxx-zoneinfo ) fi CPPINCLUDE="${COOKBOOK_HOST_SYSROOT}/$TARGET/include/c++/13.2.0" export CPPFLAGS+=" -I${CPPINCLUDE} -I${CPPINCLUDE}/$TARGET/bits" COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/libstdc++-v3/configure" cookbook_configure """ ================================================ FILE: recipes/libs/liburcu/0001-Fix-compilation-on-Redox-OS.patch ================================================ From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 6 Dec 2025 15:59:20 +0100 Subject: [PATCH] Fix compilation on Redox OS --- include/urcu/syscall-compat.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/urcu/syscall-compat.h b/include/urcu/syscall-compat.h index 23b266e..2c3b03f 100644 --- a/include/urcu/syscall-compat.h +++ b/include/urcu/syscall-compat.h @@ -33,7 +33,8 @@ #include #elif defined(__CYGWIN__) || defined(__APPLE__) || \ - defined(__FreeBSD__) || defined(__DragonFly__) + defined(__FreeBSD__) || defined(__DragonFly__) || \ + defined(__redox__) /* Don't include anything on these platforms. */ #else -- 2.47.3 ================================================ FILE: recipes/libs/liburcu/recipe.toml ================================================ [source] tar = "https://lttng.org/files/urcu/userspace-rcu-0.14.0.tar.bz2" patches = ["0001-Fix-compilation-on-Redox-OS.patch"] [build] template = "configure" ================================================ FILE: recipes/libs/libuv/recipe.toml ================================================ [source] tar = "https://dist.libuv.org/dist/v1.51.0/libuv-v1.51.0.tar.gz" blake3 = "e8b5e68bc2d0776ac4ea67df59d694fca58d5cc570c103443a2284e723d01fc2" patches = ["redox.patch"] [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CMAKE_FLAGS+=( -DBUILD_TESTING=Off ) cookbook_cmake """ ================================================ FILE: recipes/libs/libuv/redox.patch ================================================ diff -ruwN source/CMakeLists.txt source-new/CMakeLists.txt --- source/CMakeLists.txt 2025-04-25 16:50:27.000000000 +0700 +++ source-new/CMakeLists.txt 2025-10-10 11:19:40.329762962 +0700 @@ -1,3 +1,4 @@ +set (CMAKE_CXX_STANDARD 99) cmake_minimum_required(VERSION 3.10) if(POLICY CMP0091) @@ -323,6 +324,18 @@ src/unix/hurd.c) endif() + +if(CMAKE_SYSTEM_NAME STREQUAL "UnixPaths") # Redox + list(APPEND uv_libraries dl) + list(APPEND uv_sources + src/unix/no-fsevents.c + src/unix/proctitle.c + src/unix/posix-hrtime.c + src/unix/posix-poll.c + src/unix/redox.c + ) +endif() + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") list(APPEND uv_defines _GNU_SOURCE _POSIX_C_SOURCE=200112) list(APPEND uv_libraries dl rt) diff -ruwN source/include/uv/unix.h source-new/include/uv/unix.h --- source/include/uv/unix.h 2025-04-25 16:50:27.000000000 +0700 +++ source-new/include/uv/unix.h 2025-10-10 11:18:29.024386515 +0700 @@ -66,6 +66,7 @@ defined(__MSYS__) || \ defined(__HAIKU__) || \ defined(__QNX__) || \ + defined(__redox__) || \ defined(__GNU__) # include "uv/posix.h" #endif diff -ruwN source/src/unix/core.c source-new/src/unix/core.c --- source/src/unix/core.c 2025-04-25 16:50:27.000000000 +0700 +++ source-new/src/unix/core.c 2025-10-10 11:23:22.143824390 +0700 @@ -110,6 +110,10 @@ # include #endif +#if defined(__redox__) +#define MSG_CMSG_CLOEXEC 0x40000000 //linux specific flag +#endif + static void uv__run_pending(uv_loop_t* loop); /* Verify that uv_buf_t is ABI-compatible with struct iovec. */ @@ -722,7 +726,8 @@ defined(__FreeBSD__) || \ defined(__NetBSD__) || \ defined(__OpenBSD__) || \ - defined(__linux__) + defined(__linux__) || \ + defined(__redox__) ssize_t rc; rc = recvmsg(fd, msg, flags | MSG_CMSG_CLOEXEC); if (rc == -1) @@ -1644,6 +1649,11 @@ * So the output parameter priority is actually the nice value. */ int uv_thread_getpriority(uv_thread_t tid, int* priority) { +#ifdef __redox__ + if (priority == NULL) + return UV_EINVAL; + *priority = 0; +#else int r; int policy; struct sched_param param; @@ -1670,6 +1680,7 @@ #endif *priority = param.sched_priority; +#endif return 0; } @@ -1695,7 +1706,7 @@ * If the function fails, the return value is non-zero. */ int uv_thread_setpriority(uv_thread_t tid, int priority) { -#if !defined(__GNU__) +#if !defined(__GNU__) && !defined(__redox__) int r; int min; int max; diff -ruwN source/src/unix/fs.c source-new/src/unix/fs.c --- source/src/unix/fs.c 2025-04-25 16:50:27.000000000 +0700 +++ source-new/src/unix/fs.c 2025-10-10 11:18:29.024993834 +0700 @@ -77,7 +77,8 @@ defined(__MVS__) || \ defined(__NetBSD__) || \ defined(__HAIKU__) || \ - defined(__QNX__) + defined(__QNX__) || \ + defined(__redox__) # include #else # include @@ -683,13 +684,13 @@ defined(__MVS__) || \ defined(__NetBSD__) || \ defined(__HAIKU__) || \ - defined(__QNX__) + defined(__QNX__) || \ + defined(__redox__) struct statvfs buf; if (0 != statvfs(req->path, &buf)) #else struct statfs buf; - if (0 != statfs(req->path, &buf)) #endif /* defined(__sun) */ return -1; @@ -705,7 +706,8 @@ defined(__OpenBSD__) || \ defined(__NetBSD__) || \ defined(__HAIKU__) || \ - defined(__QNX__) + defined(__QNX__) || \ + defined(__redox__) stat_fs->f_type = 0; /* f_type is not supported. */ #else stat_fs->f_type = buf.f_type; diff -ruwN source/src/unix/proctitle.c source-new/src/unix/proctitle.c --- source/src/unix/proctitle.c 2025-04-25 16:50:27.000000000 +0700 +++ source-new/src/unix/proctitle.c 2025-10-10 11:18:29.025229760 +0700 @@ -30,7 +30,13 @@ size_t cap; /* Maximum capacity. Computed once in uv_setup_args(). */ }; +#if defined(__redox__) +void uv__set_process_title(const char* title) { + // requires sys/prctl +} +#else extern void uv__set_process_title(const char* title); +#endif static uv_mutex_t process_title_mutex; static uv_once_t process_title_mutex_once = UV_ONCE_INIT; diff -ruwN source/src/unix/redox.c source-new/src/unix/redox.c --- source/src/unix/redox.c 1970-01-01 07:00:00.000000000 +0700 +++ source-new/src/unix/redox.c 2025-10-10 11:18:29.028345924 +0700 @@ -0,0 +1,104 @@ +/* Copyright libuv contributors. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include "uv.h" +#include "internal.h" + +#include +#include +#include + +static void +get_mem_info(uint64_t* totalmem, uint64_t* freemem) { + *totalmem = 0; + *freemem = 0; +} + + +void uv_loadavg(double avg[3]) { + avg[0] = 0.0; + avg[1] = 0.0; + avg[2] = 0.0; +} + + +int uv_exepath(char* buffer, size_t* size) { + if (buffer == NULL || size == NULL || *size == 0) { + return UV_EINVAL; + } + FILE* fp = fopen("/scheme/sys/exe", "r"); + if (fp == NULL) { + return -errno; + } + if (fgets(buffer, *size, fp) == NULL) { + fclose(fp); + return UV_EIO; + } + fclose(fp); + buffer[strcspn(buffer, "\r\n")] = '\0'; + *size = strlen(buffer); + return 0; +} + +int uv_interface_addresses(uv_interface_address_t** addresses, int* count) { + *count = 0; + return 0; +} + + +uint64_t uv_get_free_memory(void) { + return 0; +} + + +uint64_t uv_get_total_memory(void) { + return 0; +} + + +uint64_t uv_get_constrained_memory(void) { + return 0; +} + + +uint64_t uv_get_available_memory(void) { + return uv_get_free_memory(); +} + + +int uv_resident_set_memory(size_t* rss) { + return 0; +} + + +int uv_uptime(double* uptime) { + return 0; +} + + +int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) { + *count = 0; + return 0; +} + +void uv_free_interface_addresses(uv_interface_address_t* addresses, + int count) { +} diff -ruwN source/src/unix/stream.c source-new/src/unix/stream.c --- source/src/unix/stream.c 2025-04-25 16:50:27.000000000 +0700 +++ source-new/src/unix/stream.c 2025-10-10 11:18:29.028522718 +0700 @@ -29,7 +29,14 @@ #include #include +#if defined(__redox__) +#define _GNU_SOURCE +#include #include +#include +#else +#include +#endif #include #include #include @@ -39,6 +46,7 @@ # include # include # include +#endif /* Forward declaration */ typedef struct uv__stream_select_s uv__stream_select_t; @@ -58,7 +66,6 @@ fd_set* swrite; size_t swrite_sz; }; -#endif /* defined(__APPLE__) */ union uv__cmsg { struct cmsghdr hdr; diff -ruwN source/src/unix/tcp.c source-new/src/unix/tcp.c --- source/src/unix/tcp.c 2025-04-25 16:50:27.000000000 +0700 +++ source-new/src/unix/tcp.c 2025-10-10 11:26:03.504101758 +0700 @@ -31,7 +31,7 @@ #include /* ifaddrs is not implemented on AIX and IBM i PASE */ -#if !defined(_AIX) +#if !defined(_AIX) && !defined(__redox__) #include #endif @@ -228,7 +228,7 @@ static int uv__ipv6_link_local_scope_id(void) { struct sockaddr_in6* a6; int rv; -#if defined(_AIX) +#if defined(_AIX) || defined(__redox__) /* AIX & IBM i do not have ifaddrs * so fallback to use uv_interface_addresses */ uv_interface_address_t* interfaces; @@ -268,7 +268,7 @@ } freeifaddrs(ifa); -#endif /* defined(_AIX) */ +#endif /* defined(_AIX) || defined(__redox__) */ return rv; } diff -ruwN source/src/unix/thread.c source-new/src/unix/thread.c --- source/src/unix/thread.c 2025-04-25 16:50:27.000000000 +0700 +++ source-new/src/unix/thread.c 2025-10-10 11:25:10.712328011 +0700 @@ -897,7 +897,7 @@ abort(); } -#if defined(_AIX) || defined(__MVS__) || defined(__PASE__) +#if defined(_AIX) || defined(__redox__) || defined(__MVS__) || defined(__PASE__) int uv__thread_setname(const char* name) { return UV_ENOSYS; } @@ -937,6 +937,7 @@ #if (defined(__ANDROID_API__) && __ANDROID_API__ < 26) || \ defined(_AIX) || \ + defined(__redox__) || \ defined(__MVS__) || \ defined(__PASE__) int uv__thread_getname(uv_thread_t* tid, char* name, size_t size) { diff -ruwN source/src/unix/udp.c source-new/src/unix/udp.c --- source/src/unix/udp.c 2025-04-25 16:50:27.000000000 +0700 +++ source-new/src/unix/udp.c 2025-10-10 11:18:29.028778883 +0700 @@ -31,6 +31,12 @@ #include #endif #include +#if defined(__redox__) +#include +#include +#include +#include +#endif #if defined(IPV6_JOIN_GROUP) && !defined(IPV6_ADD_MEMBERSHIP) # define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP ================================================ FILE: recipes/libs/libvorbis/recipe.toml ================================================ [source] tar = "https://github.com/xiph/vorbis/releases/download/v1.3.7/libvorbis-1.3.7.tar.xz" blake3 = "c67f3f74ec26d93a5571c4404a64eb6e6587d7d77b46b552f7b410f5bc5b1f03" script = """ DYNAMIC_INIT GNU_CONFIG_GET config.sub autotools_recursive_regenerate """ [build] template = "configure" dependencies = [ "libogg" ] ================================================ FILE: recipes/libs/libxml2/recipe.toml ================================================ [source] tar = "https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.3.tar.xz" blake3 = "0653d3750576299c4cb88740942165671b576ff93019f3d669b3f37136225ab7" script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "xz", "zlib" ] script = """ DYNAMIC_STATIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --without-python ) cookbook_configure """ ================================================ FILE: recipes/libs/lua-compat-53/recipe.toml ================================================ [source] git = "https://github.com/lunarmodules/lua-compat-5.3.git" [build] template = "custom" dependencies = [ "lua54" ] script = """ mkdir -pv "${COOKBOOK_STAGE}/include" cp -r "$COOKBOOK_SOURCE/c-api/." "${COOKBOOK_STAGE}/include" """ ================================================ FILE: recipes/libs/luv/recipe.toml ================================================ [source] git = "https://github.com/luvit/luv.git" [build] template = "custom" dependencies = [ "libuv", "luajit" ] script = """ DYNAMIC_INIT COOKBOOK_CMAKE_FLAGS+=( -DWITH_LUA_ENGINE=Luajit -DLUA_BUILD_TYPE=System -DWITH_SHARED_LIBUV=On ) cookbook_cmake """ ================================================ FILE: recipes/libs/mesa/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/mesa.git" upstream = "https://gitlab.freedesktop.org/mesa/mesa" branch = "redox-24.0" shallow_clone = true [build] template = "custom" dependencies = [ "expat", "libdrm", "liborbital", "llvm21", "zlib", ] dev-dependencies = [ "llvm21.dev", ] script = """ DYNAMIC_INIT #TODO: Should be CPPFLAGS but cookbook_meson isn't reading it export CFLAGS+=" -DHAVE_PTHREAD=1 -I${COOKBOOK_SYSROOT}/include/libdrm" export LLVM_CONFIG="${TARGET}-llvm-config" export LDFLAGS+=" -lorbital" if [ "${COOKBOOK_DYNAMIC}" == "1" ]; then COOKBOOK_MESON_FLAGS+=(-Dshared-llvm=enabled) else COOKBOOK_MESON_FLAGS+=(-Dshared-llvm=disabled) fi cookbook_meson \ -Ddri-drivers-path=/usr/lib/dri \ -Degl=enabled \ -Dglx=disabled \ -Dllvm=enabled \ -Dosmesa=true \ -Dplatforms=redox \ -Dshader-cache=disabled \ -Dvulkan-drivers=swrast # Hack to add LLVM libs, the list can be seen from meson log and check for matches $("${LLVM_CONFIG}" --libs) LLVMLIBS="-lLLVMBitReader -lLLVMCore -lLLVMExecutionEngine -lLLVMInstCombine -lLLVMMCDisassembler" LLVMLIBS+=" -lLLVMMCJIT -lLLVMScalarOpts -lLLVMTransformUtils -lLLVMCoroutines -lLLVMLTO" sed -i "s/ -lOSMesa / -lOSMesa ${LLVMLIBS} -lstdc++ /" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/osmesa.pc" """ ================================================ FILE: recipes/libs/mesa-glu/recipe.toml ================================================ [source] tar = "https://archive.mesa3d.org/glu/glu-9.0.3.tar.xz" blake3 = "beed1665ed983540e7502289ec50c7e66d840820af3e9ef21c9c4a7e9686ab9f" [build] dependencies = ["mesa"] template = "custom" script = """ DYNAMIC_INIT cookbook_meson -Dgl_provider=osmesa """ ================================================ FILE: recipes/libs/mpc/recipe.toml ================================================ # C library for the arithmetic of complex numbers with arbitrarily high # precision and correct rounding of the result. [source] tar = "https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz" script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "libgmp", "libmpfr", ] script = """ DYNAMIC_STATIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/ncurses/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/ncurses/ncurses-6.6.tar.gz" blake3 = "0d1c9fdf53c0ca4bd66ba707d49a079d2dd6f5a960cdec74a56e29952c4ffe73" patches = [ "redox.patch" ] [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --disable-db-install --disable-stripping --without-ada --without-manpages --without-tests --enable-pc-files --with-terminfo-dirs=/usr/share/terminfo --with-pkg-config-libdir=/usr/lib/pkgconfig cf_cv_func_mkstemp=yes ) if [ "${COOKBOOK_DYNAMIC}" == "1" ] then COOKBOOK_CONFIGURE_FLAGS+=(--with-shared) fi cookbook_configure """ [package] dependencies = [ "terminfo", ] ================================================ FILE: recipes/libs/ncurses/redox.patch ================================================ diff -ruwN source/configure source-new/configure --- source/configure 2022-11-06 04:13:26.000000000 +0700 +++ source-new/configure 2026-02-17 13:42:38.449890407 +0700 @@ -3480,8 +3480,6 @@ echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6 save_CPPFLAGS="$CPPFLAGS" - eval cf_includedir=${includedir} - CPPFLAGS="$CPPFLAGS -I${cf_includedir}" cat >"conftest.$ac_ext" <<_ACEOF #line 3487 "configure" @@ -6386,7 +6384,7 @@ fi cf_cv_rm_so_locs=yes ;; - (linux*|gnu*|k*bsd*-gnu) + (linux*|gnu*|k*bsd*-gnu|redox*) if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" ================================================ FILE: recipes/libs/ncursesw/recipe.toml ================================================ [source] same_as = "../ncurses" [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --disable-db-install --disable-ext-colors --disable-stripping --enable-widec --without-ada --without-manpages --without-tests --enable-pc-files --with-terminfo-dirs=/usr/share/terminfo --with-pkg-config-libdir=/usr/lib/pkgconfig cf_cv_func_mkstemp=yes cf_cv_wint_t=yes ) if [ "${COOKBOOK_DYNAMIC}" == "1" ] then COOKBOOK_CONFIGURE_FLAGS+=(--with-shared) fi cookbook_configure """ [package] dependencies = [ "terminfo", ] ================================================ FILE: recipes/libs/nghttp2/recipe.toml ================================================ [source] tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.64.0/nghttp2-1.64.0.tar.xz" blake3 = "1bbc08de4816769d800c42f501a00c1ba3f5efa1b76e1f65d2e5bdf3aa30354d" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --enable-lib-only ) cookbook_configure """ ================================================ FILE: recipes/libs/openssl1/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/openssl.git" branch = "redox-v1" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT ARCH="${TARGET%%-*}" OS=$(echo "${TARGET}" | cut -d - -f3) COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/Configure" COOKBOOK_CONFIGURE_FLAGS=( threads no-dgram "${OS}-${ARCH}" --prefix="/" ) if [ "${COOKBOOK_DYNAMIC}" = "1" ]; then COOKBOOK_CONFIGURE_FLAGS+=(shared) else COOKBOOK_CONFIGURE_FLAGS+=(no-shared) fi export CC="${CC_WRAPPER} ${GNU_TARGET}-gcc" "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install_sw install_ssldirs DESTDIR="${COOKBOOK_STAGE}" rm -rfv "${COOKBOOK_STAGE}/"{share,ssl} """ ================================================ FILE: recipes/libs/opusfile/recipe.toml ================================================ [source] tar = "https://downloads.xiph.org/releases/opus/opusfile-0.12.tar.gz" blake3 = "1b6a5c371a0ea2ae8e37ab2e921388dfef9252dbf7f60045192dabbdd898f2bf" script = """ autotools_recursive_regenerate """ [build] template = "configure" dependencies = [ "openssl3", "libogg", "libopus", ] [package] dependencies = [ "ca-certificates" ] ================================================ FILE: recipes/libs/pango/recipe.toml ================================================ [source] tar = "https://download.gnome.org/sources/pango/1.56/pango-1.56.3.tar.xz" blake3 = "78542feaaf007c1d648b94c4e9b6655ed7515d27ce434766aea99bef886c21ac" patches = ["redox.patch"] [build] dependencies = [ "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gettext", "glib", "harfbuzz", "libffi", "libiconv", "libpng", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxft", "libxrender", "pcre", "pcre2", "pixman", "x11proto", "xcb-proto", "xextproto", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_meson \ -Dbuild-examples=false \ -Dbuild-testsuite=false """ ================================================ FILE: recipes/libs/pango/redox.patch ================================================ diff -ruwN pango-1.56.3/meson.build source/meson.build --- pango-1.56.3/meson.build 2025-03-16 05:45:47.000000000 -0600 +++ source/meson.build 2025-05-01 13:51:05.834742120 -0600 @@ -551,8 +551,8 @@ pango_inc = include_directories('pango') subdir('pango') -subdir('utils') -subdir('tools') +#TODO: fails to build on Redox: subdir('utils') +#TODO: fails to build on Redox: subdir('tools') subdir('docs') if get_option('build-testsuite') subdir('tests') ================================================ FILE: recipes/libs/pcre/recipe.toml ================================================ [source] tar = "https://mirrors.gigenet.com/OSDN//sfnet/p/pc/pcre/pcre/8.42/pcre-8.42.tar.gz" blake3 = "12d515ba12a816994def6b1e7196b5783fd2cfe495733a9167fa4d71dbe10248" script = """ autotools_recursive_regenerate """ patches = [ "redox.patch" ] [build] template = "custom" script = """ DYNAMIC_STATIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/pcre/redox.patch ================================================ diff -ruwN source/pcretest.c source-new/pcretest.c --- source/pcretest.c 2017-06-13 10:49:46.000000000 -0600 +++ source-new/pcretest.c 2019-01-05 11:04:15.198224299 -0700 @@ -3168,7 +3168,7 @@ ((stack_size = get_value((pcre_uint8 *)argv[op+1], &endptr)), *endptr == 0)) { -#if defined(_WIN32) || defined(WIN32) || defined(__minix) || defined(NATIVE_ZOS) || defined(__VMS) +#if defined(_WIN32) || defined(WIN32) || defined(__minix) || defined(NATIVE_ZOS) || defined(__VMS) || defined(__redox__) printf("PCRE: -S not supported on this OS\n"); exit(1); #else @@ -5770,4 +5770,3 @@ } /* End of pcretest.c */ - ================================================ FILE: recipes/libs/pcre2/recipe.toml ================================================ [source] tar = "https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.45/pcre2-10.45.tar.bz2" blake3 = "aea544846f9a03c1ec62c9f8d1c9a4187cc3cce557e53e6876eb6a58c7cdd9fe" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_STATIC_INIT cookbook_configure """ ================================================ FILE: recipes/libs/pixman/recipe.toml ================================================ [source] tar = "https://www.cairographics.org/releases/pixman-0.46.0.tar.xz" blake3 = "379369245a0bbd13784bf550c87622964a6aba87edf598ffa137dc10201746e0" patches = ["redox.patch"] [build] template = "custom" script = """ DYNAMIC_INIT cookbook_meson -Dtests=disabled """ ================================================ FILE: recipes/libs/pixman/redox.patch ================================================ diff -ruwN source/test/fence-image-self-test.c source-new/test/fence-image-self-test.c --- source/test/fence-image-self-test.c 2018-04-11 06:07:58.000000000 -0600 +++ source-new/test/fence-image-self-test.c 2019-01-06 15:29:38.878720123 -0700 @@ -29,7 +29,7 @@ #include "utils.h" -#if FENCE_MALLOC_ACTIVE && defined (HAVE_SIGACTION) +#if FENCE_MALLOC_ACTIVE && defined (HAVE_SIGACTION) && !defined(__redox__) #include #include ================================================ FILE: recipes/libs/readline/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/readline/readline-8.3.tar.gz" blake3 = "7109f094062bda387a0c16b4875375b96e36437bebbbd8d8f91bb27ba01d687f" [build] template = "custom" dependencies = [ "ncursesw", ] script = """ DYNAMIC_INIT cookbook_configure OS=$(echo "${TARGET}" | cut -d - -f3) if [ "${OS}" = "redox" ]; then ln -s "libhistory.so.8" "${COOKBOOK_STAGE}"/usr/lib/libhistory.so ln -s "libreadline.so.8" "${COOKBOOK_STAGE}"/usr/lib/libreadline.so patchelf --add-needed libncursesw.so "${COOKBOOK_STAGE}/usr/lib/libreadline.so.8" fi """ ================================================ FILE: recipes/libs/redox-fatfs/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/redox-fatfs.git" [build] template = "cargo" ================================================ FILE: recipes/libs/sdl-gfx/recipe.toml ================================================ [source] tar = "https://sourceforge.net/projects/sdlgfx/files/SDL_gfx-2.0.25.tar.gz" blake3 = "e6f571a38e51d369b010f4b10eb35b95e3d2edae2edd796241c47ea8376581e6" patches = ["redox.patch"] script = """ ./autogen.sh """ [build] template = "custom" dependencies = [ "sdl1", "liborbital", "libiconv", ] script = """ COOKBOOK_CONFIGURE_FLAGS=( --prefix=/ --build="$(gcc -dumpmachine)" --host="${TARGET}" --disable-shared ) cookbook_configure rm -f "${COOKBOOK_STAGE}/lib/"*.la """ ================================================ FILE: recipes/libs/sdl-gfx/redox.patch ================================================ --- source/config.sub 2013-10-27 23:04:13.000000000 +0100 +++ build/config.sub 2019-08-13 10:13:07.072063540 +0200 @@ -125,7 +125,7 @@ case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ + kopensolaris*-gnu* | redox* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -1346,7 +1346,7 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ + | -sym* | -kopensolaris* | -redox* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ ================================================ FILE: recipes/libs/sdl1/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/sdl1.2.git" [build] template = "custom" dependencies = [ "liborbital" ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( --disable-loadso --disable-pulseaudio --disable-video-x11 --enable-clock_gettime --enable-pthread-sem --enable-redoxaudio --enable-video-orbital ) cookbook_configure """ ================================================ FILE: recipes/libs/sdl1-image/recipe.toml ================================================ [source] tar = "https://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz" blake3 = "731a6f8cad9fff22c82394bd1c0c34ce4aa60fa8923f3755a3e3239f1e269389" patches = ["redox.patch"] script = """ ./autogen.sh """ [build] template = "custom" dependencies = [ "sdl1", "liborbital", "libiconv", "libjpeg", "libpng", "zlib" ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( --disable-sdltest --enable-png --enable-jpg ) cookbook_configure """ ================================================ FILE: recipes/libs/sdl1-image/redox.patch ================================================ diff -rupNw source-original/config.sub source/config.sub --- source-original/config.sub 2012-01-19 07:30:05.000000000 +0100 +++ source/config.sub 2018-05-01 17:31:52.766229515 +0200 @@ -1276,7 +1276,7 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -kopensolaris* \ + | -kopensolaris* | -redox* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ ================================================ FILE: recipes/libs/sdl1-mixer/recipe.toml ================================================ [source] tar = "https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.12.tar.gz" blake3 = "ef23bab2d42250dfdc51ce6939ee7b393973ff11a0dd3481f32180b489d2661c" patches = ["redox.patch"] script = """ ./autogen.sh """ [build] dependencies = [ "libogg", "liborbital", "libvorbis", "sdl1", ] template = "custom" script = """ DYNAMIC_INIT export LIBS="-lvorbis -logg" COOKBOOK_CONFIGURE_FLAGS+=( --enable-music-ogg --enable-music-midi --disable-sdltest --disable-music-cmd --disable-music-mp3 --disable-smpegtest --disable-music-mod ) cookbook_configure """ ================================================ FILE: recipes/libs/sdl1-mixer/redox.patch ================================================ diff -ruwN source/build-scripts/config.sub source-new/build-scripts/config.sub --- source/build-scripts/config.sub 2012-01-15 15:01:05.000000000 -0700 +++ source-new/build-scripts/config.sub 2022-11-20 12:23:50.849108724 -0700 @@ -1276,7 +1276,7 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -kopensolaris* \ + | -kopensolaris* | -redox* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ diff -ruwN source/Makefile.in source-new/Makefile.in --- source/Makefile.in 2012-01-15 15:01:04.000000000 -0700 +++ source-new/Makefile.in 2022-11-20 12:23:50.849108724 -0700 @@ -66,10 +66,10 @@ $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET) - $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) + $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) --static $(objects)/playmus$(EXE): $(objects)/playmus.lo $(objects)/$(TARGET) - $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) + $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) --static install: all install-hdrs install-lib #install-bin install-hdrs: diff -ruwN source/timidity/config.h source-new/timidity/config.h --- source/timidity/config.h 2012-01-15 15:01:05.000000000 -0700 +++ source-new/timidity/config.h 2022-11-20 12:26:04.067581857 -0700 @@ -162,6 +162,7 @@ then specify the library directory in the configuration file. */ #define CONFIG_FILE "timidity.cfg" #define CONFIG_FILE_ETC "/etc/timidity.cfg" +#define CONFIG_FILE_ETC_TIMIDITY_FREEPATS "/etc/timidity/freepats.cfg" #if defined(__WIN32__) || defined(__OS2__) #define DEFAULT_PATH "C:\\TIMIDITY" diff -ruwN source/timidity/timidity.c source-new/timidity/timidity.c --- source/timidity/timidity.c 2012-01-15 15:01:05.000000000 -0700 +++ source-new/timidity/timidity.c 2022-11-20 12:26:42.248290658 -0700 @@ -286,10 +286,12 @@ if (!env || read_config_file(env)<0) { if (read_config_file(CONFIG_FILE)<0) { if (read_config_file(CONFIG_FILE_ETC)<0) { + if (read_config_file(CONFIG_FILE_ETC_TIMIDITY_FREEPATS)<0) { return(-1); } } } + } if (channels < 1 || channels == 3 || channels == 5 || channels > 6) return(-1); ================================================ FILE: recipes/libs/sdl1-ttf/recipe.toml ================================================ [source] tar = "https://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.11.tar.gz" blake3 = "a684e57553e43b55ab28b064d1d5d44b8749299f259da31a62d671fc1d5505ee" patches = ["redox.patch"] script = """ ./autogen.sh """ [build] template = "custom" dependencies = [ "sdl1", "liborbital", "freetype2", "libpng", "zlib", ] script = """ export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/freetype2" COOKBOOK_CONFIGURE_FLAGS=( --prefix=/ --build="$(gcc -dumpmachine)" --host="${TARGET}" --disable-shared ) cookbook_configure rm -f "${COOKBOOK_STAGE}/lib/"*.la """ ================================================ FILE: recipes/libs/sdl1-ttf/redox.patch ================================================ diff -ruw source/config.sub source-new/config.sub --- source/config.sub 2012-01-14 21:44:08.000000000 -0700 +++ source-new/config.sub 2018-12-10 12:17:28.136784814 -0700 @@ -1276,7 +1276,7 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -kopensolaris* \ + | -kopensolaris* | -redox* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ Only in source-new: config.sub.orig diff -ruw source/configure.in source-new/configure.in --- source/configure.in 2012-01-14 21:44:08.000000000 -0700 +++ source-new/configure.in 2018-12-10 12:17:12.724883206 -0700 @@ -91,38 +91,13 @@ AM_CONDITIONAL(USE_VERSION_RC, test x$use_version_rc = xtrue) dnl Check for the FreeType 2 library -dnl -dnl Get the cflags and libraries from the freetype-config script -dnl -AC_ARG_WITH(freetype-prefix,[ --with-freetype-prefix=PFX Prefix where FREETYPE is -installed (optional)], - freetype_prefix="$withval", freetype_prefix="") -AC_ARG_WITH(freetype-exec-prefix,[ --with-freetype-exec-prefix=PFX Exec prefix -where FREETYPE is installed (optional)], - freetype_exec_prefix="$withval", freetype_exec_prefix="") - -if test x$freetype_exec_prefix != x ; then - freetype_args="$freetype_args --exec-prefix=$freetype_exec_prefix" - if test x${FREETYPE_CONFIG+set} != xset ; then - FREETYPE_CONFIG=$freetype_exec_prefix/bin/freetype-config - fi -fi -if test x$freetype_prefix != x ; then - freetype_args="$freetype_args --prefix=$freetype_prefix" - if test x${FREETYPE_CONFIG+set} != xset ; then - FREETYPE_CONFIG=$freetype_prefix/bin/freetype-config - fi -fi -AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) -no_freetype="" -if test "$FREETYPE_CONFIG" = "no" ; then - AC_MSG_ERROR([ -*** Unable to find FreeType2 library (http://www.freetype.org/) +#PKG_CHECK_MODULES([FT2], [freetype2 >= 7.0.1], [], [dnl +# AC_CHECK_FT2(,,[AC_MSG_ERROR([dnl +#*** Unable to find FreeType2 library (http://www.freetype.org/)])] +# ) +#]) -]) -else - CFLAGS="$CFLAGS `$FREETYPE_CONFIG $freetypeconf_args --cflags`" - LIBS="$LIBS `$FREETYPE_CONFIG $freetypeconf_args --libs`" -fi +CFLAGS="$CFLAGS $FT2_CFLAGS" +LIBS="$LIBS $FT2_LIBS -lfreetype -lpng -lz" dnl Check for SDL SDL_VERSION=1.2.4 ================================================ FILE: recipes/libs/sdl2/recipe.toml ================================================ #TODO: TEST [source] git = "https://gitlab.redox-os.org/redox-os/sdl2.git" [build] template = "custom" dependencies = [ "liborbital", "mesa", "zlib", ] script = """ DYNAMIC_INIT export LDFLAGS="${LDFLAGS} -lorbital -lOSMesa -lstdc++" COOKBOOK_CONFIGURE_FLAGS+=( --disable-pulseaudio --disable-video-x11 --enable-audio --enable-dummyaudio --enable-redoxaudio --enable-threads --enable-video-orbital ) cookbook_configure # Hack to add OSMesa sed -i "s/Requires:/Requires: osmesa >= 8.0.0/" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/sdl2.pc" """ ================================================ FILE: recipes/libs/sdl2-gfx/recipe.toml ================================================ [source] tar = "http://www.ferzkopp.net/Software/SDL2_gfx/SDL2_gfx-1.0.4.tar.gz" blake3 = "2e9bd2dc0f004349b51418f33219ebf5cd69f25ed0ba660373652a662cbb857c" script = """ GNU_CONFIG_GET config.sub """ [build] dependencies = [ "freetype2", "liborbital", "libpng", "mesa", "sdl2", "zlib", ] template = "custom" script = """ DYNAMIC_INIT export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lpng -lz -lm -lpthread -lstdc++" COOKBOOK_CONFIGURE_FLAGS+=( --disable-sdltest ) cookbook_configure """ ================================================ FILE: recipes/libs/sdl2-image/recipe.toml ================================================ [source] tar = "https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.4.tar.gz" [build] template = "custom" dependencies = [ "libjpeg", "liborbital", "libpng", "mesa", "sdl2", "zlib", ] script = """ DYNAMIC_INIT export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++" COOKBOOK_CONFIGURE_FLAGS=( --prefix=/usr --host="${TARGET}" --disable-sdltest --enable-shared --enable-png --enable-jpg ) cookbook_configure """ ================================================ FILE: recipes/libs/sdl2-mixer/recipe.toml ================================================ [source] tar = "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.8.1.tar.gz" blake3 = "fa0798ce7ffdb5f89545311292374e5b7af479df8bc99a4aacfb40d2ab2f8384" [build] template = "custom" dependencies = [ "sdl2", "liborbital", "mesa", "zlib", "libogg", "libvorbis", ] script = """ DYNAMIC_INIT export SDL_LIBS="-lSDL2 -lorbital -lOSMesa -lvorbis -logg -lz -lm -lpthread -lstdc++" COOKBOOK_CONFIGURE_FLAGS=( --prefix=/ --host="${TARGET}" --disable-sdltest --enable-music-ogg --disable-music-cmd --disable-music-mp3 --disable-smpegtest --disable-music-midi --disable-music-mod ) cookbook_configure """ ================================================ FILE: recipes/libs/sdl2-mixer/redox.patch ================================================ diff -ruw source/Makefile.in source-new/Makefile.in --- source/Makefile.in 2018-10-31 08:58:59.000000000 -0600 +++ source-new/Makefile.in 2019-06-19 15:23:18.015149749 -0600 @@ -65,10 +65,10 @@ $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET) - $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS) + $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS) --static $(objects)/playmus$(EXE): $(objects)/playmus.lo $(objects)/$(TARGET) - $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS) + $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS) --static install: all install-hdrs install-lib #install-bin install-hdrs: ================================================ FILE: recipes/libs/sdl2-ttf/recipe.toml ================================================ [source] tar = "https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz" blake3 = "9814a07f33a3501b414f0fc7fa962e7d7ffc56748406f3798b7698b8d7e7fe12" script = """ DYNAMIC_INIT ./autogen.sh """ [build] dependencies = [ "expat", "freetype2", "libdrm", "liborbital", "libpng", "mesa", "sdl2", "zlib", ] template = "custom" script = """ DYNAMIC_INIT export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lpng -lz -lm -lpthread -lstdc++" COOKBOOK_CONFIGURE_FLAGS+=( --disable-sdltest --enable-opengl ) cookbook_configure """ ================================================ FILE: recipes/libs/termcap/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz" [build] template = "custom" script = """ DYNAMIC_STATIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --prefix="${COOKBOOK_STAGE}/usr" ) cookbook_configure """ ================================================ FILE: recipes/libs/unibilium/recipe.toml ================================================ [source] tar = "https://github.com/neovim/unibilium/archive/refs/tags/v2.1.2.tar.gz" blake3 = "856a7593a412942f4716bb55bfdd225f3ce92cb013b9d4a44693255f0570b1c7" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ cookbook_configure """ ================================================ FILE: recipes/libs/utf8proc/recipe.toml ================================================ [source] tar = "https://github.com/JuliaStrings/utf8proc/archive/refs/tags/v2.10.0.tar.gz" blake3 = "6f675db5d1ae55ad0825351ba9c58a5b5c24c862f559cc7bfed1cb63c1185594" [build] template = "cmake" ================================================ FILE: recipes/libs/zlib/recipe.toml ================================================ [source] tar = "https://www.zlib.net/fossils/zlib-1.3.tar.gz" blake3 = "ec1abc6f672a7a6ee6f49ba544cc9529f73121b478310473be44fee22a140ebf" [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS=(--prefix="/usr") if [ "${COOKBOOK_DYNAMIC}" == "1" ] then COOKBOOK_CONFIGURE_FLAGS+=(--shared) else COOKBOOK_CONFIGURE_FLAGS+=(--static) fi # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. env CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j "$(nproc)" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" solib="${COOKBOOK_STAGE}/usr/lib/libz.so.1.3" if [ -e "${solib}" ] then patchelf --set-soname 'libz.so.1.3' "${solib}" fi """ ================================================ FILE: recipes/math/orbcalculator/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/orbcalculator.git" [build] template = "cargo" ================================================ FILE: recipes/net/download/curl/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/curl.git" branch = "redox-8.6" upstream = "https://github.com/curl/curl.git" [build] template = "cmake" dependencies = [ #TODO: git fails to build when this is a dependency: "libpsl", "nghttp2", "openssl3", "zlib", ] cmakeflags = [ "-DCURL_DISABLE_FTP=On", "-DCURL_DISABLE_TFTP=On", "-DENABLE_IPV6=Off", "-DCURL_DISABLE_NTLM=On", "-DENABLE_THREADED_RESOLVER=Off", "-DCURL_CA_PATH=/etc/ssl/certs", "-DUSE_NGHTTP2=On", "-DCURL_USE_OPENSSL=On", "-DUSE_ZLIB=On", "-DCURL_USE_LIBPSL=Off", ] [package] dependencies = [ "ca-certificates" ] ================================================ FILE: recipes/net/download/wget/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.gz" [build] dependencies = [ "openssl3", ] template = "configure" configureflags = [ "--with-ssl=openssl" ] ================================================ FILE: recipes/net/http/simple-http-server/recipe.toml ================================================ [source] git = "https://github.com/TheWaWaR/simple-http-server" [build] template = "custom" dependencies = [ "openssl1", ] script = """ DYNAMIC_INIT cookbook_cargo """ ================================================ FILE: recipes/net/nginx/recipe.toml ================================================ #TODO FastCGI not working [source] tar = "https://nginx.org/download/nginx-1.28.0.tar.gz" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "pcre", "openssl3", "zlib", ] script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}"/* ./ ARCH="${TARGET%%-*}" COOKBOOK_CONFIGURE_FLAGS=( --crossbuild=Redox:$ARCH --with-cc="$CC" --with-cc-opt="$CFLAGS $CPPFLAGS" --with-ld-opt="$LDFLAGS" --sbin-path=/usr/bin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --http-scgi-temp-path=/var/lib/nginx/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-compat --with-debug --with-pcre --with-pcre-jit --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-http_ssl_module --with-http_v2_module --with-http_v3_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_addition_module ) unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP cookbook_configure mkdir -p "$COOKBOOK_STAGE"/var/lib/nginx/{body,proxy,fastcgi,uwsgi,scgi} \ "$COOKBOOK_STAGE"/var/log/nginx/ #TODO: pkgar don't track empty directories touch "$COOKBOOK_STAGE"/var/lib/nginx/{body,proxy,fastcgi,uwsgi,scgi}/.tmp \ "$COOKBOOK_STAGE"/var/log/nginx/.tmp """ ================================================ FILE: recipes/net/nginx/redox.patch ================================================ diff -ruwN source/auto/cc/clang source-new/auto/cc/clang --- source/auto/cc/clang 2025-04-23 18:48:54.000000000 +0700 +++ source-new/auto/cc/clang 2026-02-24 07:55:59.340299231 +0700 @@ -88,9 +88,6 @@ CFLAGS="$CFLAGS -Wno-deprecated-declarations" fi -# stop on warning -CFLAGS="$CFLAGS -Werror" - # debug CFLAGS="$CFLAGS -g" diff -ruwN source/auto/cc/gcc source-new/auto/cc/gcc --- source/auto/cc/gcc 2025-04-23 18:48:54.000000000 +0700 +++ source-new/auto/cc/gcc 2026-02-24 07:56:03.156908192 +0700 @@ -165,9 +165,6 @@ esac -# stop on warning -CFLAGS="$CFLAGS -Werror" - # debug CFLAGS="$CFLAGS -g" diff -ruwN source/auto/feature source-new/auto/feature --- source/auto/feature 2025-04-23 18:48:54.000000000 +0700 +++ source-new/auto/feature 2025-09-16 02:44:58.617532926 +0700 @@ -53,7 +53,7 @@ yes) # /bin/sh is used to intercept "Killed" or "Abort trap" messages - if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then + #if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then echo " found" ngx_found=yes @@ -61,9 +61,9 @@ have=$ngx_have_feature . auto/have fi - else - echo " found but is not working" - fi + #else + # echo " found but is not working" + #fi ;; value) diff -ruwN source/auto/types/sizeof source-new/auto/types/sizeof --- source/auto/types/sizeof 2025-04-23 18:48:54.000000000 +0700 +++ source-new/auto/types/sizeof 2025-09-16 02:44:58.618532943 +0700 @@ -33,7 +33,7 @@ END -ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ +ngx_test="gcc $CC_TEST_FLAGS $CC_AUX_FLAGS \ -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" diff -ruwN source/auto/types/typedef source-new/auto/types/typedef --- source/auto/types/typedef 2025-04-23 18:48:54.000000000 +0700 +++ source-new/auto/types/typedef 2025-09-16 02:44:58.618532943 +0700 @@ -34,7 +34,7 @@ END - ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ + ngx_test="gcc $CC_TEST_FLAGS $CC_AUX_FLAGS \ -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" diff -ruwN source/src/os/unix/ngx_process.c source-new/src/os/unix/ngx_process.c --- source/src/os/unix/ngx_process.c 2025-04-23 18:48:54.000000000 +0700 +++ source-new/src/os/unix/ngx_process.c 2025-09-16 02:44:58.618532943 +0700 @@ -143,6 +143,7 @@ } on = 1; + /* if (ioctl(ngx_processes[s].channel[0], FIOASYNC, &on) == -1) { ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, "ioctl(FIOASYNC) failed while spawning \"%s\"", name); @@ -156,6 +157,7 @@ ngx_close_channel(ngx_processes[s].channel, cycle->log); return NGX_INVALID_PID; } + */ if (fcntl(ngx_processes[s].channel[0], F_SETFD, FD_CLOEXEC) == -1) { ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, diff -ruwN source/src/os/unix/ngx_process_cycle.c source-new/src/os/unix/ngx_process_cycle.c --- source/src/os/unix/ngx_process_cycle.c 2025-04-23 18:48:54.000000000 +0700 +++ source-new/src/os/unix/ngx_process_cycle.c 2025-09-27 02:17:21.509383985 +0700 @@ -804,11 +804,13 @@ exit(2); } + /* if (initgroups(ccf->username, ccf->group) == -1) { ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, "initgroups(%s, %d) failed", ccf->username, ccf->group); } + */ #if (NGX_HAVE_PR_SET_KEEPCAPS && NGX_HAVE_CAPABILITIES) if (ccf->transparent && ccf->user) { ================================================ FILE: recipes/net/openssh/recipe.toml ================================================ #TODO lack of resolv.h, expect dns not working #TODO lack of utmpx.h, expect no way to track login in sshd [source] tar = "https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz" patches = [ "redox.patch", ] [build] template = "custom" dependencies = [ "openssl3", "zlib", "zstd", ] script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --disable-strip --sysconfdir=/etc/ssh ) export CFLAGS+=" -DSYSTEMD_NOTIFY=1" cookbook_configure mv "${COOKBOOK_STAGE}"/usr/sbin/sshd "${COOKBOOK_STAGE}"/usr/bin/sshd rmdir "${COOKBOOK_STAGE}"/usr/sbin # Extracted from `make host-key-force` # TODO: Postscript to generate this # ssh-keygen -t dsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_dsa_key -N "" # ssh-keygen -t rsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_rsa_key -N "" # ssh-keygen -t ed25519 -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_ed25519_key -N "" # ssh-keygen -t ecdsa -f "${COOKBOOK_STAGE}"/etc/ssh/ssh_host_ecdsa_key -N "" CONFIG_FILE="${COOKBOOK_STAGE}"/etc/ssh/sshd_config # ipv6 is not working yet sed -i "s/#AddressFamily any/AddressFamily inet/g" "${CONFIG_FILE}" """ ================================================ FILE: recipes/net/openssh/redox.patch ================================================ diff -ruwN source/configure source-new/configure --- source/configure 2024-07-01 11:36:28.000000000 +0700 +++ source-new/configure 2025-09-06 23:54:58.147442355 +0700 @@ -12606,6 +12606,10 @@ printf "%s\n" "#define BROKEN_POLL 1" >>confdefs.h ;; +*-*-redox) + + # todo + ;; mips-sony-bsd|mips-sony-newsos4) printf "%s\n" "#define NEED_SETPGRP 1" >>confdefs.h diff -ruwN source/defines.h source-new/defines.h --- source/defines.h 2024-07-01 11:36:28.000000000 +0700 +++ source-new/defines.h 2025-09-07 01:35:40.209700338 +0700 @@ -52,6 +52,18 @@ #define IPPORT_RESERVED 0 #endif +#ifndef IPPORT_RESERVED +#define IPPORT_RESERVED 1024 +#endif + +#ifndef IN_LOOPBACKNET +#define IN_LOOPBACKNET 127 +#endif + +#ifndef MAXDNAME +#define MAXDNAME 256 +#endif + /* * Definitions for IP type of service (ip_tos) */ @@ -454,19 +466,21 @@ # define _PATH_DEVNULL "/dev/null" #endif -/* user may have set a different path */ -#if defined(_PATH_MAILDIR) && defined(MAIL_DIRECTORY) -# undef _PATH_MAILDIR -#endif /* defined(_PATH_MAILDIR) && defined(MAIL_DIRECTORY) */ - -#ifdef MAIL_DIRECTORY -# define _PATH_MAILDIR MAIL_DIRECTORY +#ifndef _PATH_MAILDIR +# define _PATH_MAILDIR "/var/mail" #endif #ifndef _PATH_NOLOGIN # define _PATH_NOLOGIN "/etc/nologin" #endif +#ifndef ST_RDONLY +#define ST_RDONLY 1 +#endif +#ifndef ST_NOSUID +#define ST_NOSUID 2 +#endif + /* Define this to be the path of the xauth program. */ #ifdef XAUTH_PATH #define _PATH_XAUTH XAUTH_PATH diff -ruwN source/hostfile.c source-new/hostfile.c --- source/hostfile.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/hostfile.c 2025-09-06 21:09:36.555438339 +0700 @@ -44,7 +44,9 @@ #include #include +#ifndef __redox__ #include +#endif #include #include #include diff -ruwN source/loginrec.c source-new/loginrec.c --- source/loginrec.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/loginrec.c 2025-09-06 21:09:36.556438304 +0700 @@ -1033,7 +1033,7 @@ return (0); } # else - if (!utmpx_write_direct(li, &ut)) { + if (!utmpx_write_direct(li, &utx)) { logit("%s: utmp_write_direct() failed", __func__); return (0); } diff -ruwN source/loginrec.h source-new/loginrec.h --- source/loginrec.h 2024-07-01 11:36:28.000000000 +0700 +++ source-new/loginrec.h 2025-09-06 21:09:36.556438304 +0700 @@ -30,6 +30,7 @@ **/ #include "includes.h" +#include "openbsd-compat/utmpx.h" struct ssh; diff -ruwN source/misc.c source-new/misc.c --- source/misc.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/misc.c 2025-09-07 01:21:42.201992304 +0700 @@ -2843,7 +2843,6 @@ error("%s: dup2: %s", tag, strerror(errno)); _exit(1); } - closefrom(STDERR_FILENO + 1); if (geteuid() == 0 && initgroups(pw->pw_name, pw->pw_gid) == -1) { diff -ruwN source/monitor.c source-new/monitor.c --- source/monitor.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/monitor.c 2025-09-07 00:46:23.435378053 +0700 @@ -484,18 +484,19 @@ pfd[0].events = POLLIN; pfd[1].fd = pmonitor->m_log_recvfd; pfd[1].events = pfd[1].fd == -1 ? 0 : POLLIN; - if (poll(pfd, pfd[1].fd == -1 ? 1 : 2, -1) == -1) { + // redox can't handle timeout -1 (the poll stuck) + if (poll(pfd, pfd[1].fd == -1 ? 1 : 2, 1000) == -1) { if (errno == EINTR || errno == EAGAIN) continue; fatal_f("poll: %s", strerror(errno)); } if (pfd[1].revents) { + /* * Drain all log messages before processing next * monitor request. */ monitor_read_log(pmonitor); - continue; } if (pfd[0].revents) break; /* Continues below */ @@ -1577,7 +1578,8 @@ res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); if (res == 0) goto error; - pty_setowner(authctxt->pw, s->tty); + // non sense in redox + // pty_setowner(authctxt->pw, s->tty); if ((r = sshbuf_put_u32(m, 1)) != 0 || (r = sshbuf_put_cstring(m, s->tty)) != 0) diff -ruwN source/openbsd-compat/bsd-statvfs.h source-new/openbsd-compat/bsd-statvfs.h --- source/openbsd-compat/bsd-statvfs.h 2024-07-01 11:36:28.000000000 +0700 +++ source-new/openbsd-compat/bsd-statvfs.h 2025-09-06 21:09:36.556438304 +0700 @@ -37,13 +37,6 @@ typedef unsigned long fsfilcnt_t; #endif -#ifndef ST_RDONLY -#define ST_RDONLY 1 -#endif -#ifndef ST_NOSUID -#define ST_NOSUID 2 -#endif - /* as defined in IEEE Std 1003.1, 2004 Edition */ struct statvfs { unsigned long f_bsize; /* File system block size. */ diff -ruwN source/openbsd-compat/getrrsetbyname.c source-new/openbsd-compat/getrrsetbyname.c --- source/openbsd-compat/getrrsetbyname.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/openbsd-compat/getrrsetbyname.c 2025-09-06 21:09:36.556438304 +0700 @@ -67,6 +67,52 @@ #endif #define _THREAD_PRIVATE(a,b,c) (c) +#ifdef __redox__ + +#include +#include + +/* + * Minimalist replacement for for systems that lack it, + * such as Redox OS. This provides the basic structures needed by + * the OpenSSH compatibility layer. + */ + +// Define necessary constants +#define MAXNS 3 /* max # name servers we'll track */ +#define MAXDNSRCH 6 /* max # domains in search path */ +#define MAXRESOLVSORT 10 /* number of nets to sort on */ +#define MAXDNAME 256 /* max length of a domain name */ + +/* + * A simplified, portable version of the resolver state structure. + * Glibc-specific fields, hooks, and complex unions have been removed. + */ +struct __res_state { + int retrans; /* retransmission time interval */ + int retry; /* number of times to retransmit */ + unsigned long options; /* option flags */ + int nscount; /* number of name servers */ + struct sockaddr_in nsaddr_list[MAXNS]; /* address of name servers */ + unsigned short id; /* current message id */ + char *dnsrch[MAXDNSRCH + 1]; /* components of domain to search */ + char defdname[MAXDNAME]; /* default domain name */ + + struct { + struct in_addr addr; + uint32_t mask; + } sort_list[MAXRESOLVSORT]; + + int res_h_errno; /* last error code for this context */ + + // Simplified bitfields, removing glibc internals + unsigned ndots : 4; /* threshold for initial abs. query */ + unsigned nsort : 4; /* number of elements in sort_list[] */ +}; + +typedef struct __res_state *res_state; +#endif /* __redox */ + #ifndef HAVE__RES_EXTERN struct __res_state _res; #endif @@ -167,6 +213,24 @@ struct dns_rr *next; }; +#ifdef __redox__ +typedef struct { + uint16_t id; + uint8_t rd : 1; + uint8_t tc : 1; + uint8_t aa : 1; + uint8_t opcode : 4; + uint8_t qr : 1; + uint8_t rcode : 4; + uint8_t z : 3; + uint8_t ra : 1; + uint16_t qdcount; + uint16_t ancount; + uint16_t nscount; + uint16_t arcount; +} HEADER; +#endif + struct dns_response { HEADER header; struct dns_query *query; @@ -221,10 +285,10 @@ } /* initialize resolver */ - if ((_resp->options & RES_INIT) == 0 && res_init() == -1) { + // if (res_init() == -1) { result = ERRSET_FAIL; goto fail; - } + // } #ifdef DEBUG _resp->options |= RES_DEBUG; @@ -482,12 +546,12 @@ prev->next = curr; /* name */ - length = dn_expand(answer, answer + size, *cp, name, - sizeof(name)); - if (length < 0) { + // length = dn_expand(answer, answer + size, *cp, name, + // sizeof(name)); + // if (length < 0) { free_dns_query(head); return (NULL); - } + // } curr->name = strdup(name); if (curr->name == NULL) { free_dns_query(head); @@ -542,12 +606,12 @@ prev->next = curr; /* name */ - length = dn_expand(answer, answer + size, *cp, name, - sizeof(name)); - if (length < 0) { + // length = dn_expand(answer, answer + size, *cp, name, + // sizeof(name)); + // if (length < 0) { free_dns_rr(head); return (NULL); - } + // } curr->name = strdup(name); if (curr->name == NULL) { free_dns_rr(head); diff -ruwN source/openbsd-compat/getrrsetbyname.h source-new/openbsd-compat/getrrsetbyname.h --- source/openbsd-compat/getrrsetbyname.h 2024-07-01 11:36:28.000000000 +0700 +++ source-new/openbsd-compat/getrrsetbyname.h 2025-09-06 21:09:36.557438268 +0700 @@ -54,9 +54,13 @@ #include #include +#ifndef __redox__ #include +#endif #include +#ifndef __redox__ #include +#endif #ifndef HFIXEDSZ #define HFIXEDSZ 12 diff -ruwN source/openbsd-compat/inet_ntop.c source-new/openbsd-compat/inet_ntop.c --- source/openbsd-compat/inet_ntop.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/openbsd-compat/inet_ntop.c 2025-09-06 21:09:36.557438268 +0700 @@ -26,7 +26,9 @@ #include #include #include +#ifndef __redox__ #include +#endif #include #include #include diff -ruwN source/openbsd-compat/openbsd-compat.h source-new/openbsd-compat/openbsd-compat.h --- source/openbsd-compat/openbsd-compat.h 2024-07-01 11:36:28.000000000 +0700 +++ source-new/openbsd-compat/openbsd-compat.h 2025-09-06 21:09:36.557438268 +0700 @@ -36,6 +36,8 @@ #include /* for wchar_t */ +#include "getopt.h" + /* OpenBSD function replacements */ #include "base64.h" #include "sigact.h" diff -ruwN source/openbsd-compat/utmpx.c source-new/openbsd-compat/utmpx.c --- source/openbsd-compat/utmpx.c 1970-01-01 07:00:00.000000000 +0700 +++ source-new/openbsd-compat/utmpx.c 2025-09-06 21:09:36.557438268 +0700 @@ -0,0 +1,13 @@ +#include "utmpx.h" +#include // For NULL + +#ifdef __redox__ + +void endutxent(void) { /* Do nothing */ } +struct utmpx *getutxent(void) { return NULL; } +struct utmpx *getutxid(const struct utmpx *ut) { return NULL; } +struct utmpx *getutxline(const struct utmpx *ut) { return NULL; } +struct utmpx *pututxline(const struct utmpx *ut) { return NULL; } +void setutxent(void) { /* Do nothing */ } + +#endif \ No newline at end of file diff -ruwN source/openbsd-compat/utmpx.h source-new/openbsd-compat/utmpx.h --- source/openbsd-compat/utmpx.h 1970-01-01 07:00:00.000000000 +0700 +++ source-new/openbsd-compat/utmpx.h 2025-09-06 21:09:36.557438268 +0700 @@ -0,0 +1,69 @@ +#ifndef _COMPAT_UTMPX_H +#define _COMPAT_UTMPX_H +#ifdef __redox__ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This header provides a POSIX-compliant definition of the utmpx structure + * and related functions for systems that lack a native , such as Redox OS. + */ + +// Define standard sizes for character arrays, based on common practice (e.g., Linux) +#define UT_LINESIZE 32 +#define UT_NAMESIZE 32 +#define UT_HOSTSIZE 256 +#define UT_IDSIZE 4 + +/* + * The utmpx structure, containing user accounting information. + */ +struct utmpx { + char ut_user[UT_NAMESIZE]; /* User login name */ + char ut_id[UT_IDSIZE]; /* Unspecified terminal id */ + char ut_line[UT_LINESIZE]; /* Device name of tty */ + pid_t ut_pid; /* Process ID */ + short ut_type; /* Type of entry */ + struct timeval ut_tv; /* Time entry was made */ + // Non-standard but very common fields, often needed for compatibility + char ut_host[UT_HOSTSIZE]; /* Host name for remote login */ + // Padding to align the structure, if necessary + char __padding[16]; +}; + +/* + * Symbolic constants for the ut_type field. + */ +#define EMPTY 0 /* No valid user accounting information */ +#define BOOT_TIME 1 /* Time of system boot */ +#define OLD_TIME 2 /* Time when system clock changed */ +#define NEW_TIME 3 /* Time after system clock changed */ +#define USER_PROCESS 4 /* A user process */ +#define INIT_PROCESS 5 /* A process spawned by the init process */ +#define LOGIN_PROCESS 6 /* The session leader of a logged-in user */ +#define DEAD_PROCESS 7 /* A session leader who has exited */ + +/* + * Function prototypes for utmpx database manipulation. + * + * NOTE: These are stubs. Since Redox OS does not have a utmp/utmpx + * database, these functions won't have a real implementation. They + * are declared here to satisfy the linker. + */ +void endutxent(void); +struct utmpx *getutxent(void); +struct utmpx *getutxid(const struct utmpx *); +struct utmpx *getutxline(const struct utmpx *); +struct utmpx *pututxline(const struct utmpx *); +void setutxent(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __redox__ */ +#endif /* _COMPAT_UTMPX_H */ \ No newline at end of file diff -ruwN source/readconf.c source-new/readconf.c --- source/readconf.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/readconf.c 2025-09-07 01:21:42.201992304 +0700 @@ -554,7 +554,6 @@ if (stdfd_devnull(1, 1, 0) == -1) fatal_f("stdfd_devnull failed"); - closefrom(STDERR_FILENO + 1); argv[0] = shell; argv[1] = "-c"; diff -ruwN source/readpass.c source-new/readpass.c --- source/readpass.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/readpass.c 2025-09-07 01:21:42.201992304 +0700 @@ -278,7 +278,6 @@ if (pid == 0) { if (stdfd_devnull(1, 1, 0) == -1) fatal_f("stdfd_devnull failed"); - closefrom(STDERR_FILENO + 1); setenv("SSH_ASKPASS_PROMPT", "none", 1); /* hint to UI */ execlp(askpass, askpass, prompt, (char *)NULL); error_f("exec(%s): %s", askpass, strerror(errno)); diff -ruwN source/regress/netcat.c source-new/regress/netcat.c --- source/regress/netcat.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/regress/netcat.c 2025-09-06 21:09:36.558438233 +0700 @@ -1384,7 +1384,9 @@ #include #include #include +#ifndef __redox__ #include +#endif #define SOCKS_PORT "1080" #define HTTP_PROXY_PORT "3128" diff -ruwN source/session.c source-new/session.c --- source/session.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/session.c 2025-09-07 01:22:43.637928015 +0700 @@ -1365,10 +1365,12 @@ exit(1); } /* Initialize the group list. */ +#ifndef __redox__ if (initgroups(pw->pw_name, pw->pw_gid) < 0) { perror("initgroups"); exit(1); } +#endif endgrent(); #endif @@ -1490,7 +1492,6 @@ * initgroups, because at least on Solaris 2.3 it leaves file * descriptors open. */ - closefrom(STDERR_FILENO + 1); } /* @@ -1624,7 +1625,6 @@ exit(1); } - closefrom(STDERR_FILENO + 1); do_rc_files(ssh, s, shell); diff -ruwN source/sshbuf-misc.c source-new/sshbuf-misc.c --- source/sshbuf-misc.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/sshbuf-misc.c 2025-09-06 21:09:36.559438198 +0700 @@ -28,7 +28,9 @@ #include #include #include +#ifndef __redox__ #include +#endif #include #include diff -ruwN source/ssh.c source-new/ssh.c --- source/ssh.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/ssh.c 2025-09-07 01:22:43.638928030 +0700 @@ -689,7 +689,6 @@ * Discard other fds that are hanging around. These can cause problem * with backgrounded ssh processes started by ControlPersist. */ - closefrom(STDERR_FILENO + 1); __progname = ssh_get_progname(av[0]); diff -ruwN source/sshconnect2.c source-new/sshconnect2.c --- source/sshconnect2.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/sshconnect2.c 2025-09-07 01:22:58.683157171 +0700 @@ -2057,7 +2057,6 @@ sock = STDERR_FILENO + 1; if (fcntl(sock, F_SETFD, 0) == -1) /* keep the socket on exec */ debug3_f("fcntl F_SETFD: %s", strerror(errno)); - closefrom(sock + 1); debug3_f("[child] pid=%ld, exec %s", (long)getpid(), _PATH_SSH_KEY_SIGN); diff -ruwN source/sshd.c source-new/sshd.c --- source/sshd.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/sshd.c 2025-09-07 01:39:34.681252169 +0700 @@ -1222,7 +1222,7 @@ debug("setgroups(): %.200s", strerror(errno)); /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */ - sanitise_stdfd(); + // sanitise_stdfd(); /* Initialize configuration options to their default values. */ initialize_server_options(&options); @@ -1344,7 +1344,6 @@ if (!test_flag && !do_dump_cfg && !path_absolute(av[0])) fatal("sshd requires execution with an absolute path"); - closefrom(STDERR_FILENO + 1); /* Reserve fds we'll need later for reexec things */ if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1) @@ -1482,13 +1481,13 @@ options.host_key_files[i]); key->sk_flags &= ~SSH_SK_USER_PRESENCE_REQD; } - if (r == 0 && key != NULL && - (r = sshkey_shield_private(key)) != 0) { - do_log2_r(r, ll, "Unable to shield host key \"%s\"", - options.host_key_files[i]); - sshkey_free(key); - key = NULL; - } + // if (r == 0 && key != NULL && + // (r = sshkey_shield_private(key)) != 0) { + // do_log2_r(r, ll, "Unable to shield host key \"%s\"", + // options.host_key_files[i]); + // sshkey_free(key); + // key = NULL; + // } if ((r = sshkey_load_public(options.host_key_files[i], &pubkey, NULL)) != 0 && r != SSH_ERR_SYSTEM_ERROR) do_log2_r(r, ll, "Unable to load host key \"%s\"", @@ -1600,8 +1599,7 @@ } /* Ensure privsep directory is correctly configured. */ - need_chroot = ((getuid() == 0 || geteuid() == 0) || - options.kerberos_authentication); + need_chroot = 0;// ((getuid() == 0 || geteuid() == 0) || options.kerberos_authentication); if ((getpwnam(SSH_PRIVSEP_USER)) == NULL && need_chroot) { fatal("Privilege separation user %s does not exist", SSH_PRIVSEP_USER); @@ -1773,7 +1771,7 @@ close(startup_pipe); } log_redirect_stderr_to(NULL); - closefrom(REEXEC_MIN_FREE_FD); + // closefrom(REEXEC_MIN_FREE_FD); ssh_signal(SIGHUP, SIG_IGN); /* avoid reset to SIG_DFL */ execv(rexec_argv[0], rexec_argv); diff -ruwN source/sshd-session.c source-new/sshd-session.c --- source/sshd-session.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/sshd-session.c 2025-09-06 21:15:43.796191268 +0700 @@ -1031,7 +1031,7 @@ if (!rexeced_flag) fatal("sshd-session should not be executed directly"); - closefrom(REEXEC_MIN_FREE_FD); + // closefrom(REEXEC_MIN_FREE_FD); seed_rng(); @@ -1073,7 +1073,7 @@ options.timing_secret = timing_secret; /* Store privilege separation user for later use if required. */ - privsep_chroot = (getuid() == 0 || geteuid() == 0); + privsep_chroot = 0;// (getuid() == 0 || geteuid() == 0); if ((privsep_pw = getpwnam(SSH_PRIVSEP_USER)) == NULL) { if (privsep_chroot || options.kerberos_authentication) fatal("Privilege separation user %s does not exist", diff -ruwN source/sshkey.c source-new/sshkey.c --- source/sshkey.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/sshkey.c 2025-09-06 21:09:36.567437916 +0700 @@ -43,7 +43,9 @@ #include #include #include +#ifndef __redox__ #include +#endif #include #ifdef HAVE_UTIL_H #include diff -ruwN source/ssh-sk-client.c source-new/ssh-sk-client.c --- source/ssh-sk-client.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/ssh-sk-client.c 2025-09-07 01:21:42.201992304 +0700 @@ -91,7 +91,6 @@ } close(pair[0]); close(pair[1]); - closefrom(STDERR_FILENO + 1); debug_f("starting %s %s", helper, verbosity == NULL ? "" : verbosity); execlp(helper, helper, verbosity, (char *)NULL); diff -ruwN source/ssh-sk-helper.c source-new/ssh-sk-helper.c --- source/ssh-sk-helper.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/ssh-sk-helper.c 2025-09-07 01:22:43.638928030 +0700 @@ -303,7 +303,6 @@ * Rearrange our file descriptors a little; we don't trust the * providers not to fiddle with stdin/out. */ - closefrom(STDERR_FILENO + 1); if ((in = dup(STDIN_FILENO)) == -1 || (out = dup(STDOUT_FILENO)) == -1) fatal("%s: dup: %s", __progname, strerror(errno)); close(STDIN_FILENO); diff -ruwN source/uidswap.c source-new/uidswap.c --- source/uidswap.c 2024-07-01 11:36:28.000000000 +0700 +++ source-new/uidswap.c 2025-09-07 00:01:52.531094834 +0700 @@ -37,7 +37,7 @@ * POSIX saved uids or not. */ -#if defined(_POSIX_SAVED_IDS) && !defined(BROKEN_SAVED_UIDS) +#if !defined(BROKEN_SAVED_UIDS) /* Lets assume that posix saved ids also work with seteuid, even though that is not part of the posix specification. */ #define SAVED_IDS_WORK_WITH_SETEUID @@ -83,6 +83,9 @@ privileged = 1; temporarily_use_uid_effective = 1; + // getgroups broken in redox +#ifndef __redox__ + saved_egroupslen = getgroups(0, NULL); if (saved_egroupslen == -1) fatal("getgroups: %.100s", strerror(errno)); @@ -119,6 +122,7 @@ /* Set the effective uid to the given (unprivileged) uid. */ if (setgroups(user_groupslen, user_groups) == -1) fatal("setgroups: %.100s", strerror(errno)); +#endif #ifndef SAVED_IDS_WORK_WITH_SETEUID /* Propagate the privileged gid to all of our gids. */ if (setgid(getegid()) == -1) @@ -168,8 +172,11 @@ fatal("%s: setgid failed: %s", __func__, strerror(errno)); #endif /* SAVED_IDS_WORK_WITH_SETEUID */ + // setgroups broken in redox +#ifndef __redox__ if (setgroups(saved_egroupslen, saved_egroups) == -1) fatal("setgroups: %.100s", strerror(errno)); +#endif temporarily_use_uid_effective = 0; } ================================================ FILE: recipes/net/redox-ssh/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/redox-ssh.git" [build] template = "cargo" ================================================ FILE: recipes/net/rsync/recipe.toml ================================================ [source] tar = "https://download.samba.org/pub/rsync/src/rsync-3.4.1.tar.gz" patches = ["redox.patch"] [build] template = "configure" dependencies = [ "zstd", "lz4", "openssl1", "xxhash", ] ================================================ FILE: recipes/net/rsync/redox.patch ================================================ diff -ruwN source/rsync.h source-new/rsync.h --- source/rsync.h 2025-01-16 02:21:54.000000000 +0700 +++ source-new/rsync.h 2025-09-08 12:18:06.427647717 +0700 @@ -483,6 +483,21 @@ #include #endif +#ifdef __redox__ + +// no sys/sysmacros.h, probably no problem +#include +#define major(dev) (0) +#define minor(dev) (0) +#define makedev(maj, min) (0) + +// no openat yet +#undef O_NOFOLLOW +#undef O_DIRECTORY +#undef AT_FDCWD + +#endif + #ifdef MAKEDEV_TAKES_3_ARGS #define MAKEDEV(devmajor,devminor) makedev(0,devmajor,devminor) #else ================================================ FILE: recipes/other/ca-certificates/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/ca-certificates.git" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/etc/ssl" cp -rv "${COOKBOOK_SOURCE}/certs" "${COOKBOOK_STAGE}/etc/ssl/certs" #TODO: remove deprecated location after all recipes are fixed ln -s etc/ssl "${COOKBOOK_STAGE}/ssl" """ ================================================ FILE: recipes/other/cookbook/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/redox.git" [build] template = "custom" script = """ cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/home/user/cookbook" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/cookbook" """ [package] # Dependencies below does not include Rust / GCC # because it will be downloaded as prefix binary. dependencies = [ "autoconf", "automake", "git", "cbindgen", "gnu-binutils", "gnu-grep", "gnu-make", "installer", "nasm", "pkg-config", "pkgar", "python312", "sed", "wget", ] ================================================ FILE: recipes/other/generaluser-gs/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/generaluser-gs.git" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/share/generaluser-gs" cp -Rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/usr/share/generaluser-gs" """ ================================================ FILE: recipes/other/jeremy/recipe.toml ================================================ # This is a private repository that sets up my user [source] git = "https://gitlab.redox-os.org/jackpot51/jeremy.git" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home" cp -rv "${COOKBOOK_SOURCE}" "${COOKBOOK_STAGE}/home/user" rm -rf "${COOKBOOK_STAGE}/home/user/.git" """ ================================================ FILE: recipes/other/myfiles/recipe.toml ================================================ [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user" """ ================================================ FILE: recipes/other/rustconf2025/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/rustconf2025.git" [build] template = "custom" script = """ mkdir -p "${COOKBOOK_STAGE}/home/user" cp -v "${COOKBOOK_SOURCE}/"*.pdf "${COOKBOOK_STAGE}/home/user" """ ================================================ FILE: recipes/other/shared-mime-info/recipe.toml ================================================ # This does not build update-mime-database to avoid bringing in C code to Redox [source] tar = "https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.4/shared-mime-info-2.4.tar.gz" blake3 = "ad130f2f923ab3d5455c643e6257abf3598339fdd134ad0fac4e5dbbbf070eb9" [build] template = "custom" script = """ mkdir -p "${COOKBOOK_STAGE}/usr/share/mime/packages" msgfmt --xml \ --template="${COOKBOOK_SOURCE}/data/freedesktop.org.xml.in" \ -d "${COOKBOOK_SOURCE}/po" \ -o "${COOKBOOK_STAGE}/usr/share/mime/packages/freedesktop.org.xml" update-mime-database -V "${COOKBOOK_STAGE}/usr/share/mime" mkdir -p "${COOKBOOK_STAGE}/usr/share/pkgconfig" cat > "${COOKBOOK_STAGE}/usr/share/pkgconfig/shared-mime-info.pc" <&/dev/null; then # We have color support; assume it's compliant with Ecma-48 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such # a case would tend to support setf rather than setaf.) color_prompt=yes else color_prompt= fi fi if [ "$color_prompt" = yes ]; then PS1='${redox_chroot:+($redox_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${redox_chroot:+($redox_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi # colored GCC warnings and errors #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' # some more ls aliases alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' # TODO # Add an "alert" alias for long running commands. Use like so: # sleep 10; alert # alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' # Alias definitions. # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if ! shopt -oq posix; then if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi ================================================ FILE: recipes/shells/bash/etc/skel/.profile ================================================ # ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package. #umask 022 # if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi ================================================ FILE: recipes/shells/bash/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz" blake3 = "c1548e3f2a9b6de5296e18c28b3d2007985e647273e03f039efd3e489edaa41f" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "termcap", ] script = """ # compiled statically COOKBOOK_CONFIGURE_FLAGS+=( bash_cv_func_sigsetjmp=no bash_cv_getenv_redef=no --enable-static-link # This ensures loadables are not built, which will fail ) COOKBOOK_MAKE_JOBS=1 # workaround for parallel make bugs cookbook_configure ln -s "bash" "${COOKBOOK_STAGE}/usr/bin/sh" cp -r "${COOKBOOK_RECIPE}/etc" "${COOKBOOK_STAGE}/etc" """ ================================================ FILE: recipes/shells/bash/redox.patch ================================================ diff -ruwN source/bashline.c source-new/bashline.c --- source/bashline.c 2022-04-18 05:37:12.000000000 +0700 +++ source-new/bashline.c 2025-09-01 04:36:35.272926519 +0700 @@ -2645,7 +2645,7 @@ const char *text; int state; { -#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GRP_H) +#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GRP_H) || defined(__redox__) return ((char *)NULL); #else static char *gname = (char *)NULL; diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def --- source/builtins/ulimit.def 2021-11-05 20:19:53.000000000 +0700 +++ source-new/builtins/ulimit.def 2025-09-01 04:36:35.272926519 +0700 @@ -609,7 +609,7 @@ } else { -#if defined (HAVE_RESOURCE) +#if defined (HAVE_RESOURCE) && !defined(__redox__) if (getrlimit (limits[ind].parameter, &limit) < 0) return -1; # if defined (HPUX9) diff -ruwN source/config-top.h source-new/config-top.h --- source/config-top.h 2021-11-05 20:11:12.000000000 +0700 +++ source-new/config-top.h 2025-09-19 21:55:55.439030906 +0700 @@ -199,3 +199,6 @@ /* Undefine or define to 0 if you don't want to allow associative array assignment using a compound list of key-value pairs. */ #define ASSOC_KVPAIR_ASSIGNMENT 1 + +/* Don't check for a valid inode number when pattern matching on Redox */ +#define BROKEN_DIRENT_D_INO 1 diff -ruwN source/configure source-new/configure --- source/configure 2022-09-23 21:13:22.000000000 +0700 +++ source-new/configure 2025-09-01 04:52:47.542177017 +0700 @@ -3298,6 +3298,7 @@ *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS *-genode*) opt_bash_malloc=no ;; # Genode has no sbrk +*-redox*) opt_bash_malloc=no ;; # Redox OS esac # memory scrambling on free() diff -ruwN source/configure.ac source-new/configure.ac --- source/configure.ac 2022-09-23 21:12:27.000000000 +0700 +++ source-new/configure.ac 2025-09-01 04:36:35.275926660 +0700 @@ -92,6 +92,7 @@ *-nsk*) opt_bash_malloc=no ;; # HP NonStop *-haiku*) opt_bash_malloc=no ;; # Haiku OS *-genode*) opt_bash_malloc=no ;; # Genode has no sbrk +*-redox*) opt_bash_malloc=no ;; # Redox OS esac # memory scrambling on free() diff -ruwN source/execute_cmd.c source-new/execute_cmd.c --- source/execute_cmd.c 2022-12-14 00:09:02.000000000 +0700 +++ source-new/execute_cmd.c 2025-09-01 04:36:35.275926660 +0700 @@ -1379,11 +1379,11 @@ nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); if (posixly_correct && nullcmd) { -#if defined (HAVE_GETRUSAGE) +#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) selfb.ru_utime.tv_sec = kidsb.ru_utime.tv_sec = selfb.ru_stime.tv_sec = kidsb.ru_stime.tv_sec = 0; selfb.ru_utime.tv_usec = kidsb.ru_utime.tv_usec = selfb.ru_stime.tv_usec = kidsb.ru_stime.tv_usec = 0; before = shellstart; -#else +#elif defined (HAVE_TIMES) before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0; tbefore = shell_start_time; #endif diff -ruwN source/general.c source-new/general.c --- source/general.c 2022-11-24 05:10:12.000000000 +0700 +++ source-new/general.c 2025-09-19 17:09:24.754782168 +0700 @@ -589,6 +589,7 @@ void check_dev_tty () { +#if !defined(__redox__) int tty_fd; char *tty; @@ -603,6 +604,7 @@ } if (tty_fd >= 0) close (tty_fd); +#endif } /* Return 1 if PATH1 and PATH2 are the same file. This is kind of diff -ruwN source/include/posixwait.h source-new/include/posixwait.h --- source/include/posixwait.h 2019-03-30 00:25:52.000000000 +0700 +++ source-new/include/posixwait.h 2025-09-01 04:36:35.276926707 +0700 @@ -34,7 +34,7 @@ /* How to get the status of a job. For Posix, this is just an int, but for other systems we have to crack the union wait. */ -#if !defined (_POSIX_VERSION) +#if 0 typedef union wait WAIT; # define WSTATUS(t) (t.w_status) #else /* _POSIX_VERSION */ @@ -50,7 +50,7 @@ /* More Posix P1003.1 definitions. In the POSIX versions, the parameter is passed as an `int', in the non-POSIX version, as `union wait'. */ -#if defined (_POSIX_VERSION) +#if 1 # if !defined (WSTOPSIG) # define WSTOPSIG(s) ((s) >> 8) diff --color -ruwN source/jobs.c source-new/jobs.c --- source/jobs.c 2022-12-14 00:09:02.000000000 +0700 +++ source-new/jobs.c 2026-02-09 23:29:28.811403291 +0700 @@ -4417,9 +4417,11 @@ { shell_pgrp = getpid (); setpgid (0, shell_pgrp); + } + + // shell pgrep is not set automatically on Redox if (shell_tty != -1) tcsetpgrp (shell_tty, shell_pgrp); - } tty_sigs = 0; while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1) diff -ruwN source/lib/readline/input.c source-new/lib/readline/input.c --- source/lib/readline/input.c 2022-04-09 02:43:24.000000000 +0700 +++ source-new/lib/readline/input.c 2025-09-01 04:36:35.276926707 +0700 @@ -805,7 +805,7 @@ int result; unsigned char c; int fd; -#if defined (HAVE_PSELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) sigset_t empty_set; fd_set readfds; #endif diff -ruwN source/lib/readline/terminal.c source-new/lib/readline/terminal.c --- source/lib/readline/terminal.c 2022-04-05 21:44:17.000000000 +0700 +++ source-new/lib/readline/terminal.c 2025-09-01 04:36:35.286927174 +0700 @@ -102,7 +102,7 @@ static int tcap_initialized; -#if !defined (__linux__) && !defined (NCURSES_VERSION) +#if !defined (__linux__) && !defined (NCURSES_VERSION) && !defined (__redox__) # if defined (__EMX__) || defined (NEED_EXTERN_PC) extern # endif /* __EMX__ || NEED_EXTERN_PC */ diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c --- source/lib/sh/getcwd.c 2012-03-10 22:48:50.000000000 +0700 +++ source-new/lib/sh/getcwd.c 2025-09-01 04:36:35.286927174 +0700 @@ -20,7 +20,7 @@ #include -#if !defined (HAVE_GETCWD) +#if !defined (HAVE_GETCWD) && !defined(__redox__) #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) #pragma alloca diff -ruwN source/lib/sh/input_avail.c source-new/lib/sh/input_avail.c --- source/lib/sh/input_avail.c 2021-05-24 22:16:33.000000000 +0700 +++ source-new/lib/sh/input_avail.c 2025-09-01 04:36:35.298927735 +0700 @@ -33,7 +33,7 @@ # include #endif /* HAVE_SYS_FILE_H */ -#if defined (HAVE_PSELECT) +#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) # include #endif diff -ruwN source/lib/sh/strtoimax.c source-new/lib/sh/strtoimax.c --- source/lib/sh/strtoimax.c 2021-09-10 21:32:35.000000000 +0700 +++ source-new/lib/sh/strtoimax.c 2025-09-01 04:36:35.301927876 +0700 @@ -55,6 +55,8 @@ extern long long strtoll PARAMS((const char *, char **, int)); #endif +#if !defined (__redox__) + #ifdef strtoimax #undef strtoimax #endif @@ -79,6 +81,8 @@ return (strtol (ptr, endptr, base)); } +#endif + #ifdef TESTING # include int diff -ruwN source/parse.y source-new/parse.y --- source/parse.y 2022-12-14 00:09:02.000000000 +0700 +++ source-new/parse.y 2025-09-01 04:36:35.302927923 +0700 @@ -2625,6 +2625,7 @@ parser_state |= PST_ENDALIAS; /* We need to do this to make sure last_shell_getc_is_singlebyte returns true, since we are returning a single-byte space. */ +#if defined (HANDLE_MULTIBYTE) if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) { #if 0 @@ -2638,6 +2639,7 @@ shell_input_line_property[shell_input_line_index - 1] = 1; #endif } +#endif /* HANDLE_MULTIBYTE */ return ' '; /* END_ALIAS */ } #endif diff -ruwN source/y.tab.c source-new/y.tab.c --- source/y.tab.c 2022-12-14 00:09:02.000000000 +0700 +++ source-new/y.tab.c 2025-09-01 04:36:35.307928157 +0700 @@ -4936,6 +4936,7 @@ parser_state |= PST_ENDALIAS; /* We need to do this to make sure last_shell_getc_is_singlebyte returns true, since we are returning a single-byte space. */ +#if defined (HANDLE_MULTIBYTE) if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) { #if 0 @@ -4949,6 +4950,7 @@ shell_input_line_property[shell_input_line_index - 1] = 1; #endif } +#endif /* HANDLE_MULTIBYTE */ return ' '; /* END_ALIAS */ } #endif ================================================ FILE: recipes/shells/nushell/recipe.toml ================================================ #TODO: Reduce crate patches [source] git = "https://github.com/nushell/nushell" rev = "172a070a4bbeff15a289813bc73d4628a3032210" patches = ["redox.patch"] [build] dependencies = [ "openssl1" ] template = "custom" script = """ DYNAMIC_INIT export OPENSSL_DIR="${COOKBOOK_SYSROOT}" cookbook_cargo """ ================================================ FILE: recipes/shells/nushell/redox.patch ================================================ diff --git a/Cargo.lock b/Cargo.lock index 96aeafeae..01486a61d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -180,14 +180,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df099ccb16cd014ff054ac1bf392c67feeef57164b05c42f037cd40f5d4357f4" dependencies = [ "clipboard-win", - "core-graphics", - "image", "log", - "objc2 0.5.2", + "objc2", "objc2-app-kit", "objc2-foundation", "parking_lot", - "windows-sys 0.48.0", "wl-clipboard-rs", "x11rb", ] @@ -884,16 +881,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2 0.5.2", -] - -[[package]] -name = "block2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" -dependencies = [ - "objc2 0.6.3", + "objc2", ] [[package]] @@ -987,12 +975,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" -[[package]] -name = "byteorder-lite" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" - [[package]] name = "bytes" version = "1.11.1" @@ -1438,30 +1420,6 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" -[[package]] -name = "core-graphics" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" -dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", - "core-graphics-types", - "foreign-types 0.5.0", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" -dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", - "libc", -] - [[package]] name = "cpufeatures" version = "0.2.17" @@ -1639,17 +1597,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "ctrlc" -version = "3.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73736a89c4aff73035ba2ed2e565061954da00d4970fc9ac25dcc85a2a20d790" -dependencies = [ - "dispatch2", - "nix 0.30.1", - "windows-sys 0.61.0", -] - [[package]] name = "curl" version = "0.4.47" @@ -1881,18 +1828,6 @@ dependencies = [ "windows-sys 0.61.0", ] -[[package]] -name = "dispatch2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" -dependencies = [ - "bitflags 2.10.0", - "block2 0.6.2", - "libc", - "objc2 0.6.3", -] - [[package]] name = "displaydoc" version = "0.2.5" @@ -2016,7 +1951,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e49905ece098e793ca21a019598e9efc9a66459ad1d76bd7619e771a42dae2fc" dependencies = [ - "arboard", "crossterm 0.29.0", "edit", "edtui-jagged", @@ -2228,26 +2162,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" -[[package]] -name = "fax" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" -dependencies = [ - "fax_derive", -] - -[[package]] -name = "fax_derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - [[package]] name = "fd-lock" version = "4.0.2" @@ -2259,15 +2173,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - [[package]] name = "file-id" version = "0.2.2" @@ -2408,28 +2313,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared 0.1.1", -] - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared 0.3.1", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", + "foreign-types-shared", ] [[package]] @@ -2438,12 +2322,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - [[package]] name = "form_urlencoded" version = "1.2.2" @@ -2711,17 +2589,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "half" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" -dependencies = [ - "cfg-if", - "crunchy", - "zerocopy 0.8.34", -] - [[package]] name = "halfbrown" version = "0.4.0" @@ -3154,20 +3021,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "image" -version = "0.25.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" -dependencies = [ - "bytemuck", - "byteorder-lite", - "moxcms", - "num-traits", - "png", - "tiff", -] - [[package]] name = "indexmap" version = "2.13.0" @@ -3932,7 +3785,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", - "simd-adler32", ] [[package]] @@ -3982,16 +3834,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "moxcms" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" -dependencies = [ - "num-traits", - "pxfm", -] - [[package]] name = "multipart-rs" version = "0.1.13" @@ -4119,7 +3961,6 @@ version = "0.110.1" dependencies = [ "assert_cmd", "crossterm 0.29.0", - "ctrlc", "dirs", "fancy-regex", "lexopt", @@ -5043,15 +4884,6 @@ dependencies = [ "objc2-encode", ] -[[package]] -name = "objc2" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" -dependencies = [ - "objc2-encode", -] - [[package]] name = "objc2-app-kit" version = "0.2.2" @@ -5059,9 +4891,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ "bitflags 2.10.0", - "block2 0.5.1", + "block2", "libc", - "objc2 0.5.2", + "objc2", "objc2-core-data", "objc2-core-image", "objc2-foundation", @@ -5075,8 +4907,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.10.0", - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-foundation", ] @@ -5095,8 +4927,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-foundation", "objc2-metal", ] @@ -5114,9 +4946,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.10.0", - "block2 0.5.1", + "block2", "libc", - "objc2 0.5.2", + "objc2", ] [[package]] @@ -5136,8 +4968,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.10.0", - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-foundation", ] @@ -5148,8 +4980,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.10.0", - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-foundation", "objc2-metal", ] @@ -5241,7 +5073,7 @@ checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" dependencies = [ "bitflags 2.10.0", "cfg-if", - "foreign-types 0.3.2", + "foreign-types", "libc", "once_cell", "openssl-macros", @@ -5638,19 +5470,6 @@ dependencies = [ "time", ] -[[package]] -name = "png" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" -dependencies = [ - "bitflags 2.10.0", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - [[package]] name = "polars" version = "0.52.0" @@ -6392,27 +6211,12 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "pxfm" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" -dependencies = [ - "num-traits", -] - [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - [[package]] name = "quick-xml" version = "0.36.2" @@ -7948,7 +7752,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36e39da5d30887b5690e29de4c5ebb8ddff64ebd9933f98a01daaa4fd11b36ea" dependencies = [ "peresil", - "quick-error 1.2.3", + "quick-error", "sxd-document", ] @@ -8169,20 +7973,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "tiff" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" -dependencies = [ - "fax", - "flate2", - "half", - "quick-error 2.0.1", - "weezl", - "zune-jpeg", -] - [[package]] name = "time" version = "0.3.47" @@ -8510,7 +8300,7 @@ dependencies = [ "chrono", "libc", "log", - "objc2 0.5.2", + "objc2", "objc2-foundation", "once_cell", "percent-encoding", @@ -9353,12 +9143,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "weezl" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" - [[package]] name = "which" version = "4.4.2" @@ -10242,18 +10026,3 @@ dependencies = [ "cc", "pkg-config", ] - -[[package]] -name = "zune-core" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" - -[[package]] -name = "zune-jpeg" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" -dependencies = [ - "zune-core", -] diff --git a/Cargo.toml b/Cargo.toml index 1ec173b6d..4c9293791 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,7 +89,6 @@ chrono-tz = "0.10" crossbeam-channel = "0.5.15" crossterm = "0.29.0" csv = "1.4" -ctrlc = "3.5" devicons = "0.6.12" dialoguer = { default-features = false, version = "0.12" } digest = { default-features = false, version = "0.10" } @@ -248,7 +247,6 @@ nu-mcp = { path = "./crates/nu-mcp", version = "0.110.1", optional = true } reedline = { workspace = true, features = ["bashisms"] } crossterm = { workspace = true } -ctrlc = { workspace = true } dirs = { workspace = true } log = { workspace = true } lexopt = { workspace = true } diff --git a/crates/nu-command/src/default_context.rs b/crates/nu-command/src/default_context.rs index fcc7fa3f9..a80237429 100644 --- a/crates/nu-command/src/default_context.rs +++ b/crates/nu-command/src/default_context.rs @@ -271,9 +271,6 @@ pub fn add_shell_command_context(mut engine_state: EngineState) -> EngineState { Whoami, }; - #[cfg(all(unix, feature = "os"))] - bind_command! { ULimit }; - #[cfg(all(unix, feature = "os"))] bind_command! { UMask }; diff --git a/crates/nu-command/src/filesystem/ls.rs b/crates/nu-command/src/filesystem/ls.rs index 554ec0fd9..7aae4bdc3 100644 --- a/crates/nu-command/src/filesystem/ls.rs +++ b/crates/nu-command/src/filesystem/ls.rs @@ -773,20 +773,12 @@ pub(crate) fn dir_entry_dict( record.push( "user", - if let Some(user) = users::get_user_by_uid(md.uid().into()) { - Value::string(user.name, span) - } else { - Value::int(md.uid().into(), span) - }, + Value::int(md.uid().into(), span) ); record.push( "group", - if let Some(group) = users::get_group_by_gid(md.gid().into()) { - Value::string(group.name, span) - } else { - Value::int(md.gid().into(), span) - }, + Value::int(md.gid().into(), span) ); } } diff --git a/crates/nu-command/src/filesystem/ucp.rs b/crates/nu-command/src/filesystem/ucp.rs index 2198911e6..b193dab2c 100644 --- a/crates/nu-command/src/filesystem/ucp.rs +++ b/crates/nu-command/src/filesystem/ucp.rs @@ -320,7 +320,8 @@ fn make_attributes(preserve: Option) -> Result) -> Result) -> PermissionResult { #[cfg(unix)] pub mod users { - use nix::unistd::{Gid, Group, Uid, User}; - - pub fn get_user_by_uid(uid: Uid) -> Option { - User::from_uid(uid).ok().flatten() - } - - pub fn get_group_by_gid(gid: Gid) -> Option { - Group::from_gid(gid).ok().flatten() - } + use nix::unistd::{Gid, Uid}; pub fn get_current_uid() -> Uid { Uid::current() @@ -60,7 +52,7 @@ pub mod users { #[cfg(not(any(target_os = "linux", target_os = "freebsd", target_os = "android")))] pub fn get_current_username() -> Option { - get_user_by_uid(get_current_uid()).map(|user| user.name) + None } #[cfg(any(target_os = "linux", target_os = "freebsd", target_os = "android"))] @@ -127,22 +119,7 @@ pub mod users { nix::libc::getgrouplist(name.as_ptr(), gid.as_raw(), buff.as_mut_ptr(), &mut count) }; - if res < 0 { - None - } else { - buff.truncate(count as usize); - buff.sort_unstable(); - buff.dedup(); - // allow trivial cast: on macos i is i32, on linux it's already gid_t - #[allow(trivial_numeric_casts)] - Some( - buff.into_iter() - .map(|id| Gid::from_raw(id as gid_t)) - .filter_map(get_group_by_gid) - .map(|group| group.gid) - .collect(), - ) - } + None } } diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 index 37ca9dfd1..000000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,17 +0,0 @@ -# So, you want to update the Rust toolchain... -# The key is making sure all our dependencies support the version of Rust we're using, -# and that nushell compiles on all the platforms tested in our CI. - -# Here's some documentation on how to use this file: -# https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file - -[toolchain] -# The default profile includes rustc, rust-std, cargo, rust-docs, rustfmt and clippy. -# https://rust-lang.github.io/rustup/concepts/profiles.html -profile = "default" -# The current plan is to be 2 releases behind the latest stable release. So, if the -# latest stable release is 1.72.0, the channel should be 1.70.0. We want to do this -# so that we give repo maintainers and package managers a chance to update to a more -# recent version of rust. However, if there is a "cool new feature" that we want to -# use in nushell, we may opt to use the bleeding edge stable version of rust. -channel = "1.91.1" diff --git a/src/signals.rs b/src/signals.rs index c3a4b8379..d5be1009c 100644 --- a/src/signals.rs +++ b/src/signals.rs @@ -25,10 +25,4 @@ pub(crate) fn ctrlc_protection(engine_state: &mut EngineState) { .expect("Failed to register interrupt signal handler"); engine_state.signal_handlers = Some(signal_handlers.clone()); - - ctrlc::set_handler(move || { - interrupt.store(true, Ordering::Relaxed); - signal_handlers.run(SignalAction::Interrupt); - }) - .expect("Error setting Ctrl-C handler"); } ================================================ FILE: recipes/sound/freepats/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/freepats.git" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/share/freepats" cp -Rv "${COOKBOOK_SOURCE}/"* "${COOKBOOK_STAGE}/share/freepats" mkdir -pv "${COOKBOOK_STAGE}/etc/timidity" echo "dir /share/freepats" > "${COOKBOOK_STAGE}/etc/timidity/freepats.cfg" echo "source /share/freepats/freepats.cfg" >> "${COOKBOOK_STAGE}/etc/timidity/freepats.cfg" """ ================================================ FILE: recipes/sound/rodioplay/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/rodioplay.git" [build] template = "cargo" ================================================ FILE: recipes/sound/timidity/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/timidity.git" branch = "redox" script = """ autoreconf -f -i wget -O autoconf/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" """ [build] template = "custom" script = """ export LDFLAGS="-static" COOKBOOK_CONFIGURE_FLAGS=( --build="$(gcc -dumpmachine)" --host="${TARGET}" --prefix="" --enable-vt100 ) cookbook_configure # Create configuration files mkdir -pv "${COOKBOOK_STAGE}/etc/timidity" echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "${COOKBOOK_STAGE}/etc/timidity/timidity.cfg" mkdir -pv "${COOKBOOK_STAGE}/share/timidity" echo "soundfont /share/generaluser-gs/generaluser-gs.sf2" >> "${COOKBOOK_STAGE}/share/timidity/timidity.cfg" """ [package] dependencies = [ "generaluser-gs", ] ================================================ FILE: recipes/terminal/bash-completion/recipe.toml ================================================ [source] tar = "https://github.com/scop/bash-completion/releases/download/2.17.0/bash-completion-2.17.0.tar.xz" b3sum = "5d6725f3baea16467f9a360dde24fb1b9ed1cd3c4e9eb7a3b959d94864a98429" [build] template = "configure" configureflags = [ "--prefix=/", ] [package] dependencies = [ "sed", ] ================================================ FILE: recipes/terminal/pls/recipe.toml ================================================ [source] git = "https://github.com/pls-rs/pls" [build] template = "cargo" ================================================ FILE: recipes/terminal/zoxide/recipe.toml ================================================ [source] git = "https://github.com/ajeetdsouza/zoxide" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/tests/acid/recipe.toml ================================================ # Due to necessary write permission for compilation the filesystem path of source code installation is an exception # where the package manager can't switch between system-wide and user paths [source] git = "https://gitlab.redox-os.org/redox-os/acid.git" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user/acid" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/acid" """ [package] dependencies = ["rust"] ================================================ FILE: recipes/tests/acid-bins/recipe.toml ================================================ [source] same_as = "../acid" [build] template = "cargo" ================================================ FILE: recipes/tests/benchmarks/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/benchmarks" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/benchmarks cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/benchmarks """ [package] dependencies = [ "iperf3" ] ================================================ FILE: recipes/tests/hello-redox/files/test.c ================================================ #include int main(void) { printf("Hello, Redox!\\n"); } ================================================ FILE: recipes/tests/hello-redox/files/test.cpp ================================================ #include int main() { std::cout << "Hello, Redox!" << std::endl; } ================================================ FILE: recipes/tests/hello-redox/files/test.go ================================================ package main import "fmt" func main() { fmt.Println("Hello, Redox!") } ================================================ FILE: recipes/tests/hello-redox/files/test.java ================================================ public class Java { public static void main(String[] args) { System.out.println("Hello Redox"); } } ================================================ FILE: recipes/tests/hello-redox/files/test.js ================================================ console.log("Hello Redox"); ================================================ FILE: recipes/tests/hello-redox/files/test.lua ================================================ print("Hello, Redox!") ================================================ FILE: recipes/tests/hello-redox/files/test.py ================================================ print("Hello, Redox!") ================================================ FILE: recipes/tests/hello-redox/files/test.rs ================================================ fn main() { println!("Hello, Redox!"); } ================================================ FILE: recipes/tests/hello-redox/files/test.zig ================================================ const std = @import("std"); pub fn main() !void { std.debug.print("Hello, Redox!\n", .{}); } ================================================ FILE: recipes/tests/hello-redox/recipe.toml ================================================ # Due to necessary write permission for compilation the filesystem path of source code installation is an exception # where the package manager can't switch between system-wide and user paths [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user/hello-redox" cp -rv "${COOKBOOK_RECIPE}"/files/* "${COOKBOOK_STAGE}/home/user/hello-redox" """ ================================================ FILE: recipes/tests/iperf3/recipe.toml ================================================ [source] tar = "https://downloads.es.net/pub/iperf/iperf-3.20.tar.gz" [build] template = "configure" ================================================ FILE: recipes/tests/openposixtestsuite/recipe.toml ================================================ # Due to necessary write permission for compilation the filesystem path of source code installation is an exception # where the package manager can't switch between system-wide and user paths [source] git = "https://gitlab.redox-os.org/redox-os/openposixtestsuite.git" branch = "redox" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user/openposixtestsuite" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/openposixtestsuite" """ [package] dependencies = [ "gcc13", "gnu-binutils", "gnu-make", "sed", ] ================================================ FILE: recipes/tests/os-test/recipe.toml ================================================ # Due to necessary write permission for compilation the filesystem path of source code installation is an exception # where the package manager can't switch between system-wide and user paths # TODO remove gnu-grep when extrautils grep supports grep -E [source] git = "https://gitlab.com/sortix/os-test" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user/os-test" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/os-test" """ [package] dependencies = [ "gcc13", "gnu-binutils", "gnu-grep", "gnu-make", "libarchive", "sed", ] ================================================ FILE: recipes/tests/os-test-bins/recipe.toml ================================================ [source] same_as = "../os-test" [build] dependencies = [ "gettext", "libarchive", "libiconv", ] template = "custom" script = """ DYNAMIC_INIT # Copy source to /usr/share/os-test mkdir -p "${COOKBOOK_STAGE}/usr/share/os-test" cd "${COOKBOOK_STAGE}/usr/share/os-test" rsync -a "${COOKBOOK_SOURCE}/" "./" # Pre-compile tests for Redox make OS=Redox \ CC="${CC_WRAPPER} ${GNU_TARGET}-gcc" \ CFLAGS="-I${COOKBOOK_SYSROOT}/include" \ CPPFLAGS="-I${COOKBOOK_SYSROOT}/include" \ LDFLAGS="-L${COOKBOOK_SYSROOT}/lib" \ EXTRA_LDFLAGS= \ CC_FOR_BUILD="${CC_WRAPPER} cc" \ CFLAGS_FOR_BUILD= \ CPPFLAGS_FOR_BUILD= \ LDFLAGS_FOR_BUILD= \ -j "${COOKBOOK_MAKE_JOBS}" \ all skips=( # These tests hang basic/poll/poll basic/pthread/pthread_barrierattr_setpshared basic/pthread/pthread_cancel basic/pthread/pthread_cleanup_pop basic/pthread/pthread_cleanup_push basic/pthread/pthread_condattr_setpshared basic/pthread/pthread_mutex_consistent basic/pthread/pthread_rwlock_timedrdlock basic/pthread/pthread_rwlock_timedwrlock basic/pthread/pthread_setcanceltype basic/pthread/pthread_testcancel basic/sys_select/select basic/sys_time/select basic/sys_wait/waitpid signal/ppoll-block-sleep-raise-write signal/ppoll-block-sleep-write-raise ) for skip in "${skips[@]}" do mkdir -p out.known/redox/"$(dirname "${skip}")" echo "skipped" > out.known/redox/"${skip}.out" done cp -t out -R out.known/redox # Create runner script mkdir -p "${COOKBOOK_STAGE}/usr/bin" cat > "${COOKBOOK_STAGE}/usr/bin/os-test-runner" < out.known/${os}/"${skip}.out" done cp -t out -R out.known/${os} postinstall () { make OS=${OS} CC_FOR_BUILD="${CC_WRAPPER} cc" \ CFLAGS_FOR_BUILD= CPPFLAGS_FOR_BUILD= \ LDFLAGS_FOR_BUILD= html json jsonl mkdir -p ${COOKBOOK_STAGE}/share/os-test cp -a out ${COOKBOOK_STAGE}/share/os-test/out cp -a html ${COOKBOOK_STAGE}/share/os-test/html cp -a os-test.json ${COOKBOOK_STAGE}/share/os-test/os-test.json cp -a os-test.jsonl ${COOKBOOK_STAGE}/share/os-test/os-test.jsonl } if [ "$TARGET" = "$COOKBOOK_HOST_TARGET" ]; then make test postinstall else # bash: gnu-make crashes randomly but can continue # issues with multi-core and make jobs # https://gitlab.redox-os.org/redox-os/relibc/-/issues/240 # https://gitlab.redox-os.org/redox-os/redox/-/issues/1753 export REDOXER_QEMU_ARGS="-smp 1" # make: jobs doesn't work yet redoxer exec --folder . --folder "${COOKBOOK_SYSROOT}/usr/:/usr" --artifact out:/root/out \ bash -c "until make test; do echo retrying; done" postinstall fi """ ================================================ FILE: recipes/tests/redox-posix-tests/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/redox-posix-tests.git" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user/redox-posix-tests" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/redox-posix-tests" """ [package] dependencies = [ "gcc13", "gnu-binutils", "gnu-make", ] ================================================ FILE: recipes/tests/relibc-tests/recipe.toml ================================================ # Due to necessary write permission for compilation the filesystem path of source code installation is an exception # where the package manager can't switch between system-wide and user paths [source] same_as = "../../core/relibc" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user/relibc-tests" cp -rv "${COOKBOOK_SOURCE}/tests" "${COOKBOOK_STAGE}/home/user/relibc-tests" """ [package] dependencies = ["gcc13"] ================================================ FILE: recipes/tests/relibc-tests-bins/recipe.toml ================================================ [source] same_as = "../../core/relibc" [build] template = "custom" script = """ PACKAGE_PATH="tests" cookbook_cargo DYNAMIC_INIT SRC=${COOKBOOK_SOURCE}/tests EXPECTSRC=${SRC}/expected/bins_dynamic DST=${COOKBOOK_STAGE}/root/relibc-tests CFLAGS+=" -I${SRC}" LDFLAGS+=" -Wl,-rpath=\\$ORIGIN" pushd ${SRC} if [ -z "$TESTBIN" ]; then for file in **/*.c; do filename="${file%.*}" mkdir -p $(dirname $DST/$filename) # adding "true" because compilation can fail ${CC} ${CFLAGS} ${LDFLAGS} "$SRC/$file" -o "$DST/$filename" -Wall || true if [[ -f "${EXPECTSRC}/$filename.stdout" ]]; then echo "relibc-tests ./$filename" >> $DST/run.sh else echo "relibc-tests -s./$filename" >> $DST/run.sh fi done rsync -a ${EXPECTSRC} ${DST}/expected popd else mkdir -p $(dirname $DST/$TESTBIN) $(dirname $DST/expected/$TESTBIN) ${CC} ${CFLAGS} ${LDFLAGS} "$SRC/$TESTBIN.c" -o "$DST/$TESTBIN" -Wall if [[ -f "${EXPECTSRC}/$TESTBIN.stdout" ]]; then cp ${EXPECTSRC}/$TESTBIN.{stdout,stderr} $(dirname $DST/expected/$TESTBIN) fi fi if [ -n "$TESTBIN" ]; then if [[ -f "${EXPECTSRC}/$TESTBIN.stdout" ]]; then "${COOKBOOK_REDOXER}" write-exec sh -c "cd /root/relibc-tests; relibc-tests ./$TESTBIN" else "${COOKBOOK_REDOXER}" write-exec sh -c "cd /root/relibc-tests; relibc-tests -s./$TESTBIN" fi fi """ ================================================ FILE: recipes/tests/schedrs/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/akshitgaur2005/schedrs.git" [build] template = "cargo" ================================================ FILE: recipes/tests/sysbench/recipe.toml ================================================ [source] git = "https://github.com/akopytov/sysbench.git" patches = ["redox.patch"] script = """ DYNAMIC_INIT autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal """ [build] template = "custom" dependencies = ["luajit"] script = """ DYNAMIC_INIT export CFLAGS+=" -I${COOKBOOK_SYSROOT}/include/luajit-2.1" COOKBOOK_CONFIGURE_FLAGS+=( --without-mysql --with-system-luajit ) cookbook_configure """ [package] dependencies = ["luajit"] ================================================ FILE: recipes/tests/sysbench/redox.patch ================================================ --- a/src/lua/internal/Makefile.am +++ b/src/lua/internal/Makefile.am @@ -26,7 +26,7 @@ SUFFIXES = .lua .lua.h .lua.lua.h: @echo "Creating $@ from $<" - @var=$$(echo $< | sed 's/\./_/g') && \ + @var=$$(basename $< | sed 's/\./_/g') && \ ( echo "unsigned char $${var}[] =" && \ sed -e 's/\\/\\\\/g' \ -e 's/"/\\"/g' \ ================================================ FILE: recipes/tests/vttest/recipe.toml ================================================ [source] tar = "https://invisible-island.net/archives/vttest/vttest-20140305.tgz" blake3 = "b515b9a5e1f1498ed99e1a1c172fbcfdf2b7a214e185bd2005cc994407ded89e" patches = ["redox.patch"] script = """ GNU_CONFIG_GET config.sub """ [build] template = "custom" script = """ export LDFLAGS="-static" COOKBOOK_CONFIGURE_FLAGS=( --build="$(gcc -dumpmachine)" --host="${TARGET}" --prefix="" ) cookbook_configure """ ================================================ FILE: recipes/tests/vttest/redox.patch ================================================ diff -u source_original/main.c source/main.c --- source_original/main.c 2014-01-16 22:15:19.000000000 +0100 +++ source/main.c 2017-10-30 18:31:22.365280877 +0100 @@ -1295,8 +1295,8 @@ void initterminal(int pn) { - init_ttymodes(pn); - setup_terminal(""); + //init_ttymodes(pn); + //setup_terminal(""); } /* Set up my personal prejudices */ Common subdirectories: source_original/package and source/package diff -u source_original/unix_io.c source/unix_io.c --- source_original/unix_io.c 2014-01-16 23:11:39.000000000 +0100 +++ source/unix_io.c 2017-10-30 18:48:13.927899071 +0100 @@ -40,17 +40,17 @@ lval = last_char; brkrd = FALSE; reading = TRUE; -#ifdef HAVE_ALARM - signal(SIGALRM, give_up); - alarm(60); /* timeout after 1 minute, in case user's keyboard is hung */ -#endif +//#ifdef HAVE_ALARM +// signal(SIGALRM, give_up); +// alarm(60); /* timeout after 1 minute, in case user's keyboard is hung */ +//#endif if (read(0, &one_byte, (size_t) 1) < 0) ch = EOF; else ch = (int) one_byte; -#ifdef HAVE_ALARM - alarm(0); -#endif +//#ifdef HAVE_ALARM +// alarm(0); +//#endif reading = FALSE; #ifdef DEBUG { @@ -178,21 +178,21 @@ void inflush(void) { - int val; - -#ifdef HAVE_RDCHK - while (rdchk(0)) - read(0, &val, 1); -#else -#if USE_FIONREAD - int l1; - ioctl(0, FIONREAD, &l1); - while (l1-- > 0L) - read(0, &val, (size_t) 1); -#else - while (read(2, &val, (size_t) 1) > 0) ; -#endif -#endif +// int val; +// +//#ifdef HAVE_RDCHK +// while (rdchk(0)) +// read(0, &val, 1); +//#else +//#if USE_FIONREAD +// int l1; +// ioctl(0, FIONREAD, &l1); +// while (l1-- > 0L) +// read(0, &val, (size_t) 1); +//#else +// while (read(2, &val, (size_t) 1) > 0) ; +//#endif +//#endif } void ================================================ FILE: recipes/tools/bzip2/pkgconfig ================================================ prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: bzip2 Description: A file compression library Version: 1.0.8 Libs: -L${libdir} -lbz2 Cflags: -I${includedir} ================================================ FILE: recipes/tools/bzip2/recipe.toml ================================================ [source] tar = "https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz" blake3 = "97af3f520629c65fe41292f77e6ca798fe594d7987bfb2aebe7c6fcdc7ab5ed2" [build] template = "custom" script = """ DYNAMIC_INIT # This installs the static library regardless of config options # The static lib is preferred according to the README because it's faster rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" \ AR="${AR}" \ CC="${CC}" \ RANLIB="${RANLIB}" \ PREFIX="${COOKBOOK_STAGE}" \ install # However, distros distribute libbz2 as well so we'll support it too # Linking the lib fails if we don't rebuild the objects from earlier "${COOKBOOK_MAKE}" clean # This DOES NOT build/clobber the binaries already built above "${COOKBOOK_MAKE}" -f Makefile-libbz2_so \ -j"${COOKBOOK_MAKE_JOBS}" \ AR="${AR}" \ CC="${CC}" \ RANLIB="${RANLIB}" \ PREFIX="${COOKBOOK_STAGE}" cp -av libbz2.so* "${COOKBOOK_STAGE}/lib" ln -sr "${COOKBOOK_STAGE}/lib/libbz2.so.1.0" "${COOKBOOK_STAGE}/lib/libbz2.so.1" ln -sr "${COOKBOOK_STAGE}/lib/libbz2.so.1.0" "${COOKBOOK_STAGE}/lib/libbz2.so" mkdir -p "${COOKBOOK_STAGE}/lib/pkgconfig" cp "${COOKBOOK_RECIPE}/pkgconfig" "${COOKBOOK_STAGE}/lib/pkgconfig/bzip2.pc" """ ================================================ FILE: recipes/tools/cleye/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/cleye.git" [build] template = "cargo" ================================================ FILE: recipes/tools/cosmic-edit/manifest ================================================ name=COSMIC Text Editor binary=/bin/cosmic-edit icon=/ui/icons/apps/accessories-text-editor.png accept=*.asm accept=*.conf accept=*.html accept=*.ion accept=*.list accept=*.lua accept=*.md accept=*.rc accept=*.rs accept=*.sh accept=*.toml accept=*.txt author=Jeremy Soller description=COSMIC Text Editor ================================================ FILE: recipes/tools/cosmic-edit/recipe.toml ================================================ [source] git = "https://github.com/pop-os/cosmic-edit.git" branch = "master" [build] template = "custom" dependencies = [ "gettext", "libxkbcommon", ] script = """ DYNAMIC_INIT export GETTEXT_DIR="${COOKBOOK_SYSROOT}/usr" cookbook_cargo --no-default-features mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/30_cosmic-edit" #TODO: install with just? APPID="com.system76.CosmicEdit" mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ ================================================ FILE: recipes/tools/cosmic-files/manifest ================================================ name=COSMIC File Manager binary=/bin/cosmic-files icon=/ui/icons/apps/system-file-manager.png author=Jeremy Soller description=COSMIC File Manager ================================================ FILE: recipes/tools/cosmic-files/recipe.toml ================================================ [source] git = "https://github.com/pop-os/cosmic-files.git" branch = "master" [build] template = "custom" dependencies = [ "gettext", "libxkbcommon", ] script = """ DYNAMIC_INIT export GETTEXT_DIR="${COOKBOOK_SYSROOT}/usr" cookbook_cargo --no-default-features mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" cp -v "target/${TARGET}/release/cosmic-files" "${COOKBOOK_STAGE}/usr/bin/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps/" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/20_cosmic-files" #TODO: install with just? APPID="com.system76.CosmicFiles" mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ ================================================ FILE: recipes/tools/cosmic-reader/manifest ================================================ name=COSMIC Reader binary=/bin/cosmic-reader icon=/ui/icons/apps/accessories-text-editor.png accept=*.pdf author=Jeremy Soller description=COSMIC Reader ================================================ FILE: recipes/tools/cosmic-reader/recipe.toml ================================================ [source] git = "https://github.com/pop-os/cosmic-reader.git" branch = "master" [build] template = "custom" dependencies = [ "expat", "fontconfig", "freetype2", "libpng", "zlib", ] script = """ DYNAMIC_INIT export BINDGEN_EXTRA_CLANG_ARGS="--sysroot=${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET} -I${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/include" "${COOKBOOK_CARGO}" rustc \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --release \ --bin cosmic-reader \ --no-default-features \ --features mupdf \ -- \ -C link-args="-lpng -lexpat" mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" cp -v "target/${TARGET}/release/cosmic-reader" "${COOKBOOK_STAGE}/usr/bin/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/40_cosmic-reader" #TODO: install with just? APPID="com.system76.CosmicReader" mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/thumbnailers/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.thumbnailer" "${COOKBOOK_STAGE}/usr/share/thumbnailers/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ ================================================ FILE: recipes/tools/cosmic-settings/recipe.toml ================================================ [source] git = "https://github.com/pop-os/cosmic-settings.git" branch = "master" [build] template = "custom" dependencies = [ "gettext", "libxkbcommon", ] script = """ DYNAMIC_INIT export GETTEXT_DIR="${COOKBOOK_SYSROOT}/usr" (COOKBOOK_SOURCE+="/cosmic-settings" cookbook_cargo --no-default-features \ --config 'patch.crates-io.rustix.git = "https://github.com/bytecodealliance/rustix"' \ --config 'patch.crates-io.rustix.rev = "8bf15a0"') mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" cp -v "target/${TARGET}/release/cosmic-settings" "${COOKBOOK_STAGE}/usr/bin/" #TODO: install with just? APPID="com.system76.CosmicSettings" mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" sed 's/Categories=COSMIC/Categories=Settings/' "${COOKBOOK_SOURCE}/resources/applications/${APPID}.desktop" > "${COOKBOOK_STAGE}/usr/share/applications/${APPID}.desktop" mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/resources/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/" cp -rv "${COOKBOOK_SOURCE}/resources/default_schema/" "${COOKBOOK_STAGE}/usr/share/cosmic/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/resources/icons/" "${COOKBOOK_STAGE}/usr/share/icons/hicolor/" """ ================================================ FILE: recipes/tools/cosmic-store/recipe.toml ================================================ [source] git = "https://github.com/pop-os/cosmic-store.git" branch = "master" [build] template = "custom" dependencies = [ "gettext", "libxkbcommon", "openssl3", ] script = """ DYNAMIC_INIT export GETTEXT_DIR="${COOKBOOK_SYSROOT}/usr" export ZSTD_SYS_USE_PKG_CONFIG=1 cookbook_cargo --no-default-features --features desktop,pkgar #TODO: install with just? APPID="com.system76.CosmicStore" mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ ================================================ FILE: recipes/tools/cosmic-term/manifest ================================================ name=COSMIC Terminal binary=/bin/cosmic-term icon=/ui/icons/apps/utilities-terminal.png author=Jeremy Soller description=COSMIC Terminal ================================================ FILE: recipes/tools/cosmic-term/recipe.toml ================================================ [source] git = "https://github.com/pop-os/cosmic-term.git" branch = "master" [build] template = "custom" dependencies = [ "gettext", "libxkbcommon", ] script = """ DYNAMIC_INIT export GETTEXT_DIR="${COOKBOOK_SYSROOT}/usr" cookbook_cargo --no-default-features mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/10_cosmic-term" #TODO: install with just? APPID="com.system76.CosmicTerm" mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ ================================================ FILE: recipes/tools/cosmic-text/recipe.toml ================================================ [source] git = "https://github.com/pop-os/cosmic-text.git" branch = "main" [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CARGO_FLAGS=() # remove --locked COOKBOOK_CARGO_PATH=examples/editor cookbook_cargo_build """ ================================================ FILE: recipes/tools/diffutils/diffutils.patch ================================================ diff -ruw source/lib/cmpbuf.c source-new/lib/cmpbuf.c --- source/lib/cmpbuf.c 2017-01-01 04:22:36.000000000 -0700 +++ source-new/lib/cmpbuf.c 2018-12-29 07:31:43.920193561 -0700 @@ -71,8 +71,8 @@ ancient AIX hosts that set errno to EINTR after uncaught SIGCONT. See (1993-04-22). */ - if (! SA_RESTART && errno == EINTR) - continue; + //if (! SA_RESTART && errno == EINTR) + // continue; return SIZE_MAX; } diff -ruw source/lib/getdtablesize.c source-new/lib/getdtablesize.c --- source/lib/getdtablesize.c 2017-05-18 10:23:32.000000000 -0600 +++ source-new/lib/getdtablesize.c 2018-12-29 07:32:31.709586573 -0700 @@ -109,6 +109,7 @@ int getdtablesize (void) { +#if !defined(__redox__) struct rlimit lim; if (getrlimit (RLIMIT_NOFILE, &lim) == 0 @@ -117,6 +118,7 @@ && lim.rlim_cur != RLIM_SAVED_CUR && lim.rlim_cur != RLIM_SAVED_MAX) return lim.rlim_cur; +#endif return INT_MAX; } diff -ruw source/lib/getprogname.c source-new/lib/getprogname.c --- source/lib/getprogname.c 2017-01-31 11:36:50.000000000 -0700 +++ source-new/lib/getprogname.c 2018-12-29 07:34:15.432575388 -0700 @@ -51,6 +51,14 @@ # include #endif +#if defined(__redox__) +# include +# include +# include +# include +# include +#endif + #include "dirname.h" #ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Cygwin */ @@ -177,6 +185,17 @@ } } return NULL; +# elif defined(__redox__) + char filename[PATH_MAX]; + int fd = open ("sys:exe", O_RDONLY); + if (fd > 0) { + int len = read(fd, filename, PATH_MAX-1); + if (len > 0) { + filename[len] = '\0'; + return strdup(filename); + } + } + return NULL; # else # error "getprogname module not ported to this OS" # endif diff -ruw source/lib/sigprocmask.c source-new/lib/sigprocmask.c --- source/lib/sigprocmask.c 2017-05-18 10:23:32.000000000 -0600 +++ source-new/lib/sigprocmask.c 2018-12-29 07:45:02.610557142 -0700 @@ -126,6 +126,7 @@ return 0; } +#if !defined(__redox__) int sigemptyset (sigset_t *set) { @@ -180,6 +181,7 @@ *set = ((2U << (NSIG - 1)) - 1) & ~ SIGABRT_COMPAT_MASK; return 0; } +#endif /* Set of currently blocked signals. */ static volatile sigset_t blocked_set /* = 0 */; ================================================ FILE: recipes/tools/diffutils/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/diffutils/diffutils-3.6.tar.xz" blake3 = "086a95093c15edcdb826e75ff4de6c2213de6fbd2eb13538d07bdc3286dfb4a4" patches = ["diffutils.patch"] script = """ autoreconf """ [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( gt_cv_locale_fr=false gt_cv_locale_fr_utf8=false gt_cv_locale_ja=false gt_cv_locale_tr_utf8=false gt_cv_locale_zh_CN=false ) cookbook_configure """ ================================================ FILE: recipes/tools/fd/recipe.toml ================================================ [source] git = "https://github.com/sharkdp/fd.git" rev = "840a565d3aadbeb303b10a01c0aa3561924dfc46" [build] template = "cargo" ================================================ FILE: recipes/tools/file/recipe.toml ================================================ #TODO compilation error [source] tar = "https://astron.com/pub/file/file-5.46.tar.gz" [build] template = "configure" ================================================ FILE: recipes/tools/friar/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/friar.git" [build] template = "cargo" ================================================ FILE: recipes/tools/gettext/recipe.toml ================================================ # GNU gettext utilities are a set of tools that provides a framework to help # other GNU packages produce multi-lingual messages. [source] tar = "https://ftp.gnu.org/gnu/gettext/gettext-0.22.5.tar.gz" blake3 = "cb3f3a34da7ce1a92746df81f5b78c5d53841973a24eb80ab76537263d380ec0" patches = [ "redox.patch" ] script = """ DYNAMIC_INIT GNU_CONFIG_GET build-aux/config.sub ( cd gettext-runtime/libasprintf && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) ( cd gettext-runtime/intl && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) ( cd gettext-runtime && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) ( cd gettext-tools && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) ( cd libtextstyle && autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) autoreconf -fvi -I${COOKBOOK_HOST_SYSROOT}/share/aclocal """ [build] template = "custom" dependencies = [ "libiconv" ] script = """ DYNAMIC_STATIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( ac_cv_have_decl_program_invocation_name=no gt_cv_locale_fr=false gt_cv_locale_fr_utf8=false gt_cv_locale_ja=false gt_cv_locale_tr_utf8=false gt_cv_locale_zh_CN=false ) cookbook_configure """ ================================================ FILE: recipes/tools/gettext/redox.patch ================================================ diff -ruwN source/gettext-tools/gnulib-lib/getdtablesize.c source-new/gettext-tools/gnulib-lib/getdtablesize.c --- source/gettext-tools/gnulib-lib/getdtablesize.c 2016-06-11 06:59:58.000000000 -0600 +++ source-new/gettext-tools/gnulib-lib/getdtablesize.c 2019-01-05 08:45:36.015291070 -0700 @@ -84,6 +84,14 @@ return dtablesize; } +#elif defined(__redox__) + +int +getdtablesize (void) +{ + return INT_MAX; +} + #else # include diff -ruwN source/gettext-tools/gnulib-lib/spawni.c source-new/gettext-tools/gnulib-lib/spawni.c --- source/gettext-tools/gnulib-lib/spawni.c 2016-06-11 07:00:02.000000000 -0600 +++ source-new/gettext-tools/gnulib-lib/spawni.c 2019-01-05 08:55:44.661641522 -0700 @@ -51,10 +51,10 @@ # include #else # if !HAVE_SETEUID -# define seteuid(id) setresuid (-1, id, -1) +# define seteuid(id) setreuid (-1, id) # endif # if !HAVE_SETEGID -# define setegid(id) setresgid (-1, id, -1) +# define setegid(id) setregid (-1, id) # endif # define local_seteuid(id) seteuid (id) # define local_setegid(id) setegid (id) diff -ruwN source/gettext-tools/Makefile.am source-new/gettext-tools/Makefile.am --- source/gettext-tools/Makefile.am 2023-09-19 03:08:31.000000000 +0700 +++ source-new/gettext-tools/Makefile.am 2025-10-05 12:39:33.287595871 +0700 @@ -19,7 +19,7 @@ AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies ACLOCAL_AMFLAGS = -I m4 -I ../gettext-runtime/m4 -I ../m4 -I gnulib-m4 -I libgrep/gnulib-m4 -I libgettextpo/gnulib-m4 -SUBDIRS = gnulib-lib libgrep src libgettextpo po its projects styles emacs misc man m4 tests system-tests gnulib-tests examples doc +SUBDIRS = gnulib-lib libgrep src libgettextpo po its projects styles emacs misc man m4 EXTRA_DIST = misc/DISCLAIM MOSTLYCLEANFILES = core *.stackdump ================================================ FILE: recipes/tools/gnu-binutils/01_build_fix.patch ================================================ diff '--color=auto' -ur source/gprofng/libcollector/configure.ac source-new/gprofng/libcollector/configure.ac --- source/gprofng/libcollector/configure.ac 2024-08-17 09:00:00.000000000 +1000 +++ source-new/gprofng/libcollector/configure.ac 2024-12-04 15:59:58.407412951 +1100 @@ -18,7 +18,7 @@ m4_include([../../bfd/version.m4]) AC_INIT([gprofng], [BFD_VERSION]) -AC_CONFIG_MACRO_DIRS([../../config ../..]) +#AC_CONFIG_MACRO_DIRS([../../config ../..]) AC_CONFIG_AUX_DIR(../..) AC_CANONICAL_TARGET AM_INIT_AUTOMAKE diff '--color=auto' -ur source/libiberty/configure.ac source-new/libiberty/configure.ac --- source/libiberty/configure.ac 2024-08-17 09:00:00.000000000 +1000 +++ source-new/libiberty/configure.ac 2024-12-04 15:59:31.572203764 +1100 @@ -37,7 +37,7 @@ libiberty_topdir="${srcdir}/.." fi AC_SUBST(libiberty_topdir) -AC_CONFIG_AUX_DIR($libiberty_topdir) +AC_CONFIG_AUX_DIR([.]) dnl Very limited version of automake's enable-maintainer-mode ================================================ FILE: recipes/tools/gnu-binutils/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/binutils/binutils-2.43.1.tar.xz" patches = ["01_build_fix.patch"] script = """ DYNAMIC_INIT COOKBOOK_AUTORECONF=autoreconf2.69 autotools_recursive_regenerate -I"$(realpath ./config)" cp -fpv ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/{config.sub,config.guess,install-sh} libiberty/ """ [build] template = "custom" dependencies = [ "expat", "libgmp", "libmpfr", "zlib", ] script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --target="${GNU_TARGET}" --disable-werror --disable-dependency-tracking --disable-nls --enable-colored-disassembly --enable-gdb --with-system-zlib --with-multilib --with-interwork --with-pic --with-expat ) cookbook_configure """ ================================================ FILE: recipes/tools/gnu-grep/grep.patch ================================================ Only in source: grep.patch diff -ru source/lib/getdtablesize.c source-new/lib/getdtablesize.c --- source/lib/getdtablesize.c 2017-07-23 20:50:44.287742363 -0700 +++ source-new/lib/getdtablesize.c 2017-07-23 20:51:06.271284748 -0700 @@ -109,15 +109,6 @@ int getdtablesize (void) { - struct rlimit lim; - - if (getrlimit (RLIMIT_NOFILE, &lim) == 0 - && 0 <= lim.rlim_cur && lim.rlim_cur <= INT_MAX - && lim.rlim_cur != RLIM_INFINITY - && lim.rlim_cur != RLIM_SAVED_CUR - && lim.rlim_cur != RLIM_SAVED_MAX) - return lim.rlim_cur; - return INT_MAX; } diff -ru source/lib/getprogname.c source-new/lib/getprogname.c --- source/lib/getprogname.c 2017-01-16 09:29:13.000000000 -0800 +++ source-new/lib/getprogname.c 2017-07-23 20:49:21.133618122 -0700 @@ -43,13 +43,11 @@ # include #endif -#ifdef __sgi # include # include # include # include -# include -#endif +# include #include "dirname.h" @@ -178,7 +176,16 @@ } return NULL; # else -# error "getprogname module not ported to this OS" + char filename[PATH_MAX]; + int fd = open ("sys:exe", O_RDONLY); + if (fd > 0) { + int len = read(fd, filename, PATH_MAX-1); + if (len > 0) { + filename[len] = '\0'; + return strdup(filename); + } + } + return NULL; # endif } diff -ru source/src/grep.c source-new/src/grep.c --- source/src/grep.c 2017-07-02 10:41:41.000000000 -0700 +++ source-new/src/grep.c 2017-07-23 20:53:10.439131874 -0700 @@ -2895,7 +2895,7 @@ #ifdef _SC_PAGESIZE long psize = sysconf (_SC_PAGESIZE); #else - long psize = getpagesize (); + long psize = 4096; #endif if (! (0 < psize && psize <= (SIZE_MAX - sizeof (uword)) / 2)) abort (); ================================================ FILE: recipes/tools/gnu-grep/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/grep/grep-3.1.tar.xz" blake3 = "46b6e24dfa1b0f309f4eae3c450d612396c8faa6510b53a55f629e4f4c70b4a3" patches = ["grep.patch"] [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --prefix=/ ) cookbook_configure rm -rf "${COOKBOOK_STAGE}"/{lib,share} """ ================================================ FILE: recipes/tools/helix/recipe.toml ================================================ #TODO signal handling is disabled, it should be re-enabled when Redox is ready #TODO language files are not built for fennel and crstalline langauges #TODO configuration - https://docs.helix-editor.com/install.html#configuring-helixs-runtime-files [source] git = "https://github.com/greyshaman/helix.git" rev = "34b91f42d9e9b04ba39cb6cc0f7c044d8ca4261d" [build] template = "custom" script = """ DYNAMIC_INIT export CFLAGS="$CFLAGS -D__redox__" COOKBOOK_CARGO_PATH="helix-term" cookbook_cargo mv "${COOKBOOK_STAGE}/usr/bin/hx" "${COOKBOOK_STAGE}/usr/bin/helix" mkdir -p "${COOKBOOK_STAGE}/usr/lib/helix/runtime/grammars" mkdir -p "${COOKBOOK_STAGE}/usr/lib/helix/runtime/queries" mkdir -p "${COOKBOOK_STAGE}/usr/lib/helix/runtime/themes" echo "show runtime grammars dir content" cp ${COOKBOOK_SOURCE}/runtime/grammars/*.so ${COOKBOOK_STAGE}/usr/lib/helix/runtime/grammars/ cp -r ${COOKBOOK_SOURCE}/runtime/queries/* ${COOKBOOK_STAGE}/usr/lib/helix/runtime/queries/ cp -r ${COOKBOOK_SOURCE}/runtime/themes/* ${COOKBOOK_STAGE}/usr/lib/helix/runtime/themes/ cp "${COOKBOOK_SOURCE}/runtime/tutor" ${COOKBOOK_STAGE}/usr/lib/helix/runtime/ echo '#!/usr/bin/env bash' > "${COOKBOOK_STAGE}/usr/bin/hx" echo 'export HELIX_RUNTIME=/usr/lib/helix/runtime' >> "${COOKBOOK_STAGE}/usr/bin/hx" echo '/usr/bin/helix $@' >> "${COOKBOOK_STAGE}/usr/bin/hx" chmod +x ${COOKBOOK_STAGE}/usr/bin/hx """ ================================================ FILE: recipes/tools/libc-bench/recipe.toml ================================================ [source] tar = "https://www.etalabs.net/releases/libc-bench-20110206.tar.gz" blake3 = "64093102f29faa76da455f55a7b4be25b6d74d5c3d6fe88dbbc38aaae185182f" patches = ["redox.patch"] [build] template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"$(${NPROC})" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v "libc-bench" "${COOKBOOK_STAGE}/usr/bin" """ ================================================ FILE: recipes/tools/libc-bench/redox.patch ================================================ diff -ruw source/Makefile source-new/Makefile --- source/Makefile 2011-01-31 00:13:00.000000000 -0700 +++ source-new/Makefile 2018-12-25 09:07:37.564520567 -0700 @@ -4,7 +4,7 @@ CFLAGS = -Os LDFLAGS = -static -LIBS = -lpthread -lrt -lpthread +LIBS = -lpthread all: libc-bench diff -ruw source/utf8.c source-new/utf8.c --- source/utf8.c 2011-01-24 20:08:38.000000000 -0700 +++ source-new/utf8.c 2018-12-25 08:52:35.893821291 -0700 @@ -3,7 +3,7 @@ #include #include #include -#include +//#include size_t b_utf8_bigbuf(void *dummy) { @@ -18,7 +18,7 @@ || setlocale(LC_CTYPE, "en.UTF-8") || setlocale(LC_CTYPE, "de_DE-8") || setlocale(LC_CTYPE, "fr_FR-8"); - if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; + //if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; buf = malloc(500000); wbuf = malloc(500000*sizeof(wchar_t)); @@ -56,7 +56,7 @@ || setlocale(LC_CTYPE, "en.UTF-8") || setlocale(LC_CTYPE, "de_DE-8") || setlocale(LC_CTYPE, "fr_FR-8"); - if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; + //if (strcmp(nl_langinfo(CODESET), "UTF-8")) return -1; buf = malloc(500000); l = 0; ================================================ FILE: recipes/tools/lsd/recipe.toml ================================================ [source] git = "https://github.com/lsd-rs/lsd" [build] template = "cargo" ================================================ FILE: recipes/tools/nano/recipe.toml ================================================ [source] tar = "https://www.nano-editor.org/dist/v7/nano-7.2.tar.xz" [build] template = "custom" dependencies = [ "ncursesw", ] script = """ DYNAMIC_INIT cookbook_configure """ [package] dependencies = [ "terminfo" ] ================================================ FILE: recipes/tools/onefetch/recipe.toml ================================================ [source] git = "https://github.com/o2sh/onefetch" [build] template = "cargo" ================================================ FILE: recipes/tools/patchelf/recipe.toml ================================================ [source] tar = "https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0.tar.bz2" blake3 = "f843b32bdf3ee8a1f465e92d3fef34f30c48ccef9c112fdb793e2e7f2ae7283a" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/tools/pathfinder/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/pathfinder.git" branch = "redox" upstream = "https://github.com/servo/pathfinder.git" [build] template = "custom" dependencies = [ "mesa", "zlib", ] script = """ cargo rustc \ --target "$TARGET" \ --release \ --manifest-path "${COOKBOOK_SOURCE}/examples/canvas_glutin_minimal/Cargo.toml" \ -- \ -L "${COOK_SYSROOT}/lib" \ -C link-args="-Wl,-Bstatic $("${TARGET}-pkg-config" --libs osmesa) -lz -lstdc++ -lc -lgcc" mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "target/${TARGET}/release/canvas_glutin_minimal" "${COOKBOOK_STAGE}/bin/pathfinder" """ ================================================ FILE: recipes/tools/perg/recipe.toml ================================================ [source] git = "https://github.com/guerinoni/perg.git" rev = "e206fab6bbd9c363c686fa7503d318304e48ddbe" [build] template = "cargo" ================================================ FILE: recipes/tools/periodictable/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/periodictable.git" [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v "${COOKBOOK_SOURCE}/pkg/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/periodictable" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons" cp -v "${COOKBOOK_SOURCE}/pkg/icon.png" "${COOKBOOK_STAGE}/usr/share/icons/periodictable.png" """ [package] dependencies = [ "orbital", ] ================================================ FILE: recipes/tools/powerline/recipe.toml ================================================ [source] git = "https://github.com/jD91mZM2/powerline-rs" [build] template = "custom" script = """ export CARGOFLAGS="--no-default-features --features chrono" # --locked uses a reallyyyy old redox_syscall and libc which fails ${COOKBOOK_CARGO} install \ --path "${COOKBOOK_SOURCE}/${COOKBOOK_CARGO_PATH}" \ --root "${COOKBOOK_STAGE}/usr" \ --no-default-features \ --features chrono \ ${install_flags} """ ================================================ FILE: recipes/tools/ripgrep/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/ripgrep.git" [build] template = "cargo" ================================================ FILE: recipes/tools/schismtracker/recipe.toml ================================================ [source] tar = "https://github.com/schismtracker/schismtracker/archive/20181223.tar.gz" blake3 = "057e973f4f84cf898e2240d67c0e92f25086d8b9ffdc7e0c7ef81dd8dc81bc70" patches = ["redox.patch"] script = """ autoreconf -i """ [build] template = "custom" dependencies = [ "sdl1", "liborbital", "libiconv", ] script = """ export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL" export SDL_CONFIG="${COOKBOOK_SYSROOT}/bin/sdl-config" COOKBOOK_CONFIGURE_FLAGS=( --build="$(gcc -dumpmachine)" --host="${TARGET}" --prefix="" --with-sdl-prefix="${COOKBOOK_SYSROOT}" ) cookbook_configure """ ================================================ FILE: recipes/tools/schismtracker/redox.patch ================================================ diff -rupNw source-original/Makefile.am source/Makefile.am --- source-original/Makefile.am 2018-08-10 07:04:54.000000000 +0200 +++ source/Makefile.am 2018-12-30 23:18:07.957244170 +0100 @@ -223,7 +223,7 @@ files_macosx = \ endif if USE_NETWORK -cflags_network=-DUSE_NETWORK +#cflags_network=-DUSE_NETWORK endif diff -rupNw source-original/schism/main.c source/schism/main.c --- source-original/schism/main.c 2018-08-10 07:04:54.000000000 +0200 +++ source/schism/main.c 2018-12-30 23:19:24.954046191 +0100 @@ -1033,7 +1033,7 @@ int main(int argc, char **argv) video_fullscreen(0); - tzset(); // localtime_r wants this + //tzset(); // localtime_r wants this srand(time(NULL)); parse_options(argc, argv); /* shouldn't this be like, first? */ ================================================ FILE: recipes/tools/sed/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/sed/sed-4.4.tar.xz" patches = [ "sed.patch" ] [build] template = "configure" ================================================ FILE: recipes/tools/sed/sed.patch ================================================ diff -ruN sed-4.4/sed/mbcs.c source/sed/mbcs.c --- sed-4.4/sed/mbcs.c 2017-01-01 03:17:10.000000000 -0800 +++ source/sed/mbcs.c 2025-06-06 04:36:30.129312397 -0700 @@ -38,6 +38,7 @@ int is_mb_char (int ch, mbstate_t *cur_stat) { + return 0; // FIXME: Implement mbrtowc in relibc, then remove this line const char c = ch ; const int mb_pending = !mbsinit (cur_stat); const int result = mbrtowc (NULL, &c, 1, cur_stat); ================================================ FILE: recipes/tools/shellharden/recipe.toml ================================================ [source] git = "https://github.com/anordal/shellharden.git" rev = "bd24c99d5d1e76452b6d0749404837c1c95d923c" [build] template = "cargo" ================================================ FILE: recipes/tools/shellstorm/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/shellstorm.git" [build] template = "cargo" ================================================ FILE: recipes/tools/smith/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/Smith.git" [build] template = "cargo" ================================================ FILE: recipes/tools/sodium/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/sodium.git" [build] template = "custom" script = """ DYNAMIC_INIT "${COOKBOOK_CARGO}" install \ --path "${COOKBOOK_SOURCE}" \ --root "${COOKBOOK_STAGE}/usr" \ --locked \ ${install_flags} \ --features orbital mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps" cp -v ${COOKBOOK_SOURCE}/manifest "${COOKBOOK_STAGE}/usr/share/ui/apps/sodium" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons" cp -v ${COOKBOOK_SOURCE}/icon.png "${COOKBOOK_STAGE}/usr/share/icons/sodium.png" """ ================================================ FILE: recipes/tools/tokei/recipe.toml ================================================ [source] git = "https://github.com/XAMPPRocky/tokei.git" [build] template = "cargo" ================================================ FILE: recipes/tools/twin-commander/recipe.toml ================================================ [source] git = "https://github.com/kivimango/twin-commander.git" [build] template = "cargo" ================================================ FILE: recipes/tools/vim/recipe.toml ================================================ [source] tar = "https://github.com/vim/vim/archive/refs/tags/v9.1.0821.tar.gz" blake3 = "d1f5802ceb047b09143f1764bf4016f084cf7e6c026c7047919264c9f262a5dd" patches = ["vim.patch"] [build] dependencies = ["ncursesw"] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ export vim_cv_toupper_broken=no export vim_cv_tgetent=zero export vim_cv_terminfo=yes export vim_cv_tty_group=world export vim_cv_getcwd_broken=no export vim_cv_stat_ignores_slash=yes export vim_cv_memmove_handles_overlap=yes COOKBOOK_CONFIGURE="./configure" COOKBOOK_CONFIGURE_FLAGS+=( --with-tlib=ncursesw ) cookbook_configure """ ================================================ FILE: recipes/tools/vim/vim.patch ================================================ diff -ruwN source/src/configure.ac source-new/src/configure.ac --- source/src/configure.ac 2024-10-29 04:05:26.000000000 +0700 +++ source-new/src/configure.ac 2025-08-06 03:15:52.796303989 +0700 @@ -3759,7 +3759,7 @@ dnl Check for functions in one big call, to reduce the size of configure. dnl Can only be used for functions that do not require any include. AC_CHECK_FUNCS(fchdir fchown fchmod fsync getcwd getpseudotty \ - getpwent getpwnam getpwuid getrlimit gettimeofday localtime_r lstat \ + getpwent getpwnam getpwuid gettimeofday localtime_r lstat \ memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ sigprocmask sigvec strcasecmp strcoll strerror strftime stricmp strncasecmp \ diff -ruwN source/src/feature.h source-new/src/feature.h --- source/src/feature.h 2024-10-29 04:05:26.000000000 +0700 +++ source-new/src/feature.h 2025-08-06 03:16:27.596296730 +0700 @@ -272,6 +272,7 @@ */ #if defined(FEAT_NORMAL) \ && defined(FEAT_EVAL) \ + && !defined (__redox__) /* disable setitimer */ \ && ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H) \ && (!defined(MACOS_X) || defined(HAVE_DISPATCH_DISPATCH_H))) \ || defined(MSWIN)) diff -ruwN source/src/libvterm/include/vterm.h source-new/src/libvterm/include/vterm.h --- source/src/libvterm/include/vterm.h 2024-10-29 04:05:26.000000000 +0700 +++ source-new/src/libvterm/include/vterm.h 2025-08-06 03:15:02.506316769 +0700 @@ -17,9 +17,11 @@ #define FALSE 0 // VIM: from stdint.h +#if !defined (__redox__) typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; +#endif // VIM: define max screen cols and rows #define VTERM_MAX_COLS 1000 diff -ruwN source/src/memfile.c source-new/src/memfile.c --- source/src/memfile.c 2024-10-29 04:05:26.000000000 +0700 +++ source-new/src/memfile.c 2025-08-06 03:15:36.896308173 +0700 @@ -599,6 +599,8 @@ // No sync() on Stratus VOS # if defined(__OPENNT) || defined(__TANDEM) || defined(__VOS__) fflush(NULL); +# elif defined(__redox__) + fsync(mfp->mf_fd); # else sync(); # endif diff -ruwN source/src/auto/configure source-new/src/auto/configure --- source/src/auto/configure 2024-10-29 04:05:26.000000000 +0700 +++ source-new/src/auto/configure 2025-08-06 03:56:11.765660165 +0700 @@ -13358,12 +13358,6 @@ printf "%s\n" "#define HAVE_GETPWUID 1" >>confdefs.h fi -ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" -if test "x$ac_cv_func_getrlimit" = xyes -then : - printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h - -fi ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" if test "x$ac_cv_func_gettimeofday" = xyes then : ================================================ FILE: recipes/tools/xz/recipe.toml ================================================ [source] tar = "https://github.com/tukaani-project/xz/releases/download/v5.2.13/xz-5.2.13.tar.gz" blake3 = "edc6350542e8cb7188a878135e5b9bd592d687e5b47451ca1c89d51cc4bc6b53" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_STATIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --disable-lzmadec --disable-lzmainfo --disable-xz --disable-xzdec --enable-threads=no ) cookbook_configure """ ================================================ FILE: recipes/tui/goaccess/recipe.toml ================================================ [source] tar = "https://tar.goaccess.io/goaccess-1.9.4.tar.gz" blake3 = "a7a7641c98956e8941191956129141e071321851d004269c7d21bce536d9224a" #git = "https://github.com/allinurl/goaccess.git" #branch = "master" patches = [ "redox1.patch", "redox2.patch", ] # This is only needed when compiling from git. The tar.gz already has the make files. script = """ autoreconf -fiv automake --add-missing --copy --force-missing """ [build] dependencies = ["ncursesw"] template = "custom" script = """ # Compile bin2c to be executed on the host gcc -O2 -o "$COOKBOOK_BUILD/bin2c" "$COOKBOOK_SOURCE/src/bin2c.c" chmod +x "$COOKBOOK_BUILD/bin2c" # Compile goaccess export COOKBOOK_NOSTRIP=1 DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --host=$ARCH-unknown-redox --enable-utf8 --disable-geoip --prefix=/usr --disable-dependency-tracking --with-bin2c-path="$COOKBOOK_BUILD/src/bin2c" ) cookbook_configure """ ================================================ FILE: recipes/tui/goaccess/redox1.patch ================================================ From 2444d71e7815c8b7f3bd4462b8418d9c7e8c5667 Mon Sep 17 00:00:00 2001 From: Rafael Senties Martinelli Date: Sun, 19 Oct 2025 19:42:46 +0200 Subject: [PATCH 1/2] Ensure fixed-width integers and PIPE_BUF are defined for Redox or minimal libc --- src/websocket.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/websocket.h b/src/websocket.h index 79d03dff..31847b10 100644 --- a/src/websocket.h +++ b/src/websocket.h @@ -45,8 +45,15 @@ #include #endif -#if defined(__linux__) || defined(__CYGWIN__) +#if defined(__linux__) || defined(__CYGWIN__) || defined(__redox__) # include +#if defined(__redox__) +# include /* for uint*_t types */ +# include /* for PIPE_BUF */ +# ifndef PIPE_BUF +# define PIPE_BUF 4096 +# endif +#endif #if ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 9)) #if defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN) # include -- 2.51.1.dirty ================================================ FILE: recipes/tui/goaccess/redox2.patch ================================================ From 4a564a6b0f9d4ee7a804b9dbb391e7421187014b Mon Sep 17 00:00:00 2001 From: Rafael Senties Martinelli Date: Sun, 19 Oct 2025 20:08:10 +0200 Subject: [PATCH 2/2] Add option to ignore building bin2c --- Makefile.am | 9 +++++++++ configure.ac | 16 ++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/Makefile.am b/Makefile.am index 7696c8f5..8d0fcdcd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -51,6 +51,15 @@ CLEANFILES = \ resources/js/charts.js.tmp \ resources/js/app.js.tmp +# Prevent rebuilding bin2c if binary already exists +bin2c$(EXEEXT): +if USE_PREBUILT_BIN2C + @echo "Using prebuilt bin2c from $(BIN2C_PATH)" + cp $(BIN2C_PATH) bin2c$(EXEEXT) +else + $(AM_V_CCLD)$(LINK) $(bin2c_OBJECTS) $(bin2c_LDADD) $(LIBS) +endif + # Tpls src/tpls.h: bin2c$(EXEEXT) $(srcdir)/resources/tpls.html if HAS_SEDTR diff --git a/configure.ac b/configure.ac index 790499ce..feaf72d2 100644 --- a/configure.ac +++ b/configure.ac @@ -105,6 +105,22 @@ if test "$with_getline" = "yes"; then AC_DEFINE([WITH_GETLINE], 1, [Build using GNU getline.]) fi +# bin2c +AC_ARG_WITH([bin2c-path], + [AS_HELP_STRING([--with-bin2c-path=PATH], [Use prebuilt bin2c binary at PATH])], + [BIN2C_PATH="$withval"], + [BIN2C_PATH=""]) + +if test -n "$BIN2C_PATH"; then + USE_PREBUILT_BIN2C=true +else + USE_PREBUILT_BIN2C=false +fi + +AM_CONDITIONAL([USE_PREBUILT_BIN2C], [test "$USE_PREBUILT_BIN2C" = true]) +AC_SUBST([BIN2C_PATH]) + + # UTF8 AC_ARG_ENABLE([utf8],[AS_HELP_STRING([--enable-utf8],[Enable ncurses library that handles wide characters. Default is disabled])],[utf8="$enableval"],[utf8=no]) -- 2.51.1.dirty ================================================ FILE: recipes/tui/mdp/recipe.toml ================================================ [source] git = "https://github.com/visit1985/mdp.git" [build] template = "custom" dependencies = [ "ncursesw", "terminfo" ] script = """ rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/" ./ export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/ncursesw" "${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}" # Install "${COOKBOOK_MAKE}" DESTDIR="${COOKBOOK_STAGE}" PREFIX="" install """ ================================================ FILE: recipes/tui/ncdu/recipe.toml ================================================ [source] tar = "https://dev.yorhel.nl/download/ncdu-1.22.tar.gz" blake3 = "b7838c03ded7207a328a26c840ec3d62d3be6bbf7269a70ea3430c6cbf065960" [package] dependencies = ["terminfo"] [build] template = "custom" dependencies = ["ncursesw"] script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/video/sdl-player/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/sdl-player.git" [build] template = "custom" dependencies = [ "ffmpeg6", "liborbital", "sdl1", "zlib" ] script = """ rsync -av --delete --exclude='.git' "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j"$(${NPROC})" mkdir -pv "${COOKBOOK_STAGE}/bin" cp -v "player" "${COOKBOOK_STAGE}/bin/sdl-player" """ ================================================ FILE: recipes/web/netsurf/01_redox.patch ================================================ diff -ruwN source/Makefile source-new/Makefile --- source/Makefile 2023-12-28 07:57:05.071795200 +0700 +++ source-new/Makefile 2025-07-20 11:58:36.652747547 +0700 @@ -110,7 +110,7 @@ # prefixed install macro for each host sub target define do_build_prefix_install - $(MAKE) install --directory=$1 HOST=$(BUILD) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR= + $(MAKE) install --directory=$1 HOST=$(BUILD) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR= CC=cc LDFLAGS= endef diff -ruwN source/buildsystem/makefiles/Makefile.tools source-new/buildsystem/makefiles/Makefile.tools --- source/buildsystem/makefiles/Makefile.tools 2023-12-28 07:57:21.479359900 +0700 +++ source-new/buildsystem/makefiles/Makefile.tools 2025-07-20 11:58:36.662747547 +0700 @@ -135,7 +135,7 @@ endif # Search the path for the compiler - toolpath_ := $(shell /bin/which $(CC__)) + toolpath_ := $(shell which $(CC__)) ifeq ($(toolpath_),) toolpath_ := /opt/netsurf/$(HOST)/cross/bin/ CC__ := $(toolpath_)$(HOST)-gcc diff -ruwN source/buildsystem/makefiles/Makefile.top source-new/buildsystem/makefiles/Makefile.top --- source/buildsystem/makefiles/Makefile.top 2023-12-28 07:57:21.479359900 +0700 +++ source-new/buildsystem/makefiles/Makefile.top 2025-07-20 11:58:36.662747547 +0700 @@ -462,7 +462,7 @@ define build_c ifeq ($$(findstring $$(BUILDDIR)/$2,$$(BUILDFILES)),) - $$(BUILDDIR)/$2: $$(BUILDDIR)/stamp $1 + $$(BUILDDIR)/$2: $$(BUILDDIR)/stamp $1 | $$(PRE_TARGETS) $$(VQ)$$(ECHO) $$(ECHOFLAGS) " COMPILE: $1" $$(Q)$$(CC) -MMD -MP $$($3) -o $$@ -c $1 diff -ruwN source/libnsfb/Makefile source-new/libnsfb/Makefile --- source/libnsfb/Makefile 2023-12-28 07:57:22.311338000 +0700 +++ source-new/libnsfb/Makefile 2025-07-20 11:58:36.652747547 +0700 @@ -43,10 +43,10 @@ NSFB_XCB_PKG_NAMES := xcb xcb-icccm xcb-image xcb-keysyms xcb-atom # determine which surface handlers can be compiled based upon avalable library -$(eval $(call pkg_config_package_available,NSFB_VNC_AVAILABLE,libvncserver)) +#$(eval $(call pkg_config_package_available,NSFB_VNC_AVAILABLE,libvncserver)) $(eval $(call pkg_config_package_available,NSFB_SDL_AVAILABLE,sdl)) -$(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES))) -$(eval $(call pkg_config_package_available,NSFB_WLD_AVAILABLE,wayland-client)) +#$(eval $(call pkg_config_package_available,NSFB_XCB_AVAILABLE,$(NSFB_XCB_PKG_NAMES))) +#$(eval $(call pkg_config_package_available,NSFB_WLD_AVAILABLE,wayland-client)) # Flags and setup for each support library ifeq ($(NSFB_SDL_AVAILABLE),yes) diff -ruwN source/libnsfb/src/plot.h source-new/libnsfb/src/plot.h --- source/libnsfb/src/plot.h 2023-12-28 07:57:22.315338000 +0700 +++ source-new/libnsfb/src/plot.h 2025-07-20 11:58:36.652747547 +0700 @@ -46,7 +46,7 @@ #error "Endian determination failed" #endif #else - #include + #include #if defined(__BYTE_ORDER__) #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #define NSFB_BE_BYTE_ORDER diff -ruwN source/netsurf/Makefile.config source-new/netsurf/Makefile.config --- source/netsurf/Makefile.config 1970-01-01 07:00:00.000000000 +0700 +++ source-new/netsurf/Makefile.config 2025-07-20 11:58:36.652747547 +0700 @@ -0,0 +1,28 @@ +override NETSURF_HOMEPAGE := "https://www.redox-os.org/" +override NETSURF_FB_FRONTEND := sdl + +override NETSURF_USE_JPEG := YES +override NETSURF_USE_BMP := YES +override NETSURF_USE_OPENSSL := YES +override NETSURF_USE_CURL := YES +override NETSURF_USE_PNG := YES + +override NETSURF_USE_LIBICONV_PLUG := NO +override NETSURF_USE_NSSVG := NO +override NETSURF_USE_RSVG := NO +override NETSURF_USE_DUKTAPE := YES +override NETSURF_USE_HARU_PDF := NO +override NETSURF_USE_VIDEO := NO + +override NETSURF_FB_FONTLIB := freetype +override NETSURF_FB_FONTPATH := /usr/share/fonts/ +override NETSURF_FB_FONT_SANS_SERIF := Sans/Fira/Regular.ttf +override NETSURF_FB_FONT_SANS_SERIF_BOLD := Sans/Fira/Bold.ttf +override NETSURF_FB_FONT_SANS_SERIF_ITALIC := Sans/Fira/Regular.ttf +override NETSURF_FB_FONT_SANS_SERIF_ITALIC_BOLD := Sans/Fira/Bold.ttf +override NETSURF_FB_FONT_SERIF := Sans/Fira/Regular.ttf +override NETSURF_FB_FONT_SERIF_BOLD := Sans/Fira/Bold.ttf +override NETSURF_FB_FONT_MONOSPACE := Mono/Fira/Regular.ttf +override NETSURF_FB_FONT_MONOSPACE_BOLD := Mono/Fira/Bold.ttf +override NETSURF_FB_FONT_CURSIVE := Sans/Fira/Regular.ttf +override NETSURF_FB_FONT_FANTASY := Sans/Fira/Regular.ttf diff -ruwN source/netsurf/frontends/framebuffer/Makefile source-new/netsurf/frontends/framebuffer/Makefile --- source/netsurf/frontends/framebuffer/Makefile 2023-12-28 07:57:22.987320000 +0700 +++ source-new/netsurf/frontends/framebuffer/Makefile 2025-07-20 11:58:36.662747547 +0700 @@ -200,7 +200,7 @@ install-framebuffer: $(VQ)echo " INSTALL: $(DESTDIR)/$(PREFIX)" $(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN) - $(Q)$(INSTALL) -T $(EXETARGET) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)/netsurf-fb + $(Q)$(INSTALL) $(EXETARGET) $(DESTDIR)/$(NETSURF_FRAMEBUFFER_BIN)/netsurf-fb $(Q)$(INSTALL) -d $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES) $(Q)for F in $(NETSURF_FRAMEBUFFER_RESOURCE_LIST); do $(INSTALL) -m 644 $(FRONTEND_RESOURCES_DIR)/$$F $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES); done $(Q)$(INSTALL) -m 644 -T $(MESSAGES_TARGET)/en/Messages $(DESTDIR)/$(NETSURF_FRAMEBUFFER_RESOURCES)/Messages diff -ruwN source/netsurf/utils/config.h source-new/netsurf/utils/config.h --- source/netsurf/utils/config.h 2023-12-28 07:57:23.095317100 +0700 +++ source-new/netsurf/utils/config.h 2025-07-20 12:12:51.782724549 +0700 @@ -63,7 +63,8 @@ defined(__BEOS__) || \ defined(__amigaos4__) || \ defined(__AMIGA__) || \ - defined(__MINT__)) + defined(__MINT__) || \ + defined(__redox__)) #undef HAVE_STRPTIME #undef HAVE_STRFTIME #else @@ -136,7 +137,7 @@ #endif #define HAVE_MMAP -#if (defined(_WIN32) || defined(__riscos__) || defined(__HAIKU__) || defined(__BEOS__) || defined(__amigaos4__) || defined(__AMIGA__) || defined(__MINT__)) +#if (defined(_WIN32) || defined(__riscos__) || defined(__HAIKU__) || defined(__BEOS__) || defined(__amigaos4__) || defined(__AMIGA__) || defined(__MINT__) || defined(__redox__)) #undef HAVE_MMAP #endif @@ -149,7 +150,7 @@ #define HAVE_DIRFD #define HAVE_UNLINKAT #define HAVE_FSTATAT -#if (defined(_WIN32) || defined(__riscos__) || defined(__HAIKU__) || defined(__BEOS__) || defined(__amigaos4__) || defined(__AMIGA__) || defined(__MINT__)) +#if (defined(_WIN32) || defined(__riscos__) || defined(__HAIKU__) || defined(__BEOS__) || defined(__amigaos4__) || defined(__AMIGA__) || defined(__MINT__) || defined(__redox__)) #undef HAVE_DIRFD #undef HAVE_UNLINKAT #undef HAVE_FSTATAT ================================================ FILE: recipes/web/netsurf/manifest ================================================ name=Netsurf binary=/usr/bin/netsurf-fb icon=/ui/icons/apps/internet-web-browser.png accept=*.html author=The Netsurf Developers description=Browser for Redox ================================================ FILE: recipes/web/netsurf/recipe.toml ================================================ [source] tar = "https://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-3.11.tar.gz" blake3 = "cd406668a9ed5712efac1a8685125b83626690b73bbc6cb5de82ef00e3f65087" patches = [ "./01_redox.patch" ] [build] template = "custom" dependencies = [ "curl", "expat", "libjpeg", "libpng", "nghttp2", "openssl3", "sdl1", "zlib", "freetype2", "liborbital", "libiconv" ] dev-dependencies = [ "host:gperf" ] script = """ DYNAMIC_INIT # Netsurf does not currently support out-of-tree builds :( rsync -av --delete "${COOKBOOK_SOURCE}/" ./ # obscure crash from sccache if jobs number is too much COOKBOOK_MAKE_JOBS="$(( ${COOKBOOK_MAKE_JOBS} > 8 ? 8 : ${COOKBOOK_MAKE_JOBS} ))" export TARGET="framebuffer" export CFLAGS="-I${PWD}/inst-${TARGET}/include" export LDFLAGS="${LDFLAGS} -L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition -Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" # nghttp2 is not linked for some reason export LDFLAGS="${LDFLAGS} -lcurl -lnghttp2" # netsurf mixes up CFLAGS for host and build export CC="${CC} ${CPPFLAGS}" "$COOKBOOK_MAKE" PREFIX=/usr V=1 -j"$COOKBOOK_MAKE_JOBS" "$COOKBOOK_MAKE" DESTDIR="$COOKBOOK_STAGE" PREFIX=/usr install -j"$COOKBOOK_MAKE_JOBS" mkdir -pv "$COOKBOOK_STAGE/ui/apps" cp -v "${COOKBOOK_RECIPE}/manifest" "$COOKBOOK_STAGE/ui/apps/00_netsurf" """ [package] dependencies = [ "ca-certificates", "orbital", ] ================================================ FILE: recipes/web/website/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/website" [build] template = "custom" script = """ export PATH="$HOME/.local/bin:$HOME/.local/opt/node/bin:$PATH" if ! command -v node &> /dev/null; then echo "Installing Node via webi..." curl -sS https://webi.sh/node | sh fi if ! command -v hugo &> /dev/null; then echo "Installing Hugo via webi..." curl -sS https://webi.sh/hugo | sh fi if ! command -v postcss &> /dev/null; then echo "Installing PostCSS via npm..." npm install -g postcss-cli fi rsync -a "${COOKBOOK_SOURCE}/" ./ ./hugo.sh mkdir -pv "${COOKBOOK_STAGE}"/usr/share/website cp -rv "${COOKBOOK_BUILD}"/build/public/* "${COOKBOOK_STAGE}"/usr/share/website """ ================================================ FILE: recipes/wip/a11y/espeak-ng/recipe.toml ================================================ # compiles, but only wavefile generation is supported #TODO waiting for a custom libpcaudio0 backend for real-time output (bpisch is working on it) [source] git = "https://gitlab.redox-os.org/bpisch/espeak-ng.git" branch = "redox" [build] template = "custom" dependencies = ["libstdcxx"] script = """ DYNAMIC_INIT cp -R "${COOKBOOK_SOURCE}/espeak-ng-data" . cookbook_cmake cp -R "${COOKBOOK_SOURCE}/espeak-ng-data" "${COOKBOOK_STAGE}/usr/share/espeak-ng-data" """ ================================================ FILE: recipes/wip/a11y/orca/recipe.toml ================================================ #TODO not compiled or tested # dependencies: https://gitlab.gnome.org/GNOME/orca/#dependencies [source] tar = "https://download.gnome.org/sources/orca/48/orca-48.6.tar.xz" [build] template = "meson" dependencies = [ "atk", "at-spi2-core", "gtk3", ] ================================================ FILE: recipes/wip/ai/nnx/recipe.toml ================================================ #TODO fs2 crate error [source] git = "https://github.com/webonnx/wonnx" shallow_clone = true [build] template = "custom" dependencies = [ "openssl3", ] script = """ DYNAMIC_INIT cookbook_cargo_packages wonnx-cli """ ================================================ FILE: recipes/wip/ai/rustgpt/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/tekaratzas/RustGPT" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/ai/tgs/recipe.toml ================================================ #TODO make libtorch work [source] git = "https://github.com/warpy-ai/tgs" shallow_clone = true [build] template = "cargo" dependencies = [ "libtorch", ] ================================================ FILE: recipes/wip/analysis/binsider/recipe.toml ================================================ #TODO async-io and rustix crates error [source] git = "https://github.com/orhun/binsider" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/analysis/cutter/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log # build instructions: https://cutter.re/docs/building.html [source] tar = "https://github.com/rizinorg/cutter/releases/download/v2.4.1/Cutter-v2.4.1-src.tar.gz" [build] template = "cmake" #dependencies = [ # "libzip", # "zlib", # "qt6-base", # "qt6-svg", #] ================================================ FILE: recipes/wip/analysis/email-sleuth/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/tokenizer-decode/email-sleuth" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/analysis/flowgger/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/awslabs/flowgger/wiki/Installation [source] git = "https://github.com/awslabs/flowgger" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/analysis/graphs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/World/Graphs" rev = "v1.8.7" shallow_clone = true [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", "libgee", "sqlite3", ] ================================================ FILE: recipes/wip/analysis/mmdr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/1jehuang/mermaid-rs-renderer" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/analysis/netdata/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://learn.netdata.cloud/docs/developer-and-contributor-corner/build-the-netdata-agent-yourself/compile-from-source-code#building-netdata [source] tar = "https://github.com/netdata/netdata/releases/download/v2.8.5/netdata-v2.8.5.tar.gz" [build] template = "cmake" cmakeflags = [ "-DDEFAULT_FEATURE_STATE=False", ] #dependencies = [ # "zlib", # "libuv", # "libuuid", #] ================================================ FILE: recipes/wip/analysis/rizin/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/rizinorg/rizin/blob/dev/BUILDING.md [source] tar = "https://github.com/rizinorg/rizin/releases/download/v0.8.1/rizin-src-v0.8.1.tar.xz" [build] template = "meson" mesonflags = [ "-Denable_tests=false", "-Denable_rz_test=false", ] ================================================ FILE: recipes/wip/analysis/tmmpr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/tanciaku/tmmpr" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/archives/7-zip/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/mcmilk/7-Zip/tree/master/DOC#readme [source] tar = "https://7-zip.org/a/7z2301-src.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/archives/lzip/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://download.savannah.gnu.org/releases/lzip/lzip-1.24.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/archives/mlar/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ANSSI-FR/MLA" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages mlar """ ================================================ FILE: recipes/wip/archives/orz/recipe.toml ================================================ #TODO don't run [source] git = "https://github.com/richox/orz" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/archives/ouch/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/ouch-org/ouch" shallow_clone = true [build] template = "cargo" dependencies = [ "zlib", "bzip2", "xz", ] ================================================ FILE: recipes/wip/archives/plzip/recipe.toml ================================================ #TODO missing headers [source] tar = "https://download.savannah.gnu.org/releases/lzip/plzip/plzip-1.11.tar.gz" [build] template = "configure" dependencies = [ "lzlib", ] ================================================ FILE: recipes/wip/archives/unzrip/recipe.toml ================================================ #TODO make zstd work (after cargo update) [source] git = "https://github.com/quininer/unzrip" shallow_clone = true [build] template = "cargo" dependencies = [ "zstd", ] ================================================ FILE: recipes/wip/backup/borg/recipe.toml ================================================ #TODO missing script for pip # build instructions: https://borgbackup.readthedocs.io/en/stable/installation.html#source-install [source] tar = "https://github.com/borgbackup/borg/releases/download/1.4.1/borgbackup-1.4.1.tar.gz" [build] template = "custom" dependencies = [ "openssl3", "libacl", "libattr", "xxhash", "lz4", "zstd", ] ================================================ FILE: recipes/wip/backup/partclone/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Thomas-Tsai/partclone" rev = "0.3.40" shallow_clone = true script = """ autotools_recursive_regenerate """ [build] template = "configure" configureflags = [ "--enable-ncursesw", ] dependencies = [ "ncursesw", ] ================================================ FILE: recipes/wip/backup/pika-backup/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/World/pika-backup" shallow_clone = true [build] template = "meson" dependencies = [ "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/backup/vorta/recipe.toml ================================================ #TODO missing script for pip # build instructions: https://vorta.borgbase.com/install/linux/#install-from-source [source] git = "https://github.com/borgbase/vorta" rev = "v0.11.3" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/bench/cargo/cargo-benchcmp/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/BurntSushi/cargo-benchcmp" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/bench/cargo/cargo-criterion/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/bheisler/cargo-criterion" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/bench/dacapo-benchmarks/recipe.toml ================================================ #TODO missing data type to download the Java bytecode # download link: https://download.dacapobench.org/chopin/dacapo-23.11-chopin.zip [source] [build] template = "custom" ================================================ FILE: recipes/wip/bench/hpc/hpcc/recipe.toml ================================================ #TODO missing script for gnu make or python script: https://github.com/icl-utk-edu/hpcc#compiling [source] git = "https://github.com/icl-utk-edu/hpcc" rev = "1.5.0" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/bench/hpc/hpcg/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/hpcg-benchmark/hpcg" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/bench/hpc/minibude/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/UoB-HPC/miniBUDE#building [source] git = "https://github.com/UoB-HPC/miniBUDE" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/bench/hyperfine/recipe.toml ================================================ #TODO libc::RUSAGE_CHILDREN [source] git = "https://github.com/sharkdp/hyperfine" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/bench/io/blogbench/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/jedisct1/Blogbench/blob/master/README#L18 [source] tar = "https://github.com/jedisct1/Blogbench/releases/download/1.2/blogbench-1.2.tar.bz2" script = """ autotools_recursive_regenerate """ [build] template = "configure" ================================================ FILE: recipes/wip/bench/io/fio/recipe.toml ================================================ #TODO configuration problem [source] git = "https://github.com/axboe/fio" rev = "fio-3.41" shallow_clone = true [build] template = "configure" ================================================ FILE: recipes/wip/bench/io/simple-disk-benchmark/recipe.toml ================================================ #TODO source code error [source] git = "https://github.com/schwa/simple-disk-benchmark-rs" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/bench/jasonisnthappy/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/sohzm/jasonisnthappy" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_examples bench_all """ ================================================ FILE: recipes/wip/bench/rodinia/recipe.toml ================================================ #TODO missing script for gnu make, build the openmp (cpu backend?) or opencl implementation [source] tar = "http://www.cs.virginia.edu/~skadron/lava/rodinia/Packages/rodinia_3.1.tar.bz2" [build] template = "custom" ================================================ FILE: recipes/wip/bench/rpc-perf/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/iopsystems/rpc-perf" shallow_clone = true [build] template = "cargo" dependencies = [ "zstd", ] ================================================ FILE: recipes/wip/bench/stress-ng/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/ColinIanKing/stress-ng#building-stress-ng #TODO determine minimum dependencies [source] git = "https://github.com/ColinIanKing/stress-ng" rev = "V0.20.00" shallow_clone = true [build] template = "custom" #dependencies = [ # "libbsd", # "libaio", # "libcap", # "libcap", # "libgcrypt", # "libjpeg", # "libmd", # "libmpfr", # "xxhash", # "zlib", # "mesa", #] ================================================ FILE: recipes/wip/bench/suite/pts/recipe.toml ================================================ #TODO figure out the installation script - https://github.com/phoronix-test-suite/phoronix-test-suite [source] git = "https://github.com/phoronix-test-suite/phoronix-test-suite" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user/pts" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/pts" """ [package] dependencies = ["php84"] ================================================ FILE: recipes/wip/codecs/dav1d/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://code.videolan.org/videolan/dav1d#compile [source] tar = "https://downloads.videolan.org/videolan/dav1d/1.5.3/dav1d-1.5.3.tar.xz" shallow_clone = true [build] template = "meson" mesonflags = [ "-Denable_tests=false", ] ================================================ FILE: recipes/wip/codecs/faad2/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/knik0/faad2" rev = "2.11.2" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/codecs/kvazaar/recipe.toml ================================================ #TODO compilation error [source] tar = "https://github.com/ultravideo/kvazaar/releases/download/v2.2.0/kvazaar-2.2.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/codecs/rav1e/recipe.toml ================================================ #TODO "malloc(): invalid size (unsorted)" error [source] git = "https://github.com/xiph/rav1e" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/codecs/svt-av1/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/Build-Guide.md#linux-operating-systems-64-bit [source] git = "https://gitlab.com/AOMediaCodec/SVT-AV1" rev = "v4.0.1" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/codecs/svt-hevc/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/OpenVisualCloud/SVT-HEVC#linux-operating-systems-64-bit [source] git = "https://github.com/OpenVisualCloud/SVT-HEVC" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/codecs/svt-vp9/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/OpenVisualCloud/SVT-VP9#linux-operating-systems-64-bit [source] git = "https://github.com/OpenVisualCloud/SVT-VP9" rev = "v0.3.1" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/codecs/uvg266/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/ultravideo/uvg266#compiling-uvg266 [source] git = "https://github.com/ultravideo/uvg266" rev = "v0.8.1" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_TESTS=OFF" ] ================================================ FILE: recipes/wip/codecs/vvenc/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/fraunhoferhhi/vvenc/wiki/Build#build-using-plain-cmake [source] git = "https://github.com/fraunhoferhhi/vvenc" rev = "v1.14.0" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/codecs/wavpack/recipe.toml ================================================ #TODO compilation error: missing header [source] tar = "https://github.com/dbry/WavPack/releases/download/5.9.0/wavpack-5.9.0.tar.xz" [build] template = "configure" dependencies = [ "libiconv", ] ================================================ FILE: recipes/wip/codecs/x264/recipe.toml ================================================ #TODO the redox target is not supported on the configure script [source] git = "https://code.videolan.org/videolan/x264" branch = "stable" shallow_clone = true [build] template = "configure" ================================================ FILE: recipes/wip/codecs/x265/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://bitbucket.org/multicoreware/x265_git/src/master/build/README.txt#lines-68 [source] tar = "https://bitbucket.org/multicoreware/x265_git/downloads/x265_4.1.tar.gz" [build] template = "custom" script = """ COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/source" DYNAMIC_INIT cookbook_cmake """ ================================================ FILE: recipes/wip/containers/crun/recipe.toml ================================================ #TODO disable systemd and SELinux [source] tar = "https://github.com/containers/crun/releases/download/1.17/crun-1.17.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/containers/crun-vm/recipe.toml ================================================ #TODO camino crate error # dependencies - https://github.com/containers/crun-vm/blob/main/docs/1-installing.md#from-source [source] git = "https://github.com/containers/crun-vm" [build] template = "cargo" ================================================ FILE: recipes/wip/containers/docker/recipe.toml ================================================ #TODO implement a Cookbook template for the Go programming language [source] git = "https://github.com/docker/cli" branch = "27.x" [build] template = "go" ================================================ FILE: recipes/wip/containers/podman/recipe.toml ================================================ #TODO Implement a Cookbook template for the Go programming language [source] git = "https://github.com/containers/podman" branch = "v5.2" [build] template = "go" ================================================ FILE: recipes/wip/containers/skopeo/recipe.toml ================================================ #TODO Implement the Cookbook template for the Go programming language [source] git = "https://github.com/containers/skopeo" branch = "release-1.16" [build] template = "go" ================================================ FILE: recipes/wip/containers/youki/recipe.toml ================================================ #TODO require cgroups [source] git = "https://github.com/containers/youki" [build] template = "custom" script = """ cookbook_cargo_packages youki """ ================================================ FILE: recipes/wip/crypto/data2sound/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/TheAwiteb/data2sound" [build] template = "cargo" ================================================ FILE: recipes/wip/crypto/decoder/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/World/decoder" shallow_clone = true [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", "gstreamer", ] ================================================ FILE: recipes/wip/crypto/morse2sound/recipe.toml ================================================ #TODO slice-deque crate error (after cargo update) [source] git = "https://github.com/irevenko/morse2sound" [build] template = "cargo" ================================================ FILE: recipes/wip/crypto/qrrs/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/Lenivaya/qrrs" [build] template = "cargo" ================================================ FILE: recipes/wip/crypto/qrscan/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/sayanarijit/qrscan" [build] template = "cargo" ================================================ FILE: recipes/wip/crypto/qrtool/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/sorairolake/qrtool" [build] template = "cargo" ================================================ FILE: recipes/wip/crypto/steg86/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/woodruffw/steg86" [build] template = "cargo" ================================================ FILE: recipes/wip/crypto/stupidfs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/GoldenStack/stupidfs" [build] template = "cargo" ================================================ FILE: recipes/wip/data/poppler-data/recipe.toml ================================================ #TODO missing script for gnu make [source] tar = "https://poppler.freedesktop.org/poppler-data-0.4.12.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/data-integrity/b3sum/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/BLAKE3-team/BLAKE3" shallow_clone = true [build] template = "custom" script = """ COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/b3sum" cookbook_cargo """ ================================================ FILE: recipes/wip/data-integrity/fim/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Achiefs/fim" [build] template = "cargo" ================================================ FILE: recipes/wip/data-integrity/hashgood/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/thombles/hashgood" [build] template = "cargo" ================================================ FILE: recipes/wip/data-integrity/rapidhash/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/hoxxep/rapidhash" [build] template = "custom" script = """ cookbook_cargo_packages rapidhash """ ================================================ FILE: recipes/wip/data-recovery/ddrescue/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://ftp.gnu.org/gnu/ddrescue/ddrescue-1.30.tar.lz" [build] template = "configure" ================================================ FILE: recipes/wip/data-recovery/foremost/recipe.toml ================================================ #TODO missing script for gnu make, see the README inside the tarball [source] tar = "http://foremost.sourceforge.net/pkg/foremost-1.5.7.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/data-recovery/testdisk/recipe.toml ================================================ #TODO compilation error # build instructions - https://www.cgsecurity.org/wiki/TestDisk_Compilation # add optional libraries to expand the features - https://www.cgsecurity.org/wiki/TestDisk_Compilation#Libraries [source] tar = "https://www.cgsecurity.org/testdisk-7.2.tar.bz2" [build] template = "custom" dependencies = [ "ncurses", ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_configure """ ================================================ FILE: recipes/wip/db/bobby/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/hbons/Bobby" [build] template = "meson" dependencies = [ "libadwaita", "glib", "gtk4", ] ================================================ FILE: recipes/wip/db/clickhouse/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://clickhouse.com/docs/en/development/build#how-to-build-clickhouse-on-any-linux [source] git = "https://github.com/ClickHouse/ClickHouse" rev = "v25.10.2.65-stable" shallow_clone = true [build] template = "cmake" dependencies = [ "curl", "openssl3", "xz", ] ================================================ FILE: recipes/wip/db/cockroachdb/recipe.toml ================================================ #TODO missing script for Bazel # build instructions: https://cockroachlabs.atlassian.net/wiki/spaces/CRDB/pages/181338446/Getting+and+building+CockroachDB+from+source [source] git = "https://github.com/cockroachdb/cockroach" branch = "release-25.4" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/db/gobang/recipe.toml ================================================ #TODO update mio to 0.8 (after cargo update and patch on ring) [source] git = "https://github.com/TaKO8Ki/gobang" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/db/influxdb/recipe.toml ================================================ #TODO nonsense error "Cargo.toml doesn't exist" #TODO configure the CLI and service [source] git = "https://github.com/influxdata/influxdb" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/db/iotdb/recipe.toml ================================================ #TODO missing script for Maven, # build instructions: https://github.com/apache/iotdb#build-iotdb-from-source [source] git = "https://github.com/apache/iotdb" rev = "v2.0.5" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/db/jdbrowser/recipe.toml ================================================ #TODO wayland-backend crate error [source] git = "https://github.com/Jkeyuk/JDbrowser" [build] template = "cargo" ================================================ FILE: recipes/wip/db/limbo/recipe.toml ================================================ #TODO compilation error on the sqlite3 parser [source] git = "https://github.com/tursodatabase/limbo" shallow_clone = true [build] template = "custom" script = """ cookbook_cargo_packages limbo_cli """ ================================================ FILE: recipes/wip/db/mariadb/recipe.toml ================================================ #TODO need openat (patched), posix_spawn [source] tar = "https://dlm.mariadb.com/4509471/MariaDB/mariadb-12.1.2/source/mariadb-12.1.2.tar.gz" blake3 = "749a293e1c4fd13be936fbda33de38b1ccc8c737c30a55c187c028d3ce74f70c" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "ncurses", "bzip2", "curl", "zlib", "pcre2", "lz4", "libevent", "openssl3", "curl", "libxml2", "boost", ] dev-dependencies = [ "host:ncurses", "boost.dev" ] script = """ DYNAMIC_INIT # see https://mariadb.com/kb/en/cross-compiling-mariadb/ mkdir -p host pushd host # todo: should use native generate_cookbook_cmake_file if possible (unset CC CXX AR && cmake ${COOKBOOK_SOURCE} -DWITH_SSL=system -DCMAKE_CROSSCOMPILING=False -DCMAKE_FIND_ROOT_PATH=${COOKBOOK_TOOLCHAIN}) make import_executables popd export LDFLAGS+=" -lcurl -lnghttp2 -lssl -lcrypto" COOKBOOK_CMAKE_FLAGS+=( -DWITH_UNIT_TESTS=OFF -DSTACK_DIRECTION=-1 -DHAVE_IB_GCC_ATOMIC_BUILTINS=-1 -DCONC_DEFAULT_CHARSET=utf8mb4 -DPLUGIN_AWS_KEY_MANAGEMENT=NO -DPLUGIN_COLUMNSTORE=NO -DWITHOUT_ROCKSDB=1 -DIMPORT_EXECUTABLES="${COOKBOOK_BUILD}/host/import_executables.cmake" ) cookbook_cmake """ ================================================ FILE: recipes/wip/db/mariadb/redox.patch ================================================ diff -ruwN source/mysys/mysys_priv.h source-new/mysys/mysys_priv.h --- source/mysys/mysys_priv.h 2025-11-14 00:00:49.000000000 +0700 +++ source-new/mysys/mysys_priv.h 2026-03-14 05:20:38.369176577 +0700 @@ -142,7 +142,7 @@ #endif #endif -#ifdef O_PATH +#if defined(O_PATH) && !defined(__redox__) /* need openat */ #define HAVE_OPEN_PARENT_DIR_NOSYMLINKS const char *my_open_parent_dir_nosymlinks(const char *pathname, int *pdfd); #define NOSYMLINK_FUNCTION_BODY(AT,NOAT) \ ================================================ FILE: recipes/wip/db/mariadb-lts/recipe.toml ================================================ #TODO not compiled or tested # build instructions: # https://mariadb.com/kb/en/generic-build-instructions/ # https://mariadb.com/kb/en/cross-compiling-mariadb/ [source] tar = "https://archive.mariadb.org/mariadb-10.11.6/source/mariadb-10.11.6.tar.gz" [build] template = "cmake" dependencies = [ "ncurses", "zlib", "libevent", "openssl1", "curl", "libxml2", "boost", "libaio", ] ================================================ FILE: recipes/wip/db/memcached/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://docs.memcached.org/serverguide/#from-source [source] tar = "https://www.memcached.org/files/memcached-1.6.22.tar.gz" [build] template = "configure" dependencies = [ "libevent", ] ================================================ FILE: recipes/wip/db/mongodb6/recipe.toml ================================================ #TODO missing script for SCons # build instructions: https://github.com/mongodb/mongo/blob/master/docs/building.md [source] git = "https://github.com/mongodb/mongo" branch = "v6.0" shallow_clone = true [build] template = "custom" dependencies = [ "curl", "xz", ] ================================================ FILE: recipes/wip/db/mongodb7/recipe.toml ================================================ #TODO missing script for SCons # build instructions: https://github.com/mongodb/mongo/blob/master/docs/building.md [source] git = "https://github.com/mongodb/mongo" branch = "v7.2" shallow_clone = true [build] template = "custom" dependencies = [ "curl", "xz", ] ================================================ FILE: recipes/wip/db/mysql-server/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://dev.mysql.com/doc/refman/8.2/en/installing-source-distribution.html [source] tar = "https://dev.mysql.com/downloads/file/?id=523432" [build] template = "cmake" dependencies = [ "boost", "ncurses", "openssl3", ] ================================================ FILE: recipes/wip/db/mysql-shell/recipe.toml ================================================ #TODO missing script [source] tar = "https://dev.mysql.com/downloads/file/?id=524161" [build] template = "custom" ================================================ FILE: recipes/wip/db/pgtui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://codeberg.org/kdwarn/pgtui" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/db/postgresql16/recipe.toml ================================================ #TODO waiting on sigjmp_buf and related POSIX functions in relibc [source] tar = "https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.bz2" script = """ cp "${COOKBOOK_SOURCE}/src/backend/utils/errcodes.h" "${COOKBOOK_SOURCE}/src/include/utils/errcodes.h" """ [build] template = "configure" configureflags = [ "--without-icu", "--without-readline", "--with-template=redox", ] dependencies = [ "zlib", ] ================================================ FILE: recipes/wip/db/postgresql18/recipe.toml ================================================ #TODO require sys/ipc.h [source] tar = "https://ftp.postgresql.org/pub/source/v18.3/postgresql-18.3.tar.bz2" blake3 = "52696c9d474ce3e2073f97d4ba891af59ffc67a9dfb8f9f5adac409d1fe0dc28" patches = [ "redox.patch" ] [build] template = "meson" mesonflags = [ ] dependencies = [ "zstd", "readline", ] ================================================ FILE: recipes/wip/db/postgresql18/redox.patch ================================================ diff --color -ruwN source/meson.build source-new/meson.build --- source/meson.build 2026-02-24 04:56:43.000000000 +0700 +++ source-new/meson.build 2026-03-14 10:58:35.570033768 +0700 @@ -256,6 +256,10 @@ # LDFLAGS. ldflags += ['-Wl,-z,now', '-Wl,-z,relro'] +elif host_system == 'redox' + sema_kind = 'unnamed_posix' + shmem_kind = 'sysv' + elif host_system == 'openbsd' # you're ok diff --color -ruwN source/src/include/port/redox.h source-new/src/include/port/redox.h --- source/src/include/port/redox.h 1970-01-01 07:00:00.000000000 +0700 +++ source-new/src/include/port/redox.h 2026-03-14 10:50:26.877146350 +0700 @@ -0,0 +1 @@ +/* src/include/port/redox.h */ diff --color -ruwN source/src/makefiles/Makefile.redox source-new/src/makefiles/Makefile.redox --- source/src/makefiles/Makefile.redox 1970-01-01 07:00:00.000000000 +0700 +++ source-new/src/makefiles/Makefile.redox 2026-03-14 10:51:25.313879766 +0700 @@ -0,0 +1,6 @@ +rpath = -Wl,-R'$(rpathdir)' + + +# Rule for building a shared library from a single .o file +%.so: %.o + $(CC) $(CFLAGS) $< $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ diff --color -ruwN source/src/template/redox source-new/src/template/redox --- source/src/template/redox 1970-01-01 07:00:00.000000000 +0700 +++ source-new/src/template/redox 2026-03-14 10:55:40.896750233 +0700 @@ -0,0 +1,7 @@ +# src/template/redox + +# Prefer unnamed POSIX semaphores +PREFERRED_SEMAPHORES=UNNAMED_POSIX + +# Extra CFLAGS for code that will go into a shared library +CFLAGS_SL="-fPIC" ================================================ FILE: recipes/wip/db/rainfrog/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/achristmascarl/rainfrog" shallow_clone = true [build] template = "cargo" [package] dependencies = [ "nerd-fonts", ] ================================================ FILE: recipes/wip/db/rocksdb/recipe.toml ================================================ #TODO missing script for gnu make # build instructions: https://github.com/facebook/rocksdb/blob/main/INSTALL.md [source] git = "https://github.com/facebook/rocksdb" rev = "v10.7.5" shallow_clone = true [build] template = "custom" dependencies = [ "zlib", "lz4", "bzip2", "zstd", "snappy", "gflags", ] ================================================ FILE: recipes/wip/db/skytable/recipe.toml ================================================ #TODO libsky crate error [source] git = "https://github.com/skytable/skytable" shallow_clone = true [build] template = "custom" dependencies = [ "openssl1", ] script = """ DYNAMIC_INIT cookbook_cargo_packages skysh skyd """ ================================================ FILE: recipes/wip/db/sqlite3/recipe.toml ================================================ #TODO incomplete port #TODO Complied, works for basic use cases. pthread mutexes compiled in, but not working. #TODO Calls triggering mutexes yield the following errors: #relibc getrlimit(7, 0x7ffffffffc38): not implemented #relibc getgroups(65536, 0x14920): not implemented #Runtime error near line 1: disk I/O error (10) [source] tar = "https://sqlite.org/2025/sqlite-autoconf-3490200.tar.gz" blake3 = "96e071dc4f964311882334e927f017d8383915b1b140adcf308957dff213aa8c" script = """ autotools_recursive_regenerate """ [build] template = "configure" ================================================ FILE: recipes/wip/db/sqllogictest/recipe.toml ================================================ #TODO Works, but not reliably #TODO Raises the following warnings: # setsockopt(16, 6, 1, 0x7fffffff4adc, 4) - unknown option # setsockopt(16, 1, 9, 0x7fffffff4ad0, 4) - unknown option # setsockopt(16, 6, 1, 0x7fffffff4ad4, 4) - unknown option [source] git = "https://github.com/risinglightdb/sqllogictest-rs.git" [build] template = "custom" script = """ cookbook_cargo_packages sqllogictest-bin """ ================================================ FILE: recipes/wip/db/stoolap/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/stoolap/stoolap" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/db/tidb-server/recipe.toml ================================================ #TODO missing script for gnu make # build instructions: https://pingcap.github.io/tidb-dev-guide/get-started/build-tidb-from-source.html#build [source] git = "https://github.com/pingcap/tidb" rev = "v8.5.4" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/db/tsql/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/fcoury/tsql" [build] template = "custom" script = """ cookbook_cargo_packages tsql """ [package] dependencies = ["postgresql16"] ================================================ FILE: recipes/wip/db/valkey/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/valkey-io/valkey" shallow_clone = true rev = "9.0.3" [build] template = "custom" dependencies = [ "openssl3" ] script = """ rsync -av --delete "${COOKBOOK_SOURCE}"/* ./ ${COOKBOOK_MAKE} MALLOC=libc BUILD_TLS=yes \ WARN="-Wall -W -Wno-missing-field-initializers" \ WARNINGS="-Wall -W -Wno-missing-field-initializers" \ AR="${TARGET}-gcc-ar" CFLAGS="${CFLAGS} ${CPPFLAGS}" ${COOKBOOK_MAKE} install PREFIX="${COOKBOOK_STAGE}"/usr """ ================================================ FILE: recipes/wip/demos/albedo/recipe.toml ================================================ #TODO nanorand crate error [source] git = "https://github.com/albedo-engine/albedo" shallow_clone = true [build] template = "cargo" cargoexamples = [ "gpu_picking" ] ================================================ FILE: recipes/wip/demos/appcui/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/gdt050579/AppCUI-rs" shallow_clone = true [build] template = "cargo" cargopackages = [ "examples" ] ================================================ FILE: recipes/wip/demos/avian/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Jondolf/avian" shallow_clone = true [build] template = "cargo" cargoexamples = [ "chain_2d", "many_shapes", "ray_caster", "chain_3d", "cubes", ] ================================================ FILE: recipes/wip/demos/avt/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/asciinema/avt" shallow_clone = true [build] template = "cargo" cargoexamples = [ "text" ] ================================================ FILE: recipes/wip/demos/bevy/recipe.toml ================================================ #TODO async-io crate error [source] git = "https://github.com/bevyengine/bevy" shallow_clone = true [build] template = "cargo" cargoexamples = [ "hello_world" ] ================================================ FILE: recipes/wip/demos/blade/recipe.toml ================================================ #TODO x11rb and rustix crates error [source] git = "https://github.com/kvark/blade" shallow_clone = true [build] template = "cargo" cargoexamples = [ "bunnymark", "particle", "ray-query", "scene", ] ================================================ FILE: recipes/wip/demos/blitz/recipe.toml ================================================ #TODO fontique crate error [source] git = "https://github.com/DioxusLabs/blitz" shallow_clone = true [build] template = "cargo" cargoexamples = [ "url", "markdown", ] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/demos/blockish/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/yazgoo/blockish" shallow_clone = true [build] template = "cargo" cargoexamples = [ "euc", "gif", "tiny-skia", ] ================================================ FILE: recipes/wip/demos/blockishfire/recipe.toml ================================================ #TODO outdated redox_syscall crate (cargo update don't fix it) [source] git = "https://github.com/yazgoo/blockishfire" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/demos/blue-engine/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/AryanpurTech/BlueEngine" shallow_clone = true [build] template = "cargo" cargoexamples = [ "triangle", "square", "cube", "rotate_around", "wireframe", ] ================================================ FILE: recipes/wip/demos/bones/recipe.toml ================================================ #TODO iroh-quinn-udp crate error [source] git = "https://github.com/fishfolk/bones" shallow_clone = true [build] template = "cargo" cargopackages = [ "demo_hello_world", ] ================================================ FILE: recipes/wip/demos/colored/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/colored-rs/colored" shallow_clone = true [build] template = "cargo" cargoexamples = [ "control", "custom_colors", "dynamic_colors", "most_simple", "nested_colors", ] ================================================ FILE: recipes/wip/demos/comfy/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/darthdeus/comfy" shallow_clone = true [build] template = "cargo" cargoexamples = [ "animated_shapes", "animated_sprites", "animated_text", "bloom", "circle", "colors", "egui", "fragment-shader", "lighting", "music", "shapes", "single_particle", "sprite", "text", ] ================================================ FILE: recipes/wip/demos/console-rs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/console-rs/console" shallow_clone = true [build] template = "cargo" cargoexamples = [ "colors", "colors256", "cursor_at", "keyboard", "term", ] ================================================ FILE: recipes/wip/demos/contrast-renderer/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Lichtso/contrast_renderer" shallow_clone = true [build] template = "cargo" cargoexamples = [ "showcase", ] ================================================ FILE: recipes/wip/demos/cubecl/recipe.toml ================================================ #TODO cubecl-macros crate error [source] git = "https://github.com/tracel-ai/cubecl" shallow_clone = true [build] template = "cargo" cargopackages = [ "gelu" ] cargoflags = ["--no-default-features --wgpu"] ================================================ FILE: recipes/wip/demos/dioxus-examples/recipe.toml ================================================ #TODO wry crate error [source] git = "https://github.com/DioxusLabs/dioxus" shallow_clone = true [build] template = "cargo" cargoexamples = [ "calculator", "clock", "counters", "file_explorer", "hello_world", "multiwindow", "popup", "window_event", "window_zoom", ] ================================================ FILE: recipes/wip/demos/doomfire/recipe.toml ================================================ #TODO discover how to build the "doomfire-minifb" example [source] git = "https://github.com/r-marques/doomfire" shallow_clone = true [build] template = "cargo" cargoexamples = [ "doomfire-minifb", ] ================================================ FILE: recipes/wip/demos/egui/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/emilk/egui" shallow_clone = true [build] template = "cargo" cargoexamples = [ "hello_world" ] ================================================ FILE: recipes/wip/demos/euc/recipe.toml ================================================ #TODO minifb crate error [source] git = "https://github.com/zesterer/euc" shallow_clone = true [build] template = "cargo" cargoexamples = [ "spinning_cube", "teapot", "texture_mapping", "triangle", "wireframes", ] ================================================ FILE: recipes/wip/demos/feoxdb/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mehrantsi/FeOxDB" shallow_clone = true [build] template = "cargo" cargoexamples = [ "basic_usage", "deterministic_test", ] ================================================ FILE: recipes/wip/demos/ferris-says/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/rust-lang/ferris-says" shallow_clone = true [build] template = "cargo" cargopackages = [ "fsays", ] ================================================ FILE: recipes/wip/demos/firewheel/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/BillyDM/firewheel" shallow_clone = true [build] template = "cargo" cargoexamples = [ "beep_test", "play_sample", ] ================================================ FILE: recipes/wip/demos/firework-rs/recipe.toml ================================================ #TODO fix the script [source] git = "https://github.com/Wayoung7/firework-rs" shallow_clone = true [build] template = "cargo" cargopackages = ["firework-rs"] cargoexamples = [ "fountain", "heart", "vortex", ] ================================================ FILE: recipes/wip/demos/fonterator/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ardaku/fonterator" shallow_clone = true [build] template = "cargo" cargoflags = ["--features monospace-font"] cargoexamples = [ "main", "directions", "image", "raster", ] ================================================ FILE: recipes/wip/demos/fractal-rs/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/aetherknight/fractal-rs" shallow_clone = true [build] template = "cargo" cargopackages = [ "fractal-piston", ] ================================================ FILE: recipes/wip/demos/freya/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/marc2332/freya" shallow_clone = true [build] template = "cargo" cargoexamples = [ "animated_position", "animated_tabs", "animation", "button", "camera", "checkbox", "clock", "counter", "drag", "drag_drop", "dynamic_theme", "file_explorer", "frameless_window", "gradient", "graph", "highlight", "image", "image_viewer", "images_slideshow", "infinite_list", "input", "keyboard_navigation", "menu", "mouse_trace", "opacity", "pointer", "popup", "position", "progress_bar", "radio", "render_canvas", "rotate", "scroll", "selectable_text", "sequential_animation", "shader", "shader_editor", "shadow", "simple_editor", "speedometer", "svg", "tab", "table", "text", "text_editors", "tic_tac_toe", "touch", "ui", "website", "window_size", ] dependencies = [ "openssl3", "gtk3", ] script = """ DYNAMIC_INIT cookbook_cargo_examples """ ================================================ FILE: recipes/wip/demos/fundsp/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/SamiPerttu/fundsp" shallow_clone = true [build] template = "cargo" cargoexamples = [ "beep", "file", "grain", "grain2", "keys", "network", "optimize", "peek", "plot", "sequence", "type", ] dependencies = [ "fontconfig", ] ================================================ FILE: recipes/wip/demos/funutd/recipe.toml ================================================ #TODO rfd crate error [source] git = "https://github.com/SamiPerttu/funutd" shallow_clone = true [build] template = "cargo" cargoexamples = [ "editor", ] ================================================ FILE: recipes/wip/demos/fyrox/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/FyroxEngine/Fyrox-demo-projects" shallow_clone = true [build] template = "cargo" cargopath = "ui" cargopackages = ["executor"] ================================================ FILE: recipes/wip/demos/genpdf-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://git.sr.ht/~ireas/genpdf-rs" shallow_clone = true [build] template = "cargo" cargoexamples = ["demo"] ================================================ FILE: recipes/wip/demos/gfx-shader-watch/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/alexheretic/gfx-shader-watch" shallow_clone = true [build] template = "cargo" cargoexamples = ["watch-shaders"] ================================================ FILE: recipes/wip/demos/ggez/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ggez/ggez" shallow_clone = true [build] template = "cargo" cargoexamples = [ "02_hello_world", "04_snake", "cube", "hello_canvas", "input_test", "shader", "shadows", "sounds", "text", "vertex_shader", ] ================================================ FILE: recipes/wip/demos/globe-rs/recipe.toml ================================================ #TODO update the mio crate version (after cargo update) [source] git = "https://github.com/adamsky/globe" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages globe-cli mv "${COOKBOOK_STAGE}/usr/bin/globe" "${COOKBOOK_STAGE}/usr/bin/globe-rs" """ ================================================ FILE: recipes/wip/demos/hotline/recipe.toml ================================================ #TODO hot-lib-reloader crate error [source] git = "https://github.com/polymonster/hotline" shallow_clone = true [build] template = "cargo" cargoexamples = ["triangle"] ================================================ FILE: recipes/wip/demos/iced-7guis/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/dcampbell24/iced_7guis" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/demos/if-watch/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mxinden/if-watch" shallow_clone = true [build] template = "cargo" cargoflags = ["--features smol"] cargoexamples = ["if_watch"] ================================================ FILE: recipes/wip/demos/imgui-examples/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # pull request: https://github.com/ocornut/imgui/pull/3027 [source] git = "https://github.com/Qix-/imgui" branch = "cmake" shallow_clone = true [build] template = "cmake" #dependencies = ["sdl2"] ================================================ FILE: recipes/wip/demos/iocraft/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ccbrown/iocraft" shallow_clone = true [build] template = "cargo" cargoexamples = [ "borders", "calculator", "counter", "fullscreen", "hello_world", "overlap", "progress_bar", "scrolling", "table", "use_input", "use_output", "weather", ] ================================================ FILE: recipes/wip/demos/kira/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/tesselode/kira-examples" shallow_clone = true [build] template = "cargo" cargopackages = [ "dynamic-music", "ghost-noise", "metronome", "score-counter", "spatial-audio", "simple-sound-playback", ] ================================================ FILE: recipes/wip/demos/kiss3d/recipe.toml ================================================ #TODO winit crate error (even after cargo update) [source] git = "https://github.com/sebcrozet/kiss3d" shallow_clone = true [build] template = "cargo" cargoexamples = [ "camera", "cube", "lines", "multi_windows", "planar_lines", "points", "post_processing", "primitives", "primitives2d", "procedural", "rectangle", "screenshot", "stereo", "text", "texturing", "ui", "window", ] ================================================ FILE: recipes/wip/demos/lenia/recipe.toml ================================================ #TODO winit crate error (after cargo update) [source] git = "https://github.com/BirdbrainEngineer/lenia" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/demos/macroquad/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/not-fl3/macroquad" shallow_clone = true [build] template = "cargo" cargoexamples = [ "3d", "basic_shapes", "camera", "first_person", "particles_example", "platformer", "shadertoy", "snake", "text", "ui", ] ================================================ FILE: recipes/wip/demos/mage/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/baad-c0de/mage-core" shallow_clone = true [build] template = "cargo" cargoexamples = [ "basic", "hello", ] ================================================ FILE: recipes/wip/demos/mesa-demos/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.freedesktop.org/mesa/demos/-/blob/main/README.rst?ref_type=heads [source] tar = "https://archive.mesa3d.org/demos/mesa-demos-9.0.0.tar.xz" [build] template = "meson" dependencies = [ "freeglut", ] ================================================ FILE: recipes/wip/demos/mousefood/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/j-g00da/mousefood" shallow_clone = true [build] template = "cargo" cargopackages = ["simulator"] dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/demos/nibble/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Vaishnav-Sabari-Girish/nibble" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/demos/notan/recipe.toml ================================================ #TODO environment leak on CMake [source] git = "https://github.com/Nazariglez/notan" shallow_clone = true [build] template = "cargo" cargoexamples = [ "renderer_cube", "draw_path_flower", "game_pong", "game_of_life", ] ================================================ FILE: recipes/wip/demos/pingora/recipe.toml ================================================ #TODO jemalloc-sys crate error [source] git = "https://github.com/cloudflare/pingora" shallow_clone = true [build] template = "cargo" cargoexamples = [ "server", "client", ] ================================================ FILE: recipes/wip/demos/pipes-rs/recipe.toml ================================================ #TODO libmalloc-sys crate error [source] git = "https://github.com/lhvy/pipes-rs" shallow_clone = true [build] template = "cargo" cargopackages = ["pipes-rs"] ================================================ FILE: recipes/wip/demos/piston/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/pistondevelopers/piston-examples" shallow_clone = true [build] template = "cargo" cargoexamples = [ "cube", "hello_world", "image", "multi_window", "shapes", "snake", "sprite", ] ================================================ FILE: recipes/wip/demos/pix-engine/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/lukexor/pix-engine" shallow_clone = true [build] template = "cargo" cargoexamples = [ "maze", "2d_raycasting", "3d_raycasting", "asteroids", "colors", "fluid_simulation", "gui", "hello_world", "image", "light", "matrix", "shapes", "textures", "tree", "windows", ] dependencies = [ "sdl2", "sdl2-image", "sdl2-mixer", "sdl2-ttf", "sdl-gfx", ] ================================================ FILE: recipes/wip/demos/pixels/recipe.toml ================================================ #TODO webbrowser crate error [source] git = "https://github.com/parasyte/pixels" shallow_clone = true [build] template = "cargo" cargopackages = [ "conway", "invaders", "minimal-egui", "minimal-winit", "tiny-skia-winit", ] ================================================ FILE: recipes/wip/demos/raclettui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ishrut/raclettui" shallow_clone = true [build] template = "cargo" cargoexamples = [ "cpu_ratatui", "test", "wgpu_ratatui", ] ================================================ FILE: recipes/wip/demos/rain/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/saschagrunert/rain" shallow_clone = true [build] template = "cargo" cargoexamples = ["demo"] ================================================ FILE: recipes/wip/demos/rapier/recipe.toml ================================================ #TODO x11rb, rustix and webbrowser crates error [source] git = "https://github.com/dimforge/rapier" shallow_clone = true [build] template = "cargo" cargopackages = [ "rapier-examples-2d", "rapier-examples-3d", "rapier-examples-3d-f64", ] ================================================ FILE: recipes/wip/demos/ratatui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ratatui/ratatui" branch = "latest" shallow_clone = true [build] template = "cargo" cargoflags = ["--no-default-features --features termion"] cargopackages = [ "async-github", "calendar-explorer", "canvas", "chart", "color-explorer", "colors-rgb", "demo", "demo2", "hyperlink", "hello-world", "inline", "modifiers", "mouse-drawing", "simple", "panic", "popup", "scrollbar", "table", "todo-list", "tracing", "user-input", ] cargoexamples = [ "block", "calendar", "canvas", "chart", "logo", "scrollbar", "sparkline", "tabs", ] ================================================ FILE: recipes/wip/demos/ratatui-hypertile/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/nikolic-milos/ratatui-hypertile" shallow_clone = true [build] template = "cargo" cargoexamples = ["core_only"] ================================================ FILE: recipes/wip/demos/ratzilla/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/orhun/ratzilla" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CARGO_FLAGS=() # remove --locked COOKBOOK_CARGO_PATH="examples/animations" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/canvas_stress_test" bin_name="canvas-stress-test" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/canvas_waves" bin_name="canvas-waves" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/colors_rgb" bin_name="color-rgb" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/demo" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/demo2" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/minimal" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/pong" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/text_area" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/user_input" bin_name="user-input" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/website" cookbook_cargo_build COOKBOOK_CARGO_PATH="examples/world_map" bin_name="world-map" cookbook_cargo_build """ ================================================ FILE: recipes/wip/demos/rend3/recipe.toml ================================================ #TODO webbrowser crate error [source] git = "https://github.com/BVE-Reborn/rend3" shallow_clone = true [build] template = "cargo" cargopackages = ["rend3-examples-package"] ================================================ FILE: recipes/wip/demos/renderling/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/schell/renderling" shallow_clone = true [build] template = "cargo" cargopackages = ["example"] ================================================ FILE: recipes/wip/demos/reticulum-rs/recipe.toml ================================================ #TODO not compiled or tested # require protobuf [source] git = "https://github.com/BeechatNetworkSystemsLtd/Reticulum-rs" shallow_clone = true [build] template = "cargo" cargoexamples = [ "tcp_client", "kaonic_client", ] dev-dependencies = ["protobuf"] ================================================ FILE: recipes/wip/demos/rootvg/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/MeadowlarkDAW/rootvg" shallow_clone = true [build] template = "cargo" cargoexamples = ["demo"] ================================================ FILE: recipes/wip/demos/rpt/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ekzhang/rpt" shallow_clone = true [build] template = "cargo" cargoexamples = [ "basic", "cylinder", "fractal_spheres", "fractal_teapots", "glass", "marbles", "metal", "rustacean", "sphere", "spheres", "teapot", ] ================================================ FILE: recipes/wip/demos/rsille/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/nidhoggfgg/rsille" shallow_clone = true [build] template = "cargo" cargoflags = ["--features=img"] cargoexamples = [ "anime-mix", "obj-mix", "cube", "cube-colorful", ] ================================================ FILE: recipes/wip/demos/rui/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/audulus/rui" shallow_clone = true [build] template = "cargo" cargopackages = [ "calculator", "synth", ] cargoexamples = [ "action", "background", "basic", "canvas", "counter", "counter2", "font_size", "gallery", "list", "menu", "shapes", "slider", "text_editor", "toggle", ] ================================================ FILE: recipes/wip/demos/ruscii/recipe.toml ================================================ #TODO device_query crate error [source] git = "https://github.com/lemunozm/ruscii" shallow_clone = true [build] template = "cargo" cargoexamples = [ "pong", "space_invaders", ] ================================================ FILE: recipes/wip/demos/rust-cairo/recipe.sh ================================================ GIT=https://gitlab.redox-os.org/redox-os/rust-cairo.git BUILD_DEPENDS=(cairo expat fontconfig freetype2 libpng pixman zlib) CARGOFLAGS="--example gui" function recipe_build { sysroot="$(realpath ../sysroot)" cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ -l cairo \ -l fontconfig \ -l expat \ -l pixman-1 \ -l freetype \ -l png \ -l z skip=1 } function recipe_stage { dest="$(realpath $1)" mkdir -pv "$dest/bin" cp -v "target/${TARGET}/release/examples/gui" "$dest/bin/rust-cairo" skip=1 } ================================================ FILE: recipes/wip/demos/rust-cairo-demo/recipe.sh ================================================ GIT=https://gitlab.redox-os.org/redox-os/rust-cairo-demo.git BUILD_DEPENDS=(cairo expat fontconfig freetype2 libpng pixman zlib) function recipe_build { sysroot="$(realpath ../sysroot)" cargo rustc --target "$TARGET" --release ${CARGOFLAGS} \ -- \ -L "${sysroot}/lib" \ -l cairo \ -l fontconfig \ -l expat \ -l pixman-1 \ -l freetype \ -l png \ -l z skip=1 } ================================================ FILE: recipes/wip/demos/rustubble/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/warpy-ai/rustubble" shallow_clone = true [build] template = "cargo" cargoexamples = [ "list_example", "menu_list_example", "progress_bar_example", "spinner_example", "stopwatch_example", "table_example", "text_area_example", "text_input_example", "timer_example", "viewport_example", ] ================================================ FILE: recipes/wip/demos/rustui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/broccolingual/rustui" shallow_clone = true [build] template = "cargo" cargopackages = ["tetris"] cargoexamples = [ "hello_world", "colors", "inputs", "file_reader", ] ================================================ FILE: recipes/wip/demos/rusty-rain/recipe.toml ================================================ #TODO compiled but not tested for a long time [source] git = "https://github.com/cowboy8625/rusty-rain" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/demos/servo-gtk/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/nacho/servo-gtk" shallow_clone = true [build] template = "cargo" cargoexamples = ["browser"] dependencies = [ "gtk4" ] ================================================ FILE: recipes/wip/demos/simdjson-rs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/simd-lite/simd-json" shallow_clone = true [build] template = "cargo" cargoexamples = ["perf"] ================================================ FILE: recipes/wip/demos/slint/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/slint-ui/slint" shallow_clone = true [build] template = "cargo" cargopackages = [ "gallery", "energy-monitor", "carousel", "memory", "imagefilter", "plotter", "opengl_underlay", "opengl_texture", "maps", "virtual_keyboard", "7guis", ] ================================================ FILE: recipes/wip/demos/soft-ratatui/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/gold-silver-copper/soft_ratatui" shallow_clone = true [build] template = "cargo" cargopackages = ["egui_colors_example"] ================================================ FILE: recipes/wip/demos/speedy2d/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/QuantumBadger/Speedy2D" shallow_clone = true [build] template = "cargo" cargoexamples = [ "animation", "hello_world", "moving_text", ] ================================================ FILE: recipes/wip/demos/spinners/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/FGRibreau/spinners" shallow_clone = true [build] template = "cargo" cargoexamples = [ "cycle", "simple", "stop_persist", "stop_symbol", "timer", ] ================================================ FILE: recipes/wip/demos/spinoff/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ad4mx/spinoff" shallow_clone = true [build] template = "cargo" cargoexamples = [ "simple", "stop_and_persist", "stream", ] ================================================ FILE: recipes/wip/demos/tachyonfx/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/junkdog/tachyonfx" shallow_clone = true [build] template = "cargo" cargoexamples = [ "basic-effects", "open-window", "tweens", ] ================================================ FILE: recipes/wip/demos/taffy/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/DioxusLabs/taffy" shallow_clone = true [build] template = "cargo" cargoexamples = ["basic"] ================================================ FILE: recipes/wip/demos/tenki/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ckaznable/tenki" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/demos/termtree/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/rust-cli/termtree" shallow_clone = true [build] template = "cargo" cargoexamples = ["tree"] ================================================ FILE: recipes/wip/demos/ternimal/recipe.toml ================================================ #TODO not compiled or tested #TODO add condition script for multiarch compilation # build instructions: https://github.com/p-e-w/ternimal#building [source] git = "https://github.com/p-e-w/ternimal" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cp -v "${COOKBOOK_SOURCE}"/ternimal.rs "${COOKBOOK_BUILD}" rustc -O "${COOKBOOK_BUILD}"/ternimal.rs --target x86_64-unknown-redox mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v "${COOKBOOK_BUILD}"/ternimal "${COOKBOOK_STAGE}/usr/bin" """ ================================================ FILE: recipes/wip/demos/terra/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/fintelia/terra" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", "mesa", ] ================================================ FILE: recipes/wip/demos/three-d/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/asny/three-d" shallow_clone = true [build] template = "cargo" cargoexamples = [ "animation", "environment", "fireworks", "fog", "forest", "image", "instanced_shapes", "lighting", "lights", "logo", "mandelbrot", "multiwindow", "pbr", "shapes", "shapes2d", "sprites", "statues", "terrain", "texture", "triangle", ] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/demos/tquic/recipe.toml ================================================ #TODO tikv-jemalloc-sys crate error [source] git = "https://github.com/Tencent/tquic" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages tquic_tools mv "${COOKBOOK_STAGE}/usr/bin/tquic_server" "${COOKBOOK_STAGE}/usr/bin/tquic-server" mv "${COOKBOOK_STAGE}/usr/bin/tquic_client" "${COOKBOOK_STAGE}/usr/bin/tquic-client" """ ================================================ FILE: recipes/wip/demos/uniocr/recipe.toml ================================================ #TODO xcap crate error [source] git = "https://github.com/mediar-ai/uniOCR" shallow_clone = true [build] template = "cargo" cargoexamples = [ "basic", "batch_processing", ] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/demos/usfx/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/tversteeg/usfx" shallow_clone = true [build] template = "cargo" cargoexamples = [ "cpal", "music", "sdl2", ] dependencies = [ "libalsa", "sdl2", ] ================================================ FILE: recipes/wip/demos/vizia/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/vizia/vizia" shallow_clone = true [build] template = "cargo" cargoexamples = [ "animation", "dragdrop", "number", "input", "timers", ] #dependencies = ["libwayland"] ================================================ FILE: recipes/wip/demos/wavy/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ardaku/wavy" shallow_clone = true [build] template = "cargo" cargoexamples = [ "monitor", "play", "query", "record", ] ================================================ FILE: recipes/wip/demos/wgpu-sky-rendering/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/bmatthieu3/wgpu-sky-rendering" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/demos/xaos/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log # build instructions: https://github.com/xaos-project/XaoS/wiki/Developer's-Guide#build-instructions-for-version-433 [source] git = "https://github.com/xaos-project/XaoS" rev = "release-4.3.4" shallow_clone = true [build] template = "cmake" #dependencies = [ # "qt6-base", # "mesa", #] ================================================ FILE: recipes/wip/demos/xilem/recipe.toml ================================================ #TODO xilem_core crate error [source] git = "https://github.com/linebender/xilem" shallow_clone = true [build] template = "cargo" cargoexamples = ["components"] ================================================ FILE: recipes/wip/dev/analysis/binocle/recipe.toml ================================================ #TODO "No suitable wgpu::Adapter found" error on execution [source] git = "https://github.com/sharkdp/binocle" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/analysis/binwalk/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ReFirmLabs/binwalk" shallow_clone = true [build] template = "cargo" dependencies = [ "fontconfig", "xz", ] ================================================ FILE: recipes/wip/dev/analysis/code-minimap/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/wfxr/code-minimap" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/analysis/codevis/recipe.toml ================================================ #TODO open crate error (after cargo update) [source] git = "https://github.com/sloganking/codevis" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/analysis/debtmap/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/iepathos/debtmap" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/analysis/feluda/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/anistark/feluda" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/analysis/hex/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/sitkevij/hex" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/analysis/hgrep/recipe.toml ================================================ #TODO compilation error, missing mimalloc sys/syscall.h [source] git = "https://github.com/rhysd/hgrep" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/analysis/hl/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/pamburus/hl" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/analysis/honggfuzz-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rust-fuzz/honggfuzz-rs" shallow_clone = true [build] template = "cargo" dependencies = [ "gnu-binutils", "libunwind", "xz", ] ================================================ FILE: recipes/wip/dev/analysis/hx/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/krpors/hx#compiling-and-running [source] git = "https://github.com/krpors/hx" rev = "v1.0.15" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/dev/analysis/pratdiff/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/fowles/pratdiff" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/analysis/statui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Mohamed-Badry/statui" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/analysis/tinywatcher/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/tinywatcher/tinywatcher" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/analysis/zizmor/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/woodruffw/zizmor" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages zizmor """ ================================================ FILE: recipes/wip/dev/blockchain/foundry/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/foundry-rs/foundry" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages anvil cast chisel forge """ ================================================ FILE: recipes/wip/dev/blockchain/geth/recipe.toml ================================================ #TODO missing script for gnu make: https://geth.ethereum.org/docs/getting-started/installing-geth#build-from-source [source] git = "https://github.com/ethereum/go-ethereum" branch = "release/1.16" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/dev/blockchain/solidity/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://docs.soliditylang.org/en/v0.8.33/installing-solidity.html#building-from-source [source] tar = "https://github.com/argotorg/solidity/releases/download/v0.8.33/solidity_0.8.33.tar.gz" [build] template = "cmake" cmakeflags = [ "-DPEDANTIC=OFF", ] dependencies = [ "boost", ] ================================================ FILE: recipes/wip/dev/blockchain/surfpool/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/txtx/surfpool" shallow_clone = true [build] template = "custom" dependencies = [ "openssl3", ] script = """ DYNAMIC_INIT cookbook_cargo_packages surfpool-cli """ ================================================ FILE: recipes/wip/dev/build-system/ant/recipe.toml ================================================ #TODO not tested [source] tar = "https://dlcdn.apache.org//ant/binaries/apache-ant-1.10.15-bin.tar.xz" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/bin/ant-dir" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/usr/bin/ant-dir" echo "/usr/bin/ant-dir/bin/ant" > "${COOKBOOK_STAGE}"/usr/bin/ant chmod a+x "${COOKBOOK_STAGE}"/usr/bin/ant """ [package] dependencies = ["openjdk21",] ================================================ FILE: recipes/wip/dev/build-system/ccache/recipe.toml ================================================ #TODO not compiled or tested #TODO missing dependencies: https://github.com/ccache/ccache/blob/master/doc/INSTALL.md#dependencies # build instructions: https://github.com/ccache/ccache/blob/master/doc/INSTALL.md [source] tar = "https://github.com/ccache/ccache/releases/download/v4.10.2/ccache-4.10.2.tar.gz" [build] template = "cmake" cmakeflags = [ "-DENABLE_TESTING=OFF", "-DREDIS_STORAGE_BACKEND=OFF", ] dependencies = [ "libfmt", "xxhash", "zstd", ] ================================================ FILE: recipes/wip/dev/build-system/hadrian/recipe.toml ================================================ #TODO missing script for building, see https://github.com/ghc/hadrian [source] tar = "https://downloads.haskell.org/~ghc/9.8.1/hadrian-bootstrap-sources/hadrian-bootstrap-sources-9.6.2.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/dev/build-system/just/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/casey/just" [build] template = "custom" script = """ cookbook_cargo_packages just """ ================================================ FILE: recipes/wip/dev/build-system/lux/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/lumen-oss/lux" [build] template = "custom" script = """ cookbook_cargo_packages lux-cli """ ================================================ FILE: recipes/wip/dev/build-system/meson/recipe.toml ================================================ #TODO create a standalone script: https://github.com/mesonbuild/meson#creating-a-standalone-script [source] tar = "https://github.com/mesonbuild/meson/releases/download/1.3.0/meson-1.3.0.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/dev/build-system/ninja-build/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/ninja-build/ninja#building-ninja-itself [source] git = "https://github.com/ninja-build/ninja" rev = "v1.13.1" [build] template = "cmake" ================================================ FILE: recipes/wip/dev/build-system/sbt/recipe.toml ================================================ #TODO missing script for building, discover how to build [source] git = "https://github.com/sbt/sbt" branch = "1.12.x" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/dev/build-system/scala-cli/recipe.toml ================================================ #TODO not tested yet [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin wget https://github.com/VirtusLab/scala-cli/releases/download/v1.12.1/scala-cli.jar "${COOKBOOK_STAGE}"/usr/bin echo "#!/usr/bin/env sh \n java -jar scala-cli.jar" > "${COOKBOOK_STAGE}"/usr/bin/scala-cli chmod a+x "${COOKBOOK_STAGE}"/usr/bin/scala-cli """ [package] dependencies = ["openjdk21"] ================================================ FILE: recipes/wip/dev/build-system/werk/recipe.toml ================================================ #TODO async and rustix crates error [source] git = "https://github.com/simonask/werk" [build] template = "custom" script = """ cookbook_cargo_packages werk-cli """ ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-about/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/EmbarkStudios/cargo-about" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-all-features/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/frewsxcv/cargo-all-features" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-attribution/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/ameknite/cargo-attribution" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-audit/recipe.toml ================================================ #TODO camino crate error (after a patch on the ring crate) [source] git = "https://github.com/rustsec/rustsec" shallow_clone = true [build] template = "custom" dependencies = [ "openssl3", "libssh2", ] script = """ DYNAMIC_INIT export OPENSSL_DIR="${COOKBOOK_SYSROOT}" cookbook_cargo_packages cargo-audit """ ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-auditable/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/rust-secure-code/cargo-auditable" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-auditable"] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-auto/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/automation-tasks-rs/cargo-auto" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-autodd/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/nwiizo/cargo-autodd" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-binutils/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/rust-embedded/cargo-binutils" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-bloat/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/RazrFalcon/cargo-bloat" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-c/recipe.toml ================================================ #TODO require rustc 1.75 or newer [source] git = "https://github.com/lu-zero/cargo-c" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-cache/recipe.toml ================================================ # TODO compile errors from fs_at 0.1.4, libc 0.2.140, proc-macro2 1.0.53 # tested 29th January 2026 [source] git = "https://github.com/matthiaskrgr/cargo-cache" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-careful/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/RalfJung/cargo-careful" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-check-deadlock/recipe.toml ================================================ #TODO require the components rust-src rustc-dev llvm-tools-preview to be installed [source] git = "https://github.com/hlisdero/cargo-check-deadlock" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-checkmate/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/cargo-checkmate/cargo-checkmate" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-clone/recipe.toml ================================================ #TODO cargo-util crate error [source] git = "https://github.com/JanLikar/cargo-clone" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-clone"] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-clone-crate/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ehuss/cargo-clone-crate" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-compete/recipe.toml ================================================ #TODO serde crate error (after cargo update) [source] git = "https://github.com/qryxip/cargo-compete" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-component/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/bytecodealliance/cargo-component" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-crev/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/crev-dev/cargo-crev" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-crev"] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-deny/recipe.toml ================================================ #TODO camino crate error (after a patch on the ring crate) [source] git = "https://github.com/EmbarkStudios/cargo-deny" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-depsize/recipe.toml ================================================ #TODO cargo-util crate error [source] git = "https://github.com/Alfex4936/cargo-depsize" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-derivefmt/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/dcchut/cargo-derivefmt" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-derivefmt"] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-diet/recipe.toml ================================================ #TODO termsize crate error [source] git = "https://github.com/the-lean-crate/cargo-diet" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-dist/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/axodotdev/cargo-dist" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-dist"] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-docs/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/btwiuse/cargo-docs" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-docs-rs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/dtolnay/cargo-docs-rs" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-duplicates/recipe.toml ================================================ #TODO cargo-util crate error [source] git = "https://github.com/Keruspe/cargo-duplicates" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-edit/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/killercup/cargo-edit" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-equip/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/qryxip/cargo-equip" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-expand/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/dtolnay/cargo-expand" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-featalign/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/hack-ink/cargo-featalign" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-feature/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/Riey/cargo-feature" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-feature-combinations/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/romnn/cargo-feature-combinations" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-files/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/dcchut/cargo-files" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-files"] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-fixture/recipe.toml ================================================ #TODO async-io and rustix crates error [source] git = "https://github.com/vojtechkral/cargo-fixture" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-ft/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/stormshield/cargo-ft" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-fuzz/recipe.toml ================================================ #TODO compiled but not tested (after an update on proc-macro2) [source] git = "https://github.com/rust-fuzz/cargo-fuzz" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-gc/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/waynexia/cargo-gc" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-geiger/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/rust-secure-code/cargo-geiger" shallow_clone = true [build] template = "custom" dependencies = [ "openssl3", ] script = """ DYNAMIC_INIT export OPENSSL_DIR="${COOKBOOK_SYSROOT}" cookbook_cargo_packages cargo-geiger """ ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-generate/recipe.toml ================================================ #TODO fs_at crate error [source] git = "https://github.com/cargo-generate/cargo-generate" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-get/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/nicolaiunrein/cargo-get" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-goggles/recipe.toml ================================================ #TODO serde crate error [source] git = "https://github.com/M4SS-Code/cargo-goggles" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-guppy/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/guppy-rs/guppy" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-guppy"] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-hack/recipe.toml ================================================ #TODO serde crate error [source] git = "https://github.com/taiki-e/cargo-hack" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-hackerman/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/pacak/hackerman" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-hakari/recipe.toml ================================================ #TODO atomicwrites and rustix crates error [source] git = "https://github.com/guppy-rs/guppy" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-hakari"] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-http-registry/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/d-e-s-o/cargo-http-registry" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-info/recipe.toml ================================================ #TODO openssl error [source] git = "https://gitlab.com/imp/cargo-info" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-lambda/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/cargo-lambda/cargo-lambda" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-lambda"] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-leet/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/rust-practice/cargo-leet" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-leptos/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/leptos-rs/cargo-leptos" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-license/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/onur/cargo-license" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-limit/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/cargo-limit/cargo-limit" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-list/recipe.toml ================================================ #TODO update the redox_syscall crate version on the dependency tree [source] git = "https://github.com/qtfkwk/cargo-list" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-llvm-cov/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/taiki-e/cargo-llvm-cov" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-llvm-lines/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/dtolnay/cargo-llvm-lines" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-loc/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/Shnatsel/cargo-loc" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-lockup/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/collinoc/cargo-lookup" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-machete/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/bnjbvr/cargo-machete" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-make/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/sagiegurari/cargo-make" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-modules/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/regexident/cargo-modules" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-msrv/recipe.toml ================================================ #TODO camino crate error (after a patch on ring) [source] git = "https://github.com/foresterre/cargo-msrv" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-multivers/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/ronnychevalier/cargo-multivers" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-mutants/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/sourcefrog/cargo-mutants" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-nextest/recipe.toml ================================================ #TODO shared_child and libc crates error [source] git = "https://github.com/nextest-rs/nextest" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-nextest"] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-outofdate/recipe.toml ================================================ #TODO cargo-util crate error [source] git = "https://github.com/quininer/cargo-outofdate" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-packager/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/crabnebula-dev/cargo-packager" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-packager"] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-patch/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/itmettkeDE/cargo-patch" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-preflight/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/supinie/cargo-preflight" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-public-api/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/Enselic/cargo-public-api" shallow_clone = true [build] template = "cargo" cargopackages = ["cargo-public-api"] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-px/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/LukeMathWalker/cargo-px" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-qtest/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/onur-ozkan/cargo-qtest" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-rdme/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/orium/cargo-rdme" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-release/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/crate-ci/cargo-release" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-remark/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/kobzol/cargo-remark" shallow_clone = true [build] template = "cargo" cargoflags = ["--no-default-features"] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-run-bin/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/dustinblackman/cargo-run-bin" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-scaffold/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/iomentum/cargo-scaffold" shallow_clone = true [build] template = "custom" dependencies = [ "openssl3", ] script = """ DYNAMIC_INIT export OPENSSL_DIR="${COOKBOOK_SYSROOT}" cookbook_cargo """ ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-selector/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/lusingander/cargo-selector" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-semver-checks/recipe.toml ================================================ #TODO serde crate error [source] git = "https://github.com/obi1kenobi/cargo-semver-checks" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-shear/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/Boshen/cargo-shear" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-show-asm/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/pacak/cargo-show-asm" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-single-line/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/mexus/cargo-single-line" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-smart-release/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/Byron/cargo-smart-release" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-spellcheck/recipe.toml ================================================ #TODO Not compiled or tested #TODO determine what llvm variant is needed [source] git = "https://github.com/drahnr/cargo-spellcheck" shallow_clone = true [build] template = "cargo" #dependencies = [ # "llvm21", # "llvm21.runtime", #] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-subspace/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ethowitz/cargo-subspace" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-supply-chain/recipe.toml ================================================ #TODO camino crate error (after cargo update) [source] git = "https://github.com/rust-secure-code/cargo-supply-chain" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-sweep/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/holmgr/cargo-sweep" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-sync-rdme/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/gifnksm/cargo-sync-rdme" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-tally/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/dtolnay/cargo-tally" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-tarpaulin/recipe.toml ================================================ # TODO compiles and works. Need cargo disk I/O errors fixed before it can be used. # tested 29th January 2026 [source] git = "https://github.com/xd009642/tarpaulin" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-temp/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/yozhgoor/cargo-temp" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-trend/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/dalance/cargo-trend" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-trim/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/iamsauravsharma/cargo-trim" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-udeps/recipe.toml ================================================ #TODO cargo-util crate error [source] git = "https://github.com/est31/cargo-udeps" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-ui/recipe.toml ================================================ #TODO make libxkbcommon work [source] git = "https://github.com/slint-ui/cargo-ui" shallow_clone = true [build] template = "cargo" cargoflags = [ "--no-default-features --features slint-backend-gl-all" ] dependencies = [ "fontconfig", "libxkbcommon", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-unfmt/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/fprasx/cargo-unfmt" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-unmaintained/recipe.toml ================================================ #TODO compiled but not tested (after a camino crate patch) [source] git = "https://github.com/trailofbits/cargo-unmaintained" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-update/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/nabijaczleweli/cargo-update" shallow_clone = true [build] template = "cargo" dependencies = [ "curl", "openssl3", "libssh2", "libgit2", ] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-vendor-filterer/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/coreos/cargo-vendor-filterer" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-vet/recipe.toml ================================================ #TODO camino crate error (after cargo update and a patch on the ring crate) [source] git = "https://github.com/mozilla/cargo-vet" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-wasi/recipe.toml ================================================ #TODO fs2 crate error [source] git = "https://github.com/bytecodealliance/cargo-wasi" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-wasix/recipe.toml ================================================ #TODO fs2 crate error [source] git = "https://github.com/wasix-org/cargo-wasix" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-watch/recipe.toml ================================================ #TODO nix crate error [source] git = "https://github.com/watchexec/cargo-watch" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-whatfeatures/recipe.toml ================================================ #TODO camino crate error # use openssl if rustls doesn't work [source] git = "https://github.com/museun/cargo-whatfeatures" shallow_clone = true [build] template = "cargo" cargoflags = ["--features rustls"] #dependencies = [ # "openssl3", #] ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-wizard/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/Kobzol/cargo-wizard" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-workspace-version/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/ava-labs/cargo-workspace-version" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-workspaces/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/pksunkara/cargo-workspaces" shallow_clone = true [build] template = "cargo" cargopath = "cargo-workspaces" ================================================ FILE: recipes/wip/dev/cargo-tools/cargo-zigbuild/recipe.toml ================================================ #TODO make zig work [source] git = "https://github.com/rust-cross/cargo-zigbuild" shallow_clone = true [build] template = "cargo" [package] dependencies = [ "zig" ] ================================================ FILE: recipes/wip/dev/cargo-tools/carwash/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/epistates/carwash" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/cargo-tools/crunch/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/liamaharon/crunch-cli" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/debug/dr-memory/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] git = "https://github.com/DynamoRIO/drmemory" rev = "release_2.6.0" shallow_clone = true [build] template = "cmake" dependencies = [ "libunwind", ] ================================================ FILE: recipes/wip/dev/debug/gdb/recipe.toml ================================================ #TODO port to redox [source] tar = "https://ftp.gnu.org/gnu/gdb/gdb-15.1.tar.xz" [build] template = "custom" dependencies = [ "libgmp", "libmpfr", "ncurses", "readline", ] script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( --disable-binutils --disable-ld --disable-gold --disable-gas --disable-sim --disable-gprof --disable-gprofng --disable-intl --with-system-readline --with-gmp="${COOKBOOK_SYSROOT}" --with-mpfr="${COOKBOOK_SYSROOT}" --with-curses ) "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" cookbook_configure """ ================================================ FILE: recipes/wip/dev/debug/nnd/recipe.toml ================================================ #TODO nnd crate error [source] git = "https://github.com/al13n321/nnd" [build] template = "custom" script = """ cookbook_cargo --profile=dbgo """ ================================================ FILE: recipes/wip/dev/debug/rr-debugger/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/rr-debugger/rr/wiki/Building-And-Installing [source] git = "https://github.com/rr-debugger/rr" rev = "5.9.0" shallow_clone = true [build] template = "cmake" dependencies = [ "zlib", "capnproto", "zstd", ] ================================================ FILE: recipes/wip/dev/debug/termfu/recipe.toml ================================================ #TODO missing script for gnu make # build instructions: https://github.com/jvalcher/termfu#installation [source] git = "https://github.com/jvalcher/termfu" rev = "v0.2.2" [build] template = "custom" dependencies = [ "ncurses", ] [package] dependencies = [ "gdb", "python312", ] ================================================ FILE: recipes/wip/dev/debug/yetty/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/aa55-dev/yeTTY" rev = "v0.1.3" [build] template = "cmake" dependencies = [ "qt6-base", "qt6-multimedia", "qt6-serialport", "zstd", "boost", "libbacktrace", "ktexteditor6", ] ================================================ FILE: recipes/wip/dev/framework/biome/recipe.toml ================================================ #TODO tikv-jemalloc-sys crate error [source] git = "https://github.com/biomejs/biome" shallow_clone = true [build] template = "custom" script = """ cookbook_cargo_packages biome_cli """ ================================================ FILE: recipes/wip/dev/framework/deno/recipe.toml ================================================ #TODO v8 crate error #TODO lacking librusty_v8 crate binaries for redox [source] git = "https://github.com/denoland/deno" shallow_clone = true [build] template = "custom" script = """ cookbook_cargo_packages deno """ ================================================ FILE: recipes/wip/dev/framework/feather/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/BersisSe/feather-cli" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/framework/moonzoon/recipe.toml ================================================ #TODO camino crate error, require the WebAssembly target on Rustup. [source] git = "https://github.com/MoonZoon/MoonZoon" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo_packages mzoon """ ================================================ FILE: recipes/wip/dev/framework/sphere/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/Nakadra/sphere-runtime" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/usr/share/sphere" cp -rv "${COOKBOOK_SOURCE}/*.sphere" "${COOKBOOK_STAGE}/usr/share/sphere" echo "entrypoint = "echo 'Hello, from my first Sphere!'"" > "${COOKBOOK_STAGE}/usr/share/sphere/hello.sphere" """ ================================================ FILE: recipes/wip/dev/game-engine/defold-engine/recipe.toml ================================================ #TODO missing script for building, see https://github.com/defold/defold/blob/dev/README_BUILD.md #TODO build the editor, see https://github.com/defold/defold/blob/dev/editor/README_BUILD.md # probably the SDKs can't run on Redox, avoid them [source] git = "https://github.com/defold/defold" rev = "4e156b7cf37a380122aada30dacbf2b590ead76b" [build] template = "custom" dependencies = [ "libxi", "libxext", "mesa-glu", "mesa", "curl", "freeglut", "libuuid", "openal", "ncurses", ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" """ ================================================ FILE: recipes/wip/dev/game-engine/fyrox-template/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/FyroxEngine/Fyrox" shallow_clone = true [build] template = "custom" script = """ cookbook_cargo_packages fyrox-template """ ================================================ FILE: recipes/wip/dev/game-engine/godot4/recipe.toml ================================================ #TODO missing script for scons: https://docs.godotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd.html #TODO discover minimum dependencies from scons log [source] tar = "https://github.com/godotengine/godot/releases/download/4.5.1-stable/godot-4.5.1-stable.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/dev/game-engine/redot4/recipe.toml ================================================ #TODO missing script for scons: https://docs.redotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd #TODO discover minimum dependencies from scons log [source] tar = "https://github.com/Redot-Engine/redot-engine/releases/download/redot-4.3.1-stable/Redot-4.3.1-stable.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/dev/git-tools/auto-commit/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/m1guelpf/auto-commit" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/git-tools/git-absorb/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/tummychow/git-absorb" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/git-chain/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/dashed/git-chain" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/git-tools/git-cliff/recipe.toml ================================================ #TODO compiled but not tested (after a patch on the ring crate) [source] git = "https://github.com/orhun/git-cliff" shallow_clone = true [build] template = "cargo" cargopackages = ["git-cliff"] ================================================ FILE: recipes/wip/dev/git-tools/git-grab/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/wezm/git-grab" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/git-graph/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/mlange-42/git-graph" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/git-ignore-generator/recipe.toml ================================================ #TODO compiled but not tested (after a cargo update and a patch on the ring crate) [source] git = "https://github.com/sondr3/git-ignore" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/git-interactive-rebase-tool/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/MitMaro/git-interactive-rebase-tool" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/git-lfs/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/git-lfs/git-lfs?tab=readme-ov-file#from-source [source] tar = "https://github.com/git-lfs/git-lfs/releases/download/v3.5.1/git-lfs-v3.5.1.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/dev/git-tools/git-repo-manager/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/hakoerber/git-repo-manager" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/git-tools/git-statuses/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bircni/git-statuses" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/git-subset/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/jasonwhite/git-subset" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/git-tools/git-tool-rs/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/SierraSoftworks/git-tool" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/git-tools-rs/recipe.toml ================================================ #TODO users crate error [source] git = "https://github.com/cecton/git-tools" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/gitlogue/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/unhappychoice/gitlogue" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/gitv/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/JayanAXHF/gitv" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/keifu/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/trasta298/keifu" shallow_clone = true [build] template = "cargo" [package] dependencies = [ "git", ] ================================================ FILE: recipes/wip/dev/git-tools/lazygh/recipe.toml ================================================ #TODO x11rb and rustix crates error [source] git = "https://github.com/kmj-007/lazygh" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/lazygit/recipe.toml ================================================ #TODO: Incomplete std/syscall porting, or vendor patches [source] git = "https://github.com/jesseduffield/lazygit" shallow_clone = true [build] template = "custom" dev-dependencies = [ "host:go" ] script = """ export GOTOOLCHAIN=local case "${TARGET}" in x86_64-unknown-linux-gnu) export GOARCH=amd64 GOOS=linux;; aarch64-unknown-linux-gnu) export GOARCH=arm64 GOOS=linux;; i586-unknown-redox) export GOARCH=386 GOOS=redox;; x86_64-unknown-redox) export GOARCH=amd64 GOOS=redox;; aarch64-unknown-redox) export GOARCH=arm64 GOOS=redox;; riscv64gc-unknown-redox) export GOARCH=riscv64 GOOS=redox;; esac mkdir -p $COOKBOOK_STAGE/usr/bin go build -C ${COOKBOOK_SOURCE} -o $COOKBOOK_STAGE/usr/bin/lazygit """ ================================================ FILE: recipes/wip/dev/git-tools/oyo/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ahkohd/oyo" shallow_clone = true [build] template = "cargo" cargopackages = ["oyo"] ================================================ FILE: recipes/wip/dev/git-tools/patchy/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/nik-rev/patchy" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/riff/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/walles/riff" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/serie/recipe.toml ================================================ #TODO x11rb and rustix crates error [source] git = "https://github.com/lusingander/serie" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/git-tools/shackle-shell/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://codeberg.org/worthe-it/shackle-shell" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/graphics/bonzomatic/recipe.toml ================================================ #TODO not compiled or tested #TODO missing dependencies # build instructions - https://github.com/Gargaj/Bonzomatic#linux [source] git = "https://github.com/Gargaj/Bonzomatic" [build] template = "cmake" dependencies = [ "libx11", "libalsa", "mesa-glu", ] ================================================ FILE: recipes/wip/dev/graphics/pilka/recipe.toml ================================================ #TODO winit crate error (after cargo update) [source] git = "https://github.com/pudnax/pilka" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/graphics/sh4der-jockey/recipe.toml ================================================ #TODO winit crate error [source] git = "https://github.com/slerpyyy/sh4der-jockey" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/hw/design/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from meson log [source] git = "https://github.com/dubstar-04/Design" rev = "e6906bc36217306b07d23fa5a4332778db8bca78" shallow_clone = true [build] template = "meson" ================================================ FILE: recipes/wip/dev/hw/librepcb/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://librepcb.org/docs/installation/build-from-sources/ # commented out optional dependencies [source] git = "https://github.com/LibrePCB/LibrePCB" rev = "1.3.0" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DUSE_GLU=0", "-DUSE_OPENCASCADE=0", ] dependencies = [ "qt6-base", "qt6-imageformats", "openssl3", "zlib", #"opencascade", #"mesa-glu", ] ================================================ FILE: recipes/wip/dev/hw/uefitool/recipe.toml ================================================ #TODO missing script for compilation: https://github.com/LongSoft/UEFITool#installation [source] git = "https://github.com/LongSoft/UEFITool" rev = "A73" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/dev/ide/asm-lsp/recipe.toml ================================================ #TODO linking error [source] git = "https://github.com/bergercookie/asm-lsp" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo_packages asm-lsp """ ================================================ FILE: recipes/wip/dev/ide/astronvim/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/AstroNvim/AstroNvim" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/home/user/.config/nvim cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user/.config/nvim """ ================================================ FILE: recipes/wip/dev/ide/rust-analyzer/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rust-lang/rust-analyzer" shallow_clone = true [build] template = "custom" script = """ cookbook_cargo_packages rust-analyzer """ ================================================ FILE: recipes/wip/dev/lang/artichoke/recipe.toml ================================================ #TODO iana-time-zone crate error [source] git = "https://github.com/artichoke/artichoke" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/lang/blueprint/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/blueprint-compiler/0.19/blueprint-compiler-0.19.0.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/dev/lang/brimstone/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Hans-Halverson/brimstone" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/lang/cjit/recipe.toml ================================================ #TODO write a gnu make target for redox: https://github.com/dyne/cjit#build-from-source [source] git = "https://github.com/dyne/cjit" rev = "v0.18.2" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/dev/lang/dotnet8/recipe.toml ================================================ #TODO missing script for building: https://github.com/dotnet/dotnet/tree/release/8.0.1xx#building # linux requirements: https://github.com/dotnet/runtime/blob/release/8.0/docs/workflow/requirements/linux-requirements.md # freebsd requirements: https://github.com/dotnet/runtime/blob/release/8.0/docs/workflow/requirements/freebsd-requirements.md#linux-environment # bootstraping: https://github.com/dotnet/source-build/blob/main/Documentation/bootstrapping-guidelines.md#building-for-new-os-using-a-rid-unknown-to-net [source] git = "https://github.com/dotnet/dotnet" branch = "release/8.0.1xx" shallow_clone = true [build] template = "custom" dependencies = [ "libicu", "lttng-ust", "openssl3", "kerberos5", "zlib", ] ================================================ FILE: recipes/wip/dev/lang/elixir/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/elixir-lang/elixir#compiling-from-source [source] git = "https://github.com/elixir-lang/elixir" branch = "v1.19" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/dev/lang/elm/recipe.toml ================================================ #TODO missing script for building, lacking build instructions [source] git = "https://github.com/elm/compiler" rev = "0.19.1" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/dev/lang/erlang/recipe.toml ================================================ #TODO discover current status # build instructions: https://www.erlang.org/doc/installation_guide/install [source] tar = "https://github.com/erlang/otp/releases/download/OTP-28.3.1/otp_src_28.3.1.tar.gz" [build] template = "custom" dependencies = [ "openssl3", ] script = """ DYNAMIC_INIT export ERL_TOP="${COOKBOOK_SOURCE}" COOKBOOK_CONFIGURE_FLAGS+=( --without-termcap --enable-bootstrap-only ) cookbook_configure """ ================================================ FILE: recipes/wip/dev/lang/ghc/recipe.toml ================================================ #TODO missing script for hadrian: https://gitlab.haskell.org/ghc/ghc/-/wikis/building/hadrian [source] tar = "https://downloads.haskell.org/~ghc/9.14.1/ghc-9.14.1-src.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/dev/lang/ghostscript/recipe.toml ================================================ #TODO libtiff configure script error # customization: https://ghostscript.readthedocs.io/en/latest/Make.html [source] tar = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10060/ghostscript-10.06.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/lang/go/recipe.toml ================================================ #TODO compiling, not tested further [source] git = "https://github.com/willnode/go" branch = "go-1.25-redox" shallow_clone = true [build] template = "custom" script = """ export PATH=$HOME/go/bin:$PATH export GOPATH=${COOKBOOK_BUILD}/gopath if ! command -v go &> /dev/null; then GO_TARBALL=go1.24.6.linux-$( [ "$(uname -m)" = "aarch64" ] && echo "arm64" || echo "amd64" ).tar.gz GO_DOWNLOAD_URL="https://dl.google.com/go/${GO_TARBALL}" echo "Installing Go..." wget -q --show-progress "${GO_DOWNLOAD_URL}" tar -C "$HOME" -xzf "${GO_TARBALL}" fi # Go does not support out-of-tree builds :( rsync -a --delete "${COOKBOOK_SOURCE}/" ./ case "${TARGET}" in x86_64-unknown-linux-gnu) export GOARCH=amd64 GOOS=linux;; aarch64-unknown-linux-gnu) export GOARCH=arm64 GOOS=linux;; i586-unknown-redox) export GOARCH=386 GOOS=redox;; x86_64-unknown-redox) export GOARCH=amd64 GOOS=redox;; aarch64-unknown-redox) export GOARCH=arm64 GOOS=redox;; riscv64gc-unknown-redox) export GOARCH=riscv64 GOOS=redox;; esac export CGO_ENABLED=1 echo "go1.25.0" > VERSION # to set -trimpath (cd ./src && bash ./make.bash) mkdir -p "${COOKBOOK_STAGE}"/usr/bin \ "${COOKBOOK_STAGE}"/usr/lib/golang/{bin,lib,misc,pkg/include,pkg/tool,src} if [ "$TARGET" = "$COOKBOOK_HOST_TARGET" ]; then rsync -a bin/* "${COOKBOOK_STAGE}"/usr/lib/golang/bin/ else rsync -a bin/${GOOS}_${GOARCH}/* "${COOKBOOK_STAGE}"/usr/lib/golang/bin/ fi rsync -a lib/* "${COOKBOOK_STAGE}"/usr/lib/golang/lib/ rsync -a misc/* "${COOKBOOK_STAGE}"/usr/lib/golang/misc/ rsync -a pkg/include/* "${COOKBOOK_STAGE}"/usr/lib/golang/pkg/include/ rsync -a pkg/tool/${GOOS}_${GOARCH} "${COOKBOOK_STAGE}"/usr/lib/golang/pkg/tool/ rsync -a src/* "${COOKBOOK_STAGE}"/usr/lib/golang/src/ cat go.env > "${COOKBOOK_STAGE}"/usr/lib/golang/go.env ln -s "../lib/golang/bin/go" "${COOKBOOK_STAGE}"/usr/bin/go ln -s "../lib/golang/bin/gofmt" "${COOKBOOK_STAGE}"/usr/bin/gofmt """ ================================================ FILE: recipes/wip/dev/lang/goiaba/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/raphamorim/goiaba" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/lang/java/openjdk11/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/openjdk/jdk11u/blob/master/doc/building.md [source] git = "https://github.com/openjdk/jdk11u" rev = "jdk-11.0.29-ga" shallow_clone = true script = "chmod a+x configure" [build] template = "configure" configureflags = [ "--enable-headless-only=yes", ] dependencies = [ "fontconfig", ] ================================================ FILE: recipes/wip/dev/lang/java/openjdk17/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/openjdk/jdk17u/blob/master/doc/building.md [source] git = "https://github.com/openjdk/jdk17u" rev = "jdk-17.0.17-ga" shallow_clone = true script = "chmod a+x configure" [build] template = "configure" configureflags = [ "--enable-headless-only=yes", ] dependencies = [ "fontconfig", ] ================================================ FILE: recipes/wip/dev/lang/java/openjdk21/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/openjdk/jdk21u/blob/master/doc/building.md [source] git = "https://github.com/openjdk/jdk21u" rev = "jdk-21.0.9-ga" shallow_clone = true script = "chmod a+x configure" [build] template = "configure" configureflags = [ "--enable-headless-only=yes", ] dependencies = [ "fontconfig", ] ================================================ FILE: recipes/wip/dev/lang/java/openjdk8/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/openjdk/jdk8u/blob/master/doc/building.md [source] git = "https://github.com/openjdk/jdk8u" rev = "jdk8u472-ga" shallow_clone = true script = "chmod a+x configure" [build] template = "configure" configureflags = [ "--enable-headless-only=yes", ] dependencies = [ "freetype2", ] ================================================ FILE: recipes/wip/dev/lang/kotlin/recipe.toml ================================================ #TODO not tested yet [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/bin/kotlin-dir" wget https://github.com/JetBrains/kotlin/releases/download/v2.3.0/kotlin-compiler-2.3.0.zip "${COOKBOOK_BUILD}" unzip "${COOKBOOK_BUILD}"/kotlin-compiler-2.3.0.zip -d "${COOKBOOK_BUILD}" mv "${COOKBOOK_BUILD}"/kotlinc/* "${COOKBOOK_STAGE}/usr/bin/kotlin-dir" echo "/usr/bin/kotlin-dir/bin/kotlinc" > "${COOKBOOK_STAGE}"/usr/bin/kotlinc chmod a+x "${COOKBOOK_STAGE}"/usr/bin/kotlinc """ [package] dependencies = ["openjdk21"] ================================================ FILE: recipes/wip/dev/lang/lacc/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/larmel/lacc" rev = "30839843daaff9d87574b5854854c9ee4610cdcd" [build] template = "configure" ================================================ FILE: recipes/wip/dev/lang/llvm-mingw/recipe.toml ================================================ #TODO missing script, read the llvm21 recipe for reference # build instructions: https://github.com/mstorsjo/llvm-mingw#building-from-source [source] git = "https://github.com/mstorsjo/llvm-mingw" rev = "20251216" shallow_clone = true [build] template = "custom" dependencies = [ "zlib", ] ================================================ FILE: recipes/wip/dev/lang/mono/recipe.toml ================================================ #TODO can't recognize the redox target [source] tar = "https://dl.winehq.org/mono/sources/mono/mono-6.14.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/lang/nodejs-21/recipe.toml ================================================ #TODO promote [source] tar = "https://nodejs.org/dist/v21.7.3/node-v21.7.3.tar.xz" blake3 = "95a56db4f9729b2f8384ab58ccb2ec0c41da05991f7400ef97bd76748d77870b" patches = ["redox.patch"] [build] template = "custom" dependencies = [ "libbrotli", "c-ares", "libuv", "ngtcp2", "nghttp2", "nghttp3", "openssl3", "sqlite3", "zlib", "zstd", ] dev-dependencies = [ "host:libbrotli", "host:c-ares", "host:libuv", "host:ngtcp2", "host:nghttp2", "host:nghttp3", "host:openssl3", "host:sqlite3", "host:zlib", "host:zstd", ] script = """ DYNAMIC_INIT export PYTHONDONTWRITEBYTECODE=1 COOKBOOK_NOSTRIP=true export CC_host="$CC_WRAPPER gcc" CXX_host="$CC_WRAPPER g++" rsync -av "${COOKBOOK_SOURCE}/" ./ case "${TARGET}" in x86_64-unknown-linux-gnu) export NODE_CPU=x64 NODE_OS=linux;; aarch64-unknown-linux-gnu) export NODE_CPU=arm64 NODE_OS=linux;; i586-unknown-redox) export NODE_CPU=ia32 NODE_OS=redox;; x86_64-unknown-redox) export NODE_CPU=x64 NODE_OS=redox;; aarch64-unknown-redox) export NODE_CPU=arm64 NODE_OS=redox;; esac COOKBOOK_CONFIGURE_FLAGS=( --prefix=/usr --dest-cpu=${NODE_CPU} --dest-os=${NODE_OS} --shared-cares --shared-libuv --shared-ngtcp2 --shared-nghttp2 --shared-nghttp3 --shared-openssl --shared-zlib --without-inspector # TODO: Find a way to separate host and target flags instead? # --shared-zlib-includes="${COOKBOOK_TOOLCHAIN}/include" --shared-openssl-includes="${COOKBOOK_SYSROOT}/include" --shared-zlib-libpath="${COOKBOOK_TOOLCHAIN}/lib" --shared-openssl-libpath="${COOKBOOK_SYSROOT}/lib" --cross-compiling ) COOKBOOK_CONFIGURE="./configure" cookbook_configure """ ================================================ FILE: recipes/wip/dev/lang/nodejs-21/redox.patch ================================================ diff -ruwN source/configure source-new/configure --- source/configure 2024-04-10 19:46:11.000000000 +0700 +++ source-new/configure 2025-11-30 18:13:57.842696765 +0700 @@ -4,6 +4,7 @@ # Note that the mix of single and double quotes is intentional, # as is the fact that the ] goes on a new line. _=[ 'exec' '/bin/sh' '-c' ''' +command -v python3.13 >/dev/null && exec python3.13 "$0" "$@" command -v python3.12 >/dev/null && exec python3.12 "$0" "$@" command -v python3.11 >/dev/null && exec python3.11 "$0" "$@" command -v python3.10 >/dev/null && exec python3.10 "$0" "$@" @@ -24,7 +25,7 @@ from distutils.spawn import find_executable as which print('Node.js configure: Found Python {}.{}.{}...'.format(*sys.version_info)) -acceptable_pythons = ((3, 12), (3, 11), (3, 10), (3, 9), (3, 8), (3, 7), (3, 6)) +acceptable_pythons = ((3, 13), (3, 12), (3, 11), (3, 10), (3, 9), (3, 8), (3, 7), (3, 6)) if sys.version_info[:2] in acceptable_pythons: import configure else: diff -ruwN source/configure.py source-new/configure.py --- source/configure.py 2024-04-10 19:46:11.000000000 +0700 +++ source-new/configure.py 2025-10-10 13:46:04.244040340 +0700 @@ -46,7 +46,7 @@ parser = argparse.ArgumentParser() valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux', - 'android', 'aix', 'cloudabi', 'os400', 'ios') + 'android', 'aix', 'cloudabi', 'os400', 'ios', 'redox') valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', 'ppc', 'ppc64', 'x64', 'x86', 'x86_64', 's390x', 'riscv64', 'loong64') valid_arm_float_abi = ('soft', 'softfp', 'hard') diff -ruwN source/deps/v8/bazel/config/BUILD.bazel source-new/deps/v8/bazel/config/BUILD.bazel --- source/deps/v8/bazel/config/BUILD.bazel 2024-04-10 19:46:12.000000000 +0700 +++ source-new/deps/v8/bazel/config/BUILD.bazel 2025-10-10 15:52:40.317126983 +0700 @@ -144,6 +144,11 @@ ) config_setting( + name = "is_redox", + constraint_values = ["@platforms//os:redox"], +) + +config_setting( name = "is_linux", constraint_values = ["@platforms//os:linux"], ) @@ -204,6 +209,7 @@ selects.config_setting_group( name = "is_non_android_posix", match_any = [ + ":is_redox", ":is_linux", ":is_macos", ], diff -ruwN source/deps/v8/BUILD.bazel source-new/deps/v8/BUILD.bazel --- source/deps/v8/BUILD.bazel 2024-04-10 19:46:12.000000000 +0700 +++ source-new/deps/v8/BUILD.bazel 2025-10-10 16:05:33.775461039 +0700 @@ -758,6 +758,11 @@ "src/base/debug/stack_trace_posix.cc", "src/base/platform/platform-darwin.cc", ], + "@v8//bazel/config:is_redox": [ + "src/base/debug/stack_trace_posix.cc", + "src/base/platform/platform-redox.cc", + "src/base/platform/platform-redox.h", + ], "@v8//bazel/config:is_windows": [ "src/base/debug/stack_trace_win.cc", "src/base/platform/platform-win32.cc", diff -ruwN source/deps/v8/BUILD.gn source-new/deps/v8/BUILD.gn --- source/deps/v8/BUILD.gn 2024-04-10 19:46:12.000000000 +0700 +++ source-new/deps/v8/BUILD.gn 2025-10-10 21:27:40.939874152 +0700 @@ -5538,8 +5538,9 @@ if (v8_enable_webassembly) { # iOS Xcode simulator builds run on an x64 target. iOS and macOS are both # based on Darwin and thus POSIX-compliant to a similar degree. - if (is_linux || is_chromeos || is_mac || is_ios || + if (is_linux || is_redox || is_chromeos || is_mac || is_ios || target_os == "freebsd") { + assert(false, "gatchs") sources += [ "src/trap-handler/handler-inside-posix.cc", "src/trap-handler/handler-outside-posix.cc", @@ -5590,8 +5591,8 @@ if (v8_enable_webassembly) { # Trap handling is enabled on arm64 Mac and Linux and in simulators on # x64 on Linux, Mac, and Windows. - if ((current_cpu == "arm64" && (is_linux || is_chromeos || is_apple)) || - (current_cpu == "x64" && (is_linux || is_chromeos || is_mac))) { + if ((current_cpu == "arm64" && (is_linux || is_redox || is_chromeos || is_apple)) || + (current_cpu == "x64" && (is_linux || is_redox || is_chromeos || is_mac))) { sources += [ "src/trap-handler/handler-inside-posix.cc", "src/trap-handler/handler-outside-posix.cc", @@ -6174,6 +6175,11 @@ "src/base/debug/stack_trace_posix.cc", "src/base/platform/platform-darwin.cc", ] + } else if (is_redox) { + sources += [ + "src/base/debug/stack_trace_posix.cc", + "src/base/platform/platform-redox.cc", + ] } else if (is_ios) { sources += [ "src/base/debug/stack_trace_posix.cc", diff -ruwN source/deps/v8/include/v8config.h source-new/deps/v8/include/v8config.h --- source/deps/v8/include/v8config.h 2024-04-10 19:46:12.000000000 +0700 +++ source-new/deps/v8/include/v8config.h 2025-10-10 22:03:04.057821844 +0700 @@ -159,6 +159,11 @@ # define V8_OS_QNX 1 # define V8_OS_STRING "qnx" +#elif defined(__redox__) +# define V8_OS_POSIX 1 +# define V8_OS_REDOX 1 +# define V8_OS_STRING "redox" + #elif defined(_WIN32) # define V8_OS_WIN 1 # define V8_OS_STRING "windows" @@ -185,6 +190,7 @@ && !defined(V8_TARGET_OS_IOS) \ && !defined(V8_TARGET_OS_LINUX) \ && !defined(V8_TARGET_OS_MACOS) \ + && !defined(V8_TARGET_OS_REDOX) \ && !defined(V8_TARGET_OS_WIN) \ && !defined(V8_TARGET_OS_CHROMEOS) # error No known target OS defined. @@ -197,6 +203,7 @@ || defined(V8_TARGET_OS_IOS) \ || defined(V8_TARGET_OS_LINUX) \ || defined(V8_TARGET_OS_MACOS) \ + || defined(V8_TARGET_OS_REDOX) \ || defined(V8_TARGET_OS_WIN) \ || defined(V8_TARGET_OS_CHROMEOS) # error A target OS is defined but V8_HAVE_TARGET_OS is unset. @@ -223,6 +230,10 @@ # define V8_TARGET_OS_MACOS #endif +#ifdef V8_OS_REDOX +# define V8_TARGET_OS_REDOX +#endif + #ifdef V8_OS_WIN # define V8_TARGET_OS_WIN #endif @@ -239,6 +250,8 @@ # define V8_TARGET_OS_STRING "linux" #elif defined(V8_TARGET_OS_MACOS) # define V8_TARGET_OS_STRING "macos" +#elif defined(V8_TARGET_OS_REDOX) +# define V8_TARGET_OS_STRING "redox" #elif defined(V8_TARGET_OS_WINDOWS) # define V8_TARGET_OS_STRING "windows" #else diff -ruwN source/deps/v8/src/base/platform/memory.h source-new/deps/v8/src/base/platform/memory.h --- source/deps/v8/src/base/platform/memory.h 2024-04-10 19:46:12.000000000 +0700 +++ source-new/deps/v8/src/base/platform/memory.h 2025-10-10 13:46:04.297422792 +0700 @@ -23,9 +23,9 @@ #include #endif // !V8_OS_DARWIN -#if (V8_OS_POSIX && !V8_OS_AIX && !V8_OS_SOLARIS) || V8_OS_WIN +#if (V8_OS_POSIX && !V8_OS_AIX && !V8_OS_SOLARIS && !V8_OS_REDOX) || V8_OS_WIN #define V8_HAS_MALLOC_USABLE_SIZE 1 -#endif // (V8_OS_POSIX && !V8_OS_AIX && !V8_OS_SOLARIS) || V8_OS_WIN +#endif // (V8_OS_POSIX && !V8_OS_AIX && !V8_OS_SOLARIS && !V8_OS_REDOX) || V8_OS_WIN namespace v8::base { diff -ruwN source/deps/v8/src/base/platform/platform-posix.cc source-new/deps/v8/src/base/platform/platform-posix.cc --- source/deps/v8/src/base/platform/platform-posix.cc 2024-04-10 19:46:12.000000000 +0700 +++ source-new/deps/v8/src/base/platform/platform-posix.cc 2025-10-10 13:46:04.416447015 +0700 @@ -28,6 +28,10 @@ #include // for sysctl #endif +#if defined(__redox__) + #define PTHREAD_STACK_MIN 1024 * 1024 +#endif + #if defined(ANDROID) && !defined(V8_ANDROID_LOG_STDOUT) #define LOG_TAG "v8" #include @@ -69,7 +73,7 @@ #include #endif -#if !defined(_AIX) && !defined(V8_OS_FUCHSIA) +#if !defined(_AIX) && !defined(V8_OS_FUCHSIA) && !defined(V8_OS_REDOX) #include #endif @@ -135,7 +139,7 @@ int flags = MAP_ANONYMOUS; flags |= (page_type == PageType::kShared) ? MAP_SHARED : MAP_PRIVATE; if (access == OS::MemoryPermission::kNoAccess) { -#if !V8_OS_AIX && !V8_OS_FREEBSD && !V8_OS_QNX +#if !V8_OS_AIX && !V8_OS_FREEBSD && !V8_OS_QNX && !V8_OS_REDOX flags |= MAP_NORESERVE; #endif // !V8_OS_AIX && !V8_OS_FREEBSD && !V8_OS_QNX #if V8_OS_QNX @@ -565,14 +569,8 @@ // MADV_FREE_REUSABLE sometimes fails, so fall back to MADV_DONTNEED. ret = madvise(address, size, MADV_DONTNEED); } -#elif defined(_AIX) || defined(V8_OS_SOLARIS) - int ret = madvise(reinterpret_cast(address), size, MADV_FREE); - if (ret != 0 && errno == ENOSYS) { - return true; // madvise is not available on all systems. - } - if (ret != 0 && errno == EINVAL) { - ret = madvise(reinterpret_cast(address), size, MADV_DONTNEED); - } +#elif defined(_AIX) || defined(V8_OS_SOLARIS) || defined(V8_OS_REDOX) + int ret = 0; // madvise is not available on all systems. #else int ret = madvise(address, size, MADV_DONTNEED); #endif diff -ruwN source/deps/v8/src/base/platform/platform-redox.cc source-new/deps/v8/src/base/platform/platform-redox.cc --- source/deps/v8/src/base/platform/platform-redox.cc 1970-01-01 07:00:00.000000000 +0700 +++ source-new/deps/v8/src/base/platform/platform-redox.cc 2025-10-10 15:23:18.233737033 +0700 @@ -0,0 +1,63 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Platform specific code for Redox goes here. For the POSIX comaptible parts +// the implementation is in platform-posix.cc. + +#include +#include +#include +#include + +#include + +#undef MAP_TYPE + +#include "src/base/macros.h" +#include "src/base/platform/platform-posix-time.h" +#include "src/base/platform/platform-posix.h" +#include "src/base/platform/platform.h" + +namespace v8 { +namespace base { + + +int64_t get_gmt_offset(const tm& localtm) { + // replacement for tm->tm_gmtoff field in glibc + // returns seconds east of UTC, taking DST into account + struct timeval tv; + struct timezone tz; + int ret_code = gettimeofday(&tv, &tz); + // 0 = success, -1 = failure + DCHECK_NE(ret_code, -1); + if (ret_code == -1) { + return 0; + } + return (-tz.tz_minuteswest * 60) + (localtm.tm_isdst > 0 ? 3600 : 0); +} + +TimezoneCache* OS::CreateTimezoneCache() { + return new PosixDefaultTimezoneCache(); +} + +static unsigned StringToLong(char* buffer) { + return static_cast(strtol(buffer, nullptr, 16)); +} + +std::vector OS::GetSharedLibraryAddresses() { + UNREACHABLE(); +} + +void OS::SignalCodeMovingGC() {} + +void OS::AdjustSchedulingParams() {} + +std::vector OS::GetFreeMemoryRangesWithin( + OS::Address boundary_start, OS::Address boundary_end, size_t minimum_size, + size_t alignment) { + return {}; +} + +} // namespace base +} // namespace v8 diff -ruwN source/deps/v8/src/libsampler/sampler.cc source-new/deps/v8/src/libsampler/sampler.cc --- source/deps/v8/src/libsampler/sampler.cc 2024-04-10 19:46:13.000000000 +0700 +++ source-new/deps/v8/src/libsampler/sampler.cc 2025-10-10 13:46:04.417193700 +0700 @@ -16,11 +16,11 @@ #include #include -#if !V8_OS_QNX && !V8_OS_AIX +#if !V8_OS_QNX && !V8_OS_AIX && !V8_OS_REDOX #include #endif -#if V8_OS_AIX || V8_TARGET_ARCH_S390X +#if V8_OS_AIX || V8_OS_REDOX || V8_TARGET_ARCH_S390X #include "src/base/platform/time.h" diff -ruwN source/deps/v8/src/trap-handler/handler-inside-posix.cc source-new/deps/v8/src/trap-handler/handler-inside-posix.cc --- source/deps/v8/src/trap-handler/handler-inside-posix.cc 2024-04-10 19:46:13.000000000 +0700 +++ source-new/deps/v8/src/trap-handler/handler-inside-posix.cc 2025-10-11 12:32:56.074858844 +0700 @@ -23,6 +23,7 @@ // context. Some additional code is used both inside and outside the signal // handler. This code can be found in handler-shared.cc. +#ifndef __redox__ #include "src/trap-handler/handler-inside-posix.h" #include @@ -102,7 +103,6 @@ asm("v8_simulator_probe_memory_continuation"); #endif #endif // V8_TRAP_HANDLER_VIA_SIMULATOR - bool TryHandleSignal(int signum, siginfo_t* info, void* context) { // Ensure the faulting thread was actually running Wasm code. This should be // the first check in the trap handler to guarantee that the @@ -197,3 +197,5 @@ } // namespace trap_handler } // namespace internal } // namespace v8 + +#endif diff -ruwN source/deps/v8/src/trap-handler/handler-inside-posix.h source-new/deps/v8/src/trap-handler/handler-inside-posix.h --- source/deps/v8/src/trap-handler/handler-inside-posix.h 2024-04-10 19:46:13.000000000 +0700 +++ source-new/deps/v8/src/trap-handler/handler-inside-posix.h 2025-10-10 21:44:55.221873295 +0700 @@ -4,7 +4,7 @@ #ifndef V8_TRAP_HANDLER_HANDLER_INSIDE_POSIX_H_ #define V8_TRAP_HANDLER_HANDLER_INSIDE_POSIX_H_ - +#ifndef __redox__ #include #include "include/v8config.h" @@ -28,5 +28,5 @@ } // namespace trap_handler } // namespace internal } // namespace v8 - +#endif #endif // V8_TRAP_HANDLER_HANDLER_INSIDE_POSIX_H_ diff -ruwN source/deps/v8/src/wasm/std-object-sizes.h source-new/deps/v8/src/wasm/std-object-sizes.h --- source/deps/v8/src/wasm/std-object-sizes.h 2024-04-10 19:46:13.000000000 +0700 +++ source-new/deps/v8/src/wasm/std-object-sizes.h 2025-10-10 13:46:04.591737114 +0700 @@ -54,24 +54,7 @@ return raw * 4 / 3; } -// To make it less likely for size estimation functions to become outdated -// when the classes they're responsible for change, we insert static asserts -// about the respective class's size into them to at least catch some possible -// future modifications. Since object sizes are toolchain specific, we define -// restrictions here under which we enable these checks. -// When one of these checks fails, that probably means you've added fields to -// a class guarded by it. Update the respective EstimateCurrentMemoryConsumption -// function accordingly, and then update the check's expected size. -#if V8_TARGET_ARCH_X64 && defined(__clang__) && V8_TARGET_OS_LINUX && \ - !V8_USE_ADDRESS_SANITIZER && !V8_USE_MEMORY_SANITIZER && defined(DEBUG) && \ - V8_COMPRESS_POINTERS && !defined(V8_GC_MOLE) && defined(_LIBCPP_VERSION) -#define UPDATE_WHEN_CLASS_CHANGES(classname, size) \ - static_assert(sizeof(classname) == size, \ - "Update {EstimateCurrentMemoryConsumption} when adding " \ - "fields to " #classname) -#else #define UPDATE_WHEN_CLASS_CHANGES(classname, size) (void)0 -#endif } // namespace v8::internal::wasm diff -ruwN source/src/debug_utils.cc source-new/src/debug_utils.cc --- source/src/debug_utils.cc 2024-04-10 19:46:14.000000000 +0700 +++ source-new/src/debug_utils.cc 2025-10-10 13:46:04.755669055 +0700 @@ -14,7 +14,7 @@ #if defined(__linux__) && !defined(__GLIBC__) || \ defined(__UCLIBC__) || \ - defined(_AIX) + defined(_AIX) || defined(__redox__) #define HAVE_EXECINFO_H 0 #else #define HAVE_EXECINFO_H 1 diff -ruwN source/src/node_credentials.cc source-new/src/node_credentials.cc --- source/src/node_credentials.cc 2024-04-10 19:46:14.000000000 +0700 +++ source-new/src/node_credentials.cc 2025-10-10 13:46:04.816900208 +0700 @@ -182,7 +182,7 @@ static uid_t uid_by_name(Isolate* isolate, Local value) { if (value->IsUint32()) { - static_assert(std::is_same::value); + // static_assert(std::is_same::value); return value.As()->Value(); } else { Utf8Value name(isolate, value); @@ -192,7 +192,7 @@ static gid_t gid_by_name(Isolate* isolate, Local value) { if (value->IsUint32()) { - static_assert(std::is_same::value); + // static_assert(std::is_same::value); return value.As()->Value(); } else { Utf8Value name(isolate, value); diff -ruwN source/src/node_dotenv.cc source-new/src/node_dotenv.cc --- source/src/node_dotenv.cc 2024-04-10 19:46:14.000000000 +0700 +++ source-new/src/node_dotenv.cc 2025-11-30 23:39:21.486092041 +0700 @@ -16,10 +16,14 @@ * The inspiration for this implementation comes from the original dotenv code, * available at https://github.com/motdotla/dotenv */ + +// redox crash on compiling this regex +#if !defined(__redox__) const std::regex LINE( "\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^']" ")*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\r\n]+)?\\s*(?" ":#.*)?"); // NOLINT(whitespace/line_length) +#endif std::vector Dotenv::GetPathFromArgs( const std::vector& args) { @@ -102,6 +106,7 @@ } void Dotenv::ParseContent(const std::string_view content) { +#if !defined(__redox__) std::string lines = std::string(content); lines = std::regex_replace(lines, std::regex("\r\n?"), "\n"); @@ -131,6 +136,7 @@ store_.insert_or_assign(std::string(key), value); lines = match.suffix(); } +#endif } Dotenv::ParseResult Dotenv::ParsePath(const std::string_view path) { diff -ruwN source/src/node_report.cc source-new/src/node_report.cc --- source/src/node_report.cc 2024-04-10 19:46:14.000000000 +0700 +++ source-new/src/node_report.cc 2025-10-10 13:46:05.190512964 +0700 @@ -524,7 +524,7 @@ while (line != -1) { l = ss.substr(0, line); l.erase(l.begin(), std::find_if(l.begin(), l.end(), [](int ch) { - return !std::iswspace(ch); + return !std::isspace(ch); })); writer->json_element(l); ss = ss.substr(line + 1); diff -ruwN source/tools/gyp/pylib/gyp/common.py source-new/tools/gyp/pylib/gyp/common.py --- source/tools/gyp/pylib/gyp/common.py 2024-04-10 19:46:15.000000000 +0700 +++ source-new/tools/gyp/pylib/gyp/common.py 2025-10-10 21:36:23.972976264 +0700 @@ -445,6 +445,8 @@ return "netbsd" if sys.platform.startswith("aix"): return "aix" + if sys.platform.startswith("redox"): + return "redox" if sys.platform.startswith(("os390", "zos")): return "zos" if sys.platform == "os400": diff -ruwN source/tools/gyp/pylib/gyp/generator/make.py source-new/tools/gyp/pylib/gyp/generator/make.py --- source/tools/gyp/pylib/gyp/generator/make.py 2024-04-10 19:46:15.000000000 +0700 +++ source-new/tools/gyp/pylib/gyp/generator/make.py 2025-10-10 14:27:51.496602771 +0700 @@ -1868,7 +1868,7 @@ self.flavor not in ("mac", "openbsd", "netbsd", "win") and not self.is_standalone_static_library ): - if self.flavor in ("linux", "android"): + if self.flavor in ("linux", "android", "redox"): self.WriteMakeRule( [self.output_binary], link_deps, @@ -1883,7 +1883,7 @@ postbuilds=postbuilds, ) else: - if self.flavor in ("linux", "android"): + if self.flavor in ("linux", "android", "redox"): self.WriteMakeRule( [self.output_binary], link_deps, diff -ruwN source/tools/v8_gypfiles/d8.gyp source-new/tools/v8_gypfiles/d8.gyp --- source/tools/v8_gypfiles/d8.gyp 2024-04-10 19:46:15.000000000 +0700 +++ source-new/tools/v8_gypfiles/d8.gyp 2025-10-10 21:34:47.141291162 +0700 @@ -47,7 +47,7 @@ }], ['(OS=="linux" or OS=="mac" or OS=="freebsd" or OS=="netbsd" \ or OS=="openbsd" or OS=="solaris" or OS=="android" \ - or OS=="qnx" or OS=="aix" or OS=="os400")', { + or OS=="qnx" or OS=="aix" or OS=="redox" or OS=="os400")', { 'sources': [ '<(V8_ROOT)/src/d8/d8-posix.cc', ] }], [ 'OS=="win"', { diff -ruwN source/tools/v8_gypfiles/toolchain.gypi source-new/tools/v8_gypfiles/toolchain.gypi --- source/tools/v8_gypfiles/toolchain.gypi 2024-04-10 19:46:15.000000000 +0700 +++ source-new/tools/v8_gypfiles/toolchain.gypi 2025-10-10 21:57:05.129575573 +0700 @@ -575,6 +575,12 @@ 'V8_TARGET_OS_MACOS', ] }], + ['OS=="redox"', { + 'defines': [ + 'V8_HAVE_TARGET_OS', + 'V8_TARGET_OS_REDOX', + ] + }], ['OS=="win"', { 'defines': [ 'V8_HAVE_TARGET_OS', @@ -661,7 +667,7 @@ ], }], ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ - or OS=="netbsd" or OS=="qnx" or OS=="aix" or OS=="os400"', { + or OS=="netbsd" or OS=="qnx" or OS=="aix" or OS=="redox" or OS=="os400"', { 'conditions': [ [ 'v8_no_strict_aliasing==1', { 'cflags': [ '-fno-strict-aliasing' ], diff -ruwN source/tools/v8_gypfiles/v8.gyp source-new/tools/v8_gypfiles/v8.gyp --- source/tools/v8_gypfiles/v8.gyp 2024-04-10 19:46:15.000000000 +0700 +++ source-new/tools/v8_gypfiles/v8.gyp 2025-10-11 12:14:17.137386469 +0700 @@ -606,7 +606,7 @@ }], ['v8_enable_webassembly==1', { 'conditions': [ - ['OS=="linux" or OS=="mac" or OS=="ios" or OS=="freebsd"', { + ['OS=="linux" or OS=="redox" or OS=="mac" or OS=="ios" or OS=="freebsd"', { 'sources': [ '<(V8_ROOT)/src/trap-handler/handler-inside-posix.h', ], @@ -637,7 +637,7 @@ }], ['v8_enable_webassembly==1', { 'conditions': [ - ['((_toolset=="host" and host_arch=="arm64" or _toolset=="target" and target_arch=="arm64") and (OS=="linux" or OS=="mac")) or ((_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="mac"))', { + ['((_toolset=="host" and host_arch=="arm64" or _toolset=="target" and target_arch=="arm64") and (OS=="linux" or OS=="mac")) or ((_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="redox" or OS=="mac"))', { 'sources': [ '<(V8_ROOT)/src/trap-handler/handler-inside-posix.h', ], @@ -941,7 +941,7 @@ }], ['v8_enable_webassembly==1', { 'conditions': [ - ['OS=="linux" or OS=="mac" or OS=="ios" or OS=="freebsd"', { + ['OS=="linux" or OS=="redox" or OS=="mac" or OS=="ios" or OS=="freebsd"', { 'sources': [ '<(V8_ROOT)/src/trap-handler/handler-inside-posix.cc', '<(V8_ROOT)/src/trap-handler/handler-outside-posix.cc', @@ -969,7 +969,7 @@ 'conditions': [ ['v8_enable_webassembly==1', { 'conditions': [ - ['((_toolset=="host" and host_arch=="arm64" or _toolset=="target" and target_arch=="arm64") and (OS=="linux" or OS=="mac" or OS=="ios")) or ((_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="mac"))', { + ['((_toolset=="host" and host_arch=="arm64" or _toolset=="target" and target_arch=="arm64") and (OS=="linux" or OS=="redox" or OS=="mac" or OS=="ios")) or ((_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="redox" or OS=="mac"))', { 'sources': [ '<(V8_ROOT)/src/trap-handler/handler-inside-posix.cc', '<(V8_ROOT)/src/trap-handler/handler-outside-posix.cc', @@ -981,7 +981,7 @@ '<(V8_ROOT)/src/trap-handler/handler-outside-win.cc', ], }], - ['(_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="mac" or OS=="win")', { + ['(_toolset=="host" and host_arch=="x64" or _toolset=="target" and target_arch=="x64") and (OS=="linux" or OS=="redox" or OS=="mac" or OS=="win")', { 'sources': [ '<(V8_ROOT)/src/trap-handler/handler-outside-simulator.cc', ], @@ -1323,6 +1323,35 @@ # end of conditions from 'BUILD.gn' # Node.js validated + ['OS=="redox"', { + 'link_settings': { + 'target_conditions': [ + ['_toolset=="host"', { + 'libraries': [ + '-ldl' + ], + }], + ], + }, + 'sources': [ + '<(V8_ROOT)/src/base/platform/platform-posix.cc', + '<(V8_ROOT)/src/base/platform/platform-posix.h', + '<(V8_ROOT)/src/base/platform/platform-posix-time.cc', + '<(V8_ROOT)/src/base/platform/platform-posix-time.h', + '<(V8_ROOT)/src/base/debug/stack_trace_posix.cc', + ], + 'target_conditions': [ + ['_toolset=="host"', { + 'sources': [ + '<(V8_ROOT)/src/base/platform/platform-linux.cc', + ], + }, { + 'sources': [ + '<(V8_ROOT)/src/base/platform/platform-redox.cc', + ], + }], + ], + }], ['OS=="solaris"', { 'link_settings': { 'libraries': [ ================================================ FILE: recipes/wip/dev/lang/nodejs-24/01_redox.patch ================================================ diff -ruwN source/configure.py source-new/configure.py --- source/configure.py 2025-07-31 15:37:54.000000000 +0700 +++ source-new/configure.py 2025-08-03 00:37:51.836604059 +0700 @@ -44,7 +44,7 @@ # parse our options parser = argparse.ArgumentParser() -valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux', +valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux', 'redox', 'android', 'aix', 'cloudabi', 'os400', 'ios', 'openharmony') valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', 'ppc64', 'x64', 'x86', 'x86_64', 's390x', 'riscv64', 'loong64') ================================================ FILE: recipes/wip/dev/lang/nodejs-24/recipe.toml ================================================ #TODO requires stdc++20 [source] tar = "https://nodejs.org/dist/v24.9.0/node-v24.9.0.tar.xz" blake3 = "c710713c9144dc2dfadaef1d180b295d85edd9945513017fc700af68eb08a251" patches = ["01_redox.patch"] [build] template = "custom" dependencies = [ # "ada", "libbrotli", "c-ares", "libuv", "ngtcp2", "nghttp2", # "http-parser", "nghttp3", "openssl1", "simdjson", "simdutf", "sqlite3", # "uvwasi", "zlib", "zstd", ] script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ case "${TARGET}" in x86-unknown-redox) export NODE_CPU=x32 ;; x86_64-unknown-redox) export NODE_CPU=x64 ;; aarch64-unknown-redox) export NODE_CPU=arm64 ;; esac COOKBOOK_CONFIGURE_FLAGS=( --prefix=${COOKBOOK_STAGE} --dest-cpu=${NODE_CPU} --dest-os=redox --shared-cares --shared-libuv --shared-ngtcp2 --shared-nghttp2 --shared-nghttp3 --shared-openssl --shared-simdjson --shared-simdutf --shared-zlib --shared-zstd --cross-compiling --without-sqlite --without-inspector --without-intl ) COOKBOOK_CONFIGURE="./configure" cookbook_configure """ ================================================ FILE: recipes/wip/dev/lang/perl5/configure_tool.sh ================================================ # Toolchain detection tryprog() { log "trying $1=$2" if command -v $2 1>/dev/null 2>/dev/null; then define "$1" "$2" result "$2" return 0 else return 1 fi } tryfromenv() { if [ "$mode" = "buildmini" ]; then getenv ev "HOST$2" else getenv ev "$2" fi if [ -n "$ev" ]; then tryprog $1 "$ev" && return 0 die "Supplied $ev is not usable" fi unset ev return 1 } # This is only a function for easy access to return-s # try.out contains `$cc --version` output. # # Figuring out gcc is necessary to make sure -fwrapv fix gets applied. detect_cc_version() { _v=`sed -ne '/^gcc version \([0-9][0-9.]*\).*/s//\1/p' try.out` if [ -n "$_v" ]; then define cctype 'gcc' define ccversion "$_v" define gccversion "$_v" result "gcc $_v" return fi _v=`sed -ne '/^clang version \([0-9][0-9.]*\).*/s//\1/p' try.out` if [ -n "$_v" ]; then define cctype 'clang' define ccversion "$_v" define gccversion "0.0" result "clang $_v" return fi define cctype 'cc' define ccversion '' define gccversion '0.0' result 'unknown' } # whichprog symbol VAR prog1 prog2 whichprog() { mstart "Checking for $1" hinted "$1" && return 0 # Maybe we've got $CC or $HOSTCC? tryfromenv "$1" "$2" && return 0 # For anything that sounds like a native compilation, # try no-prefix tools *first*. This is to avoid using # long names is case the host happens to have them. if [ "$mode" = 'native' -o "$mode" = 'buildmini' ]; then tryprog $1 "$3" && return 0 fi # Finally, try $target-gcc test -n "$toolsprefix" && tryprog $1 "$toolsprefix$3" && return 0 test -n "$target" && tryprog $1 "$target-$3" && return 0 test -n "$targetarch" && tryprog $1 "$targetarch-$3" && return 0 result "none found" return 1 } whichprog cc CC gcc || whichprog cc CC cc || die "No C compiler found" #whichprog ld LD ld # while correct, this breaks MM library test whichprog ar AR ar || die "Cannot find ar" whichprog nm NM nm whichprog ranlib RANLIB ranlib whichprog readelf READELF readelf || die "Cannot find readelf" whichprog objdump OBJDUMP objdump || die "Cannot find objdump" # XXX: this looks wrong, but the usemmldlt code depends on $ld being able # to compile try.c. What kind of moron could have written that. Oh wait. # # But, there was probably a reason to assume this, likely becase mainline # Configure did and still does the same. So, ugh, leaving it as is for now. # Speak of backward bug compatibility. define ld "$cc" log mstart "Trying $cc" if not hinted 'cctype'; then run $cc -v >try.out 2>&1 try_dump_out detect_cc_version fi mstart "Checking whether $cc is a C++ compiler" if not hinted 'd_cplusplus'; then try_start try_cat < try.out 2>>$cfglog; then define d_cplusplus 'undef' result "probably no" else _r=`grep -v '^#' try.out | grep . | head -1 | grep '^YES'` if [ -n "$_r" ]; then define d_cplusplus 'define' result "yes" else define d_cplusplus 'undef' result 'no' fi fi fi mstart "Deciding how to declare external symbols" if not hinted "extern_C"; then case "$d_cplusplus" in define) define "extern_C" 'extern "C"' result "$extern_C" ;; *) define "extern_C" 'extern' result "$extern_C" ;; esac fi # File name extensions, must be set before running any compile/link tests define _o '.o' define _a '.a' define so 'so' define _exe '' # Used only for modules define cccdlflags '-fPIC -Wno-unused-function' define ccdlflags '-Wl,-E' # Misc flags setup predef lddlflags "-shared" # modules predef ccflags '' # perl and modules predef ldflags '' # perl only? predef cppflags '' # unused? # setfromvar what SHELLVAR setfromenv() { getenv v "$2" test -n "$v" && append "$1" "$v" } if [ "$mode" = 'target' -o "$mode" = 'native' ]; then setfromenv ccflags CFLAGS setfromenv ldflags LDFLAGS if [ -n "$sysroot" ]; then msg "Adding --sysroot to {cc,ld}flags" prepend ccflags "--sysroot=$sysroot" prepend ldflags "--sysroot=$sysroot" # While cccdlflags are used together with ccflags, # ld is always called with lddlflags *instead*of* ldflags prepend lddlflags "--sysroot=$sysroot" # Same for cpp prepend cppflags "--sysroot=$sysroot" fi elif [ "$mode" = 'buildmini' ]; then setfromenv ccflags HOSTCFLAGS setfromenv ldflags HOSTLDFLAGS fi # Use $ldflags as default value for $lddlflags, together with whatever # hints provided, but avoid re-setting anyting specified in the command line if [ -n "$ldflags" -a "$x_lddlflags" != "user" ]; then append lddlflags "$ldflags" fi # enddef ccflags # done later in _hdrs because of LARGEFILE_SOURCE enddef ldflags enddef lddlflags enddef cppflags mstart "Checking whether ld supports scripts" if not hinted 'ld_can_script'; then cat > try.c < try.h </dev/null if run $cc $cccdlflags $ccdlflags $ccflags $lddlflags -o a.out try.c \ -Wl,--version-script=try.h >/dev/null 2>&1 \ && test -s a.out then define ld_can_script 'define' result "yes" else define ld_can_script 'undef' result "no" fi fi # Guessing OS is better done with the toolchain available. # CC output is crucial here -- Android toolchains come with # generic armeabi prefix and "android" is one of the few osname # values that make difference later. mstart "Trying to guess target OS" if not hinted 'osname'; then run $cc -v > try.out 2>&1 try_dump_out _ct=`sed -ne '/^Target: /s///p' try.out` test -z "$_ct" && _ct="$targetarch" case "$_ct" in *-mingw32) define osname "MSWin32" result "MSWin32" ;; *-android|*-androideabi) define osname "android" result "Android" ;; *-linux*) define osname "linux" result "Linux" ;; *-netbsd*) define osname "netbsd" result "NetBSD" ;; *-bsd*) define osname "bsd" result "BSD" ;; *-gnu*) define osname "gnu" result "GNU" ;; *-midipix*) define osname "midipix" result "Midipix" ;; *-redox*) define osname "redox" result "Redox" ;; *) result "no" ;; esac fi # Check whether debugging should be enabled # Allow -DEBUGGING as well (sets EBUGGING=define) case "$DEBUGGING:$EBUGGING" in :*) DEBUGGING=$EBUGGING ;; esac mstart "Checking whether to enable -g" predef optimize '' case "$DEBUGGING" in both|define) append optimize "-g" result "yes" ;; *) result "no" ;; esac mstart "Checking whether to use -DDEBUGGING" case "$DEBUGGING" in both|define) append optimize '-DDEBUGGING' result "yes" ;; *) result "no" ;; esac # gcc 4.9 and above does some optimizations that break perl. # see perl ticket 121505. if [ "$cctype" = 'gcc' ]; then case "$ccversion" in 1.*|2.*|3.*) ;; 4.9*) append 'optimize' '-fwrapv -fno-strict-aliasing' ;; 4.*) ;; *) append 'optimize' '-fwrapv -fno-strict-aliasing' ;; esac fi enddef optimize # These are kind-of part of toolchain, but we do not test them # For newer gcc-s, -E alone is *not* enough! Perl expects cpp not to break # lines, but gcc injects #line directives in-between tokens, subtly breaking # try_preproc and Errno.pm define cpp "$cc -E -P" define cpprun "$cpp" define cppstdin "$cpp" define cpplast - define cppminus - define cppsymbols define nm_opt define nm_so_opt # cperl wants to know this for some reason mstart "Checking whether address sanitizer is enabled" if not hinted sanitize_address 'yes' 'no'; then case "$ccflags" in *-fsanitize=address*|*-faddress-sanitizer*) define sanitize_address 'define' result 'yes' ;; *) define sanitize_address 'undef' result 'no' ;; esac fi ================================================ FILE: recipes/wip/dev/lang/perl5/recipe.toml ================================================ #TODO compiles, works in a basic way but needs figuring out why -ldl is ignored #TODO also until new signal implementation gets to be the default, remove siginfo struct from relibc's include/bits/signal.h # and modify relibc/src/header/signal/mod.rs sigtimedwait second parameter's type from siginfo_t to siginfo (cbindgen needs a reference) #TODO needs further testing [source] tar = "https://www.cpan.org/src/5.0/perl-5.40.0.tar.gz" blake3 = "8bfcbb999e0795a64ca90e1ba7308f49c30ab2619ffa25fa425527c4bfca5e0f" script = """ curl -L -O --time-cond perl-cross-1.6.tar.gz https://github.com/arsv/perl-cross/releases/download/1.6/perl-cross-1.6.tar.gz tar --strip-components=1 -xvf perl-cross-1.6.tar.gz GNU_CONFIG_GET ./cnf/config.sub """ [build] template = "custom" dev-dependencies = ["relibc"] script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ #Note: since perl-cross can run only inside the source-tree (out-of-tree is bugged) it's easier to do everything in the build directory cp ${COOKBOOK_RECIPE}/configure_tool.sh ${COOKBOOK_BUILD}/cnf/configure_tool.sh cp ${COOKBOOK_RECIPE}/redox ${COOKBOOK_BUILD}/cnf/hints/redox #Note: non-standard configure, familiar flags can have different meaning! ./configure --host-cc="gcc" --host-cpp="g++" --target=${TARGET} --sysroot=${COOKBOOK_SYSROOT} sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h sed -i "s/^# HAS_NANOSLEEP.*/#define HAS_NANOSLEEP/" config.h sed -i "s|^/.#define I_GRP.*|#define I_GRP|" config.h echo "#define HAS_GROUP" >> config.h make -j4 make install DESTDIR="${COOKBOOK_STAGE}" pushd . cd "${COOKBOOK_STAGE}/usr/share/man/man3" for f in *; do case "$f" in *::*) mv "$f" "${f//::/__}"; ;; esac done popd """ ================================================ FILE: recipes/wip/dev/lang/perl5/redox ================================================ # NetBSD syscalls d_nanosleep='define' # libraries to test libswanted='m dl' ================================================ FILE: recipes/wip/dev/lang/php80/recipe.toml ================================================ #TODO promote [source] tar = "https://www.php.net/distributions/php-8.0.30.tar.xz" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "bzip2", "curl", "gettext", "libffi", "libgmp", "libavif", "libicu", "libjpeg", "libedit", "libonig", "libpng", "libsodium", "libwebp", "libxml2", "libiconv", "libzip", "ncurses", "nghttp2", "openssl1", "pcre", "sqlite3", "xz", "zlib", ] script = """ DYNAMIC_INIT export SUFFIX="80" # extension stuff export CURL_LIBS="-lcurl -lnghttp2 -lssl -lcrypto" export CXXFLAGS="-std=c++17" COOKBOOK_CONFIGURE_FLAGS+=( --program-suffix=${SUFFIX} --sysconfdir=/etc --with-config-file-path=/etc/php/$SUFFIX --with-config-file-scan-dir=/etc/php/$SUFFIX/conf.d --with-iconv="${COOKBOOK_SYSROOT}/usr" --disable-opcache --enable-bcmath --enable-calendar # --enable-fpm # need times function --enable-gd --enable-intl --enable-mbstring --with-curl --with-gettext --with-gmp --with-jpeg --with-webp --with-avif --with-ffi --with-libedit --with-openssl --with-sodium --with-zip ) "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "$@" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install \ INSTALL_ROOT="${COOKBOOK_STAGE}" \ datarootdir=/usr/share localstatedir=/var for bin in "php-cgi" "php-config" "php" "phpdbg" "phpize"; do ln -s "$bin$SUFFIX" ${COOKBOOK_STAGE}/usr/bin/$bin done mkdir -p ${COOKBOOK_STAGE}/etc/php/$SUFFIX/conf.d cp ${COOKBOOK_SOURCE}/php.ini* ${COOKBOOK_STAGE}/etc/php/$SUFFIX/ """ ================================================ FILE: recipes/wip/dev/lang/php80/redox.patch ================================================ diff -ruwN source/configure source-new/configure --- source/configure 2023-08-04 00:13:08.000000000 +0700 +++ source-new/configure 2025-09-20 05:04:59.993364619 +0700 @@ -46043,7 +46043,7 @@ fi - ax_cxx_compile_alternatives="11 0x" ax_cxx_compile_cxx11_required=truednl + ax_cxx_compile_alternatives="17 0x" ax_cxx_compile_cxx11_required=truednl ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -72692,7 +72692,7 @@ printf %s "(cached) " >&6 else $as_nop - php_cv_crypt_r_style=none + php_cv_crypt_r_style=struct_crypt_data_gnu_source cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ diff -ruwN source/ext/intl/config.m4 source-new/ext/intl/config.m4 --- source/ext/intl/config.m4 2023-08-04 00:13:08.000000000 +0700 +++ source-new/ext/intl/config.m4 2025-09-20 05:05:18.892414632 +0700 @@ -83,7 +83,7 @@ breakiterator/codepointiterator_methods.cpp" PHP_REQUIRE_CXX() - PHP_CXX_COMPILE_STDCXX(11, mandatory, PHP_INTL_STDCXX) + PHP_CXX_COMPILE_STDCXX(17, mandatory, PHP_INTL_STDCXX) PHP_INTL_CXX_FLAGS="$INTL_COMMON_FLAGS $PHP_INTL_STDCXX $ICU_CXXFLAGS" case $host_alias in *cygwin*) PHP_INTL_CXX_FLAGS="$PHP_INTL_CXX_FLAGS -D_POSIX_C_SOURCE=200809L" diff -ruwN source/ext/phar/Makefile.frag source-new/ext/phar/Makefile.frag --- source/ext/phar/Makefile.frag 2023-08-04 00:13:08.000000000 +0700 +++ source-new/ext/phar/Makefile.frag 2025-09-19 23:19:19.020178026 +0700 @@ -9,20 +9,7 @@ pharcmd: $(builddir)/phar.php $(builddir)/phar.phar PHP_PHARCMD_SETTINGS = -n -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d phar.readonly=0 -PHP_PHARCMD_EXECUTABLE = ` \ - if test -x "$(top_builddir)/$(SAPI_CLI_PATH)"; then \ - $(top_srcdir)/build/shtool echo -n -- "$(top_builddir)/$(SAPI_CLI_PATH) -n"; \ - if test "x$(PHP_MODULES)" != "x"; then \ - $(top_srcdir)/build/shtool echo -n -- " -d extension_dir=$(top_builddir)/modules"; \ - for i in bz2 zlib phar; do \ - if test -f "$(top_builddir)/modules/$$i.la"; then \ - . $(top_builddir)/modules/$$i.la; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \ - fi; \ - done; \ - fi; \ - else \ - $(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; \ - fi;` +PHP_PHARCMD_EXECUTABLE = "true" PHP_PHARCMD_BANG = `$(top_srcdir)/build/shtool echo -n -- "$(INSTALL_ROOT)$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)";` $(builddir)/phar/phar.inc: $(srcdir)/phar/phar.inc @@ -42,9 +29,3 @@ install-pharcmd: pharcmd -@$(mkinstalldirs) $(INSTALL_ROOT)$(bindir) - $(INSTALL) $(builddir)/phar.phar $(INSTALL_ROOT)$(bindir)/$(program_prefix)phar$(program_suffix).phar - -@rm -f $(INSTALL_ROOT)$(bindir)/$(program_prefix)phar$(program_suffix) - $(LN_S) -f $(program_prefix)phar$(program_suffix).phar $(INSTALL_ROOT)$(bindir)/$(program_prefix)phar$(program_suffix) - @$(mkinstalldirs) $(INSTALL_ROOT)$(mandir)/man1 - @$(INSTALL_DATA) $(builddir)/phar.1 $(INSTALL_ROOT)$(mandir)/man1/$(program_prefix)phar$(program_suffix).1 - @$(INSTALL_DATA) $(builddir)/phar.phar.1 $(INSTALL_ROOT)$(mandir)/man1/$(program_prefix)phar$(program_suffix).phar.1 diff -ruwN source/ext/posix/posix.c source-new/ext/posix/posix.c --- source/ext/posix/posix.c 2023-08-04 00:13:08.000000000 +0700 +++ source-new/ext/posix/posix.c 2025-09-19 22:21:28.998031846 +0700 @@ -443,7 +443,7 @@ ZEND_PARSE_PARAMETERS_NONE(); - if ((ticks = times(&t)) == -1) { + { POSIX_G(last_error) = errno; RETURN_FALSE; } diff -ruwN source/ext/standard/hrtime.c source-new/ext/standard/hrtime.c --- source/ext/standard/hrtime.c 2023-08-04 00:13:08.000000000 +0700 +++ source-new/ext/standard/hrtime.c 2025-09-19 23:34:34.839471333 +0700 @@ -70,6 +70,8 @@ return -1; } +#elif defined(__redox__) + /* pass */ #elif PHP_HRTIME_PLATFORM_POSIX #if !_POSIX_MONOTONIC_CLOCK ================================================ FILE: recipes/wip/dev/lang/python37/config.site ================================================ ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ================================================ FILE: recipes/wip/dev/lang/python37/recipe.toml ================================================ #TODO not compiled or tested #TODO does the patch is still needed? #TODO maybe the script is wrong [source] tar = "https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tar.xz" patches = [ "redox.patch", ] [build] template = "custom" dependencies = [ "openssl1", ] script = """ cp ../config.site ./ sed -i 's|#define HAVE_PTHREAD_KILL 1|/* #undef HAVE_PTHREAD_KILL */|g' pyconfig.h sed -i 's|#define HAVE_SCHED_SETSCHEDULER 1|/* #undef HAVE_SCHED_SETSCHEDULER */|g' pyconfig.h sed -i 's|#define HAVE_SYS_RESOURCE_H 1|/* #undef HAVE_SYS_RESOURCE_H */|g' pyconfig.h COOKBOOK_CONFIGURE_FLAGS+=( --disable-ipv6 ) cookbook_configure """ ================================================ FILE: recipes/wip/dev/lang/python37/redox.patch ================================================ diff -ruwN source/configure source-new/configure --- source/configure 2019-07-08 12:03:50.000000000 -0600 +++ source-new/configure 2019-07-16 21:25:29.432607847 -0600 @@ -3261,6 +3261,9 @@ *-*-cygwin*) ac_sys_system=Cygwin ;; + *-*-redox*) + ac_sys_system=Redox + ;; *) # for now, limit cross builds to known configurations MACHDEP="unknown" @@ -3293,7 +3296,7 @@ if test "$cross_compiling" = yes; then case "$host" in - *-*-linux*) + *-*-linux*|*-*-redox*) case "$host_cpu" in arm*) _host_cpu=arm diff -ruwN source/Lib/distutils/util.py source-new/Lib/distutils/util.py --- source/Lib/distutils/util.py 2019-07-08 12:03:50.000000000 -0600 +++ source-new/Lib/distutils/util.py 2019-07-16 22:07:35.994862914 -0600 @@ -131,7 +131,7 @@ if not os.path.isabs(pathname): return os.path.join(new_root, pathname) else: - return os.path.join(new_root, pathname[1:]) + return os.path.join(new_root, pathname.lstrip('/')) elif os.name == 'nt': (drive, path) = os.path.splitdrive(pathname) diff -ruwN source/Modules/main.c source-new/Modules/main.c --- source/Modules/main.c 2019-07-08 12:03:50.000000000 -0600 +++ source-new/Modules/main.c 2019-07-16 21:46:53.037866142 -0600 @@ -56,6 +56,16 @@ } \ } while (0) +#if defined(__redox__) +wchar_t * wcstok(wchar_t * wcs, const wchar_t * delimiters, wchar_t ** ptr) { + return NULL; +} + +long wcstol(const wchar_t *restrict nptr, wchar_t **restrict endptr, int base) { + return 0; +} +#endif + #ifdef MS_WINDOWS #define WCSTOK wcstok_s #else diff -ruwN source/Python/pathconfig.c source-new/Python/pathconfig.c --- source/Python/pathconfig.c 2019-07-08 12:03:50.000000000 -0600 +++ source-new/Python/pathconfig.c 2019-07-16 21:55:34.549726910 -0600 @@ -5,6 +5,10 @@ #include "internal/pystate.h" #include +#if defined(__redox__) +wchar_t * wcstok(wchar_t * wcs, const wchar_t * delimiters, wchar_t ** ptr); +#endif + #ifdef __cplusplus extern "C" { #endif diff -ruwN source/Python/pytime.c source-new/Python/pytime.c --- source/Python/pytime.c 2019-07-08 12:03:50.000000000 -0600 +++ source-new/Python/pytime.c 2019-07-16 21:36:53.233119225 -0600 @@ -7,6 +7,19 @@ #include /* mach_absolute_time(), mach_timebase_info() */ #endif +#if defined(__redox__) +int clock_getres(clockid_t clk_id, struct timespec *res) { + if (res) { + res->tv_sec = 0; + res->tv_nsec = 1000; + return 0; + } else { + errno = EFAULT; + return -1; + } +} +#endif + #define _PyTime_check_mul_overflow(a, b) \ (assert(b > 0), \ (_PyTime_t)(a) < _PyTime_MIN / (_PyTime_t)(b) \ ================================================ FILE: recipes/wip/dev/lang/python39/recipe.toml ================================================ #TODO Fix dynamic loading of C modules [source] tar = "https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tar.xz" patches = [ 'redox.patch' ] [build] template = "custom" dependencies = [ "bzip2", "libffi", "libuuid", "ncurses", "ncursesw", "openssl1", "readline", "sqlite3", "zlib", "xz" ] script = """ DYNAMIC_INIT export PYTHONDONTWRITEBYTECODE=1 ARCH="${TARGET%%-*}" # Python cross-compilation requires the same Python version on the build machine BUILDMACH_TARGET="$(gcc -dumpmachine)" BUILDMACH_BUILD="${COOKBOOK_RECIPE}/target/${BUILDMACH_TARGET}/build" BUILDMACH_STAGE="${COOKBOOK_RECIPE}/target/${BUILDMACH_TARGET}/stage" # If this is a fresh build then we also rebuild the build machine version # (Cookbook clean does not remove it so we have to do it manually) if [ -z "$(ls -A .)" ]; then rm -rf "${BUILDMACH_BUILD}" "${BUILDMACH_STAGE}" fi mkdir -p "${BUILDMACH_BUILD}" mkdir -p "${BUILDMACH_STAGE}" cd "${BUILDMACH_BUILD}" # Use env that does not use the Redox build tools env -i PATH="$PATH" CC="$CC_WRAPPER gcc" "${COOKBOOK_SOURCE}/configure" env -i PATH="$PATH" CC="$CC_WRAPPER gcc" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${BUILDMACH_STAGE}" cd - export PATH="${BUILDMACH_STAGE}/usr/local/bin:${PATH}" COOKBOOK_CONFIGURE_FLAGS=( --prefix=/usr --enable-shared --disable-ipv6 --host=${GNU_TARGET} --build=$ARCH --with-ensurepip=install ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ) cookbook_configure """ ================================================ FILE: recipes/wip/dev/lang/python39/redox.patch ================================================ diff -ruwN source/configure source-new/configure --- source/configure 2021-11-16 00:43:00.000000000 +0700 +++ source-new/configure 2025-09-17 21:31:19.787497963 +0700 @@ -3307,6 +3307,9 @@ *-*-vxworks*) ac_sys_system=VxWorks ;; + *-*-redox*) + ac_sys_system=Redox + ;; *) # for now, limit cross builds to known configurations MACHDEP="unknown" @@ -3331,6 +3334,7 @@ case $MACHDEP in aix*) MACHDEP="aix";; linux*) MACHDEP="linux";; + redox*) MACHDEP="redox";; cygwin*) MACHDEP="cygwin";; darwin*) MACHDEP="darwin";; '') MACHDEP="unknown";; @@ -3342,7 +3346,7 @@ if test "$cross_compiling" = yes; then case "$host" in - *-*-linux*) + *-*-linux*|*-*-redox*) case "$host_cpu" in arm*) _host_cpu=arm @@ -5951,7 +5955,7 @@ PY3LIBRARY=libpython3.so fi ;; - Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*) + Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|Redox*) LDLIBRARY='libpython$(LDVERSION).so' BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} @@ -9551,7 +9555,7 @@ BLDSHARED="$LDSHARED" fi ;; - Linux*|GNU*|QNX*|VxWorks*) + Linux*|GNU*|QNX*|VxWorks*|Redox*) LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; FreeBSD*) @@ -9620,7 +9624,7 @@ else CCSHARED="+z"; fi;; Linux-android*) ;; - Linux*|GNU*) CCSHARED="-fPIC";; + Linux*|GNU*|Redox*) CCSHARED="-fPIC";; FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";; OpenUNIX*|UnixWare*) if test "$GCC" = "yes" @@ -9650,7 +9654,7 @@ LINKFORSHARED="-Wl,-E -Wl,+s";; # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; - Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; + Linux*|GNU*|Redox*) LINKFORSHARED="-Xlinker -export-dynamic";; # -u libsys_s pulls in all symbols in libsys Darwin/*) LINKFORSHARED="$extra_undefs -framework CoreFoundation" diff -ruwN source/Include/pyport.h source-new/Include/pyport.h --- source/Include/pyport.h 2021-11-16 00:43:00.000000000 +0700 +++ source-new/Include/pyport.h 2025-09-17 21:31:56.613084352 +0700 @@ -838,7 +838,7 @@ # error "Py_TRACE_REFS ABI is not compatible with release and debug ABI" #endif -#if defined(__ANDROID__) || defined(__VXWORKS__) +#if defined(__ANDROID__) || defined(__VXWORKS__) || defined(__redox__) /* Ignore the locale encoding: force UTF-8 */ # define _Py_FORCE_UTF8_LOCALE #endif diff -ruwN source/Modules/timemodule.c source-new/Modules/timemodule.c --- source/Modules/timemodule.c 2021-11-16 00:43:00.000000000 +0700 +++ source-new/Modules/timemodule.c 2025-09-17 21:30:18.552349106 +0700 @@ -1416,7 +1416,7 @@ return 0; } -#elif defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) +#elif defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) && defined(CLOCK_THREAD_CPUTIME_ID) #define HAVE_THREAD_TIME #if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability) ================================================ FILE: recipes/wip/dev/lang/rilua/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/wowemulation-dev/rilua" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/lang/ristretto/recipe.toml ================================================ #TODO discover current status [source] git = "https://github.com/theseus-rs/ristretto" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages ristretto_cli """ ================================================ FILE: recipes/wip/dev/lang/ruby/recipe.toml ================================================ #TODO compilation error [source] tar = "https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.8.tar.gz" [build] template = "configure" dependencies = [ "openssl3", "zlib", "libyaml", "libffi", ] ================================================ FILE: recipes/wip/dev/lang/scala/recipe.toml ================================================ #TODO missing script for sbt # probable build instructions: https://github.com/scala/scala3#building-a-local-distribution [source] tar = "https://github.com/scala/scala3/releases/download/3.3.7/scala3-3.3.7.tar.gz" [build] template = "custom" dev-dependencies = ["host:sbt"] ================================================ FILE: recipes/wip/dev/lang/scc/recipe.toml ================================================ #TODO missing script for gnu make # build instructions: https://git.simple-cc.org/scc/file/README.html [source] git = "https://git.simple-cc.org/scc/" rev = "1ed0ff0000999561feee336c289252faf2502a7e" [build] template = "custom" [package] dependencies = ["qbe"] ================================================ FILE: recipes/wip/dev/lang/tcc/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://repo.or.cz/tinycc.git/blob/HEAD:/README [source] tar = "https://download.savannah.nongnu.org/releases/tinycc/tcc-0.9.27.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/dev/lang/tsuki/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ultimaweapon/tsuki" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/lang/tur/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rezigned/tur" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages tur-cli tur-tui """ ================================================ FILE: recipes/wip/dev/lang/vala/recipe.toml ================================================ #TODO not compiled or tested #TODO require bootstraping from another vala compiler # build instructions: https://gitlab.gnome.org/GNOME/vala#building-vala [source] tar = "https://download.gnome.org/sources/vala/0.56/vala-0.56.18.tar.xz" [build] template = "custom" dependencies = [ "glib", ] script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/dev/lang/wrecc/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/PhilippRados/wrecc" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/lang/xylo/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/giraffekey/xylo" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/usr/share/xylo" cp -rv "${COOKBOOK_SOURCE}/example.xylo" "${COOKBOOK_STAGE}/usr/share/xylo" """ ================================================ FILE: recipes/wip/dev/lang/zig/recipe.toml ================================================ #TODO compiling, not tested further [source] git = "https://github.com/willnode/zig" branch = "zig-0.15.2-redox" [build] template = "custom" dependencies = [ "llvm21", "zstd" ] dev-dependencies = [ "llvm21.dev", "llvm21.runtime", "clang21", "clang21.dev", "lld21.dev", "lld21", "host:libarchive", "host:zig", ] script = """ DYNAMIC_INIT export PATH="${COOKBOOK_BUILD}:${PATH}" mkdir -p "${COOKBOOK_STAGE}"/usr/lib/zig "${COOKBOOK_STAGE}"/usr/bin ln -s "../lib/zig/bin/zig" "${COOKBOOK_STAGE}"/usr/bin/zig if [ "$TARGET" != "$COOKBOOK_HOST_TARGET" ]; then ARCH="${GNU_TARGET%%-*}" OS=$(echo "${TARGET}" | cut -d - -f3-4) rsync -a "${COOKBOOK_SOURCE}"/* ./ zig build \ --prefix "${COOKBOOK_STAGE}/usr/lib/zig" \ --search-prefix "${COOKBOOK_SYSROOT}/usr" \ -Dflat \ -Dstatic-llvm \ -Doptimize=ReleaseFast \ -Dstrip \ -Dforce-link-libc \ -Dtarget="$ARCH-$OS" \ -Dcpu="baseline" \ -Dversion-string="0.15.2" \ -Duse-zig-libcxx \ -Dno-langref \ -Dno-test else COOKBOOK_SOURCE="${COOKBOOK_BUILD}" COOKBOOK_STAGE="${COOKBOOK_STAGE}/usr/lib/zig" cookbook_cmake -DCMAKE_INSTALL_PREFIX=/ -DZIG_NO_TEST=On fi """ ================================================ FILE: recipes/wip/dev/managers/moon/recipe.toml ================================================ #TODO openssl-sys crate error (after cargo update) [source] git = "https://github.com/moonrepo/moon" [build] template = "custom" script = """ cookbook_cargo_packages moon_cli """ ================================================ FILE: recipes/wip/dev/managers/proto/recipe.toml ================================================ #TODO fs-set-times crate error [source] git = "https://github.com/moonrepo/proto" [build] template = "custom" script = """ cookbook_cargo_packages proto_cli """ ================================================ FILE: recipes/wip/dev/managers/ratifact/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/adolfousier/ratifact" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/abi-cafe/recipe.toml ================================================ #TODO compiled but not tested (after an update on the libc crate) [source] git = "https://github.com/Gankra/abi-cafe" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/add-determinism/recipe.toml ================================================ #TODO source code error [source] git = "https://github.com/keszybz/add-determinism" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/allocscope/recipe.toml ================================================ #TODO make all dependencies work [source] git = "https://github.com/matt-kimball/allocscope" shallow_clone = true [build] template = "cargo" cargopackages = [ "allocscope-trace", "allocscope-view", ] dependencies = [ "libiberty", "ncurses", "sqlite3", "libunwind", ] ================================================ FILE: recipes/wip/dev/other/alquitran/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ferivoz/alquitran" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/alt/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/dotboris/alt" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/apitrace/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/apitrace/apitrace/blob/master/docs/INSTALL.markdown#linux [source] git = "https://github.com/apitrace/apitrace" rev = "14.0" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_TESTING=OFF" ] ================================================ FILE: recipes/wip/dev/other/apr/recipe.toml ================================================ [source] tar = "https://dlcdn.apache.org//apr/apr-1.7.4.tar.bz2" patches = ["redox.patch"] [build] template = "custom" script = """ COOKBOOK_CONFIGURE_FLAGS+=( ac_cv_file__dev_zero=yes ac_cv_working_getaddrinfo=no apr_cv_process_shared_works=yes apr_cv_mutex_robust_shared=yes apr_cv_tcp_nodelay_with_cork=no apr_cv_epoll=yes ) cookbook_configure """ ================================================ FILE: recipes/wip/dev/other/apr/redox.patch ================================================ diff --git a/apr-config.in b/apr-config.in index 626d3b0..b79d471 100644 --- a/apr-config.in +++ b/apr-config.in @@ -180,14 +180,14 @@ while test $# -gt 0; do ;; --includes) if test "$location" = "installed"; then - flags="$flags -I$includedir $EXTRA_INCLUDES" + flags="$flags $EXTRA_INCLUDES" elif test "$location" = "crosscompile"; then - flags="$flags -I$APR_TARGET_DIR/$includedir $EXTRA_INCLUDES" + flags="$flags $EXTRA_INCLUDES" elif test "$location" = "source"; then - flags="$flags -I$APR_SOURCE_DIR/include $EXTRA_INCLUDES" + flags="$flags $EXTRA_INCLUDES" else # this is for VPATH builds - flags="$flags -I$APR_BUILD_DIR/include -I$APR_SOURCE_DIR/include $EXTRA_INCLUDES" + flags="$flags $EXTRA_INCLUDES" fi ;; --srcdir) @@ -214,12 +214,12 @@ while test $# -gt 0; do --link-ld) if test "$location" = "installed"; then ### avoid using -L if libdir is a "standard" location like /usr/lib - flags="$flags -L$libdir -l${APR_LIBNAME}" + flags="$flags -l${APR_LIBNAME}" elif test "$location" = "crosscompile"; then - flags="$flags -L$APR_TARGET_DIR/$libdir -l${APR_LIBNAME}" + flags="$flags -l${APR_LIBNAME}" else ### this surely can't work since the library is in .libs? - flags="$flags -L$APR_BUILD_DIR -l${APR_LIBNAME}" + flags="$flags -l${APR_LIBNAME}" fi ;; --link-libtool) @@ -233,9 +233,9 @@ while test $# -gt 0; do ### avoid using -L if libdir is a "standard" location like /usr/lib # Since the user is specifying they are linking with libtool, we # *know* that -R will be recognized by libtool. - flags="$flags -L$libdir -R$libdir -l${APR_LIBNAME}" + flags="$flags -l${APR_LIBNAME}" elif test "$location" = "crosscompile"; then - flags="$flags -L${APR_TARGET_DIR}/$libdir -l${APR_LIBNAME}" + flags="$flags -l${APR_LIBNAME}" else flags="$flags $LA_FILE" fi diff --git a/file_io/unix/open.c b/file_io/unix/open.c index 49eb727..7b28aba 100644 --- a/file_io/unix/open.c +++ b/file_io/unix/open.c @@ -101,12 +101,15 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, #endif if ((flag & APR_FOPEN_READ) && (flag & APR_FOPEN_WRITE)) { + fprintf(stderr, "afo flag RDRW\n"); oflags = O_RDWR; } else if (flag & APR_FOPEN_READ) { + fprintf(stderr, "afo flag RDONLY\n"); oflags = O_RDONLY; } else if (flag & APR_FOPEN_WRITE) { + fprintf(stderr, "afo flag WRONLY\n"); oflags = O_WRONLY; } else { @@ -114,8 +117,10 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, } if (flag & APR_FOPEN_CREATE) { + fprintf(stderr, "afo flag CREAT\n"); oflags |= O_CREAT; if (flag & APR_FOPEN_EXCL) { + fprintf(stderr, "afo flag EXCL\n"); oflags |= O_EXCL; } } @@ -124,19 +129,23 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, } if (flag & APR_FOPEN_APPEND) { + fprintf(stderr, "afo flag APPEND\n"); oflags |= O_APPEND; } if (flag & APR_FOPEN_TRUNCATE) { + fprintf(stderr, "afo flag TRUNC\n"); oflags |= O_TRUNC; } #ifdef O_BINARY if (flag & APR_FOPEN_BINARY) { + fprintf(stderr, "afo flag BINARY\n"); oflags |= O_BINARY; } #endif if (flag & APR_FOPEN_NONBLOCK) { #ifdef O_NONBLOCK + fprintf(stderr, "afo flag NONBLOCK\n"); oflags |= O_NONBLOCK; #else return APR_ENOTIMPL; @@ -147,14 +156,17 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, /* Introduced in Linux 2.6.23. Silently ignored on earlier Linux kernels. */ if (!(flag & APR_FOPEN_NOCLEANUP)) { + fprintf(stderr, "afo flag CLOEXEC\n"); oflags |= O_CLOEXEC; } #endif #if APR_HAS_LARGE_FILES && defined(_LARGEFILE64_SOURCE) + fprintf(stderr, "afo flag LARGEFILE\n"); oflags |= O_LARGEFILE; #elif defined(O_LARGEFILE) if (flag & APR_FOPEN_LARGEFILE) { + fprintf(stderr, "afo flag LARGEFILE\n"); oflags |= O_LARGEFILE; } #endif @@ -164,18 +176,22 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, rv = apr_thread_mutex_create(&thlock, APR_THREAD_MUTEX_DEFAULT, pool); if (rv) { + fprintf(stderr, "afo ret 1 %d\n", rv); return rv; } } #endif if (perm == APR_OS_DEFAULT) { + fprintf(stderr, "open %d %s\n", oflags, fname); fd = open(fname, oflags, 0666); } else { + fprintf(stderr, "open %s %d %d\n", fname, oflags, apr_unix_perms2mode(perm)); fd = open(fname, oflags, apr_unix_perms2mode(perm)); } if (fd < 0) { + fprintf(stderr, "afo ret 2 %d\n", errno); return errno; } if (!(flag & APR_FOPEN_NOCLEANUP)) { @@ -188,12 +204,14 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, if ((flags = fcntl(fd, F_GETFD)) == -1) { close(fd); + fprintf(stderr, "afo ret 3 %d\n", errno); return errno; } if ((flags & FD_CLOEXEC) == 0) { flags |= FD_CLOEXEC; if (fcntl(fd, F_SETFD, flags) == -1) { close(fd); + fprintf(stderr, "afo ret 4 %d\n", errno); return errno; } } diff --git a/network_io/unix/sockopt.c b/network_io/unix/sockopt.c index 6194e9b..a903f91 100644 --- a/network_io/unix/sockopt.c +++ b/network_io/unix/sockopt.c @@ -372,7 +372,7 @@ apr_status_t apr_socket_opt_get(apr_socket_t *sock, apr_status_t apr_socket_atmark(apr_socket_t *sock, int *atmark) { -#ifndef BEOS_R5 +#if !defined(BEOS_R5) && !defined(__redox__) int oobmark; if (ioctl(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0) ================================================ FILE: recipes/wip/dev/other/apr-util/recipe.toml ================================================ [source] tar = "https://archive.apache.org/dist/apr/apr-util-1.6.0.tar.bz2" patches = [ "redox.patch", ] [build] template = "custom" dependencies = [ "apr", "expat", ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( --with-apr="${COOKBOOK_SYSROOT}" ) export CFLAGS="-I${COOKBOOK_SYSROOT}/include/ -I${COOKBOOK_SYSROOT}/include/apr-1 " ls ${COOKBOOK_SYSROOT}/include/ export CFLAGS_="${CFLAGS}" cd ${COOKBOOK_SOURCE} autoreconf -fi "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" sed -i build/rules.mk -e "s;\\(apr_builddir=\\)\\(.*\\);\\1${COOKBOOK_SYSROOT}\\2;" \\ -e "s;--mode=link;& --tag=CC;g" -e "s;--mode=compile;& --tag=CC -v;g" \\ sed -i build/rules.mk -e "/apr_builders=/s;apr_builders=;apr_builders=${COOKBOOK_SYSROOT};" sed -i build/rules.mk -e "/^CFLAGS=/s;=.*;=${CFLAGS_};" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" """ ================================================ FILE: recipes/wip/dev/other/apr-util/redox.patch ================================================ diff --git a/apu-config.in b/apu-config.in index 82109e5..2d005c9 100644 --- a/apu-config.in +++ b/apu-config.in @@ -140,12 +140,12 @@ while test $# -gt 0; do ;; --includes) if test "$location" = "installed"; then - flags="$flags -I$includedir $INCLUDES" + flags="$flags $INCLUDES" elif test "$location" = "source"; then - flags="$flags -I$APU_SOURCE_DIR/include $INCLUDES" + flags="$flags $INCLUDES" else # this is for VPATH builds - flags="$flags -I$APU_BUILD_DIR/include -I$APU_SOURCE_DIR/include $INCLUDES" + flags="$flags $INCLUDES" fi ;; --ldflags) @@ -162,9 +162,9 @@ while test $# -gt 0; do --link-ld) if test "$location" = "installed"; then ### avoid using -L if libdir is a "standard" location like /usr/lib - flags="$flags -L$libdir -l$APRUTIL_LIBNAME" + flags="$flags -l$APRUTIL_LIBNAME" else - flags="$flags -L$APU_BUILD_DIR -l$APRUTIL_LIBNAME" + flags="$flags -l$APRUTIL_LIBNAME" fi ;; --link-libtool) @@ -178,7 +178,7 @@ while test $# -gt 0; do ### avoid using -L if libdir is a "standard" location like /usr/lib # Since the user is specifying they are linking with libtool, we # *know* that -R will be recognized by libtool. - flags="$flags -L$libdir -R$libdir -l$APRUTIL_LIBNAME" + flags="$flags -l$APRUTIL_LIBNAME" else flags="$flags $LA_FILE" fi ================================================ FILE: recipes/wip/dev/other/argp-standalone/recipe.toml ================================================ [source] git = "https://github.com/argp-standalone/argp-standalone" shallow_clone = true [build] template = "meson" ================================================ FILE: recipes/wip/dev/other/bender/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/pulp-platform/bender" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/bison/recipe.toml ================================================ #TODO Compilation error [source] tar = "https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/bite/recipe.toml ================================================ #TODO rfd crate error [source] git = "https://github.com/WINSDK/bite" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/boon/recipe.toml ================================================ #TODO fs_at crate error [source] git = "https://github.com/camchenry/boon" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/other/bugstalker/recipe.toml ================================================ #TODO make the dependency work [source] git = "https://github.com/godzie44/BugStalker" shallow_clone = true [build] template = "cargo" dependencies = [ "libunwind", ] ================================================ FILE: recipes/wip/dev/other/cackle/recipe.toml ================================================ #TODO camino crate error #TODO Probably needs to be ported to Redox [source] git = "https://github.com/davidlattimore/cackle" shallow_clone = true [build] template = "cargo" #cargoflags = ["--features unsupported-os"] # uncomment if it doesn't work ================================================ FILE: recipes/wip/dev/other/capnproto/recipe.toml ================================================ #TODO compilation error [source] tar = "https://capnproto.org/capnproto-c++-1.0.1.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/ccs-tools/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/UIUC-PPL/ccs_tools#readme [source] git = "https://github.com/UIUC-PPL/ccs_tools" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/dev/other/charm++/recipe.toml ================================================ #TODO missing script for cross-compilation, see https://charm.readthedocs.io/en/latest/charm++/manual.html#installing-charm [source] tar = "http://charm.cs.illinois.edu/distrib/charm-7.0.0.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/dev/other/chars/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/boinkor-net/chars" shallow_clone = true [build] template = "cargo" cargopackages = ["chars"] ================================================ FILE: recipes/wip/dev/other/cling/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/vgvassilev/cling#building-from-source [source] git = "https://github.com/vgvassilev/cling" rev = "v1.3" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DLLVM_INCLUDE_TESTS=OFF" ] ================================================ FILE: recipes/wip/dev/other/colm/recipe.toml ================================================ #TODO compilation error [source] tar = "https://www.colm.net/files/colm/colm-0.14.7.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/colmena/recipe.toml ================================================ #TODO sys-info crate error (after cargo update) [source] git = "https://github.com/zhaofengli/colmena" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/commit/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/alt-art/commit" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/cppunit/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "http://dev-www.libreoffice.org/src/cppunit-1.15.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/crates-tui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ratatui-org/crates-tui" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/other/criner/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) #TODO missing script to properly move th binary [source] git = "https://github.com/the-lean-crate/criner" shallow_clone = true [build] template = "cargo" cargopackages = ["criner"] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/other/crosstool-ng/recipe.toml ================================================ #TODO can't find libtool [source] tar = "http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.26.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/customasm/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/hlorenzi/customasm" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/debugedit/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://sourceware.org/ftp/debugedit/5.0/debugedit-5.0.tar.xz" [build] template = "configure" dependencies = [ "elfutils", ] ================================================ FILE: recipes/wip/dev/other/deploy-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/serokell/deploy-rs" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo mv "${COOKBOOK_STAGE}/usr/bin/deploy" "${COOKBOOK_STAGE}/usr/bin/deploy-rs" """ ================================================ FILE: recipes/wip/dev/other/deps-rs/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/deps-rs/deps.rs" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/other/difftastic/recipe.toml ================================================ #TODO make mimalloc work [source] git = "https://github.com/Wilfred/difftastic" shallow_clone = true [build] template = "cargo" dependencies = [ "mimalloc", ] ================================================ FILE: recipes/wip/dev/other/dioxus/recipe.toml ================================================ #TODO compilation error #TODO need to install the bindgen-cli build tool from cargo: cargo install --force --locked bindgen-cli [source] git = "https://github.com/DioxusLabs/dioxus" shallow_clone = true [build] template = "cargo" cargopackages = ["dioxus-cli"] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/other/doxygen/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://www.doxygen.nl/manual/install.html#install_src_unix [source] tar = "https://www.doxygen.nl/files/doxygen-1.16.1.src.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/dev/other/dtool/recipe.toml ================================================ #TODO update the redox_syscall version on the dependency tree [source] git = "https://github.com/guoxbin/dtool" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/ecargo/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/crumblingstatue/ecargo" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/elfshaker/recipe.toml ================================================ #TODO rustc-serialize crate error (after an update on proc-macro2 and patch on ring) [source] git = "https://github.com/elfshaker/elfshaker" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/elfutils/recipe.toml ================================================ # Compiled, not tested [source] tar = "https://sourceware.org/elfutils/ftp/0.190/elfutils-0.190.tar.bz2" [build] template = "configure" dependencies = [ "zlib", "argp-standalone", "musl-fts", "musl-obstack", # "gettext", ] configureflags = [ "--disable-libdebuginfod", "--disable-debuginfod", ] ================================================ FILE: recipes/wip/dev/other/espmonitor/recipe.toml ================================================ #TODO termios crate error (after cargo update) [source] git = "https://github.com/esp-rs/espmonitor" shallow_clone = true [build] template = "cargo" cargopackages = [ "espmonitor", "cargo-espmonitor", ] ================================================ FILE: recipes/wip/dev/other/eww/recipe.toml ================================================ #TODO make gtk3 work [source] git = "https://github.com/elkowar/eww" shallow_clone = true [build] template = "cargo" cargopackages = ["eww"] dependencies = [ "gtk3", "pango", "cairo", "gdk-pixbuf", "glib", ] ================================================ FILE: recipes/wip/dev/other/fal/recipe.toml ================================================ [source] git = "https://github.com/4lDO2/fal-rs" shallow_clone = true [build] template = "cargo" cargopackages = ["fal-frontend-redox"] ================================================ FILE: recipes/wip/dev/other/fazi/recipe.toml ================================================ #TODO library source code error [source] git = "https://github.com/landaire/fazi" shallow_clone = true [build] template = "cargo" cargopackages = ["fazi"] ================================================ FILE: recipes/wip/dev/other/firedbg/recipe.toml ================================================ #TODO missing script to properly move the binary [source] git = "https://github.com/SeaQL/FireDBG.for.Rust" shallow_clone = true [build] template = "cargo" cargopackages = ["firedbg-cli"] ================================================ FILE: recipes/wip/dev/other/flamegraph/recipe.toml ================================================ #TODO require DTrace support [source] git = "https://github.com/flamegraph-rs/flamegraph" shallow_clone = true [build] template = "cargo" cargopackages = ["flamegraph"] ================================================ FILE: recipes/wip/dev/other/flex/recipe.toml ================================================ #TODO configuration error [source] tar = "https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/gem5/recipe.toml ================================================ #TODO missing script for scons: https://www.gem5.org/documentation/general_docs/building [source] git = "https://github.com/gem5/gem5" branch = "stable" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/dev/other/get-blessed/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/josueBarretogit/get_blessed_rs" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/other/gex/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Piturnah/gex" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/gfold/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/nickgerace/gfold" shallow_clone = true [build] template = "cargo" cargopackages = ["gfold"] ================================================ FILE: recipes/wip/dev/other/ghostpdl/recipe.toml ================================================ #TODO error on the libtiff configure script [source] tar = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostpdl-10.02.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/gist-rs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/oz/gist" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/gitlab-cargo-shim/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/w4/gitlab-cargo-shim" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/gperf/recipe.toml ================================================ #TODO Promote [source] tar = "https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/grcov/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/mozilla/grcov" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/gtest/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/google/googletest/blob/main/googletest/README.md [source] git = "https://github.com/google/googletest" rev = "f8d7d77c06936315286eb55f8de22cd23c188571" [build] template = "cmake" ================================================ FILE: recipes/wip/dev/other/guile/recipe.toml ================================================ #TODO make dependencies work [source] tar = "https://ftp.gnu.org/gnu/guile/guile-3.0.9.tar.xz" [build] template = "configure" dependencies = [ "libgmp", "libiconv", "libunistring", "libgc", "readline", "libffi", "libintl", ] ================================================ FILE: recipes/wip/dev/other/harper/recipe.toml ================================================ #TODO linking error [source] git = "https://github.com/Automattic/harper" [build] template = "custom" script = """ cookbook_cargo_packages harper-ls """ ================================================ FILE: recipes/wip/dev/other/headers/recipe.toml ================================================ #TODO make libxcb work [source] git = "https://github.com/transmissions11/headers" [build] template = "cargo" dependencies = [ "libxcb", ] ================================================ FILE: recipes/wip/dev/other/hexyl/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/sharkdp/hexyl" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/honggfuzz/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/google/honggfuzz#installation [source] git = "https://github.com/google/honggfuzz" rev = "83a8415a372d84dcc69ac1e2c2f152190bcf76d1" [build] template = "custom" dependencies = [ "libunwind", ] ================================================ FILE: recipes/wip/dev/other/htmlq/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/mgdm/htmlq" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/hvm/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/HigherOrderCO/HVM" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/icemaker/recipe.toml ================================================ #TODO tree-sitter-rust error [source] git = "https://github.com/matthiaskrgr/icemaker" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/inko/recipe.toml ================================================ #TODO Require LLVM 15 [source] tar = "https://releases.inko-lang.org/0.11.0.tar.gz" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/intltool/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/irust/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/sigmaSd/IRust" [build] template = "custom" script = """ cookbook_cargo_packages irust """ ================================================ FILE: recipes/wip/dev/other/ispc/recipe.toml ================================================ #TODO missing script for building, see https://github.com/ispc/ispc/wiki/ISPC-Development-Guide#build-system [source] git = "https://github.com/ispc/ispc" rev = "bd2c42d42e0cc3da1baf92160b82d4dc820a02ee" [build] template = "custom" ================================================ FILE: recipes/wip/dev/other/jaq/recipe.toml ================================================ #TODO mimalloc error [source] git = "https://github.com/01mf02/jaq" [build] template = "custom" script = """ cookbook_cargo_packages jaq """ ================================================ FILE: recipes/wip/dev/other/jco/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/bytecodealliance/jco" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/jujutsu/recipe.toml ================================================ #TODO mac_address crate error [source] git = "https://github.com/martinvonz/jj" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo_packages jj-cli """ ================================================ FILE: recipes/wip/dev/other/kicad/recipe.toml ================================================ #TODO not compiled or tested #TODO maybe missing dependencies, see https://dev-docs.kicad.org/en/build/getting-started/ # build instructions: https://dev-docs.kicad.org/en/build/linux/ [source] git = "https://gitlab.com/kicad/code/kicad" rev = "942661fc10e172febf9d9990de2471d4b1020618" [build] template = "cmake" dependencies = [ "wxwidgets-gtk3", "cairo", "boost", "glew", "zlib", "freeglut", "glm", "curl", "ngspice", ] ================================================ FILE: recipes/wip/dev/other/kickstart/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Keats/kickstart" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/knope/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/knope-dev/knope" [build] template = "custom" script = """ cookbook_cargo_packages knope """ ================================================ FILE: recipes/wip/dev/other/kondo/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/tbillington/kondo" [build] template = "custom" script = """ cookbook_cargo_packages kondo """ ================================================ FILE: recipes/wip/dev/other/ktra/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/moriturus/ktra" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/other/lading/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/DataDog/lading" [build] template = "custom" script = """ cookbook_cargo_packages lading """ ================================================ FILE: recipes/wip/dev/other/leetup/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/dragfire/leetup" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/leptosfmt/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/bram209/leptosfmt" [build] template = "custom" script = """ cookbook_cargo_packages leptosfmt """ ================================================ FILE: recipes/wip/dev/other/level-zero/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/oneapi-src/level-zero#building-and-installing [source] git = "https://github.com/oneapi-src/level-zero" rev = "ea5be99d8d34480447ab1e3c7efc30d6f179b123" [build] template = "cmake" ================================================ FILE: recipes/wip/dev/other/license-generator/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/azu/license-generator" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/licensure/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/chasinglogic/licensure" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/other/loadlibrary/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/taviso/loadlibrary#building [source] git = "https://github.com/taviso/loadlibrary" [build] template = "custom" dependencies = [ "readline", ] ================================================ FILE: recipes/wip/dev/other/lockdiff/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/your-tools/lockdiff" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/loco/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/loco-rs/loco" [build] template = "custom" script = """ binary=loco-rs "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --package "${binary}" \ --release --cli mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${binary}" \ "${COOKBOOK_STAGE}/usr/bin/${binary}" """ ================================================ FILE: recipes/wip/dev/other/lttng-ust/recipe.toml ================================================ #TODO make dependencies work [source] tar = "http://lttng.org/files/lttng-ust/lttng-ust-2.13.6.tar.bz2" [build] template = "configure" dependencies = [ "libxml2", "lttng", "liburcu", "libuuid", "popt", ] ================================================ FILE: recipes/wip/dev/other/lurk/recipe.toml ================================================ #TODO users crate error [source] git = "https://github.com/JakWai01/lurk" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/margo/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/integer32llc/margo" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/memtest-vulkan/recipe.toml ================================================ #TODO nix, fs4 and rustix crates error [source] git = "https://github.com/GpuZelenograd/memtest_vulkan" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/mise/recipe.toml ================================================ #TODO shared_child and libc crates error [source] git = "https://github.com/jdx/mise" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/other/mkrs/recipe.toml ================================================ #TODO outdated redox_syscall crate [source] git = "https://github.com/qtfkwk/mkrs" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/mnn/recipe.toml ================================================ #TODO not compiled or tested # lacking English build instructions [source] git = "https://github.com/alibaba/MNN" rev = "1ea55f467fb231655cf1e08f77d4a0f1043c4c29" [build] template = "cmake" ================================================ FILE: recipes/wip/dev/other/mold/recipe.toml ================================================ #TODO not compiled or tested # build instructions - https://github.com/rui314/mold#how-to-build [source] git = "https://github.com/rui314/mold" rev = "b53197300b5bf9f02daccae536f65dda2d1431c5" [build] template = "cmake" ================================================ FILE: recipes/wip/dev/other/morty/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/pulp-platform/morty" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/musl-fts/recipe.toml ================================================ [source] git = "https://github.com/void-linux/musl-fts" script = """ ./bootstrap.sh """ [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/musl-obstack/recipe.toml ================================================ [source] git = "https://github.com/void-linux/musl-obstack" script = """ ./bootstrap.sh """ [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/ncnn/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux [source] git = "https://github.com/Tencent/ncnn" [build] template = "cmake" dependencies = [ "protobuf", "libvulkan", "opencv4", ] ================================================ FILE: recipes/wip/dev/other/necessist/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/trailofbits/necessist" [build] template = "custom" dependencies = [ "sqlite3", "openssl1", ] script = """ cookbook_cargo_packages necessist """ ================================================ FILE: recipes/wip/dev/other/netradiant/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/xonotic/netradiant#advanced-compilation [source] git = "https://gitlab.com/xonotic/netradiant" [build] template = "cmake" dependencies = [ "libxml2", "mesa", "gtk2", "libjpeg", "libpng", "zlib", ] ================================================ FILE: recipes/wip/dev/other/ngspice/recipe.toml ================================================ #TODO maybe wrong script, see https://sourceforge.net/p/ngspice/ngspice/ci/master/tree/INSTALL #TODO maybe missing dependencies [source] tar = "https://sourceforge.net/projects/ngspice/files/ng-spice-rework/42/ngspice-42.tar.gz/download" [build] template = "custom" script = """ cd release COOKBOOK_CONFIGURE_FLAGS+=( --with-x --with-readline=yes --disable-debug ) cookbook_configure """ ================================================ FILE: recipes/wip/dev/other/not-perf/recipe.toml ================================================ #TODO perf_event_open crate error (after cargo update) [source] git = "https://github.com/koute/not-perf" [build] template = "custom" script = """ cookbook_cargo_packages nperf """ ================================================ FILE: recipes/wip/dev/other/novops/recipe.toml ================================================ #TODO missing script for "make", see https://pierrebeucher.github.io/novops/install.html#from-source [source] git = "https://github.com/PierreBeucher/novops" rev = "e0891144108a889f18448b39aebe9d5a5ac2689d" [build] template = "custom" ================================================ FILE: recipes/wip/dev/other/omni/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/XaF/omni" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/omnibor-rs/recipe.toml ================================================ #TODO Bash error with the "--build-binary" Cargo flag [source] git = "https://github.com/omnibor/omnibor-rs" [build] template = "custom" script = """ binary=omnibor "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --bin "${binary}" \ --release --build-binary mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${binary}" \ "${COOKBOOK_STAGE}/usr/bin/${binary}" """ ================================================ FILE: recipes/wip/dev/other/opam/recipe.toml ================================================ #TODO configuration problem #TODO require the OCaml compiler on the host [source] tar = "https://github.com/ocaml/opam/releases/download/2.1.5/opam-full-2.1.5.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/opencascade/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://dev.opencascade.org/doc/overview/html/build_upgrade__building_occt.html #TODO missing dependencies, see https://dev.opencascade.org/doc/overview/html/build_upgrade_building_3rdparty.html#build_3rdparty_linux [source] tar = "https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_8_0.tar.gz" [build] template = "cmake" dependencies = [ "freetype2", "tcl", "tk", ] ================================================ FILE: recipes/wip/dev/other/openradioss/recipe.toml ================================================ #TODO missing script for building, see https://github.com/OpenRadioss/OpenRadioss/blob/main/HOWTO.md#building-on-linux [source] tar = "https://github.com/OpenRadioss/OpenRadioss" [build] template = "custom" dependencies = [ "openmpi", ] ================================================ FILE: recipes/wip/dev/other/oxc/recipe.toml ================================================ #TODO can't fetch the submodules because they need login [source] git = "https://github.com/oxc-project/oxc" [build] template = "custom" script = """ cookbook_cargo_packages oxc """ ================================================ FILE: recipes/wip/dev/other/oxidizer/recipe.toml ================================================ #TODO rustc-serialize crate error [source] git = "https://github.com/ix/oxidizer" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/panamax/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/panamax-rs/panamax" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/other/phantom-ci/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/helloimalemur/phantomci" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/piccolo/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/kyren/piccolo" [build] template = "custom" script = """ cookbook_cargo_examples interpreter """ ================================================ FILE: recipes/wip/dev/other/pixi/recipe.toml ================================================ #TODO fs4 crate error (after cargo update) [source] git = "https://github.com/prefix-dev/pixi" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/other/precious/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/houseabsolute/precious" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/probe-rs/recipe.toml ================================================ #TODO maybe missing dependencies [source] git = "https://github.com/probe-rs/probe-rs" [build] template = "custom" dependencies = [ "libudev", ] script = """ cookbook_cargo --features cli """ ================================================ FILE: recipes/wip/dev/other/projclean/recipe.toml ================================================ #TODO fs_at crate error [source] git = "https://github.com/sigoden/projclean" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/projections/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/charmplusplus/projections#compiling-projections [source] git = "https://github.com/charmplusplus/projections" rev = "831b63af68f325c64dac307d9d2b5b07d9a21caa" [build] template = "custom" ================================================ FILE: recipes/wip/dev/other/protobuf/recipe.toml ================================================ #TODO: libabsl # Also see https://github.com/protocolbuffers/protobuf/blob/main/cmake/README.md [source] git = "https://github.com/protocolbuffers/protobuf" rev = "v34.0" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-Dprotobuf_BUILD_TESTS=OFF" ] dependencies = [ "libabsl", "zlib", ] ================================================ FILE: recipes/wip/dev/other/protofetch/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/coralogix/protofetch" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/other/putzen/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/sassman/putzen-rs" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/pxp/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/pxp-lang/pxp" [build] template = "custom" script = """ cookbook_cargo_packages pxp-tools """ ================================================ FILE: recipes/wip/dev/other/qbe/recipe.toml ================================================ #TODO missing script for "make", see https://c9x.me/git/qbe.git/tree/README#n13 [source] tar = "https://c9x.me/compile/release/qbe-1.1.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/dev/other/quicktest/recipe.toml ================================================ #TODO async-io and rustix crates error [source] git = "https://github.com/LuchoBazz/quicktest" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/radicle/recipe.toml ================================================ #TODO libc error [source] git = "https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git" [build] template = "custom" script = """ cookbook_cargo_packages radicle-cli radicle-node radicle-remote-helper """ ================================================ FILE: recipes/wip/dev/other/ragel/recipe.toml ================================================ #TODO missing colm directory on the GNU Autotools flag [source] tar = "https://www.colm.net/files/ragel/ragel-6.10.tar.gz" [build] template = "custom" dependencies = [ "colm", ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( --with-colm= ) cookbook_configure """ ================================================ FILE: recipes/wip/dev/other/rattler-build/recipe.toml ================================================ #TODO openssl error [source] git = "https://github.com/prefix-dev/rattler-build" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/other/rbasefind/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/sgayou/rbasefind" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/redict/recipe.toml ================================================ #TODO Missing script for "make", see https://redict.io/docs/install/#installing-from-source [source] git = "https://codeberg.org/redict/redict" rev = "5684cdbd9f2aefb494dfb346292d4322319d236b" [build] template = "custom" ================================================ FILE: recipes/wip/dev/other/redis/recipe.toml ================================================ #TODO Missing script for "make", see https://redis.io/docs/install/install-redis/install-redis-from-source/ [source] git = "https://github.com/redis/redis" rev = "7f4bae817614988c43c3024402d16edcbf3b3277" [build] template = "custom" ================================================ FILE: recipes/wip/dev/other/release-plz/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/MarcoIeni/release-plz" rev = "68baf26d77a887c3ad90e4ad75ce77d9788f2442" [build] dependencies = [ "openssl1", ] template = "custom" script = """ export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export OPENSSL_STATIC="true" cookbook_cargo_packages release-plz """ ================================================ FILE: recipes/wip/dev/other/renderdoc/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/baldurk/renderdoc/blob/v1.x/docs/CONTRIBUTING/Compiling.md#linux [source] git = "https://github.com/baldurk/renderdoc" rev = "5f95fb95a2a225a092372e7bd0bfd2073525d3ac" [build] template = "cmake" dependencies = [ "libxcb", "mesa", "qt5-base", "pcre", ] ================================================ FILE: recipes/wip/dev/other/resym/recipe.toml ================================================ #TODO webbrowser crate error [source] git = "https://github.com/ergrelet/resym" [build] template = "custom" script = """ cookbook_cargo_packages resym resymc """ ================================================ FILE: recipes/wip/dev/other/rgit/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/w4/rgit" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/other/rhack/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/nakabonne/rhack" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/rudra/recipe.toml ================================================ #TODO ouutdated redox_syscall crate? [source] git = "https://github.com/sslab-gatech/Rudra" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/rust-counter-strings/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/thomaschaplin/rust-counter-strings" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/rusty-radamsa/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/microsoft/rusty-radamsa" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/shaderc/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/google/shaderc#getting-and-building-shaderc [source] git = "https://github.com/google/shaderc" rev = "3882b16417077aa8eaa7b5775920e7ba4b8a224d" [build] template = "cmake" ================================================ FILE: recipes/wip/dev/other/silicon/recipe.toml ================================================ #TODO the yeslogic-fontconfig-sys crate can't find the fontconfig dependency [source] git = "https://github.com/Aloxaf/silicon" [build] template = "cargo" dependencies = [ "fontconfig", ] ================================================ FILE: recipes/wip/dev/other/souper/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/google/souper#building-souper [source] git = "https://github.com/google/souper" [build] template = "cmake" ================================================ FILE: recipes/wip/dev/other/steel/recipe.toml ================================================ #TODO rustyline crate error [source] git = "https://github.com/mattwparas/steel" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/other/stgit/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/stacked-git/stgit" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/other/stitch/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/makepad/stitch" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/svd2rust/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/rust-embedded/svd2rust" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/swig/recipe.toml ================================================ #TODO missing pcre2.h [source] tar = "http://prdownloads.sourceforge.net/swig/swig-4.1.1.tar.gz" [build] template = "configure" dependencies = [ "pcre", ] ================================================ FILE: recipes/wip/dev/other/tcl/recipe.toml ================================================ #TODO maybe wrong template, see https://www.tcl.tk/doc/howto/compile.html#unix [source] tar = "http://prdownloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz" [build] template = "custom" script = """ cd unix cookbook_configure """ ================================================ FILE: recipes/wip/dev/other/tk/recipe.toml ================================================ #TODO maybe wrong template, see https://www.tcl.tk/doc/howto/compile.html#unix [source] tar = "http://prdownloads.sourceforge.net/tcl/tk8.6.13-src.tar.gz" [build] template = "custom" script = """ cd unix cookbook_configure """ ================================================ FILE: recipes/wip/dev/other/tnn/recipe.toml ================================================ #TODO missing script for building, see https://github.com/Tencent/TNN/blob/master/doc/en/user/compile_en.md#iv-compilex86-linux [source] git = "https://github.com/Tencent/TNN" rev = "491dfc8653e200b5e8a428069638e191662a0882" [build] template = "custom" ================================================ FILE: recipes/wip/dev/other/tokio-console/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/tokio-rs/console" [build] template = "custom" script = """ cookbook_cargo_packages tokio-console """ ================================================ FILE: recipes/wip/dev/other/tv/recipe.toml ================================================ #TODO update mio to 0.8 (after cargo update) [source] git = "https://github.com/alexhallam/tv" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/twiggy/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/rustwasm/twiggy" [build] template = "custom" script = """ cookbook_cargo_packages twiggy """ ================================================ FILE: recipes/wip/dev/other/ucd-generate/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/BurntSushi/ucd-generate" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/ut/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ksdme/ut" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/other/valgrind/recipe.toml ================================================ #TODO port to redox [source] tar = "https://sourceware.org/pub/valgrind/valgrind-3.22.0.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/verrou/recipe.toml ================================================ #TODO port to redox [source] tar = "https://github.com/edf-hpc/verrou/releases/download/v2.5.0/valgrind-3.21.0_verrou-2.5.0.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/dev/other/wrkflw/recipe.toml ================================================ #TODO can't find the openssl dependency [source] git = "https://github.com/bahdotsh/wrkflw" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo_packages wrkflw """ ================================================ FILE: recipes/wip/dev/other/zeal/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/zealdocs/zeal#build-instructions [source] tar = "https://github.com/zealdocs/zeal/releases/download/v0.7.0/zeal-0.7.0.tar.xz" [build] template = "cmake" dependencies = [ "qt6-base", "qt6-webengine", "libarchive", "sqlite3", "mesa", ] ================================================ FILE: recipes/wip/dev/other/zepter/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/ggwpez/zepter" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/patchers/hexpatch/recipe.toml ================================================ #TODO mlua-sys crate error [source] git = "https://github.com/Etto48/HexPatch" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/perf/flamelens/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/YS-L/flamelens" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/perf/samply/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mstange/samply" [build] template = "custom" script = """ cookbook_cargo_packages samply """ ================================================ FILE: recipes/wip/dev/perf/tracy/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/wolfpld/tracy/releases/latest/download/tracy.pdf [source] git = "https://github.com/wolfpld/tracy" rev = "v0.13.0" [build] template = "custom" dependencies = [ "glfw3", "freetype2", "dbus", "capstone", ] ================================================ FILE: recipes/wip/dev/perf/vkpeak/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/nihui/vkpeak#build-from-source [source] git = "https://github.com/nihui/vkpeak" rev = "20251010" [build] template = "cmake" dependencies = [ "libvulkan", ] ================================================ FILE: recipes/wip/dev/proofs/cvc5/recipe.toml ================================================ #TODO not compiled or tested #TODO run configure.sh or cmake directly? # build instructions: https://github.com/cvc5/cvc5/blob/main/INSTALL.rst [source] git = "https://github.com/cvc5/cvc5" rev = "cvc5-1.3.2" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DENABLE_AUTO_DOWNLOAD=ON", ] dependencies = [ "libgmp", ] ================================================ FILE: recipes/wip/dev/proofs/eldarica/recipe.toml ================================================ #TODO missing script for sbt # build instructions: https://github.com/uuverifiers/eldarica#documentation [source] git = "https://github.com/uuverifiers/eldarica" rev = "v2.2.1" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/dev/proofs/z3/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Z3Prover/z3/blob/master/README-CMake.md [source] git = "https://github.com/Z3Prover/z3" rev = "z3-4.15.4" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/dev/python/py-spy/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/benfred/py-spy" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/python/pyapp/recipe.toml ================================================ #TODO serde crate error [source] git = "https://github.com/ofek/pyapp" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/python/pylyzer/recipe.toml ================================================ #TODO erg_compiler crate error [source] git = "https://github.com/mtshiba/pylyzer" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/python/pyrev/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/hacbit/pyrev" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/python/pyscan/recipe.toml ================================================ #TODO serde crate error (after cargo update) [source] git = "https://github.com/aswinnnn/pyscan" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/dev/python/python-launcher/recipe.toml ================================================ #TODO serde crate error (after cargo update) [source] git = "https://github.com/brettcannon/python-launcher" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/python/ruff/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/astral-sh/ruff" rev = "93a16bd05fba249439848beb6fbcbf3e8a436f03" shallow_clone = true patches = [ "redox.patch" ] [build] template = "cargo" cargopackages = [ "ruff" ] ================================================ FILE: recipes/wip/dev/python/ruff/redox.patch ================================================ diff --git a/Cargo.lock b/Cargo.lock index 2fe49f0b..aa1a7c85 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -573,14 +573,13 @@ checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" [[package]] name = "clearscreen" version = "4.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5def4343d62f01f67ff1a49147e4a15112e936c6a6a3f8ff7a29394e76468244" +source = "git+https://github.com/willnode/clearscreen?branch=redox#f4c6937931b51daaf5ed15e60ecfde5c55e40c18" dependencies = [ "nix 0.31.1", "terminfo", "thiserror 2.0.18", "which", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -710,7 +709,7 @@ version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -1077,7 +1076,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -1169,7 +1168,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -1835,7 +1834,7 @@ dependencies = [ "portable-atomic", "portable-atomic-util", "serde_core", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -3731,7 +3730,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -4139,7 +4138,7 @@ dependencies = [ "getrandom 0.4.1", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -5344,7 +5343,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 5bedb191..ff6aa34a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,7 +73,7 @@ cachedir = { version = "0.3.1" } camino = { version = "1.1.7" } clap = { version = "4.5.3", features = ["derive"] } clap_complete_command = { version = "0.6.0" } -clearscreen = { version = "4.0.0" } +clearscreen = { git = "https://github.com/willnode/clearscreen", branch = "redox" } codspeed-criterion-compat = { version = "4.0.4", default-features = false } colored = { version = "3.0.0" } compact_str = "0.9.0" @@ -282,8 +282,7 @@ if_not_else = "allow" large_stack_arrays = "allow" [profile.release] -lto = "fat" -codegen-units = 16 +lto = "thin" # Some crates don't change as much but benefit more from # more expensive optimization passes, so we selectively diff --git a/crates/ruff/Cargo.toml b/crates/ruff/Cargo.toml index b972d4b0..4172e1bd 100644 --- a/crates/ruff/Cargo.toml +++ b/crates/ruff/Cargo.toml @@ -70,7 +70,7 @@ tracing = { workspace = true, features = ["log"] } walkdir = { workspace = true } wild = { workspace = true } -[target.'cfg(all(not(target_os = "windows"), not(target_os = "openbsd"), not(target_os = "aix"), not(target_os = "android"), any(target_arch = "x86_64", target_arch = "aarch64", target_arch = "powerpc64", target_arch = "riscv64")))'.dependencies] +[target.'cfg(all(not(target_os = "windows"), not(target_os = "openbsd"), not(target_os = "aix"), not(target_os = "android"), not(target_os = "redox"), any(target_arch = "x86_64", target_arch = "aarch64", target_arch = "powerpc64", target_arch = "riscv64")))'.dependencies] tikv-jemallocator = { workspace = true } [target.'cfg(target_os = "windows")'.dependencies] diff --git a/crates/ruff/src/main.rs b/crates/ruff/src/main.rs index 4342a360..19211e58 100644 --- a/crates/ruff/src/main.rs +++ b/crates/ruff/src/main.rs @@ -17,6 +17,7 @@ static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; not(target_os = "openbsd"), not(target_os = "aix"), not(target_os = "android"), + not(target_os = "redox"), any( target_arch = "x86_64", target_arch = "aarch64", diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 index 79d20990..00000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "1.93" ================================================ FILE: recipes/wip/dev/python/uv/recipe.toml ================================================ #TODO nix and rustix crate error [source] git = "https://github.com/astral-sh/uv" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] cargopackages = [ "uv" ] ================================================ FILE: recipes/wip/dev/rust-tools/bacon/recipe.toml ================================================ #TODO camino crate compilation error [source] git = "https://github.com/Canop/bacon" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/rust-tools/c2rust/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/immunant/c2rust" shallow_clone = true [build] template = "cargo" cargopackages = ["c2rust"] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/rust-tools/cbindgen/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/mozilla/cbindgen" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/rust-tools/clippy/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/rust-lang/rust-clippy" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/rust-tools/coq-of-rust/recipe.toml ================================================ #TODO not compiled or tested #TODO require the rust-src rustc-dev llvm-tools-preview components [source] git = "https://github.com/formal-land/coq-of-rust" shallow_clone = true [build] template = "cargo" cargopackages = [ "coq_of_rust_cli", "coq_of_rust_lib", ] [package] dependencies = [ "rust", "llvm21-common", ] ================================================ FILE: recipes/wip/dev/rust-tools/crater/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/rust-lang/crater" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/rust-tools/diplomat/recipe.toml ================================================ #TODO missing script to properly move the binary [source] git = "https://github.com/rust-diplomat/diplomat" shallow_clone = true [build] template = "cargo" cargopackages = ["diplomat"] ================================================ FILE: recipes/wip/dev/rust-tools/dylint/recipe.toml ================================================ #TODO cargo-util crate error [source] git = "https://github.com/trailofbits/dylint" shallow_clone = true [build] template = "cargo" cargopackages = [ "cargo-dylint", "dylint-link", ] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/rust-tools/evcxr-jupyter/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/evcxr/evcxr" shallow_clone = true [build] template = "cargo" cargopackages = ["evcxr_jupyter"] ================================================ FILE: recipes/wip/dev/rust-tools/evcxr-repl/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/evcxr/evcxr" shallow_clone = true [build] template = "cargo" cargopackages = ["evcxr_repl"] ================================================ FILE: recipes/wip/dev/rust-tools/ferrisup/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Jitpomi/ferrisup" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/rust-tools/kani/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/model-checking/kani" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/rust-tools/miri/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rust-lang/miri" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/rust-tools/rust-script/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/fornwall/rust-script" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/rust-tools/rust-to-npm/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/a11ywatch/rust-to-npm" shallow_clone = true [build] template = "cargo" cargopackages = ["rust-to-npm-cli"] ================================================ FILE: recipes/wip/dev/rust-tools/rustfmt/recipe.toml ================================================ #TODO serde crate error (after cargo update) [source] git = "https://github.com/rust-lang/rustfmt" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/rust-tools/rustup/recipe.toml ================================================ #TODO serde crate error [source] git = "https://github.com/rust-lang/rustup" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/rust-tools/sccache/recipe.toml ================================================ #TODO libc error [source] git = "https://github.com/mozilla/sccache" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/dev/rust-tools/scriptisto/recipe.toml ================================================ #TODO users crate error [source] git = "https://github.com/igor-petruk/scriptisto" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/rust-tools/tagref/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/stepchowfun/tagref" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/training/gittype/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/unhappychoice/gittype" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/vcs/mercurial/recipe.toml ================================================ #TODO missing script for GNU Make, see https://wiki.mercurial-scm.org/UnixInstall #TODO require CPython header files [source] tar = "https://www.mercurial-scm.org/release/mercurial-6.6.2.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/dev/wasm/binaryen/recipe.toml ================================================ #TODO compiled but not tested # build instructions: https://github.com/WebAssembly/binaryen#building [source] git = "https://github.com/WebAssembly/binaryen" rev = "version_125" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_TESTS=OFF", "-DBYN_ENABLE_ASSERTIONS=OFF", ] ================================================ FILE: recipes/wip/dev/wasm/trunk/recipe.toml ================================================ #TODO fs_at and libc crates error [source] git = "https://github.com/trunk-rs/trunk" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/wasm/wabt/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/WebAssembly/wabt#building-using-cmake-directly-linux-and-macos [source] tar = "https://github.com/WebAssembly/wabt/releases/download/1.0.39/wabt-1.0.39.tar.xz" [build] template = "cmake" cmakeflags = [ "-DBUILD_TESTS=OFF", ] ================================================ FILE: recipes/wip/dev/wasm/wasm-pack/recipe.toml ================================================ #TODO fs4 crate error [source] git = "https://github.com/rustwasm/wasm-pack" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/wasm/wasm-tools/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/bytecodealliance/wasm-tools" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/wasm/wasmer/recipe.toml ================================================ #TODO region crate error [source] git = "https://github.com/wasmerio/wasmer" [build] template = "custom" script = """ cookbook_cargo_packages wasmer-cli """ ================================================ FILE: recipes/wip/dev/wasm/wasmi/recipe.toml ================================================ #TODO fs-set-times and rustix crates error [source] git = "https://github.com/wasmi-labs/wasmi" [build] template = "custom" script = """ cookbook_cargo_packages wasmi_cli """ ================================================ FILE: recipes/wip/dev/wasm/wasminspect/recipe.toml ================================================ #TODO outdated redox_syscall crate [source] git = "https://github.com/kateinoigakukun/wasminspect" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/wasm/wasmtime/recipe.toml ================================================ #TODO requires *at functions in fcntl.h #TODO (willnode) push changes upstream [source] git = "https://github.com/willnode/wasmtime" branch = "v36-redox" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/dev/wasm/wepl/recipe.toml ================================================ #TODO fs-set-times crate error [source] git = "https://github.com/rylev/wepl" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/web/emscripten/recipe.toml ================================================ #TODO missing script for building: https://emscripten.org/docs/building_from_source/index.html [source] git = "https://github.com/emscripten-core/emscripten" rev = "5.0.0" shallow_clone = true [build] template = "custom" dev-dependencies = [ "host:nodejs24", ] [package] dependencies = [ "llvm21-common", "binaryen", ] ================================================ FILE: recipes/wip/dev/web/vox/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/emmyoh/vox" [build] template = "cargo" ================================================ FILE: recipes/wip/dev/web/zola/recipe.toml ================================================ #TODO compiled but not tested yet [source] git = "https://github.com/getzola/zola" shallow_clone = true rev = "33f03bb11158464e3ff877cdc5f1c55bbe7337ac" patches = [ "redox.patch" ] [build] template = "cargo" ================================================ FILE: recipes/wip/dev/web/zola/redox.patch ================================================ diff --git a/Cargo.lock b/Cargo.lock index 25c8de7..23e44f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -411,15 +411,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "block2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" -dependencies = [ - "objc2", -] - [[package]] name = "bstr" version = "1.12.1" @@ -986,13 +977,12 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.5.1" +version = "3.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73736a89c4aff73035ba2ed2e565061954da00d4970fc9ac25dcc85a2a20d790" +checksum = "46f93780a459b7d656ef7f071fe699c4d3d2cb201c4b24d085b6ddc505276e73" dependencies = [ - "dispatch2", "nix", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -1048,18 +1038,6 @@ dependencies = [ "crypto-common", ] -[[package]] -name = "dispatch2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" -dependencies = [ - "bitflags 2.10.0", - "block2", - "libc", - "objc2", -] - [[package]] name = "displaydoc" version = "0.2.5" @@ -3046,21 +3024,6 @@ dependencies = [ "libc", ] -[[package]] -name = "objc2" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" -dependencies = [ - "objc2-encode", -] - -[[package]] -name = "objc2-encode" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" - [[package]] name = "once_cell" version = "1.21.3" diff --git a/Cargo.toml b/Cargo.toml index a08be28..a9df3da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ clap_complete = "4" axum = { version = "0.8", default-features = false, features = ["http1", "tokio", "ws"] } tokio = { version = "1.0.1", default-features = false, features = ["rt", "fs", "time", "net", "sync"] } notify-debouncer-full = "0.6" -ctrlc = "3" +ctrlc = "=3.4.7" open = "5" # For mimetype detection in serve mode mime_guess = "2.0" ================================================ FILE: recipes/wip/doc/bookokrat/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bugzmanov/bookokrat" [build] template = "cargo" ================================================ FILE: recipes/wip/doc/brief/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from meson log [source] git = "https://github.com/shonebinu/Brief" rev = "v0.3.0" [build] template = "meson" ================================================ FILE: recipes/wip/doc/doctave/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/Doctave/doctave" [build] template = "cargo" ================================================ FILE: recipes/wip/doc/gnome-doc-utils/recipe.toml ================================================ #TODO probably wrong template [source] tar = "https://download.gnome.org/sources/gnome-doc-utils/0.20/gnome-doc-utils-0.20.10.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/doc/gtk-doc/recipe.toml ================================================ #TODO compiling, not tested [source] tar = "https://download.gnome.org/sources/gtk-doc/1.33/gtk-doc-1.33.2.tar.xz" [build] template = "meson" mesonflags = [ "-Dtests=false", "-Dyelp_manual=false", ] dev-dependencies = [ "host:libxslt", ] ================================================ FILE: recipes/wip/doc/mdbook/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/rust-lang/mdBook" [build] template = "cargo" ================================================ FILE: recipes/wip/doc/newdoc/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/redhat-documentation/newdoc" [build] template = "cargo" ================================================ FILE: recipes/wip/doc/po4a/recipe.toml ================================================ #TODO missing script for installation, see https://github.com/mquinson/po4a#installation [source] tar = "https://github.com/mquinson/po4a/releases/download/v0.69/po4a-0.69.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/doc/tendril-wiki/recipe.toml ================================================ #TODO require a patch to update the ring crate [source] git = "https://github.com/jamestthompson3/tendril-wiki" [build] template = "custom" script = """ cookbook_cargo_packages tendril@1.0.10 """ ================================================ FILE: recipes/wip/doc/texinfo/recipe.toml ================================================ #TODO Compilation error [source] tar = "https://ftp.gnu.org/gnu/texinfo/texinfo-7.0.3.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/edu/bibiman/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://codeberg.org/lukeflo/bibiman" [build] template = "cargo" ================================================ FILE: recipes/wip/edu/hacker-laws/recipe.toml ================================================ #TODO not tested [source] git = "https://github.com/dwmkerr/hacker-laws" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/hacker-laws cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/hacker-laws """ ================================================ FILE: recipes/wip/edu/nanocore/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/AfaanBilal/NanoCore" [build] template = "custom" script = """ cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/usr/share/nanocore" cp -rv "${COOKBOOK_SOURCE}"/programs/* "${COOKBOOK_STAGE}/usr/share/nanocore" """ ================================================ FILE: recipes/wip/edu/rustlings/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/rust-lang/rustlings" [build] template = "cargo" ================================================ FILE: recipes/wip/edu/rusty-tape/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Kkobarii/Rusty-Tape" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/rusty-tape cp -rv "${COOKBOOK_SOURCE}"/data/* "${COOKBOOK_STAGE}"/usr/share/rusty-tape cookbook_cargo """ ================================================ FILE: recipes/wip/emu/cpu/6502-emulator/recipe.toml ================================================ #TODO ahash crate error (probably outdated) [source] git = "https://github.com/ArchUsr64/6502_emulator" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/emu/cpu/8086-emulator/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/YJDoc2/8086-Emulator" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/emu/cpu/mipsy/recipe.toml ================================================ #TODO users crate error [source] git = "https://github.com/insou22/mipsy" shallow_clone = true [build] template = "cargo" cargopackages = ["mipsy"] ================================================ FILE: recipes/wip/emu/cpu/rustzx/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/rustzx/rustzx" shallow_clone = true [build] template = "cargo" cargopackages = ["rustzx"] dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/emu/cpu/rvemu/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/d0iasm/rvemu" shallow_clone = true [build] template = "cargo" cargopackages = ["rvemu-cli"] ================================================ FILE: recipes/wip/emu/cpu/scemu/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/sha0coder/scemu" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/emu/cpu/unicorn/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE.md [source] git = "https://github.com/unicorn-engine/unicorn" rev = "2.1.4" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DUNICORN_BUILD_TESTS=OFF" ] ================================================ FILE: recipes/wip/emu/game-console/azahar/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log # build instructions - https://github.com/azahar-emu/azahar/wiki/Building-From-Source#linux [source] git = "https://github.com/azahar-emu/azahar" rev = "2123.3" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DUSE_SYSTEM_SDL2=ON", "-DENABLE_QT=OFF", "-DENABLE_TESTS=OFF", "-DENABLE_WEB_SERVICE=OFF", "-DENABLE_SCRIPTING=OFF", "-DENABLE_LIBUSB=OFF", "-DENABLE_VULKAN=OFF", "-DCITRA_USE_PRECOMPILED_HEADERS=OFF" # can be used? ] dependencies = [ "sdl2", #"qt6-base", #"qt6-multimedia", ] ================================================ FILE: recipes/wip/emu/game-console/clementine/recipe.toml ================================================ #TODO the webbrowser crate needs to be ported [source] git = "https://github.com/RIP-Comm/clementine" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/emu/game-console/dolphin-emu/recipe.toml ================================================ #TODO not compiled or tested yet #TODO discover minimum dependencies from cmake log # build instructions: https://github.com/dolphin-emu/dolphin/wiki/Building-for-Linux [source] git = "https://github.com/dolphin-emu/dolphin" rev = "71e15c2875f36458c8f29ee160f01606967bcd13" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DENABLE_LTO=ON", "-DUSE_UPNP=OFF", "-DENABLE_ALSA=OFF", "-DENABLE_PULSEAUDIO=OFF", "-DENABLE_CUBEB=OFF", "-DENABLE_TESTS=OFF", "-DENABLE_VULKAN=OFF", "-DUSE_DISCORD_PRESENCE=OFF", "-DUSE_MGBA=OFF", "-DENABLE_AUTOUPDATE=OFF", "-DUSE_RETRO_ACHIEVEMENTS=OFF", "=DENABLE_ANALYTICS=OFF", "-DENCODE_FRAMEDUMPS=OFF", "-DENABLE_LLVM=OFF", "-DENABLE_QT=OFF", ] #dependencies = [ #"ffmpeg6", #"libevdev", #"libusb", #"pango", #"cairo", #"qt6-base", #"qt6-svg", #"mesa-x11", #"curl", #"libvulkan", #"openal", #] ================================================ FILE: recipes/wip/emu/game-console/finalburn-neo/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/finalburnneo/FBNeo/blob/master/README-SDL.md#sdl2 [source] git = "https://github.com/finalburnneo/FBNeo" rev = "a50ddd24dcd7bed4b625eeea9b25631072bbfe80" shallow_clone = true [build] template = "custom" dependencies = [ "sdl2", "sdl2-image", ] ================================================ FILE: recipes/wip/emu/game-console/gameboy/boytacean/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/joamag/boytacean" shallow_clone = true [build] template = "cargo" dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/emu/game-console/gameboy/gameroy/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Rodrigodd/gameroy" shallow_clone = true [build] template = "cargo" cargopackages = ["gameroy-native"] ================================================ FILE: recipes/wip/emu/game-console/gameboy/mimic/recipe.toml ================================================ #TODO update mio to 0.8 [source] git = "https://github.com/jawline/Mimic" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/emu/game-console/gopher64/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/gopher64/gopher64" shallow_clone = true [build] template = "cargo" dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/emu/game-console/jgenesis/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/jsgroth/jgenesis" shallow_clone = true [build] template = "cargo" cargopackages = ["jgenesis-cli"] dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/emu/game-console/mame/recipe.toml ================================================ #TODO missing script for gnu make: https://docs.mamedev.org/initialsetup/compilingmame.html [source] git = "https://github.com/mamedev/mame" rev = "mame0282" shallow_clone = true [build] template = "custom" dependencies = [ "sdl2", "sdl2-ttf", "fontconfig", "qt5-base", "qt5-tools", ] ================================================ FILE: recipes/wip/emu/game-console/melonds/recipe.toml ================================================ #TODO not compiled or tested yet # build instructions: https://github.com/melonDS-emu/melonDS/blob/master/BUILD.md#linux [source] git = "https://github.com/melonDS-emu/melonDS" rev = "1.0" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_QT_SDL=OFF" ] dependencies = [ "curl", "libpcap", "libenet", "sdl2", #"qt6-base", #"qt6-multimedia", #"qt6-svg", "libarchive", "zstd", "faad2", ] ================================================ FILE: recipes/wip/emu/game-console/meru/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/tanakh/meru" shallow_clone = true [build] template = "cargo" cargopackages = ["meru"] ================================================ FILE: recipes/wip/emu/game-console/mupen64plus/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/mupen64plus/mupen64plus-core/releases/download/2.6.0/mupen64plus-bundle-src-2.6.0.tar.gz" [build] template = "custom" dependencies = [ "freetype2", "liborbital", "libpng", "mesa", "mesa-glu", "sdl2", "zlib", ] script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ #TODO: support Redox in UNAME "${COOKBOOK_MAKE}" \ CROSS_COMPILE="${TARGET}-" \ GLES_LIB="" \ GL_CFLAGS="$("${TARGET}-pkg-config" --cflags osmesa)" \ GL_LDLIBS="$("${TARGET}-pkg-config" --libs osmesa)" \ HOST_CPU="${TARGET%%-*}" \ SDL_CFLAGS="$("${TARGET}-pkg-config" --cflags sdl2)" \ SDL_LDFLAGS="$("${TARGET}-pkg-config" --libs sdl2)" \ UNAME=Linux \ USE_GLES=1 \ V=1 \ VULKAN=0 \ -C projects/unix \ -j "${COOKBOOK_MAKE_JOBS}" \ all """ ================================================ FILE: recipes/wip/emu/game-console/obliteration/recipe.toml ================================================ #TODO missing script: https://github.com/obhq/obliteration/blob/main/docs/building.md [source] git = "https://github.com/obhq/obliteration" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/emu/game-console/pcsx2/recipe.toml ================================================ #TODO not compiled or tested #TODO need to be built with clang for best performance # build instructions: https://pcsx2.net/docs/advanced/building#building-on-linux [source] git = "https://github.com/PCSX2/pcsx2" branch = "2.4.x" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache", "-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON", "-DENABLE_TESTS=OFF", "-DLTO_PCSX2_CORE=ON", "-DPACKAGE_MODE=ON", "-DUSE_VULKAN=OFF", "-DWAYLAND_API=OFF", "-DUSE_BACKTRACE=OFF", ] # dependencies = [ # "sdl2", # "xz", # "libpng", # "qt6-base", # "qt6-svg", # "mesa-x11", # "libaio", # "harfbuzz", # "libpcap", # "pipewire", # "libsamplerate", # "soundtouch", # "zlib", # "libxml2", # "ffmpeg6", # ] ================================================ FILE: recipes/wip/emu/game-console/picodrive/recipe.toml ================================================ #TODO not compiled or tested #TODO discover the minimum dependencies from autotools log [source] git = "https://github.com/notaz/picodrive" rev = "26ecb2b6358fefba24e3d68b9eb2efba7f10d5ee" shallow_clone = true [build] template = "configure" configureflags = [ "--platform=generic", "--sound-drivers=sdl", ] ================================================ FILE: recipes/wip/emu/game-console/play/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/jpd002/Play-#building-for-unix [source] git = "https://github.com/jpd002/Play-" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_TESTS=OFF" ] dependencies = [ "openal", "libevdev", "freealut", "qt5-base", "qt5-x11extras", "sqlite3", ] ================================================ FILE: recipes/wip/emu/game-console/ppsspp/recipe.toml ================================================ #TODO not compiled or tested yet # build instructions: https://github.com/hrydgard/ppsspp/wiki/Build-instructions #git = "https://github.com/jackpot51/ppsspp" # wip orbital port [source] tar = "https://github.com/hrydgard/ppsspp/releases/download/v1.19.3/ppsspp-1.19.3.tar.xz" [build] template = "custom" dependencies = [ #"liborbital", "mesa", "mesa-glu", "sdl2", "sdl2-ttf", "zlib", "glew", "fontconfig", "curl", ] script = """ DYNAMIC_INIT COOKBOOK_CMAKE_FLAGS+=( -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include" -I${COOKBOOK_SYSROOT}/include/SDL2" -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include" -I${COOKBOOK_SYSROOT}/include/SDL2" -DOPENGL_opengl_LIBRARY="/dev/null" -DOPENGL_glx_LIBRARY="/dev/null" -DUSE_DISCORD=OFF -DUSE_FFMPEG=OFF -DUSE_MINIUPNPC=OFF -DUSE_SYSTEM_LIBSDL2=ON -DUSING_EGL=OFF -DUSING_FBDEV=OFF -DUSING_GLES2=OFF -DUSING_X11_VULKAN=OFF -DUNIX=ON ) cookbook_cmake """ ================================================ FILE: recipes/wip/emu/game-console/ps1/duckstation/recipe.toml ================================================ #TODO not compiled or tested yet #TODO determine minimum dependencies from cmake log # build instructions: https://github.com/stenzek/duckstation#linux-1 [source] git = "https://github.com/stenzek/duckstation" rev = "16e56d7824e15657be26e30030394d0668493635" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DENABLE_OPENGL=OFF", "-DENABLE_VULKAN=OFF", "-DENABLE_WAYLAND=OFF", "-DBUILD_QT_FRONTEND=OFF", "-DBUILD_MINI_FRONTEND=ON", ] #dependencies = [ #"sdl2", #"qt6-base", #"qt6-svg", #"qt6-tools", #] ================================================ FILE: recipes/wip/emu/game-console/ps1/pcsx-rearmed/recipe.toml ================================================ #TODO not compiled or tested #TODO discover the minimum dependencies from autotools log # build instructions: https://github.com/notaz/pcsx_rearmed/blob/master/readme.txt#L22 [source] git = "https://github.com/notaz/pcsx_rearmed" rev = "r25" shallow_clone = true [build] template = "configure" ================================================ FILE: recipes/wip/emu/game-console/ps1/rpsx/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/KieronJ/rpsx" shallow_clone = true [build] template = "cargo" dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/emu/game-console/ps1/trapezoid/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Amjad50/Trapezoid" shallow_clone = true [build] template = "cargo" dependencies = [ "shaderc", ] ================================================ FILE: recipes/wip/emu/game-console/rpcs3/recipe.toml ================================================ #TODO not compiled or tested yet #TODO determine minimum dependencies from cmake log # build instructions: https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md # customization: https://wiki.rpcs3.net/index.php?title=Help:Building_RPCS3#CMake_Build_Options [source] git = "https://github.com/RPCS3/rpcs3" rev = "db8437b01cf24ba1146cf7d22e1be02202cc98f4" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DUSE_NATIVE_INSTRUCTIONS=OFF", "-DWITH_LLVM=OFF", "-DUSE_ALSA=OFF", "-DUSE_PULSE=OFF", "-DUSE_LIBEVDEV=OFF", "-DBUILD_LLVM_SUBMODULE=OFF", "-DUSE_SYSTEM_FFMPEG=ON", "-DUSE_VULKAN=OFF", "-DUSE_FAUDIO=OFF", "-DUSE_SYSTEM_OPENAL=ON", "-DUSE_SYSTEM_ZSTD=ON", ] dependencies = [ #"mesa-x11", "qt6-base", "qt6-multimedia", "qt6-svg", "qt6-declarative", "curl", "opencv4", "sdl3", #"eudev", #"glew", "openal", "zlib", "zstd", #"libpng", #"libevdev", #"libedit", #"libvulkan", #"libpulse", #"ffmpeg6", ] ================================================ FILE: recipes/wip/emu/game-console/shadps4/recipe.toml ================================================ #TODO not compiled or tested #TODO missing dependencies # build instructions - https://github.com/shadps4-emu/shadPS4/blob/main/documents/building-linux.md [source] git = "https://github.com/shadps4-emu/shadPS4" [build] template = "cmake" #cmakeflags = [ #"-DENABLE_QT_GUI=ON" #] dependencies = [ "libpulse", "openal", "openssl3", "libedit", "eudev", "libevdev", "sdl2", "sndio", #"qt6-base", #"qt6-multimedia", "libvulkan", ] ================================================ FILE: recipes/wip/emu/game-console/snes9x/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/snes9xgit/snes9x/wiki/Compiling [source] git = "https://github.com/snes9xgit/snes9x" rev = "1.63" shallow_clone = true [build] template = "custom" dependencies = [ "sdl2", "gtk3mm", "libx11", "libxext", "libxrandr", ] script = """ COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/gtk" DYNAMIC_INIT cookbook_cmake """ ================================================ FILE: recipes/wip/emu/game-console/tetanes/recipe.toml ================================================ #TODO Not compiled or tested yet [source] git = "https://github.com/lukexor/tetanes" shallow_clone = true [build] template = "cargo" dependencies = [ "sdl2", "sdl2-image", "sdl2-mixer", "sdl2-ttf", "sdl2-gfx", ] ================================================ FILE: recipes/wip/emu/game-console/uoyabause/recipe.toml ================================================ #TODO not compiled or tested yet # build instructions: https://github.com/devmiyax/yabause/blob/master/yabause/README.LIN#L77 [source] git = "https://github.com/devmiyax/yabause" rev = "71c973f92966d33de464c1ba4dac1953af6ec462" shallow_clone = true [build] template = "custom" dependencies = [ "gtk2", "sdl2", "mesa", "gtkglext", ] script = """ DYNAMIC_INIT COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/yabause" cookbook_cmake """ ================================================ FILE: recipes/wip/emu/game-console/vita3k/recipe.toml ================================================ #TODO not compiled or tested yet # build instructions: https://github.com/Vita3K/Vita3K/blob/master/building.md#linux [source] git = "https://github.com/Vita3K/Vita3K" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DUSE_VITA3K_UPDATE=OFF" ] dependencies = [ "sdl2", "gtk3", "openssl3", ] ================================================ FILE: recipes/wip/emu/game-console/xemu/recipe.toml ================================================ #TODO adapt build.sh script for cross-compilation # build instructions: https://xemu.app/docs/dev/building-from-source/#linux [source] tar = "https://github.com/xemu-project/xemu/releases/download/v0.8.115/src.tar.gz" [build] template = "custom" dependencies = [ "sdl2", "libepoxy", "libsamplerate", "pixman", "gtk3", "openssl3", "libpcap", "libslirp", ] script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ DYNAMIC_INIT ./build.sh """ ================================================ FILE: recipes/wip/emu/game-console/xenia-canary/recipe.toml ================================================ #TODO missing script: https://github.com/xenia-canary/xenia-canary/blob/canary_experimental/docs/building.md#linux [source] git = "https://github.com/xenia-canary/xenia-canary" shallow_clone = true [build] template = "custom" dependencies = [ "gtk3", "sdl2", "mesa-x11", "lz4", "libunwind", "libpthread-stubs", "libvulkan", ] ================================================ FILE: recipes/wip/emu/game-console/zsnes/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/xyproto/zsnes#build [source] git = "https://github.com/xyproto/zsnes" shallow_clone = true [build] template = "custom" dependencies = [ "sdl1", "zlib", "mesa", "libpng", ] ================================================ FILE: recipes/wip/emu/mobile/touchhle/recipe.toml ================================================ #TODO make boost work [source] git = "https://github.com/hikari-no-yume/touchHLE" shallow_clone = true [build] template = "cargo" dependencies = [ "boost" ] ================================================ FILE: recipes/wip/emu/mobile/wie/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/dlunch/wie" shallow_clone = true [build] template = "cargo" cargopackages = ["wie_cli"] ================================================ FILE: recipes/wip/emu/pc/darling/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://docs.darlinghq.org/build-instructions.html#building-and-installing [source] git = "https://github.com/darlinghq/darling" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DTARGET_i386=OFF" ] dependencies = [ "libfuse3", "libevdev", "cairo", "mesa", "libtiff", "freetype2", "libxml2", "fontconfig", "libbsd", "libgif", "ffmpeg6", "openssl3", "libxkbfile", ] ================================================ FILE: recipes/wip/emu/pc/martypc/recipe.toml ================================================ #TODO nix crate error # build instructions: https://github.com/dbalsom/martypc/wiki/Building-MartyPC#building-for-linux [source] git = "https://github.com/dbalsom/martypc" shallow_clone = true rev = "0.4.1" [build] template = "custom" script = """ DYNAMIC_INIT # there's a lot of git dependencies COOKBOOK_CARGO_FLAGS=( -Zgit=shallow-index,shallow-deps ) # clang specifics PREFIX_INCLUDE="$COOKBOOK_HOST_SYSROOT/$TARGET/include" export CLANGFLAGS="-I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$TARGET -I $PREFIX_INCLUDE/c++/13.2.0/backward -I $PREFIX_INCLUDE" cookbook_cargo_packages martypc_eframe """ cargopackages = ["martypc_eframe"] ================================================ FILE: recipes/wip/emu/pc/opengmk/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/OpenGMK/OpenGMK" shallow_clone = true [build] template = "cargo" cargopackages = ["gm8emulator"] dependencies = [ "libalsa", ] ================================================ FILE: recipes/wip/emu/pc/ruffle/recipe.toml ================================================ #TODO need wayland support, then patch rfd crate #TODO port host:jre (try not to use jdk recipe) # build instructions: https://github.com/ruffle-rs/ruffle#building-from-source [source] git = "https://github.com/ruffle-rs/ruffle" shallow_clone = true [build] template = "cargo" cargopackages = ["ruffle_desktop"] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/emu/security/rust-u2f/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/danstiner/rust-u2f#building [source] git = "https://github.com/danstiner/rust-u2f" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/emu/win/boxedwine/recipe.toml ================================================ #TODO runtime crash [source] git = "https://github.com/jackpot51/Boxedwine" shallow_clone = true [build] template = "custom" dependencies = [ "curl", "liborbital", "mesa", "mesa-glu", "nghttp2", "openssl3", "sdl2", "zlib", ] script = """ DYNAMIC_INIT cd "${COOKBOOK_SOURCE}/project/linux" #TODO: USE MAKEFILE #TODO: USE X64 CPU CORE ${TARGET}-gcc -std=c++17 -O2 \ -Wall \ -Wno-delete-incomplete \ -Wno-unused-result \ -Wno-unknown-pragmas \ -Wno-unused-local-typedefs \ -Wno-unused-variable \ -Wno-unused-function \ -Wno-unused-but-set-variable \ -I "${COOKBOOK_SYSROOT}/include/SDL2" \ -I../../include \ -I../../lib/glew/include \ -I../../lib/imgui \ ../../lib/imgui/imgui.cpp \ ../../lib/pugixml/src/*.cpp \ ../../lib/imgui/imgui_draw.cpp \ ../../lib/imgui/imgui_widgets.cpp \ ../../lib/imgui/examples/imgui_impl_opengl2.cpp \ ../../lib/imgui/examples/imgui_impl_sdl.cpp \ ../../lib/imgui/addon/imguitinyfiledialogs.cpp \ ../../source/sdl/*.cpp \ ../../source/sdl/singleThreaded/*.cpp \ ../../lib/glew/src/glew.cpp \ ../../source/ui/*.cpp \ ../../source/ui/controls/*.cpp \ ../../source/ui/data/*.cpp \ ../../source/ui/opengl/*.cpp \ ../../source/ui/utils/*.cpp \ ../../platform/sdl/*.cpp \ ../../platform/linux/*.cpp \ ../../source/emulation/cpu/*.cpp \ ../../source/emulation/cpu/common/*.cpp \ ../../source/emulation/cpu/normal/*.cpp \ ../../source/emulation/softmmu/*.cpp \ ../../source/io/*.cpp \ ../../source/kernel/*.cpp \ ../../source/kernel/devs/*.cpp \ ../../source/kernel/proc/*.cpp \ ../../source/kernel/sys/*.cpp \ ../../source/kernel/loader/*.cpp \ ../../source/util/*.cpp \ ../../source/opengl/sdl/*.cpp \ ../../source/opengl/*.cpp \ ../../lib/tiny-process/process.cpp \ ../../lib/tiny-process/process_unix.cpp \ ../../lib/zlib/contrib/minizip/ioapi.c \ ../../lib/zlib/contrib/minizip/mztools.c \ ../../lib/zlib/contrib/minizip/unzip.c \ ../../lib/zlib/contrib/minizip/zip.c \ `${PKG_CONFIG} libcurl --cflags --libs` \ `${PKG_CONFIG} sdl2 --cflags --libs` \ -lz \ -lstdc++ \ "-DGLH=" \ -DBOXEDWINE_64 \ -DBOXEDWINE_HAS_SETJMP \ -DBOXEDWINE_OPENGL_IMGUI_V2 \ -DBOXEDWINE_OPENGL_SDL \ -DBOXEDWINE_POSIX \ -DBOXEDWINE_ZLIB \ -DGLEW_OSMESA \ -DSDL2=1 \ -DSIMDE_SSE2_NO_NATIVE \ -o "${COOKBOOK_BUILD}/boxedwine" mkdir -p "${COOKBOOK_STAGE}/usr/bin" cp -v "${COOKBOOK_BUILD}/boxedwine" "${COOKBOOK_STAGE}/usr/bin/boxedwine" """ ================================================ FILE: recipes/wip/emu/win/hangover/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/AndreRH/hangover/blob/master/docs/COMPILE.md [source] git = "https://github.com/AndreRH/hangover" rev = "hangover-11.0" shallow_clone = true script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "fontconfig", "freetype2", "gnutls3", "gstreamer", "sdl2", "mesa-x11", "libstdcxx", "libx11", "libxcomposite", "libxcursor", "libxi", "libxfixes", "libxrandr", "libxrender", "libxext", "libxkbcommon", #"libxkbregistry", ] script = """ DYNAMIC_INIT mkdir -p wine-tools pushd wine-tools #TODO: easier way to build for host? HOST_ENV=( env --unset=AR --unset=AS --unset=CC --unset=CFLAGS --unset=CPPFLAGS --unset=CXX --unset=GNU_TARGET --unset=LD --unset=LDFLAGS --unset=NM --unset=OBJCOPY --unset=OBJDUMP --unset=PKG_CONFIG --unset=PKG_CONFIG_ALLOW_CROSS --unset=PKG_CONFIG_FOR_BUILD --unset=PKG_CONFIG_LIBDIR --unset=PKG_CONFIG_PATH --unset=PKG_CONFIG_SYSROOT_DIR --unset=PREFIX_RUSTFLAGS --unset=RANLIB --unset=READELF --unset=STRIP --unset=TARGET ) "${HOST_ENV[@]}" "${COOKBOOK_CONFIGURE}" --enable-win64 "${HOST_ENV[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" __tooldeps__ popd COOKBOOK_CONFIGURE_FLAGS+=( --enable-win64 --enable-archs=x86_64,i386,arm --disable-kerberos --disable-tests --without-capi --without-coreaudio --without-dbus --without-gettext --without-gettextpo --without-gphoto --without-gssapi --without-inotify --without-krb5 --without-netapi --without-opencl --without-osmesa --without-pcap --without-pcsclite --with-pthread --without-pulse --without-sane --with-sdl --without-udev --without-unwind --without-usb --with-mingw --with-wine-tools=wine-tools ) cookbook_configure """ ================================================ FILE: recipes/wip/emu/win/retrowin32/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/evmar/retrowin32" shallow_clone = true [build] template = "cargo" cargopackages = ["retrowin32"] cargoflags = ["--x86-emu --sdl"] dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/emu/win/wine-stable/recipe.toml ================================================ #TODO port to redox #build instructions: https://gitlab.winehq.org/wine/wine/-/wikis/Building-Wine [source] git = "https://gitlab.winehq.org/wine/wine" branch = "stable" shallow_clone = true script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "fontconfig", "freetype2", "gnutls3", "gstreamer", "sdl2", "mesa-x11", "libstdcxx", "libx11", "libxcomposite", "libxcursor", "libxi", "libxfixes", "libxrandr", "libxrender", "libxext", "libxkbcommon", #"libxkbregistry", ] script = """ DYNAMIC_INIT mkdir -p wine-tools pushd wine-tools #TODO: easier way to build for host? HOST_ENV=( env --unset=AR --unset=AS --unset=CC --unset=CFLAGS --unset=CPPFLAGS --unset=CXX --unset=GNU_TARGET --unset=LD --unset=LDFLAGS --unset=NM --unset=OBJCOPY --unset=OBJDUMP --unset=PKG_CONFIG --unset=PKG_CONFIG_ALLOW_CROSS --unset=PKG_CONFIG_FOR_BUILD --unset=PKG_CONFIG_LIBDIR --unset=PKG_CONFIG_PATH --unset=PKG_CONFIG_SYSROOT_DIR --unset=PREFIX_RUSTFLAGS --unset=RANLIB --unset=READELF --unset=STRIP --unset=TARGET ) "${HOST_ENV[@]}" "${COOKBOOK_CONFIGURE}" --enable-win64 "${HOST_ENV[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" __tooldeps__ popd COOKBOOK_CONFIGURE_FLAGS+=( --enable-win64 --disable-kerberos --disable-tests --without-capi --without-coreaudio --without-dbus --without-gettext --without-gettextpo --without-gphoto --without-gssapi --without-inotify --without-krb5 --without-netapi --without-opencl --without-osmesa --without-pcap --without-pcsclite --with-pthread --without-pulse --without-sane --with-sdl --without-udev --without-unwind --without-usb --with-wine-tools=wine-tools ) cookbook_configure """ ================================================ FILE: recipes/wip/files/exi/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://codeberg.org/Rynux/exi" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/files/lsv/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/SecretDeveloper/lsv" [build] template = "cargo" ================================================ FILE: recipes/wip/files/mc/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/MidnightCommander/mc/blob/master/doc/INSTALL [source] tar = "https://ftp.osuosl.org/pub/midnightcommander/mc-4.8.33.tar.xz" [build] template = "configure" configureflags = [ "--without-x", "--without-gpm-mouse", ] dependencies = [ "ncurses", ] ================================================ FILE: recipes/wip/files/unf/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/io12/unf" [build] template = "cargo" ================================================ FILE: recipes/wip/finance/crypto/bitcoin/btc-vanity/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Emivvvvv/btc-vanity" [build] template = "cargo" ================================================ FILE: recipes/wip/finance/crypto/bitcoin/btcpay-server/recipe.toml ================================================ #TODO missing script for building: https://github.com/btcpayserver/btcpayserver#how-to-build #TODO determine minimum dependencies # dependencies and docker container setup: https://github.com/btcpayserver/btcpayserver/blob/master/BTCPayServer.Tests/docker-compose.yml # configuration: https://docs.btcpayserver.org/Development/LocalDevelopment/ [source] git = "https://github.com/btcpayserver/btcpayserver" rev = "v2.3.4" shallow_clone = true [build] template = "custom" dev-dependencies = [ "host:dotnet8", ] ================================================ FILE: recipes/wip/finance/crypto/bitcoin/electrum/recipe.toml ================================================ # runtime dependencies - https://electrum.org/#download [source] tar = "https://download.electrum.org/4.5.5/Electrum-4.5.5.tar.gz" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/electrum mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/electrum echo "#!/usr/bin/env sh \n python3 /usr/share/electrum/run_electrum" > "${COOKBOOK_STAGE}"/usr/bin/electrum chmod a+x "${COOKBOOK_STAGE}"/usr/bin/electrum """ ================================================ FILE: recipes/wip/finance/crypto/bitcoin/liana/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/wizardsardine/liana" [build] template = "cargo" ================================================ FILE: recipes/wip/finance/crypto/bitcoin/nakamoto-wallet/recipe.toml ================================================ #TODO hidapi crate error - redox not supported (after cargo update) [source] git = "https://github.com/cloudhead/nakamoto" [build] template = "custom" script = """ cookbook_cargo_packages nakamoto-wallet """ ================================================ FILE: recipes/wip/finance/crypto/bitcoin/nakatoshi/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ndelvalle/nakatoshi" [build] template = "cargo" ================================================ FILE: recipes/wip/finance/crypto/bitcoin/ord/recipe.toml ================================================ #TODO the ring crate needs to be updated [source] git = "https://github.com/ordinals/ord" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/finance/crypto/bitcoin/pushtx/recipe.toml ================================================ #TODO compiled but not tested #TODO add a command to properly move the executable [source] git = "https://github.com/alfred-hodler/pushtx" [build] template = "custom" script = """ cookbook_cargo_packages pushtx-cli """ ================================================ FILE: recipes/wip/finance/crypto/bitcoin/rusty-blockparser/recipe.toml ================================================ #TODO fs2 crate error [source] git = "https://github.com/gcarq/rusty-blockparser" [build] template = "cargo" ================================================ FILE: recipes/wip/finance/crypto/eth/lighthouse/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://lighthouse-book.sigmaprime.io/installation_source.html [source] git = "https://github.com/sigp/lighthouse" branch = "stable" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages lighthouse """ ================================================ FILE: recipes/wip/finance/crypto/eth/reth/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://reth.rs/installation/source [source] git = "https://github.com/paradigmxyz/reth shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages reth """ ================================================ FILE: recipes/wip/finance/crypto/monero/gupax/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/hinto-janai/gupax" [build] template = "cargo" ================================================ FILE: recipes/wip/finance/crypto/monero/xmrig/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://xmrig.com/docs/miner/build/ubuntu # customization - https://xmrig.com/docs/miner/cmake-options [source] git = "https://github.com/xmrig/xmrig" rev = "8084ff37a5c8935c649a2e362da0fe570c79a2c2" [build] template = "cmake" #cmakeflags = [ # "-DOPENSSL_ROOT_DIR=${COOKBOOK_SYSROOT}" # test if the program need this #] dependencies = [ "openssl1", "libuv", ] ================================================ FILE: recipes/wip/finance/donation/cargo-fund/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/acfoltzer/cargo-fund" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/finance/market/apcacli/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/d-e-s-o/apcacli" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/finance/market/merkato/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/sheep-farm/merkato" rev = "0.2.0.1" [build] template = "meson" dependencies = [ "gtk4", ] ================================================ FILE: recipes/wip/finance/market/tick-rs/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/tarkah/tickrs" [build] template = "cargo" ================================================ FILE: recipes/wip/finance/mgmt/gnucash/recipe.toml ================================================ #TODO not compiled or tested #TODO discover the minimum dependencies from cmake log # build instructions: https://wiki.gnucash.org/wiki/Building_On_Linux # dependencies: https://wiki.gnucash.org/wiki/Dependencies [source] tar = "https://sourceforge.net/projects/gnucash/files/gnucash%20(stable)/5.13/gnucash-5.13.tar.bz2" [build] template = "cmake" ================================================ FILE: recipes/wip/finance/mgmt/tackler-ng/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/e257-fi/tackler-ng" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/tackler-ng/examples cp -rv "${COOKBOOK_SOURCE}"/examples/* "${COOKBOOK_STAGE}"/usr/share/tackler-ng/examples cookbook_cargo_packages tackler """ ================================================ FILE: recipes/wip/finance/rex/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/TheRustyPickle/Rex" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/fonts/fontfor/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/7sDream/fontfor" [build] template = "cargo" ================================================ FILE: recipes/wip/fonts/fontforge/recipe.toml ================================================ #TODO missing script for Ninja, see https://github.com/fontforge/fontforge/blob/master/INSTALL.md [source] tar = "https://github.com/fontforge/fontforge/releases/download/20230101/fontforge-20230101.tar.xz" [build] template = "custom" dependencies = [ "libtiff", "libjpeg", "libpng", "libgif", "libxml2", "gtk3", "freetype2", "pango", "cairo", "libspiro", ] ================================================ FILE: recipes/wip/fonts/gerb/recipe.toml ================================================ #TODO make GTK3 work [source] git = "https://github.com/epilys/gerb" [build] template = "cargo" dependencies = [ "gtk3", ] ================================================ FILE: recipes/wip/fonts/nerd-fonts/recipe.toml ================================================ #TODO not tested [source] git = "https://github.com/ryanoasis/nerd-fonts" rev = "v3.4.0" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/fonts/Nerd cp -rv "${COOKBOOK_SOURCE}"/patched-fonts/* "${COOKBOOK_STAGE}"/usr/share/fonts/Nerd """ ================================================ FILE: recipes/wip/fonts/noto/recipe.toml ================================================ [source] git = "https://github.com/notofonts/notofonts.github.io" rev = "noto-monthly-release-2026.02.01" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/fonts/Noto for f in "${COOKBOOK_SOURCE}"/fonts/*; do echo cp -rv "${f}/full/ttf/* "${COOKBOOK_STAGE}/usr/share/fonts/Noto/$(basename ${f})/" done """ ================================================ FILE: recipes/wip/fonts/noto-sans-cjk/recipe.toml ================================================ [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_BUILD}"/fonts "${COOKBOOK_STAGE}/usr/share/fonts/Noto-Sans-CJK" wget https://github.com/notofonts/noto-cjk/releases/download/Sans2.004/02_NotoSansCJK-TTF-VF.zip unzip "${COOKBOOK_BUILD}"/02_NotoSansCJK-TTF-VF.zip -d "${COOKBOOK_BUILD}"/fonts cp -rv "${COOKBOOK_BUILD}"/fonts/Variable/TTF/* "${COOKBOOK_STAGE}/usr/share/fonts/Noto-Sans-CJK" """ ================================================ FILE: recipes/wip/fonts/noto-serif-cjk/recipe.toml ================================================ [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_BUILD}"/fonts "${COOKBOOK_STAGE}/usr/share/fonts/Noto-Serif-CJK" wget https://github.com/notofonts/noto-cjk/releases/download/Serif2.003/03_NotoSerifCJK-TTF-VF.zip unzip "${COOKBOOK_BUILD}"/03_NotoSerifCJK-TTF-VF.zip -d "${COOKBOOK_BUILD}"/fonts cp -rv "${COOKBOOK_BUILD}"/fonts/Variable/TTF/* "${COOKBOOK_STAGE}/usr/share/fonts/Noto-Serif-CJK" """ ================================================ FILE: recipes/wip/fonts/sitra/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from meson log [source] git = "https://github.com/sitraorg/sitra" rev = "af4cfcca680653aba93c44a384c134093e124e7c" shallow_clone = true [build] template = "meson" ================================================ FILE: recipes/wip/fuse/archivemount/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/cybernoid/archivemount" rev = "78c306538065de9b14f48cfc2024f50f843d3b29" [build] template = "configure" dependencies = [ "libfuse2", "libarchive", ] ================================================ FILE: recipes/wip/fuse/btfs/recipe.toml ================================================ #TODO not compiled or tested #TODO maybe incomplete configuration # build instructions - https://github.com/johang/btfs#building-from-git-on-a-recent-debianubuntu [source] git = "https://github.com/johang/btfs" rev = "2b372f4596df3ff97e3b39d58b144a7cbfff012a" script = "autoreconf -i" [build] template = "configure" dependencies = [ "libfuse3", "libtorrent", "curl", ] ================================================ FILE: recipes/wip/fuse/cryfs/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/cryfs/cryfs#building-from-source [source] tar = "https://github.com/cryfs/cryfs/releases/download/1.0.1/cryfs-1.0.1.tar.xz" [build] template = "cmake" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/cvmfs/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://cvmfs.readthedocs.io/en/stable/cpt-quickstart.html#building-from-source [source] tar = "https://ecsft.cern.ch/dist/cvmfs/cvmfs-2.11.2/source.tar.gz" [build] template = "cmake" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/dislocker/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Aorimn/dislocker/blob/master/INSTALL.md [source] git = "https://github.com/Aorimn/dislocker" rev = "8b2aea09d431bd5497ae223c141ebaee7bdd481f" [build] template = "cmake" dependencies = [ "libfuse3", "mbedtls", ] ================================================ FILE: recipes/wip/fuse/dwarfs/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/mhx/dwarfs#building #TODO missing dependencies, see https://github.com/mhx/dwarfs#dependencies [source] tar = "https://github.com/mhx/dwarfs/releases/download/v0.7.2/dwarfs-0.7.2.tar.xz" [build] template = "cmake" dependencies = [ "libfuse3", "boost", "libbrotli", "libevent", "openssl1", "lz4", "xz", "libunwind", "libfmt", ] ================================================ FILE: recipes/wip/fuse/e2fsprogs/recipe.toml ================================================ #TODO maybe wrong template # build instructions - https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/tree/INSTALL [source] tar = "http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.47.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/fuse/exfat-fuse/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/relan/exfat/releases/download/v1.4.0/fuse-exfat-1.4.0.tar.gz" [build] template = "configure" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/ffmpegfs/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/nschlia/ffmpegfs/blob/master/INSTALL.md#building-ffmpegfs-yourself [source] tar = "https://github.com/nschlia/ffmpegfs/releases/download/v2.17/ffmpegfs-2.17.tar.gz" [build] template = "configure" dependencies = [ "libfuse3", "sqlite3", "ffmpeg6", ] ================================================ FILE: recipes/wip/fuse/fuse-ext2/recipe.toml ================================================ #TODO not compiled or tested #TODO missing dependencies # build instructions: https://github.com/alperakcan/fuse-ext2#building [source] git = "https://github.com/alperakcan/fuse-ext2" rev = "ae35afb9ab08d87c66c1e021df792b3a7c4308b0" script = "./autogen.sh" [build] template = "configure" dependencies = [ "libfuse2", ] ================================================ FILE: recipes/wip/fuse/fuse-nfs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/sahlberg/fuse-nfs" rev = "75827244f1615be20da880cbc68665416131088d" script = "./setup.sh" [build] template = "configure" dependencies = [ "libfuse3", "libnfs", ] ================================================ FILE: recipes/wip/fuse/fuse-zip/recipe.toml ================================================ #TODO missing script for gnu make: https://bitbucket.org/agalanin/fuse-zip/src/master/INSTALL [source] git = "https://bitbucket.org/agalanin/fuse-zip" rev = "0.7.2" [build] template = "custom" dependencies = [ "libfuse2", "libzip", ] ================================================ FILE: recipes/wip/fuse/glusterfs/recipe.toml ================================================ #TODO make all dependencies work #TODO probably missing dependencies, see https://docs.gluster.org/en/latest/Developer-guide/Building-GlusterFS/#build-requirements # customization - https://docs.gluster.org/en/latest/Developer-guide/Building-GlusterFS/#configuring-for-building [source] tar = "https://download.gluster.org/pub/gluster/glusterfs/9/LATEST/glusterfs-9.6.tar.gz" [build] template = "configure" dependencies = [ "openssl1", "libxml2", "libaio", "sqlite3", "libfuse3", ] ================================================ FILE: recipes/wip/fuse/goofys/recipe.toml ================================================ #TODO missing script for Go, see https://github.com/kahing/goofys/#installation [source] git = "https://github.com/kahing/goofys" rev = "45b8d78375af1b24604439d2e60c567654bcdf88" [build] template = "custom" ================================================ FILE: recipes/wip/fuse/hfsfuse/recipe.toml ================================================ #TODO missing script for gnu make, see https://github.com/0x09/hfsfuse#building [source] tar = "https://github.com/0x09/hfsfuse/releases/download/0.242/hfsfuse-0.242.tar.gz" [build] template = "custom" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/httpdirfs/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/fangfufu/httpdirfs#compilation [source] git = "https://github.com/fangfufu/httpdirfs" rev = "d91bb2b2789be8a0f72c7baddac63ffb78299ad9" [build] template = "meson" dependencies = [ "libfuse3", "openssl1", "curl", "expat", "libuuid", "libgumbo", ] ================================================ FILE: recipes/wip/fuse/ifuse/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/libimobiledevice/ifuse/releases/download/1.1.4/ifuse-1.1.4.tar.bz2" [build] template = "configure" dependencies = [ "libfuse3", "libplist", "libimobiledevice", ] ================================================ FILE: recipes/wip/fuse/indexfs/recipe.toml ================================================ #TODO make libfuse work #TODO probably missing dependencies # build instructions - https://github.com/MajenkoProjects/indexfs/blob/master/INSTALL [source] git = "https://github.com/MajenkoProjects/indexfs" script = "./autogen.sh" [build] template = "configure" ================================================ FILE: recipes/wip/fuse/lazyfs/recipe.toml ================================================ #TODO missing script for compilation: https://github.com/dsrhaslab/lazyfs#installation [source] git = "https://github.com/dsrhaslab/lazyfs" rev = "0.3.0" [build] template = "custom" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/lis/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/riffcc/lis" [build] template = "cargo" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/littlefs/recipe.toml ================================================ #TODO missing script for gnu make [source] git = "https://github.com/littlefs-project/littlefs-fuse" rev = "v2.7.14" [build] template = "custom" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/loggedfs/recipe.toml ================================================ #TODO missing script for gnu make # build instructions: https://github.com/rflament/loggedfs#installation-from-source [source] git = "https://github.com/rflament/loggedfs" rev = "82aba9a93489797026ad1a37b637823ece4a7093" [build] template = "custom" dependencies = [ "libfuse3", "pcre2", "libxml2", ] ================================================ FILE: recipes/wip/fuse/mergerfs/recipe.toml ================================================ #TODO missing script for gnu make: https://trapexit.github.io/mergerfs/preview/setup/build/ [source] tar = "https://github.com/trapexit/mergerfs/releases/download/2.40.2/mergerfs-2.40.2.tar.gz" [build] template = "custom" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/moosefs/recipe.toml ================================================ #TODO missing script for building, see https://github.com/moosefs/moosefs#source-code [source] git = "https://github.com/moosefs/moosefs" rev = "79bca600d6ddfecfcb29af2fc6632b4e3d00f1a5" [build] template = "custom" dependencies = [ "libfuse3", "libpcap", "zlib", ] ================================================ FILE: recipes/wip/fuse/mount-zip/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/google/mount-zip/blob/main/INSTALL.md [source] git = "https://github.com/google/mount-zip" rev = "v1.10" [build] template = "custom" dependencies = [ "libfuse3", "libzip", "libicu", "boost", ] ================================================ FILE: recipes/wip/fuse/ntfs-3g/recipe.toml ================================================ #TODO port to redox [source] tar = "https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2022.10.3.tgz" [build] template = "configure" ================================================ FILE: recipes/wip/fuse/oku-fs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/OkuBrowser/oku-fs" [build] template = "custom" dependencies = [ "libfuse3", ] script = """ cookbook_cargo --features fuse cli """ ================================================ FILE: recipes/wip/fuse/pifs/recipe.toml ================================================ #TODO make libfuse 2.x works #TODO probably wrong script, see https://github.com/philipl/pifs#readme [source] git = "https://github.com/philipl/pifs" script = "./autogen.sh" [build] template = "configure" dependencies = [ "libfuse2", ] ================================================ FILE: recipes/wip/fuse/rencfs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/radumarias/rencfs" [build] template = "cargo" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/s3fs/recipe.toml ================================================ #TODO make libfuse2 work # build instructions - https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md [source] git = "https://github.com/s3fs-fuse/s3fs-fuse" rev = "5371cd1468c84423729c334ac997f9621b797e9f" script = "./autogen.sh" [build] template = "configure" dependencies = [ "libfuse2", "curl", "libxml2", "openssl1", ] ================================================ FILE: recipes/wip/fuse/securefs/recipe.toml ================================================ #TODO missing script for vcpkg: https://github.com/netheril96/securefs#build-from-source [source] git = "https://github.com/netheril96/securefs" rev = "v2.0.0" [build] template = "custom" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/simple-mtpfs/recipe.toml ================================================ #TODO not compiled or tested # build instructions - https://github.com/phatina/simple-mtpfs/blob/master/INSTALL [source] git = "https://github.com/phatina/simple-mtpfs" rev = "19e7bb9b608b0c0dce2ee6f56fac75901bc69529" script = "./autogen.sh" [build] template = "configure" dependencies = [ "libfuse3", "libmtp", ] ================================================ FILE: recipes/wip/fuse/squashfuse/recipe.toml ================================================ #TODO missing dependencies [source] tar = "https://github.com/vasi/squashfuse/releases/download/0.5.2/squashfuse-0.5.2.tar.gz" [build] template = "configure" dependencies = [ "libfuse3", "zlib", "liblzma", "lz4", "zstd", ] ================================================ FILE: recipes/wip/fuse/unionfs-fuse/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/rpodgorny/unionfs-fuse#how-to-build [source] git = "https://github.com/rpodgorny/unionfs-fuse" rev = "v3.7" [build] template = "cmake" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/fuse/unreliablefs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ligurio/unreliablefs" rev = "fa432252c117e82a0a36343895936f4fae246b56" [build] template = "cmake" dependencies = [ "libfuse3", ] ================================================ FILE: recipes/wip/games/action/battleship-rs/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/deepu105/battleship-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/games/action/bevy-combat/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ElliotB256/bevy_combat" [build] template = "cargo" ================================================ FILE: recipes/wip/games/data/0ad-data/recipe.toml ================================================ #TODO not tested [source] tar = "https://releases.wildfiregames.com/0ad-0.0.26-alpha-unix-data.tar.xz" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/0ad/ cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/0ad/ """ ================================================ FILE: recipes/wip/games/data/crosshare-data/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/crosshare-org/crosshare" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/share/crosshare-data" cp -rv "${COOKBOOK_SOURCE}"/app/__tests__/converter/puz/*.puz "${COOKBOOK_STAGE}/usr/share/crosshare-data" """ ================================================ FILE: recipes/wip/games/data/luanti-data/recipe.toml ================================================ #TODO not tested [source] git = "https://github.com/luanti-org/minetest_game" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/luanti/games/minetest_game cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/luanti/games/minetest_game """ ================================================ FILE: recipes/wip/games/data/openjazz-shareware-data/jazzdemo.rar.sha ================================================ a71e91cc0136449e58e922dc555180a84b04562f2c04c45d1545765dc77e32fb jazzdemo.rar ================================================ FILE: recipes/wip/games/data/openjazz-shareware-data/manifest ================================================ name=Jazz Jackrabbit (shareware) category=Games binary=/usr/games/OpenJazz icon=/ui/icons/apps/OpenJazz.png ================================================ FILE: recipes/wip/games/data/openjazz-shareware-data/recipe.toml ================================================ # TODO: Requires unrar-free in the build container [build] template = "custom" script = """ ASSETS_DIR="${COOKBOOK_STAGE}/usr/share/games/openjazz/" APP_DIR="${COOKBOOK_STAGE}/usr/share/ui/apps" curl -vJL https://archive.org/download/jazz-jackrabbit/Jazz%20Jackrabbit.rar -o jazzdemo.rar sha256sum -c "${COOKBOOK_RECIPE}/jazzdemo.rar.sha" unrar x -u jazzdemo.rar mkdir -p "${ASSETS_DIR}" "${APP_DIR}" unzip -uL Jazz/JAZZ.ZIP -d "${ASSETS_DIR}" cp -v manifest "${APP_DIR}/openjazz" """ [package] dependencies = [ "openjazz" ] ================================================ FILE: recipes/wip/games/data/quake1-shareware/manifest ================================================ name=Quake shareware category=Games binary=/usr/games/quakespasm -basedir /use/share/games/quake/ ================================================ FILE: recipes/wip/games/data/quake1-shareware/pak0.pak.sha ================================================ 35a9c55e5e5a284a159ad2a62e0e8def23d829561fe2f54eb402dbc0a9a946af /mnt/games1/home/steam_games/steamapps/common/Quake/id1/PAK0.PAK ================================================ FILE: recipes/wip/games/data/quake1-shareware/quake106.zip.sha ================================================ ec6c9d34b1ae0252ac0066045b6611a7919c2a0d78a3a66d9387a8f597553239 quake106.zip ================================================ FILE: recipes/wip/games/data/quake1-shareware/recipe.toml ================================================ # TODO: not tested [build] template = "custom" dev-dependencies = [ "host:lhasa", "host:unzrip", "host:7-zip", ] script = """ curl -O "https://github.com/Jason2Brownlee/QuakeOfficialArchive/raw/refs/heads/main/bin/quake106.zip" sha256sum -c quake106.zip.sha # The zip file contains a DOS installer which we don't need # The actual demo content is within another archive 7z x quake106.zip # Actual game contents lha xv resource.1 sha256sum -c pak0.pak.sha # Now, the ID1 folder contains PAK0, the demo file # Non-Windows/non-DOS systems expect the directory and file to be lowercased OUT_DIR = "${COOKBOOK_STAGE}/usr/share/games/quake/id1/" mkdir -p "${OUT_DIR}" cp -v ID1/PAK0.PAK "${OUT_DIR}/pak0.pak" """ ================================================ FILE: recipes/wip/games/engines/chocolate-doom/recipe.toml ================================================ #TODO Not compiled or tested yet [source] tar = "https://www.chocolate-doom.org/downloads/3.0.1/chocolate-doom-3.0.1.tar.gz" [build] template = "configure" dependencies = [ "sdl2", "sdl2-mixer", "sdl2-net", ] ================================================ FILE: recipes/wip/games/engines/crispy-doom/recipe.toml ================================================ #TODO Not compiled/tested yet [source] git = "https://github.com/fabiangreffrath/crispy-doom" rev = "crispy-doom-7.1" [build] template = "configure" dependencies = [ "sdl2", "sdl2-mixer", "sdl2-net", ] ================================================ FILE: recipes/wip/games/engines/gemrb/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/gemrb/gemrb/blob/master/INSTALL [source] tar = "https://sourceforge.net/projects/gemrb/files/Releases//0.9.4/gemrb-0.9.4-sources.tar.gz" [build] template = "cmake" cmakeflags = [ "-DSDL_BACKEND=SDL2", ] dependencies = [ "sdl2", "sdl2-mixer", "zlib", "libiconv", ] ================================================ FILE: recipes/wip/games/engines/ioquake3/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/ioquake/ioq3#compilation-and-installation [source] git = "https://github.com/ioquake/ioq3" [build] template = "custom" dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/games/engines/love/recipe.toml ================================================ [source] tar = "https://github.com/love2d/love/archive/refs/tags/11.5.tar.gz" blake3 = "1fe441b04af1c0aa12b5d12f274fd892e6f307bcc882888c3a1ec048294a25c7" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "freetype2", "libmodplug1", "libogg", "liborbital", "libpng", "libtheora", "libvorbis", "luajit", "openal", "mesa", "mpg123", "sdl2", "zlib", ] script = """ DYNAMIC_INIT export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" cat > redox.cmake < 2) { // End of word - if (!std::iswspace(prev_c) && std::iswspace(c)) + if (!::iswspace(prev_c) && ::iswspace(c)) break; // End of a sentence. - if (std::iswpunct(prev_c) && !std::iswpunct(c)) + if (iswpunct(prev_c) && !iswpunct(c)) break; } prev_c = c; diff --git a/irr/src/CIrrDeviceSDL.cpp b/irr/src/CIrrDeviceSDL.cpp index a44213d7c..dbf3611b1 100644 --- a/irr/src/CIrrDeviceSDL.cpp +++ b/irr/src/CIrrDeviceSDL.cpp @@ -331,7 +331,9 @@ CIrrDeviceSDL::CIrrDeviceSDL(const SIrrlichtCreationParameters ¶m) : // Minetest has its own code to synthesize mouse events from touch events, // so we prevent SDL from doing it. SDL_SetHint(SDL_HINT_TOUCH_MOUSE_EVENTS, "0"); +#ifdef SDL_HINT_MOUSE_TOUCH_EVENTS SDL_SetHint(SDL_HINT_MOUSE_TOUCH_EVENTS, "0"); +#endif #if defined(SDL_HINT_APP_NAME) SDL_SetHint(SDL_HINT_APP_NAME, "Luanti"); diff --git a/irr/src/CMakeLists.txt b/irr/src/CMakeLists.txt index b7360311a..b1c578726 100644 --- a/irr/src/CMakeLists.txt +++ b/irr/src/CMakeLists.txt @@ -232,7 +232,7 @@ if(USE_SDL2) set(USE_SDL2_SHARED TRUE) endif() if(NOT ANDROID) - find_package(SDL2 REQUIRED) + #find_package(SDL2 REQUIRED) else() # provided by AndroidLibs.cmake endif() @@ -246,16 +246,16 @@ if(USE_SDL2) #error\n\ #endif\n\ int main() {}" CHECK_SDL_VERSION) - if(NOT CHECK_SDL_VERSION) - message(FATAL_ERROR "SDL2 is too old, required is at least 2.0.10!") - endif() + #if(NOT CHECK_SDL_VERSION) + # message(FATAL_ERROR "SDL2 is too old, required is at least 2.0.10!") + #endif() # ...no target either. - if(NOT TARGET SDL2::SDL2) - add_library(SDL2::SDL2 SHARED IMPORTED) - set_target_properties(SDL2::SDL2 PROPERTIES - IMPORTED_LOCATION "${SDL2_LIBRARIES}") - endif() + #if(NOT TARGET SDL2::SDL2) + # add_library(SDL2::SDL2 SHARED IMPORTED) + # set_target_properties(SDL2::SDL2 PROPERTIES + # IMPORTED_LOCATION "${SDL2_LIBRARIES}") + #endif() endif() # More special config @@ -583,8 +583,9 @@ target_link_libraries(IrrlichtMt PRIVATE ${ZLIB_LIBRARY} ${JPEG_LIBRARY} ${PNG_LIBRARY} - "$<$:SDL2::SDL2>" - "$<$:SDL2::SDL2-static>" + ${SDL2_LIBRARIES} + #"$<$:SDL2::SDL2>" + #"$<$:SDL2::SDL2-static>" "$<$:${OPENGL_LIBRARIES}>" ${EGL_LIBRARY} diff --git a/src/client/client.cpp b/src/client/client.cpp index b1dfa5993..aec96371c 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -1808,10 +1808,12 @@ void Client::showUpdateProgressTexture(void *args, u32 progress, u32 max_progres if (do_draw) { targs->last_time_ms = time_ms; +#if !defined(__redox__) std::wostringstream strm; strm << targs->text_base << L" " << targs->last_percent << L"%..."; m_rendering_engine->draw_load_screen(strm.str(), targs->guienv, targs->tsrc, 0, 72 + (u16) ((18. / 100.) * (double) targs->last_percent)); +#endif } } diff --git a/src/porting.cpp b/src/porting.cpp index 711b65db6..32520eef9 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -25,7 +25,7 @@ #if !defined(_WIN32) #include #include - #if !defined(__ANDROID__) + #if !defined(__ANDROID__) && !defined(__redox__) #include #endif #endif @@ -883,7 +883,7 @@ static bool open_uri(const std::string &uri) const char *argv[] = {"open", uri.c_str(), NULL}; return posix_spawnp(NULL, "open", NULL, NULL, (char**)argv, (*_NSGetEnviron())) == 0; -#else +#elif !defined(__redox__) const char *argv[] = {"xdg-open", uri.c_str(), NULL}; return posix_spawnp(NULL, "xdg-open", NULL, NULL, (char**)argv, environ) == 0; #endif diff --git a/src/porting.h b/src/porting.h index 1a4bb9e7b..cc252f3e1 100644 --- a/src/porting.h +++ b/src/porting.h @@ -162,6 +162,12 @@ inline void os_get_clock(struct timespec *ts) # endif struct timeval tv; gettimeofday(&tv, NULL); +#ifndef TIMEVAL_TO_TIMESPEC +#define TIMEVAL_TO_TIMESPEC(tv, ts) ( \ + (ts)->tv_sec = (tv)->tv_sec, \ + (ts)->tv_nsec = (tv)->tv_usec * 1000, \ + (void)0 ) +#endif TIMEVAL_TO_TIMESPEC(&tv, ts); #endif } diff --git a/src/server.cpp b/src/server.cpp index 3c03e68a6..4825bcd62 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -245,10 +245,14 @@ void Server::ShutdownState::tick(float dtime, Server *server) std::wstring Server::ShutdownState::getShutdownTimerMessage() const { +#if defined(__redox__) + return L""; +#else std::wstringstream ws; ws << L"*** Server shutting down in " << duration_to_string(myround(m_timer)).c_str() << "."; return ws.str(); +#endif } /* @@ -3180,11 +3184,15 @@ std::wstring Server::handleChat(const std::string &name, if (player) { switch (player->canSendChatMessage()) { case RPLAYER_CHATRESULT_FLOODING: { +#if defined(__redox__) + return L""; +#else std::wstringstream ws; ws << L"You cannot send more messages. You are limited to " << g_settings->getFloat("chat_message_limit_per_10sec") << L" messages per 10 seconds."; return ws.str(); +#endif } case RPLAYER_CHATRESULT_KICK: DenyAccess(player->getPeerId(), SERVER_ACCESSDENIED_CUSTOM_STRING, diff --git a/src/threading/thread.cpp b/src/threading/thread.cpp index 679eaa113..59dc8cc63 100644 --- a/src/threading/thread.cpp +++ b/src/threading/thread.cpp @@ -332,7 +332,7 @@ bool Thread::setPriority(int prio) return SetThreadPriority(win32_native_handle(), prio); -#else +#elif !defined(__redox__) struct sched_param sparam; int policy; diff --git a/src/translation.cpp b/src/translation.cpp index 71469507d..ecb9d1b52 100644 --- a/src/translation.cpp +++ b/src/translation.cpp @@ -126,6 +126,7 @@ void Translations::loadTrTranslation(const std::string &data) // '\n' may also be escaped by '@'. // All other escapes are preserved. +#if !defined(__redox__) size_t i = 0; std::wostringstream word1, word2; while (i < wline.length() && wline[i] != L'=') { @@ -192,6 +193,7 @@ void Translations::loadTrTranslation(const std::string &data) } addTranslation(textdomain, word1.str(), word2.str()); +#endif } } @@ -341,12 +343,14 @@ void Translations::loadPoEntry(const std::wstring &basefilename, const GettextPl addTranslation(textdomain, original, translated->second); } else { std::vector translations; + #if !defined(__redox__) for (int i = 0; ; i++) { auto translated = entry.find(L"msgstr[" + std::to_wstring(i) + L"]"); if (translated == entry.end()) break; translations.push_back(translated->second); } + #endif addPluralTranslation(textdomain, plural_form, original, translations); addPluralTranslation(textdomain, plural_form, plural->second, translations); } diff --git a/src/unittest/test_serialization.cpp b/src/unittest/test_serialization.cpp index 839a09060..9cbcc056d 100644 --- a/src/unittest/test_serialization.cpp +++ b/src/unittest/test_serialization.cpp @@ -61,15 +61,21 @@ template std::string mkstr(const char (&s)[N]) void TestSerialization::buildTestStrings() { std::ostringstream tmp_os; +#if !defined(__redox__) std::wostringstream tmp_os_w; +#endif std::ostringstream tmp_os_w_encoded; for (int i = 0; i < 256; i++) { tmp_os << (char)i; +#if !defined(__redox__) tmp_os_w << (wchar_t)i; +#endif tmp_os_w_encoded << (char)0 << (char)i; } teststring2 = tmp_os.str(); +#if !defined(__redox__) teststring2_w = tmp_os_w.str(); +#endif teststring2_w_encoded = tmp_os_w_encoded.str(); } diff --git a/src/util/string.cpp b/src/util/string.cpp index aeec51cb8..411bdc84a 100644 --- a/src/util/string.cpp +++ b/src/util/string.cpp @@ -721,7 +721,9 @@ static void translate_string(std::wstring_view s, Translations *translations, continue; } output += L'@'; + #if !defined (__redox__) output += std::to_wstring(arg_number); + #endif ++arg_number; std::wstring arg; translate_all(s, i, translations, arg); diff --git a/src/util/string.h b/src/util/string.h index 78881a9a4..f5a6ed95a 100644 --- a/src/util/string.h +++ b/src/util/string.h @@ -325,7 +325,7 @@ inline bool my_isspace(const char c) inline bool my_isspace(const wchar_t c) { - return std::iswspace(c); + return ::iswspace(c); } /** ================================================ FILE: recipes/wip/games/engines/odamex/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/odamex/odamex#compilation-instructions [source] tar = "https://github.com/odamex/odamex/releases/download/11.2.0/odamex/odamex-src-11.2.0.tar.xz" [build] template = "cmake" cmakeflags = [ "-DBUILD_SERVER=0", "-DBUILD_CLIENT=1", "-DBUILD_LAUNCHER=1", ] dependencies = [ "sdl2", "sdl2-mixer", "libpng", "zlib", "wxwidgets-gtk3", ] [package] dependencies = ["deutex"] ================================================ FILE: recipes/wip/games/engines/openlara/assets/README.md ================================================ To make assets working, purchase from https://www.gog.com/en/game/tomb_raider_123, then add 'audio', 'level', and 'video' to this folder. Additional info can be read from https://github.com/XProger/OpenLara/pull/414/files ================================================ FILE: recipes/wip/games/engines/openlara/recipe.toml ================================================ #TODO: Compiled, not tested further [source] git = "https://github.com/XProger/OpenLara" [build] template = "custom" dependencies = [ "sdl2", ] script = """ DYNAMIC_INIT SRC="${COOKBOOK_SOURCE}/src" mkdir -p "${COOKBOOK_STAGE}/usr/games/OpenLara" ${CXX} "-I${COOKBOOK_SYSROOT}/include" "-I$SRC/" ${LDFLAGS} -DSDL2_GLES -D_GAPI_GLES2 -std=c++11 \ -O3 -fno-exceptions -fno-rtti -ffunction-sections -fdata-sections -Wl,--gc-sections -DNDEBUG -D__SDL2__ \ -dynamic -lSDL2 -lGLESv2 -lEGL $("${PKG_CONFIG}" --libs osmesa) -o OpenLara \ $SRC/platform/sdl2/main.cpp "$SRC/libs/stb_vorbis/stb_vorbis.c" "$SRC/libs/minimp3/minimp3.cpp" "$SRC/libs/tinf/tinflate.c" cp -rv "${COOKBOOK_RECIPE}/assets" "${COOKBOOK_STAGE}/usr/games/sdl2_gears/" cp OpenLara ${COOKBOOK_STAGE}/usr/games/OpenLara/OpenLara """ ================================================ FILE: recipes/wip/games/engines/opentomb/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/opentomb/OpenTomb#compiling [source] git = "https://github.com/opentomb/OpenTomb" [build] template = "cmake" dependencies = [ "sdl2", "libpng", "zlib", "openal", "mesa", ] ================================================ FILE: recipes/wip/games/engines/rbdoom3-bfg/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/RobertBeckebans/RBDOOM-3-BFG#compiling-on-linux- #TODO require the Vulkan SDK, see https://vulkan.lunarg.com/ [source] git = "https://github.com/RobertBeckebans/RBDOOM-3-BFG" rev = "39ae1202b4e61ccb8d8e59609f5cd62b04a62a58" [build] template = "cmake" dependencies = [ "sdl2", "openal", "ffmpeg6", "libvulkan", ] ================================================ FILE: recipes/wip/games/engines/room4doom/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/flukejones/room4doom" [build] template = "custom" dependencies = [ "sdl2", "sdl2-mixer" ] script = """ cookbook_cargo_packages room4doom """ ================================================ FILE: recipes/wip/games/engines/rust-doom/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/hovinen/rust-doom" [build] template = "custom" script = """ cookbook_cargo mv "${COOKBOOK_STAGE}/usr/bin/rs_doom" "${COOKBOOK_STAGE}/usr/bin/doom-rs" """ ================================================ FILE: recipes/wip/games/engines/shockolate/recipe.toml ================================================ #TODO something wrong with keyboard input [source] git = "https://github.com/Interrupt/systemshock" [build] template = "custom" dependencies = [ "libogg", "liborbital", "libvorbis", "mesa", "sdl2", "sdl2-mixer", "zlib", ] script = """ DYNAMIC_INIT COOKBOOK_CMAKE_FLAGS+=( -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include -I${COOKBOOK_SYSROOT}/include/SDL2" -DENABLE_FLUIDSYNTH=OFF -DENABLE_SDL2=ON -DENABLE_SOUND=ON -DOPENGL_INCLUDE_DIR="${COOKBOOK_SYSROOT}" -DOPENGL_opengl_LIBRARY="-lgl" -DOPENGL_glx_LIBRARY="-lglx" -DSDL2_MIXER_LIBRARIES="-lSDL2_mixer -lvorbisfile -lvorbis -logg -lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa)" ) cookbook_cmake mkdir -pv "${COOKBOOK_STAGE}/home/user/systemshock" cp -v systemshock "${COOKBOOK_STAGE}/home/user/systemshock/systemshock" cp -rv "${COOKBOOK_SOURCE}/shaders" "${COOKBOOK_STAGE}/home/user/systemshock/shaders" """ [package] dependencies = [ ] ================================================ FILE: recipes/wip/games/engines/uzdoom/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minumum dependencies from cmake log # build instructions: https://github.com/UZDoom/UZDoom/wiki/Compilation#linux [source] git = "https://github.com/UZDoom/UZDoom" branch = "4.14.3" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DHAVE_VULKAN=OFF", "-DHAVE_GLES2=OFF", ] dependencies = [ "sdl2", #"mesa", #"mesa-glu", "openal", "bzip2", "openmp", #"libvpx", #"libwebp", #"zmusic", ] ================================================ FILE: recipes/wip/games/engines/vkquake/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Novum/vkQuake#linux-1 [source] git = "https://github.com/Novum/vkQuake" [build] template = "meson" dependencies = [ "sdl2", "libvulkan", "libvorbis", "libmad", ] ================================================ FILE: recipes/wip/games/engines/vkquake2/recipe.toml ================================================ #TODO missing script for gnu make # build instructions: https://github.com/kondrak/vkQuake2#linux [source] git = "https://github.com/kondrak/vkQuake2" rev = "bdd39b142fbadf581fd9d904968a83fb9b4a929a" [build] template = "custom" dependencies = [ "mesa-x11", ] ================================================ FILE: recipes/wip/games/engines/xash3d-fwgs/recipe.toml ================================================ #TODO missing script for waf, see https://github.com/FWGS/xash3d-fwgs#build-instructions [source] git = "https://github.com/FWGS/xash3d-fwgs" [build] template = "custom" dependencies = [ "sdl2", "fontconfig", "freetype2", ] ================================================ FILE: recipes/wip/games/engines/yquake2/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/yquake2/yquake2/blob/master/doc/020_installation.md#compiling-with-gcc-clang-or-mingw [source] tar = "https://deponie.yamagi.org/quake2/quake2-8.30.tar.xz" [build] template = "custom" dependencies = [ "mesa", "openal", "curl", "sdl2", ] ================================================ FILE: recipes/wip/games/fps/assaultcube/recipe.toml ================================================ #TODO missing script for gnu make # build instructions: https://wiki.cubers.net/action/view/Linux_Support#Compiling_AssaultCube [source] git = "https://github.com/assaultcube/AC" rev = "v1.3.0.2" [build] template = "configure" dependencies = [ "sdl1", "sdl1-image", "openal", "libogg", "zlib", "curl", "libvorbis", ] ================================================ FILE: recipes/wip/games/fps/betterspades/recipe.toml ================================================ #TODO not compiled or tested #TODO probably missing dependencies, see https://github.com/xtreme8000/BetterSpades#build-requirements # build instructions: https://github.com/xtreme8000/BetterSpades#linux [source] git = "https://github.com/xtreme8000/BetterSpades" [build] template = "cmake" dependencies = [ "glfw3", "openal", "libenet", "libdeflate", "glew", "mesa", ] ================================================ FILE: recipes/wip/games/fps/et-legacy/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/etlegacy/etlegacy#compile-and-install [source] git = "https://github.com/etlegacy/etlegacy" rev = "v2.83.2" shallow_clone = true [build] template = "cmake" dependencies = [ "sdl2", "openssl1", "mesa", ] ================================================ FILE: recipes/wip/games/fps/openarena/recipe.toml ================================================ #TODO missing script for building, lacking build instructions #TODO what is game code? - http://files.poulsander.com/~poul19/public_files/oa/dev088/oa-0.8.8.tar.bz2 [source] tar = "http://files.poulsander.com/~poul19/public_files/oa/dev088/openarena-engine-source-0.8.8.tar.bz2" [build] template = "custom" dependencies = [ "sdl1", "openal", "libvorbis", "mesa", ] ================================================ FILE: recipes/wip/games/fps/openspades-free/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/yvt/openspades#on-unixes-from-source [source] git = "https://github.com/yvt/openspades" shallow_clone = true [build] template = "custom" dependencies = [ "glew", "openssl3", "sdl2", "sdl2-image", "freealut", "freetype2", "opus", "opusfile", "libjpeg", "openal", "curl", "libxinerama", "libxft", ] script = """ DYNAMIC_INIT COOKBOOK_CMAKE_FLAGS+=( -DOPENSPADES_NONFREE_RESOURCES=OFF ) cookbook_cmake wget https://github.com/DeathByDenim/openspades-free-pak/releases/download/latest/pak001-Free.pak \ "${COOKBOOK_STAGE}"/usr/share/openspades/Resources """ ================================================ FILE: recipes/wip/games/fps/openspades-free-pak/recipe.toml ================================================ [source] git = "https://github.com/DeathByDenim/openspades-free-pak" shallow_clone = true [build] template = "custom" script = """ zip -r pak001-Free.pak "${COOKBOOK_SOURCE}"/* mkdir -p ${COOKBOOK_STAGE}/usr/share/openspades/Resources cp pak001-Free.pak ${COOKBOOK_STAGE}/usr/share/openspades/Resources/ """ ================================================ FILE: recipes/wip/games/fps/smokin-guns/recipe.toml ================================================ #TODO missing script for "make", see https://trac.smokin-guns.org/wiki/SmokinGuns/Building/linux #TODO bundled with the ioquake3 engine? #TODO determine dependencies [source] git = "https://github.com/smokin-guns/SmokinGuns" [build] template = "custom" ================================================ FILE: recipes/wip/games/fps/unvanquished/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/DaemonEngine/Daemon#build-instructions # data files - https://github.com/Unvanquished/Unvanquished#downloading-the-games-assets [source] git = "https://github.com/DaemonEngine/Daemon" [build] template = "custom" dependencies = [ "zlib", "libgmp", "libnettle", "curl", "sdl2", "glew", "libpng", "libjpeg", "libwebp", "freetype", "openal", "libogg", "libvorbis", "opus", "opusfile", ] script = """ DYNAMIC_INIT cookbook_cmake """ ================================================ FILE: recipes/wip/games/fps/xonotic/recipe.toml ================================================ #TODO missing script for "make", see https://gitlab.com/xonotic/xonotic/-/wikis/Compiling [source] git = "https://gitlab.com/xonotic/xonotic" rev = "0100f2c8d7947267292db66714c1af55039809ad" [build] template = "custom" dependencies = [ "libgmp", "sdl2", "libjpeg", "libpng", "freetype2", "libogg", "libvorbis", "curl", "rsync", ] ================================================ FILE: recipes/wip/games/fps/zerospades-free/recipe.toml ================================================ #TODO dependency conflict. Glew wants GLX but mesa uses orbital backend. # build instructions: https://github.com/yvt/openspades#on-unixes-from-source [source] git = "https://github.com/siecvi/zerospades" shallow_clone = true patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "glew", "openssl3", "sdl2", "sdl2-image", "freealut", "freetype2", "libopus", "opusfile", "libjpeg", "openal", "curl", # "libxinerama", # "libxft", ] dev-dependencies = [ "libstdcxx", ] script = """ DYNAMIC_INIT export LDFLAGS+=" $("${PKG_CONFIG}" --libs osmesa)" COOKBOOK_CMAKE_FLAGS+=( -DOPENSPADES_NONFREE_RESOURCES=OFF -DUSE_INTERNAL_OPENAL=OFF ) cookbook_cmake """ [package] dependencies = [ "openspades-free-pak" ] ================================================ FILE: recipes/wip/games/fps/zerospades-free/redox.patch ================================================ diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f59b92..9f98ab9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -145,7 +145,7 @@ if(CMAKE_COMPILER_IS_GNUCXX) if(CMAKE_BUILD_TYPE MATCHES "Release") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") - set(CMAKE_EXE_LINKER_FLAGS "-s") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s") endif() elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") diff --git a/Sources/Audio/ALFuncs.cpp b/Sources/Audio/ALFuncs.cpp index 92c63f5..1eff792 100644 --- a/Sources/Audio/ALFuncs.cpp +++ b/Sources/Audio/ALFuncs.cpp @@ -271,7 +271,8 @@ namespace al { } void Link(void) { -#ifdef OPENAL_SOFT +// redox: weak link errors +#ifndef OPENAL_SOFT SPLog("Using OpenAL Soft - direct linking, initializing function pointers."); // Directly assign function pointers to OpenAL Soft functions qalEnable = alEnable; diff --git a/Sources/CMakeLists.txt b/Sources/CMakeLists.txt index 4438506..46ace0a 100644 --- a/Sources/CMakeLists.txt +++ b/Sources/CMakeLists.txt @@ -181,8 +181,8 @@ endif() if(WIN32) target_link_libraries(OpenSpades ws2_32.lib winmm.lib) -elseif(UNIX AND NOT APPLE) - target_link_libraries(OpenSpades Xext) +#elseif(UNIX AND NOT APPLE) +# target_link_libraries(OpenSpades Xext) endif() if(UNIX) diff --git a/openal-soft b/openal-soft --- a/openal-soft +++ b/openal-soft @@ -1 +1 @@ ================================================ FILE: recipes/wip/games/math/binbreak/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/epic-64/binbreak" [build] template = "cargo" ================================================ FILE: recipes/wip/games/math/cosmic-ext-2048/recipe.toml ================================================ #TODO zbus crate error [source] git = "https://github.com/Kartonrealista/cosmic-ext-2048" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons cp -rv "${COOKBOOK_SOURCE}"/res/io.github.Kartonrealista.cosmic-ext-2048.desktop "${COOKBOOK_STAGE}"/usr/share/applications cp -rv "${COOKBOOK_SOURCE}"/res/io.github.Kartonrealista.cosmic-ext-2048.metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo cp -rv "${COOKBOOK_SOURCE}"/res/icons/hicolor "${COOKBOOK_STAGE}"/usr/share/icons cookbook_cargo """ ================================================ FILE: recipes/wip/games/math/sudoku-rs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/crazymerlyn/sudoku" [build] template = "cargo" ================================================ FILE: recipes/wip/games/math/tuxmath/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/tux4kids/tuxmath/blob/master/doc/INSTALL [source] git = "https://github.com/tux4kids/tuxmath" shallow_clone = true script = """ DYNAMIC_INIT autotools_recursive_regenerate """ [build] template = "configure" dependencies = [ "t4kcommon", "sdl1", "sdl1-image", "sdl1-mixer", "sdl1-ttf", "sdl2-net", "sdl-pango", "librsvg", ] ================================================ FILE: recipes/wip/games/music/performous/recipe.toml ================================================ #TODO not compiled or tested # build instructions - https://github.com/performous/performous/wiki/Building-and-installing-from-source#build-and-install # dependencies - https://github.com/performous/performous/wiki/Building-and-installing-from-source#installing-build-dependencies [source] git = "https://github.com/performous/performous" branch = "1.3.1" [build] template = "cmake" dependencies = [ "openblas", "fftw", "libicu", "libepoxy", "sdl2", "freetype2", "pango", "librsvg", "libxml2", "ffmpeg6", "libjpeg", "portaudio", "boost", "nlohmann-json", "aubio", "libfmt", ] ================================================ FILE: recipes/wip/games/music/performous-composer/recipe.toml ================================================ #TODO not compiled or tested # build instructions - https://github.com/performous/performous/wiki/Composer [source] git = "https://github.com/performous/composer" [build] template = "cmake" dependencies = [ "qt5-base", "ffmpeg6", ] ================================================ FILE: recipes/wip/games/music/stepmania/recipe.toml ================================================ #TODO not compiled or tested # build instructions - https://github.com/stepmania/stepmania/wiki/Compiling-StepMania-Linux # dependencies - https://github.com/stepmania/stepmania/wiki/Linux-Dependencies [source] git = "https://github.com/stepmania/stepmania" [build] template = "cmake" dependencies = [ "mesa", "mesa-glu", "glew", "libx11", "libxtst", "libxrandr", "libpng", "libjpeg", "zlib", "bzip2", "libogg", "libvorbis", "pulseaudio", "libiberty", "gtk3", "libmad", ] ================================================ FILE: recipes/wip/games/open-world/all-is-cubes/recipe.toml ================================================ #TODO require rustc 1.87 or newer [source] git = "https://github.com/kpreid/all-is-cubes" [build] template = "custom" script = """ cookbook_cargo_packages all-is-cubes-desktop """ ================================================ FILE: recipes/wip/games/open-world/asciicker/recipe.toml ================================================ #TODO missing script for gnu make #TODO build the game, term and server #TODO build the terminal and sdl2 frontends # makeflags: -DSERVER -DGAME -DUSE_SDL2 -DPURE_TERM -DUSE_GPM [source] git = "https://github.com/msokalski/asciicker" rev = "8ff75d0c5a8d2745a8ad6a8a841dd31a46e81635" [build] template = "custom" dependencies = [ "mesa", "sdl2", "libgpm", ] ================================================ FILE: recipes/wip/games/open-world/cytopia/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/CytopiaTeam/Cytopia/wiki/Build-instructions [source] git = "https://github.com/CytopiaTeam/Cytopia" [build] template = "cmake" dependencies = [ "sdl2", "sdl2-ttf", "sdl2-image", "openal", "zlib", "libogg", "libvorbis", "libpng", "libnoise", "imgui", ] ================================================ FILE: recipes/wip/games/open-world/cytopia-rs/recipe.toml ================================================ #TODO compilation error [source] git = "https://codeberg.org/Esther1024/pia-fork" [build] template = "cargo" ================================================ FILE: recipes/wip/games/open-world/ethertia/recipe.toml ================================================ #TODO webbrowser crate error [source] git = "https://github.com/Dreamtowards/Ethertum" [build] template = "cargo" ================================================ FILE: recipes/wip/games/open-world/leafish/recipe.toml ================================================ #TODO make gtk3 work [source] git = "https://github.com/Lea-fish/Leafish" [build] template = "cargo" dependencies = [ "gtk3", "openssl1", ] ================================================ FILE: recipes/wip/games/open-world/teloren/recipe.toml ================================================ #TODO quinn-udp crate error [source] git = "https://github.com/zesterer/teloren" [build] template = "cargo" ================================================ FILE: recipes/wip/games/open-world/veloren/recipe.toml ================================================ #TODO quinn-udp crate error [source] git = "https://github.com/veloren/veloren" shallow = true [build] template = "cargo" package_path="client" dependencies = [ "glib", "cairo", "pango", "atk", "gdk-pixbuf", "gtk3", "eudev", "mesa", ] ================================================ FILE: recipes/wip/games/other/blightmud/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Blightmud/Blightmud" [build] template = "cargo" dependencies = [ "openssl3", "libalsa", ] ================================================ FILE: recipes/wip/games/other/mudlet/recipe.toml ================================================ #TODO missing dependencies # build instructions: https://wiki.mudlet.org/w/Compiling_Mudlet [source] git = "https://github.com/Mudlet/Mudlet" branch = "release-4.19" [build] template = "cmake" dependencies = [ "zlib", "pcre2", "libzip", "hunspell", "boost", "libpulse", "glib", "mesa-glu", "mesa", "libpugixml", "gstreamer", "qt6-multimedia", "qt6-tools", "qt6-speech", "zstd", ] ================================================ FILE: recipes/wip/games/other/oxycards/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/BrookJeynes/oxycards" [build] template = "cargo" ================================================ FILE: recipes/wip/games/other/rust-sadari-cli/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/24seconds/rust-sadari-cli" [build] template = "cargo" ================================================ FILE: recipes/wip/games/other/rustorio/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/albertsgarde/rustorio" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages rustorio """ ================================================ FILE: recipes/wip/games/other/sandbox-rs1/recipe.toml ================================================ #TODO make dependencies work [source] git = "https://github.com/hakolao/sandbox" [build] template = "custom" dependencies = [ "libvulkan", "libxcb", ] script = """ cookbook_cargo_packages sandbox """ ================================================ FILE: recipes/wip/games/other/slint-tetris/recipe.toml ================================================ #TODO outdated proc-macro2 crate [source] git = "https://github.com/GaspardCulis/slint-tetris" [build] template = "cargo" ================================================ FILE: recipes/wip/games/other/sshattrick/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ricott1/sshattrick" [build] template = "cargo" ================================================ FILE: recipes/wip/games/other/terdle/recipe.toml ================================================ #TODO signal-hook and libc crate errors [source] git = "https://github.com/neelkarma/terdle" [build] template = "cargo" ================================================ FILE: recipes/wip/games/other/tetromino/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/d-e-s-o/tetromino" [build] template = "cargo" ================================================ FILE: recipes/wip/games/other/tintin/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/scandum/tintin/releases/download/2.02.51/tintin-2.02.51.tar.gz" [build] template = "configure" dependencies = [ "zlib", "pcre2", #"gnutls3", # optional ] ================================================ FILE: recipes/wip/games/other/turdle/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/weiteck/turdle" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/games/other/unvanquished-benchmarks/recipe.toml ================================================ #TODO missing script for installation, probably data files [source] tar = "https://dl.unvanquished.net/benchmark/demos/unvanquished-benchmark_0.54.0.dm_86.xz" [build] template = "custom" ================================================ FILE: recipes/wip/games/other/uqm/recipe.toml ================================================ #TODO download game data - https://sourceforge.net/projects/sc2/files/UQM/0.8/uqm-0.8.0-content.uqm/download #TODO missing script, read the INSTALL file inside the tarball [source] tar = "https://sourceforge.net/projects/sc2/files/UQM/0.8/uqm-0.8.0-src.tgz/download" [build] template = "custom" dependencies = [ "sdl2", "libpng", "libogg", "libvorbis", "zlib", ] ================================================ FILE: recipes/wip/games/other/vong/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/simbleau/vong" [build] template = "cargo" ================================================ FILE: recipes/wip/games/other/vvvvvv/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/xTibor/VVVVVV" upstream = "https://github.com/TerryCavanagh/VVVVVV" branch = "redox" script = "COOKBOOK_SOURCE=${COOKBOOK_SOURCE}/desktop_version" [build] dependencies = [ "sdl2-image", "sdl2-mixer", "sdl2", "liborbital", "mesa", "mesa-glu", "zlib", "libogg", "libvorbis", ] template = "custom" script = """ COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/desktop_version" cookbook_cmake \ -DSDL2_INCLUDE_DIRS="${COOKBOOK_SYSROOT}/include/SDL2" \ -DSDL2_LIBRARIES="-lSDL2main -lSDL2_mixer -lSDL2 $(${TARGET}-pkg-config --libs glu) -lorbital -lz -lvorbisfile -lvorbis -logg" """ ================================================ FILE: recipes/wip/games/other/wesnoth/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/wesnoth/wesnoth" branch = "1.14.6" [build] template = "cmake" cmakeflags = [ "-DCMAKE_TRY_COMPILE_TARGET_TYPE=DYNAMIC_LIBRARY", "-DENABLE_SERVER=OFF", "-DENABLE_TESTS=OFF" "-DCRYPTO_LIBRARY=openssl", "-DSDL2_LIBRARY=sdl2", "-DSDL2_IMAGE_LIBRARY=SDL2_image", "-DSDL2_MIXER_LIBRARY=SDL2_mixer", "-DSDL2_TTF_LIBRARY=SDL2_ttf", "-DVORBISFILE_INCLUDE_DIR=${COOKBOOK_SYSROOT}/include", "-DVORBISFILE_LIBRARY=vorbisfile ..", ] dependencies = [ "cairo", "freetype2", "glib", "libjpeg", "liborbital", "libpng", "libvorbis", "mesa", "mesa-glu", "pcre", "pixman", "sdl2", "sdl2-image", "sdl2-mixer", "sdl2-ttf", "zlib", ] ================================================ FILE: recipes/wip/games/platform/irrlamb/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://gitlab.com/jazztickets/uploads/-/raw/main/irrlamb-1.0.7-d99c154-src.tar.gz" [build] template = "cmake" dependencies = [ "openal", "libvorbis", "libogg", "libjpeg", "libpng", "freetype2", "sqlite3", "zlib", ] ================================================ FILE: recipes/wip/games/platform/supertux/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/SuperTux/supertux/blob/master/INSTALL.md#compiling [source] tar = "https://github.com/SuperTux/supertux/releases/download/v0.7.0-beta.1/SuperTux-v0.7.0-beta.1-Source.tar.gz" [build] template = "cmake" cmakeflags = [ "-DENABLE_OPENGL=OFF", "-DUSE_SYSTEM_SDL2_TTF=ON", ] dependencies = [ "sdl2", "sdl2-image", "sdl2-ttf", "zlib", "libpng", "freetype2", "libfmt", "libcurl", "openal", "libogg", "libvorbis", "physicsfs", ] ================================================ FILE: recipes/wip/games/puzzle/conduit/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/WizCrab/conduit-cli-game" [build] template = "cargo" ================================================ FILE: recipes/wip/games/puzzle/crosstui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/matrixfrog/crossword" [build] template = "custom" script = """ cookbook_cargo_packages crosstui """ [package] dependencies = [ "crosshare-data" ] ================================================ FILE: recipes/wip/games/puzzle/setrixtui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Mjoyufull/Setrixtui" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/games/racing/q3rally/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/Q3Rally-Team/q3rally/blob/master/engine/README.md [source] git = "https://github.com/Q3Rally-Team/q3rally" [build] template = "custom" dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/games/racing/supertuxkart/recipe.toml ================================================ #TODO requires ifaddrs.h # build instructions: https://github.com/supertuxkart/stk-code/blob/master/INSTALL.md#compiling [source] tar = "https://github.com/supertuxkart/stk-code/releases/download/1.5/SuperTuxKart-1.5-src.tar.gz" patches = ["redox.patch"] [build] template = "cmake" cmakeflags = [ "-DNO_SHADERC=ON", "-DUSE_WIIUSE=OFF", "-DUSE_DNS_C=ON", "-DBUILD_RECORDER=OFF", "-DPTHREAD_LIBRARY=/dev/null" ] dependencies = [ "openal", "libogg", "libvorbis", "freetype2", "harfbuzz", "curl", "openssl3", "libpng", "zlib", "libjpeg", "sdl2", ] ================================================ FILE: recipes/wip/games/racing/supertuxkart/redox.patch ================================================ diff -ruwN source/src/guiengine/widgets/spinner_widget.cpp source-new/src/guiengine/widgets/spinner_widget.cpp --- source/src/guiengine/widgets/spinner_widget.cpp 2025-10-20 04:04:17.000000000 +0700 +++ source-new/src/guiengine/widgets/spinner_widget.cpp 2025-11-09 11:29:52.678400188 +0700 @@ -493,10 +493,7 @@ } else { - std::wstringstream ws; - ws << (m_value*m_step); - std::wstring text = ws.str(); - m_children[1].m_element->setText( text.c_str() ); + m_children[1].m_element->setText( stringw(m_value*m_step).c_str() ); } } } ================================================ FILE: recipes/wip/games/rpg/dcss/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/crawl/crawl/blob/master/crawl-ref/INSTALL.md#compiling [source] tar = "https://github.com/crawl/crawl/releases/download/0.33.1/stone_soup-0.33.1.tar.xz" [build] template = "custom" dependencies = [ "sdl2", "sdl2-image", "sqlite3", "ncurses", "pcre", "zlib", "libpng", ] script = """ DYNAMIC_INIT """ [package] dependencies = ["dejavu"] ================================================ FILE: recipes/wip/games/rpg/kingslayer/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Zaechus/kingslayer" [build] template = "cargo" ================================================ FILE: recipes/wip/games/rts/mindustry/recipe.toml ================================================ #TODO waiting openjdk x11 feature creation [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/bin" wget https://github.com/Anuken/Mindustry/releases/download/v146/Mindustry.jar "${COOKBOOK_STAGE}/usr/bin" echo "#!/usr/bin/env sh \n java -jar /usr/bin/Mindustry.jar" > "${COOKBOOK_STAGE}"/usr/bin/mindustry chmod a+x "${COOKBOOK_STAGE}"/usr/bin/mindustry """ [package] dependencies = ["openjdk17.x11"] ================================================ FILE: recipes/wip/games/rts/mindustry-beta/recipe.toml ================================================ #TODO waiting openjdk x11 feature creation [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/bin" wget https://github.com/Anuken/Mindustry/releases/download/v154.3/Mindustry.jar "${COOKBOOK_STAGE}/usr/bin" echo "#!/usr/bin/env sh \n java -jar /usr/bin/Mindustry.jar" > "${COOKBOOK_STAGE}"/usr/bin/mindustry chmod a+x "${COOKBOOK_STAGE}"/usr/bin/mindustry """ [package] dependencies = ["openjdk17.x11"] ================================================ FILE: recipes/wip/games/servers/cuberite/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/cuberite/cuberite/blob/master/COMPILING.md#building-1 [source] git = "https://github.com/cuberite/cuberite" [build] template = "cmake" ================================================ FILE: recipes/wip/games/shooter/asciiarena/recipe.toml ================================================ #TODO outdated mio crate [source] git = "https://github.com/lemunozm/asciiarena" [build] template = "cargo" ================================================ FILE: recipes/wip/games/shooter/call-of-ferris/recipe.toml ================================================ #TODO camino crate error (after a cargo update) [source] git = "https://github.com/Andy-Python-Programmer/CallOfFerris" [build] template = "cargo" ================================================ FILE: recipes/wip/games/shooter/empty-clip/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://gitlab.com/jazztickets/uploads/-/raw/main/emptyclip-2.0.3-0d97724f-src.tar.gz" [build] template = "cmake" dependencies = [ "sdl3", "libwebp", "sqlite3", "freetype2", "openal", "libvorbis", "libogg", "zlib", ] ================================================ FILE: recipes/wip/games/simulation/egregoria/recipe.toml ================================================ #TODO winit crate error [source] git = "https://github.com/Uriopass/Egregoria" [build] template = "custom" script = """ cookbook_cargo_packages native_app """ ================================================ FILE: recipes/wip/games/simulation/formicarium/recipe.toml ================================================ #TODO outdated libc crate [source] git = "https://github.com/gliderkite/formicarium" [build] template = "cargo" ================================================ FILE: recipes/wip/games/simulation/game-of-life-piston/recipe.toml ================================================ #TODO outdated libc crate [source] git = "https://github.com/Arcterus/game-of-life" [build] template = "cargo" ================================================ FILE: recipes/wip/games/simulation/game-of-life-rs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/kachark/game-of-life-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/games/simulation/nbodysim/recipe.toml ================================================ #TODO outdated crates [source] git = "https://github.com/timokoesters/nbodysim" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/nbodysim cp -rv "${COOKBOOK_SOURCE}"/examples/* "${COOKBOOK_STAGE}"/usr/share/nbodysim cookbook_cargo """ ================================================ FILE: recipes/wip/games/simulation/sandbox-rs2/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/JMS55/sandbox" [build] template = "cargo" ================================================ FILE: recipes/wip/games/simulation/symbiants/recipe.toml ================================================ #TODO the Bevy engine require rustc 1.76 or newer [source] git = "https://github.com/MeoMix/symbiants" [build] template = "cargo" ================================================ FILE: recipes/wip/games/space/endless-sky/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/endless-sky/endless-sky/blob/master/docs/readme-cmake.md#building-the-game [source] git = "https://github.com/endless-sky/endless-sky" rev = "95e72950e1554392666fa41bb18c978868aa6611" [build] template = "cmake" dependencies = [ "sdl2", "libpng", "libjpeg", "mesa", "glew", "openal", "libmad", "libuuid", ] ================================================ FILE: recipes/wip/games/space/naev/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/naev/naev/wiki/Compiling-on-*nix [source] tar = "https://github.com/naev/naev/releases/download/v0.10.6/naev-0.10.6-source.tar.xz" [build] template = "meson" dependencies = [ "sdl2", "sdl2-image", "libpng", "libxml2", "libwebp", "mesa", "openal", "openblas", "freetype2", "libvorbis", ] ================================================ FILE: recipes/wip/games/space/osirion/recipe.toml ================================================ #TODO make dependencies work # data files - http://osirion.org/files/osirion-0.2.8-data.zip [source] tar = "http://osirion.org/files/osirion-0.2.8-src.tar.bz2" [build] template = "configure" dependencies = [ "zlib", "bullet-physics", "libpng", "libjpeg", "sdl2", "openal", "libvorbis", ] ================================================ FILE: recipes/wip/games/space/outfly/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://codeberg.org/outfly/outfly" [build] template = "cargo" ================================================ FILE: recipes/wip/games/space/rebels-in-the-sky/recipe.toml ================================================ #TODO async-io and rustix crate error [source] git = "https://github.com/ricott1/rebels-in-the-sky" [build] template = "cargo" ================================================ FILE: recipes/wip/games/space/rust-belt/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/johnthagen/rust-belt" [build] template = "cargo" dependencies = [ "sdl2", "sdl2-mixer", ] ================================================ FILE: recipes/wip/games/strategy/0ad/recipe.toml ================================================ #TODO Missing script for a make build system, see https://trac.wildfiregames.com/wiki/BuildInstructions#Linux #TODO The Atlas editor needs to be disabled with the build option "--disable-atlas" to avoid GTK3 dependency (WxWidgetsGTK) #TODO Maybe needs to run update-workspaces.sh before #TODO Require recipes for SpiderMonkey and libicu (Unicode) [source] tar = "https://releases.wildfiregames.com/0ad-0.0.26-alpha-unix-build.tar.xz" [build] template = "custom" dependencies = [ "boost", "curl", "libenet", "libfmt", "libgloox", "libicu", "libogg", "libpng", "libsodium", "libvorbis", "libxml2", "miniupnpc", "openal", "sdl2", "zlib", "spidermonkey", ] ================================================ FILE: recipes/wip/games/strategy/asmfish/recipe.toml ================================================ #TODO missing script for building, see https://github.com/lantonov/asmFish#building [source] git = "https://github.com/lantonov/asmFish" [build] template = "custom" ================================================ FILE: recipes/wip/games/strategy/balatro-tui/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Passeriform/BalatroTUI" [build] template = "custom" script = """ cookbook_cargo_packages balatro_tui """ ================================================ FILE: recipes/wip/games/strategy/castle-game/recipe.toml ================================================ #TODO outdated crates [source] git = "https://github.com/tversteeg/castle-game" [build] template = "cargo" ================================================ FILE: recipes/wip/games/strategy/cell-graph-risk/recipe.toml ================================================ #TODO outdated libc crate [source] git = "https://github.com/PSteinhaus/Cell-Graph-Risk" [build] template = "cargo" ================================================ FILE: recipes/wip/games/strategy/chess-engine/recipe.toml ================================================ #TODO maybe wrong script [source] git = "https://github.com/adam-mcdaniel/chess-engine" [build] template = "custom" script = """ cookbook_cargo_packages chess-gui cookbook_cargo_examples terminal """ ================================================ FILE: recipes/wip/games/strategy/chess-tui/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/thomas-mauran/chess-tui" [build] template = "cargo" ================================================ FILE: recipes/wip/games/strategy/chessmd/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ChessMD/ChessMD" rev = "v1.0" [build] template = "cmake" dependencies = [ "qt6-base", ] ================================================ FILE: recipes/wip/games/strategy/draughts/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/tobagin/Draughts" rev = "v2.2.0" shallow_clone = true [build] template = "meson" mesonflags = [ "-Dtests=false", ] dependencies = [ "glib", "gtk4", "libadwaita", "libgee", "libsoup", "json-glib", ] dev-dependencies = ["host:blueprint"] ================================================ FILE: recipes/wip/games/strategy/hammurabi/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/stjepangolemac/hammurabi" [build] template = "cargo" ================================================ FILE: recipes/wip/games/strategy/hnefatafl-copenhagen/recipe.toml ================================================ # TODO: # 1. The CJK and runes fonts don't load. # 2. On a button press two characters are read in instead of one. # 3. Backspace does not work. # 4. TcpStream.shutdown() is not implemented. [source] git = "https://github.com/dcampbell24/hnefatafl" [build] template = "custom" script = """ "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/${COOKBOOK_CARGO_PATH}/Cargo.toml" \ --features client \ --release \ --no-default-features mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v "target/${TARGET}/release/hnefatafl-ai" "${COOKBOOK_STAGE}/usr/bin/hnefatafl-ai" cp -v "target/${TARGET}/release/hnefatafl-client" "${COOKBOOK_STAGE}/usr/bin/hnefatafl-client" cp -v "target/${TARGET}/release/hnefatafl-server" "${COOKBOOK_STAGE}/usr/bin/hnefatafl-server" cp -v "target/${TARGET}/release/hnefatafl-text-protocol" "${COOKBOOK_STAGE}/usr/bin/hnefatafl-text-protocol" mkdir -pv "${COOKBOOK_STAGE}"/usr/games mkdir -pv "${COOKBOOK_STAGE}"/usr/share/ui/apps mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons/apps cp -rv "${COOKBOOK_SOURCE}"/src/bin/hnefatafl-client/helmet.png "${COOKBOOK_STAGE}"/usr/share/icons/apps/helmet.png cp -rv "${COOKBOOK_SOURCE}"/packages/redox/manifest "${COOKBOOK_STAGE}"/usr/share/ui/apps/hnefatafl-client mv "${COOKBOOK_STAGE}"/usr/bin/hnefatafl-client "${COOKBOOK_STAGE}"/usr/games/hnefatafl-client """ [package] dependencies = [ "dejavu", "freefont", "noto-color-emoji", ] ================================================ FILE: recipes/wip/games/strategy/mazter/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Canop/mazter" [build] template = "cargo" ================================================ FILE: recipes/wip/games/strategy/minesweep-rs/recipe.toml ================================================ #TODO ratatui crate error [source] git = "https://github.com/cpcloud/minesweep-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/games/strategy/offline-chess-puzzles/recipe.toml ================================================ #TODO iced_winit crate error [source] git = "https://github.com/brianch/offline-chess-puzzles" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/games/strategy/rust-sudoku/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/xairy/rust-sudoku" [build] template = "cargo" ================================================ FILE: recipes/wip/games/strategy/rustoku/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/huangsam/rustoku" [build] template = "custom" script = """ cookbook_cargo_packages rustoku-cli """ ================================================ FILE: recipes/wip/games/strategy/ship-of-harkinian/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/HarbourMasters/Shipwright/blob/develop/docs/BUILDING.md#linux [source] git = "https://github.com/HarbourMasters/Shipwright" rev = "818addfdda660f6b4b54edd19636d6fd9d839f28" [build] template = "cmake" dependencies = [ "sdl2", "libpng", "glew", ] ================================================ FILE: recipes/wip/games/strategy/stockfish/recipe.toml ================================================ #TODO missing script for "make", see https://disservin.github.io/stockfish-docs/pages/Compiling-from-source.html [source] git = "https://github.com/official-stockfish/Stockfish" rev = "68e1e9b3811e16cad014b590d7443b9063b3eb52" [build] template = "custom" ================================================ FILE: recipes/wip/games/strategy/tage/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/jacopograndi/tage" [build] template = "cargo" ================================================ FILE: recipes/wip/games/strategy/tetris-demo/recipe.toml ================================================ #TODO outdated libc crate [source] git = "https://github.com/da-x/tetris-demo" [build] template = "cargo" ================================================ FILE: recipes/wip/games/strategy/tic-tac-toe-rs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/thomas-mauran/tic-tac-toe" [build] template = "cargo" ================================================ FILE: recipes/wip/games/strategy/warsow/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] tar = "https://warsow.net/warsow_21_sdk.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/games/syobonaction/01_redox.patch ================================================ diff -rupNw source-original/DxLib.cpp source/DxLib.cpp --- source-original/DxLib.cpp 2018-12-08 19:59:16.777579338 +0100 +++ source/DxLib.cpp 2018-12-08 02:13:39.541585079 +0100 @@ -24,7 +24,7 @@ int DxLib_Init() return -1; } - SDL_WM_SetCaption("Syobon Action (しょぼんのアクション)", + SDL_WM_SetCaption("Syobon Action", NULL); SDL_ShowCursor(SDL_DISABLE); diff -rupNw source-original/main.cpp source/main.cpp --- source-original/main.cpp 2018-12-08 19:59:16.781579399 +0100 +++ source/main.cpp 2018-12-08 18:11:33.716589712 +0100 @@ -1,9 +1,11 @@ #include "main.h" +#include // プログラムは WinMain から始まります //Changed to ansi c++ main() int main(int argc, char *argv[]) { + chdir("file:/share/syobonaction/"); parseArgs(argc, argv); if (DxLib_Init() == -1) return 1; diff -rupNw source-original/Makefile source/Makefile --- source-original/Makefile 2018-12-08 19:59:16.777579338 +0100 +++ source/Makefile 2018-12-08 01:32:40.319685337 +0100 @@ -1,8 +1,8 @@ SyobonAction:main.o loadg.o DxLib.o - gcc main.o loadg.o DxLib.o -o SyobonAction `sdl-config --libs` -lSDL_gfx -lSDL_image -lSDL_mixer -lSDL_ttf + ${CXX} ${LDFLAGS} main.o loadg.o DxLib.o -o SyobonAction `${SDL_CONFIG} --libs` -lSDL_gfx -lSDL_image -lSDL_mixer -lpng -ljpeg -lz -lSDL -lSDL_ttf -lfreetype -lvorbisfile -lvorbis -logg main.o:main.cpp - gcc -c main.cpp + ${CXX} ${CPPFLAGS} `${SDL_CONFIG} --cflags` -c main.cpp loadg.o:loadg.cpp - gcc -c loadg.cpp + ${CXX} ${CPPFLAGS} `${SDL_CONFIG} --cflags` -c loadg.cpp DxLib.o:DxLib.cpp - gcc -c DxLib.cpp + ${CXX} ${CPPFLAGS} `${SDL_CONFIG} --cflags` -c DxLib.cpp ================================================ FILE: recipes/wip/games/syobonaction/recipe.toml ================================================ [source] git = "https://github.com/angelXwind/OpenSyobonAction" patches = [ "01_redox.patch" ] [build] template = "custom" dependencies = [ "sdl1-mixer", "sdl1-image", "sdl-gfx", "sdl1-ttf", ] script = """ DYNAMIC_INIT export LDFLAGS="$LDFLAGS -lorbital" rsync -a --delete "${COOKBOOK_SOURCE}/" ./ make mkdir -pv "${COOKBOOK_STAGE}/usr/bin" mkdir -pv "${COOKBOOK_STAGE}/usr/share/syobonaction" cp -Rv ./SyobonAction "${COOKBOOK_STAGE}/usr/bin/syobonaction" cp -Rv ./BGM "${COOKBOOK_STAGE}/usr/share/syobonaction" cp -Rv ./res "${COOKBOOK_STAGE}/usr/share/syobonaction" cp -Rv ./SE "${COOKBOOK_STAGE}/usr/share/syobonaction" """ ================================================ FILE: recipes/wip/games/tools/deutex/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/Doom-Utils/deutex/releases/download/v5.2.3/deutex-5.2.3.tar.zst" [build] template = "configure" ================================================ FILE: recipes/wip/games/tools/oxyromon/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/alucryd/oxyromon" [build] template = "cargo" ================================================ FILE: recipes/wip/gnome/aisleriot/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/aisleriot/3.22/aisleriot-3.22.35.tar.xz" [build] template = "meson" mesonflags = [ "-Ddocs=false", "-Dsound=false", ] dependencies = [ "glib", "gtk3", "cairo", "libcanberra", "qt5-svg", "librsvg", ] ================================================ FILE: recipes/wip/gnome/brasero/recipe.toml ================================================ #TODO not compiled or tested #TODO missing dependencies: https://gitlab.gnome.org/GNOME/brasero/-/blob/master/README?ref_type=heads&plain=1#L64 [source] tar = "https://download.gnome.org/sources/brasero/3.12/brasero-3.12.3.tar.xz" [build] template = "configure" dependencies = [ "gtk3", "gstreamer", "libxml2", "cairo", "libcanberra", ] ================================================ FILE: recipes/wip/gnome/cheese/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions: https://gitlab.gnome.org/GNOME/cheese/-/blob/master/meson.build # probably missing dependencies [source] tar = "https://download.gnome.org/sources/cheese/44/cheese-44.1.tar.xz" [build] template = "meson" mesonflags = [ "-Dgtk_doc=false" ] dependencies = [ "gtk3", "glib", "gdk-pixbuf", "gstreamer", "libcanberra", "clutter", "clutter-gtk", "clutter-gst", "gnome-video-effects", ] ================================================ FILE: recipes/wip/gnome/evince/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/evince/48/evince-48.1.tar.xz" [build] template = "meson" mesonflags = [ "-Dgtk_doc=false", "-Duser_doc=false", "-Dintrospection=false", "-Ddbus=false", ] dependencies = [ "glib", "gtk4", "libadwaita", "cairo", "libxml2", "cairo", ] ================================================ FILE: recipes/wip/gnome/file-roller/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/file-roller#building-locally # the libportal dependency is for flatpak, maybe it's optional [source] tar = "https://download.gnome.org/sources/file-roller/44/file-roller-44.3.tar.xz" [build] template = "meson" dependencies = [ "glib", "gtk3", "libhandy", "libarchive", ] ================================================ FILE: recipes/wip/gnome/geary/recipe.toml ================================================ #TODO not compiled or tested #TODO require pts3 and pts5 support in sqlite: https://gitlab.gnome.org/GNOME/geary/-/blob/main/BUILDING.md#dependencies [source] tar = "https://download.gnome.org/sources/geary/46/geary-46.0.tar.xz" [build] template = "meson" mesonflags = [ "-Dprofile=release", "-Dlibunwind=disabled", "-Dtnef=disabled", "-Dvaladoc=disabled", ] dependencies = [ "gtk3", "webkitgtk3", "sqlite3", ] dev-dependencies = ["vala"] ================================================ FILE: recipes/wip/gnome/gimp/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from autotools log # build instructions: https://developer.gimp.org/core/setup/build/3.0/INSTALL # all build options: https://gitlab.gnome.org/GNOME/gimp/-/blob/master/meson_options.txt?ref_type=heads [source] tar = "https://download.gimp.org/gimp/v3.0/gimp-3.0.6.tar.xz" [build] template = "meson" mesonflags = [ "-Dcheck-update=no", "-Dlibbacktrace=false", "-Dlibunwind=false", "-Dprint=false", ] # dependencies = [ # "gtk3", # "gobject-introspection", # "glib", # "cairo", # "pango", # "liblcms", # "libmypaint", # "gexiv2", # "gegl", # "babl", # "librsvg", # "libtiff", # "libjpeg", # "libpng", # "fontconfig", # "freetype2", # "atk", # "harfbuzz", # "bzip2", # "zlib", # ] ================================================ FILE: recipes/wip/gnome/gnome-2048/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/GNOME/gnome-2048" shallow_clone = true [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/gnome/gnome-boxes/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from meson log [source] tar = "https://download.gnome.org/sources/gnome-boxes/49/gnome-boxes-49.1.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/gnome/gnome-builder/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from meson log # build instructions: https://builder.readthedocs.io/installation.html#via-release-tarball [source] tar = "https://download.gnome.org/sources/gnome-builder/49/gnome-builder-49.1.tar.xz" [build] template = "meson" mesonflags = [ "-Dnetwork_tests=false", "-Dwebkit=false", ] # dependencies = [ # "cairo", # "cmark", # "dbus", # "dspy", # "enchant", # "llvm18", # "gdk-pixbuf", # "glib", # "gobject-introspection", # "gtk4", # "gtk4mm", # "gtksourceview", # "libadwaita", # "libdex", # "libgit2", # "libgspell-gtk4", # "libpanel", # "libpeas", # "libsoup", # "vala", # "libvte", # "libxml2", # "json-glib", # "jsonrpc-glib", # "pango", # "webkitgtk4", # ] ================================================ FILE: recipes/wip/gnome/gnome-calculator/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from meson log [source] tar = "https://download.gnome.org/sources/gnome-calculator/49/gnome-calculator-49.1.1.tar.xz" [build] template = "meson" mesonflags = [ "-Ddisable-introspection=true", "-Ddoc=false", ] #dependencies = [ # "glib", # "libsoup", # "mpc", # "mpfr", #] ================================================ FILE: recipes/wip/gnome/gnome-chess/recipe.toml ================================================ #TODO not compiled or tested #TODO missing dependencies [source] tar = "https://download.gnome.org/sources/gnome-chess/49/gnome-chess-49.2.tar.xz" [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", "librsvg", ] ================================================ FILE: recipes/wip/gnome/gnome-connections/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from meson log [source] tar = "https://download.gnome.org/sources/gnome-connections/49/gnome-connections-49.0.tar.xz" [build] template = "meson" #dependencies = [ # "libsecret", # "libhandy", # "libxml2", # "gtk-vnc", # "freerdp", # "cairo", # "gtk3", # "glib", # "gdk-pixbuf", #] ================================================ FILE: recipes/wip/gnome/gnome-files/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from meson log [source] tar = "https://download.gnome.org/sources/nautilus/49/nautilus-49.1.tar.xz" [build] template = "meson" mesonflags = [ "-Dextensions=false", "-Dintrospection=false", "-Dpackagekit=false", "-Dselinux=disabled", "-Dcloudproviders=disabled", "-Dtests=none", ] #[package] # probably optional dependencies #dependencies = [ # "localsearch", # "xdg-user-dirs-gtk", #] ================================================ FILE: recipes/wip/gnome/gnome-image-viewer/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/GNOME/loupe" shallow_clone = true [build] template = "meson" dependencies = [ "gtk4", "libadwaita", "liblcms", ] ================================================ FILE: recipes/wip/gnome/gnome-keyring/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/gnome-keyring/48/gnome-keyring-48.0.tar.xz" [build] template = "meson" mesonflags = [ "-Dsystemd=disabled", "-Dpam=false", "-Ddebug-mode=false", "-Dmanpage=false", ] ================================================ FILE: recipes/wip/gnome/gnome-sudoku/recipe.toml ================================================ #TODO not compiled or tested #TODO missing dependencies [source] tar = "https://download.gnome.org/sources/gnome-sudoku/49/gnome-sudoku-49.2.tar.xz" [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", "json-glib", ] ================================================ FILE: recipes/wip/gnome/gnome-text-editor/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/gnome-text-editor/49/gnome-text-editor-49.0.tar.xz" [build] template = "meson" mesonflags = [ "-Deditorconfig=false" ] dependencies = [ "gtk4", "gtksourceview", "libadwaita", "libspelling", ] ================================================ FILE: recipes/wip/gnome/gnome-web/recipe.toml ================================================ # TODO: Need to port more libs # newer version requires c_std=gnu23 [source] tar = "https://download.gnome.org/sources/epiphany/46/epiphany-46.5.tar.xz" [build] template = "meson" mesonflags = [ "-Dunit_tests=disabled", "-Dman-pages=disabled", ] dependencies = [ "cairo", # "gck2", # "gcr4", "gdk-pixbuf", "gio2", # "gio-unix2", # "glib2", # "granite7", # "gsettings-desktop-schemas", "gstreamer", "gtk4", # "gtk4-unix-print", # "hogweed", # "iso-codes", "json-glib", "libarchive", "libadwaita", # "libsecret", "libsoup", "libxml2", "libnettle", # "libportal-gtk4", "sqlite3", # "webkitgtk6", # "webkitgtk-web-process-extension6" ] ================================================ FILE: recipes/wip/gnome/pitivi/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from meson log # lacking build instructions # the tarball lacks an important recent fix [source] git = "https://gitlab.gnome.org/GNOME/pitivi" rev = "b9864c4aca6d88dae38fde5609047d0ebd7b0506" shallow_clone = true [build] template = "meson" mesonflags = [ "-Ddisable-help=true", ] #dependencies = [ # "gtk3", # "gstreamer", # "libpeas", #] ================================================ FILE: recipes/wip/gnome/simple-scan/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from meson log [source] tar = "https://download.gnome.org/sources/simple-scan/49/simple-scan-49.1.tar.xz" [build] template = "meson" dependencies = [ "sane-backends", ] ================================================ FILE: recipes/wip/gnome/snapshot/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/GNOME/snapshot" shallow_clone = true [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", "gstreamer", ] ================================================ FILE: recipes/wip/graphics/converters/inkdrop/recipe.toml ================================================ #TODO libc crate error [source] git = "https://github.com/matze/inkdrop" [build] template = "custom" script = """ cookbook_cargo_packages inkdrop-cli gcode-converter """ ================================================ FILE: recipes/wip/graphics/converters/vtracer/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/visioncortex/vtracer" [build] template = "custom" script = """ cookbook_cargo_packages vtracer """ ================================================ FILE: recipes/wip/graphics/editors/blender/recipe.toml ================================================ #TODO not compiled or tested #TODO determine the minimum dependencies from cmake log # build instructions: https://developer.blender.org/docs/handbook/building_blender/ [source] tar = "https://download.blender.org/source/blender-5.0.1.tar.xz" [build] template = "cmake" cmakeflags = [ "-DWITH_GHOST_SDL=ON", "-DWITH_SDL=ON", "-DWITH_EXPERIMENTAL_FEATURES=OFF", ] # dependencies = [ # "dbus", # "libdecor", # "libjpeg", # "libpng", # "freetype2", # "fontconfig", # "zstd", # "bzip2", # "xz", # "sdl2", # "libepoxy", # "shaderc", # "libxml2", # "libharu", # "mesa-x11", # "libxkbcommon", # ] ================================================ FILE: recipes/wip/graphics/editors/blender-lts/recipe.toml ================================================ #TODO not compiled or tested #TODO determine the minimum dependencies from cmake log # build instructions: https://developer.blender.org/docs/handbook/building_blender/ [source] git = "https://projects.blender.org/blender/blender" branch = "blender-v4.5-release" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DWITH_GHOST_SDL=ON", "-DWITH_SDL=ON", "-DWITH_EXPERIMENTAL_FEATURES=OFF", ] # dependencies = [ # "dbus", # "libdecor", # "libjpeg", # "libpng", # "freetype2", # "fontconfig", # "zstd", # "bzip2", # "xz", # "sdl2", # "libepoxy", # "shaderc", # "libxml2", # "libharu", # "mesa-x11", # "libxkbcommon", # ] ================================================ FILE: recipes/wip/graphics/editors/eyedropper/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/FineFindus/eyedropper" shallow_clone = true [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/graphics/editors/opentoonz/recipe.toml ================================================ #TODO not compiled or tested #TODO missing dependencies # build instructions: https://github.com/opentoonz/opentoonz/blob/master/doc/how_to_build_linux.md [source] git = "https://github.com/opentoonz/opentoonz" rev = "dd4cb36142ebf65a2aa74ff8575002863d3e17fc" [build] template = "cmake" dependencies = [ "boost", "qt5-base", "freetype2", "libpng", "libmypaint", "opencv4", ] ================================================ FILE: recipes/wip/graphics/editors/pencil2d/recipe.toml ================================================ #TODO missing script for qmake and gnu make # build instructions - https://dev.pencil2d.org/build_linux.html [source] git = "https://github.com/pencil2d/pencil" branch = "release/0.7.0" [build] template = "custom" dependencies = [ "qt6-base", "qt6-multimedia", "qt6-svg", ] ================================================ FILE: recipes/wip/graphics/editors/texel/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/almindor/texel" [build] template = "custom" script = """ cookbook_cargo --no-default-features --features ion """ ================================================ FILE: recipes/wip/graphics/other/appleseed/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/appleseedhq/appleseed/wiki/Building-appleseed-on-Linux [source] git = "https://github.com/appleseedhq/appleseed" rev = "015adb503af58cb80103e0c3ddeefc20d99d204f" [build] template = "cmake" dependencies = [ "zlib", "qt5-base", "libnsl", ] ================================================ FILE: recipes/wip/graphics/other/c-ray/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/vkoskiv/c-ray#installation [source] git = "https://github.com/vkoskiv/c-ray" [build] template = "custom" ================================================ FILE: recipes/wip/graphics/other/cmark/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/commonmark/cmark#installing [source] git = "https://github.com/commonmark/cmark" rev = "5ba25ff40eba44c811f79ab6a792baf945b8307c" [build] template = "cmake" ================================================ FILE: recipes/wip/graphics/other/curvis/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/fragarriss/CurVis" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/darktable/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/darktable-org/darktable#linux # dependencies: https://github.com/darktable-org/darktable#dependencies [source] tar = "https://github.com/darktable-org/darktable/releases/download/release-4.8.0/darktable-4.8.0.tar.xz" [build] template = "cmake" dependencies = [ "gtk3", "glib", "sqlite3", "gexiv2", "liblensfun", "liblcms", "libpugixml", "libavif", "libheif", "libwebp", "libgphoto2", ] ================================================ FILE: recipes/wip/graphics/other/derive-rs/recipe.toml ================================================ #TODO very outdated crates [source] git = "https://github.com/erik/derive.rs" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/dify/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/jihchi/dify" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/dssim/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/kornelski/dssim" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/embree/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/embree/embree#linux-and-macos [source] git = "https://github.com/embree/embree" rev = "be0accfd0b246e2b03355b8ee7710a22c1b49240" [build] template = "cmake" dependencies = [ "glfw", "onetbb", ] ================================================ FILE: recipes/wip/graphics/other/flowbetween/recipe.toml ================================================ #TODO maybe missing dependencies, see https://github.com/Logicalshift/flowbetween/blob/master/user_interfaces/gtk_ui/Cargo.toml#L11 [source] git = "https://github.com/Logicalshift/flowbetween" [build] template = "custom" dependencies = [ "gtk3", ] script = """ cookbook_cargo --features gtk """ ================================================ FILE: recipes/wip/graphics/other/gaffer/recipe.toml ================================================ #TODO missing script for SCons, see https://github.com/gafferHQ/gaffer#building #TODO missing dependencies, see https://github.com/GafferHQ/dependencies [source] git = "https://github.com/GafferHQ/gaffer" rev = "9fe2e9c9025447913872d77c138a03eabcfa5df2" [build] template = "custom" dependencies = [ "inkscape", "boost", "embree", "libfmt", "freetype2", "glew", "imath", "lz4", "libffi", "libjpeg", "libpng", "libtiff", "openexr", "openimageio", "openssl1", "onetbb", "zlib", "qt5-full", ] ================================================ FILE: recipes/wip/graphics/other/glou/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Nurrl/glou" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/gmic/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/GreycLab/gmic-community/wiki/Building-from-Source [source] tar = "https://gmic.eu/files/source/gmic_3.3.2.tar.gz" [build] template = "custom" dependencies = [ "fftw", "libpng", "libjpeg", "zlib", ] ================================================ FILE: recipes/wip/graphics/other/gmic-qt/recipe.toml ================================================ #TODO missing script for building, see https://github.com/c-koi/gmic-qt#build-instructions #TODO probably missing dependencies [source] git = "https://github.com/c-koi/gmic-qt" rev = "b616829854c0e482d63b9fe8eca48e73d7cd3bd8" [build] template = "custom" ================================================ FILE: recipes/wip/graphics/other/graphviz/recipe.toml ================================================ #TODO Not compiled or tested #TODO customization - https://graphviz.org/download/source/#dependencies [source] tar = "https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/9.0.0/graphviz-9.0.0.tar.xz" [build] template = "configure" dependencies = [ "cairo", "expat", "freetype2", "fontconfig", "glib", "libpng", "pango", "zlib", ] ================================================ FILE: recipes/wip/graphics/other/halo/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/bungoboingo/halo" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/hdr10plus-tool/recipe.toml ================================================ #TODO yeslogic-fontconfig-sys crate error [source] git = "https://github.com/quietvoid/hdr10plus_tool" [build] template = "cargo" dependencies = [ "fontconfig", ] ================================================ FILE: recipes/wip/graphics/other/image-sieve/recipe.toml ================================================ #TODO glutin crate error [source] git = "https://github.com/Futsch1/image-sieve" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/incompact3d/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/xcompact3d/Incompact3d#source-download-and-compilation #TODO probably missing dependencies [source] git = "https://github.com/xcompact3d/Incompact3d" rev = "2546f404cf3bbf78bc745d6133173c37e46c82df" [build] template = "custom" ================================================ FILE: recipes/wip/graphics/other/kantig/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/DenSASoftware/kantig" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/lpl/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/SOF3/lpl" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/luxcorerender/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://wiki.luxcorerender.org/Compiling_LuxCore #TODO probably missing dependencies [source] git = "https://github.com/LuxCoreRender/LuxCore" rev = "c8f10e9ddf5171fa705782a3da3f48123f96a4cb" [build] template = "cmake" dependencies = [ "bzip2", "libtiff", "libpng", "gtk3", "boost", "mesa", "openimageio", "openexr", ] ================================================ FILE: recipes/wip/graphics/other/lyon/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/nical/lyon" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages lyon_cli wgpu-example svg-rendering-example """ ================================================ FILE: recipes/wip/graphics/other/matugen/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/InioX/matugen" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/naga/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/gfx-rs/wgpu" [build] template = "custom" script = """ cookbook_cargo_packages naga-cli mv "${COOKBOOK_STAGE}/usr/bin/naga_naga-cli" "${COOKBOOK_STAGE}/usr/bin/naga" """ ================================================ FILE: recipes/wip/graphics/other/ocrs/recipe.toml ================================================ #TODO add a command to move the executable to a propeer folder [source] git = "https://github.com/robertknight/ocrs" [build] template = "custom" script = """ cookbook_cargo_packages ocrs-cli """ ================================================ FILE: recipes/wip/graphics/other/oculante/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/woelper/oculante" [build] template = "cargo" dependencies = [ "gtk3", "libxcb", "libalsa", ] ================================================ FILE: recipes/wip/graphics/other/openscad/recipe.toml ================================================ #TODO missing script for building, see https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Building_on_Linux/UNIX#Build_the_OpenSCAD_binary #TODO missing dependencies - https://github.com/openscad/openscad/#prerequisites [source] tar = "https://files.openscad.org/openscad-2021.01.src.tar.gz" [build] template = "custom" dependencies = [ "qt5-base", "libgmp", "libmpfr", "boost", "glew", "glib", "fontconfig", "freetype2", "harfbuzz", ] ================================================ FILE: recipes/wip/graphics/other/ospray/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/ospray/OSPRay#building-and-finding-ospray [source] git = "https://github.com/ospray/OSPRay" rev = "66fa8108485a8a92ff31ad2e06081bbaf391bc26" [build] template = "cmake" dependencies = [ "librkcommon", "embree", "ispc", "onetbb", "openvkl", "open-image-denoise", ] ================================================ FILE: recipes/wip/graphics/other/ospray-studio/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/ospray/ospray_studio#standard-cmake-build [source] git = "https://github.com/ospray/ospray_studio" rev = "d2c83a67c841f1329f47cf9648a56b3dacbcdcaa" [build] template = "cmake" dependencies = [ "ospray", "onetbb", "librkcommon", "mesa", "glfw", "open-image-denoise", ] ================================================ FILE: recipes/wip/graphics/other/oxipng/recipe.toml ================================================ #TODO working but don't exit [source] git = "https://github.com/shssoichiro/oxipng" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/paraview/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://kitware.github.io/paraviewweb/docs/configure_and_build_pvweb.html # build instructions (if the above doesn't work) - https://github.com/Kitware/ParaView/blob/master/Documentation/dev/build.md [source] tar = "https://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v5.11&type=source&os=Sources&downloadFile=ParaView-v5.11.2.tar.xz" [build] template = "cmake" ================================================ FILE: recipes/wip/graphics/other/paraview-data/recipe.toml ================================================ #TODO missing script for installation, lacking instructions [source] tar = "https://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v5.11&type=data&os=Sources&downloadFile=ParaViewTestingDataFiles-v5.11.2.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/graphics/other/pix-image-viewer/recipe.toml ================================================ #TODO proc-macro2 crate error [source] git = "https://github.com/google/pix-image-viewer" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/pixsort/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/1jz/pixsort" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/rascii/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/orhnk/RASCII" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/rawtherapee/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://rawpedia.rawtherapee.com/Linux#Compile_RawTherapee #TODO missing dependencies, see https://rawpedia.rawtherapee.com/Linux#Dependencies [source] tar = "https://rawtherapee.com/shared/source/rawtherapee-5.9.tar.xz" [build] template = "cmake" dependencies = [ "gexiv2", "expat", "fftw", "glib", "gtk3", "gtk3mm", "libjpeg", "liblcms", "libpng", "librsvg", "libsigc++", "libtiff", "zlib", ] ================================================ FILE: recipes/wip/graphics/other/reve/recipe.toml ================================================ #TODO clearscreen crate error (after cargo update) [source] git = "https://github.com/ONdraid/reve" [build] template = "custom" script = """ cookbook_cargo_packages reve-cli """ ================================================ FILE: recipes/wip/graphics/other/rimage/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/SalOne22/rimage" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/satty/recipe.toml ================================================ #TODO make gtk4 work [source] git = "https://github.com/gabm/Satty" [build] template = "custom" dependencies = [ "gtk4", "libadwaita", "cairo", "glib", "pango", "gdk-pixbuf", ] script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps cp -rv "${COOKBOOK_SOURCE}"/satty.desktop "${COOKBOOK_STAGE}"/usr/share/applications cp -rv "${COOKBOOK_SOURCE}"/assets/satty.svg "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps cookbook_cargo_packages satty """ ================================================ FILE: recipes/wip/graphics/other/shadergarden/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/tonarino/shadergarden" [build] template = "cargo" dependencies = [ "ffmpeg6", ] ================================================ FILE: recipes/wip/graphics/other/simp/recipe.toml ================================================ #TODO wayland-backend crate error [source] git = "https://github.com/Kl4rry/simp" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/smag/recipe.toml ================================================ #TODO outdated redox_syscall crate (after cargo update) [source] git = "https://github.com/aantn/smag" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/toybrot/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/VileLasagna/toyBrot#building-toybrot [source] git = "https://gitlab.com/VileLasagna/toyBrot" [build] template = "cmake" dependencies = [ "sdl2", "libpng", ] ================================================ FILE: recipes/wip/graphics/other/tungsten-renderer/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/tunabrain/tungsten#compilation [source] git = "https://github.com/tunabrain/tungsten" [build] template = "cmake" ================================================ FILE: recipes/wip/graphics/other/viu/recipe.toml ================================================ #TODO working but don't exit [source] git = "https://github.com/atanunq/viu" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/other/vulkan-tools/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/KhronosGroup/Vulkan-Tools/blob/main/BUILD.md [source] git = "https://github.com/KhronosGroup/Vulkan-Tools" rev = "7e75f4d389799129b79f90d1401f15f511796dbd" [build] template = "cmake" cmakeflags = [ "-DUPDATE_DEPS=ON" ] ================================================ FILE: recipes/wip/graphics/other/watch-stl/recipe.toml ================================================ #TODO update the winit version [source] git = "https://github.com/bddap/watch-stl-rust" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/shaders/glsl-viewer/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/patriciogonzalezvivo/glslViewer/wiki/Compile-on-linux#3-compile [source] git = "https://github.com/patriciogonzalezvivo/glslViewer" rev = "7eb6254cb4cedf03f1c78653f90905fe0c3b48fb" [build] template = "custom" dependencies = [ "mesa-glu", "ncurses", "ncursesw", "ffmpeg6", "glfw3", ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_cmake """ ================================================ FILE: recipes/wip/graphics/shaders/glslang/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/KhronosGroup/glslang#building-cmake [source] git = "https://github.com/KhronosGroup/glslang" rev = "16.0.0" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/graphics/shaders/shadertoy-rs/recipe.toml ================================================ #TODO outdated crates [source] git = "https://github.com/fmenozzi/shadertoy-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/shaders/vibe/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/TornaxO7/vibe" [build] template = "cargo" dependencies = [ "libxkbcommon", "libwayland", "libalsa", ] ================================================ FILE: recipes/wip/graphics/terminal/3d-terminal-renderer/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ryanweideman/3d-terminal-renderer" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/terminal/aarty/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/0x61nas/aarty" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/terminal/ascii-image/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/kpberry/image-to-ascii" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/terminal/blockpaint/recipe.toml ================================================ #TODO don't fetch private submodule [source] git = "https://github.com/wooster0/blockpaint" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/terminal/display3d/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/redpenguinyt/display3d" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/display3d cp -rv "${COOKBOOK_SOURCE}"/resources/* "${COOKBOOK_STAGE}"/usr/share/display3d cookbook_cargo """ ================================================ FILE: recipes/wip/graphics/terminal/img2text/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/yvt/img2text" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/terminal/kakikun/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/file-acomplaint/kakikun" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/terminal/sloth/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/ecumene/rust-sloth" script = "rm Cargo.lock" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/terminal/tapciify/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/tapnisu/tapciify" [build] template = "cargo" ================================================ FILE: recipes/wip/graphics/viewers/exhibit/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Nokse22/Exhibit" rev = "v1.5.1" [build] template = "meson" ================================================ FILE: recipes/wip/graphics/vr/alvr/recipe.toml ================================================ #TODO missing script for cargo-xtask, see: https://github.com/alvr-org/ALVR/wiki/Building-From-Source #TODO probably missing dependencies, see: https://github.com/alvr-org/ALVR/wiki/Building-From-Source#streamer-building [source] git = "https://github.com/alvr-org/ALVR" [build] template = "custom" dependencies = [ "openssl1", "gtk3", "libvulkan", "libunwind", "x264", "x265", "libxcb", "libxkbcommon", "libva", "pipewire", ] ================================================ FILE: recipes/wip/gui/gpcl/recipe.toml ================================================ #TODO wayland-backend crate error [source] git = "https://github.com/dngulin/gpcl" [build] template = "cargo" ================================================ FILE: recipes/wip/gui/ordinary/recipe.toml ================================================ #TODO update async-io and rustix [source] git = "https://gitlab.com/floers/ordinary" [build] template = "custom" script = """ cookbook_cargo_packages ordinary """ ================================================ FILE: recipes/wip/gui/slop/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/naelstrof/slop" rev = "v7.7" [build] template = "cmake" dependencies = [ "libxext", "glew", "libglm", ] ================================================ FILE: recipes/wip/health/blanket/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rafaelmardojai/blanket" rev = "0.8.0" shallow_clone = true [build] template = "meson" dependencies = [ "gstreamer", "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/health/dosage/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from meson log [source] git = "https://github.com/diegopvlk/Dosage" rev = "v2.1.2" shallow_clone = true [build] template = "meson" ================================================ FILE: recipes/wip/hw/piper/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/libratbag/piper" rev = "0.8" shallow_clone = true [build] template = "meson" mesonflags = [ "-Druntime-dependency-checks=false", ] dependencies = [ "libratbag", "gtk3", "cairo", "libevdev", ] ================================================ FILE: recipes/wip/icons/adwaita-icon-theme/recipe.toml ================================================ [source] tar = "https://download.gnome.org/sources/adwaita-icon-theme/49/adwaita-icon-theme-49.0.tar.xz" blake3 = "757eedf680c4ae564d887dd9eccfeab2d4101e0bdfdb10288a072ba4530fb0e5" patches = ["redox.patch"] [build] template = "meson" ================================================ FILE: recipes/wip/icons/adwaita-icon-theme/redox.patch ================================================ diff -ruwN source-old/meson.build source/meson.build --- source-old/meson.build 2025-09-12 05:48:02.000000000 -0600 +++ source/meson.build 2025-11-13 12:05:28.819996707 -0700 @@ -90,14 +90,14 @@ endforeach endif -gtk_update_icon_cache = find_program( - 'gtk4-update-icon-cache', - 'gtk-update-icon-cache', - required : true, -) -meson.add_install_script( - gtk_update_icon_cache, - '-qtf', - get_option('prefix') / adwaita_dir, - skip_if_destdir: true, -) +#gtk_update_icon_cache = find_program( +# 'gtk4-update-icon-cache', +# 'gtk-update-icon-cache', +# required : true, +#) +#meson.add_install_script( +# gtk_update_icon_cache, +# '-qtf', +# get_option('prefix') / adwaita_dir, +# skip_if_destdir: true, +#) ================================================ FILE: recipes/wip/icons/breeze-icons/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/breeze-icons-5.112.0.tar.xz" [build] template = "cmake" ================================================ FILE: recipes/wip/image/converters/dipc/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/doprz/dipc" [build] template = "cargo" ================================================ FILE: recipes/wip/image/editors/ascii-draw/recipe.toml ================================================ #TODO not compiled or tested # probably missing dependencies [source] git = "https://github.com/Nokse22/ascii-draw" rev = "v1.1.0" [build] template = "meson" dependencies = [ "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/image/editors/drawing/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from meson log # build instructions: https://github.com/maoschanz/drawing/blob/master/CONTRIBUTING.md#install-from-source-code # dependencies: https://github.com/maoschanz/drawing/blob/master/CONTRIBUTING.md#dependencies [source] git = "https://github.com/maoschanz/drawing" branch = "1.0.x-stable" shallow_clone = true [build] template = "meson" mesonflags = [ "-Denable-translations-and-appdata=false" ] #dependencies = [ # "gtk3", # "cairo", #] ================================================ FILE: recipes/wip/image/editors/inkscape/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # build instructions: https://inkscape.org/develop/getting-started/#compile # build options: https://gitlab.com/inkscape/inkscape/-/blob/master/CMakeLists.txt?ref_type=heads#L87 [source] tar = "https://inkscape.org/gallery/item/58914/inkscape-1.4.3.tar.xz" [build] template = "cmake" # dependencies = [ # "boost", # "glib", # "glibmm", # "gtk3", # "gtk3mm", # "gdk-pixbuf", # "gtksourceview", # "cairo", # "cairomm", # "pango", # "pangomm", # "readline", # "fontconfig", # "freetype2", # "imagemagick", # "potrace", # "zlib", # "lib2geom", # "atkmm", # "harfbuzz", # "libblas", # "libsoup", # "libsigc++", # "librsvg", # "librevenge", # "libwpd", # "libpng", # "libvisio", # "libxml2", # "libxslt", # "libcdr", # "libgsl", # "libgspell-gtk3", # "libjpeg", # "liblcms", # "liblapack", # ] ================================================ FILE: recipes/wip/image/editors/rx/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/cloudhead/rx" script = "rm Cargo.lock" [build] template = "cargo" ================================================ FILE: recipes/wip/image/editors/watermarker/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/xomvio/watermarker" [build] template = "cargo" ================================================ FILE: recipes/wip/image/editors/xpano/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/krupkat/xpano#development # linux script: https://github.com/krupkat/xpano/blob/main/misc/build/build-ubuntu-22.sh [source] git = "https://github.com/krupkat/xpano" rev = "5e626f66d2670a7f3fd04e805610ef98a506e401" [build] template = "cmake" dependencies = [ "gtk3", "opencv4", "sdl2", "libspdlog", ] ================================================ FILE: recipes/wip/image/other/converseen/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Faster3ck/Converseen/blob/main/INSTALL.md#install-converseen-using-qt6 [source] git = "https://github.com/Faster3ck/Converseen" rev = "9b2821b5ed6673a7abebbe4ee42f4718ab366485" [build] template = "cmake" dependencies = [ "qt6-base", ] ================================================ FILE: recipes/wip/image/other/curtail/recipe.toml ================================================ #TODO missing dependencies: https://github.com/Huluti/Curtail#tech # build instructions: https://github.com/Huluti/Curtail#build-from-source-nightly [source] git = "https://github.com/Huluti/Curtail" rev = "1.13.0" [build] template = "meson" dependencies = [ "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/image/other/dominant-colours/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/alexwlchan/dominant_colours" [build] template = "cargo" ================================================ FILE: recipes/wip/image/other/ferrishot/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/nik-rev/ferrishot" [build] dependencies = [ "mesa", "libx11", "libwayland", "libxcb", ] template = "cargo" ================================================ FILE: recipes/wip/image/other/graphicsmagick/recipe.toml ================================================ #TODO compilation error: missing sys/poll.h #TODO more features: http://www.graphicsmagick.org/README.html#add-on-libraries-programs [source] tar = "https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.42/GraphicsMagick-1.3.42.tar.xz/download" [build] template = "configure" dependencies = [ "bzip2", "freetype2", #"libwebp", "libjpeg", "libpng", "libtiff", "libxml2", "zlib", ] ================================================ FILE: recipes/wip/image/other/imageflow/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/imazen/imageflow" [build] template = "custom" dependencies = [ "openssl1", "libpng", ] script = """ cookbook_cargo_packages imageflow_tool_lib mv "${COOKBOOK_STAGE}/usr/bin/imageflow_tool" "${COOKBOOK_STAGE}/usr/bin/imageflow-tool" """ ================================================ FILE: recipes/wip/image/other/imagemagick/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://imagemagick.org/archive/releases/ImageMagick-7.1.1-23.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/image/other/jpegoptim/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/tjko/jpegoptim/releases/download/v1.5.6/jpegoptim-1.5.6.tar.gz" [build] template = "configure" dependencies = [ "libjpeg", ] ================================================ FILE: recipes/wip/image/other/jxl-oxide/recipe.toml ================================================ #TODO missing header on compilation [source] git = "https://github.com/tirr-c/jxl-oxide" [build] template = "custom" script = """ cookbook_cargo_packages jxl-oxide-cli """ ================================================ FILE: recipes/wip/image/other/lsix/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/hackerb9/lsix" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp "${COOKBOOK_SOURCE}"/lsix "${COOKBOOK_STAGE}"/usr/bin/lsix chmod a+x "${COOKBOOK_STAGE}"/usr/bin/lsix """ ================================================ FILE: recipes/wip/image/other/oxvg/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/noahbald/oxvg" [build] template = "custom" script = """ cookbook_cargo_packages oxvg """ ================================================ FILE: recipes/wip/image/other/pngquant/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/kornelski/pngquant" [build] template = "cargo" ================================================ FILE: recipes/wip/image/other/satpaper/recipe.toml ================================================ #TODO atools crate error [source] git = "https://github.com/Colonial-Dev/satpaper" [build] template = "cargo" ================================================ FILE: recipes/wip/image/other/sic/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/foresterre/sic" [build] template = "cargo" ================================================ FILE: recipes/wip/image/upscaling/jdpixelupscaler/recipe.toml ================================================ #TODO maybe incomplete script #TODO determine the dependencies [source] git = "https://codeberg.org/JakobDev/jdPixelUpscaler" rev = "05eb4f3a4a9d24b6d818522483d88caa6b201e2e" [build] template = "custom" dependencies = [ "qt6-base", ] ================================================ FILE: recipes/wip/image/upscaling/rscale2x/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/ahmetmutlugun/rscale2x" [build] template = "cargo" ================================================ FILE: recipes/wip/image/upscaling/upscaler/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/World/Upscaler#meson [source] git = "https://gitlab.gnome.org/World/Upscaler" rev = "1.6.3" shallow_clone = true [build] template = "meson" mesonflags = [ "-Dnetwork_tests=false", ] dev-dependencies = [ "host:blueprint" # add script for linux compilation ] dependencies = [ "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/image/upscaling/upscaler-rs/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/DhruvDh/upscaler" [build] template = "cargo" ================================================ FILE: recipes/wip/image/upscaling/upscayl-ncnn/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/upscayl/upscayl-ncnn" rev = "d02fa88e078e7109fd689932453362430144014d" shallow_clone = true [build] template = "custom" dependencies = [ "libvulkan", "openmp", ] script = """ COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/src" DYNAMIC_INIT cookbook_cmake """ ================================================ FILE: recipes/wip/image/upscaling/video2x/recipe.toml ================================================ #TODO maybe incomplete script [source] git = "https://github.com/k4yt3x/video2x" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/video2x mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/video2x echo "#!/usr/bin/env sh \n cd /usr/share/video2x \n python3 -m video2x" > "${COOKBOOK_STAGE}"/usr/bin/video2x chmod a+x "${COOKBOOK_STAGE}"/usr/bin/video2x """ ================================================ FILE: recipes/wip/kde/ark/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log [source] git = "https://invent.kde.org/utilities/ark" branch = "release/25.12" shallow_clone = true [build] template = "cmake" dependencies = [ "libarchive", ] ================================================ FILE: recipes/wip/kde/discover/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log [source] git = "https://invent.kde.org/plasma/discover" branch = "Plasma/6.6" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/kde/k3b/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # build instructions: https://invent.kde.org/multimedia/k3b/-/blob/master/INSTALL.txt?ref_type=heads [source] git = "https://invent.kde.org/multimedia/k3b" branch = "release/25.12" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DK3B_DOC=OFF", "-DK3B_ENABLE_TAGLIB=OFF", "-DK3B_ENABLE_DVD_RIPPING=OFF", "-DK3B_BUILD_MUSE_DECODER_PLUGIN=OFF", "-DK3B_BUILD_FLAC_DECODER_PLUGIN=OFF", "-DK3B_BUILD_SNDFILE_DECODER_PLUGIN=OFF", "-DK3B_BUILD_LAME_ENCODER_PLUGIN=OFF", "-DK3B_BUILD_SOX_ENCODER_PLUGIN=OFF", "-DK3B_BUILD_EXTERNAL_ENCODER_PLUGIN=OFF", "-DK3B_BUILD_WAVE_DECODER_PLUGIN=OFF", ] dependencies = [ "libcdio-paranoia", ] ================================================ FILE: recipes/wip/kde/kamoso/recipe.toml ================================================ #TODO not compiled or tested #TODO missing dependencies: https://invent.kde.org/multimedia/kamoso/-/blob/master/CMakeLists.txt?ref_type=heads#L29 [source] git = "https://invent.kde.org/multimedia/kamoso" branch = "release/25.12" [build] template = "cmake" cmakeflags = [ "-DBUILD_DOC=OFF", ] dependencies = [ "qt6-base", ] ================================================ FILE: recipes/wip/kde/kde-dolphin/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log [source] git = "https://invent.kde.org/system/dolphin" branch = "release/25.12" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/kde/kdenlive/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # build instructions: https://invent.kde.org/multimedia/kdenlive/-/blob/master/dev-docs/build.md#build-and-install-the-projects [source] git = "https://invent.kde.org/multimedia/kdenlive" branch = "release/25.12" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_TESTING=OFF", "-DUSE_DBUS=OFF", ] # dependencies = [ # "mlt", # "ffmpeg6", # "qt5-declarative", # "qt5-tools", # "qt5-multimedia", # "qt5-svg", # "qt5-quickcontrols", # "qt5-quickcontrols2", # "qt5-networkauth", # "kf5-archive", # "kf5-bookmarks", # "kf5-codecs", # "kf5-config", # "kf5-configwidgets", # "kf5-coreaddons", # "kf5-crash", # "kf5-dbusaddons", # "kf5-declarative", # "kf5-filemetadata", # "kf5-guiaddons", # "kf5-iconthemes", # "kf5-init", # "kf5-io", # "kf5-newstuff", # "kf5-notifications", # "kf5-notifyconfig", # "kf5-purpose", # "kf5-textwidgets", # "kf5-widgetaddons", # "kf5-xmlgui", # "breeze-icons", # ] ================================================ FILE: recipes/wip/kde/kdevelop/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log [source] git = "https://invent.kde.org/kdevelop/kdevelop" branch = "release/25.12" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_DOC=OFF", ] # dependencies = [ # "apr", # "apr-util", # "astyle", # "boost", # "libgrantlee", # "libkomparediff2", # "kf5-archive", # "kf5-config", # "kf5-crash", # "kf5-cmutils", # "kf5-extra-cmake-modules", # "kf5-declarative", # "kf5-doctools", # "kf5-guiaddons", # "kf5-i18n", # "kf5-iconthemes", # "kf5-itemmodels", # "kf5-itemviews", # "kf5-io", # "kf5-jobwidgets", # "kf5-newstuff", # "kf5-notifications", # "kf5-notifyconfig", # "kf5-parts", # "kf5-plasma-framework", # "kf5-purpose", # "kf5-runner", # "kf5-service", # "kf5-sonnet", # "kf5-sysguard", # "kf5-texteditor", # "kf5-threadweaver", # "kf5-widgetaddons", # "kf5-windowsystem", # "kf5-xmlgui", # "qt5-base", # "qt5-declarative", # "qt5-tools", # "qt5-webkit", # "okteta", # "shared-mime-info", # ] ================================================ FILE: recipes/wip/kde/kpatience/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log [source] git = "https://invent.kde.org/games/kpat" branch = "release/25.12" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_DOC=OFF", ] ================================================ FILE: recipes/wip/kde/krita/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # build instructions: https://docs.krita.org/en/untranslatable_pages/building_krita.html#building-on-linux [source] git = "https://invent.kde.org/graphics/krita" branch = "release/5.2.14" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DLIMIT_LONG_TESTS=OFF", "-DENABLE_UPDATERS=OFF", ] # dependencies = [ # "gexiv2", # "ffmpeg6", # "fftw", # "fontconfig", # "freetype2", # "fribidi", # "libgif", # "harfbuzz", # "liblcms", # "libpng", # "libtiff", # "libwebp", # "qt5-base", # "qt5-svg", # "zlib", # "libmypaint", # "boost", # "libheif", # "libjpeg", # "libjxl", # "kf5-extra-cmake-modules", # "kf5-completion", # "kf5-config", # "kf5-coreaddons", # "kf5-crash", # "kf5-guiaddons", # "kf5-i18n", # "kf5-itemviews", # "kf5-widgetaddons", # "kf5-windowsystem", # "mlt", # "opencolorio", # "openexr", # "openjpeg", # "sdl2", # "libxi", # "zlib", # "libeigen", # "libgsl", # "libseexpr-kde", # "liblager", # "libunibreak", # "libxsimd", # "libxtl", # ] ================================================ FILE: recipes/wip/kde/ktorrent/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log [source] git = "https://invent.kde.org/network/ktorrent" branch = "release/25.12" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/kde/kwave/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://invent.kde.org/multimedia/kwave" rev = "release/25.12" shallow_clone = true [build] template = "cmake" cmakeflags = [ "--preset=release", "-DWITH_DOC=OFF", "-DWITH_FLAC=OFF", "-DWITH_OSS=OFF", ] dependencies = [ "libpulse", "libmad", #"libsamplerate", #"libogg", #"libvorbis", #"libflac", #"fftw", ] ================================================ FILE: recipes/wip/kde/marble/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log [source] git = "https://invent.kde.org/education/marble" branch = "release/25.12" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_WITH_DBUS=OFF", ] ================================================ FILE: recipes/wip/kde/okteta/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions #TODO missing dependencies [source] git = "https://invent.kde.org/utilities/okteta" rev = "fb6150f2dce791c96b95a12ee0c74942c1774c05" [build] template = "cmake" ================================================ FILE: recipes/wip/kde/skanpage/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log [source] git = "https://invent.kde.org/utilities/skanpage" branch = "release/25.12" shallow_clone = true [build] template = "cmake" cmakeflags = ["--preset=release"] dependencies = [ "sane-backends", ] ================================================ FILE: recipes/wip/lang/kana/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from meson log [source] git = "https://gitlab.gnome.org/fkinoshita/kana" shallow_clone = true [build] template = "meson" ================================================ FILE: recipes/wip/lang/uroman-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/stellanomia/uroman-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/libs/archives/libzip/recipe.toml ================================================ #TODO Promote [source] tar = "https://libzip.org/download/libzip-1.10.1.tar.gz" [build] template = "cmake" dependencies = [ "zlib", ] ================================================ FILE: recipes/wip/libs/audio/boca/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/enzo1982/boca/#installation [source] tar = "https://github.com/enzo1982/BoCA/releases/download/v1.0.7/boca-1.0.7.tar.gz" [build] template = "custom" dependencies = [ "libsmooth", "libpulse", "libcdio", "libcdio-paranoia", "expat", "liburiparser", ] ================================================ FILE: recipes/wip/libs/audio/libalsa/recipe.toml ================================================ #TODO maybe wrong template # build instructions - https://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=INSTALL;h=a2427e072bcaf951addc3e1db1fccccf44f3b59b;hb=HEAD [source] tar = "http://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.13.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/libs/audio/libcanberra/recipe.toml ================================================ #TODO no audio backend supported [source] tar = "http://0pointer.de/lennart/projects/libcanberra/libcanberra-0.30.tar.xz" blake3 = "ea02f4b5a00bfffce1d29ce73e1cf5351027208cbeb58bf9954e84ad120e6daa" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "gtk3", "libtool", "libvorbis", ] template = "configure" ================================================ FILE: recipes/wip/libs/audio/libopenshot-audio/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log [source] git = "https://github.com/OpenShot/libopenshot-audio" rev = "v0.5.0" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DENABLE_AUDIO_DOCS=OFF", "-DAUTO_INSTALL_DOCS=OFF", ] ================================================ FILE: recipes/wip/libs/audio/mpg123/recipe.toml ================================================ #TODO compilation error [source] tar = "https://mpg123.de/download/mpg123-1.33.2.tar.bz2" blake3 = "1e604dc14160a8852ef6b880643e3534f44e410af1fd5ba29a80ff960a54e834" script = """ autotools_recursive_regenerate """ [build] template = "configure" ================================================ FILE: recipes/wip/libs/audio/openal/recipe.toml ================================================ [source] tar = "https://github.com/kcat/openal-soft/archive/refs/tags/1.24.1.tar.gz" blake3 = "da65f839d4cee560371d08fc977f90757f964f49b14655b1d8d43f779c90a815" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "liborbital", "libsndfile", "mesa", "sdl2", "zlib", ] script = """ DYNAMIC_INIT export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL2" export CXXFLAGS="${CXXFLAGS} -I${COOKBOOK_SYSROOT}/include/SDL2" COOKBOOK_CMAKE_FLAGS+=( -DALSOFT_EXAMPLES=OFF -DALSOFT_INSTALL_EXAMPLES=OFF -DALSOFT_INSTALL_UTILS=OFF -DALSOFT_UTILS=OFF -DALSOFT_BACKEND_SDL2=ON -DALSOFT_REQUIRE_SDL2=ON ) if [ "${COOKBOOK_DYNAMIC}" == "1" ] then COOKBOOK_CMAKE_FLAGS+=(-DLIBTYPE=SHARED) else COOKBOOK_CMAKE_FLAGS+=(-DLIBTYPE=STATIC) fi cookbook_cmake """ ================================================ FILE: recipes/wip/libs/audio/openal/redox.patch ================================================ diff -ruwN openal-soft-1.24.1/CMakeLists.txt source/CMakeLists.txt --- openal-soft-1.24.1/CMakeLists.txt 2024-11-27 20:21:16.000000000 -0700 +++ source/CMakeLists.txt 2025-01-09 14:35:09.422985283 -0700 @@ -1200,7 +1200,7 @@ set(HAVE_SDL2 1) set(ALC_OBJS ${ALC_OBJS} alc/backends/sdl2.cpp alc/backends/sdl2.h) set(BACKENDS "${BACKENDS} SDL2,") - set(EXTRA_LIBS ${EXTRA_LIBS} SDL2::SDL2) + set(EXTRA_LIBS ${EXTRA_LIBS} ${SDL2_LIBRARIES}) else() message(STATUS "Could NOT find SDL2") endif() diff -ruwN openal-soft-1.24.1/common/alstring.cpp source/common/alstring.cpp --- openal-soft-1.24.1/common/alstring.cpp 2024-11-27 20:21:16.000000000 -0700 +++ source/common/alstring.cpp 2025-01-09 09:35:50.263542017 -0700 @@ -40,8 +40,8 @@ auto ch1end = ch1 + std::min(str0.size(), str1.size()); while(ch1 != ch1end) { - const auto u0 = std::towupper(Traits::to_int_type(*ch0)); - const auto u1 = std::towupper(Traits::to_int_type(*ch1)); + const auto u0 = towupper(Traits::to_int_type(*ch0)); + const auto u1 = towupper(Traits::to_int_type(*ch1)); if(const auto diff = static_cast(u0-u1)) return diff; ++ch0; ++ch1; } diff -ruwN openal-soft-1.24.1/common/althreads.h source/common/althreads.h --- openal-soft-1.24.1/common/althreads.h 2024-11-27 20:21:16.000000000 -0700 +++ source/common/althreads.h 2025-01-09 09:31:58.064326293 -0700 @@ -9,7 +9,7 @@ #define WIN32_LEAN_AND_MEAN #include -#elif defined(__APPLE__) +#elif defined(__APPLE__) || defined(__redox__) #include @@ -79,7 +79,7 @@ [[nodiscard]] auto get() const noexcept -> T { return from_ptr(TlsGetValue(mTss)); } -#elif defined(__APPLE__) +#elif defined(__APPLE__) || defined(__redox__) pthread_key_t mTss{}; diff -ruwN openal-soft-1.24.1/core/helpers.cpp source/core/helpers.cpp --- openal-soft-1.24.1/core/helpers.cpp 2024-11-27 20:21:16.000000000 -0700 +++ source/core/helpers.cpp 2025-01-09 09:36:47.992595649 -0700 @@ -372,7 +372,7 @@ bool SetRTPriorityPthread(int prio [[maybe_unused]]) { int err{ENOTSUP}; -#if defined(HAVE_PTHREAD_SETSCHEDPARAM) && !defined(__OpenBSD__) +#if defined(HAVE_PTHREAD_SETSCHEDPARAM) && !defined(__OpenBSD__) && !defined(__redox__) /* Get the min and max priority for SCHED_RR. Limit the max priority to * half, for now, to ensure the thread can't take the highest priority and * go rogue. ================================================ FILE: recipes/wip/libs/audio/soundtouch/recipe.toml ================================================ #TODO missing script for building [source] tar = "https://www.surina.net/soundtouch/soundtouch-2.3.2.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/audio/speex/recipe.toml ================================================ #TODO Compiled but not tested [source] tar = "http://downloads.xiph.org/releases/speex/speex-1.2.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/audio/speexdsp/recipe.toml ================================================ #TODO Compiled but not tested [source] tar = "http://downloads.xiph.org/releases/speex/speexdsp-1.2.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/audio/zmusic/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/ZDoom/ZMusic#readme [source] git = "https://github.com/ZDoom/ZMusic" rev = "1.3.0" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/debug/libbacktrace/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ianlancetaylor/libbacktrace" rev = "b9e40069c0b47a722286b94eb5231f7f05c08713" shallow_clone = true [build] template = "configure" ================================================ FILE: recipes/wip/libs/fs/libattr/recipe.toml ================================================ #TODO can't find the sys/xattr.h file [source] tar = "https://download.savannah.nongnu.org/releases/attr/attr-2.5.2.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/fs/libnfs/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/sahlberg/libnfs/blob/master/INSTALL [source] git = "https://github.com/sahlberg/libnfs" rev = "libnfs-6.0.2" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/fs/physicsfs/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/icculus/physfs/blob/main/docs/INSTALL.txt [source] git = "https://github.com/icculus/physfs" branch = "stable-3.2" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DPHYSFS_BUILD_TEST=OFF", "-DPHYSFS_BUILD_DOCS=OFF", ] ================================================ FILE: recipes/wip/libs/gnome/at-spi2-core/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/at-spi2-core/-/blob/main/INSTALL?ref_type=heads [source] tar = "https://download.gnome.org/sources/at-spi2-core/2.57/at-spi2-core-2.57.0.tar.xz" [build] template = "meson" mesonflags = [ "-Ddefault_bus=dbus-daemon", "-Dintrospection=false", ] ================================================ FILE: recipes/wip/libs/gnome/atkmm/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/atkmm/2.36/atkmm-2.36.3.tar.xz" [build] template = "meson" dependencies = [ "atk", ] ================================================ FILE: recipes/wip/libs/gnome/clutter/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/Archive/clutter#building-and-installation [source] tar = "https://download.gnome.org/sources/clutter/1.26/clutter-1.26.4.tar.xz" [build] template = "configure" dependencies = [ "glib", "json-glib", "atk", "cairo", "pango", "cogl", "libxcb", "libxcomposite "libxdamage", "libxext", "libxkbcommon", ] ================================================ FILE: recipes/wip/libs/gnome/clutter-gst/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/Archive/clutter-gst/-/blob/master/INSTALL [source] tar = "https://download.gnome.org/sources/clutter-gst/3.0/clutter-gst-3.0.27.tar.xz" [build] template = "configure" dependencies = [ "glib", "cogl", "clutter", "gstreamer", ] ================================================ FILE: recipes/wip/libs/gnome/clutter-gtk/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] tar = "https://download.gnome.org/sources/clutter-gtk/1.8/clutter-gtk-1.8.4.tar.xz" [build] template = "meson" dependencies = [ "clutter", "gtk3", ] ================================================ FILE: recipes/wip/libs/gnome/cogl/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/cogl/1.22/cogl-1.22.8.tar.xz" [build] template = "configure" dependencies = [ "mesa-x11", "libxcomposite", "libxdamage", "libxext", "libxfixes", #"libwayland", ] ================================================ FILE: recipes/wip/libs/gnome/dconf/recipe.toml ================================================ [source] tar = "https://download.gnome.org/sources/dconf/0.49/dconf-0.49.0.tar.xz" blake3 = "41ee23bdab3208f7a08efa134a481c852874dc5846433a665c5a5149511a7659" patches = ["redox.patch"] [build] dependencies = [ "dbus", "glib", ] template = "meson" mesonflags = [ "-Dbash_completion=false", "-Dman=false", "-Dvapi=false", "--force-fallback-for=gvdb", ] ================================================ FILE: recipes/wip/libs/gnome/dconf/redox.patch ================================================ diff -ruwN source-old/shm/dconf-shm.c source/shm/dconf-shm.c --- source-old/shm/dconf-shm.c 2025-09-15 09:53:57.000000000 -0600 +++ source/shm/dconf-shm.c 2025-11-15 08:08:47.412198178 -0700 @@ -148,7 +148,7 @@ close (fd); - unlink (filename); + //TODO: redoxfs bug: unlink (filename); } g_free (filename); ================================================ FILE: recipes/wip/libs/gnome/dspy/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] tar = "https://download.gnome.org/sources/dspy/1.2/dspy-1.2.1.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/libs/gnome/gegl/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/gegl/-/blob/master/docs/development.adoc?ref_type=heads#user-content-debugging [source] tar = "https://download.gimp.org/pub/gegl/0.4/gegl-0.4.46.tar.xz" [build] template = "meson" mesonflags = [ "-Ddocs=false", "-Dgi-docgen=false", "-Dintrospection=false", "-Dparallel-tests=false", ] dependencies = [ "libpng", "glib", ] ================================================ FILE: recipes/wip/libs/gnome/gexiv2/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/gexiv2/-/blob/master/INSTALLING?ref_type=heads [source] tar = "https://download.gnome.org/sources/gexiv2/0.14/gexiv2-0.14.2.tar.xz" [build] template = "meson" mesonflags = [ "-Dintrospection=false" ] ================================================ FILE: recipes/wip/libs/gnome/glib-networking/recipe.toml ================================================ [source] tar = "https://download.gnome.org/sources/glib-networking/2.80/glib-networking-2.80.1.tar.xz" blake3 = "114a3ea41ea33d8cd01a61381b49fbf60278212ddd88c65f70c26137217be3fd" patches = ["redox.patch"] [build] template = "custom" dependencies = [ "glib", "gnutls3", ] script = """ DYNAMIC_INIT cookbook_meson \ -Ddefault_library=shared \ -Dgnome_proxy=disabled \ -Dlibproxy=disabled """ ================================================ FILE: recipes/wip/libs/gnome/glib-networking/redox.patch ================================================ diff -ruwN source-old/tls/tests/meson.build source/tls/tests/meson.build --- source-old/tls/tests/meson.build 2025-01-08 14:51:06.000000000 -0700 +++ source/tls/tests/meson.build 2025-11-10 20:33:28.041098208 -0700 @@ -40,7 +40,7 @@ test_programs = [ ['certificate', [], deps, [], [mock_pkcs11_module]], ['file-database', [], deps, [], []], - ['connection', ['mock-interaction.c'], deps, [], [mock_pkcs11_module]], + #TODO: RTLD_NEXT on Redox: ['connection', ['mock-interaction.c'], deps, [], [mock_pkcs11_module]], # DTLS tests are disabled until we fix https://gitlab.gnome.org/GNOME/glib-networking/issues/49 # ['dtls-connection', ['mock-interaction.c', 'lossy-socket.c'], deps, [], [mock_pkcs11_module]], ] ================================================ FILE: recipes/wip/libs/gnome/glibmm/recipe.toml ================================================ #TODO probably wrong template, see https://gitlab.gnome.org/GNOME/glibmm#building [source] tar = "https://download.gnome.org/sources/glibmm/2.78/glibmm-2.78.0.tar.xz" [build] template = "configure" dependencies = [ "glib", ] ================================================ FILE: recipes/wip/libs/gnome/gnome2-common/recipe.toml ================================================ #TODO probably wrong template [source] tar = "https://download.gnome.org/sources/gnome-common/2.34/gnome-common-2.34.0.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/gnome/gnome3-common/recipe.toml ================================================ #TODO Needs to determine the build system script [source] tar = "https://download.gnome.org/sources/gnome-common/3.18/gnome-common-3.18.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/gnome/gobject-introspection/recipe.toml ================================================ [source] tar = "https://download.gnome.org/sources/gobject-introspection/1.84/gobject-introspection-1.84.0.tar.xz" blake3 = "e01a810629b11b2fa415ba47d2df3ba521286e9933f6c2b364e959c26401eb96" [build] template = "custom" dependencies = [ "cairo", "glib", "libffi", "pcre2", "python312", "zlib", ] script = """ DYNAMIC_INIT cookbook_meson -Dpython="${COOKBOOK_SYSROOT}/usr/bin/python3.12" """ ================================================ FILE: recipes/wip/libs/gnome/graphene/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/ebassi/graphene#installation [source] tar = "https://download.gnome.org/sources/graphene/1.10/graphene-1.10.8.tar.xz" [build] template = "meson" mesonflags = [ "-Dtests=false", "-Dintrospection=false", ] ================================================ FILE: recipes/wip/libs/gnome/gtk-engines/recipe.toml ================================================ #TODO configuration problem, can't recognize the Redox target [source] tar = "https://download.gnome.org/sources/gtk-engines/2.91/gtk-engines-2.91.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/gnome/gtk-vnc/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/gtk-vnc/1.5/gtk-vnc-1.5.0.tar.xz" [build] template = "meson" mesonflags = [ "-Dintrospection=false" ] ================================================ FILE: recipes/wip/libs/gnome/gtk2/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-2-24/INSTALL.in [source] tar = "https://download.gnome.org/sources/gtk%2B/2.24/gtk%2B-2.24.33.tar.xz" [build] template = "configure" dependencies = [ "atk", "glib", "pango", "gdk-pixbuf", "cairo", "gobject-introspection", ] ================================================ FILE: recipes/wip/libs/gnome/gtk2mm/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/gtkmm/2.24/gtkmm-2.24.5.tar.xz" [build] template = "configure" dependencies = [ "gtk2", ] ================================================ FILE: recipes/wip/libs/gnome/gtk3/recipe.toml ================================================ #TODO promote [source] tar = "https://download.gnome.org/sources/gtk+/3.24/gtk%2B-3.24.43.tar.xz" blake3 = "5feab2bad81e6b5906895f70ddce6227cf96a6a14b16af0ef72c79991a48ddf4" patches = ["redox.patch"] [build] dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", #TODO "gobject-introspection", "harfbuzz", "libepoxy", "libffi", "libiconv", "libjpeg", "libpng", "libpthread-stubs", "libwayland", "libx11", "libxau", "libxkbcommon", "libxcb", "libxext", "libxfixes", "libxi", "libxrandr", "libxrender", "libxxf86vm", "mesa-x11", "pango", "pcre2", "pixman", "shared-mime-info", "wayland-protocols", "x11proto", "zlib", ] template = "custom" script = """ DYNAMIC_INIT CFLAGS="${CFLAGS} -DM_SQRT2=1.41421356237309504880" cookbook_meson \ -Dintrospection=false """ ================================================ FILE: recipes/wip/libs/gnome/gtk3/redox.patch ================================================ diff -ruwN source-old/gdk/wayland/gdkdevice-wayland.c source/gdk/wayland/gdkdevice-wayland.c --- source-old/gdk/wayland/gdkdevice-wayland.c 2024-07-10 11:03:14.000000000 -0600 +++ source/gdk/wayland/gdkdevice-wayland.c 2025-11-13 09:46:58.493081022 -0700 @@ -44,6 +44,12 @@ #include #elif defined(HAVE_LINUX_INPUT_H) #include +#else +#define BTN_LEFT 0x110 +#define BTN_RIGHT 0x111 +#define BTN_MIDDLE 0x112 +#define BTN_STYLUS 0x14b +#define BTN_STYLUS2 0x14c #endif #define BUTTON_BASE (BTN_LEFT - 1) /* Used to translate to 1-indexed buttons */ diff -ruwN source-old/gdk/wayland/gdkdisplay-wayland.c source/gdk/wayland/gdkdisplay-wayland.c --- source-old/gdk/wayland/gdkdisplay-wayland.c 2024-07-10 11:03:14.000000000 -0600 +++ source/gdk/wayland/gdkdisplay-wayland.c 2025-11-13 09:44:55.926622693 -0700 @@ -28,7 +28,9 @@ #endif #include +#if defined (__NR_memfd_create) #include +#endif #include #include "gdkwayland.h" diff -ruwN source-old/gtk/a11y/gtkaccessibility.c source/gtk/a11y/gtkaccessibility.c --- source-old/gtk/a11y/gtkaccessibility.c 2024-07-10 11:03:14.000000000 -0600 +++ source/gtk/a11y/gtkaccessibility.c 2025-11-12 12:32:06.969908669 -0700 @@ -37,7 +37,7 @@ #include #include -#ifdef GDK_WINDOWING_X11 +#if defined(GDK_WINDOWING_X11) && !defined(__redox__) #include #endif @@ -254,7 +254,7 @@ } } -#ifdef GDK_WINDOWING_X11 +#if defined(GDK_WINDOWING_X11) && !defined(__redox__) /* * If the focus widget is a GtkSocket without a plug * then ignore the focus notification as the embedded @@ -986,7 +986,7 @@ _gtk_accessibility_override_atk_util (); do_window_event_initialization (); -#ifdef GDK_WINDOWING_X11 +#if defined(GDK_WINDOWING_X11) && !defined(__redox__) atk_bridge_adaptor_init (NULL, NULL); #endif diff -ruwN source-old/gtk/gtkmain.c source/gtk/gtkmain.c --- source-old/gtk/gtkmain.c 2024-07-10 11:03:14.000000000 -0600 +++ source/gtk/gtkmain.c 2025-11-12 12:32:06.970182803 -0700 @@ -355,7 +355,7 @@ check_setugid (void) { /* this isn't at all relevant on MS Windows and doesn't compile ... --hb */ -#ifndef G_OS_WIN32 +#if !defined(G_OS_WIN32) && !defined(__redox__) uid_t ruid, euid, suid; /* Real, effective and saved user ID's */ gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */ diff -ruwN source-old/meson.build source/meson.build --- source-old/meson.build 2024-07-10 11:03:14.000000000 -0600 +++ source/meson.build 2025-11-12 12:32:06.970463189 -0700 @@ -565,7 +565,7 @@ xfixes_dep = dependency('xfixes', required: false) xcomposite_dep = dependency('xcomposite', required: false) fontconfig_dep = dependency('fontconfig', fallback: ['fontconfig', 'fontconfig_dep']) - atkbridge_dep = dependency('atk-bridge-2.0', version: at_spi2_atk_req) + #TODO atkbridge_dep = dependency('atk-bridge-2.0', version: at_spi2_atk_req) backend_immodules += ['xim'] @@ -584,7 +584,7 @@ x11_pkgs += ['xdamage'] endif - atk_pkgs += ['atk-bridge-2.0'] + #atk_pkgs += ['atk-bridge-2.0'] cdata.set('HAVE_XDAMAGE', xdamage_dep.found() ? 1 : false) cdata.set('HAVE_XCURSOR', xcursor_dep.found() ? 1 : false) ================================================ FILE: recipes/wip/libs/gnome/gtk3mm/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gnome.pages.gitlab.gnome.org/gtkmm-documentation/sec-install-unix-and-linux.html [source] tar = "https://download.gnome.org/sources/gtkmm/3.24/gtkmm-3.24.10.tar.xz" [build] template = "meson" mesonflags = ["-Dbuild-tests=false"] dependencies = [ "libsigcpp", "gtk3", "glibmm", "cairomm10+", "pangomm", ] ================================================ FILE: recipes/wip/libs/gnome/gtk4/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://docs.gtk.org/gtk4/building.html [source] tar = "https://download.gnome.org/sources/gtk/4.20/gtk-4.20.3.tar.xz" [build] template = "meson" mesonflags = [ "-Dwayland-backend=false", "-Dintrospection=false", "-Dprofile=default", "-Dbuild-testsuite=false", "-Dbuild-tests=false", ] dependencies = [ "glib", "gdk-pixbuf", "pango", "cairo", "libepoxy", "atk", "shared-mime-info", "graphene", "libxkbcommon", "gstreamer", ] ================================================ FILE: recipes/wip/libs/gnome/gtk4mm/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gnome.pages.gitlab.gnome.org/gtkmm-documentation/sec-install-unix-and-linux.html [source] tar = "https://download.gnome.org/sources/gtkmm/4.21/gtkmm-4.21.3.tar.xz" [build] template = "meson" mesonflags = ["-Dbuild-tests=false"] dependencies = [ "libsigcpp", "gtk4", "glibmm", "cairomm116+", "pangomm", ] ================================================ FILE: recipes/wip/libs/gnome/gtkglext/recipe.toml ================================================ #TODO configuration problem, can't recognize the Redox target [source] tar = "https://download.gnome.org/sources/gtkglext/1.2/gtkglext-1.2.0.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/libs/gnome/gtksourceview/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/gtksourceview#installation [source] tar = "https://download.gnome.org/sources/gtksourceview/5.10/gtksourceview-5.10.0.tar.xz" [build] template = "meson" mesonflags = [ "-Dbuild-testsuite=false", "-Dintrospection=false", ] dependencies = [ "glib", "gtk4", "libxml2", "fribidi", "pcre", ] ================================================ FILE: recipes/wip/libs/gnome/json-glib/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/json-glib/#build-and-installation [source] tar = "https://download.gnome.org/sources/json-glib/1.8/json-glib-1.8.0.tar.xz" [build] template = "meson" mesonflags = [ "-Dintrospection=false", "-Ddocumentation=false", "-Dgtk_doc=false", "-Dtests=false", "-Dconformance=false", "-Dinstalled_tests=false", ] dependencies = [ "glib", ] ================================================ FILE: recipes/wip/libs/gnome/jsonrpc-glib/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/jsonrpc-glib#building [source] tar = "https://download.gnome.org/sources/jsonrpc-glib/3.44/jsonrpc-glib-3.44.0.tar.xz" [build] template = "meson" mesonflags = [ "-Dwith_introspection=false", "-Denable_tests=false", ] dependencies = [ "glib", ] ================================================ FILE: recipes/wip/libs/gnome/libadwaita/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/libadwaita#building [source] tar = "https://download.gnome.org/sources/libadwaita/1.8/libadwaita-1.8.4.tar.xz" [build] template = "meson" mesonflags = ["-Dtests=false"] ================================================ FILE: recipes/wip/libs/gnome/libart/recipe.toml ================================================ #TODO can't recognize the Redox target [source] tar = "https://download.gnome.org/sources/libart_lgpl/2.3/libart_lgpl-2.3.21.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/libs/gnome/libayatana-appindicator-glib/recipe.toml ================================================ [source] tar = "https://github.com/AyatanaIndicators/libayatana-appindicator-glib/archive/refs/tags/2.0.1.tar.gz" blake3 = "5c7e39f29b23cd5c14a6eacbe0c0bf16dfd28b9b013ec011421d5d6e5742ba2d" patches = ["redox.patch"] [build] dependencies = [ "glib", ] template = "cmake" ================================================ FILE: recipes/wip/libs/gnome/libayatana-appindicator-glib/redox.patch ================================================ diff -ruwN source-old/bindings/CMakeLists.txt source/bindings/CMakeLists.txt --- source-old/bindings/CMakeLists.txt 2025-06-15 04:50:44.000000000 -0600 +++ source/bindings/CMakeLists.txt 2025-11-15 08:33:35.889512652 -0700 @@ -1 +1 @@ -add_subdirectory (vala) +#TODO: valac: add_subdirectory (vala) diff -ruwN source-old/CMakeLists.txt source/CMakeLists.txt --- source-old/CMakeLists.txt 2025-06-15 04:50:44.000000000 -0600 +++ source/CMakeLists.txt 2025-11-15 08:33:53.996379724 -0700 @@ -38,7 +38,7 @@ add_subdirectory (src) add_subdirectory (bindings) -add_subdirectory (doc) +#TODO: gi-docgen: add_subdirectory (doc) if (ENABLE_TESTS) include (CTest) diff -ruwN source-old/src/CMakeLists.txt source/src/CMakeLists.txt --- source-old/src/CMakeLists.txt 2025-06-15 04:50:44.000000000 -0600 +++ source/src/CMakeLists.txt 2025-11-15 08:32:53.644475333 -0700 @@ -114,47 +114,49 @@ target_link_options ("ayatana-appindicator-glib" PRIVATE "LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator.symbols") install (TARGETS "ayatana-appindicator-glib" LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") -# AyatanaAppIndicatorGlib-2.0.gir - -find_package (GObjectIntrospection REQUIRED) - -add_custom_command ( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" - DEPENDS "ayatana-appindicator-glib" - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMAND - ${INTROSPECTION_SCANNER} - ayatana-appindicator.c ayatana-appindicator.h - --add-include-path=${CMAKE_CURRENT_BINARY_DIR} - --c-include=libayatana-appindicator-glib/ayatana-appindicator.h - --symbol-prefix=app - --identifier-prefix=App - --namespace=AyatanaAppIndicatorGlib - --nsversion=2.0 - --quiet - --warn-all - --include=Gio-2.0 - --include=GObject-2.0 - --library-path=${CMAKE_CURRENT_BINARY_DIR} - --library="ayatana-appindicator-glib" - --output "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" -) - -install (FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gir-1.0") - -# AyatanaAppIndicatorGlib-2.0.typelib - -add_custom_command ( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND - ${INTROSPECTION_COMPILER} - --includedir=${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir - -o "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" -) - -install (FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/girepository-1.0") - -add_custom_target ("src" ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib") +#TODO: gobject-introspection +## AyatanaAppIndicatorGlib-2.0.gir +# +#find_package (GObjectIntrospection REQUIRED) +# +#add_custom_command ( +# OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" +# DEPENDS "ayatana-appindicator-glib" +# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +# COMMAND +# ${INTROSPECTION_SCANNER} +# ayatana-appindicator.c ayatana-appindicator.h +# --add-include-path=${CMAKE_CURRENT_BINARY_DIR} +# --c-include=libayatana-appindicator-glib/ayatana-appindicator.h +# --symbol-prefix=app +# --identifier-prefix=App +# --namespace=AyatanaAppIndicatorGlib +# --nsversion=2.0 +# --quiet +# --warn-all +# --include=Gio-2.0 +# --include=GObject-2.0 +# --library-path=${CMAKE_CURRENT_BINARY_DIR} +# --library="ayatana-appindicator-glib" +# --output "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" +#) +# +#install (FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gir-1.0") +# +## AyatanaAppIndicatorGlib-2.0.typelib +# +#add_custom_command ( +# OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" +# DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir" +# WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +# COMMAND +# ${INTROSPECTION_COMPILER} +# --includedir=${CMAKE_CURRENT_BINARY_DIR} +# ${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.gir +# -o "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" +#) +# +#install (FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/girepository-1.0") +# +#add_custom_target ("src" ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicatorGlib-2.0.typelib") +# \ No newline at end of file ================================================ FILE: recipes/wip/libs/gnome/libdex/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/libdex#building [source] tar = "https://download.gnome.org/sources/libdex/0.4/libdex-0.4.1.tar.xz" [build] template = "meson" mesonflags = [ "-Dintrospection=false", "-Dtests=false", ] dependencies = [ "glib", ] ================================================ FILE: recipes/wip/libs/gnome/libepoxy/recipe.toml ================================================ [source] tar = "https://download.gnome.org/sources/libepoxy/1.5/libepoxy-1.5.10.tar.xz" blake3 = "0ccee9635115fe417cfc4bc33ffd160bf1e2852bd6c03816b4af771d59462f53" patches = ["redox.patch"] [build] template = "custom" dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxfixes", "libxxf86vm", "mesa-x11", "x11proto", "zlib", ] script = """ DYNAMIC_INIT cookbook_meson \ -Degl=yes \ -Dglx=yes \ -Dtests=false """ ================================================ FILE: recipes/wip/libs/gnome/libepoxy/redox.patch ================================================ diff -ruwN libepoxy-1.5.10/src/dispatch_common.c source/src/dispatch_common.c --- libepoxy-1.5.10/src/dispatch_common.c 2022-02-17 05:56:12.000000000 -0700 +++ source/src/dispatch_common.c 2025-05-04 17:57:31.910921783 -0600 @@ -264,13 +264,7 @@ long begin_count; }; -static struct api api = { -#ifndef _WIN32 - .mutex = PTHREAD_MUTEX_INITIALIZER, -#else - 0, -#endif -}; +static struct api api = {0}; static bool library_initialized; ================================================ FILE: recipes/wip/libs/gnome/libgee/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/libgee/0.20/libgee-0.20.8.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/gnome/libgspell-gtk3/recipe.toml ================================================ #TODO make gtk3 work [source] tar = "https://download.gnome.org/sources/gspell/1.12/gspell-1.12.2.tar.xz" [build] template = "configure" dependencies = [ "gtk3", "glib", "libicu", ] ================================================ FILE: recipes/wip/libs/gnome/libgspell-gtk4/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://gitlab.gnome.org/otrocodigo/gspell/-/archive/1.11.1/gspell-1.11.1.tar.bz2" script = """ autotools_recursive_regenerate """ [build] template = "configure" dependencies = [ "glib", "gtk4", "libicu", ] ================================================ FILE: recipes/wip/libs/gnome/libhandy/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/libhandy#building [source] tar = "https://download.gnome.org/sources/libhandy/1.8/libhandy-1.8.3.tar.xz" [build] template = "meson" mesonflags = [ "-Dtests=false" "-Dintrospection=false", ] dependencies = [ "glib", "gtk3", ] ================================================ FILE: recipes/wip/libs/gnome/libnotify/recipe.toml ================================================ #TODO: promote [source] tar = "https://download.gnome.org/sources/libnotify/0.8/libnotify-0.8.4.tar.xz" blake3 = "1c749e4f1cc85f88348bb363b6d78c8373baa19a6db4d2b3a4cf537c1af6b929" [build] dependencies = [ "gdk-pixbuf", "gtk3", ] template = "meson" mesonflags = [ "-Dgtk_doc=false", "-Dman=false", "-Dtests=false", "-Dintrospection=disabled", ] ================================================ FILE: recipes/wip/libs/gnome/libpanel/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] tar = "https://download.gnome.org/sources/libpanel/1.4/libpanel-1.4.0.tar.xz" [build] template = "meson" mesonflags = [ "-Dintrospection=false", "-Ddocs=false", ] ================================================ FILE: recipes/wip/libs/gnome/libpeas/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/libpeas [source] tar = "https://download.gnome.org/sources/libpeas/2.0/libpeas-2.0.0.tar.xz" [build] template = "meson" mesonflags = [ "-Dintrospection=false" ] ================================================ FILE: recipes/wip/libs/gnome/librsvg/recipe.toml ================================================ #TODO: version 2.59 and newer require cargo-c [source] tar = "https://download.gnome.org/sources/librsvg/2.58/librsvg-2.58.5.tar.xz" blake3 = "15ccac6309992ced51128825e9c3ebeb041705aeb8371507ffc4cebb6a1e4ce5" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "cairo", "freetype2", "gdk-pixbuf", "glib", "harfbuzz", "libffi", "libxml2", "pango", ] template = "custom" script = """ DYNAMIC_INIT export GDK_PIXBUF_QUERYLOADERS="/usr/lib/$(cc -dumpmachine)/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders" cookbook_configure --disable-introspection mv ${COOKBOOK_STAGE}/${COOKBOOK_SYSROOT}/usr/lib/gdk-pixbuf-2.0 ${COOKBOOK_STAGE}/usr/lib/gdk-pixbuf-2.0 """ ================================================ FILE: recipes/wip/libs/gnome/libsecret/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/libsecret/0.21/libsecret-0.21.7.tar.xz" [build] template = "meson" mesonflags = [ "-Dmanpage=false", "-Dgtk_doc=false", "-Dintrospection=false", ] dependencies = [ "libgcrypt", ] ================================================ FILE: recipes/wip/libs/gnome/libsigcpp/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/libsigcplusplus/libsigcplusplus#building-from-a-release-tarball [source] tar = "https://github.com/libsigcplusplus/libsigcplusplus/releases/download/3.8.0/libsigc++-3.8.0.tar.xz" [build] template = "meson" mesonflags = [ "-Dbuild-manual=false", "-Dbuild-tests=false", ] ================================================ FILE: recipes/wip/libs/gnome/libsoup/recipe.toml ================================================ #TODO: promote [source] tar = "https://download.gnome.org/sources/libsoup/3.6/libsoup-3.6.5.tar.xz" blake3 = "9e5214dfb310ac1bbf8ceb85724f2c79a1d5c94382f306080a6cdea47230e960" [build] dependencies = [ "gettext", "glib", "libffi", "libiconv", "libpsl", "nghttp2", "pcre2", "sqlite3", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_meson \ -Dintrospection=disabled \ -Dsysprof=disabled \ -Dtests=false \ -Dtls_check=false patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/lib/libsoup-3.0.so" """ ================================================ FILE: recipes/wip/libs/gnome/libspelling/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] tar = "https://download.gnome.org/sources/libspelling/0.4/libspelling-0.4.9.tar.xz" [build] template = "meson" mesonflags = [ "-Ddocs=false", "-Dintrospection=false", "-Dsysproof=false", "-Dvapi=false", ] ================================================ FILE: recipes/wip/libs/gnome/libwnck3/recipe.toml ================================================ #TODO: promote [source] tar = "https://download.gnome.org/sources/libwnck/43/libwnck-43.3.tar.xz" blake3 = "711e508f062cc90c660b56f21c5fd237db156ea51fe364fb5e9e766556c2de42" [build] dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", "gtk3", "harfbuzz", "libepoxy", "libffi", "libiconv", "libjpeg", "libpng", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxfixes", "libxft", "libxi", "libxrandr", "libxrender", "libxxf86vm", "mesa-x11", "pango", "pcre2", "pixman", "shared-mime-info", "x11proto", "zlib", ] template = "meson" mesonflags = [ "-Dintrospection=disabled", ] ================================================ FILE: recipes/wip/libs/gnome/libxslt/recipe.toml ================================================ #TODO: promote [source] tar = "https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.43.tar.xz" blake3 = "6c529acc02344fe48377810debadaee8eb0511a5553a8b7bea685d5282ab00cb" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libxml2", "xz", "zlib", ] template = "custom" script = """ DYNAMIC_INIT export CFLAGS="-llzma -lz" cookbook_configure --without-python """ ================================================ FILE: recipes/wip/libs/gnome/pangomm/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/pangomm/2.50/pangomm-2.50.1.tar.xz" [build] template = "configure" dependencies = [ "pango", ] ================================================ FILE: recipes/wip/libs/gnome/totem-pl-parser/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] tar = "https://download.gnome.org/sources/totem-pl-parser/3.26/totem-pl-parser-3.26.6.tar.xz" [build] template = "meson" mesonflags = [ "-Dintrospection=false" ] dependencies = [ "libxml2", "glib", ] ================================================ FILE: recipes/wip/libs/gnome/vte/recipe.toml ================================================ #TODO: promote [source] tar = "https://download.gnome.org/sources/vte/0.82/vte-0.82.1.tar.xz" blake3 = "2d16b6808c0eaa801d59ccabcae13e76ccd6229869dad1efe0524a4c83b53a87" patches = ["redox.patch"] [build] dependencies = [ "gnutls3", "gtk3", "lz4", "simdutf", ] template = "meson" mesonflags = [ "-Dgir=false", "-Dgtk4=false", "-Dvapi=false", #TODO: package fast_float? "--force-fallback-for=fast_float", ] ================================================ FILE: recipes/wip/libs/gnome/vte/redox.patch ================================================ diff -ruwN source-old/src/pty.cc source/src/pty.cc --- source-old/src/pty.cc 2025-10-11 14:43:24.000000000 -0600 +++ source/src/pty.cc 2025-11-17 17:54:03.387095202 -0700 @@ -222,7 +222,7 @@ if (peer_fd == -1) _exit(127); -#ifdef TIOCSCTTY +#if defined(TIOCSCTTY) && !defined(__redox__) /* On linux, opening the PTY peer above already made it our controlling TTY (since * previously there was none, after the setsid() call). However, it appears that e.g. * on *BSD, that doesn't happen, so we need this explicit ioctl here. diff -ruwN source-old/src/spawn.cc source/src/spawn.cc --- source-old/src/spawn.cc 2025-10-11 14:43:24.000000000 -0600 +++ source/src/spawn.cc 2025-11-17 17:53:20.394044419 -0700 @@ -409,7 +409,7 @@ if (peer_fd == -1) return ExecError::GETPTPEER; -#ifdef TIOCSCTTY +#if defined(TIOCSCTTY) && !defined(__redox__) /* On linux, opening the PTY peer above already made it our controlling TTY (since * previously there was none, after the setsid() call). However, it appears that e.g. * on *BSD, that doesn't happen, so we need this explicit ioctl here. diff -ruwN source-old/src/vte.cc source/src/vte.cc --- source-old/src/vte.cc 2025-10-11 14:43:24.000000000 -0600 +++ source/src/vte.cc 2025-11-17 17:54:44.394149937 -0700 @@ -19,7 +19,9 @@ #include "config.h" #include +#if !defined(__redox__) #include +#endif #include #include #include diff -ruwN source-old/src/vteseq.cc source/src/vteseq.cc --- source-old/src/vteseq.cc 2025-10-11 14:43:24.000000000 -0600 +++ source/src/vteseq.cc 2025-11-17 17:59:27.278790468 -0700 @@ -19,7 +19,9 @@ #include "config.h" +#if !defined(__redox__) #include +#endif #include #include #include diff -ruwN source-old/src/widget.cc source/src/widget.cc --- source-old/src/widget.cc 2025-10-11 14:43:24.000000000 -0600 +++ source/src/widget.cc 2025-11-17 18:22:10.229089619 -0700 @@ -927,6 +927,9 @@ } if (m_terminal->terminate_child()) { + #ifndef W_EXITCODE + #define W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) + #endif int status = W_EXITCODE(0, SIGKILL); emit_child_exited(status); } ================================================ FILE: recipes/wip/libs/gnome/xdg-user-dirs-gtk/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/xdg-user-dirs-gtk/0.14/xdg-user-dirs-gtk-0.14.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/libs/gnome/zenity/recipe.toml ================================================ #TODO: promote [source] tar = "https://download.gnome.org/sources/zenity/3.44/zenity-3.44.5.tar.xz" blake3 = "de4c662bd33107e9247c23d248e4b1b51a68994b01ecefda77422e1007b11c1e" [build] dependencies = [ "gtk3", ] dev-dependencies = [ "host:itstool" ] template = "meson" ================================================ FILE: recipes/wip/libs/graphics/libnoise/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/qknight/libnoise" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/graphics/libvulkan/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/KhronosGroup/Vulkan-Loader/blob/main/BUILD.md [source] git = "https://github.com/KhronosGroup/Vulkan-Loader" rev = "v1.4.346" shallow_clone = true [build] template = "cmake" dependencies = [ "libxkbcommon", ] ================================================ FILE: recipes/wip/libs/graphics/vulkan-headers/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/KhronosGroup/Vulkan-Headers" rev = "v1.4.346" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/gui/girara/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://pwmt.org/projects/girara/installation/ [source] tar = "https://pwmt.org/projects/girara/download/girara-0.4.5.tar.xz" [build] template = "meson" mesonflags = [ "-Dtests=disabled", "-Ddocs=disabled", ] dependencies = [ "gtk3", ] ================================================ FILE: recipes/wip/libs/gui/imgui/recipe.toml ================================================ #TODO not compiled or tested # cmake information: https://github.com/ocornut/imgui/pull/3027 [source] git = "https://github.com/Qix-/imgui" branch = "cmake" shallow_clone = true [build] template = "cmake" dependencies = ["sdl2"] ================================================ FILE: recipes/wip/libs/gui/libappindicator/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://old-releases.ubuntu.com/ubuntu/pool/universe/liba/libappindicator/libappindicator_12.10.1+20.10.20200706.1.orig.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/hw/libratbag/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/libratbag/libratbag" rev = "v0.18" shallow_clone = true [build] template = "meson" mesonflags = [ "-Dtests=false", "-Dlogind-provider=elogind", "-Dsystemd=false", ] dependencies = [ "elogind", "eudev", "libevdev", "libunistring", "json-glib", "glib", ] ================================================ FILE: recipes/wip/libs/image/libavif/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/AOMediaCodec/libavif#build-notes [source] git = "https://github.com/AOMediaCodec/libavif" rev = "v1.4.0" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/image/libgphoto2/recipe.toml ================================================ #TODO can't find libtool [source] tar = "https://sourceforge.net/projects/gphoto/files/libgphoto/2.5.31/libgphoto2-2.5.31.tar.xz/download" [build] template = "configure" ================================================ FILE: recipes/wip/libs/image/libheif/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/strukturag/libheif#compiling [source] tar = "https://github.com/strukturag/libheif/releases/download/v1.17.5/libheif-1.17.5.tar.gz" [build] template = "cmake" cmakeflags = [ "-DBUILD_DOCUMENTATION=OFF", "-DBUILD_TESTING=OFF", ] dependencies = [ "x265", "libde265", ] ================================================ FILE: recipes/wip/libs/image/libjxl/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/libjxl/libjxl/blob/main/BUILDING.md [source] git = "https://github.com/libjxl/libjxl" branch = "v0.11.x" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_TESTING=OFF", "-DJPEGXL_ENABLE_DOXYGEN=OFF", "-DJPEGXL_ENABLE_MANPAGES=OFF", ] dependencies = [ "libbrotli", "libjpeg", "libgif", "libpng", "libwebp", "openexr", ] ================================================ FILE: recipes/wip/libs/image/libraw/recipe.toml ================================================ #TODO compilation error [source] tar = "https://www.libraw.org/data/LibRaw-0.21.1.tar.gz" [build] template = "configure" dependencies = [ "zlib", "libjasper", "libjpeg", "liblcms", ] ================================================ FILE: recipes/wip/libs/image/libsixel/recipe.toml ================================================ #TODO can't find libjpeg [source] tar = "https://github.com/saitoha/libsixel/releases/download/v1.8.6/libsixel-1.8.6.tar.gz" [build] template = "configure" configureflags = [ "--with-jpeg", "--with-png", ] dependencies = [ "libpng", "libjpeg", ] ================================================ FILE: recipes/wip/libs/image/libwebp/recipe.toml ================================================ #TODO: promote [source] tar = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.5.0.tar.gz" blake3 = "8272270920a317b854b059e86c320dbdb5a2032937072bbfd5f3304d601a92cb" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libgif", "libjpeg", "libpng", "libtiff", ] template = "configure" ================================================ FILE: recipes/wip/libs/image/libwebp2/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://chromium.googlesource.com/codecs/libwebp2/#compiling [source] git = "https://chromium.googlesource.com/codecs/libwebp2" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DWP2_BUILD_TESTS=OFF", "-DWP2_INSTALL_TESTS=OFF", ] ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-activities/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kactivities-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-activities-stats/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kactivities-stats-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-apidox/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kapidox-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-archive/recipe.toml ================================================ #TODO maybe incomplete script, see https://invent.kde.org/frameworks/karchive/-/blob/master/INSTALL?ref_type=heads [source] tar = "https://download.kde.org/stable/frameworks/5.112/karchive-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-attica/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/attica-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-auth/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kauth-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-baloo/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/baloo-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-bookmarks/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kbookmarks-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-calendarcore/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcalendarcore-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-cmake-modules/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/extra-cmake-modules-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-cmutils/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcmutils-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-codecs/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcodecs-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-completion/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcompletion-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-config/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kconfig-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-configwidgets/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kconfigwidgets-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-contacts/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcontacts-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-coreaddons/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcoreaddons-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-crash/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kcrash-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-dav/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdav-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-dbusaddons/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdbusaddons-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-declarative/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdeclarative-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-dnssd/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdnssd-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-doctools/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdoctools-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-emoticons/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kemoticons-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-filemetadata/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kfilemetadata-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-frameworkintegration/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/frameworkintegration-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-globalaccel/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kglobalaccel-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-guiaddons/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kguiaddons-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-holidays/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kholidays-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-i18n/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/ki18n-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-iconthemes/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kiconthemes-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-idletime/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kidletime-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-init/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kinit-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-io/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kio-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-itemmodels/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kitemmodels-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-itemviews/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kitemviews-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-jobwidgets/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kjobwidgets-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-kded/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kded-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-kdesu/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kdesu-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-kirigami/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kirigami-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-modem-manager/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/modemmanager-qt5-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-networkmanager/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/networkmanager-qt5-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-newstuff/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/knewstuff-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-notifications/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/knotifications-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-notifyconfig/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/knotifyconfig-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-package/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kpackage-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-parts/recipe.toml ================================================ #TODO missing script for building, lacking build instructions [source] tar = "https://invent.kde.org/frameworks/kparts/-/archive/v5.112.0/kparts-v5.112.0.tar.bz2" [build] template = "custom" ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-people/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kpeople-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-plasma-framework/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/plasma-framework-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-plotting/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kplotting-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-prison/recipe.toml ================================================ #TODO maybe incomplte script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/prison-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-pty/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kpty-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-purpose/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/purpose-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-qqc2-desktop-style/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/qqc2-desktop-style-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-quickcharts/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kquickcharts-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-runner/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/krunner-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-service/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kservice-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-solid/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/solid-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-sonnet/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/sonnet-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-syndication/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/syndication-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-syntax-highlighting/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/syntax-highlighting-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-sysguard/recipe.toml ================================================ #TODO missing script for building, lacking build instructions [source] tar = "https://invent.kde.org/plasma/libksysguard/-/archive/v5.27.10/libksysguard-v5.27.10.tar.bz2" [build] template = "custom" ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-texteditor/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/ktexteditor-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-textwidgets/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/ktextwidgets-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-threadweaver/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/threadweaver-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-unitconversion/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kunitconversion-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-wayland/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kwayland-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-widgetaddons/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kwidgetaddons-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-windowsystem/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kwindowsystem-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf5/kf5-xmlgui/recipe.toml ================================================ #TODO maybe incomplete script, lacking build instructions [source] tar = "https://download.kde.org/stable/frameworks/5.112/kxmlgui-5.112.0.tar.xz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE="cmake" COOKBOOK_CONFIGURE_FLAGS=( -DCMAKE_BUILD_TYPE=Release -DCMAKE_CROSSCOMPILING=True -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_INSTALL_PREFIX="/" -DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}" -DCMAKE_SYSTEM_NAME=Generic -DCMAKE_SYSTEM_PROCESSOR="$(echo "${TARGET}" | cut -d - -f1)" -DCMAKE_VERBOSE_MAKEFILE=On "${COOKBOOK_SOURCE}" ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/kde/kf6/kcodecs6/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.kde.org/stable/frameworks/6.19/kcodecs-6.19.0.tar.xz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/kde/kf6/ktexteditor6/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.kde.org/stable/frameworks/6.19/ktexteditor-6.19.0.tar.xz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/kde/libkdcraw/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://invent.kde.org/graphics/libkdcraw/-/blob/master/README?ref_type=heads [source] git = "https://invent.kde.org/graphics/libkdcraw" branch = "release/25.12" shallow_clone = true [build] template = "cmake" dependencies = [ "libraw", "qt5-base", ] ================================================ FILE: recipes/wip/libs/kde/libkomparediff2/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] git = "https://invent.kde.org/sdk/libkomparediff2" branch = "release/25.12" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/kde/libseexpr-kde/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://invent.kde.org/graphics/kseexpr#super-impatient-cmake-building-and-installing-guide [source] git = "https://invent.kde.org/graphics/kseexpr" rev = "v6.0.0.0" shallow_clone = true [build] template = "cmake" dependencies = [ "qt5-base", ] ================================================ FILE: recipes/wip/libs/lua/lpeg/recipe.toml ================================================ [source] tar = "https://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.1.0.tar.gz" blake3 = "69fc6eaa1a1749937b7216e3d655cf47a7802ffe407f8f857664e999a7b7377b" [build] template = "custom" dependencies = [ "luajit", ] script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ make linux CC="${CC} -I${COOKBOOK_SYSROOT}/include/luajit-2.1" mkdir -p ${COOKBOOK_STAGE}/usr/lib/pkgconfig cp lpeg.so ${COOKBOOK_STAGE}/usr/lib/liblpeg.so.1 ln -s "liblpeg.so.1" ${COOKBOOK_STAGE}/usr/lib/liblpeg.so """ ================================================ FILE: recipes/wip/libs/ml/libtorch/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/pytorch/pytorch/blob/main/docs/libtorch.rst#building-libtorch-using-cmake [source] git = "https://github.com/pytorch/pytorch" branch = "release/2.3" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DPYTHON_EXECUTABLE=`which python3`", "-DCMAKE_INSTALL_PREFIX=../pytorch-install ../pytorch", ] ================================================ FILE: recipes/wip/libs/mobile/libimobiledevice/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/libimobiledevice/libimobiledevice/releases/download/1.3.0/libimobiledevice-1.3.0.tar.bz2" [build] template = "configure" dependencies = [ "libtatsu", "libplist", "libusbmuxd", "openssl3", ] ================================================ FILE: recipes/wip/libs/mobile/libusbmuxd/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/libimobiledevice/libusbmuxd/releases/download/2.1.0/libusbmuxd-2.1.0.tar.bz2" [build] template = "configure" dependencies = [ "libplist", ] ================================================ FILE: recipes/wip/libs/mozjs/recipe.toml ================================================ #TODO "No suitable wgpu::Adapter found" error on execution [source] git = "https://gitlab.redox-os.org/njskalski/mozjs.git" branch = "redox_mods" [build] template = "custom" #these dependencies are copied from Servo recipe. Some of them may be redundant, but I needed to reproduce the build bug. dependencies = [ "freetype2", "gettext", "glib", "gstreamer", "harfbuzz", "libffi", "libiconv", "libx11", "libxcb", "libpng", "openssl1", "pcre", "zlib", "x11proto", "x11proto-kb", "xcb-proto", "xextproto", "libxau", "libpthread-stubs", "fontconfig", "expat", "gcc13", ] script = """ # Build the library crates "${COOKBOOK_REDOXER}" build --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" --workspace --release # Library crates don't need installation, they're used as dependencies """ ================================================ FILE: recipes/wip/libs/net/c-ares/recipe.toml ================================================ #TODO: test again [source] tar = "https://github.com/c-ares/c-ares/releases/download/v1.34.6/c-ares-1.34.6.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/net/libfilezilla/recipe.toml ================================================ #TODO not compiled or tested # build instructions - https://svn.filezilla-project.org/filezilla/libfilezilla/trunk/INSTALL?view=markup [source] tar = "https://dl2.cdn.filezilla-project.org/libfilezilla/libfilezilla-0.48.1.tar.xz?h=ABnRzj5uctW-vLCfNWW5mQ&x=1722822577" [build] template = "configure" dependencies = [ "libnettle", "gnutls3", ] ================================================ FILE: recipes/wip/libs/net/libidn/recipe.toml ================================================ #TODO fix libunistring [source] tar = "https://ftp.gnu.org/gnu/libidn/libidn2-2.3.7.tar.gz" [build] template = "configure" dependencies = [ "libunistring", "libiconv", ] ================================================ FILE: recipes/wip/libs/net/libtirpc/recipe.toml ================================================ #TODO: does not compile [source] tar = "https://downloads.sourceforge.net/libtirpc/libtirpc-1.3.6.tar.bz2" blake3 = "3ca1feefee3a216bb82bba35dfb455cac8524b8d8404767b01772f3b8fd00eea" script = """ autotools_recursive_regenerate """ [build] template = "configure" configureflags = ["--disable-gssapi"] ================================================ FILE: recipes/wip/libs/net/libtorrent/recipe.toml ================================================ #TODO missing script for bbv2: https://libtorrent.org/building.html [source] tar = "https://github.com/arvidn/libtorrent/releases/download/v2.0.11/libtorrent-rasterbar-2.0.11.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/net/nghttp3/recipe.toml ================================================ #TODO: test again [source] tar = "https://github.com/ngtcp2/nghttp3/releases/download/v1.15.0/nghttp3-1.15.0.tar.xz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/net/ngtcp2/recipe.toml ================================================ #TODO: test again #TODO Maybe need openssl 1.1.1 [source] tar = "https://github.com/ngtcp2/ngtcp2/releases/download/v1.21.0/ngtcp2-1.21.0.tar.xz" [build] template = "cmake" cmakeflags = ["-DENABLE_OPENSSL=OFF"] ================================================ FILE: recipes/wip/libs/other/appstream/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/ximion/appstream#build--install #TODO missing dependencies [source] tar = "https://www.freedesktop.org/software/appstream/releases/AppStream-1.1.2.tar.xz" [build] template = "meson" mesonflags = [ "-Dsystemd=false", "-Dgir=false", "-Dman=off", ] dependencies = [ "glib", "libxml2", "curl", ] ================================================ FILE: recipes/wip/libs/other/aws-lc-rs/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/njskalski/aws-lc-rs.git" branch = "redox_mods" [build] template = "custom" script = """ # we need HOST != TARGET, because otherwise we get this error: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189 # by this line https://gitlab.redox-os.org/njskalski/aws-lc-rs/-/blob/main/aws-lc-sys/builder/cc_builder.rs#L493 export HOST=x86_64-linux-gnu rsync -a --delete "${COOKBOOK_SOURCE}/" ./ cargo build -p aws-lc-sys --target ${TARGET} --release cargo build -p aws-lc-rs --target ${TARGET} --release """ ================================================ FILE: recipes/wip/libs/other/babl/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/babl/-/blob/master/INSTALL.in?ref_type=heads [source] tar = "https://download.gimp.org/pub/babl/0.1/babl-0.1.124.tar.xz" [build] template = "meson" mesonflags = [ "-Dwith-docs=false", "-Denable-gir=false", "-Denable-vapi=false", "-Dgi-docgen=false", ] ================================================ FILE: recipes/wip/libs/other/boost/recipe.toml ================================================ # TODO: Compiled, not tested [source] tar = "https://archives.boost.io/release/1.90.0/source/boost_1_90_0.tar.gz" blake3 = "1c1b0fe7596e3f72dba529b2d0bc6d330cc00610f8d3b3e3b6f20bad43fc388d" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ # "libiconv", # TODO: more locale functions, relibc locales are stubs anyway # "openssl3", # TODO: not linked # "zstd", # TODO: not linked ] script = """ DYNAMIC_INIT case "${TARGET}" in i586-unknown-redox) ADDRESS_MODEL=32 ARCHITECTURE=x86 ABI=sysv;; x86_64-unknown-redox) ADDRESS_MODEL=64 ARCHITECTURE=x86 ABI=sysv;; aarch64-unknown-redox) ADDRESS_MODEL=64 ARCHITECTURE=arm ABI=aapcs;; riscv64gc-unknown-redox) ADDRESS_MODEL=64 ARCHITECTURE=riscv ABI=sysv;; esac # See https://beta.boost.org/build/doc/html/bbv2/reference/tools.html#bbv2.reference.tools.compiler.gcc echo "using gcc : : ${CXX} : \"${CFLAGS} ${CPPFLAGS}\" \"${CXXFLAGS} ${CPPFLAGS}\" \"${LDFLAGS}\" \"shared\" ; " > ./user-config.jam # echo "using openssl ; " >> ./user-config.jam # echo "using zstd ; " >> ./user-config.jam skip_libraries=( stacktrace # requires dlsym(RTLD_NEXT) python # TODO ) export OPENSSL_ROOT="${COOKBOOK_SYSROOT}/usr" pushd "${COOKBOOK_SOURCE}" ./bootstrap.sh --without-libraries=$(IFS=, ; echo "${skip_libraries[*]}") \ --with-toolset=gcc --with-libraries=all --prefix=${COOKBOOK_STAGE}/usr # TODO: add "-sICONV_PATH=${COOKBOOK_SYSROOT}" when locales work # TODO: implement target-os=redox ./b2 "--user-config=${COOKBOOK_BUILD}/user-config.jam" target-os=linux pch=off \ "--build-dir=${COOKBOOK_BUILD}" toolset=gcc architecture=${ARCHITECTURE} address-model=${ADDRESS_MODEL} abi=${ABI} binary-format=elf install popd """ [[optional-packages]] name = "dev" files = [ "usr/include/**", "usr/lib/*.a", "usr/lib/cmake/**", ] ================================================ FILE: recipes/wip/libs/other/boost/redox.patch ================================================ diff -ruwN source/boost/asio/detail/config.hpp source-new/boost/asio/detail/config.hpp --- source/boost/asio/detail/config.hpp 2025-12-03 20:46:38.000000000 +0700 +++ source-new/boost/asio/detail/config.hpp 2026-03-13 20:55:39.534429549 +0700 @@ -1395,7 +1395,7 @@ # if defined(__linux__) # define BOOST_ASIO_HAS_MSG_NOSIGNAL 1 # elif defined(_POSIX_VERSION) -# if (_POSIX_VERSION >= 200809L) +# if (_POSIX_VERSION >= 200809L) && !defined(__redox__) # define BOOST_ASIO_HAS_MSG_NOSIGNAL 1 # endif // _POSIX_VERSION >= 200809L # endif // defined(_POSIX_VERSION) diff -ruwN source/boost/config/detail/select_platform_config.hpp source-new/boost/config/detail/select_platform_config.hpp --- source/boost/config/detail/select_platform_config.hpp 2025-12-03 20:46:39.000000000 +0700 +++ source-new/boost/config/detail/select_platform_config.hpp 2026-03-13 20:45:55.392659272 +0700 @@ -69,6 +69,10 @@ // QNX: # define BOOST_PLATFORM_CONFIG "boost/config/platform/qnxnto.hpp" +#elif defined(__redox__) +// Redox: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/redox.hpp" + #elif defined(__VXWORKS__) // vxWorks: # define BOOST_PLATFORM_CONFIG "boost/config/platform/vxworks.hpp" @@ -135,6 +139,7 @@ # include "boost/config/platform/aix.hpp" # include "boost/config/platform/amigaos.hpp" # include "boost/config/platform/qnxnto.hpp" +# include "boost/config/platform/redox.hpp" # include "boost/config/platform/vxworks.hpp" # include "boost/config/platform/symbian.hpp" # include "boost/config/platform/cray.hpp" diff -ruwN source/boost/config/platform/redox.hpp source-new/boost/config/platform/redox.hpp --- source/boost/config/platform/redox.hpp 1970-01-01 07:00:00.000000000 +0700 +++ source-new/boost/config/platform/redox.hpp 2026-03-14 02:47:45.335839093 +0700 @@ -0,0 +1,23 @@ +// (C) Copyright Jim Douglas 2005. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// REDOX specific config options: + +#define BOOST_PLATFORM "REDOX" + +#undef BOOST_HAS_LOG1P +#undef BOOST_HAS_EXPM1 + +#define BOOST_HAS_PTHREADS + +#define BOOST_HAS_GETTIMEOFDAY +#define BOOST_HAS_CLOCK_GETTIME +#define BOOST_HAS_SCHED_YIELD + +// boilerplate code: +#define BOOST_HAS_UNISTD_H +#include diff -ruwN source/boost/interprocess/detail/workaround.hpp source-new/boost/interprocess/detail/workaround.hpp --- source/boost/interprocess/detail/workaround.hpp 2025-12-03 20:46:42.000000000 +0700 +++ source-new/boost/interprocess/detail/workaround.hpp 2026-03-13 20:53:19.211459550 +0700 @@ -41,7 +41,7 @@ ////////////////////////////////////////////////////// //Check for XSI shared memory objects. They are available in nearly all UNIX platforms ////////////////////////////////////////////////////// - #if !defined(__QNXNTO__) && !defined(__ANDROID__) && !defined(__HAIKU__) && !(__VXWORKS__) && !(__EMSCRIPTEN__) + #if !defined(__QNXNTO__) && !defined(__ANDROID__) && !defined(__HAIKU__) && !defined(__redox__) && !(__VXWORKS__) && !(__EMSCRIPTEN__) #define BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS #endif diff -ruwN source/boost/interprocess/mapped_region.hpp source-new/boost/interprocess/mapped_region.hpp --- source/boost/interprocess/mapped_region.hpp 2025-12-03 20:46:42.000000000 +0700 +++ source-new/boost/interprocess/mapped_region.hpp 2026-03-13 21:29:41.935220888 +0700 @@ -816,7 +816,7 @@ } int ret = -1; switch(mode){ - #if defined(POSIX_MADV_NORMAL) + #if defined(POSIX_MADV_NORMAL) && !defined(__redox__) case mode_padv: { ret = posix_madvise(this->priv_map_address(), this->priv_map_size(), unix_advice); diff -ruwN source/boost/process/v2/detail/environment_posix.hpp source-new/boost/process/v2/detail/environment_posix.hpp --- source/boost/process/v2/detail/environment_posix.hpp 2025-12-03 20:46:45.000000000 +0700 +++ source-new/boost/process/v2/detail/environment_posix.hpp 2026-03-14 03:07:36.937337542 +0700 @@ -19,7 +19,7 @@ # if !defined(environ) # define environ (*_NSGetEnviron()) # endif -#elif defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun) +#elif defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun) || defined(__redox__) extern "C" { extern char **environ; } #endif diff -ruwN source/boost/process/v2/posix/default_launcher.hpp source-new/boost/process/v2/posix/default_launcher.hpp --- source/boost/process/v2/posix/default_launcher.hpp 2025-12-03 20:46:45.000000000 +0700 +++ source-new/boost/process/v2/posix/default_launcher.hpp 2026-03-14 03:07:38.549349038 +0700 @@ -35,7 +35,7 @@ # if !defined(environ) # define environ (*_NSGetEnviron()) # endif -#elif defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun) +#elif defined(__MACH__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun) || defined(__redox__) extern "C" { extern char **environ; } #endif diff -ruwN source/libs/process/src/shell.cpp source-new/libs/process/src/shell.cpp --- source/libs/process/src/shell.cpp 2025-12-03 20:46:45.000000000 +0700 +++ source-new/libs/process/src/shell.cpp 2026-03-14 03:24:59.034513769 +0700 @@ -19,7 +19,7 @@ #if defined(BOOST_PROCESS_V2_WINDOWS) #include #include -#elif !defined(__OpenBSD__) && !defined(__ANDROID__) +#elif !defined(__OpenBSD__) && !defined(__ANDROID__) && !defined(__redox__) #include #endif @@ -30,7 +30,7 @@ { return system_category(); } -#elif !defined(__OpenBSD__) && !defined(__ANDROID__) +#elif !defined(__OpenBSD__) && !defined(__ANDROID__) && !defined(__redox__) struct shell_category_t final : public error_category { @@ -99,7 +99,7 @@ return input_.c_str(); } -#elif !defined(__OpenBSD__) && !defined(__ANDROID__) +#elif !defined(__OpenBSD__) && !defined(__ANDROID__) && !defined(__redox__) void shell::parse_() { ================================================ FILE: recipes/wip/libs/other/bullet-physics/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/bulletphysics/bullet3#build-instructions-for-bullet-using-premake-you-can-also-use-cmake-instead [source] git = "https://github.com/bulletphysics/bullet3" rev = "3.25" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_UNIT_TESTS=OFF", "-DBUILD_EXTRAS=OFF", ] ================================================ FILE: recipes/wip/libs/other/cairomm10+/recipe.toml ================================================ #TODO patch the GNU Autotools configuration to recognize Redox [source] tar = "https://www.cairographics.org/releases/cairomm-1.15.5.tar.gz" [build] template = "configure" dependencies = [ "cairo", ] ================================================ FILE: recipes/wip/libs/other/cairomm116+/recipe.toml ================================================ #TODO mm-common-prepare: not found [source] tar = "https://www.cairographics.org/releases/cairomm-1.18.0.tar.xz" script = "./autogen.sh" [build] template = "custom" dependencies = [ "cairo", ] script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ COOKBOOK_CONFIGURE="./configure" cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/dcmtk/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # build instructions: https://git.dcmtk.org/?p=dcmtk.git;a=blob;f=INSTALL;h=97087f9a05e65040264d90027912c736958e67f3;hb=HEAD#l667 [source] tar = "https://dicom.offis.de/download/dcmtk/dcmtk370/dcmtk-3.7.0.tar.gz" [build] template = "cmake" cmakeflags = [ "-DDCMTK_WITH_DOXYGEN=OFF" ] #dependencies = [ #"libiconv", #"libicu", #"libpng", #"libxml2", #"libtiff", #"zlib", #"openjpeg", #] ================================================ FILE: recipes/wip/libs/other/fftw/recipe.toml ================================================ #TODO compilation error [source] tar = "https://fftw.org/fftw-3.3.10.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/fltk13/recipe.toml ================================================ #TODO: not compiled or tested # probably wrong template, see https://github.com/fltk/fltk/blob/master/README.Unix.txt # commented out dependencies are optional but recommended, needs to be determined [source] tar = "https://github.com/fltk/fltk/releases/download/release-1.3.11/fltk-1.3.11-source.tar.bz2" [build] template = "configure" dependencies = [ "mesa-glu", "libx11", "libxft", "libxcursor", #"freeglut", #"cairo", #"fontconfig", #"glew", #"libalsa", #"libjpeg", #"libpng", #"libxinerama", #"pango", ] ================================================ FILE: recipes/wip/libs/other/fltk14/recipe.toml ================================================ #TODO probably wrong template, see https://github.com/fltk/fltk/blob/master/README.Unix.txt # commented out dependencies are optional but recommended, needs to be determined [source] tar = "https://github.com/fltk/fltk/releases/download/release-1.4.4/fltk-1.4.4-source.tar.bz2" [build] template = "configure" dependencies = [ "mesa-glu", "libx11", "libxft", "libxcursor", #"freeglut", #"cairo", #"fontconfig", #"glew", #"libalsa", #"libjpeg", #"libpng", #"libxinerama", #"pango", ] ================================================ FILE: recipes/wip/libs/other/freealut/recipe.toml ================================================ [source] git = "https://github.com/vancegroup/freealut" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DBUILD_TESTS=OFF" ] dependencies = [ "openal" ] dev-dependencies = [ "libstdcxx" ] ================================================ FILE: recipes/wip/libs/other/freeglut/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/freeglut/freeglut/releases/download/v3.4.0/freeglut-3.4.0.tar.gz" #blake3 = "08c8874d6ddad5be4860813865d4d4e2a84c294da0f3cf82a29e43920806b0da" [build] dependencies = [ "mesa", "mesa-glu", ] template = "custom" script = """ DYNAMIC_INIT cat > redox.cmake <real, NULL); - getrusage (RUSAGE_SELF, &r); - t->user = r.ru_utime; - t->sys = r.ru_stime; -} - static inline struct timeval timeval_sub (struct timeval a, struct timeval b) { @@ -2916,19 +2906,6 @@ timeval_sub (struct timeval a, struct timeval b) return diff; } -void -timing_stop (struct timing *t) -{ - struct rusage r; - struct timeval now; - - gettimeofday (&now, NULL); - getrusage (RUSAGE_SELF, &r); - t->real = timeval_sub (now, t->real); - t->user = timeval_sub (r.ru_utime, t->user); - t->sys = timeval_sub (r.ru_stime, t->sys); -} - static int argsprep (struct command *cmd, struct gdbmarglist *arglist, struct command_param *param) @@ -3047,22 +3024,12 @@ run_command (struct command *cmd, struct gdbmarglist *arglist) else cenv.fp = stdout; - timing_start (&tm); rc = cmd->handler (¶m, &cenv); - timing_stop (&tm); if (cmd->end) cmd->end (cenv.data); else if (cenv.data) free (cenv.data); - if (variable_is_true ("timing")) - { - fprintf (cenv.fp, "[%s r=%lu.%06lu u=%lu.%06lu s=%lu.%06lu]\n", - cmd->name, - tm.real.tv_sec, tm.real.tv_usec, - tm.user.tv_sec, tm.user.tv_usec, - tm.sys.tv_sec, tm.sys.tv_usec); - } if (pagfp) pclose (pagfp); ================================================ FILE: recipes/wip/libs/other/gflags/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/gflags/gflags/blob/master/INSTALL.md#compiling-the-source-code-with-cmake [source] git = "https://github.com/gflags/gflags" rev = "v2.3.0" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/glew/recipe.toml ================================================ #TODO: compiled but not tested [source] tar = "https://github.com/nigels-com/glew/releases/download/glew-2.3.1/glew-2.3.1.tgz" [build] template = "custom" dependencies = [ "mesa", "mesa-glu", ] script = """ # Build system is a standalone Makefile COOKBOOK_CONFIGURE="true" COOKBOOK_CONFIGURE_FLAGS="" # See Makefile for variables to override export GLEW_PREFIX="/usr" export GLEW_DEST="/usr" export GLEW_OSMESA export PYTHON="python3" rsync -av --delete "${COOKBOOK_SOURCE}/" ./ # The auto directory needs to be built first and can't be built in parallel # because the Makefile creates files (using Perl and Python!!) that are needed later "${COOKBOOK_MAKE}" -C "${COOKBOOK_BUILD}/auto" cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/glfw3/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://www.glfw.org/docs/latest/compile.html [source] git = "https://github.com/glfw/glfw" rev = "3.4" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DGLFW_BUILD_TESTS=OFF", "-DGLFW_BUILD_DOCS=OFF", "-DGLFW_BUILD_WAYLAND=OFF", ] dependencies = [ "libxkbcommon", ] ================================================ FILE: recipes/wip/libs/other/gpgme/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://gnupg.org/ftp/gcrypt/gpgme/gpgme-1.20.0.tar.bz2" [build] template = "configure" dependencies = [ "libgcrypt", ] ================================================ FILE: recipes/wip/libs/other/grpc/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/grpc/grpc/blob/v1.76.x/BUILDING.md [source] git = "https://github.com/grpc/grpc" branch = "v1.78.x" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/hdf5/recipe.toml ================================================ #TODO not compiled or tested # in case of errors, read: https://github.com/HDFGroup/hdf5/blob/develop/release_docs/INSTALL [source] tar = "https://github.com/HDFGroup/hdf5/releases/download/hdf5-1_14_3/hdf5-1_14_3.tar.gz" [build] template = "configure" dependencies = [ "zlib", "openmpi", ] ================================================ FILE: recipes/wip/libs/other/hwdata/recipe.toml ================================================ #TODO: promote [source] tar = "https://github.com/vcrhonek/hwdata/archive/refs/tags/v0.400.tar.gz" blake3 = "d56a0863502e528025ddb84b0968a87a713365d91927c92bfe35842d47387e77" [build] template = "custom" script = """ rsync -av --delete "${COOKBOOK_SOURCE}/" ./ COOKBOOK_CONFIGURE="./configure" cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/hwloc/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.open-mpi.org/release/hwloc/v2.9/hwloc-2.9.3.tar.bz2" [build] template = "configure" dependencies = [ "libxml2", "libevdev", ] ================================================ FILE: recipes/wip/libs/other/imlib2/recipe.toml ================================================ #TODO compilation error - unknown type name "sigjmp_buf" [source] tar = "https://downloads.sourceforge.net/project/enlightenment/imlib2-src/1.12.5/imlib2-1.12.5.tar.xz" blake3 = "535b6a986538295af5194e81281a11a1d7e79ae518959ca434f1e53bfa67e86d" patches = ["redox.patch"] script = """ autotools_recursive_regenerate """ [build] template = "configure" configureflags = ["--without-x-shm-fd"] dependencies = [ "freetype2", "libjpeg", "libpng", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "x11proto", "zlib", ] ================================================ FILE: recipes/wip/libs/other/imlib2/redox.patch ================================================ diff -ruwN '--exclude=Makefile.in' source-old/src/lib/x11_grab.c source/src/lib/x11_grab.c --- source-old/src/lib/x11_grab.c 2024-12-24 07:45:18.000000000 -0700 +++ source/src/lib/x11_grab.c 2025-10-30 12:54:08.011156248 -0600 @@ -4,8 +4,10 @@ #include #include #include +#if !defined(__redox__) #include #include +#endif #include "x11_grab.h" #include "x11_ximage.h" diff -ruwN '--exclude=Makefile.in' source-old/src/lib/x11_rend.c source/src/lib/x11_rend.c --- source-old/src/lib/x11_rend.c 2025-04-06 07:16:45.000000000 -0600 +++ source/src/lib/x11_rend.c 2025-10-30 12:55:57.324410357 -0600 @@ -474,20 +474,24 @@ gcm = XCreateGC(x11->dpy, m, GCGraphicsExposures, &gcv); } /* write the mask */ +#if !defined(__redox__) if (shm) /* write shm XImage */ XShmPutImage(x11->dpy, m, gcm, mxim, 0, 0, dx, dy, dw, dh, False); /* write regular XImage */ else +#endif XPutImage(x11->dpy, m, gcm, mxim, 0, 0, dx, dy, dw, dh); } /* write the image */ +#if !defined(__redox__) if (shm) /* write shm XImage */ XShmPutImage(x11->dpy, w, gc, xim, 0, 0, dx, dy, dw, dh, False); /* write regular XImage */ else +#endif XPutImage(x11->dpy, w, gc, xim, 0, 0, dx, dy, dw, dh); /* free the XImage and put onto our free list */ diff -ruwN '--exclude=Makefile.in' source-old/src/lib/x11_ximage.c source/src/lib/x11_ximage.c --- source-old/src/lib/x11_ximage.c 2024-01-02 06:11:28.000000000 -0700 +++ source/src/lib/x11_ximage.c 2025-10-30 12:57:02.128925585 -0600 @@ -11,8 +11,10 @@ #include #include #endif +#if !defined(__redox__) #include #include +#endif #include "x11_ximage.h" @@ -56,6 +58,7 @@ int val; /* if its there set x_does_shm flag */ +#if !defined(__redox__) if (XShmQueryExtension(d)) { #ifdef HAVE_X11_SHM_FD @@ -72,6 +75,7 @@ } /* clear the flag - no shm at all */ else +#endif { x_does_shm = 0; return; @@ -121,6 +125,7 @@ return NULL; /* try create an shm image */ +#if !defined(__redox__) xim = XShmCreateImage(x11->dpy, x11->vis, depth, ZPixmap, NULL, si, w, h); if (!xim) return NULL; @@ -230,6 +235,7 @@ shmctl(si->shmid, IPC_RMID, 0); } } +#endif /* couldnt create SHM image ? */ /* destroy previous image */ @@ -243,6 +249,7 @@ XShmSegmentInfo *si) { XSync(x11->dpy, False); +#if !defined(__redox__) XShmDetach(x11->dpy, si); #ifdef HAVE_X11_SHM_FD if (x_does_shm_fd) @@ -255,6 +262,7 @@ shmdt(si->shmaddr); shmctl(si->shmid, IPC_RMID, 0); } +#endif XDestroyImage(xim); } ================================================ FILE: recipes/wip/libs/other/inih/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/benhoyt/inih#meson-notes [source] git = "https://github.com/benhoyt/inih" rev = "r62" shallow_clone = true [build] template = "meson" mesonflags = [ "-Dtests=false" ] ================================================ FILE: recipes/wip/libs/other/iniparser/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ndevilla/iniparser" rev = "v4.2.6" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/json-c/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/json-c/json-c#build-instructions-- [source] git = "https://github.com/json-c/json-c" branch = "json-c-0.18" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/kerberos5/recipe.toml ================================================ #TODO missing script for building, lacking build instructions [source] tar = "https://kerberos.org/dist/krb5/1.21/krb5-1.21.2.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/lame/recipe.toml ================================================ #TODO The redox target is not supported on the configure script [source] tar = "https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz/download" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/lammps/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://docs.lammps.org/Build_cmake.html [source] git = "https://github.com/lammps/lammps" rev = "27e8d0f19cfd60ff513828af74d07d2c8f3c4451" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/lib2geom/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/inkscape/lib2geom#building [source] git = "https://gitlab.com/inkscape/lib2geom" rev = "18fc32f9972dfaee597055b3226c5b7ef3bfbb4c" [build] template = "cmake" dependencies = [ "boost", "libgsl", "glib", "cairo", ] ================================================ FILE: recipes/wip/libs/other/liba52/recipe.toml ================================================ #TODO The redox target is not supported on the configure script [source] tar = "https://liba52.sourceforge.io/files/a52dec-0.7.4.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libabsl/recipe.toml ================================================ #TODO: compile error on redox, need patches # Also see https://github.com/protocolbuffers/protobuf/blob/main/cmake/README.md [source] git = "https://github.com/abseil/abseil-cpp" rev = "20260107.1" shallow_clone = true [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libaio/recipe.toml ================================================ #TODO linux specific [source] tar = "https://releases.pagure.org/libaio/libaio-0.3.113.tar.gz" [build] template = "custom" script = """ DYNAMIC_INIT make -C ${COOKBOOK_SOURCE} """ ================================================ FILE: recipes/wip/libs/other/libaom/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://aomedia.googlesource.com/aom/#basic-build [source] git = "https://aomedia.googlesource.com/aom" rev = "aca387522ccc0a1775716923d5489dd2d4b1e628" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libargon2/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/P-H-C/phc-winner-argon2#usage [source] git = "https://github.com/P-H-C/phc-winner-argon2" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libaspell/recipe.toml ================================================ #TODO can't recognize Redox target [source] tar = "https://ftp.gnu.org/gnu/aspell/aspell-0.60.8.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libass/recipe.toml ================================================ [source] tar = "https://github.com/libass/libass/releases/download/0.17.3/libass-0.17.3.tar.xz" blake3 = "bfbcc2a97193eb5c2a6c54d07c508d42ff62387a8a9d8b3959d15b6115bca8b6" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "expat", "fontconfig", "freetype2", "fribidi", "glib", "harfbuzz", "libpng", "pcre2", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --disable-asm """ ================================================ FILE: recipes/wip/libs/other/libatomic-ops/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://github.com/ivmai/libatomic_ops/releases/download/v7.8.0/libatomic_ops-7.8.0.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libbluray/recipe.toml ================================================ #TODO compilation error [source] tar = "https://download.videolan.org/pub/videolan/libbluray/1.3.4/libbluray-1.3.4.tar.bz2" [build] template = "configure" dependencies = [ "libxml2", "freetype2", "zlib", "libpng", "fontconfig", "expat", ] ================================================ FILE: recipes/wip/libs/other/libbotan/recipe.toml ================================================ #TODO missing script for building [source] tar = "https://botan.randombit.net/releases/Botan-3.2.0.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libbrotli/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/google/brotli#cmake [source] git = "https://github.com/google/brotli" rev = "ed738e842d2fbdf2d6459e39267a633c4a9b2f5d" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libbsd/recipe.toml ================================================ #TODO Can't find required MD5 functions in "libc" or "libmd" [source] tar = "https://libbsd.freedesktop.org/releases/libbsd-0.11.7.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libburn/recipe.toml ================================================ #TODO compilation error [source] tar = "http://files.libburnia-project.org/releases/libburn-1.5.4.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libcaca/recipe.toml ================================================ #TODO can't recognize Redox target [source] tar = "http://caca.zoy.org/files/libcaca/libcaca-0.99.beta19.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libcamera/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://libcamera.org/getting-started.html [source] git = "https://git.libcamera.org/libcamera/libcamera" [build] template = "meson" dependencies = [ "libyaml", "libevdev", "gstreamer", "libjpeg", "sdl2", ] ================================================ FILE: recipes/wip/libs/other/libcap/recipe.toml ================================================ #TODO missing script for "make" (maybe need the Go), see https://git.kernel.org/pub/scm/libs/libcap/libcap.git/tree/README#n20 [source] tar = "https://kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libcdio/recipe.toml ================================================ #TODO missing script for building, see https://git.savannah.gnu.org/cgit/libcdio.git/tree/INSTALL [source] git = "https://git.savannah.gnu.org/git/libcdio.git" rev = "9c7a2779846da161279bc1501e83c849cf89a594" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libcdio-paranoia/recipe.toml ================================================ #TODO missing script for building [source] git = "https://github.com/rocky/libcdio-paranoia" rev = "db4dfff9e11c516ae35d87e568f511002ddae9d7" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libcdr/recipe.toml ================================================ #TODO make all dependencies work [source] tar = "https://dev-www.libreoffice.org/src/libcdr/libcdr-0.1.7.tar.xz" [build] template = "configure" dependencies = [ "boost", "libicu", "liblcms", "librevenge", "zlib", ] ================================================ FILE: recipes/wip/libs/other/libcpuid/recipe.toml ================================================ #TODO libtool error # require a POSIX-compatible shell, see https://github.com/anrieff/libcpuid#prerequisites [source] tar = "https://github.com/anrieff/libcpuid/releases/download/v0.6.4/libcpuid-0.6.4.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libcups/recipe.toml ================================================ #TODO make gnutls work [source] tar = "https://github.com/OpenPrinting/cups/releases/download/v2.4.7/cups-2.4.7-source.tar.gz" [build] template = "configure" dependencies = [ "gnutls3", ] ================================================ FILE: recipes/wip/libs/other/libde265/recipe.toml ================================================ #TODO compilation error [source] tar = "https://github.com/strukturag/libde265/releases/download/v1.0.14/libde265-1.0.14.tar.gz" [build] template = "custom" script = """ COOKBOOK_CONFIGURE_FLAGS+=( --disable-dec265 --disable-sherlock265 ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/libdecor/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.freedesktop.org/libdecor/libdecor#build--install [source] tar = "https://gitlab.freedesktop.org/libdecor/libdecor/uploads/ee5ef0f2c3a4743e8501a855d61cb397/libdecor-0.1.1.tar.xz" [build] template = "meson" dependencies = [ "pango", "libwayland", ] ================================================ FILE: recipes/wip/libs/other/libdeflate/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/ebiggers/libdeflate#building [source] tar = "https://github.com/ebiggers/libdeflate/releases/download/v1.19/libdeflate-1.19.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libdmx/recipe.toml ================================================ #TODO xorg-macros package not found [source] tar = "https://www.x.org/releases/individual/lib/libdmx-1.1.5.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libdotconf/recipe.toml ================================================ #TODO missing "configure" file, see https://github.com/williamh/dotconf/blob/master/INSTALL [source] git = "https://github.com/williamh/dotconf" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libdouble-conversion/recipe.toml ================================================ #TODO missing script for building, see https://github.com/google/double-conversion#building [source] git = "https://github.com/google/double-conversion" rev = "4f7a25d8ced8c7cf6eee6fd09d6788eaa23c9afe" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libdvbpsi/recipe.toml ================================================ #TODO Compilation error [source] tar = "https://download.videolan.org/pub/libdvbpsi/1.3.3/libdvbpsi-1.3.3.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libdvdcss/recipe.toml ================================================ #TODO Compilation error [source] tar = "https://download.videolan.org/pub/libdvdcss/1.4.3/libdvdcss-1.4.3.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libdvdnav/recipe.toml ================================================ #TODO can't recognize Redox target [source] tar = "http://www.videolan.org/pub/videolan/libdvdnav/5.0.1/libdvdnav-5.0.1.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libdvdread/recipe.toml ================================================ #TODO can't recognize Redox target [source] tar = "http://www.videolan.org/pub/videolan/libdvdread/5.0.0/libdvdread-5.0.0.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libebml/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Matroska-Org/libebml#building-and-installing [source] tar = "https://dl.matroska.org/downloads/libebml/libebml-1.4.4.tar.xz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libedit/recipe.toml ================================================ #TODO promote [source] tar = "https://www.thrysoee.dk/editline/libedit-20250104-3.1.tar.gz" patches = [ "redox.patch" ] [build] template = "configure" dependencies = [ "ncurses", "termcap", "terminfo", ] ================================================ FILE: recipes/wip/libs/other/libedit/redox.patch ================================================ diff --color -ruwN source/configure source-new/configure --- source/configure 2025-01-05 00:16:30.000000000 +0700 +++ source-new/configure 2025-09-18 06:50:23.667443238 +0700 @@ -6384,7 +6384,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | redox*) lt_cv_deplibs_check_method=pass_all ;; @@ -7715,7 +7715,7 @@ ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) +s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu**|x86_64-redox*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when @@ -7734,7 +7734,7 @@ x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; - x86_64-*linux*|x86_64-gnu*) + x86_64-*linux*|x86_64-gnu*|x86_64-redox*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" @@ -7763,7 +7763,7 @@ x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; - x86_64-*linux*|x86_64-gnu*) + x86_64-*linux*|x86_64-gnu*|x86_64-*redox*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) @@ -12168,7 +12168,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | redox*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no diff --color -ruwN source/src/chartype.h source-new/src/chartype.h --- source/src/chartype.h 2022-06-11 14:57:59.000000000 +0700 +++ source-new/src/chartype.h 2025-09-18 06:38:37.401509690 +0700 @@ -39,7 +39,8 @@ !(defined(__APPLE__) && defined(__MACH__)) && \ !defined(__OpenBSD__) && \ !defined(__FreeBSD__) && \ - !defined(__DragonFly__) + !defined(__DragonFly__) && \ + !defined(__redox__) #ifndef __STDC_ISO_10646__ /* In many places it is assumed that the first 127 code points are ASCII * compatible, so ensure wchar_t indeed does ISO 10646 and not some other diff --color -ruwN source/src/editline/readline.h source-new/src/editline/readline.h --- source/src/editline/readline.h 2023-08-27 14:25:53.000000000 +0700 +++ source-new/src/editline/readline.h 2025-09-18 06:41:15.169232816 +0700 @@ -78,7 +78,7 @@ #ifndef CTRL #include -#if !defined(__sun) && !defined(__hpux) && !defined(_AIX) +#if !defined(__sun) && !defined(__hpux) && !defined(_AIX) && !defined(__redox__) #include #endif #ifndef CTRL diff --color -ruwN source/src/sys.h source-new/src/sys.h --- source/src/sys.h 2024-08-09 01:03:34.000000000 +0700 +++ source-new/src/sys.h 2025-09-18 06:40:02.388537017 +0700 @@ -116,10 +116,6 @@ typedef unsigned int u_int32_t; #endif -#ifndef HAVE_SIZE_MAX -#define SIZE_MAX ((size_t)-1) -#endif - #define REGEX /* Use POSIX.2 regular expression functions */ #undef REGEXP /* Use UNIX V8 regular expression functions */ diff --color -ruwN source/src/wcsdup.c source-new/src/wcsdup.c --- source/src/wcsdup.c 2022-06-11 14:57:59.000000000 +0700 +++ source-new/src/wcsdup.c 2025-09-18 06:44:01.365917599 +0700 @@ -11,7 +11,7 @@ * code is also granted without any restrictions. */ -#ifndef HAVE_WCSDUP +#if !defined(HAVE_WCSDUP) && !defined(__redox__) #include "config.h" ================================================ FILE: recipes/wip/libs/other/libeditline/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://ftp.troglobit.com/editline/editline-1.17.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libeigen/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/libeigen/eigen/-/blob/master/INSTALL?ref_type=heads [source] git = "https://gitlab.com/libeigen/eigen" rev = "3147391d946bb4b6c68edd901f2add6ac1f31f8c" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libenet/recipe.toml ================================================ #TODO compilation error [source] tar = "http://enet.bespin.org/download/enet-1.3.17.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/liberty-eiffel/recipe.toml ================================================ #TODO missing script for "install.sh", adapt to Redox [source] tar = "http://download.savannah.gnu.org/releases/liberty-eiffel/bell.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libev/recipe.toml ================================================ [source] tar = "https://dist.schmorp.de/libev/libev-4.33.tar.gz" blake3 = "d56e7f06baa52d5068b6184a307cf27c32f71b60e13d98ee6d4d9c1786393424" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/libevdev/recipe.toml ================================================ #TODO compilation error [source] tar = "https://www.freedesktop.org/software/libevdev/libevdev-1.12.1.tar.xz" blake3 = "d4be83e6f6cb4972cf5052f5a046eb820aa529427202f043a9d95b945e73edcd" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/libevent/recipe.toml ================================================ #TODO compiles, not tested [source] tar = "https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz" [build] template = "cmake" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/libs/other/libfmt/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://fmt.dev/latest/usage.html#building-the-library [source] git = "https://github.com/fmtlib/fmt" rev = "f5e54359df4c26b6230fc61d38aa294581393084" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libfs/recipe.toml ================================================ #TODO xorg-macros package not found [source] tar = "https://www.x.org/releases/individual/lib/libFS-1.0.9.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libfuse2/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/libfuse/libfuse#installation #TODO require a redox daemon (userspace equivalent of the Linux kernel module) [source] tar = "https://github.com/libfuse/libfuse/releases/download/fuse-2.9.9/fuse-2.9.9.tar.gz" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/libfuse3/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/libfuse/libfuse#installation #TODO require a redox daemon (userspace equivalent of the Linux kernel module) [source] tar = "https://github.com/libfuse/libfuse/releases/download/fuse-3.16.2/fuse-3.16.2.tar.gz" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/libgav1/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://chromium.googlesource.com/codecs/libgav1/#compile [source] git = "https://chromium.googlesource.com/codecs/libgav1" rev = "e386d8f1fb983200972d159b9be47fd5d0776708" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libgc/recipe.toml ================================================ #TODO compilation error - pthreads not supported by the GC on this platform [source] tar = "https://www.hboehm.info/gc/gc_source/gc-8.2.4.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libgcrypt/recipe.toml ================================================ [source] tar = "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.11.1.tar.bz2" blake3 = "68844e12b92960d66c4ce85a4c3db1df8377b232980f1218b4c5d904e9c02511" patches = ["redox.patch"] script = """ autotools_recursive_regenerate """ [build] dependencies = ["libgpg-error"] template = "custom" script = """ DYNAMIC_INIT export GPGRT_CONFIG="${COOKBOOK_SYSROOT}/usr/bin/gpgrt-config" cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/libgcrypt/redox.patch ================================================ --- libgcrypt-1.11.1/tests/stopwatch.h 2025-03-17 03:55:24.000000000 -0600 +++ source/tests/stopwatch.h 2025-05-10 08:42:52.113921935 -0600 @@ -45,6 +45,8 @@ &started_at.creation_time, &started_at.exit_time, &started_at.kernel_time, &started_at.user_time); stopped_at = started_at; +#elif defined(__redox__) + //TODO: times on redox #else struct tms tmp; @@ -60,6 +62,8 @@ GetProcessTimes (GetCurrentProcess (), &stopped_at.creation_time, &stopped_at.exit_time, &stopped_at.kernel_time, &stopped_at.user_time); +#elif defined(__redox__) + //TODO: times on redox #else struct tms tmp; ================================================ FILE: recipes/wip/libs/other/libgdal/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gdal.org/development/building_from_source.html [source] tar = "https://github.com/OSGeo/gdal/releases/download/v3.8.4/gdal-3.8.4.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libgit2/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/libgit2/libgit2#building-libgit2---using-cmake [source] git = "https://github.com/libgit2/libgit2" rev = "a2bde63741977ca0f4ef7db2f609df320be67a08" [build] template = "cmake" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/libs/other/libglm/recipe.toml ================================================ #TODO Needs to determine the script [source] git = "https://github.com/g-truc/glm" rev = "bf71a834948186f4097caa076cd2663c69a10e1e" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libgloox/recipe.toml ================================================ #TODO make gnutls work [source] tar = "https://camaya.net/download/gloox-1.0.27.tar.bz2" [build] template = "configure" dependencies = [ "gnutls3", ] ================================================ FILE: recipes/wip/libs/other/libgpg-error/recipe.toml ================================================ [source] tar = "https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.55.tar.bz2" blake3 = "6c363dd8c6bcf2601dd5ff3b11fa2f699baa2aae40de2acd92461af0fd8178f0" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT cat > "${COOKBOOK_SOURCE}/src/syscfg/lock-obj-pub.${TARGET}.h" << EOF ## lock-obj-pub.x86_64-unknown-redox.h ## File created by gen-lock-obj.sh - DO NOT EDIT ## To be included by mkheader into gpg-error.h typedef struct { long _vers; union { volatile char _priv[12]; long _x_align; long *_xp_align; } u; } gpgrt_lock_t; #define GPGRT_LOCK_INITIALIZER {1,{{}}} ## ## Local Variables: ## mode: c ## buffer-read-only: t ## End: ## EOF cookbook_configure --enable-threads=posix """ ================================================ FILE: recipes/wip/libs/other/libgpm/recipe.toml ================================================ #TODO undefined macro: AC_PROG_LIBTOOL [source] tar = "https://www.nico.schottelius.org/software/gpm/archives/gpm-1.20.7.tar.bz2" script = "./autogen.sh" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libgrantlee/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/steveire/grantlee#installation [source] tar = "https://github.com/steveire/grantlee/releases/download/v5.3.1/grantlee-5.3.1.tar.gz" [build] template = "cmake" dependencies = [ "qt5-base", ] ================================================ FILE: recipes/wip/libs/other/libgsl/recipe.toml ================================================ #TODO can't recognize Redox target [source] tar = "https://ftp.gnu.org/gnu/gsl/gsl-2.7.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libgumbo/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://codeberg.org/gumbo-parser/gumbo-parser" rev = "23af2f7c5a9da7e7ea42fcc2c573df52e4a3a5be" script = "./autogen.sh" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libharu/recipe.toml ================================================ #TODO the git repository contents aren't copied to the "build" folder [source] git = "https://github.com/libharu/libharu" rev = "0c598becaadaef8e3d12b883f9fc2864a118c12d" [build] template = "custom" script = """ ./buildconf.sh cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/libhidapi/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/libusb/hidapi/blob/master/BUILD.cmake.md [source] git = "https://github.com/libusb/hidapi" rev = "d3013f0af3f4029d82872c1a9487ea461a56dee4" [build] template = "cmake" dependencies = [ "libiconv", ] ================================================ FILE: recipes/wip/libs/other/libhyphen/recipe.toml ================================================ #TODO missing script for building, see https://github.com/hunspell/hyphen/blob/master/README#L49 [source] git = "https://github.com/hunspell/hyphen" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libicu/recipe.toml ================================================ [source] tar = "https://github.com/unicode-org/icu/releases/download/release-77-1/icu4c-77_1-src.tgz" blake3 = "8f51c4e4c6577b61d02921e800ddb0a2d4778addf7717eef4c5bb0e8a5582c3a" patches = ["redox.patch"] [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/source/configure" mkdir -p host pushd host #TODO: easier way to build for host? HOST_ENV=( env --unset=AR --unset=AS --unset=CC --unset=CFLAGS --unset=CPPFLAGS --unset=CXX --unset=GNU_TARGET --unset=LD --unset=LDFLAGS --unset=NM --unset=OBJCOPY --unset=OBJDUMP --unset=PKG_CONFIG --unset=PKG_CONFIG_ALLOW_CROSS --unset=PKG_CONFIG_FOR_BUILD --unset=PKG_CONFIG_LIBDIR --unset=PKG_CONFIG_PATH --unset=PKG_CONFIG_SYSROOT_DIR --unset=PREFIX_RUSTFLAGS --unset=RANLIB --unset=READELF --unset=STRIP --unset=TARGET ) "${HOST_ENV[@]}" printenv | sort "${HOST_ENV[@]}" "${COOKBOOK_CONFIGURE}" "${HOST_ENV[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" popd COOKBOOK_CONFIGURE_FLAGS+=( --with-cross-build="${COOKBOOK_BUILD}/host" icu_cv_host_frag=mh-linux ) # libicu uses TARGET for something else unset TARGET cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/libicu/redox.patch ================================================ diff -ruwN icu/source/common/unicode/ptypes.h source/source/common/unicode/ptypes.h --- icu/source/common/unicode/ptypes.h 2025-03-13 12:31:23.000000000 -0600 +++ source/source/common/unicode/ptypes.h 2025-04-11 13:46:44.105116183 -0600 @@ -56,7 +56,7 @@ // implementations (looking at you, Apple, spring 2024) actually do this, so // ICU4C must detect and deal with that. #if !defined(__cplusplus) && !defined(U_IN_DOXYGEN) -# if U_HAVE_CHAR16_T +# if U_HAVE_CHAR16_T && !defined(__redox__) # include # else typedef uint16_t char16_t; ================================================ FILE: recipes/wip/libs/other/libimath/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://imath.readthedocs.io/en/latest/install.html#linux-macos [source] git = "https://github.com/AcademySoftwareFoundation/Imath" rev = "d690a3fcff4e877ead5ae56c7e964595ade8a35e" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libimmer/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/arximboldi/immer#usage [source] git = "https://github.com/arximboldi/immer" rev = "5875f7739a6c642ad58cbedadb509c86d421217e" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libinput/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://wayland.freedesktop.org/libinput/doc/latest/building.html#building [source] git = "https://gitlab.freedesktop.org/libinput/libinput" rev = "1680f2fbaa63a91739012c6b57988ab1918ea0b7" [build] template = "meson" dependencies = [ "eudev", "libevdev", ] ================================================ FILE: recipes/wip/libs/other/libisoburn/recipe.toml ================================================ #TODO compilation error [source] tar = "http://files.libburnia-project.org/releases/libisoburn-1.5.4.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libisofs/recipe.toml ================================================ #TODO compilation error [source] tar = "http://files.libburnia-project.org/releases/libisofs-1.5.4.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libjasper/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/jasper-software/jasper/blob/master/INSTALL.txt [source] tar = "https://github.com/jasper-software/jasper/releases/download/version-4.1.1/jasper-4.1.1.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/liblager/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/arximboldi/lager#usage [source] git = "https://github.com/arximboldi/lager" [build] template = "cmake" dependencies = [ "libzug", "boost", ] ================================================ FILE: recipes/wip/libs/other/liblapack/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Reference-LAPACK/lapack#installation [source] git = "https://github.com/Reference-LAPACK/lapack" rev = "04b044e020a3560ccfa9988c8a80a1fb7083fc2e" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/liblcms/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://github.com/mm2/Little-CMS/releases/download/lcms2.15/lcms2-2.15.tar.gz" [build] template = "configure" dependencies = [ "libtiff", ] ================================================ FILE: recipes/wip/libs/other/liblensfun/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/lensfun/lensfun?tab=readme-ov-file#build-instructions [source] git = "https://github.com/lensfun/lensfun" rev = "35b19fb38e7250ea646709ef9e528d54a6a79648" [build] template = "cmake" dependencies = [ "glib", "libpng", ] ================================================ FILE: recipes/wip/libs/other/liblo/recipe.toml ================================================ #TODO compilation error [source] tar = "http://downloads.sourceforge.net/liblo/liblo-0.31.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libm17n/recipe.toml ================================================ #TODO missing plural.h [source] tar = "https://download.savannah.nongnu.org/releases/m17n/m17n-lib-1.8.4.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libmad/recipe.toml ================================================ #TODO the redox target is not supported on the configure script [source] tar = "https://sourceforge.net/projects/mad/files/libmad/0.15.1b/libmad-0.15.1b.tar.gz/download" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libmd/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://archive.hadrons.org/software/libmd/libmd-1.1.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libmpeg2/recipe.toml ================================================ #TODO the redox target is not supported on the configure script [source] tar = "https://libmpeg2.sourceforge.io/files/libmpeg2-0.5.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libmtp/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://sourceforge.net/projects/libmtp/files/libmtp/1.1.21/libmtp-1.1.21.tar.gz/download" [build] template = "configure" dependencies = [ "libusb", ] ================================================ FILE: recipes/wip/libs/other/libmypaint/recipe.toml ================================================ #TODO probably missing dependencies, see: https://github.com/mypaint/libmypaint/#dependencies [source] tar = "https://github.com/mypaint/libmypaint/releases/download/v1.6.0/libmypaint-1.6.0.tar.xz" [build] template = "configure" dependencies = [ "glib", "gobject-introspection", ] ================================================ FILE: recipes/wip/libs/other/libnlopt/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/stevengj/nlopt#readme [source] git = "https://github.com/stevengj/nlopt" rev = "09b3c2a6da71cabcb98d2c8facc6b83d2321ed71" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libnsl/recipe.toml ================================================ #TODO missing headers for compilation [source] tar = "https://github.com/thkukuk/libnsl/releases/download/v2.0.1/libnsl-2.0.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libonig/recipe.toml ================================================ [source] git = "https://github.com/kkos/oniguruma" rev = "f95747b462de672b6f8dbdeb478245ddf061ca53" script = """ autotools_recursive_regenerate """ [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libotf/recipe.toml ================================================ #TODO can't recognize redox target [source] tar = "https://download.savannah.nongnu.org/releases/m17n/libotf-0.9.16.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libpcap/recipe.toml ================================================ #TODO compilation error [source] tar = "https://www.tcpdump.org/release/libpcap-1.10.4.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libpcsclite/recipe.toml ================================================ #TODO require POSIX threads support [source] tar = "https://pcsclite.apdu.fr/files/pcsc-lite-2.0.3.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libplist/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://github.com/libimobiledevice/libplist/releases/download/2.6.0/libplist-2.6.0.tar.bz2" [build] template = "custom" script = """ COOKBOOK_CONFIGURE_FLAGS+=( --without-cython ) cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/libpoppler/recipe.toml ================================================ #TODO needs encoding data - https://poppler.freedesktop.org/poppler-data-0.4.12.tar.gz [source] tar = "https://poppler.freedesktop.org/poppler-25.08.0.tar.xz" blake3 = "0732ef20594d084ae3c24cb75079a2be347df78acac80fdcbd6149b8dce197d4" script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "cairo", "curl", "expat", "fontconfig", "freetype2", "gettext", "glib", "libffi", "libiconv", "libjpeg", "libpng", "libx11", "libxau", "libxcb", "nghttp2", "openssl1", "pcre2", "pixman", #TODO: compile dylib "libtiff", "zlib", ] script = """ DYNAMIC_INIT cookbook_cmake \ -DCMAKE_C_FLAGS="-I${COOKBOOK_SYSROOT}/include" \ -DCMAKE_CXX_FLAGS="-I${COOKBOOK_SYSROOT}/include" \ -DENABLE_BOOST=OFF \ -DENABLE_GPGME=OFF \ -DENABLE_LCMS=OFF \ -DENABLE_LIBOPENJPEG=none \ -DENABLE_LIBTIFF=OFF \ -DENABLE_QT5=OFF \ -DENABLE_QT6=OFF \ -DENABLE_NSS3=OFF """ ================================================ FILE: recipes/wip/libs/other/libportaudio/recipe.toml ================================================ #TODO compilation error #TODO require some Linux audio server [source] git = "https://github.com/PortAudio/portaudio" rev = "147dd722548358763a8b649b3e4b41dfffbcfbb6" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libpthread-stubs/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://www.x.org/releases/individual/xcb/libpthread-stubs-0.5.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libpugixml/recipe.toml ================================================ #TODO missing script for building, see https://pugixml.org/docs/quickstart.html#install [source] tar = "https://github.com/zeux/pugixml/releases/download/v1.14/pugixml-1.14.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libqalculate/recipe.toml ================================================ #TODO make libicu work [source] tar = "https://github.com/Qalculate/libqalculate/releases/download/v4.9.0/libqalculate-4.9.0.tar.gz" [build] template = "configure" dependencies = [ "libgmp", "libmpfr", "libxml2", "readline", "libiconv", "libicu", "curl", ] ================================================ FILE: recipes/wip/libs/other/libqrcodegenc/recipe.toml ================================================ #TODO missing script to build the C implementation, see https://github.com/nayuki/QR-Code-generator/tree/master/c [source] git = "https://github.com/nayuki/QR-Code-generator" rev = "720f62bddb7226106071d4728c292cb1df519ceb" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libraptor2/recipe.toml ================================================ #TODO customization - https://librdf.org/raptor/INSTALL.html #TODO pending dependency configuration [source] tar = "http://download.librdf.org/source/raptor2-2.0.16.tar.gz" [build] template = "configure" dependencies = [ "libxml2", "libxslt", ] ================================================ FILE: recipes/wip/libs/other/librasqal/recipe.toml ================================================ #TODO customization - https://librdf.org/rasqal/INSTALL.html #TODO compilation error [source] tar = "http://download.librdf.org/source/rasqal-0.9.33.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/librdf/recipe.toml ================================================ #TODO customization - https://librdf.org/INSTALL.html #TODO compilation error [source] tar = "http://download.librdf.org/source/redland-1.0.17.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/librevenge/recipe.toml ================================================ #TODO make boost work [source] tar = "https://sourceforge.net/projects/libwpd/files/librevenge/librevenge-0.0.5/librevenge-0.0.5.tar.xz/download" [build] template = "configure" dependencies = [ "boost", "zlib", ] ================================================ FILE: recipes/wip/libs/other/librist/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://code.videolan.org/rist/librist#compile-using-mesonninja-linux-osx-and-windows-mingw [source] git = "https://code.videolan.org/rist/librist" rev = "1e805500dc14a507598cebdd49557c32e514899f" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/librkcommon/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/ospray/rkcommon#building [source] git = "https://github.com/ospray/rkcommon" rev = "f15291d4789a53e5980fd9b3d2639f705d675dd7" [build] template = "cmake" dependencies = [ "onetbb", ] ================================================ FILE: recipes/wip/libs/other/libsamplerate/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://github.com/libsndfile/libsamplerate/releases/download/0.2.2/libsamplerate-0.2.2.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libskia/recipe.toml ================================================ #TODO missing script for GN, see https://skia.org/docs/user/build/ [source] git = "https://skia.googlesource.com/skia" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libslirp/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.freedesktop.org/slirp/libslirp#building [source] tar = "https://gitlab.freedesktop.org/slirp/libslirp/uploads/60113f60cfd6abe2c16dde9f6c81b631/libslirp-4.7.0.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/libsmooth/recipe.toml ================================================ #TODO missing script for gnu make # build instructions - https://github.com/enzo1982/smooth/#installation [source] tar = "https://github.com/enzo1982/smooth/releases/download/v0.9.10/smooth-0.9.10.tar.gz" [build] template = "custom" dependencies = [ "bzip2", "curl", "fribidi", "gtk3", "libjpeg", "libxml2", ] ================================================ FILE: recipes/wip/libs/other/libsndfile/recipe.toml ================================================ [source] tar = "https://github.com/libsndfile/libsndfile/releases/download/1.2.0/libsndfile-1.2.0.tar.xz" blake3 = "7ec1be7cc47fdffc38cf0cbf02857e6a34a13df22d19f541f04215929e1d7684" script = """ autotools_recursive_regenerate """ [build] dependencies = [ #TODO "libflac", "libogg", "libvorbis", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/libsoundio/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/andrewrk/libsoundio#building [source] git = "https://github.com/andrewrk/libsoundio" rev = "dc4f84339039ac518b6cd1c0e7683e88e25be470" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libspdlog/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/gabime/spdlog" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libspiro/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://github.com/fontforge/libspiro/releases/download/20221101/libspiro-dist-20221101.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libsrt/recipe.toml ================================================ #TODO CMake error # build instructions: https://github.com/Haivision/srt/blob/master/docs/build/build-linux.md [source] git = "https://github.com/Haivision/srt" rev = "09f35c0f1743e23f514cb41444504a7faeacf89e" [build] template = "configure" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/libs/other/libssh/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://git.libssh.org/projects/libssh.git/tree/INSTALL#n36 [source] tar = "https://www.libssh.org/files/0.10/libssh-0.10.6.tar.xz" [build] template = "cmake" dependencies = [ "zlib", "openssl1", ] ================================================ FILE: recipes/wip/libs/other/libstatgrab/recipe.toml ================================================ #TODO compilation error [source] tar = "https://github.com/libstatgrab/libstatgrab/releases/download/LIBSTATGRAB_0_92_1/libstatgrab-0.92.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libstk/recipe.toml ================================================ #TODO compilation error [source] tar = "http://ccrma.stanford.edu/software/stk/release/stk-4.6.2.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libtasn1/recipe.toml ================================================ [source] tar = "https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.20.0.tar.gz" blake3 = "374103da2b2ac47e18b57cb5d1d41f7e42f3725c269cf35fba8e4717f0c392b5" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/libtatsu/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://github.com/libimobiledevice/libtatsu/releases/download/1.0.3/libtatsu-1.0.3.tar.bz2" [build] template = "configure" dependencies = [ "libplist", "curl", ] ================================================ FILE: recipes/wip/libs/other/libtheora/recipe.toml ================================================ [source] tar = "http://downloads.xiph.org/releases/theora/libtheora-1.2.0.tar.gz" blake3 = "b2413d6a29669063c30679eb46e09bd55b47d51e1516282bd1f5a752a8ecae91" script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "libogg", "libvorbis", ] script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/libs/other/libtickit/recipe.toml ================================================ #TODO missing script for building, see https://github.com/leonerd/libtickit [source] tar = "https://www.leonerd.org.uk/code/libtickit/libtickit-0.4.5.tar.gz" [build] template = "custom" dependencies = [ "ncursesw" ] script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install-inc install-lib DESTDIR="${COOKBOOK_STAGE}" """ ================================================ FILE: recipes/wip/libs/other/libtiff/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://download.osgeo.org/libtiff/tiff-4.5.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libunibreak/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://github.com/adah1972/libunibreak/releases/download/libunibreak_5_1/libunibreak-5.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libunistring/recipe.toml ================================================ #TODO port the fseterr function [source] tar = "https://ftp.gnu.org/gnu/libunistring/libunistring-1.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libunwind/recipe.toml ================================================ #TODO compilation error [source] tar = "https://download.savannah.nongnu.org/releases/libunwind/libunwind-1.6.2.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/liburiparser/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/uriparser/uriparser/releases/download/uriparser-0.9.8/uriparser-0.9.8.tar.bz2" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libusb/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libuuid/recipe.toml ================================================ [source] tar = "https://sourceforge.net/projects/libuuid/files/libuuid-1.0.3.tar.gz/download" blake3 = "ac6582304401d2be6e5db4570c0d9d6d1500f12c918591a05066679bb2e41e55" patches = [ "redox.patch" ] [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libuuid/redox.patch ================================================ diff -ruwN source/config.sub source-new/config.sub --- source/config.sub 2014-08-12 15:19:20.000000000 +0700 +++ source-new/config.sub 2025-09-19 21:11:57.907457211 +0700 @@ -1376,7 +1376,7 @@ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + | -skyos* | -haiku* | -rdos* | -redox* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) diff -ruwN source/configure source-new/configure --- source/configure 2014-08-12 15:19:19.000000000 +0700 +++ source-new/configure 2025-09-19 21:20:30.460699979 +0700 @@ -5312,7 +5312,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | redox*) lt_cv_deplibs_check_method=pass_all ;; @@ -8866,7 +8866,7 @@ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | redox*) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in @@ -10534,7 +10534,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | redox*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no diff -ruwN source/gen_uuid.c source-new/gen_uuid.c --- source/gen_uuid.c 2014-08-12 04:07:18.000000000 -0400 +++ source-new/gen_uuid.c 2025-12-09 10:49:12.580466005 -0500 @@ -59,9 +59,7 @@ #include #endif #include -#ifdef HAVE_SYS_FILE_H #include -#endif #ifdef HAVE_SYS_IOCTL_H #include #endif diff -ruwN source/randutils.c source-new/randutils.c --- source/randutils.c 2014-08-12 15:07:18.000000000 +0700 +++ source-new/randutils.c 2025-09-19 21:11:57.907659403 +0700 @@ -13,7 +13,7 @@ #include #include -#include +// #include #include "randutils.h" ================================================ FILE: recipes/wip/libs/other/libuuid-ossp/recipe.toml ================================================ #TODO require a data type for FTP # download link - ftp://ftp.ossp.org/pkg/lib/uuid/uuid-1.6.2.tar.gz #TODO if this template doesn't work, read this http://cvs.ossp.org/fileview?f=ossp-pkg/uuid/INSTALL&v=1.6 [source] [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libva/recipe.toml ================================================ #TODO can't recognize the redox target #TODO probably require libdrm [source] tar = "https://github.com/intel/libva/releases/download/2.19.0/libva-2.19.0.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libvisio/recipe.toml ================================================ #TODO make dependencies work [source] tar = "https://dev-www.libreoffice.org/src/libvisio/libvisio-0.1.7.tar.xz" [build] template = "configure" dependencies = [ "boost", "libicu", "librevenge", "libxml2", ] ================================================ FILE: recipes/wip/libs/other/libvncserver/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/LibVNC/libvncserver#how-to-build [source] git = "https://github.com/LibVNC/libvncserver" rev = "10e9eb75f73e973725dc75c373de5d89807af028" [build] template = "cmake" cmakeflags = [ "-DWITH_OPENSSL=ON", "-DWITH_GCRYPT=OFF", ] dependencies = [ "openssl1", "ffmpeg6", "libssh2", ] ================================================ FILE: recipes/wip/libs/other/libvterm/recipe.toml ================================================ #TODO missing script for "make" [source] tar = "https://launchpad.net/libvterm/trunk/v0.3/+download/libvterm-0.3.3.tar.gz" [build] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ ${COOKBOOK_MAKE} -j ${COOKBOOK_MAKE_JOBS} install \ PREFIX="${COOKBOOK_STAGE}" """ ================================================ FILE: recipes/wip/libs/other/libwebsocket++/recipe.toml ================================================ #TODO missing script for installation, lacking build instructions [source] git = "https://github.com/zaphoyd/websocketpp" rev = "56123c87598f8b1dd471be83ca841ceae07f95ba" [build] template = "custom" dependencies = [ "openssl1", "zlib", ] ================================================ FILE: recipes/wip/libs/other/libwebsockets/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/warmcat/libwebsockets" rev = "4415e84c095857629863804e941b9e1c2e9347ef" [build] template = "cmake" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/libs/other/libwmf/recipe.toml ================================================ #TODO can't recognize the redox target [source] tar = "https://sourceforge.net/projects/wvware/files/libwmf/0.2.8.4/libwmf-0.2.8.4.tar.gz/download" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libwpd/recipe.toml ================================================ #TODO make dependencies work [source] tar = "https://sourceforge.net/projects/libwpd/files/libwpd/libwpd-0.10.3/libwpd-0.10.3.tar.xz/download" [build] template = "configure" dependencies = [ "boost", "librevenge", "zlib", ] ================================================ FILE: recipes/wip/libs/other/libxcrypt/recipe.toml ================================================ [source] tar = "https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libxcursor/recipe.toml ================================================ #TODO make dependencies work [source] tar = "https://www.x.org/releases/individual/lib/libXcursor-1.2.1.tar.xz" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libx11", "libxcb", "libxfixes", "libxrender", "x11proto", "x11proto-kb", "libxrender", "xcb-proto", "libxau", "libpthread-stubs", ] template = "custom" script = """ DYNAMIC_INIT # Force libtool to build shared libraries for Redox # Override libtool's platform detection export lt_cv_deplibs_check_method=pass_all export ac_cv_lib_dl_dlopen=yes export enable_shared=yes export enable_static=yes #Configure with shared library support "${COOKBOOK_CONFIGURE}" \ --host="${GNU_TARGET}" \ --prefix="/usr" \ --enable-shared \ --enable-static \ --with-pic \ ac_cv_search_sendmsg=no \ lt_cv_prog_compiler_pic="-fPIC" \ lt_cv_prog_compiler_pic_works=yes # Build "${COOKBOOK_MAKE}" #After make, manually create the shared library if libtool didn't if [ ! -f src/.libs/libXcursor.so ]; then echo "Creating shared library manually..." cd src/.libs # Extract all object files from the static library ${GNU_TARGET}-ar x libXcursor.a # Create the shared library from the object files ${GNU_TARGET}-gcc -shared -fPIC -o libXcursor.so.1.0.2 *.o \ -L${COOKBOOK_SYSROOT}/lib -L${COOKBOOK_SYSROOT}/usr/lib \ -lXfixes -lXrender -lX11 -lxcb -lXau # Create symlinks ln -sf libXcursor.so.1.0.2 libXcursor.so.1 ln -sf libXcursor.so.1 libXcursor.so cd ../.. fi "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" # Also copy the shared libraries if they exist if [ -f src/.libs/libXcursor.so.1.0.2 ]; then mkdir -p "${COOKBOOK_STAGE}/usr/lib" cp -P src/.libs/libXcursor.so* "${COOKBOOK_STAGE}/usr/lib/" fi """ # script = """ # # this /usr/share/pkgconfig comes from x11proto, that stages pc files in wrong dir. # export PKG_CONFIG_PATH="${COOKBOOK_SYSROOT}/lib/pkgconfig" # #:${COOKBOOK_SYSROOT}/usr/lib/pkgconfig:${COOKBOOK_SYSROOT}/usr/share/pkgconfig" # export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" # #:${COOKBOOK_SYSROOT}/usr/lib/pkgconfig" # export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" # rsync -a "${COOKBOOK_SOURCE}/" ./ # # I'm tired trying figure out why multiple pkgconfig paths are ignored by cargo building stuff # # rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ # rsync -a -v ${COOKBOOK_SYSROOT}/usr/lib/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ # echo "listing ${COOKBOOK_SYSROOT}/lib/pkgconfig" # ls -al ${COOKBOOK_SYSROOT}/lib/pkgconfig # cookbook_configure # """ ================================================ FILE: recipes/wip/libs/other/libxkbcommon/recipe.toml ================================================ [source] tar = "https://xkbcommon.org/download/libxkbcommon-1.7.0.tar.xz" b3sum = "5001ca0b8562feeef2010bf16c05657e3875fda3ed5fdedbf48b9135e5cdfcbc" [build] template = "custom" dependencies = [ "libxml2", "xz", "zlib", ] script = """ DYNAMIC_INIT cookbook_meson \ -Denable-wayland=false \ -Denable-x11=false """ ================================================ FILE: recipes/wip/libs/other/libxsimd/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/xtensor-stack/xsimd#install-from-sources [source] git = "https://github.com/xtensor-stack/xsimd" rev = "c1247bffa8fc36de7380a5cd42673a3b32f74c97" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libxss/recipe.toml ================================================ #TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXScrnSaver-1.2.4.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libxtl/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/xtensor-stack/xtl#install-from-sources [source] git = "https://github.com/xtensor-stack/xtl" rev = "c95f6c8b13ffb7f74f16d3fd6882668b79bd8412" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/libxtst/recipe.toml ================================================ #TODO missing dependencies [source] tar = "https://www.x.org/releases/individual/lib/libXtst-1.2.4.tar.xz" [build] template = "configure" dependencies = [ "libx11", "libxi", "libxext", ] ================================================ FILE: recipes/wip/libs/other/libxv/recipe.toml ================================================ #TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXv-1.0.12.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libxvmc/recipe.toml ================================================ #TODO missing xorg-macros package [source] tar = "https://www.x.org/releases/individual/lib/libXvMC-1.0.13.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libyaml/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "http://pyyaml.org/download/libyaml/yaml-0.2.5.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/libzimg/recipe.toml ================================================ #TODO missing script [source] git = "https://github.com/sekrit-twc/zimg" rev = "e5b0de6bebbcbc66732ed5afaafef6b2c7dfef87" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/libzug/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/arximboldi/zug#usage [source] git = "https://github.com/arximboldi/zug" [build] template = "cmake" dependencies = [ "boost", ] ================================================ FILE: recipes/wip/libs/other/libzvbi/recipe.toml ================================================ #TODO the redox target is not supported on the configure script [source] tar = "https://sourceforge.net/projects/zapping/files/zvbi/0.2.35/zvbi-0.2.35.tar.bz2/download" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/lilv/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/lv2/lilv/-/blob/master/INSTALL.md?ref_type=heads [source] tar = "https://download.drobilla.net/lilv-0.24.20.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/liquid-dsp/recipe.toml ================================================ #TODO missing script, see https://github.com/jgaeddert/liquid-dsp#installation-and-dependencies [source] git = "https://github.com/jgaeddert/liquid-dsp" rev = "8bf87b6fe325d98c250d6911fa50518d14175d86" [build] template = "custom" dependencies = [ "fftw", ] ================================================ FILE: recipes/wip/libs/other/livedotcom/recipe.toml ================================================ #TODO missing script for the build system, see http://www.live555.com/liveMedia/#config-unix [source] tar = "http://www.live555.com/liveMedia/public/live555-latest.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/lrdf/recipe.toml ================================================ #TODO configuration error [source] git = "https://github.com/x42/LRDF" rev = "e61f7aa4a1e240a884e3a0cb4b2db65046cfcaa6" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/lv2/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/lv2/lv2/-/blob/master/INSTALL.md [source] tar = "https://lv2plug.in/spec/lv2-1.18.10.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/lzlib/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://download.savannah.gnu.org/releases/lzip/lzlib/lzlib-1.14.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/m4/recipe.toml ================================================ #TODO compilation error [source] tar = "https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/maven/recipe.toml ================================================ #TODO missing script for building, lacking build instructions [source] tar = "https://dlcdn.apache.org/maven/maven-3/3.9.5/source/apache-maven-3.9.5-src.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/mimalloc/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/microsoft/mimalloc#macos-linux-bsd-etc [source] git = "https://github.com/microsoft/mimalloc" rev = "43ce4bd7fd34bcc730c1c7471c99995597415488" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/mlt/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/mltframework/mlt#readme [source] tar = "https://github.com/mltframework/mlt/releases/download/v7.22.0/mlt-7.22.0.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/mozangle/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/njskalski/mozangle.git" branch = "redox_mods" [build] template = "custom" dependencies = [ "freetype2", "gettext", "glib", "gstreamer", "harfbuzz", "libffi", "libiconv", "libx11", "libxcb", "libpng", "openssl1", "pcre", "zlib", "x11proto", "x11proto-kb", "xcb-proto", "xextproto", "libxau", "libpthread-stubs", "fontconfig", "expat", "relibc", "gcc13", ] script = """ export TARGET=${TARGET} export TARGET_CC=${TARGET}-gcc export TARGET_CXX=${TARGET}-g++ export TARGET_AR=${TARGET}-ar rsync -a --delete "${COOKBOOK_SOURCE}/" ./ cargo build --release --target ${TARGET} """ ================================================ FILE: recipes/wip/libs/other/musepack/recipe.toml ================================================ #TODO missing script for building, verify the tarball [source] tar = "https://files.musepack.net/source/musepack_src_r475.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/nlohmann-json/recipe.toml ================================================ #TODO missing script for installation, lacking a build system [source] tar = "https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/oidn/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/OpenImageDenoise/oidn#compiling-on-linuxmacos [source] git = "https://github.com/OpenImageDenoise/oidn" [build] template = "cmake" dependencies = [ "ispc", "onetbb", ] ================================================ FILE: recipes/wip/libs/other/onednn/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://oneapi-src.github.io/oneDNN/dev_guide_build.html#linux-macos [source] git = "https://github.com/oneapi-src/oneDNN" rev = "16720eaaab9557158ff77ebf3bc610e9682928d6" [build] template = "cmake" dependencies = [ "onetbb", ] ================================================ FILE: recipes/wip/libs/other/onetbb/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/oneapi-src/oneTBB/blob/master/INSTALL.md [source] git = "https://github.com/oneapi-src/oneTBB" rev = "8b829acc65569019edb896c5150d427f288e8aba" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/openblas/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/OpenMathLib/OpenBLAS/wiki/Installation-Guide #TODO require the Fortran frontend from GCC [source] tar = "https://github.com/OpenMathLib/OpenBLAS/releases/download/v0.3.25/OpenBLAS-0.3.25.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/opencolorio/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html #TODO missing dependencies, see https://opencolorio.readthedocs.io/en/latest/quick_start/installation.html#dependencies [source] git = "https://github.com/AcademySoftwareFoundation/OpenColorIO" rev = "92db29b9e7e298c4c2cc67c8a74944c2e7e716e5" [build] template = "cmake" dependencies = [ "expat", "imath", "zlib", ] ================================================ FILE: recipes/wip/libs/other/opencv4/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] git = "https://github.com/opencv/opencv" branch = "4.x" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DOPENCV_FORCE_3RDPARTY_BUILD=ON", ] ================================================ FILE: recipes/wip/libs/other/openexr/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://openexr.com/en/latest/install.html#linux-macos [source] git = "https://github.com/AcademySoftwareFoundation/openexr" rev = "737b2707a001e67f3812d86a639c3d037efe2ea8" [build] template = "cmake" dependencies = [ "libdeflate", "libimath" ] ================================================ FILE: recipes/wip/libs/other/openimageio/recipe.toml ================================================ #TODO missing script for building, see https://github.com/AcademySoftwareFoundation/OpenImageIO/blob/master/INSTALL.md#building-openimageio-on-linux-or-os-x # optional dependencies are disabled to make the program work with less effort [source] git = "https://github.com/AcademySoftwareFoundation/OpenImageIO" rev = "5c29caab40a3913d415ac5d37cd84983e824c75b" [build] template = "custom" dependencies = [ "imath", "libtiff", "libjpeg", "openexr", "libfmt", #"libpng", #"boost", #"opencv4", #"ffmpeg6", #"libwebp", #"freetype2", #"libraw", #"openjpeg", #"tbb", #"libgif", #"libheif", #"libwebp", ] ================================================ FILE: recipes/wip/libs/other/openjpeg/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/uclouvain/openjpeg/blob/master/INSTALL.md [source] git = "https://github.com/uclouvain/openjpeg" rev = "a5891555eb49ed7cc26b2901ea680acda136d811" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/openmpi/recipe.toml ================================================ #TODO missing dependencies, see https://docs.open-mpi.org/en/v5.0.x/installing-open-mpi/required-support-libraries.html #TODO make libevent works [source] tar = "https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.0.tar.bz2" [build] template = "configure" dependencies = [ "libevent", ] ================================================ FILE: recipes/wip/libs/other/openvkl/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/openvkl/openvkl#building-open-vkl-from-source [source] git = "https://github.com/openvkl/openvkl" rev = "712bdb8035487606096d7af90a4c9bde5503515d" [build] template = "cmake" dependencies = [ "ispc", "librkcommon", "embree", "level-zero", ] ================================================ FILE: recipes/wip/libs/other/pjsip/recipe.toml ================================================ #TODO make libvpx work # customization - https://docs.pjsip.org/en/latest/get-started/posix/build_instructions.html [source] git = "https://github.com/pjsip/pjproject" rev = "08578e86eea120c5ab2ab1af5a18b7840120d87b" [build] template = "configure" dependencies = [ "openssl1", "ffmpeg6", "libvpx", ] ================================================ FILE: recipes/wip/libs/other/popt/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] tar = "https://ftp.osuosl.org/pub/rpm/popt/releases/popt-1.x/popt-1.19.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/projectm/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/projectM-visualizer/projectm/wiki/Building-libprojectM#build-and-install-projectm [source] git = "https://github.com/projectM-visualizer/projectm" rev = "422af469731559c32c93e9513cebf2fe6c2fec78" [build] template = "cmake" dependencies = [ "mesa", "qt5-base", ] ================================================ FILE: recipes/wip/libs/other/pystring/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] git = "https://github.com/imageworks/pystring" rev = "7d16bc814ccb4cad03c300dcb77440034caa84f7" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/quantlib/recipe.toml ================================================ #TODO make boost work #TODO probably wrong template, see https://www.quantlib.org/install/linux.shtml [source] tar = "https://github.com/lballabio/QuantLib/releases/download/v1.32/QuantLib-1.32.tar.gz" [build] template = "configure" dependencies = [ "boost", ] ================================================ FILE: recipes/wip/libs/other/raylib/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/raysan5/raylib/wiki/Working-on-GNU-Linux [source] git = "https://github.com/raysan5/raylib" rev = "ae50bfa2cc569c0f8d5bc4315d39db64005b1b08" [build] template = "cmake" dependencies = [ "mesa", "libxkbcommon", ] ================================================ FILE: recipes/wip/libs/other/rdflib/recipe.toml ================================================ #TODO missing script for installation, the "pip" method can't be used, investigate the tarball [source] tar = "https://github.com/RDFLib/rdflib/releases/download/7.0.0/rdflib-7.0.0.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/rnnoise/recipe.toml ================================================ #TODO missing script for building [source] git = "https://gitlab.xiph.org/xiph/rnnoise" [build] template = "custom" ================================================ FILE: recipes/wip/libs/other/rubberband/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://hg.sr.ht/~breakfastquay/rubberband/browse/COMPILING.md?rev=tip [source] tar = "https://breakfastquay.com/files/releases/rubberband-3.2.1.tar.bz2" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/rustls-openssl-compat/recipe.toml ================================================ #TODO missing script for GNU Make [source] git = "https://github.com/rustls/rustls-openssl-compat" [build] template = "custom" script = """ COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/rustls-libssl" """ ================================================ FILE: recipes/wip/libs/other/scotch/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.inria.fr/scotch/scotch#installation #TODO probably missing dependencies [source] git = "https://gitlab.inria.fr/scotch/scotch" rev = "82ec87f558f4acb7ccb69a079f531be380504c92" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/sdl-pango/recipe.toml ================================================ #TODO can't recognize the redox target #TODO probably missing dependencies [source] tar = "https://sourceforge.net/projects/sdlpango/files/SDL_Pango/0.1.2/SDL_Pango-0.1.2.tar.gz/download" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/sdl2-net/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] tar = "https://github.com/libsdl-org/SDL_net/releases/download/release-2.2.0/SDL2_net-2.2.0.tar.gz" [build] template = "cmake" dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/libs/other/sdl2-pango/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/markuskimius/SDL2_Pango" rev = "v2.1.5" shallow_clone = true [build] template = "configure" dependencies = [ "pango", "freetype2", "sdl2", ] ================================================ FILE: recipes/wip/libs/other/sdl3/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from the cmake log # build instructions: https://github.com/libsdl-org/SDL/blob/main/docs/README-cmake.md # dependencies: https://github.com/libsdl-org/SDL/blob/main/docs/README-linux.md [source] tar = "https://github.com/libsdl-org/SDL/releases/download/release-3.4.0/SDL3-3.4.0.tar.gz" [build] template = "cmake" cmakeflags = [ "-DSDL_SHARED=ON", "-DSDL_STATIC=OFF", "-DSDL_TEST_LIBRARY=OFF", "-DSDL_DISABLE_INSTALL_DOCS=ON", "-DSDL_DBUS=OFF", "-DSDL_LIBURING=OFF", "-DSDL_IBUS=OFF", "-DSDL_OPENGL=OFF", "-DSDL_OPENGLES=OFF", "-DSDL_LIBUDEV=OFF", "-DSDL_AUDIO=OFF", ] dependencies = [ #"liborbital", "mesa", ] ================================================ FILE: recipes/wip/libs/other/simdjson/recipe.toml ================================================ [source] git = "https://github.com/simdjson/simdjson" rev = "0c0ce1bd48baa0677dc7c0945ea7cd1e8b52b297" # 3.13.0 [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cmake """ ================================================ FILE: recipes/wip/libs/other/simdutf/recipe.toml ================================================ [source] git = "https://github.com/simdutf/simdutf" rev = "df8bfed3256cf5ca29969a9dd1db677e835b2c6c" # 7.3.5 [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cmake """ ================================================ FILE: recipes/wip/libs/other/snappy/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/google/snappy#building [source] git = "https://github.com/google/snappy" rev = "dc05e026488865bc69313a68bcc03ef2e4ea8e83" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/sord/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/drobilla/sord/-/blob/master/INSTALL.md?ref_type=heads [source] tar = "https://download.drobilla.net/sord-0.16.14.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/sratom/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/lv2/sratom/-/blob/master/INSTALL.md?ref_type=heads [source] tar = "https://download.drobilla.net/sratom-0.6.14.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/suil/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/lv2/suil/-/blob/master/INSTALL.md?ref_type=heads [source] tar = "https://download.drobilla.net/suil-0.10.18.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/libs/other/t4kcommon/recipe.toml ================================================ #TODO missing script for GNU Autotools, see https://github.com/tux4kids/t4kcommon/blob/master/INSTALL#L33 [source] git = "https://github.com/tux4kids/t4kcommon" [build] template = "custom" dependencies = [ "sdl1", "sdl1_mixer", "sdl1_image", "sdl-pango", "sdl2-net", "libpng", "libxml2", ] ================================================ FILE: recipes/wip/libs/other/taglib/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/taglib/taglib/blob/master/INSTALL.md [source] tar = "https://taglib.org/releases/taglib-1.13.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/tree-sitter/recipe.toml ================================================ [source] tar = "https://github.com/tree-sitter/tree-sitter/archive/refs/tags/v0.25.8.tar.gz" blake3 = "a9bce1e3c610441dc9d7dcc3d7d38e6a74e0b06d6b7d40e22982d927006dbfc4" patches = [ "redox.patch" ] [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CARGO_PATH=cli cookbook_cargo \ --config 'patch.crates-io.rustix.git = "https://github.com/bytecodealliance/rustix"' \ --config 'patch.crates-io.rustix.rev = "8bf15a0"' cookbook_cmake "${COOKBOOK_SOURCE}"/lib """ ================================================ FILE: recipes/wip/libs/other/tree-sitter/redox.patch ================================================ diff --color -ruwN source/Cargo.toml source-new/Cargo.toml --- source/Cargo.toml 2025-07-14 01:32:42.000000000 +0700 +++ source-new/Cargo.toml 2025-09-16 11:37:28.820646655 +0700 @@ -118,7 +118,7 @@ dialoguer = { version = "0.11.0", features = ["fuzzy-select"] } etcetera = "0.8.0" filetime = "0.2.25" -fs4 = "0.12.0" +fs4 = { git = "https://github.com/al8n/fs4-rs" } # for redox support, still not published yet git2 = "0.20.0" glob = "0.3.2" heck = "0.5.0" @@ -151,7 +151,7 @@ url = { version = "2.5.4", features = ["serde"] } walkdir = "2.5.0" wasmparser = "0.224.0" -webbrowser = "1.0.3" +webbrowser = "1.0.5" tree-sitter = { version = "0.25.1", path = "./lib" } tree-sitter-generate = { version = "0.25.1", path = "./cli/generate" } diff --color -ruwN source/cli/src/fuzz/allocations.rs source-new/cli/src/fuzz/allocations.rs --- source/cli/src/fuzz/allocations.rs 2025-07-14 01:32:42.000000000 +0700 +++ source-new/cli/src/fuzz/allocations.rs 2025-09-16 11:39:56.112458323 +0700 @@ -7,6 +7,7 @@ }, }; +#[cfg(not(target_os = "redox"))] #[ctor::ctor] unsafe fn initialize_allocation_recording() { tree_sitter::set_allocator( diff --color -ruwN source/lib/src/portable/endian.h source-new/lib/src/portable/endian.h --- source/lib/src/portable/endian.h 2025-07-14 01:32:42.000000000 +0700 +++ source-new/lib/src/portable/endian.h 2025-09-16 11:27:12.315211556 +0700 @@ -24,7 +24,8 @@ defined(__CYGWIN__) || \ defined(__MSYS__) || \ defined(__EMSCRIPTEN__) || \ - defined(__wasi__) + defined(__wasi__) || \ + defined(__redox__) #if defined(__NetBSD__) #define _NETBSD_SOURCE 1 ================================================ FILE: recipes/wip/libs/other/twolame/recipe.toml ================================================ #TODO Compiled but not tested [source] tar = "https://downloads.sourceforge.net/twolame/twolame-0.4.0.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/vamp-plugin-sdk/recipe.toml ================================================ #TODO compilation error [source] tar = "https://code.soundsoftware.ac.uk/attachments/download/2588/vamp-plugin-sdk-2.9.0.tar.gz" [build] template = "configure" dependencies = [ "libsndfile", ] ================================================ FILE: recipes/wip/libs/other/volk/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/gnuradio/volk#building-on-most-x86-32-bit-and-64-bit-platforms [source] tar = "https://www.libvolk.org/releases/volk-3.0.0.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/webkit/recipe.toml ================================================ #TODO compilation error [source] tar = "https://webkitgtk.org/releases/webkit-1.9.6.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/other/wxpython/recipe.toml ================================================ #TODO missing script for Python, see https://wiki.wxpython.org/How%20to%20install%20wxPython#Installing_wxPython_from_source [source] tar = "https://files.pythonhosted.org/packages/aa/64/d749e767a8ce7bdc3d533334e03bb1106fc4e4803d16f931fada9007ee13/wxPython-4.2.1.tar.gz" [build] template = "custom" dependencies = [ "wxwidgets-gtk3", ] ================================================ FILE: recipes/wip/libs/other/wxwidgets-gtk3/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/wxWidgets/wxWidgets/blob/master/docs/gtk/install.md [source] tar = "https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.4/wxWidgets-3.2.4.tar.bz2" [build] template = "configure" configureflags = [ "--with-gtk", ] dependencies = [ "gtk3", ] ================================================ FILE: recipes/wip/libs/other/xxhash/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/Cyan4973/xxHash" rev = "bab7e27f4c6ae4efbb83dd99ae8a554423571635" # 0.8.3-dev (cmake support) [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_SOURCE="${COOKBOOK_SOURCE}"/build/cmake cookbook_cmake """ ================================================ FILE: recipes/wip/libs/other/yajl/recipe.toml ================================================ [source] tar = "https://github.com/lloyd/yajl/archive/refs/tags/2.1.0.tar.gz" blake3 = "25cbfe28df82d5699b8fa5db8b32797b34aff995c7ce35a5fb622cc68f90f0cb" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/other/zlib-ng/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/zlib-ng/zlib-ng" rev = "2bc66887ddc0c50776811a27be68e34430d665e1" [build] template = "custom" script = """ export LDFLAGS="--static" # See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar. CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" \ --prefix="" \ --static "${COOKBOOK_MAKE}" -j "$(nproc)" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" """ ================================================ FILE: recipes/wip/libs/perf/openmp/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/llvm/llvm-project/blob/main/openmp/README.rst [source] tar = "https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.6/openmp-21.1.6.src.tar.xz" [build] template = "cmake" dependencies = [ "llvm21", ] ================================================ FILE: recipes/wip/libs/qt/qt4/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "http://download.qt.io/official_releases/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-3d/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qt3d-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-activeqt/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtactiveqt-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-base/recipe.toml ================================================ #TODO not compiled or tested #TODO determine dependencies [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtbase-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-charts/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtcharts-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-coap/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtcoap-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-connectivity/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtconnectivity-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-datavis3d/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtdatavis3d-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-declarative/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtdeclarative-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-doc/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtdoc-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-full/recipe.toml ================================================ #TODO not compiled or tested # probably missing dependencies: https://doc.qt.io/archives/qt-5.15/linux-requirements.html # build instructions: https://doc.qt.io/qt-5/linux-building.html # customization: https://doc.qt.io/qt-5/configure-options.html [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.18/single/qt-everywhere-opensource-src-5.15.18.tar.xz" [build] template = "configure" configureflags = [ "-no-opengl", "-no-feature-accessibility", ] dependencies = [ "fontconfig", "freetype2", #"mesa", "libxkbcommon", "libxcb", "libx11", "libxrender", "libxext", "libxfixes", "libsm", "libice", "glib", "gstreamer", ] ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-gamepad/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtgamepad-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-graphical-effects/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtgraphicaleffects-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-imageformats/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtimageformats-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-knx/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtknx-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-location/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtlocation-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-lottie/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtlottie-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-mqtt/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtmqtt-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-multimedia/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtmultimedia-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-networkauth/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtnetworkauth-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-opcua/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtopcua-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-purchasing/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtpurchasing-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-quick3d/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtquick3d-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-quickcontrols/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtquickcontrols-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-quickcontrols2/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtquickcontrols2-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-quicktimeline/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtquicktimeline-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-remoteobjects/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtremoteobjects-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-script/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtscript-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-scxml/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtscxml-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-sensors/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtsensors-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-serialbus/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtserialbus-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-serialport/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtserialport-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-speech/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtspeech-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-svg/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtsvg-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-tools/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qttools-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-tqtc/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/tqtc-qt5-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-translations/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qttranslations-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-virtualkeyboard/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtvirtualkeyboard-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-wayland/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwayland-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-webchannel/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwebchannel-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-webengine/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwebengine-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-webglplugin/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwebglplugin-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-webkit/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-Linux #TODO determine dependencies # probably wrong branch [source] git = "https://github.com/movableink/webkit" [build] template = "cmake" dependencies = [ "qt5-base", "qt5-guiaddons", "qt5-connectivity", "qt5-networkauth", "qt5-positioning", "qt5-sensors", "qt5-declarative", "qt5-webchannel", "sqlite3", "libicu", "libhyphen", "libxml2", "libxslt", "libjpeg", "libpng", "zlib", "glib", "gstreamer", ] ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-websockets/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwebsockets-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-webview/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtwebview-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-x11extras/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtx11extras-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt5/qt5-xmlpatterns/recipe.toml ================================================ #TODO Not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/5.15/5.15.11/submodules/qtxmlpatterns-everywhere-opensource-src-5.15.11.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-3d/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qt3d-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-activeqt/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtactiveqt-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-base/recipe.toml ================================================ #TODO not compiled or tested #TODO determine dependencies [source] tar = "https://download.qt.io/official_releases/qt/6.10/6.10.0/submodules/qtbase-everywhere-src-6.10.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-charts/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtcharts-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-connectivity/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtconnectivity-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-datavis3d/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtdatavis3d-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-declarative/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.10/6.10.0/submodules/qtdeclarative-everywhere-src-6.10.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-doc/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtdoc-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-full/recipe.toml ================================================ #TODO not compiled or tested # probably wrong template # build instructions: https://doc.qt.io/qt-6/linux-building.html # customization: https://doc.qt.io/qt-6/configure-options.html [source] tar = "https://download.qt.io/official_releases/qt/6.10/6.10.0/single/qt-everywhere-src-6.10.0.tar.xz" [build] template = "custom" dependencies = [ "fontconfig", "freetype2", #"mesa", "libxkbcommon", "libxcb", "libx11", "libxrender", "libxext", "libxfixes", "libsm", "libice", "glib", "gstreamer", "openssl3", ] script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( -no-opengl -no-feature-accessibility -openssl-linked ) cookbook_configure cookbook_cmake """ ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-graphs/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtgraphs-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-grpc/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtgrpc-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-httpserver/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qthttpserver-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-imageformats/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtimageformats-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-languageserver/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtlanguageserver-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-location/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtlocation-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-lottie/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtlottie-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-multimedia/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.10/6.10.0/submodules/qtmultimedia-everywhere-src-6.10.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-networkauth/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtnetworkauth-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-positioning/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtpositioning-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-qt5compat/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qt5compat-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-quick3d/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtquick3d-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-quick3dphysics/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtquick3dphysics-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-quickeffectmaker/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtquickeffectmaker-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-quicktimeline/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtquicktimeline-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-remoteobjects/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtremoteobjects-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-scxml/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtscxml-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-sensors/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtsensors-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-serialbus/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtserialbus-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-serialport/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtserialport-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-shadertools/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtshadertools-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-speech/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtspeech-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-svg/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.10/6.10.0/submodules/qtsvg-everywhere-src-6.10.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-tools/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qttools-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-translations/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qttranslations-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-virtualkeyboard/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtvirtualkeyboard-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-wayland/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtwayland-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-webchannel/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtwebchannel-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-webengine/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtwebengine-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-websockets/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtwebsockets-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/qt/qt6/qt6-webview/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.qt.io/official_releases/qt/6.6/6.6.1/submodules/qtwebview-everywhere-src-6.6.1.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/security/libacl/recipe.toml ================================================ #TODO can't find the attr/error_context.h file [source] tar = "https://download.savannah.nongnu.org/releases/acl/acl-2.3.2.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/text/hunspell/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/hunspell/hunspell#compiling-on-gnulinux-and-unixes [source] tar = "https://github.com/hunspell/hunspell/releases/download/v1.7.2/hunspell-1.7.2.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/libs/tikv-jemallocator/recipe.toml ================================================ #TODO "No suitable wgpu::Adapter found" error on execution [source] git = "https://gitlab.redox-os.org/njskalski/jemallocator.git" branch = "redox_mods" [build] template = "custom" script = """ # Build the library crates "${COOKBOOK_REDOXER}" build --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" --workspace --release # Library crates don't need installation, they're used as dependencies """ ================================================ FILE: recipes/wip/libs/tls/gnutls3/recipe.toml ================================================ #TODO: promote [source] tar = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.10.tar.xz" blake3 = "edcd8a505867226722ae50e0e9bb2bf57a1f38b5674a3028e26f69d2d61957e6" script = """ autotools_recursive_regenerate """ [build] template = "configure" configureflags = [ "--with-included-libtasn1", "--with-included-unistring", "--without-p11-kit", "gl_cv_func_malloc_posix=no", "gl_cv_socket_ipv6=no", ] dependencies = [ "libbrotli", "libgmp", "libnettle", "zlib", "zstd", ] ================================================ FILE: recipes/wip/libs/tls/mbedtls3/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://mbed-tls.readthedocs.io/en/latest/getting_started/building/#building-with-cmake [source] https://github.com/Mbed-TLS/mbedtls/releases/download/mbedtls-3.6.5/mbedtls-3.6.5.tar.bz2 [build] template = "cmake" ================================================ FILE: recipes/wip/libs/tls/mbedtls4/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://mbed-tls.readthedocs.io/en/latest/getting_started/building/#building-with-cmake [source] https://github.com/Mbed-TLS/mbedtls/releases/download/mbedtls-4.0.0/mbedtls-4.0.0.tar.bz2 [build] template = "cmake" ================================================ FILE: recipes/wip/libs/tls/openssl3/recipe.toml ================================================ #TODO: promote [source] tar = "https://github.com/openssl/openssl/releases/download/openssl-3.5.3/openssl-3.5.3.tar.gz" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "zlib", "zstd" ] script = """ DYNAMIC_INIT ARCH="${TARGET%%-*}" OS=$(echo "${TARGET}" | cut -d - -f3) export ARFLAGS=cr COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/Configure" COOKBOOK_CONFIGURE_FLAGS=( no-tests no-unit-test zlib enable-zstd "${OS}-${ARCH}" --prefix="/usr" --openssldir="/etc/ssl" ) if [ "${COOKBOOK_DYNAMIC}" = "1" ]; then COOKBOOK_CONFIGURE_FLAGS+=(shared) else COOKBOOK_CONFIGURE_FLAGS+=(no-shared no-dso) fi "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j1 # bug in make/ar "${COOKBOOK_MAKE}" install_sw install_ssldirs DESTDIR="${COOKBOOK_STAGE}" """ ================================================ FILE: recipes/wip/libs/tls/openssl3/redox.patch ================================================ diff -ruwN source/apps/lib/apps.c source-new/apps/lib/apps.c --- source/apps/lib/apps.c 2025-09-16 19:05:33.000000000 +0700 +++ source-new/apps/lib/apps.c 2025-09-20 12:29:36.439917319 +0700 @@ -2839,7 +2839,7 @@ return ret; } -#elif defined(_SC_CLK_TCK) /* by means of unistd.h */ +#elif defined(_SC_CLK_TCK) && !defined(__redox__) /* by means of unistd.h */ # include double app_tminterval(int stop, int usertime) diff -ruwN source/Configurations/10-main.conf source-new/Configurations/10-main.conf --- source/Configurations/10-main.conf 2025-09-16 19:05:33.000000000 +0700 +++ source-new/Configurations/10-main.conf 2025-09-20 13:13:14.569456910 +0700 @@ -208,6 +208,40 @@ shared_extension => ".so", }, +### Redox configurations + "redox-common" => { + inherit_from => [ "BASE_unix" ], + cc => "gcc", + thread_scheme => "pthreads", + dso_scheme => "dlfcn", + shared_target => "linux-shared", + shared_cflag => "-fPIC", + shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" }, + shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)", + }, + "redox-generic64" => { + inherit_from => [ "redox-common" ], + bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", + }, + "redox-aarch64" => { + inherit_from => [ "redox-generic64" ], + perlasm_scheme => "linux64", + }, + "redox-i586" => { + inherit_from => [ "redox-common" ], + bn_ops => "BN_LLONG", + perlasm_scheme => "elf", + }, + "redox-riscv64gc" => { + inherit_from => [ "redox-generic64" ], + perlasm_scheme => "linux64", + }, + "redox-x86_64" => { + inherit_from => [ "redox-generic64" ], + perlasm_scheme => "elf", + }, + + #### Solaris configurations "solaris-common" => { inherit_from => [ "BASE_unix" ], ================================================ FILE: recipes/wip/libs/tls/wolfssl5/recipe.toml ================================================ #TODO compiled but not tested # build instructions: # https://www.wolfssl.com/documentation/manuals/wolfssl/chapter02.html # https://www.wolfssl.com/documentation/manuals/wolfssl/chapter02.html#building-in-a-non-standard-environment # https://www.wolfssl.com/documentation/manuals/wolfssl/chapter02.html#building-with-configure-with-cross-compile # https://www.wolfssl.com/documentation/manuals/wolfssl/chapter02.html#cross-compiling # build options: https://www.wolfssl.com/documentation/manuals/wolfssl/chapter02.html#build-options # porting guide: https://www.wolfssl.com/documentation/manuals/wolfssl-porting-guide/ [source] git = "https://github.com/wolfSSL/wolfssl" rev = "v5.8.4-stable" shallow_clone = true script = """ autotools_recursive_regenerate """ [build] template = "configure" configureflags = [ "--disable-crypttests", ] ================================================ FILE: recipes/wip/libs/video/libgif/recipe.toml ================================================ [source] tar = "https://sourceforge.net/projects/giflib/files/giflib-5.2.2.tar.gz/download" blake3 = "025cd79ba2d524c24b33a3d2750c146c6823adf96e1dbcc380ca6210bc7058a8" patches = ["redox.patch"] [build] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ "${COOKBOOK_MAKE}" libgif.so libgif.a -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install-include install-lib DESTDIR="${COOKBOOK_STAGE}" """ ================================================ FILE: recipes/wip/libs/video/libgif/redox.patch ================================================ diff -ruwN giflib-5.2.1/Makefile source/Makefile --- giflib-5.2.1/Makefile 2019-06-24 10:08:57.000000000 -0600 +++ source/Makefile 2025-05-10 13:15:44.301303744 -0600 @@ -14,7 +14,7 @@ TAR = tar INSTALL = install -PREFIX = /usr/local +PREFIX = /usr BINDIR = $(PREFIX)/bin INCDIR = $(PREFIX)/include LIBDIR = $(PREFIX)/lib ================================================ FILE: recipes/wip/libs/video/libmatroska/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Matroska-Org/libmatroska#building-and-installing [source] tar = "https://dl.matroska.org/downloads/libmatroska/libmatroska-1.7.1.tar.xz" [build] template = "cmake" ================================================ FILE: recipes/wip/libs/video/libopenshot/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log # build instructions: https://github.com/OpenShot/libopenshot/wiki/Linux-Build-Instructions [source] git = "https://github.com/OpenShot/libopenshot" rev = "v0.5.0" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DENABLE_PARALLEL_CTEST=OFF", "-DENABLE_LIB_DOCS=OFF", "-DUSE_HW_ACCEL=OFF", "-DENABLE_OPENCV=OFF", ] # dependencies = [ # "libopenshot-audio", # "ffmpeg6", # "qt5-base", # "qt5-svg", # "qt5-multimedia", # "libzmq", # #"opencv4", # "protobuf", # "babl", # "imagemagick", # ] ================================================ FILE: recipes/wip/libs/video/libvpx/recipe.toml ================================================ #TODO redox target error [source] git = "https://chromium.googlesource.com/webm/libvpx" rev = "v1.16.0" shallow_clone = true [build] template = "configure" ================================================ FILE: recipes/wip/logging/krapslog/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/acj/krapslog-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/math/cosmic-ext-calculator/recipe.toml ================================================ #TODO not compiled or tested #TODO verify if the desktop shortcut and icon configuration is correct [source] git = "https://github.com/cosmic-utils/calculator" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps cp -rv "${COOKBOOK_SOURCE}"/res/app.desktop "${COOKBOOK_STAGE}"/usr/share/applications/dev.edfloreshz.Calculator.desktop cp -rv "${COOKBOOK_SOURCE}"/res/metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo/dev.edfloreshz.Calculator.metainfo.xml cp -rv "${COOKBOOK_SOURCE}"/res/icons/hicolor/scalable/apps/icon.svg "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps/dev.edfloreshz.Calculator.svg cookbook_cargo """ ================================================ FILE: recipes/wip/math/fend/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/printfn/fend" [build] dependencies = [ "openssl1", ] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages fend """ ================================================ FILE: recipes/wip/math/fractal-explorer/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/boclair/fractal-explorer" [build] template = "cargo" ================================================ FILE: recipes/wip/math/kalc/recipe.toml ================================================ #TODO gmp-mpfr-sys crate error [source] git = "https://github.com/bgkillas/kalc" [build] template = "cargo" ================================================ FILE: recipes/wip/math/kalker/recipe.toml ================================================ #TODO gmp-mpfr-sys crate error (after cargo update) [source] git = "https://github.com/PaddiM8/kalker" [build] template = "custom" dependencies = [ "libgmp", "libmpfr", "mpc", ] script = """ cookbook_cargo_packages kalker """ ================================================ FILE: recipes/wip/math/numbat/recipe.toml ================================================ #TODO compiled but not tested #TODO missing script to properly move the binary [source] git = "https://github.com/sharkdp/numbat" [build] template = "custom" script = """ cookbook_cargo_packages numbat-cli """ ================================================ FILE: recipes/wip/math/numr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/nasedkinpv/numr" [build] template = "custom" script = """ cookbook_cargo_packages numr-cli numr-tui """ ================================================ FILE: recipes/wip/math/primesieve/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/kimwalisch/primesieve/blob/master/doc/BUILD.md [source] git = "https://github.com/kimwalisch/primesieve" rev = "f3114488ddded8edf2c201e31ad308ed9e6a9f78" [build] template = "cmake" ================================================ FILE: recipes/wip/math/qalculate-gtk/recipe.toml ================================================ #TODO make gtk3 work [source] tar = "https://github.com/Qalculate/qalculate-gtk/releases/download/v4.9.0/qalculate-gtk-4.9.0.tar.gz" [build] template = "configure" dependencies = [ "gtk3", "libqalculate", ] ================================================ FILE: recipes/wip/math/rink/recipe.toml ================================================ #TODO async-io and rustix crates error [source] git = "https://github.com/tiffany352/rink-rs" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo_packages rink """ ================================================ FILE: recipes/wip/media/effy/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/aNNiMON/effy" [build] template = "cargo" [package] dependencies = [ "ffmpeg6", ] ================================================ FILE: recipes/wip/mobile/android-tools/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/nmeum/android-tools/releases/download/35.0.2/android-tools-35.0.2.tar.xz" [build] template = "cmake" dependencies = [ "libusb", "pcre", "protobuf", "libbrotli", "zstd", "lz4", ] dev-dependencies = ["host:go"] ================================================ FILE: recipes/wip/monitors/bandwhich/recipe.toml ================================================ #TODO redox_syscall crate error [source] git = "https://github.com/imsnif/bandwhich" [build] template = "cargo" ================================================ FILE: recipes/wip/monitors/bottom/recipe.toml ================================================ #TODO missing data [source] git = "https://github.com/jackpot51/bottom" [build] template = "cargo" ================================================ FILE: recipes/wip/monitors/conky/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://conky.cc/documents/compiling [source] git = "https://github.com/brndnmtthws/conky" rev = "bbdc7081aec27daafca07fc40523335a2ea0a992" [build] template = "custom" dependencies = [ "imlib2", "ncurses", "libxml2", "curl", ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_cmake """ ================================================ FILE: recipes/wip/monitors/cosmic-ext-observatory/recipe.toml ================================================ #TODO not compiled or tested #TODO verify if the resource commands are correct [source] git = "https://github.com/cosmic-utils/observatory" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons cp -rv "${COOKBOOK_SOURCE}"/observatory/res/app.desktop "${COOKBOOK_STAGE}"/usr/share/applications/io.github.cosmic_utils.observatory.desktop cp -rv "${COOKBOOK_SOURCE}"/observatory/res/metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo/io.github.cosmic_utils.observatory.metainfo.xml cp -rv "${COOKBOOK_SOURCE}"/observatory/res/icons/hicolor/scalable/apps/icon.svg "${COOKBOOK_STAGE}"/usr/share/icons/hicolor/scalable/apps/io.github.cosmic_utils.observatory.svg cookbook_cargo_packages observatory """ ================================================ FILE: recipes/wip/monitors/fluere/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/SkuldNorniern/fluere" [build] template = "cargo" ================================================ FILE: recipes/wip/monitors/hearth/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/aheart/hearth" [build] template = "cargo" ================================================ FILE: recipes/wip/monitors/htop/recipe.toml ================================================ #TODO Promote [source] git = "https://github.com/willnode/htop" branch = "redox" script = """ autotools_recursive_regenerate """ [build] template = "configure" dependencies = [ "ncursesw", ] [package] dependencies = [ "terminfo" ] ================================================ FILE: recipes/wip/monitors/latencymon/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/alttch/latencymon" [build] template = "cargo" ================================================ FILE: recipes/wip/monitors/mountstatus/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/acdha/mountstatus" [build] template = "cargo" ================================================ FILE: recipes/wip/monitors/resources/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/nokyan/resources" [build] template = "meson" mesonflags = [ "-Dprofile=default", ] dependencies = [ "glib", "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/monitors/rtop/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/narendasan/rtop" [build] template = "cargo" ================================================ FILE: recipes/wip/monitors/sentrum/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/sommerfelddev/sentrum" [build] template = "cargo" ================================================ FILE: recipes/wip/monitors/serial-monitor-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/hacknus/serial-monitor-rust" [build] template = "cargo" dependencies = [ "libxkbcommon", "openssl1", ] ================================================ FILE: recipes/wip/monitors/sniffnet/recipe.toml ================================================ #TODO make the libpcap dependency work [source] git = "https://github.com/GyulyVGC/sniffnet" [build] template = "cargo" dependencies = [ "libpcap", "fontconfig", ] ================================================ FILE: recipes/wip/monitors/socktop/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jasonwitty/socktop" [build] template = "custom" script = """ cookbook_cargo_packages socktop socktop_agent """ ================================================ FILE: recipes/wip/monitors/sysinfo/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/sysinfo" [build] template = "custom" script = """ cookbook_cargo_examples simple """ ================================================ FILE: recipes/wip/monitors/xtop/recipe.toml ================================================ # TODO compiles but fails to run # ratatui-widgets-0.3.0 src/guage.rs 313:9 Ratio should be between 0 and 1 inclusively [source] git = "https://github.com/mabognar/xtop" [build] template = "cargo" ================================================ FILE: recipes/wip/net/admin/webmin/recipe.toml ================================================ #TODO not tested # how to setup: https://webmin.com/download/#freebsd-and-any-other-linux-installation-from-source [source] tar = "https://github.com/webmin/webmin/releases/download/2.600/webmin-2.600-minimal.tar.gz" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user/webmin" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/webmin" """ [package] dependencies = ["perl5"] ================================================ FILE: recipes/wip/net/analysis/angryether-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/pg3uk/AngryEtherRust" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/analysis/echo/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/lo2dev/Echo" rev = "2.0" shallow_clone = true [build] template = "meson" dependencies = [ "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/net/analysis/pepe/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/omarmhaimdat/pepe" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/analysis/r-lanscan/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/robgonnella/r-lanscan" shallow_clone = true [build] template = "cargo" cargopackages = [ "r-lancli", "r-lanterm", ] ================================================ FILE: recipes/wip/net/analysis/rkik/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/aguacero7/rkik" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/analysis/ttl/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/lance0/ttl" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/bittorrent/aquatic-udp/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/greatest-ape/aquatic" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages aquatic_udp mv "${COOKBOOK_STAGE}/usr/bin/aquatic_udp" "${COOKBOOK_STAGE}/usr/bin/aquatic-udp" """ ================================================ FILE: recipes/wip/net/bittorrent/attractorr/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/rnestler/attractorr" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/net/bittorrent/btpd/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/btpd/btpd?tab=readme-ov-file#building [source] git = "https://github.com/btpd/btpd" rev = "a3a10dfe1ece4a726530353a7b208c0cb4ff7e0d" shallow_clone = true [build] template = "configure" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/net/bittorrent/rtorrent/recipe.toml ================================================ #TODO can't find pthreads support [source] tar = "https://github.com/rakshasa/rtorrent-archive/raw/master/rtorrent-0.9.8.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/net/bittorrent/superseedr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Jagalite/superseedr" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/bittorrent/synapse-bt/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Luminarys/synapse" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/bittorrent/transg-tui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/PanAeon/transg-tui" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/net/bittorrent/transmission-cli/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # build instructions: https://github.com/transmission/transmission/blob/4.0.x/docs/Building-Transmission.md#on-unix # build options: https://github.com/transmission/transmission/blob/4.0.x/CMakeLists.txt#L45 [source] tar = "https://github.com/transmission/transmission/releases/download/4.0.6/transmission-4.0.6.tar.xz" [build] template = "cmake" cmakeflags = [ "-DENABLE_CLI=ON", "-DINSTALL_WEB=OFF", "-DENABLE_TESTS=OFF", "-DINSTALL_DOC=OFF", ] #dependencies = [ #"openssl3", #"curl", #] ================================================ FILE: recipes/wip/net/bittorrent/transmission-daemon/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # build instructions: https://github.com/transmission/transmission/blob/4.0.x/docs/Building-Transmission.md#on-unix # build options: https://github.com/transmission/transmission/blob/4.0.x/CMakeLists.txt#L45 [source] tar = "https://github.com/transmission/transmission/releases/download/4.0.6/transmission-4.0.6.tar.xz" [build] template = "cmake" cmakeflags = [ "-DINSTALL_WEB=OFF", "-DENABLE_UTILS=OFF", "-DENABLE_TESTS=OFF", "-DINSTALL_DOC=OFF", ] #dependencies = [ # "openssl3", # "curl", #] ================================================ FILE: recipes/wip/net/bittorrent/transmission-gtk/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # build instructions: https://github.com/transmission/transmission/blob/4.0.x/docs/Building-Transmission.md#on-unix # build options: https://github.com/transmission/transmission/blob/4.0.x/CMakeLists.txt#L45 [source] tar = "https://github.com/transmission/transmission/releases/download/4.0.6/transmission-4.0.6.tar.xz" [build] template = "cmake" cmakeflags = [ "-DINSTALL_WEB=OFF", "-DENABLE_TESTS=OFF", "-DINSTALL_DOC=OFF", ] dependencies = [ #"openssl3", #"curl", "gtk3mm", ] ================================================ FILE: recipes/wip/net/bittorrent/webtorrent-cli/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/webtorrent/webtorrent-cli" rev = "v5.1.3" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin/webtorrent-dir cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/bin/webtorrent-dir echo "#!/usr/bin/env sh \n cd /usr/bin/webtorrent-dir \n npx webtorrent-cli" > "${COOKBOOK_STAGE}"/usr/bin/webtorrent chmod a+x "${COOKBOOK_STAGE}"/usr/bin/webtorrent """ [package] dependencies = ["nodejs24"] ================================================ FILE: recipes/wip/net/chat/bitchat-tui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/vaibhav-mattoo/bitchat-tui" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/chat/gosuto/recipe.toml ================================================ #TODO not compiled or tested #TODO build libwebrtc from source: https://github.com/MaikBuse/gosuto#voip--prebuilt-libwebrtc [source] git = "https://github.com/MaikBuse/gosuto" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/chat/halloy/recipe.toml ================================================ #TODO xdg-home crate error (after cargo update) [source] git = "https://github.com/squidowl/halloy" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/net/chat/iamb/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ulyssa/iamb" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/chat/jami/recipe.toml ================================================ #TODO missing cross-compilation variables in build.py script #TODO build with libwrap instead of dbus #TODO discover minimum dependencies # build instructions: https://docs.jami.net/en_US/build/index.html [source] git = "https://git.jami.net/savoirfairelinux/jami-client-qt" branch = "stable/20260216.0" shallow_clone = true [build] template = "custom" script = """ ./build.py --install """ ================================================ FILE: recipes/wip/net/chat/pidgin/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from gnu autotools log [source] tar = "https://sourceforge.net/projects/pidgin/files/Pidgin/2.14.12/pidgin-2.14.12.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/net/chat/telegram-desktop/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log [source] tar = "https://github.com/telegramdesktop/tdesktop/releases/download/v6.5.1/tdesktop-6.5.1-full.tar.gz" [build] template = "cmake" cmakeflags = [ "-DDESKTOP_APP_DISABLE_AUTOUPDATE=1", #"-DDESKTOP_APP_ENABLE_LTO=ON", ] # dependencies = [ # "qt6-svg", # "qt6-imageformats", # "fontconfig", # "freetype2", # "glib", # "expat", # "libuuid", # "libpng", # "zlib", # "libffi", # "libpcre", # "libbsd", # "libmd", # "libbrotli", # ] ================================================ FILE: recipes/wip/net/chat/termchat/recipe.toml ================================================ #TODO update the mio crate to 0.8.x [source] git = "https://github.com/lemunozm/termchat" shallow_clone = true [build] template = "cargo" cargoflags = ["--all-features"] ================================================ FILE: recipes/wip/net/chat/tiny/recipe.toml ================================================ #TODO compiled but not tested (after cargo update and a patch on ring) [source] git = "https://github.com/osa1/tiny" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages tiny """ ================================================ FILE: recipes/wip/net/download/aim/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mihaigalos/aim" shallow_clone = true [build] dependencies = [ "openssl3", ] template = "cargo" ================================================ FILE: recipes/wip/net/download/anime-downloader/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/B0SEmc/Anime-Downloader" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/download/apkeep/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/EFForg/apkeep" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/download/aria2/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0.tar.xz" [build] template = "configure" dependencies = [ "openssl3", "zlib", "libxml2", "libgcrypt", ] ================================================ FILE: recipes/wip/net/download/curlio/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Kei-K23/curlio" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/download/kget/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/davimf721/KGet" shallow_clone = true [build] template = "cargo" #dependencies = [ # "openssl3", #] ================================================ FILE: recipes/wip/net/download/kitget/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/adamperkowski/kitget" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/download/parabolic/recipe.toml ================================================ #TODO missing script for .net: https://github.com/NickvisionApps/Parabolic#-building #TODO requires .net 10 [source] git = "https://github.com/NickvisionApps/Parabolic" rev = "2026.2.4" shallow_clone = true [build] template = "custom" dependencies = [ "gtk4", "libadwaita", ] dev-dependencies = [ "host:blueprint", "host:dotnet10", ] ================================================ FILE: recipes/wip/net/download/rusty-psn-cli/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/RainbowCookie32/rusty-psn" shallow_clone = true [build] template = "cargo" cargoflags = ["--features cli"] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/net/download/rusty-psn-gui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/RainbowCookie32/rusty-psn" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/net/download/wget2/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from gnu autotools log # build instructions: https://gitlab.com/gnuwget/wget2#build-requirements [source] tar = "https://ftp.gnu.org/gnu/wget/wget2-2.2.1.tar.gz" [build] template = "configure" # dependencies = [ # "gettext", # "libiconv", # "zlib", # "pcre", # "gnutls3", # "bzip2", # "xz", # "zstd", # ] ================================================ FILE: recipes/wip/net/download/yaydl/recipe.toml ================================================ #TODO compilation error (after cargo update) [source] git = "https://github.com/dertuxmalwieder/yaydl" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/net/download/youtube-tui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Siriusmart/youtube-tui" shallow_clone = true [build] template = "cargo" cargoflags = ["--no-default-features"] dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/net/download/yt-dlp/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.tar.gz" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin/yt-dlp-dir cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/bin/yt-dlp-dir echo "/usr/bin/yt-dlp-dir/yt-dlp.sh" > "${COOKBOOK_STAGE}"/usr/bin/yt-dlp chmod a+x "${COOKBOOK_STAGE}"/usr/bin/yt-dlp-dir/yt-dlp.sh "${COOKBOOK_STAGE}"/usr/bin/yt-dlp """ ================================================ FILE: recipes/wip/net/email/neverest/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/pimalaya/neverest" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/email/thunderbird/mozconfig ================================================ ac_add_options --enable-project=comm/mail ac_add_options --prefix="{COOKBOOK_STAGE}/usr" ac_add_options --enable-release ac_add_options --target="{TARGET}" ac_add_options --enable-bootstrap ac_add_options --disable-jack ac_add_options --disable-crashreporter ac_add_options --disable-updater ================================================ FILE: recipes/wip/net/email/thunderbird/recipe.toml ================================================ #TODO missing cross-compilation variables and a command to move the executable to the package #TODO determine minimum dependencies from mach log # build instructions - https://developer.thunderbird.net/thunderbird-development/building-thunderbird [source] tar = "https://archive.mozilla.org/pub/thunderbird/releases/140.7.0esr/source/thunderbird-140.7.0esr.source.tar.xz" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin export MOZCONFIG="{COOKBOOK_RECIPE}/mozconfig" ./mach build """ ================================================ FILE: recipes/wip/net/ftp/filezilla-client/recipe.toml ================================================ #TODO not compiled or tested # build intructions: https://wiki.filezilla-project.org/Client_Compile [source] tar = "https://dl3.cdn.filezilla-project.org/client/FileZilla_3.67.1_src.tar.xz?h=HG1-LUZAqtxJaEQhlQ9oNg&x=1722821782" [build] template = "configure" dependencies = [ "libfilezilla", "gnutls3", "libidn", "dbus", ] ================================================ FILE: recipes/wip/net/ftp/filezilla-server/recipe.toml ================================================ #TODO not compiled or tested # build intructions: https://wiki.filezilla-project.org/Client_Compile [source] tar = "https://dl2.cdn.filezilla-project.org/server/FileZilla_Server_1.8.2_src.tar.xz?h=05HQOZtMOkV85GW9u3rrsg&x=1722821856" [build] template = "configure" dependencies = [ "libfilezilla", "gnutls3", "libidn", ] ================================================ FILE: recipes/wip/net/ftp/unftp/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bolcom/unFTP" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/gemini/lagrange/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/skyjake/lagrange#how-to-compile [source] tar = "https://git.skyjake.fi/gemini/lagrange/releases/download/v1.19.4/lagrange-1.19.4.tar.gz" [build] template = "cmake" cmakeflags = [ "-DENABLE_GAMEPAD=OFF", "-DENABLE_POPUP_MENUS=OFF", "-DENABLE_MPG123=OFF" ] dependencies = [ "sdl2", "openssl3", "zlib", "harfbuzz", "pcre", "fribidi", "libunistring", #"mpg123", ] ================================================ FILE: recipes/wip/net/http/apache-httpd/recipe.toml ================================================ #TODO compiles but requires setgroups syscall at startup [source] tar= "https://archive.apache.org/dist/httpd/httpd-2.4.61.tar.bz2" patches = [ "redox.patch", ] [build] dependencies = [ "apr", "apr-util", "curl", "expat", "gdbm", "libuuid", "libxcrypt", "libxml2", "openssl3", "pcre", "zlib", ] template = "custom" script = """ # cookbook_configure DYNAMIC_INIT export COOKBOOK_MAKE_JOBS=1 export CPPFLAGS="$CPPFLAGS -I${COOKBOOK_SYSROOT}/include/apr-1 -DDEBUG=1" export LTFLAGS="$LTFLAGS -Wall" COOKBOOK_CONFIGURE_FLAGS=( --build=$(/usr/bin/cc -dumpmachine) --host=${TARGET} --with-apr=$COOKBOOK_SYSROOT --with-apr-util=$COOKBOOK_SYSROOT --enable-unixd=shared --enable-authz_core=shared --enable-authz_host=shared ac_cv_prog_PCRE_CONFIG=$COOKBOOK_SYSROOT/bin/pcre-config ap_cv_void_ptr_lt_long=no ) cd ${COOKBOOK_SOURCE} sed -i build/rules.mk.in -e 's/--mode=compile/& --tag=CC/' sed -i build/rules.mk.in -e 's/--mode=link/& --tag=CC/' "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" sed -s 's/^LoadModule /# &/' -i ${COOKBOOK_STAGE}/usr/local/apache2/conf/httpd.conf sed -s 's/^User daemon/User user/' -i ${COOKBOOK_STAGE}/usr/local/apache2/conf/httpd.conf sed -s 's/^Group daemon/Group #1000/' -i ${COOKBOOK_STAGE}/usr/local/apache2/conf/httpd.conf touch ${COOKBOOK_STAGE}/usr/local/apache2/logs/keep_dir """ ================================================ FILE: recipes/wip/net/http/apache-httpd/redox.patch ================================================ diff --git a/Makefile.in b/Makefile.in index ebf7a16..296e661 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,5 +1,5 @@ -SUBDIRS = srclib os server modules support +SUBDIRS = srclib os server modules CLEAN_SUBDIRS = test PROGRAM_NAME = $(progname) @@ -7,9 +7,10 @@ PROGRAM_SOURCES = modules.c PROGRAM_LDADD = buildmark.o $(HTTPD_LDFLAGS) $(PROGRAM_DEPENDENCIES) $(PCRE_LIBS) $(EXTRA_LIBS) $(AP_LIBS) $(LIBS) PROGRAM_PRELINK = $(COMPILE) -c $(top_srcdir)/server/buildmark.c PROGRAM_DEPENDENCIES = \ + -lc \ + $(MPM_LIB) \ server/libmain.la \ $(BUILTIN_LIBS) \ - $(MPM_LIB) \ os/$(OS_DIR)/libos.la sbin_PROGRAMS = $(PROGRAM_NAME) @@ -290,28 +291,7 @@ install-man: cd $(DESTDIR)$(manualdir) && find . -name ".svn" -type d -print | xargs rm -rf 2>/dev/null || true; \ fi -install-suexec: install-suexec-$(INSTALL_SUEXEC) - -install-suexec-binary: - @if test -f $(builddir)/support/suexec; then \ - test -d $(DESTDIR)$(sbindir) || $(MKINSTALLDIRS) $(DESTDIR)$(sbindir); \ - $(INSTALL_PROGRAM) $(top_builddir)/support/suexec $(DESTDIR)$(sbindir); \ - fi - -install-suexec-setuid: install-suexec-binary - @if test -f $(builddir)/support/suexec; then \ - chmod 4755 $(DESTDIR)$(sbindir)/suexec; \ - fi - -install-suexec-caps: install-suexec-binary - @if test -f $(builddir)/support/suexec; then \ - setcap 'cap_setuid,cap_setgid+pe' $(DESTDIR)$(sbindir)/suexec; \ - fi - -suexec: - cd support && $(MAKE) suexec - -x-local-distclean: +-local-distclean: @rm -rf autom4te.cache # XXX: This looks awfully platform-specific [read: bad form and style] diff --git a/configure b/configure index 6eb60fd..46b490e 100755 --- a/configure +++ b/configure @@ -4998,7 +4998,7 @@ else done if test $apr_addto_duplicate = "0"; then test "x$silent" != "xyes" && echo " adding \"$i\" to LDFLAGS" - LDFLAGS="$LDFLAGS $i" + # LDFLAGS="$LDFLAGS $i" fi done fi @@ -5006,6 +5006,7 @@ else APU_BINDIR=`$apu_config --bindir` APU_INCLUDEDIR=`$apu_config --includedir` APU_INCLUDES=`$apu_config --includes` + echo "$apu_config --includes" = "$APU_INCLUDES" APU_VERSION=`$apu_config --version` APU_CONFIG="$APU_BINDIR/apu-`echo ${APU_VERSION} | sed 's,\..*,,'`-config" fi @@ -6268,9 +6269,9 @@ $as_echo "$as_me: Using external PCRE library from $PCRE_CONFIG" >&6;} if test "x$PCRE_LIBS" = "x"; then test "x$silent" != "xyes" && echo " setting PCRE_LIBS to \"`$PCRE_CONFIG --libs8 2>/dev/null || $PCRE_CONFIG --libs`\"" - PCRE_LIBS="`$PCRE_CONFIG --libs8 2>/dev/null || $PCRE_CONFIG --libs`" + PCRE_LIBS="-lpcre" else - apr_addto_bugger="`$PCRE_CONFIG --libs8 2>/dev/null || $PCRE_CONFIG --libs`" + apr_addto_bugger="-lpcre" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $PCRE_LIBS; do @@ -40691,9 +40692,11 @@ fi if test x${apu_found} != xobsolete; then - AP_LIBS="$AP_LIBS `$apu_config --avoid-ldap --link-libtool --libs`" + # AP_LIBS="$AP_LIBS `$apu_config --avoid-ldap --link-libtool --libs`" -ldb-5.3 + AP_LIBS="$AP_LIBS -laprutil-1 -lgdbm -lexpat" fi -AP_LIBS="$AP_LIBS `$apr_config --link-libtool --libs`" +# AP_LIBS="$AP_LIBS `$apr_config --link-libtool --libs`" +AP_LIBS="$AP_LIBS -lapr-1 -luuid -lrt -lcrypt -lpthread -ldl" APACHE_VAR_SUBST="$APACHE_VAR_SUBST AP_LIBS" diff --git a/os/unix/unixd.c b/os/unix/unixd.c index 0245720..cd241d2 100644 --- a/os/unix/unixd.c +++ b/os/unix/unixd.c @@ -231,31 +231,6 @@ AP_DECLARE(apr_status_t) ap_unixd_set_proc_mutex_perms(apr_proc_mutex_t *pmutex) apr_lockmech_e mech = proc_mutex_mech(pmutex); switch(mech) { -#if APR_HAS_SYSVSEM_SERIALIZE - case APR_LOCK_SYSVSEM: - { - apr_os_proc_mutex_t ospmutex; -#if !APR_HAVE_UNION_SEMUN - union semun { - long val; - struct semid_ds *buf; - unsigned short *array; - }; -#endif - union semun ick; - struct semid_ds buf = { { 0 } }; - - apr_os_proc_mutex_get(&ospmutex, pmutex); - buf.sem_perm.uid = ap_unixd_config.user_id; - buf.sem_perm.gid = ap_unixd_config.group_id; - buf.sem_perm.mode = 0600; - ick.buf = &buf; - if (semctl(ospmutex.crossproc, 0, IPC_SET, ick) < 0) { - return errno; - } - } - break; -#endif #if APR_HAS_FLOCK_SERIALIZE case APR_LOCK_FLOCK: { diff --git a/server/Makefile.in b/server/Makefile.in index 8111877..0449553 100644 --- a/server/Makefile.in +++ b/server/Makefile.in @@ -1,5 +1,5 @@ -CLEAN_TARGETS = gen_test_char test_char.h \ +CLEAN_TARGETS = \ ApacheCoreOS2.def httpd.exp export_files \ exports.c export_vars.h @@ -24,12 +24,6 @@ TARGETS = delete-exports $(LTLIBRARY_NAME) $(CORE_IMPLIB_FILE) export_vars.h htt include $(top_builddir)/build/rules.mk include $(top_srcdir)/build/library.mk -gen_test_char_OBJECTS = gen_test_char.lo -gen_test_char: $(gen_test_char_OBJECTS) - $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) - -test_char.h: gen_test_char - ./gen_test_char > test_char.h util.lo: test_char.h diff --git a/server/gen_test_char.c b/server/gen_test_char.c deleted file mode 100644 index 248216b..0000000 --- a/server/gen_test_char.c +++ /dev/null @@ -1,192 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifdef CROSS_COMPILE - -#include -#define apr_isalnum(c) (isalnum(((unsigned char)(c)))) -#define apr_isalpha(c) (isalpha(((unsigned char)(c)))) -#define apr_iscntrl(c) (iscntrl(((unsigned char)(c)))) -#define apr_isprint(c) (isprint(((unsigned char)(c)))) -#define APR_HAVE_STDIO_H 1 -#define APR_HAVE_STRING_H 1 - -#else - -#include "apr.h" -#include "apr_lib.h" - -#endif - -#if defined(WIN32) || defined(OS2) -#define NEED_ENHANCED_ESCAPES -#endif - -#if APR_HAVE_STDIO_H -#include -#endif -#if APR_HAVE_STRING_H -#include -#endif - -/* A bunch of functions in util.c scan strings looking for certain characters. - * To make that more efficient we encode a lookup table. - */ -#define T_ESCAPE_SHELL_CMD (0x01) -#define T_ESCAPE_PATH_SEGMENT (0x02) -#define T_OS_ESCAPE_PATH (0x04) -#define T_HTTP_TOKEN_STOP (0x08) -#define T_ESCAPE_LOGITEM (0x10) -#define T_ESCAPE_FORENSIC (0x20) -#define T_ESCAPE_URLENCODED (0x40) -#define T_HTTP_CTRLS (0x80) -#define T_VCHAR_OBSTEXT (0x100) -#define T_URI_UNRESERVED (0x200) - -int main(int argc, char *argv[]) -{ - unsigned c; - unsigned short flags; - - printf("/* this file is automatically generated by gen_test_char, " - "do not edit */\n" - "#define T_ESCAPE_SHELL_CMD (%u)\n" - "#define T_ESCAPE_PATH_SEGMENT (%u)\n" - "#define T_OS_ESCAPE_PATH (%u)\n" - "#define T_HTTP_TOKEN_STOP (%u)\n" - "#define T_ESCAPE_LOGITEM (%u)\n" - "#define T_ESCAPE_FORENSIC (%u)\n" - "#define T_ESCAPE_URLENCODED (%u)\n" - "#define T_HTTP_CTRLS (%u)\n" - "#define T_VCHAR_OBSTEXT (%u)\n" - "#define T_URI_UNRESERVED (%u)\n" - "\n" - "static const unsigned short test_char_table[256] = {", - T_ESCAPE_SHELL_CMD, - T_ESCAPE_PATH_SEGMENT, - T_OS_ESCAPE_PATH, - T_HTTP_TOKEN_STOP, - T_ESCAPE_LOGITEM, - T_ESCAPE_FORENSIC, - T_ESCAPE_URLENCODED, - T_HTTP_CTRLS, - T_VCHAR_OBSTEXT, - T_URI_UNRESERVED - ); - - for (c = 0; c < 256; ++c) { - flags = 0; - if (c % 8 == 0) - printf("\n "); - - /* escape_shell_cmd */ -#ifdef NEED_ENHANCED_ESCAPES - /* Win32/OS2 have many of the same vulnerable characters - * as Unix sh, plus the carriage return and percent char. - * The proper escaping of these characters varies from unix - * since Win32/OS2 use carets or doubled-double quotes, - * and neither lf nor cr can be escaped. We escape unix - * specific as well, to assure that cross-compiled unix - * applications behave similarly when invoked on win32/os2. - * - * Rem please keep in-sync with apr's list in win32/filesys.c - */ - if (c && strchr("&;`'\"|*?~<>^()[]{}$\\\n\r%", c)) { - flags |= T_ESCAPE_SHELL_CMD; - } -#else - if (c && strchr("&;`'\"|*?~<>^()[]{}$\\\n", c)) { - flags |= T_ESCAPE_SHELL_CMD; - } -#endif - - if (!apr_isalnum(c) && !strchr("$-_.+!*'(),:@&=~", c)) { - flags |= T_ESCAPE_PATH_SEGMENT; - } - - if (!apr_isalnum(c) && !strchr("$-_.+!*'(),:;@&=/~", c)) { - flags |= T_OS_ESCAPE_PATH; - } - - if (!apr_isalnum(c) && !strchr(".-*_ ", c)) { - flags |= T_ESCAPE_URLENCODED; - } - - /* Stop for any non-'token' character, including ctrls, obs-text, - * and "tspecials" (RFC2068) a.k.a. "separators" (RFC2616), which - * is easier to express as characters remaining in the ASCII token set - */ - if (!c || !(apr_isalnum(c) || strchr("!#$%&'*+-.^_`|~", c))) { - flags |= T_HTTP_TOKEN_STOP; - } - - /* Catch CTRLs other than VCHAR, HT and SP, and obs-text (RFC7230 3.2) - * This includes only the C0 plane, not C1 (which is obs-text itself.) - * XXX: We should verify that all ASCII C0 ctrls/DEL corresponding to - * the current EBCDIC translation are captured, and ASCII C1 ctrls - * corresponding are all permitted (as they fall under obs-text rule) - */ - if (!c || (apr_iscntrl(c) && c != '\t')) { - flags |= T_HTTP_CTRLS; - } - - /* From RFC3986, the specific sets of gen-delims, sub-delims (2.2), - * and unreserved (2.3) that are possible somewhere within a URI. - * Spec requires all others to be %XX encoded, including obs-text. - */ - if (c && !apr_iscntrl(c) && c != ' ') { - flags |= T_VCHAR_OBSTEXT; - } - - /* For logging, escape all control characters, - * double quotes (because they delimit the request in the log file) - * backslashes (because we use backslash for escaping) - * and 8-bit chars with the high bit set - */ - if (c && (!apr_isprint(c) || c == '"' || c == '\\' || apr_iscntrl(c))) { - flags |= T_ESCAPE_LOGITEM; - } - - /* For forensic logging, escape all control characters, top bit set, - * :, | (used as delimiters) and % (used for escaping). - */ - if (!apr_isprint(c) || c == ':' || c == '|' || c == '%' - || apr_iscntrl(c) || !c) { - flags |= T_ESCAPE_FORENSIC; - } - - /* Characters in the RFC 3986 "unreserved" set. - * https://datatracker.ietf.org/doc/html/rfc3986#section-2.3 */ - if (c && (apr_isalnum(c) || strchr("-._~", c))) { - flags |= T_URI_UNRESERVED; - } - - printf("0x%03x%c", flags, (c < 255) ? ',' : ' '); - } - - printf("\n};\n\n"); - - printf( - "/* we assume the folks using this ensure 0 <= c < 256... which means\n" - " * you need a cast to (unsigned char) first, you can't just plug a\n" - " * char in here and get it to work, because if char is signed then it\n" - " * will first be sign extended.\n" - " */\n" - "#define TEST_CHAR(c, f) (test_char_table[(unsigned char)(c)] & (f))\n" - ); - - return 0; -} diff --git a/server/mpm_fdqueue.c b/server/mpm_fdqueue.c index 3697ca7..9f9d36e 100644 --- a/server/mpm_fdqueue.c +++ b/server/mpm_fdqueue.c @@ -17,6 +17,7 @@ #include "mpm_fdqueue.h" #if APR_HAS_THREADS +#warning "apr_has_threads" #include @@ -531,4 +532,6 @@ apr_status_t ap_queue_term(fd_queue_t *queue) return queue_interrupt(queue, 1, 1); } +#else +#warning "no apr_has_threads" #endif /* APR_HAS_THREADS */ diff --git a/server/test_char.h b/server/test_char.h new file mode 100644 index 0000000..ebd7395 --- /dev/null +++ b/server/test_char.h @@ -0,0 +1,53 @@ +/* this file is automatically generated by gen_test_char, do not edit */ +#define T_ESCAPE_SHELL_CMD (1) +#define T_ESCAPE_PATH_SEGMENT (2) +#define T_OS_ESCAPE_PATH (4) +#define T_HTTP_TOKEN_STOP (8) +#define T_ESCAPE_LOGITEM (16) +#define T_ESCAPE_FORENSIC (32) +#define T_ESCAPE_URLENCODED (64) +#define T_HTTP_CTRLS (128) +#define T_VCHAR_OBSTEXT (256) +#define T_URI_UNRESERVED (512) + +static const unsigned short test_char_table[256] = { + 0x0a8,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe, + 0x0fe,0x07e,0x0ff,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe, + 0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe, + 0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe,0x0fe, + 0x00e,0x140,0x15f,0x146,0x141,0x166,0x141,0x141, + 0x149,0x149,0x101,0x140,0x148,0x300,0x300,0x14a, + 0x300,0x300,0x300,0x300,0x300,0x300,0x300,0x300, + 0x300,0x300,0x168,0x14b,0x14f,0x148,0x14f,0x14f, + 0x148,0x300,0x300,0x300,0x300,0x300,0x300,0x300, + 0x300,0x300,0x300,0x300,0x300,0x300,0x300,0x300, + 0x300,0x300,0x300,0x300,0x300,0x300,0x300,0x300, + 0x300,0x300,0x300,0x14f,0x15f,0x14f,0x147,0x300, + 0x147,0x300,0x300,0x300,0x300,0x300,0x300,0x300, + 0x300,0x300,0x300,0x300,0x300,0x300,0x300,0x300, + 0x300,0x300,0x300,0x300,0x300,0x300,0x300,0x300, + 0x300,0x300,0x300,0x14f,0x167,0x14f,0x341,0x0fe, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e, + 0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e,0x17e +}; + +/* we assume the folks using this ensure 0 <= c < 256... which means + * you need a cast to (unsigned char) first, you can't just plug a + * char in here and get it to work, because if char is signed then it + * will first be sign extended. + */ +#define TEST_CHAR(c, f) (test_char_table[(unsigned char)(c)] & (f)) ================================================ FILE: recipes/wip/net/http/easyp/recipe.toml ================================================ #TODO not compiled or tested #TODO determine how to configure this part of the deployment script: https://github.com/gmatht/easyp/blob/main/deploy.sh#L39 [source] git = "https://github.com/gmatht/easyp-crate" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/http/ferron/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ferronweb/ferron" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages ferron """ ================================================ FILE: recipes/wip/net/http/freenginx/recipe.toml ================================================ #TODO can't find the options file [source] tar = "https://freenginx.org/download/nginx-1.24.0.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/net/http/http-server-rs/recipe.toml ================================================ #TODO camino crate error # broken since https://github.com/http-server-rs/http-server/pull/461 # because it needs https://trunkrs.dev to work [source] git = "https://github.com/http-server-rs/http-server" shallow_clone = true [build] template = "custom" dependencies = [ "openssl3", ] script = """ DYNAMIC_INIT "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/crates/file-explorer-plugin/Cargo.toml" \ --locked ${build_flags} --lib cp -v \ "target/${TARGET}/${build_type}/libfile_explorer_plugin.dylib" \ "${COOKBOOK_SOURCE}"/lib/http-server/inline/file_explorer.plugin.httprs COOKBOOK_CARGO_PATH=crates/http-server cookbook_cargo --bin http-server """ ================================================ FILE: recipes/wip/net/http/lighttpd/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.82.tar.xz" b3sum = "1890d4d63dab35ed8c6e994f11f408aaf9e6dd7cda959d2533a3c80d20c93029" patches = [ "redox.patch" ] [build] template = "cmake" cmakeflags = [ "-DWITH_OPENSSL=ON" ] dependencies = [ "pcre2", "openssl3", ] ================================================ FILE: recipes/wip/net/http/lighttpd/redox.patch ================================================ diff --color -ruwN source/src/fdevent.c source-new/src/fdevent.c --- source/src/fdevent.c 2025-09-13 02:08:20.000000000 +0700 +++ source-new/src/fdevent.c 2026-03-14 14:16:21.543520177 +0700 @@ -321,7 +321,7 @@ int fd; socklen_t len = (socklen_t) *addrlen; - #if defined(SOCK_CLOEXEC) && defined(SOCK_NONBLOCK) + #if defined(SOCK_CLOEXEC) && defined(SOCK_NONBLOCK) && !defined(__redox__) #if defined(__NetBSD__) const int sock_cloexec = 1; fd = paccept(listenfd, addr, &len, NULL, SOCK_CLOEXEC | SOCK_NONBLOCK); ================================================ FILE: recipes/wip/net/http/miniserve/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/svenstaro/miniserve" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/http/miniserve/redox.patch ================================================ diff --git a/Cargo.toml b/Cargo.toml index 68f26c9..98c4dde 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,6 @@ futures = "0.3" grass = { version = "0.13", features = ["macro"], default-features = false } hex = "0.4" httparse = "1" -if-addrs = "0.15" libflate = "2" log = "0.4" maud = "0.27" @@ -62,6 +61,9 @@ thiserror = "2" tokio = { version = "1.47.1", features = ["fs", "macros"] } zip = { version = "8", default-features = false } +[target.'cfg(not(target_os = "redox"))'.dependencies] +if-addrs = "0.15" + [features] default = ["tls"] # This feature allows us to use rustls only on architectures supported by ring. diff --git a/src/main.rs b/src/main.rs index aea9ed9..3c91968 100644 --- a/src/main.rs +++ b/src/main.rs @@ -193,6 +193,7 @@ async fn run(miniserve_config: MiniserveConfig) -> Result<(), StartupError> { .partition(|addr| !addr.is_unspecified()); // Replace wildcard addresses with local interface addresses + #[cfg(not(target_os="redox"))] if !wildcard.is_empty() { let all_ipv4 = wildcard.iter().any(|addr| addr.is_ipv4()); let all_ipv6 = wildcard.iter().any(|addr| addr.is_ipv6()); ================================================ FILE: recipes/wip/net/http/quark/recipe.toml ================================================ #TODO missing script for gnu make [source] git = "https://git.suckless.org/quark" rev = "5ad0df91757fbc577ffceeca633725e962da345d" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/net/http/sozu/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/sozu-proxy/sozu" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages sozu """ ================================================ FILE: recipes/wip/net/http/sws/recipe.toml ================================================ #TODO signal-hook crate error [source] git = "https://github.com/static-web-server/static-web-server" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/http/thttpd/recipe.toml ================================================ #TODO not compiled or tested # build instructions: read the INSTALL file [source] tar = "https://acme.com/software/thttpd/thttpd-2.29.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/net/lan/lantun/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/maxomatic458/lantun" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages lantun-cli """ ================================================ FILE: recipes/wip/net/lan/malai/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/fastn-stack/kulfi" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages malai """ ================================================ FILE: recipes/wip/net/lan/zerotier/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/zerotier/ZeroTierOne/blob/dev/build.md #TODO discover minimum dependencies [source] git = "https://github.com/zerotier/ZeroTierOne" rev = "1.16.0" shallow_clone = true [build] template = "custom" #dependencies = [ # "openssl3", #] ================================================ FILE: recipes/wip/net/lan/ztui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/erikh/ztui" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/monitor/network-monitor-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/grigio/network-monitor" shallow_clone = true [build] template = "cargo" dependencies = [ "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/net/monitor/rustnet/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/domcyrus/rustnet" shallow_clone = true [build] template = "cargo" dependencies = [ "libpcap", ] ================================================ FILE: recipes/wip/net/monitor/somo/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/theopfr/somo" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/onion-routing/arti/recipe.toml ================================================ #TODO pwd-grp crate error [source] git = "https://gitlab.torproject.org/tpo/core/arti" shallow_clone = true [build] template = "custom" dependencies = [ "openssl3", ] script = """ DYNAMIC_INIT cookbook_cargo_packages arti """ ================================================ FILE: recipes/wip/net/onion-routing/i2pd/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://i2pd.readthedocs.io/en/latest/devs/building/unix/ [source] git = "https://github.com/PurpleI2P/i2pd" rev = "2.59.0" shallow_clone = true [build] template = "cmake" dependencies = [ "boost", "openssl3", "zlib", ] ================================================ FILE: recipes/wip/net/onion-routing/tor/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://dist.torproject.org/tor-0.4.8.9.tar.gz" [build] template = "configure" dependencies = [ "libevent", "openssl3", "zlib", ] ================================================ FILE: recipes/wip/net/onion-routing/tor-browser/mozconfig ================================================ mk_add_options MOZ_OBJDIR=COOKBOOK_BUILD ac_add_options --target=TARGET ac_add_options --disable-debug ac_add_options --disable-tests ac_add_options --disable-audio-backends ac_add_options --disable-crashreporter ac_add_options --disable-updater ac_add_options --disable-dbus ac_add_options --disable-gecko-profiler ac_add_options --disable-profiling ac_add_options --disable-dmd # dark matter detector ac_add_options --without-wasm-sandboxed-libraries # need clang wasi # TODO: cairo-gtk3-x11-wayland or separate cairo-gtk3-wayland-only ac_add_options --enable-default-toolkit=cairo-gtk3-x11-only ac_add_options --enable-bootstrap=-clang # only use our clang ac_add_options --enable-optimize ac_add_options --with-system-nspr ac_add_options --with-gl-provider=EGL export MOZ_REQUIRE_SIGNING= export MOZ_TELEMETRY_REPORTING= export CC="TARGET_CC" export CXX="TARGET_CXX" ================================================ FILE: recipes/wip/net/onion-routing/tor-browser/recipe.toml ================================================ #TODO patches for quinn-udp crate, switch into git fork # mach: https://firefox-source-docs.mozilla.org/setup/linux_build.html [source] tar = "https://dist.torproject.org/torbrowser/15.0.6/src-firefox-tor-browser-140.7.1esr-15.0-1-build1.tar.xz" [build] template = "custom" dependencies = [ # "fontconfig", # "atk", # "cairo", "dbus", # "libffi", # "freetype2", # "gdk-pixbuf", # "glib", "gtk3", "pango", "libxkbcommon-x11", "libice", "mesa-x11", "x11proto-kb", "xcb-proto", "xextproto", "nspr", "libxrandr", "libsm", # TODO: Should separate clang library and runtime "clang21" # "sqlite3", # "nss-nspr", # "startup-notification", # "zlib", # "ffmpeg6", # "expat", # "libepoxy", # "pipewire", ] script = """ DYNAMIC_INIT cat ${COOKBOOK_RECIPE}/mozconfig > mozconfig sed -i "s|COOKBOOK_BUILD|${COOKBOOK_BUILD}|g" mozconfig sed -i "s|TARGET_CC|${CC}|g" mozconfig sed -i "s|TARGET_CXX|${CXX}|g" mozconfig sed -i "s|TARGET|${TARGET}|g" mozconfig export MOZCONFIG="${COOKBOOK_BUILD}/mozconfig" export PYTHONDONTWRITEBYTECODE=1 unset CC_WRAPPER if [[ -z "$CI" ]]; then export MACH_NO_TERMINAL_FOOTER=1; fi; # clang-sys specifics PREFIX_INCLUDE="$COOKBOOK_HOST_SYSROOT/$TARGET/include" export CLANGFLAGS="-I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$TARGET -I $PREFIX_INCLUDE/c++/13.2.0/backward" export CLANGFLAGS="$CLANGFLAGS -I $PREFIX_INCLUDE -I $COOKBOOK_SYSROOT/lib/clang/21/include -D__redox__" export BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_redox="-target x86_64-unknown-redox -nostdinc $CLANGFLAGS" export LLVM_CONFIG_PATH="$COOKBOOK_TOOLCHAIN/bin/llvm-config" # Don't poison the stage1 compiler (host -> host) unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP (cd ${COOKBOOK_SOURCE} && ./mach build) rsync -a ./dist ${COOKBOOK_STAGE} """ ================================================ FILE: recipes/wip/net/other/agnos/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/krtab/agnos" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/altuntun/recipe.toml ================================================ #TODO source code error [source] git = "https://github.com/cableguard/altuntun" [build] template = "custom" script = """ cookbook_cargo_packages altuntun-cli """ ================================================ FILE: recipes/wip/net/other/arp-scanner/recipe.toml ================================================ #TODO pnet_sys crate error [source] git = "https://github.com/kongbytes/arp-scan-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/bita/recipe.toml ================================================ #TODO compilation error (after a cargo update and a patch on the ring and tokio crates) [source] git = "https://github.com/oll3/bita" [build] template = "custom" script = """ cookbook_cargo --no-default-features --features rustls-tls """ ================================================ FILE: recipes/wip/net/other/bore/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/ekzhang/bore" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/celeste/recipe.toml ================================================ #TODO missing script for "just" and require Go, see https://github.com/hwittenborn/celeste/blob/develop/BUILDING.md [source] git = "https://github.com/hwittenborn/celeste" rev = "2ea8dc00ed001d045792e974b46264d920090606" [build] template = "custom" dependencies = [ "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/net/other/cobalt/recipe.toml ================================================ #TODO compilation error (after an update on proc-macro2) [source] git = "https://github.com/cobalt-org/cobalt.rs" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/crab-dlna/recipe.toml ================================================ #TODO get_if_addrs crate error [source] git = "https://github.com/gabrielmagno/crab-dlna" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/dnst/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/NLnetLabs/dnst" [build] template = "custom" script = """ cookbook_cargo --features ring """ ================================================ FILE: recipes/wip/net/other/dqy/recipe.toml ================================================ #TODO mlua-sys crate can't detect the lua54 dependency [source] git = "https://github.com/dandyvica/dqy" [build] template = "custom" dependencies = [ "lua54", ] script = """ cookbook_cargo_packages dqy """ ================================================ FILE: recipes/wip/net/other/drill/recipe.toml ================================================ #TODO OpenSSL error (after a cargo update and a patch to update tokio on Cargo.toml) [source] git = "https://github.com/fcsonline/drill" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/net/other/dufs/recipe.toml ================================================ #TODO if-addrs crate error [source] git = "https://github.com/sigoden/dufs" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/floresta/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/Davidson-Souza/Floresta" [build] template = "custom" script = """ cookbook_cargo_packages florestad """ ================================================ FILE: recipes/wip/net/other/guacamole-client/recipe.toml ================================================ #TODO this recipe require this data type to download the Java bytecode - https://gitlab.redox-os.org/redox-os/cookbook/-/issues/190 # download link - https://apache.org/dyn/closer.lua/guacamole/1.5.5/binary/guacamole-1.5.5.war?action=download [source] [build] template = "custom" ================================================ FILE: recipes/wip/net/other/gws/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/googleworkspace/cli" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/havn/recipe.toml ================================================ #TODO scanning loop, broken Redox support [source] git = "https://github.com/mrjackwills/havn" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/hinoki/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/jplatte/hinoki" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/hurl/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/Orange-OpenSource/hurl" [build] template = "custom" dependencies = [ "openssl1", "curl", "libxml2", ] script = """ cookbook_cargo_packages hurl """ ================================================ FILE: recipes/wip/net/other/impala/recipe.toml ================================================ #TODO port to redox [source] git = "https://github.com/pythops/impala" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/lldap/recipe.toml ================================================ #TODO program source code error (after cargo update and a patch on ring) [source] git = "https://github.com/lldap/lldap" [build] template = "custom" script = """ cookbook_cargo_packages lldap """ ================================================ FILE: recipes/wip/net/other/lychee/recipe.toml ================================================ #TODO async-io crate error (after cargo update) [source] git = "https://github.com/lycheeverse/lychee" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo_packages lychee """ ================================================ FILE: recipes/wip/net/other/lynx/recipe.toml ================================================ #TODO compilation error [source] tar = "https://invisible-island.net/archives/lynx/tarballs/lynx2.9.2.tar.gz" [build] template = "configure" dependencies = [ "ncursesw", ] ================================================ FILE: recipes/wip/net/other/meli/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://git.meli-email.org/meli/meli" [build] template = "custom" dependencies = [ "sqlite3", ] script = """ cookbook_cargo_packages meli """ ================================================ FILE: recipes/wip/net/other/miniupnpc/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/miniupnp/miniupnp/tree/master/miniupnpc#readme [source] tar = "http://miniupnp.free.fr/files/miniupnpc-2.2.4.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/net/other/moonfire-nvr-server/recipe.toml ================================================ #TODO cookbook_cargo function error [source] git = "https://github.com/scottlamb/moonfire-nvr" [build] template = "custom" dependencies = [ "sqlite3", ] script = """ cd "${COOKBOOK_SOURCE}/server" cookbook_cargo """ ================================================ FILE: recipes/wip/net/other/netop/recipe.toml ================================================ #TODO make libpcap work [source] git = "https://github.com/ZingerLittleBee/netop" [build] template = "cargo" dependencies = [ "libpcap", ] ================================================ FILE: recipes/wip/net/other/netscanner/recipe.toml ================================================ #TODO pnet_sys crate error [source] git = "https://github.com/Chleba/netscanner" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/nmap/recipe.toml ================================================ #TODO compilation error [source] tar = "https://nmap.org/dist/nmap-7.98.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/net/other/nspr/recipe.toml ================================================ # TODO: Using patched mozjs from servo, maybe move patcehs into to upstream patches? [source] # tar = "https://ftp.mozilla.org/pub/nspr/releases/v4.9.6/src/nspr-4.9.6.tar.gz" git = "https://github.com/willnode/mozjs" branch = "redox" shallow_clone = true [build] template = "custom" script = """ export HOST_CC="cc" export CC="$GNU_TARGET-gcc" export CXX="$GNU_TARGET-g++" export LDFLAGS="-shared" export CFLAGS="-fPIC" COOKBOOK_CONFIGURE_FLAGS+=( --enable-optimize --disable-debug --enable-64bit --with-pthreads ac_cv_path_LD="$LD" ) COOKBOOK_MAKE_JOBS=1 COOKBOOK_CONFIGURE="$COOKBOOK_SOURCE/mozjs-sys/mozjs/nsprpub/configure" cookbook_configure """ ================================================ FILE: recipes/wip/net/other/nss/recipe.toml ================================================ #TODO missing script for building [source] tar = "https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_9_2_RTM/src/nss-3.9.2.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/net/other/nss-pem/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/kdudka/nss-pem/blob/master/README [source] tar = "https://github.com/kdudka/nss-pem/releases/download/nss-pem-1.1.0/nss-pem-1.1.0.tar.xz" [build] template = "cmake" ================================================ FILE: recipes/wip/net/other/oha/recipe.toml ================================================ #TODO jmalloc-sys crate error [source] git = "https://github.com/hatoo/oha" [build] template = "custom" script = """ cookbook_cargo --no-default-features --features rustls """ ================================================ FILE: recipes/wip/net/other/pavao/recipe.toml ================================================ #TODO: fails to link libcrypto.so [source] git = "https://github.com/jackpot51/pavao.git" [build] template = "custom" dependencies = [ "openssl1" ] script = """ DYNAMIC_INIT build_flags="${build_flags} --features vendored" cookbook_cargo_examples tree """ ================================================ FILE: recipes/wip/net/other/phantun/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/dndx/phantun" [build] template = "custom" script = """ cookbook_cargo_packages phantun """ ================================================ FILE: recipes/wip/net/other/quincy/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/M0dEx/quincy" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/rallyup/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/darwindarak/rallyup" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/rathole/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rapiz1/rathole" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/realm/recipe.toml ================================================ #TODO realm_syscall crate error [source] git = "https://github.com/zhboner/realm" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/rlt/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/kaichaosun/rlt" [build] template = "custom" script = """ cookbook_cargo_packages localtunnel localtunnel-client localtunnel-server """ ================================================ FILE: recipes/wip/net/other/rqbit/recipe.toml ================================================ #TODO network-interface crate error [source] git = "https://github.com/ikatson/rqbit" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo_packages rqbit """ ================================================ FILE: recipes/wip/net/other/rustscan/recipe.toml ================================================ #TODO Make nmap work [source] git = "https://github.com/RustScan/RustScan" [build] template = "cargo" dependencies = [ "nmap", ] ================================================ FILE: recipes/wip/net/other/samba/answers.txt ================================================ Checking for HAVE_LITTLE_ENDIAN - runtime: OK Checking for large file support without additional flags: OK Checking for HAVE_SECURE_MKSTEMP: OK Checking for HAVE_MREMAP: OK Checking whether setreuid is available: OK ================================================ FILE: recipes/wip/net/other/samba/recipe.toml ================================================ #TODO: needs libmodule-build-parse-yapp-perl dependency [source] git = "https://gitlab.redox-os.org/redox-os/samba.git" upstream = "https://github.com/samba-team/samba.git" shallow_clone = true [build] template = "custom" dependencies = [ "gnutls3", "libarchive", "libnettle", "jansson", "zlib", ] script = """ rsync -av --delete --exclude .git "${COOKBOOK_SOURCE}/" ./ cp -v "${COOKBOOK_RECIPE}/answers.txt" answers.txt COOKBOOK_CONFIGURE_FLAGS=( --builtin-libraries=ALL --cross-compile --cross-answers=answers.txt --disable-python --disable-rpath --enable-fhs --host="${TARGET}" --localstatedir=/var --prefix=/usr --sysconfdir=/etc --with-static-modules=ALL,!vfs_snapper --without-acl-support --without-ad-dc --without-ads --without-gettext --without-ldap --without-libunwind --without-pam ) cookbook_configure """ ================================================ FILE: recipes/wip/net/other/sandhole/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/EpicEric/sandhole" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/slumber/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/LucasPickering/slumber" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/smb-rs/recipe.toml ================================================ #TODO: fix aws-lc-sys compilation [source] git = "https://github.com/AvivNaaman/smb-rs" shallow_clone = true [build] template = "cargo" cargopackages = ["smb-cli"] ================================================ FILE: recipes/wip/net/other/socat/recipe.toml ================================================ #TODO: network interfaces (ifreq) [source] tar = "http://www.dest-unreach.org/socat/download/socat-1.8.1.1.tar.bz2" [build] template = "configure" configureflags = [ "ac_cv_type_sig_atomic_t=yes", "sc_cv_type_struct_timeval_tv_usec=5", "--disable-ip6", "--disable-termios", ] ================================================ FILE: recipes/wip/net/other/speedtest-rs/recipe.toml ================================================ #TODO openssl-sys crate error (after cargo update) [source] git = "https://github.com/nelsonjchen/speedtest-rs" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/net/other/spiko/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/trinhminhtriet/spiko" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/spis/recipe.toml ================================================ #TODO maybe incomplete script, see the Makefile on the repository [source] git = "https://github.com/gbbirkisson/spis" [build] template = "custom" script = """ cookbook_cargo_packages spis-server """ ================================================ FILE: recipes/wip/net/other/srsran-4g/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://docs.srsran.com/projects/4g/en/latest/general/source/1_installation.html#installation-from-source [source] git = "https://github.com/srsran/srsRAN_4G" rev = "eea87b1d893ae58e0b08bc381730c502024ae71f" [build] template = "cmake" dependencies = [ "fftw", "mbedtls", ] ================================================ FILE: recipes/wip/net/other/srsran-project/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/srsran/srsRAN_Project#build-instructions #TODO missing dependencies [source] git = "https://github.com/srsran/srsRAN_Project" rev = "374200deefd8e1b96fab7328525fd593a808a641" [build] template = "cmake" dependencies = [ "fftw", "mbedtls", ] ================================================ FILE: recipes/wip/net/other/tobaru/recipe.toml ================================================ #TODO compiled but not tested (after a patch on ring) [source] git = "https://github.com/cfal/tobaru" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/trippy/recipe.toml ================================================ #TODO source code error [source] git = "https://github.com/fujiapple852/trippy" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/turn-rs/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/mycrl/turn-rs" [build] template = "custom" script = """ cookbook_cargo_packages turn-cli turn-server """ ================================================ FILE: recipes/wip/net/other/unbound/recipe.toml ================================================ #TODO Compilation error [source] tar = "https://nlnetlabs.nl/downloads/unbound/unbound-1.17.1.tar.gz" [build] template = "configure" dependencies = [ "expat", "openssl1", ] ================================================ FILE: recipes/wip/net/other/updns/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/wyhaya/updns" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/varia/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/giantpinkrobots/varia#building # probably missing dependencies [source] git = "https://github.com/giantpinkrobots/varia" rev = "515bef5536b4947b3ae8dd3c23b7643ea590d73c" [build] template = "meson" ================================================ FILE: recipes/wip/net/other/vimini/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://git.sr.ht/~lufte/vimini" [build] template = "cargo" dependencies = [ "sqlite3", ] ================================================ FILE: recipes/wip/net/other/vopono/recipe.toml ================================================ #TODO users crate error [source] git = "https://github.com/jamesmcm/vopono" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/vpncloud/recipe.toml ================================================ #TODO libc and nix crate error #TODO require Ruby and asciidoctor at runtime [source] git = "https://github.com/dswd/vpncloud" [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/vsd/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/clitic/vsd" [build] template = "custom" dependencies = [ "ffmpeg6", ] script = """ cookbook_cargo_packages vsd """ ================================================ FILE: recipes/wip/net/other/wireguard-rs/recipe.toml ================================================ #TODO update mio to 0.8 (after cargo update) [source] git = "https://git.zx2c4.com/wireguard-rs" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/other/wstunnel/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/erebe/wstunnel" [build] template = "custom" script = """ cookbook_cargo_packages wstunnel-cli """ ================================================ FILE: recipes/wip/net/other/yazi/recipe.toml ================================================ #TODO trash and mlua-sys crate errors [source] git = "https://github.com/sxyazi/yazi" [build] template = "custom" script = """ cookbook_cargo_packages yazi-fm """ ================================================ FILE: recipes/wip/net/p2p/dumbpipe/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/n0-computer/dumbpipe" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/p2p/easytier/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/EasyTier/EasyTier" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages easytier """ ================================================ FILE: recipes/wip/net/p2p/oku/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/OkuBrowser/oku" shallow_clone = true script = "./prebuild.sh" [build] template = "cargo" dependencies = [ "gtk4", "glib", "pango", "webkitgtk4", "libfuse3", ] ================================================ FILE: recipes/wip/net/proxy/hitch/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://www.hitch-tls.org/source/hitch-1.8.0.tar.gz" [build] template = "configure" dependencies = [ "libev", "openssl3", ] ================================================ FILE: recipes/wip/net/proxy/stunnel/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://www.stunnel.org/downloads/stunnel-5.76.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/net/remote/bayesian-ssh/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/abdoufermat5/bayesian-ssh" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/remote/do-ssh/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/doEggi/do-ssh" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/remote/ethersync/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ethersync/ethersync" shallow_clone = true [build] template = "custom" script = """ COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/daemon" DYNAMIC_INIT cookbook_cargo """ ================================================ FILE: recipes/wip/net/remote/iroh-ssh/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rustonbsd/iroh-ssh" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/remote/jupii/recipe.toml ================================================ #TODO not compiled or tested # missing dependencies? - https://github.com/mkiol/Jupii#libraries [source] git = "https://github.com/mkiol/Jupii" rev = "ed80ca0ea29081a2bff038faf4884e3acabb14b7" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DWITH_DESKTOP=ON" ] ================================================ FILE: recipes/wip/net/remote/remmina/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/Remmina/Remmina/-/wikis/Compilation/Compilation-guide #TODO dependencies need a cleanup (outdated and up-to-date information is mixed in the build instructions) [source] git = "https://gitlab.com/Remmina/Remmina" rev = "2a455eadd6462457d08c2d066c5c245e0dee3bf9" shallow_clone = true [build] template = "cmake" dependencies = [ "openssl3", "libxml2", "gstreamer", "ffmpeg6", "gtk3", "libgcrypt", "libssh", "libvte", "libjpeg", "gnutls3", "libsodium", "pcre", ] ================================================ FILE: recipes/wip/net/remote/rustconn/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/totoshko88/RustConn" shallow_clone = true [build] template = "custom" dependencies = [ "gtk4", "libadwaita", "vte", ] script = """ DYNAMIC_INIT cookbook_cargo_packages rustconn """ ================================================ FILE: recipes/wip/net/remote/sanzu/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/cea-sec/sanzu" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages sanzu """ ================================================ FILE: recipes/wip/net/remote/shared/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mateolafalce/shared" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/remote/ssh-portfolio/recipe.toml ================================================ #TODO not compiled or tested # require nerdfonts [source] git = "https://github.com/CompeyDev/ssh-portfolio" shallow_clone = true [build] template = "cargo" [package] dependencies = ["nerd-fonts"] ================================================ FILE: recipes/wip/net/remote/tigervnc/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/TigerVNC/tigervnc/blob/1.16-branch/BUILDING.txt [source] git = "https://github.com/TigerVNC/tigervnc" branch = "1.16-branch" shallow_clone = true [build] template = "cmake" dependencies = [ "zlib", "pixman", "fltk14", "libjpeg", #"gnutls3", #"libnettle", ] ================================================ FILE: recipes/wip/net/remote/zeco/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/julianbuettner/zeco" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/scan/netpeek/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from meson log [source] git = "https://github.com/ZingyTomato/NetPeek" rev = "v0.2.4" shallow_clone = true [build] template = "meson" ================================================ FILE: recipes/wip/net/security/yadb/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/izya4ka/yadb" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/server/bitcoin-core/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md [source] tar = "https://bitcoincore.org/bin/bitcoin-core-30.2/bitcoin-30.2.tar.gz" [build] template = "cmake" cmakeflags = [ "-DENABLE_WALLET=OFF", "-DENABLE_IPC=OFF", "-DBUILD_TESTS=OFF", "-DINSTALL_MAN=OFF", ] dependencies = [ "boost", "libevent", ] ================================================ FILE: recipes/wip/net/server/devserver/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/kettle11/devserver" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/server/doh-server/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/DNSCrypt/doh-server" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/server/dora/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bluecatengineering/dora" shallow_clone = true [build] template = "cargo" cargopackages = [ "dora-bin", "dora-cfg", ] ================================================ FILE: recipes/wip/net/server/electrs/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/romanz/electrs/blob/master/doc/install.md [source] git = "https://github.com/romanz/electrs" shallow_clone = true [build] template = "cargo" dependencies = ["rocksdb"] [package] dependencies = [ "bitcoin-core", "electrum", ] ================================================ FILE: recipes/wip/net/server/encrypted-dns-server/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/DNSCrypt/encrypted-dns-server" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/server/feox-server/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mehrantsi/feox-server" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/server/guacamole-server/recipe.toml ================================================ #TODO not compiled or tested # dependencies: https://guacamole.apache.org/doc/gug/installing-guacamole.html#required-dependencies [source] tar = "https://apache.org/dyn/closer.lua/guacamole/1.5.5/source/guacamole-server-1.5.5.tar.gz?action=download" [build] template = "configure" dependencies = [ "cairo", "libjpeg", "libpng", "libuuid", "libssh2", "openssl3", "pango", "libpulse", "libvorbis", ] ================================================ FILE: recipes/wip/net/server/nea/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/tweedegolf/nea" shallow_clone = true [build] template = "cargo" cargopackages = ["nea"] dev-dependencies = ["host:mold"] ================================================ FILE: recipes/wip/net/server/nostr-rs-relay/recipe.toml ================================================ #TODO tikv-jemalloc-sys crate error [source] git = "https://github.com/scsibug/nostr-rs-relay" shallow_clone = true [build] template = "cargo" dependencies = [ "openssl3", ] ================================================ FILE: recipes/wip/net/server/quick-serve/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/joaofl/quick-serve" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/server/rustdesk-server/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/rustdesk/rustdesk-server" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/server/rustypaste/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/orhun/rustypaste-cli" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/server/shoes/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/cfal/shoes" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/server/spadesx/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/SpadesX/SpadesX#installation [source] git = "https://github.com/SpadesX/SpadesX" shallow_clone = true [build] template = "cmake" dependencies = [ "readline", "zlib", "json-c", ] ================================================ FILE: recipes/wip/net/server/toe-beans/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://codeberg.org/black-cat/toe-beans" shallow_clone = true [build] template = "cargo" cargopackages = ["toe-beans"] ================================================ FILE: recipes/wip/net/server/vproxy/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/0x676e67/vproxy" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/sharing/gday/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/manforowicz/gday" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages gday gday_server """ ================================================ FILE: recipes/wip/net/sharing/hakanai/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/czerwonk/hakanai" shallow_clone = true [build] template = "custom" dependencies = [ "openssl3" ] script = """ DYNAMIC_INIT cookbook_cargo_packages hakanai hakanai-server """ ================================================ FILE: recipes/wip/net/sharing/lan-mouse/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/feschber/lan-mouse" shallow_clone = true [build] template = "cargo" dependencies = [ "libadwaita", "gtk4", ] ================================================ FILE: recipes/wip/net/sharing/magic-wormhole-rs/recipe.toml ================================================ #TODO async-tar and rustix crates error [source] git = "https://github.com/magic-wormhole/magic-wormhole.rs" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages magic-wormhole """ ================================================ FILE: recipes/wip/net/sharing/microbin/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/szabodanika/microbin" shallow_clone = true [build] DYNAMIC_INIT template = "cargo" ================================================ FILE: recipes/wip/net/sharing/qft/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/CramBL/quick-file-transfer" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/sharing/sendme/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/n0-computer/sendme" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/sharing/warp/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/World/warp#meson [source] git = "https://gitlab.gnome.org/World/warp" shallow_clone = true [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/net/social/nostui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/akiomik/nostui" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/social/perch/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ricardodantas/perch" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/social/reddix/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ck-zhang/reddix" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/social/tuba/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/GeopJr/Tuba#from-source [source] git = "https://github.com/GeopJr/Tuba" rev = "v0.10.3" shallow_clone = true [build] template = "meson" dependencies = [ "json-glib", "libxml2", "libgee", "libsoup", "libadwaita", "libsecret", "gtksourceview", ] dev-dependencies = ["vala"] ================================================ FILE: recipes/wip/net/ssh/color-ssh/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/karsyboy/color-ssh" shallow_clone = true [build] template = "cargo" [package] dependencies = [ "openssh", ] ================================================ FILE: recipes/wip/net/ssh/dropbear/recipe.toml ================================================ #TODO test dynamic linking [source] git = "https://gitlab.redox-os.org/tfinnegan937/dropbear.git" rev = "4c6828d39f988712cf4d2a64c7acf15d76f24aa9" shallow_clone = true [build] template = "configure" configureflags = [ "--disable-syslog", "--disable-utmpx", "--disable-utmp", "--disable-lastlog", "--disable-loginfunc", "--disable-wtmp", "--disable-wtmpx", ] dependencies = [ "openssl3", "zlib" ] ================================================ FILE: recipes/wip/net/ssh/fastssh/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Julien-R44/fast-ssh" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/ssh/filessh/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/JayanAXHF/filessh" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/ssh/mosh/recipe.toml ================================================ #TODO protobuf in redox [source] git = "https://github.com/mobile-shell/mosh" rev = "mosh-1.4.0" shallow_clone = true script = """ ./autogen.sh """ [build] template = "configure" dependencies = [ "openssl3", "ncursesw", "zlib", "protobuf" ] dev-dependencies = [ "host:protobuf" ] ================================================ FILE: recipes/wip/net/ssh/russh/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/russh" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_CARGO_FLAGS=() # remove --locked cookbook_cargo_examples client_exec_simple client_exec_interactive sftp_client sftp_server """ ================================================ FILE: recipes/wip/net/ssh/ssh-pilot/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mfat/sshpilot" rev = "v4.3.8" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin/ssh-pilot-dir cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/usr/bin/ssh-pilot-dir" echo "python3 /usr/bin/ssh-pilot-dir/run.py" > "${COOKBOOK_STAGE}"/usr/bin/ssh-pilot chmod a+x "${COOKBOOK_STAGE}"/usr/bin/ssh-pilot """ [package] dependencies = [ "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/net/ssh/sshfs/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/libfuse/sshfs#installation [source] tar = "https://github.com/libfuse/sshfs/releases/download/sshfs-3.7.3/sshfs-3.7.3.tar.xz" [build] template = "meson" dependencies = [ "libfuse3", "glib", ] ================================================ FILE: recipes/wip/net/ssh/sshs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/quantumsheep/sshs" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/net/ssh/sshx/recipe.toml ================================================ #TODO program source code error (after cargo update) #TODO require NodeJS and NPM [source] git = "https://github.com/ekzhang/sshx" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages sshx """ ================================================ FILE: recipes/wip/net/ssh/termirs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/caelansar/termirs" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/news/feedr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bahdotsh/feedr" [build] template = "cargo" ================================================ FILE: recipes/wip/news/moccasin/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rektdeckard/moccasin" [build] template = "cargo" ================================================ FILE: recipes/wip/news/news-rs/recipe.toml ================================================ #TODO update mio to 0.8 (after cargo update) [source] git = "https://github.com/Atticus64/news" [build] template = "cargo" ================================================ FILE: recipes/wip/news/newsflash/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.com/news-flash/news_flash_gtk" shallow_clone = true [build] template = "meson" dependencies = [ "gtk4", "libadwaita", "webkitgtk4", "sqlite3", "gettext", "openssl3", "clapper", ] dev-dependencies = ["blueprint"] ================================================ FILE: recipes/wip/news/tuifeed/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/veeso/tuifeed" [build] template = "cargo" ================================================ FILE: recipes/wip/office/cactui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/vkobinski/CacTui" [build] template = "cargo" ================================================ FILE: recipes/wip/office/doxx/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bgreenwell/doxx" [build] template = "cargo" ================================================ FILE: recipes/wip/office/letters/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies [source] tar = "https://codeberg.org/eyekay/letters/archive/0.2.0.tar.gz" [build] template = "meson" ================================================ FILE: recipes/wip/office/libreoffice/recipe.toml ================================================ #TODO determine minimum dependencies # dependencies reference: https://wiki.documentfoundation.org/Development/BuildingOnLinux#Build_dependencies [source] tar = "https://download.documentfoundation.org/libreoffice/src/25.8.2/libreoffice-25.8.2.2.tar.xz" [build] template = "configure" #dependencies = [ # "kerberos5", # "qt5-base", # "gtk3", # "nss", # "fontconfig", # "gstreamer", # "libcups", #] ================================================ FILE: recipes/wip/office/libreoffice-dictionaries/recipe.toml ================================================ #TODO probably wrong template [source] tar = "https://download.documentfoundation.org/libreoffice/src/25.8.2/libreoffice-dictionaries-25.8.2.2.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/office/libreoffice-translations/recipe.toml ================================================ #TODO probably wrong template [source] tar = "https://download.documentfoundation.org/libreoffice/src/25.8.2/libreoffice-translations-25.8.2.2.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/office/sheetsui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/zaphar/sheetsui" [build] template = "cargo" ================================================ FILE: recipes/wip/office/xleak/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bgreenwell/xleak" [build] template = "cargo" ================================================ FILE: recipes/wip/office/zathura/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://pwmt.org/projects/zathura/installation/ [source] tar = "https://pwmt.org/projects/zathura/download/zathura-0.5.14.tar.xz" [build] template = "meson" dependencies = [ "girara", "gtk3", ] ================================================ FILE: recipes/wip/players/clapper/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Rafostar/clapper" rev = "0.10.0" shallow_clone = true [build] template = "meson" mesonflags = [ "-Dclapper=enabled", "-Dclapper-gtk=enabled", "-Dclapper-app=disabled", "-Dintrospection=disabled", "-Denhancers-loader=disabled", ] ================================================ FILE: recipes/wip/players/cmus/recipe.toml ================================================ #TODO can't detect the configure script [source] git = "https://github.com/cmus/cmus" rev = "ade6e2a7253d7a256e87fdac3da17c9158e6700e" [build] template = "custom" dependencies = [ "ncurses", ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_configure """ ================================================ FILE: recipes/wip/players/cosmic-player/manifest ================================================ name=COSMIC Media Player binary=/usr/bin/cosmic-player icon=/ui/icons/apps/multimedia-photo-viewer.png author=Jeremy Soller description=COSMIC Media Player accept=*.avi accept=*.mkv accept=*.mov accept=*.mp4 accept=*.ogv ================================================ FILE: recipes/wip/players/cosmic-player/recipe.toml ================================================ [source] git = "https://github.com/pop-os/cosmic-player.git" branch = "master" [build] template = "custom" dependencies = [ "ffmpeg6", "gettext", "glib", "gstreamer", "libffi", "libiconv", "pcre2", "zlib", ] script = """ DYNAMIC_INIT "${COOKBOOK_CARGO}" rustc \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --release \ --bin cosmic-player \ --no-default-features \ -- \ -C link-args="-lgmodule-2.0 -lffi -liconv -lpcre2-8 -lz" mkdir -pv "${COOKBOOK_STAGE}/usr/bin/" cp -v "target/${TARGET}/release/cosmic-player" "${COOKBOOK_STAGE}/usr/bin/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps/" cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/cosmic-player" #TODO: install with just? APPID="com.system76.CosmicPlayer" mkdir -pv "${COOKBOOK_STAGE}/usr/share/applications/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/metainfo/" cp -v "${COOKBOOK_SOURCE}/res/${APPID}.metainfo.xml" "${COOKBOOK_STAGE}/usr/share/metainfo/" mkdir -pv "${COOKBOOK_STAGE}/usr/share/icons/" cp -rv "${COOKBOOK_SOURCE}/res/icons/hicolor/" "${COOKBOOK_STAGE}/usr/share/icons/" """ ================================================ FILE: recipes/wip/players/festival/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/hinto-janai/festival" [build] template = "custom" #dependencies = [ # "dbus", #] script = """ #DYNAMIC_INIT # if dbus is needed cookbook_cargo_packages festival-gui """ ================================================ FILE: recipes/wip/players/glide/recipe.toml ================================================ #TODO Make gtk4 work [source] git = "https://github.com/philn/glide" [build] template = "cargo" dependencies = [ "gtk4", "gstreamer", ] ================================================ FILE: recipes/wip/players/kronos/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/TrevorSatori/kronos" [build] template = "cargo" ================================================ FILE: recipes/wip/players/mpv/recipe.toml ================================================ #TODO not compiled or tested #TODO missing dependencies # build instructions: https://github.com/mpv-player/mpv#compilation [source] git = "https://github.com/mpv-player/mpv" branch = "release/0.40" shallow_clone = true [build] template = "meson" dependencies = [ "ffmpeg6", "libass", "libjpeg", "libiconv", "zlib", "mesa", "sdl2", ] ================================================ FILE: recipes/wip/players/podcasts/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/World/podcasts" shallow_clone = true [build] template = "meson" dependencies = [ "gtk4", "gstreamer", "libadwaita", ] ================================================ FILE: recipes/wip/players/pragha/recipe.toml ================================================ #TODO Make GTK3 work [source] git = "https://github.com/pragha-music-player/pragha" [build] template = "configure" dependencies = [ "gtk3", "glib", "gstreamer", "taglib", "sqlite3", "libpeas", "totem-plparser", ] ================================================ FILE: recipes/wip/players/recordbox/recipe.toml ================================================ #TODO missing dependencies [source] git = "https://codeberg.org/edestcroix/Recordbox" [build] template = "custom" dependencies = [ "sqlite3", "gtk4", "glib", "libadwaita", "liblcms", "gstreamer", ] script = "DYNAMIC_INIT cookbook_cargo" ================================================ FILE: recipes/wip/players/rustcloud/recipe.toml ================================================ #TODO openssl error (after cargo update) [source] git = "https://github.com/cetra3/rustcloud" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/players/rustic/recipe.toml ================================================ #TODO can't update the crates, patch the "fragile" crate version [source] git = "https://github.com/rustic-music-player/rustic" [build] template = "cargo" ================================================ FILE: recipes/wip/players/spoify/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/slyeet03/spoify" [build] template = "cargo" ================================================ FILE: recipes/wip/players/spotify-player/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/aome510/spotify-player" [build] template = "custom" dependencies = [ "openssl1", ] script = """ package=spotify_player "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --package "${package}" \ --release --no-default-features --rodio-backend mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${package}" \ "${COOKBOOK_STAGE}/usr/bin/${package}" """ ================================================ FILE: recipes/wip/players/symphonia-play/recipe.toml ================================================ #TODO compiled and tested #TODO cpal can't find an audio device [source] git = "https://github.com/pdeljanov/Symphonia" [build] template = "custom" script = """ cookbook_cargo_packages symphonia-play mv "${COOKBOOK_STAGE}/usr/bin/symphonia-play_symphonia-play" "${COOKBOOK_STAGE}/usr/bin/symphonia-play" """ ================================================ FILE: recipes/wip/players/tap/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/timdubbins/tap" [build] template = "cargo" ================================================ FILE: recipes/wip/players/termusic/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/tramhao/termusic#from-source [source] git = "https://github.com/tramhao/termusic" rev = "109405465bd5873567b5387c20e9b149e477b176" [build] template = "custom" dependencies = [ "gstreamer", "dbus", "mpv", ] ================================================ FILE: recipes/wip/players/tplay/recipe.toml ================================================ #TODO Make opencv4 work [source] git = "https://github.com/maxcurzi/tplay" [build] template = "cargo" dependencies = [ "ffmpeg6", "openssl1", "opencv4", ] ================================================ FILE: recipes/wip/players/ttv/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/nik-rev/ttv" [build] template = "cargo" dependencies = [ "ffmpeg6", ] ================================================ FILE: recipes/wip/players/vlc/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies # customization: https://wiki.videolan.org/Configure/ [source] tar = "https://get.videolan.org/vlc/3.0.21/vlc-3.0.21.tar.xz" [build] template = "configure" dependencies = [ # "libvorbis", # "libogg", # "speex", # "libflac", # "libtheora", # "x264", # "liba52", # "libmpeg2", # "lame", "ffmpeg6", # "libmad", # "libdca", # "twolame", # "musepack", # "libass", # "libzvbi", # "opus", # "libebml", # "libmatroska", # "libdvbpsi", # "libdvdcss", # "libdvdread", # "libdvdnav", # "libbluray", # "libgpg-error", # "libgcrypt", # "gnutls", "libxml2", # "libvncserver", # "libpng", # "libjpeg", # "libiconv", # "gettext", "zlib", "freetype2", # "fribidi", "fontconfig", # "taglib", "wxwidgets-gtk3", ] ================================================ FILE: recipes/wip/players/ytermusic/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ccgauche/ytermusic" [build] template = "cargo" ================================================ FILE: recipes/wip/recorders/asciinema/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/asciinema/asciinema" [build] template = "cargo" ================================================ FILE: recipes/wip/recorders/autocast/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/k9withabone/autocast" [build] template = "cargo" ================================================ FILE: recipes/wip/recorders/gpu-screen-recorder/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://git.dec05eba.com/gpu-screen-recorder" rev = "422f214283ba50649acca4d9b5a9778d313fe05b" [build] template = "meson" dependencies = [ "mesa", "libvulkan", "ffmpeg6", "libx11", "libxcomposite", "libxrandr", "libxfixes", "libxdamage", "pulseaudio", "libva", "libcap", "libwayland", ] ================================================ FILE: recipes/wip/recorders/gpu-screen-recorder-gtk/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://git.dec05eba.com/gpu-screen-recorder-gtk" rev = "7fb7608b720068d3c114330e8d274b04ef310cf2" [build] template = "meson" dependencies = [ "gtk3", "libx11", ] [package] dependencies = [ "gpu-screen-recorder", ] ================================================ FILE: recipes/wip/recorders/obs-studio/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # build instructions: https://github.com/obsproject/obs-studio/wiki/Building-OBS-Studio [source] tar = "https://github.com/obsproject/obs-studio/releases/download/32.0.4/OBS-Studio-32.0.4-Sources.tar.gz" [build] template = "cmake" cmakeflags = [ "-DENABLE_UI=OFF", "-DENABLE_SCRIPTING=OFF", "-DENABLE_HEVC=OFF", ] # dependencies = [ # "boost", # "librsvg", # "dbus", # "fontconfig", # "freetype2", # "jansson", # "pipewire", # "mesa", # "speexdsp", # "ffmpeg6", # "x264", # "curl", # "mbedtls", # "libva", # "qt5-base", # "qt5-svg", # "eudev", # "pciutils", # "libqrcodegenc", # "librist", # "libsrt", # "libwebsocket++", # ] ================================================ FILE: recipes/wip/scan/sane-backends/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/sane-project/backends/-/blob/master/README?ref_type=heads [source] tar = "https://gitlab.com/-/project/429008/uploads/843c156420e211859e974f78f64c3ea3/sane-backends-1.4.0.tar.gz" [build] template = "configure" dependencies = [ "libusb", "libjpeg", ] ================================================ FILE: recipes/wip/scan/zbar/recipe.toml ================================================ #TODO not compiled or tested #TODO determine the dependencies [source] tar = "http://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10.tar.bz2/download" [build] template = "configure" ================================================ FILE: recipes/wip/science/alevin-fry/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/COMBINE-lab/alevin-fry" [build] template = "cargo" ================================================ FILE: recipes/wip/science/astroterm/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/da-luce/astroterm" [build] template = "cargo" ================================================ FILE: recipes/wip/science/celestia/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/CelestiaProject/Celestia/blob/master/INSTALL.md#celestia-install-instructions-for-unix # sdl2 frontend is limited, qt6 or qt5 is preferred [source] tar = "https://github.com/CelestiaProject/Celestia/releases/download/1.6.4/celestia-1.6.4.tar.xz" [build] template = "cmake" cmakeflags = [ "-DENABLE_INTERFACE=ON", "-DENABLE_SDL=ON", ] dependencies = [ "mesa", "mesa-glu", "sdl2", "libepoxy", "libeigen", "libfmt", "freetype2", "libpng", "libjpeg", "luajit", #"qt6-base", ] ================================================ FILE: recipes/wip/science/celestia-data/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/CelestiaProject/Celestia/blob/master/INSTALL.md#installing-the-content [source] git = "https://github.com/CelestiaProject/CelestiaContent" [build] template = "cmake" ================================================ FILE: recipes/wip/science/chem-creator/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/pumken/chemcreator" [build] template = "cargo" ================================================ FILE: recipes/wip/science/cosmic-weather/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jwestall/cosmic-weather" [build] template = "cargo" ================================================ FILE: recipes/wip/science/gaia-sky/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://gaia.ari.uni-heidelberg.de/gaiasky/releases/latest/gaiasky-3.6.4-2.3bfeec0f9.tar.gz" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/gaia-sky mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/gaia-sky echo "#!/usr/bin/env bash \n /usr/share/gaia-sky" > "${COOKBOOK_STAGE}"/usr/bin/gaia-sky chmod a+x "${COOKBOOK_STAGE}"/usr/bin/gaia-sky """ ================================================ FILE: recipes/wip/science/gromacs/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://manual.gromacs.org/current/install-guide/index.html [source] tar = "https://ftp.gromacs.org/gromacs/gromacs-2025.3.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/science/mrbayes/recipe.toml ================================================ #TODO don't recognize the redox target [source] git = "https://github.com/NBISweden/MrBayes" [build] template = "configure" ================================================ FILE: recipes/wip/science/nucleus/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from meson log [source] tar = "https://codeberg.org/lo-vely/nucleus/archive/v2.tar.gz" [build] template = "meson" ================================================ FILE: recipes/wip/science/oarfish/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/COMBINE-lab/oarfish" [build] template = "cargo" ================================================ FILE: recipes/wip/science/openfoam/recipe.toml ================================================ #TODO missing script for building, see https://openfoam.org/download/11-source/ [source] tar = "http://dl.openfoam.org/source/11" [build] template = "custom" dependencies = [ "paraview", "scotch", ] ================================================ FILE: recipes/wip/science/openspace/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://docs.openspaceproject.com/en/latest/dev/compiling/index.html# [source] git = "https://github.com/OpenSpace/OpenSpace" rev = "b3681167a3b95d49ac7aa7d06b07cbd88c687e9a" [build] template = "cmake" dependencies = [ "qt6-base", "libgdal", ] ================================================ FILE: recipes/wip/science/piscem/recipe.toml ================================================ #TODO CMake error [source] git = "https://github.com/COMBINE-lab/piscem" [build] template = "cargo" ================================================ FILE: recipes/wip/science/polypolish/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/rrwick/Polypolish" [build] template = "cargo" ================================================ FILE: recipes/wip/science/qmcpack/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://qmcpack.readthedocs.io/en/develop/installation.html#building-with-cmake # probably missing dependencies [source] git = "https://github.com/QMCPACK/qmcpack" rev = "9d0d968139fc33f71dbf9159f526dd7b47f10a3b" [build] template = "cmake" dependencies = [ "openmpi", "openblas", "hdf5", "libxml2", "boost", "fftw", ] ================================================ FILE: recipes/wip/science/scidataflow/recipe.toml ================================================ #TODO async-io and rustix crates error [source] git = "https://github.com/vsbuffalo/scidataflow" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/science/simpleaf/recipe.toml ================================================ #TODO faccess crate error [source] git = "https://github.com/COMBINE-lab/simpleaf" [build] template = "cargo" ================================================ FILE: recipes/wip/science/siril/recipe.toml ================================================ #TODO missing cross-compilation script #TODO missing dependencies - https://gitlab.com/free-astro/siril#requirements # build instructions - https://gitlab.com/free-astro/siril#building-siril-for-gnulinux [source] tar = "https://free-astro.org/download/siril-1.2.4.tar.bz2" [build] template = "custom" dependencies = [ "glib", "gtk3", "liblcms", "fftw", "opencv4", ] ================================================ FILE: recipes/wip/science/sonde/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rnleach/sonde" [build] template = "cargo" dependencies = [ "gtk4", ] ================================================ FILE: recipes/wip/science/specfem2d/recipe.toml ================================================ #TODO missing script for GNU Autotools", see https://specfem2d.readthedocs.io/en/latest/02_getting_started/ [source] git = "https://github.com/SPECFEM/specfem2d" rev = "0bbc7858dcd0ac9c1c64a35a41c83fa7f6847205" [build] template = "custom" ================================================ FILE: recipes/wip/science/specfem3d/recipe.toml ================================================ #TODO missing script for GNU Autotools, see https://specfem3d.readthedocs.io/en/latest/02_getting_started/ [source] git = "https://github.com/SPECFEM/specfem3d" rev = "c97d521a9a19ed41523837f161c70deacdb180cc" [build] template = "custom" ================================================ FILE: recipes/wip/science/specfem3d-globe/recipe.toml ================================================ #TODO missing script for GNU Autotools, see https://specfem3d-globe.readthedocs.io/en/latest/02_getting_started/ [source] git = "https://github.com/SPECFEM/specfem3d_globe" rev = "59f5e68c468c53a07011a795e6fa1650d6be0fd9" [build] template = "custom" ================================================ FILE: recipes/wip/science/stellarium/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Stellarium/stellarium/blob/master/BUILDING.md#building #TODO missing dependencies: https://github.com/Stellarium/stellarium/blob/master/BUILDING.md#qt6 [source] tar = "https://github.com/Stellarium/stellarium/releases/download/v25.3/stellarium-25.3.tar.xz" [build] template = "cmake" dependencies = [ "mesa", "zlib", "gstreamer", "qt6-base", "qt6-multimedia", "qt6-webengine", "qt6-positioning", "qt6-charts", "qt6-imageformats", "qt6-translations", "qt6-tools", "libxkbcommon", "gexiv2", "libnlopt", ] ================================================ FILE: recipes/wip/science/vidoxide/recipe.toml ================================================ #TODO require camera drivers, see https://github.com/GreatAttractor/vidoxide#3-building [source] git = "https://github.com/GreatAttractor/vidoxide" [build] template = "cargo" dependencies = [ "gtk3", ] ================================================ FILE: recipes/wip/science/weather/cosmic-ext-forecast/recipe.toml ================================================ #TODO not compiled or tested #TODO verify if the resource commands are correct [source] git = "https://github.com/cosmic-utils/forecast" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/applications mkdir -pv "${COOKBOOK_STAGE}"/usr/share/metainfo mkdir -pv "${COOKBOOK_STAGE}"/usr/share/icons cp -rv "${COOKBOOK_SOURCE}"/res/com.jwestall.Forecast.desktop "${COOKBOOK_STAGE}"/usr/share/applications cp -rv "${COOKBOOK_SOURCE}"/res/com.jwestall.Forecast.metainfo.xml "${COOKBOOK_STAGE}"/usr/share/metainfo cp -rv "${COOKBOOK_SOURCE}"/res/icons/hicolor "${COOKBOOK_STAGE}"/usr/share/icons cookbook_cargo """ ================================================ FILE: recipes/wip/science/wthrr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ttytm/wthrr-the-weathercrab" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/search/clapgrep/recipe.toml ================================================ #TODO write a script to copy the data files, see: https://github.com/luleyleo/clapgrep/blob/main/makefile [source] git = "https://github.com/luleyleo/clapgrep" [build] template = "custom" dependencies = [ "gtk4", ] script = """ cookbook_cargo_packages clapgrep-gnome """ ================================================ FILE: recipes/wip/search/fzf/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/junegunn/fzf/blob/master/BUILD.md [source] git = "https://github.com/junegunn/fzf" rev = "v0.67.0" shallow_clone = true [build] template = "custom" dev-dependencies = ["host:go"] ================================================ FILE: recipes/wip/search/localsearch/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from meson log [source] tar = "https://download.gnome.org/sources/localsearch/3.10/localsearch-3.10.1.tar.xz" [build] template = "meson" mesonflags = [ "-Dfunctional_tests=false", "-Dsandbox_tests=false", "-Dseccomp=false", "-Dbattery_detection=none", "-Dsystemd_user_services=false", "-Dman=false", ] ================================================ FILE: recipes/wip/search/lstr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bgreenwell/lstr" [build] template = "cargo" ================================================ FILE: recipes/wip/search/scout/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jhbabon/scout" [build] template = "cargo" ================================================ FILE: recipes/wip/search/srgn/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/alexpovel/srgn" [build] template = "cargo" ================================================ FILE: recipes/wip/search/television/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/alexpasmantier/television" [build] template = "cargo" ================================================ FILE: recipes/wip/search/ugrep/recipe.toml ================================================ #TODO not compiled or tested #TODO maybe wrong template [source] git = "https://github.com/Genivia/ugrep" rev = "7ddb6d9690e70bc426da5fed3e1031973823fc69" [build] template = "configure" ================================================ FILE: recipes/wip/security/airgorah/recipe.toml ================================================ #TODO make gtk4 work [source] git = "https://github.com/martin-olivier/airgorah" [build] template = "cargo" dependencies = [ "gtk4", ] ================================================ FILE: recipes/wip/security/angryoxide/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Ragnt/AngryOxide#building-from-source [source] git = "https://github.com/Ragnt/AngryOxide" [build] template = "cargo" ================================================ FILE: recipes/wip/security/apbf/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://gitlab.com/timvisee/apbf" [build] template = "cargo" ================================================ FILE: recipes/wip/security/authenticator/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/World/Authenticator" shallow_clone = true [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", "gstreamer", "gobject-introspection", ] ================================================ FILE: recipes/wip/security/authoscope/recipe.toml ================================================ #TODO funty crate version deleted by the owner [source] git = "https://github.com/kpcyrd/authoscope" [build] template = "custom" dependencies = [ "openssl1", ] script = """ export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export OPENSSL_STATIC="true" cookbook_cargo """ ================================================ FILE: recipes/wip/security/binsec/recipe.toml ================================================ #TODO yara-sys crate error (after cargo update) [source] git = "https://github.com/ex0dus-0x/binsec" [build] template = "cargo" ================================================ FILE: recipes/wip/security/breakmancer/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://codeberg.org/timmc/breakmancer" [build] template = "cargo" ================================================ FILE: recipes/wip/security/burrow/recipe.toml ================================================ #TODO cargo package error [source] git = "https://github.com/hackclub/burrow" [build] template = "custom" script = """ cookbook_cargo_packages burrow """ ================================================ FILE: recipes/wip/security/capstone/recipe.toml ================================================ #TODO missing script for building, see https://github.com/capstone-engine/capstone/blob/next/COMPILE.TXT [source] git = "https://github.com/capstone-engine/capstone" rev = "097c04d9413c59a58b00d4d1c8d5dc0ac158ffaa" [build] template = "custom" ================================================ FILE: recipes/wip/security/cargo-scan/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/PLSysSec/cargo-scan" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/security/clamav/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://docs.clamav.net/manual/Installing/Installing-from-source-Unix.html #TODO missing Sendmail Mail Filter API (Milter) [source] tar = "https://www.clamav.net/downloads/production/clamav-1.5.0.tar.gz" [build] template = "custom" dependencies = [ "curl", "ncurses", "bzip2", "json-c", "pcre", "openssl1", "libxml2", "zlib", ] script = """ DYNAMIC_INIT export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_cmake """ ================================================ FILE: recipes/wip/security/cotp/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/replydev/cotp" [build] template = "custom" dependencies = [ "libxkbcommon", ] script = """ DYNAMIC_INIT cookbook_cargo """ ================================================ FILE: recipes/wip/security/deoptimizer/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/EgeBalci/deoptimizer" [build] template = "cargo" ================================================ FILE: recipes/wip/security/dfir-toolkit/recipe.toml ================================================ #TODO forensic-rs crate error [source] git = "https://github.com/dfir-dd/dfir-toolkit" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/security/feroxbuster/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/epi052/feroxbuster" [build] template = "cargo" ================================================ FILE: recipes/wip/security/flawz/recipe.toml ================================================ #TODO webbrowser crate error [source] git = "https://github.com/orhun/flawz" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/security/gnupg/recipe.toml ================================================ #TODO compilation error on libgcrypt [source] tar = "https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.4.1.tar.bz2" [build] template = "configure" dependencies = [ "libiconv", "libgcrypt", ] ================================================ FILE: recipes/wip/security/gnupg-lts/recipe.toml ================================================ #TODO compilation error on libgcrypt [source] tar = "https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.41.tar.bz2" [build] template = "configure" dependencies = [ "libiconv", "libgcrypt", ] ================================================ FILE: recipes/wip/security/john-the-ripper/recipe.toml ================================================ #TODO missing script for GNU Autotools, see https://github.com/openwall/john/blob/bleeding-jumbo/doc/INSTALL [source] tar = "https://www.openwall.com/john/k/john-1.9.0-jumbo-1.tar.xz" [build] template = "custom" dependencies = [ "openssl1", "nss", "kerberos5", "libgmp", ] ================================================ FILE: recipes/wip/security/kanha/recipe.toml ================================================ #TODO linking error (after cargo update) [source] git = "https://github.com/pwnwriter/kanha" [build] template = "cargo" ================================================ FILE: recipes/wip/security/keepassxc/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#linux # probably missing dependencies, see https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux#install-the-required-dependencies [source] tar = "https://github.com/keepassxreboot/keepassxc/releases/download/2.7.10/keepassxc-2.7.10-src.tar.xz" [build] template = "cmake" cmakeflags = [ "-DWITH_XC_AUTOTYPE=OFF", "-DWITH_XC_UPDATECHECK=OFF", "-DKEEPASSXC_BUILD_TYPE=Release", "-DWITH_APP_BUNDLE=OFF", ] dependencies = [ "qt5-base", "qt5-svg", "zlib", "libbotan", "libargon2", "libxi", "libxtst", "readline", ] ================================================ FILE: recipes/wip/security/keyscope/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/SpectralOps/keyscope" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo_packages keyscope """ ================================================ FILE: recipes/wip/security/lynis/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/CISOfy/lynis" rev = "60afce6d8110ee9e88ac9e9d0e0346b1cf222b5e" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/lynis cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/usr/share/lynis """ ================================================ FILE: recipes/wip/security/motus/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/oleiade/motus" [build] template = "cargo" ================================================ FILE: recipes/wip/security/nitrocli/recipe.toml ================================================ #TODO make libhidapi work [source] git = "https://github.com/d-e-s-o/nitrocli" [build] template = "cargo" dependencies = [ "libhidapi", ] ================================================ FILE: recipes/wip/security/openpgp-ca/recipe.toml ================================================ #TODO make the libpcsclite dependency work [source] git = "https://gitlab.com/openpgp-ca/openpgp-ca" [build] template = "custom" script = """ cookbook_cargo_packages openpgp-ca openpgp-ca-restd """ dependencies = [ "openssl1", "libpcsclite", ] ================================================ FILE: recipes/wip/security/otti/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/dnaka91/otti" [build] template = "cargo" ================================================ FILE: recipes/wip/security/pass/recipe.toml ================================================ #TODO missing script for gnu make: https://git.zx2c4.com/password-store/tree/INSTALL #TODO determine compile-time and run-time dependencies: https://git.zx2c4.com/password-store/tree/README#n15 [source] tar = "https://git.zx2c4.com/password-store/snapshot/password-store-1.7.4.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/security/please/recipe.toml ================================================ #TODO users crate error (after cargo update) [source] git = "https://gitlab.com/edneville/please" [build] template = "cargo" ================================================ FILE: recipes/wip/security/plutus-rustus/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/a137x/plutus-rustus" [build] template = "cargo" ================================================ FILE: recipes/wip/security/rage/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/str4d/rage" [build] template = "custom" script = """ cookbook_cargo_packages rage """ ================================================ FILE: recipes/wip/security/retdec/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/avast/retdec#process [source] git = "https://github.com/avast/retdec" rev = "53e55b4b26e9b843787f0e06d867441e32b1604e" [build] template = "cmake" dependencies = [ "openssl1", "zlib", ] ================================================ FILE: recipes/wip/security/rowhammer-test/recipe.toml ================================================ #TODO missing script for the "make.sh" file, see https://github.com/google/rowhammer-test#readme [source] git = "https://github.com/google/rowhammer-test" [build] template = "custom" ================================================ FILE: recipes/wip/security/rshijack/recipe.toml ================================================ #TODO pnet_sys crate error (after cargo update) [source] git = "https://github.com/kpcyrd/rshijack" [build] template = "cargo" ================================================ FILE: recipes/wip/security/rustyvault/recipe.toml ================================================ #TODO async-io and rustix crates error [source] git = "https://github.com/Tongsuo-Project/RustyVault" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/security/safecloset/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Canop/safecloset" [build] template = "cargo" ================================================ FILE: recipes/wip/security/sn0int/recipe.toml ================================================ #TODO outdated redox_syscall crate [source] git = "https://github.com/kpcyrd/sn0int" [build] template = "cargo" dependencies = [ "libsodium", "sqlite3", ] ================================================ FILE: recipes/wip/security/sniffglue/recipe.toml ================================================ #TODO make the libpcap dependency work [source] git = "https://github.com/kpcyrd/sniffglue" [build] template = "cargo" dependencies = [ "libpcap", ] ================================================ FILE: recipes/wip/security/sq/recipe.toml ================================================ #TODO make libnettle work [source] git = "https://gitlab.com/sequoia-pgp/sequoia-sq" [build] template = "cargo" dependencies = [ "openssl1", "libnettle", ] ================================================ FILE: recipes/wip/security/sqop/recipe.toml ================================================ #TODO make libnettle work [source] git = "https://gitlab.com/sequoia-pgp/sequoia-sop" [build] template = "cargo" dependencies = [ "libnettle", ] ================================================ FILE: recipes/wip/security/sqv/recipe.toml ================================================ #TODO make libnettle work [source] git = "https://gitlab.com/sequoia-pgp/sequoia-sqv" [build] template = "cargo" dependencies = [ "libnettle", ] ================================================ FILE: recipes/wip/security/sss-cli/recipe.toml ================================================ #TODO source code error (after cargo update) [source] git = "https://github.com/dsprenkels/sss-cli" [build] template = "cargo" ================================================ FILE: recipes/wip/security/stegano/recipe.toml ================================================ #TODO require a command to move the binary [source] git = "https://github.com/steganogram/stegano-rs" [build] template = "custom" script = """ cookbook_cargo_packages stegano-cli """ ================================================ FILE: recipes/wip/security/sudo-rs/recipe.toml ================================================ #TODO libc crate error #TODO requires Linux PAM [source] git = "https://github.com/memorysafety/sudo-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/security/tyr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.com/cyberactivity/tyr" [build] template = "cargo" ================================================ FILE: recipes/wip/security/vagga/recipe.toml ================================================ #TODO libc and nix crate errors (after cargo update) [source] git = "https://github.com/tailhook/vagga" [build] template = "cargo" ================================================ FILE: recipes/wip/security/veldora/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/tamton-aquib/veldora" [build] template = "cargo" ================================================ FILE: recipes/wip/security/veracrypt/recipe.toml ================================================ #TODO missing script for GNU Make, see https://www.veracrypt.fr/en/CompilingGuidelineLinux.html#CompileVeraCrypt [source] tar = "https://launchpad.net/veracrypt/trunk/1.26.7/+download/VeraCrypt_1.26.7_Source.tar.bz2" [build] template = "custom" dependencies = [ "libfuse3", "libpcsclite", "wxwidgets-gtk3", ] ================================================ FILE: recipes/wip/security/weggli/recipe.toml ================================================ #TODO source code error [source] git = "https://github.com/weggli-rs/weggli" [build] template = "cargo" ================================================ FILE: recipes/wip/security/whyno/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gnu.foo/projects/whyno" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/security/yara-x/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/VirusTotal/yara-x" [build] template = "custom" script = """ cookbook_cargo_packages yara-x-cli """ ================================================ FILE: recipes/wip/services/ala-lape/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://git.madhouse-project.org/algernon/ala-lape" [build] template = "cargo" ================================================ FILE: recipes/wip/services/busd/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jackpot51/busd" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/services/coppwr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/dimtpap/coppwr" shallow_clone = true [build] template = "cargo" dependencies = [ "pipewire", ] ================================================ FILE: recipes/wip/services/dbus/recipe.toml ================================================ [source] tar = "https://dbus.freedesktop.org/releases/dbus/dbus-1.16.2.tar.xz" blake3 = "b1d1f22858a8f04665e5dca29d194f892620f00fd3e3f4e89dd208e78868436e" patches = [ "redox.patch", ] [build] dependencies = [ "expat", "libpthread-stubs", "libx11", "libxau", "libxcb", "x11proto", ] template = "meson" mesonflags = [ #TODO: why does this require Linux? "-Depoll=enabled", "-Dx11_autolaunch=enabled", "-Dverbose_mode=true", ] ================================================ FILE: recipes/wip/services/dbus/redox.patch ================================================ diff -ruwN source-old/dbus/dbus-pollable-set-epoll.c source/dbus/dbus-pollable-set-epoll.c --- source-old/dbus/dbus-pollable-set-epoll.c 2025-02-27 09:29:06.000000000 -0700 +++ source/dbus/dbus-pollable-set-epoll.c 2025-11-14 17:50:42.043671507 -0700 @@ -30,7 +30,7 @@ #include #include -#ifndef __linux__ +#if !defined(__linux__) && !defined(__redox__) # error This file is for Linux epoll(4) #endif diff -ruwN source-old/dbus/dbus-spawn-unix.c source/dbus/dbus-spawn-unix.c --- source-old/dbus/dbus-spawn-unix.c 2025-02-27 09:29:06.000000000 -0700 +++ source/dbus/dbus-spawn-unix.c 2025-11-15 07:42:03.360862350 -0700 @@ -1326,7 +1326,7 @@ if (!make_pipe (child_err_report_pipe, error)) goto cleanup_and_fail; - if (!_dbus_socketpair (&babysitter_pipe[0], &babysitter_pipe[1], TRUE, error)) + if (!_dbus_socketpair (&babysitter_pipe[0], &babysitter_pipe[1], FALSE, error)) goto cleanup_and_fail; /* Setting up the babysitter is only useful in the parent, ================================================ FILE: recipes/wip/services/elogind/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/elogind/elogind" rev = "V255.22" shallow_clone = true [build] template = "meson" mesonflags = [ "-Dmode=release", "-Dtranslations=false", "-Dtests=false", ] dependencies = [ "libeudev", "libcap", ] ================================================ FILE: recipes/wip/services/eudev/recipe.toml ================================================ #TODO compilation error: POSIX header not found [source] tar = "https://github.com/eudev-project/eudev/releases/download/v3.2.14/eudev-3.2.14.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/services/grub/recipe.toml ================================================ #TODO compilation error [source] tar = "https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/services/hickory-dns/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/hickory-dns/hickory-dns" shallow_clone = true [build] template = "custom" dependencies = [ "openssl3", ] script = """ DYNAMIC_INIT binary=hickory-dns "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --bin "${binary}" \ --release --all-features mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${binary}" \ "${COOKBOOK_STAGE}/usr/bin/${binary}" """ ================================================ FILE: recipes/wip/services/jack/recipe.toml ================================================ #TODO missing cross-compilation script for waf #TODO determine minimum dependencies [source] git = "https://github.com/jackaudio/jack2" rev = "v1.9.22" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/services/lemurs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/coastalwhite/lemurs" [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/etc/lemurs" mkdir -pv "${COOKBOOK_STAGE}/etc/rustysd/system" mkdir -pv "${COOKBOOK_STAGE}/etc/pam.d" cp -rv "${COOKBOOK_SOURCE}"/extra/{config.toml,xsetup.sh} "${COOKBOOK_STAGE}/etc/lemurs" cp -rv "${COOKBOOK_SOURCE}"/extra/lemurs.service "${COOKBOOK_STAGE}/etc/rustysd/system" cp -rv "${COOKBOOK_SOURCE}"/extra/lemurs.pam "${COOKBOOK_STAGE}/etc/pam.d/lemurs" """ ================================================ FILE: recipes/wip/services/limine/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/limine-bootloader/limine#building-the-bootloader [source] tar = "https://github.com/limine-bootloader/limine/releases/download/v7.2.0/limine-7.2.0.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/services/ntpd-rs/recipe.toml ================================================ #TODO not compiled or tested #TODO configure the service: https://docs.ntpd-rs.pendulum-project.org/guide/installation/#running-as-a-system-service [source] git = "https://github.com/pendulum-project/ntpd-rs" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages ntpd mkdir -pv "${COOKBOOK_STAGE}/etc/ntpd-rs" cp -rv "${COOKBOOK_SOURCE}"/docs/examples/conf/ntp.toml.default "${COOKBOOK_STAGE}/etc/ntpd-rs/ntp.toml" """ ================================================ FILE: recipes/wip/services/pipewire/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/INSTALL.md [source] git = "https://gitlab.freedesktop.org/pipewire/pipewire" branch = "1.4" shallow_clone = true [build] template = "meson" mesonflags = [ "-Dtests=disabled", "-Dpipewire-jack=disabled", "-Dpipewire-v4l2=disabled", "-Dspa-plugins=disabled", "-Ddbus=disabled", "-Dflatpak=disabled", ] dependencies = [ "libpulse", "sdl2", ] ================================================ FILE: recipes/wip/services/qpwgraph/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log # build instructions: https://gitlab.freedesktop.org/rncbc/qpwgraph#building [source] git = "https://gitlab.freedesktop.org/rncbc/qpwgraph" rev = "v0.9.8" [build] template = "cmake" cmakeflags = [ "-DCONFIG_ALSA_MIDI=0", "-DCONFIG_SYSTEM_TRAY=0", ] #dependencies = [ # "qt6-base", # "pipewire", #] ================================================ FILE: recipes/wip/services/runst/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/orhun/runst" shallow_clone = true [build] template = "cargo" dependencies = [ "glib", "pango", ] ================================================ FILE: recipes/wip/services/seatd/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jackpot51/seatd" branch = "redox" [build] template = "meson" mesonflags = [ "-Dman-pages=disabled", ] ================================================ FILE: recipes/wip/services/wireplumber/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log [source] git = "https://gitlab.freedesktop.org/pipewire/wireplumber" rev = "0.5.13" shallow_clone = true [build] template = "meson" mesonflags = [ "-Dtests=false", "-Ddbus-tests=false", ] ================================================ FILE: recipes/wip/shells/brush/recipe.toml ================================================ #TODO redox is not supported by the procfs crate [source] git = "https://github.com/reubeno/brush" [build] template = "custom" script = """ cookbook_cargo_packages brush-shell """ ================================================ FILE: recipes/wip/shells/cicada/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/mitnk/cicada/blob/master/docs/install.md#option-c-via-source [source] git = "https://github.com/mitnk/cicada" rev = "710988133335582d43c74e04d0d7f95c034e2c21" [build] template = "custom" ================================================ FILE: recipes/wip/shells/dune/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/adam-mcdaniel/dune" [build] template = "cargo" ================================================ FILE: recipes/wip/shells/fish-shell/recipe.toml ================================================ #TODO: Install share/completion files [source] git = "https://github.com/fish-shell/fish-shell" rev = "54e8ad7e90a8213c01ba58de0640223bee6846d6" patches = ["redox.patch"] [build] template = "custom" dependencies = ["gettext", "ncurses", "pcre"] script = """ DYNAMIC_INIT # The only default enabled feature is building the man pages. # However, that requires sphinx so it can just be enabled later. cookbook_cargo --no-default-features """ ================================================ FILE: recipes/wip/shells/fish-shell/redox.patch ================================================ diff '--color=auto' -ruwN source/Cargo.toml source-new/Cargo.toml --- source/Cargo.toml 2025-09-11 01:59:14.785564526 -0400 +++ source-new/Cargo.toml 2025-09-11 01:59:45.885553436 -0400 @@ -35,12 +35,12 @@ bitflags = "2.5.0" errno = "0.3.0" -libc = "0.2" +libc = { git = "https://github.com/rust-lang/libc", rev = "b31ee9b22f99354f2ca00c68d038d6f377c8b8a4", features = ["extra_traits"] } # lru pulls in hashbrown by default, which uses a faster (though less DoS resistant) hashing algo. # disabling default features uses the stdlib instead, but it doubles the time to rewrite the history # files as of 22 April 2024. lru = "0.13.0" -nix = { version = "0.30.1", default-features = false, features = [ +nix = { git = "https://github.com/joshuamegnauth54/nix", branch = "redox-fish-no-merge", default-features = false, features = [ "event", "inotify", "resource", diff '--color=auto' -ruwN source/src/exec.rs source-new/src/exec.rs --- source/src/exec.rs 2025-09-11 01:59:14.596625190 -0400 +++ source-new/src/exec.rs 2025-09-11 02:00:00.315286369 -0400 @@ -33,7 +33,6 @@ use crate::nix::{getpid, isatty}; use crate::null_terminated_array::OwningNullTerminatedArray; use crate::parser::{Block, BlockId, BlockType, EvalRes, Parser}; -#[cfg(FISH_USE_POSIX_SPAWN)] use crate::proc::Pid; use crate::proc::{ hup_jobs, is_interactive_session, jobs_requiring_warning_on_exit, no_exec, @@ -390,7 +389,7 @@ ) -> ! { // This function never returns, so we take certain liberties with constness. - unsafe { libc::execve(actual_cmd.as_ptr(), argv.get(), envv.get()) }; + unsafe { libc::execve(actual_cmd.as_ptr(), argv.get().cast(), envv.get().cast()) }; let err = errno(); // The shebang wasn't introduced until UNIX Seventh Edition, so if @@ -413,7 +412,11 @@ // not what we would pass as argv0. argv2[1] = actual_cmd.as_ptr(); unsafe { - libc::execve(_PATH_BSHELL.load(Ordering::Relaxed), &argv2[0], envv.get()); + libc::execve( + _PATH_BSHELL.load(Ordering::Relaxed), + argv2.as_ptr().cast(), + envv.get().cast(), + ); } } } diff '--color=auto' -ruwN source/src/fork_exec/postfork.rs source-new/src/fork_exec/postfork.rs --- source/src/fork_exec/postfork.rs 2025-09-11 01:59:14.828576001 -0400 +++ source-new/src/fork_exec/postfork.rs 2025-09-11 02:00:00.319001235 -0400 @@ -339,7 +339,9 @@ "', which is not an executable command." ); } - } else if md.unwrap().mode() & u32::from(libc::S_IFMT) == u32::from(libc::S_IFDIR) { + } else if md.unwrap().mode() & u32::try_from(libc::S_IFMT).unwrap() + == u32::try_from(libc::S_IFDIR).unwrap() + { FLOG_SAFE!( exec, "Failed to execute process '", diff '--color=auto' -ruwN source/src/input_common.rs source-new/src/input_common.rs --- source/src/input_common.rs 2025-09-11 01:59:14.828576001 -0400 +++ source-new/src/input_common.rs 2025-09-11 02:00:00.316042380 -0400 @@ -589,7 +589,9 @@ // pselect expects timeouts in nanoseconds. const NSEC_PER_MSEC: u64 = 1000 * 1000; const NSEC_PER_SEC: u64 = NSEC_PER_MSEC * 1000; + #[cfg(not(target_os = "redox"))] let wait_nsec: u64 = (timeout.as_millis() as u64) * NSEC_PER_MSEC; + #[cfg(not(target_os = "redox"))] let timeout = libc::timespec { tv_sec: (wait_nsec / NSEC_PER_SEC).try_into().unwrap(), tv_nsec: (wait_nsec % NSEC_PER_SEC).try_into().unwrap(), @@ -605,6 +607,7 @@ libc::FD_SET(in_fd, &mut fdset); } + #[cfg(not(target_os = "redox"))] let res = unsafe { libc::pselect( in_fd + 1, @@ -616,6 +619,31 @@ ) }; + #[cfg(target_os = "redox")] + let res = unsafe { + //HACK: pselect does this atomically + let mut saved = MaybeUninit::uninit(); + let mut saved = { + libc::sigfillset(saved.as_mut_ptr()); + saved.assume_init() + }; + libc::sigprocmask(libc::SIG_SETMASK, &sigs, &mut saved); + let mut timeout = libc::timeval { + tv_sec: timeout.as_secs() as _, + tv_usec: timeout.subsec_micros() as _, + }; + let res = libc::select( + in_fd + 1, + &mut fdset, + ptr::null_mut(), + ptr::null_mut(), + &raw mut timeout, + ); + libc::sigprocmask(libc::SIG_SETMASK, &saved, ptr::null_mut()); + + res + }; + // Prevent signal starvation on WSL causing the `torn_escapes.py` test to fail if is_windows_subsystem_for_linux(WSL::V1) { // Merely querying the current thread's sigmask is sufficient to deliver a pending signal diff '--color=auto' -ruwN source/src/libc.c source-new/src/libc.c --- source/src/libc.c 2025-09-11 01:59:14.599514890 -0400 +++ source-new/src/libc.c 2025-09-11 02:00:00.304589636 -0400 @@ -4,7 +4,7 @@ #include #include #include // MB_CUR_MAX -#include // MNT_LOCAL +/* #include // MNT_LOCAL */ #include #include // ST_LOCAL #include // _CS_PATH, _PC_CASE_SENSITIVE diff '--color=auto' -ruwN source/src/path.rs source-new/src/path.rs --- source/src/path.rs 2025-09-11 01:59:14.600515157 -0400 +++ source-new/src/path.rs 2025-09-11 02:00:00.317047039 -0400 @@ -738,7 +738,9 @@ crate::libc::ST_LOCAL(), &narrow, ); - #[cfg(not(target_os = "netbsd"))] + #[cfg(target_os = "redox")] + let remoteness = DirRemoteness::unknown; + #[cfg(not(target_os = "redox"))] let remoteness = remoteness_via_statfs( libc::statfs, |stat: &libc::statfs| stat.f_flags, ================================================ FILE: recipes/wip/shells/nsh/recipe.toml ================================================ #TODO update mio to 0.8 [source] git = "https://github.com/nuta/nsh" [build] template = "cargo" ================================================ FILE: recipes/wip/shells/pure/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/sindresorhus/pure" rev = "87e6f5dd4c793f6d980532205aaefe196780606f" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/home/user/.zsh/pure cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}"/home/user/.zsh/pure """ ================================================ FILE: recipes/wip/shells/relish/recipe.toml ================================================ #TODO program source code error [source] git = "https://gitlab.com/whom/relish" [build] template = "cargo" ================================================ FILE: recipes/wip/shells/sheldon/recipe.toml ================================================ #TODO libssh2-sys crate error [source] git = "https://github.com/rossmacarthur/sheldon" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/shells/zsh/01_redox.patch ================================================ diff --color -ruwN source/configure.ac source-new/configure.ac --- source/configure.ac 2022-05-15 01:59:21.000000000 +0700 +++ source-new/configure.ac 2025-08-06 02:08:48.797381523 +0700 @@ -1311,7 +1311,7 @@ setuid seteuid setreuid setresuid setsid \ setgid setegid setregid setresgid \ memcpy memmove strstr strerror strtoul \ - getrlimit getrusage \ + getrusage \ setlocale \ isblank iswblank \ uname \ diff --color -ruwN source/Src/builtin.c source-new/Src/builtin.c --- source/Src/builtin.c 2022-05-15 01:59:21.000000000 +0700 +++ source-new/Src/builtin.c 2025-08-06 02:41:57.266846385 +0700 @@ -7160,16 +7160,7 @@ long clktck = get_clktck(); /* get time accounting information */ - if (times(&buf) == -1) - return 1; - pttime(buf.tms_utime); /* user time */ - putchar(' '); - pttime(buf.tms_stime); /* system time */ - putchar('\n'); - pttime(buf.tms_cutime); /* user time, children */ - putchar(' '); - pttime(buf.tms_cstime); /* system time, children */ - putchar('\n'); + // Somehow times() is not linking correctly return 0; } diff --color -ruwN source/Src/Builtins/rlimits.c source-new/Src/Builtins/rlimits.c --- source/Src/Builtins/rlimits.c 2022-05-15 01:59:21.000000000 +0700 +++ source-new/Src/Builtins/rlimits.c 2025-08-06 02:24:09.457135439 +0700 @@ -892,7 +892,7 @@ int boot_(UNUSED(Module m)) { - set_resinfo(); +// set_resinfo(); return 0; } @@ -900,7 +900,7 @@ int cleanup_(Module m) { - free_resinfo(); +// free_resinfo(); return setfeatureenables(m, &module_features, NULL); } ================================================ FILE: recipes/wip/shells/zsh/recipe.toml ================================================ #TODO: spammy getrusage() warning, or need times() support [source] tar = "https://github.com/zsh-users/zsh/archive/refs/tags/zsh-5.9.tar.gz" blake3 = "a15b94fae03e87aba6fc6a27df3c98e610b85b0c7c0fc90248f07fdcb8816860" patches = [ "01_redox.patch" ] script = """ DYNAMIC_INIT autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "ncursesw", ] script = """ DYNAMIC_INIT "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install.bin install.modules install.fns DESTDIR="${COOKBOOK_STAGE}" """ ================================================ FILE: recipes/wip/sim/coulomb/recipe.toml ================================================ #TODO missing script for gradlew #TODO determine the dependencies [source] git = "https://github.com/hamza-algohary/Coulomb" rev = "6617d4817dd153ae5e5645d427cdb746c146ccee" [build] template = "custom" ================================================ FILE: recipes/wip/sim/trmt/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/cenonym/trmt" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/asak/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/chaosprint/asak" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/aubio/recipe.toml ================================================ #TODO missing script for the waf build system, see https://aubio.org/installation [source] tar = "https://aubio.org/pub/aubio-0.4.7.tar.bz2" [build] template = "custom" ================================================ FILE: recipes/wip/sound/audacity/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log # build instructions: https://github.com/audacity/audacity/blob/master/BUILDING.md [source] tar = "https://github.com/audacity/audacity/releases/download/Audacity-3.7.7/audacity-sources-3.7.7.tar.gz" [build] template = "cmake" cmakeflags = [ "-Daudacity_conan_enabled=Off", "-Daudacity_has_tests=Off", "-Daudacity_has_updates_check=Off", "-Daudacity_has_vst3=Off", "-Daudacity_has_crashreports=Off", ] #dependencies = [ # "libuuid", #] ================================================ FILE: recipes/wip/sound/audeye/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/maxmarsc/audeye" [build] template = "cargo" dependencies = [ "libsndfile", ] ================================================ FILE: recipes/wip/sound/auditorium/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/nate-craft/auditorium" [build] template = "cargo" [package] dependencies = [ "mpv", "ffmpeg6", ] ================================================ FILE: recipes/wip/sound/chiptrack/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jturcotte/chiptrack" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/daw/ardour/recipe.toml ================================================ #TODO missing script for waf: https://ardour.org/building_linux.html #TODO discover minimum dependencies from waf log [source] git = "https://git.ardour.org/ardour/ardour" rev = "9.0" shallow_clone = true [build] template = "custom" ================================================ FILE: recipes/wip/sound/daw/lmms/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log # build instructions: https://github.com/LMMS/lmms/wiki/Compiling#build-environment [source] git = "https://github.com/LMMS/lmms" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DWANT_ALSA=OFF", "-DWANT_OSS=OFF", "-DWANT_CALF=OFF", "-DWANT_CAPS=OFF", "-DWANT_CARLA=OFF", "-DWANT_CMT=OFF", "-DWANT_JACK=OFF", "-DWANT_LV2=OFF", "-DWANT_SUIL=OFF", "-DWANT_PULSEAUDIO=OFF", "-DWANT_PORTAUDIO=OFF", "-DWANT_SNDIO=OFF", "-DWANT_SOUNDIO=OFF", "-DWANT_SF2=OFF", "-DWANT_GIG=OFF", "-DWANT_SID=OFF", "-DWANT_STK=OFF", "-DWANT_SWH=OFF", "-DWANT_TAP=OFF", "-DWANT_VST=OFF", ] #dependencies = [ # "qt5-base", # "libsamplerate", # "libvorbis", # "libogg", # "sdl2", # "fftw", # "libstk", # "fltk", #] ================================================ FILE: recipes/wip/sound/daw/tek/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://codeberg.org/unspeaker/tek" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/easy-effects/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # dependencies: https://github.com/wwmm/easyeffects#effects-available # build instructions: https://github.com/wwmm/easyeffects/wiki/Installation-from-Source [source] git = "https://github.com/wwmm/easyeffects" rev = "v8.1.2" shallow_clone = true [build] template = "cmake" #dependencies = [ # "libsamplerate", # "libsndfile", # "fftw", # "speexdsp", # "nohnmann-json", # "tbb", #] ================================================ FILE: recipes/wip/sound/freac/recipe.toml ================================================ #TODO missing script for gnu make # build instructions - https://github.com/enzo1982/freac#compiling [source] tar = "https://github.com/enzo1982/freac/releases/download/v1.1.7/freac-1.1.7.tar.gz" [build] template = "custom" dependencies = [ "boca", "libsmooth", ] ================================================ FILE: recipes/wip/sound/fretboard/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bragefuglseth/fretboard" [build] template = "cargo" dependencies = [ "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/sound/jukebox-cli/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/FedeCarollo/jukebox-cli" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/lang/chuck/recipe.toml ================================================ #TODO missing script for gnu make: https://github.com/ccrma/chuck#linux [source] tar = "https://chuck.cs.princeton.edu/release/files/chuck-1.5.1.3.tgz" [build] template = "custom" dependencies = [ "libpulse", "libsndfile", ] ================================================ FILE: recipes/wip/sound/lang/glicol/recipe.toml ================================================ #TODO failed to find output device [source] git = "https://github.com/glicol/glicol-cli" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}"/usr/share/glicol cp -rv "${COOKBOOK_SOURCE}"/*.glicol "${COOKBOOK_STAGE}"/usr/share/glicol """ ================================================ FILE: recipes/wip/sound/libpulse/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/PulseAudioFromGit/ [source] tar = "https://freedesktop.org/software/pulseaudio/releases/pulseaudio-17.0.tar.xz" [build] template = "meson" mesonflags = [ "-Ddaemon=false", "-Ddoxygen=disabled", "-Dman=false", "-Dtests=disabled", "-Drunning-from-build-tree=false", ] dependencies = [ "libsndfile", "libatomic-ops", "speexdsp", "libtool", "json-c", "gettext", ] ================================================ FILE: recipes/wip/sound/lookas/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rccyx/lookas" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/miniaudicle/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/ccrma/miniAudicle#linux [source] git = "https://github.com/ccrma/miniAudicle" rev = "3ef25e881cec9ee823d9cf93346c2d6feb089007" [build] template = "custom" dependencies = [ "pulseaudio", "libsndfile", "qt6-base", ] ================================================ FILE: recipes/wip/sound/mixxx/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from cmake log # build instructions: https://github.com/mixxxdj/mixxx/wiki/Compiling%20on%20Linux [source] git = "https://github.com/mixxxdj/mixxx" branch = "2.5" shallow_clone = true [build] template = "cmake" #dependencies = [ # "fftw", # "libflac", # "mesa", # "libhidapi", # "libmad", # "libopus", # "libopusfile", # "protobuf", # "qt6-base", # "qt6-svg", # "qt6-declarative", # "qt6-3d", # "librubberband", # "libsndfile", # "sqlite3", # "openssl3", # "portaudio", #] ================================================ FILE: recipes/wip/sound/mousai/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/SeaDve/Mousai" [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", "gstreamer", "libsoup", ] ================================================ FILE: recipes/wip/sound/music/metronome/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/World/metronome" shallow_clone = true [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", "gstreamer", ] ================================================ FILE: recipes/wip/sound/music/mpd/recipe.toml ================================================ #TODO determine minimum dependencies from meson log # build instructions: https://mpd.readthedocs.io/en/stable/user.html#compiling-from-source [source] tar = "https://www.musicpd.org/download/mpd/0.24/mpd-0.24.6.tar.xz" [build] template = "meson" mesonflags = [ "-Ddocumentation=disabled", "-Dhtml_manual=false", "-Dmanpages=false", "-Dlibfuzzer=false", ] ================================================ FILE: recipes/wip/sound/music/neothesia/recipe.toml ================================================ #TODO midir crate error [source] git = "https://github.com/PolyMeilex/Neothesia" shallow_clone = true [build] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages neothesia """ ================================================ FILE: recipes/wip/sound/music/tempo/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/tobagin/tempo" rev = "v1.5.1" shallow_clone = true [build] template = "meson" dependencies = [ "gtk4", "libadwaita", "glib", "json-glib", "libgee", "gstreamer", ] dev-dependencies = ["host:blueprint"] ================================================ FILE: recipes/wip/sound/odin2/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/TheWaveWarden/odin2#all-platforms [source] git = "https://github.com/TheWaveWarden/odin2" [build] template = "cmake" dependencies = [ "mesa", "curl", "webkitgtk3", ] ================================================ FILE: recipes/wip/sound/pcmg/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/JohnDowson/pcmg" [build] template = "custom" script = """ cookbook_cargo_packages pcmg """ ================================================ FILE: recipes/wip/sound/piano-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ritiek/piano-rs" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/piano-rs cp -rv "${COOKBOOK_SOURCE}"/assets "${COOKBOOK_STAGE}"/usr/share/piano-rs cookbook_cargo """ ================================================ FILE: recipes/wip/sound/players/euphonica/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/htkhiem/euphonica#meson [source] git = "https://github.com/htkhiem/euphonica" [build] template = "custom" dependencies = [ "gtk4", "libadwaita", "sqlite3", ] script = """ DYNAMIC_INIT cookbook_cargo """ [package] dependencies = ["mpd"] ================================================ FILE: recipes/wip/sound/players/ncspot/recipe.toml ================================================ #TODO ncurses crate error [source] git = "https://github.com/hrkfdn/ncspot" [build] template = "custom" dependencies = [ "openssl1", "ncurses", ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_cargo --features rodio_backend,pancurses_backend """ ================================================ FILE: recipes/wip/sound/players/rmpc/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mierak/rmpc" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/rustyvibes/recipe.toml ================================================ #TODO rdev crate error [source] git = "https://github.com/KunalBagaria/rustyvibes" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/ruxguitar/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/agourlay/ruxguitar" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/scope-tui/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/alemidev/scope-tui" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/shezem-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Kither12/shezem-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/sndio/recipe.toml ================================================ #TODO configuration problem [source] tar = "https://sndio.org/sndio-1.9.0.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/sound/sonobus/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/sonosaurus/sonobus/blob/main/linux/BUILDING.md [source] git = "https://github.com/sonosaurus/sonobus" rev = "1.7.2" shallow_clone = true [build] template = "cmake" #dependencies = [ # "libopus", # "freetype2", # "curl", # "libx11", # "libxinerama", # "libxrandr", # "libxext", # "libxcursor", #] ================================================ FILE: recipes/wip/sound/sonusmix/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://codeberg.org/sonusmix/sonusmix#building-from-source [source] git = "https://codeberg.org/sonusmix/sonusmix" shallow_clone = true [build] template = "custom" dependencies = [ "gtk4", ] script = """ DYNAMIC_INIT cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/usr/share/{applications,icons}/" cp -v "${COOKBOOK_SOURCE}/assets/org.sonusmix.Sonusmix.desktop" "${COOKBOOK_STAGE}/usr/share/applications/" cp -v "${COOKBOOK_SOURCE}/assets/sonusmix.svg" "${COOKBOOK_STAGE}/usr/share/icons/" """ ================================================ FILE: recipes/wip/sound/soundboard/recipe.toml ================================================ #TODO can't find the glib dependency (after cargo update) #TODO update the ring crate version [source] git = "https://github.com/gamebooster/soundboard" [build] template = "custom" dependencies = [ "glib", "openssl1", ] script = """ cookbook_cargo --features full """ ================================================ FILE: recipes/wip/sound/soundscope/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bananaofhappiness/soundscope" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/soundux/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Soundux/Soundux" rev = "0.2.7" shallow_clone = true [build] template = "cmake" dependencies = [ "pipewire", "libpulse", "webkitgtk4", "openssl3", "libx11", "libxi", "libappindicator", ] ================================================ FILE: recipes/wip/sound/speech-dispatcher/recipe.toml ================================================ #TODO make all dependencies work [source] tar = "https://github.com/brailcom/speechd/releases/download/0.11.5/speech-dispatcher-0.11.5.tar.gz" [build] template = "configure" dependencies = [ "glib", "libsndfile", "libdotconf", ] ================================================ FILE: recipes/wip/sound/swyh-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/dheijl/swyh-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/tori/recipe.toml ================================================ #TODO make dependencies work [source] git = "https://github.com/LeoRiether/tori" [build] template = "cargo" dependencies = [ "mpv", "cava", ] ================================================ FILE: recipes/wip/sound/tuisic/recipe.toml ================================================ #TODO rustc-serialize crate error [source] git = "https://github.com/saubuny/tuisic" [build] template = "cargo" ================================================ FILE: recipes/wip/sound/viewer/cava/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/karlstav/cava" rev = "0.10.7" shallow_clone = true script = """ autotools_recursive_regenerate """ [build] template = "configure" dependencies = [ "ncursesw", "fftw", "iniparser", ] ================================================ FILE: recipes/wip/sound/viewer/cavasik/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/TheWisker/Cavasik" rev = "v3.2.0" shallow_clone = true [build] template = "meson" [package] dependencies = [ "cava", "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/sound/whis/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/frankdierolf/whis" shallow_clone = true [build] template = "custom" dependencies = [ "libvulkan", "vulkan-headers", "shaderc", ] script = """ DYNAMIC_INIT cookbook_cargo_packages whis-cli """ [package] dependencies = ["vulkan-tools"] ================================================ FILE: recipes/wip/sound/wiremix/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/tsowell/wiremix" [build] template = "cargo" dependencies = [ "pipewire", ] ================================================ FILE: recipes/wip/storage/bmap-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/collabora/bmap-rs" [build] template = "custom" script = """ cookbook_cargo_packages bmap-rs """ ================================================ FILE: recipes/wip/storage/ezio/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/tjjh89017/ezio" rev = "v2.0.21" [build] template = "cmake" dependencies = [ "boost", "libtorrent", "protobuf", "libspdlog", "grpc", ] ================================================ FILE: recipes/wip/storage/kiorg/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/houqp/kiorg" [build] template = "cargo" ================================================ FILE: recipes/wip/storage/stor-age/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/idiv-biodiversity/stor-age" [build] template = "cargo" ================================================ FILE: recipes/wip/storage/wiper/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ikebastuz/wiper" [build] template = "cargo" ================================================ FILE: recipes/wip/sys-info/bb/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/epilys/bb" [build] template = "cargo" ================================================ FILE: recipes/wip/sys-info/btop/recipe.toml ================================================ #TODO missing gnu make script, see https://github.com/aristocratos/btop#compilation-linux [source] git = "https://github.com/aristocratos/btop" rev = "fd2a2acdad6fbaad76846cb5e802cf2ae022d670" [build] template = "custom" ================================================ FILE: recipes/wip/sys-info/cpu-x/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/TheTumultuousUnicornOfDarkness/CPU-X/wiki/manual-build#build-and-install-cpu-x [source] git = "https://github.com/TheTumultuousUnicornOfDarkness/CPU-X" rev = "41f5d1ac3b13e60aa30212f2b9f38de646fd2b07" [build] template = "custom" dependencies = [ #"gtk3mm", "ncurses", #"glfw3", #"libvulkan", "libstatgrab", "libcpuid", "pciutils", ] script = """ DYNAMIC_INIT export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" COOKBOOK_CMAKE_FLAGS+=( "-DWITH_GTK=0", "-DWITH_LIBGLFW=0", "-DWITH_VULKAN=0", ) cookbook_cmake """ ================================================ FILE: recipes/wip/sys-info/cyme/recipe.toml ================================================ #TODO port to Redox [source] git = "https://github.com/tuna-f1sh/cyme" [build] template = "cargo" ================================================ FILE: recipes/wip/sys-info/ffetch/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/0l3d/ffetch" [build] template = "cargo" ================================================ FILE: recipes/wip/sys-info/freshfetch/recipe.toml ================================================ #TODO mlua crate error [source] git = "https://github.com/K4rakara/freshfetch" [build] template = "custom" script = """ cookbook_cargo_packages freshfetch """ ================================================ FILE: recipes/wip/sys-info/macchina/recipe.toml ================================================ #TODO if-addrs crate error [source] git = "https://github.com/Macchina-CLI/macchina" [build] template = "cargo" ================================================ FILE: recipes/wip/sys-info/mission-center/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.com/mission-center-devs/mission-center#building---native #TODO patch to disable libgbm [source] git = "https://gitlab.com/mission-center-devs/mission-center" [build] template = "meson" dependencies = [ "gtk4", "libadwaita", "eudev", "libdrm", "dbus", ] ================================================ FILE: recipes/wip/sys-info/neofetch/recipe.toml ================================================ #TODO Add Redox OS on the Bash script [source] git = "https://github.com/dylanaraps/neofetch" rev = "60d07dee6b76769d8c487a40639fb7b5a1a7bc85" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp "${COOKBOOK_SOURCE}"/neofetch "${COOKBOOK_STAGE}"/usr/bin/neofetch chmod a+x "${COOKBOOK_STAGE}"/usr/bin/neofetch """ ================================================ FILE: recipes/wip/sys-info/pciutils/recipe.toml ================================================ #TODO missing script for "make", see https://git.kernel.org/pub/scm/utils/pciutils/pciutils.git/tree/README#n52 [source] tar = "https://mirrors.edge.kernel.org/pub/software/utils/pciutils/pciutils-3.9.0.tar.xz" [build] template = "custom" dependencies = [ "zlib", ] ================================================ FILE: recipes/wip/sys-info/pfetch-rs/recipe.toml ================================================ #TODO if-addrs crate error [source] git = "https://github.com/Gobidev/pfetch-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/sys-info/process-viewer/recipe.toml ================================================ #TODO make GTK4 work [source] git = "https://github.com/GuillaumeGomez/process-viewer" [build] template = "cargo" dependencies = [ "gtk4", ] ================================================ FILE: recipes/wip/sys-info/procps-ng/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.4.tar.xz/download" [build] template = "configure" ================================================ FILE: recipes/wip/sys-info/procs/recipe.toml ================================================ #TODO async-io and rustix crates error (after cargo update) [source] git = "https://github.com/dalance/procs" [build] template = "cargo" ================================================ FILE: recipes/wip/sys-info/rfetch/recipe.toml ================================================ #TODO nix crate error (after cargo update) [source] git = "https://github.com/kamui-fin/rfetch" [build] template = "cargo" ================================================ FILE: recipes/wip/sys-info/rsftch/recipe.toml ================================================ #TODO source code error [source] git = "https://github.com/charklie/rsftch" [build] template = "cargo" ================================================ FILE: recipes/wip/sys-info/usbutils/recipe.toml ================================================ #TODO compilation error [source] tar = "https://www.kernel.org/pub/linux/utils/usb/usbutils/usbutils-017.tar.xz" [build] template = "configure" dependencies = [ "libusb", ] ================================================ FILE: recipes/wip/sys-info/zeitfetch/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/nidnogg/zeitfetch" [build] template = "cargo" ================================================ FILE: recipes/wip/system/pik/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jacek-kurlit/pik" [build] template = "cargo" ================================================ FILE: recipes/wip/system/procman/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jaroslawroszyk/procman" [build] template = "cargo" ================================================ FILE: recipes/wip/system/rustysd/recipe.toml ================================================ #TODO: Unable to fork services, page fault on rsdctl [source] git = "https://github.com/willnode/rustysd" branch = "redox" [build] template = "custom" script = """ cookbook_cargo mkdir -p ${COOKBOOK_STAGE}/etc/rustysd/system cat <<'EOF' > ${COOKBOOK_STAGE}/etc/rustysd/rustysd_config.toml unit_dirs = [ "/etc/rustysd/system", "/etc/rustysd/user", ] logging_dir = "/var/log/rustysd" log_to_disk = true log_to_stdout = false target_unit = "default.target" notifications_dir = "/var/run/rustysd" # selfpath = "" EOF cp ${COOKBOOK_SOURCE}/docker_test_units/*.target ${COOKBOOK_STAGE}/etc/rustysd/system/ ln -s rsdctl ${COOKBOOK_STAGE}/usr/bin/systemctl """ ================================================ FILE: recipes/wip/system/topgrade/recipe.toml ================================================ #TODO async-io and rustix crates error [source] git = "https://github.com/topgrade-rs/topgrade" [build] template = "cargo" ================================================ FILE: recipes/wip/tel/sms-server/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/morgverd/sms-server" [build] template = "cargo" ================================================ FILE: recipes/wip/tel/sms-terminal/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/morgverd/sms-terminal" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/agg/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/asciinema/agg" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/alacritty/recipe.toml ================================================ #TODO need to patch glutin [source] git = "https://github.com/alacritty/alacritty" shallow_clone = true [build] template = "cargo" dependencies = [ "freetype2", "fontconfig", "libxcb", ] cargopath = "alacritty" cargoflags = [ "--no-default-features", "--features x11", ] ================================================ FILE: recipes/wip/terminal/ascii-gen/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/thed24/ascii-gen" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/asciiquarium/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/cmatsuoka/asciiquarium" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp "${COOKBOOK_SOURCE}"/asciiquarium "${COOKBOOK_STAGE}"/usr/bin/asciiquarium chmod a+x "${COOKBOOK_STAGE}"/usr/bin/asciiquarium """ [package] dependencies = [ "perl", ] ================================================ FILE: recipes/wip/terminal/bobr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/cchexcode/bobr" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/boulette/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/pipelight/boulette" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/cbonsai/recipe.toml ================================================ #TODO missing script for gnu make: https://gitlab.com/jallbrit/cbonsai#manual [source] git = "https://gitlab.com/jallbrit/cbonsai" rev = "v1.4.2" [build] template = "custom" dependencies = [ "ncursesw", ] ================================================ FILE: recipes/wip/terminal/chafa/recipe.toml ================================================ #TODO can't find FreeType dependency [source] tar = "https://hpjansson.org/chafa/releases/chafa-1.12.4.tar.xz" [build] template = "configure" dependencies = [ "glib", "imagemagick", "pcre", "freetype2", ] ================================================ FILE: recipes/wip/terminal/chatd/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/unrenamed/chatd" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/contour-terminal/recipe.toml ================================================ #TODO not compiled or tested # build instructions - https://contour-terminal.org/install/#unix-like-systems-linux-freebsd-macos #TODO missing dependencies, see https://github.com/contour-terminal/contour/blob/master/scripts/install-deps.sh#L328 [source] git = "https://github.com/contour-terminal/contour" rev = "116f1d16f6dc33ab8b0f6010a44e7b23eadeb8ca" [build] template = "cmake" dependencies = [ "fontconfig", "freetyoe2", "harfbuzz", "libssh2", "ncurses", "qt6-base", "qt6-declarative", "qt6-multimedia", "qt6-tools", "libxcb", ] ================================================ FILE: recipes/wip/terminal/countryfetch/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/nik-rev/countryfetch" [build] template = "custom" script = """ cookbook_cargo_packages countryfetch """ ================================================ FILE: recipes/wip/terminal/desktop-tui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Julien-cpsn/desktop-tui" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/envx/recioe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mikeleppane/envx" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/fsel/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Mjoyufull/fsel" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/ghostie/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/attriaayush/ghostie" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/leadr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ll-nick/leadr" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/lk/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jamescoleuk/lk" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/logria/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ReagentX/Logria" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/loriini/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/kolja/loriini" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/lule/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/warpwm/lule" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/ngrv/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/sorairolake/ngrv" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/otter-launcher/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/kuokuo123/otter-launcher" [build] template = "custom" script = """ cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}/usr/share/otter-launcher" cp -rv "${COOKBOOK_SOURCE}"/contrib/* "${COOKBOOK_STAGE}/usr/share/otter-launcher" """ ================================================ FILE: recipes/wip/terminal/pastel/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/sharkdp/pastel" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/pay-respects/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/iffse/pay-respects" [build] template = "custom" script = """ cookbook_cargo_packages pay-respects """ ================================================ FILE: recipes/wip/terminal/pipecolor/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/dalance/pipecolor" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/pipes-sh/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/pipeseroni/pipes.sh" rev = "v1.3.0" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp "${COOKBOOK_SOURCE}"/pipes.sh "${COOKBOOK_STAGE}"/usr/bin/pipes chmod a+x "${COOKBOOK_STAGE}"/usr/bin/pipes """ [package] dependencies = [ "bash", "ncurses", ] ================================================ FILE: recipes/wip/terminal/pretty/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rhaskia/preTTY" [build] template = "custom" script = """ cookbook_cargo_packages prettyterm_gui """ ================================================ FILE: recipes/wip/terminal/rioterm/recipe.toml ================================================ #TODO Need to make libxkbcommon work [source] git = "https://github.com/raphamorim/rio" [build] template = "cargo" dependencies = [ "freetype2", "fontconfig", "libxkbcommon", ] ================================================ FILE: recipes/wip/terminal/rterm/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mechpen/rterm" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/scooter/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/thomasschafer/scooter" [build] template = "custom" script = """ cookbook_cargo_packages scooter """ ================================================ FILE: recipes/wip/terminal/so/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/samtay/so" [build] template = "custom" script = """ cookbook_cargo --no-default-features --features termion-backend """ ================================================ FILE: recipes/wip/terminal/starship/recipe.toml ================================================ #TODO systemstat crate error #TODO nix::unistd::User [source] git = "https://github.com/starship/starship" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/tab-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/austinjones/tab-rs" [build] template = "custom" script = """ cookbook_cargo_packages tab """ ================================================ FILE: recipes/wip/terminal/tarts/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/oiwn/tarts" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/tattoy/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/tattoy-org/tattoy" [build] template = "custom" script = """ cookbook_cargo_packages tattoy """ ================================================ FILE: recipes/wip/terminal/tere/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mgunyho/tere" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/term39/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/alejandroqh/term39" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/termimage/recipe.toml ================================================ #TODO move to the proper category [source] git = "https://github.com/nabijaczleweli/termimage" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/terminal-toys/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Seebass22/terminal-toys" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/terminal-yt/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jooooscha/terminal-yt" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/thokr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jrnxf/thokr" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/tmux/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://github.com/tmux/tmux/releases/download/3.4/tmux-3.4.tar.gz" [build] template = "custom" dependencies = [ "ncurses", "libevent", ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_configure """ ================================================ FILE: recipes/wip/terminal/tmuxpanel/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/marlocarlo/Tmux-Plugin-Panel" shallow_clone = true [build] template = "cargo" [package] dependencies = [ "tmux", "git", ] ================================================ FILE: recipes/wip/terminal/toyterm/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/algon-320/toyterm" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/tvk/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Arcelyth/TerminalVirtualKeyboard" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/useenv/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/EliahKagan/useenv" [build] template = "cargo" ================================================ FILE: recipes/wip/terminal/wezterm/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://wezterm.org/install/source.html # dependencies reference: https://github.com/wez/wezterm/blob/main/get-deps#L149 [source] git = "https://github.com/wez/wezterm" shallow_clone = true [build] template = "custom" dependencies = [ "mesa", "fontconfig", "openssl3", "libxkbcommon", "libx11", "libxcb", ] script = """ DYNAMIC_INIT package=wezterm "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --package "${package}" \ --release \ --no-default-features \ --features=vendored-fonts mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${package}" \ "${COOKBOOK_STAGE}/usr/bin/${package}" """ ================================================ FILE: recipes/wip/terminal/zellij/recipe.toml ================================================ #TODO openssl-sys crate error (after cargo update) [source] git = "https://github.com/zellij-org/zellij" [build] template = "cargo" ================================================ FILE: recipes/wip/tests/pjdfstest/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/pjd/pjdfstest" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user/pjdfstest" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/pjdfstest" """ [package] dependencies = ["perl5"] ================================================ FILE: recipes/wip/tests/xfstests/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/kdave/xfstests" rev = "2cba4b54e6ab21d9324000f3cd009dbe9cad9c19" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/home/user/xfstests" cp -rv "${COOKBOOK_SOURCE}"/* "${COOKBOOK_STAGE}/home/user/xfstests" """ ================================================ FILE: recipes/wip/text/amp/recipe.toml ================================================ #TODO require a patch on the mio crate [source] git = "https://github.com/jmacdonald/amp" [build] template = "cargo" ================================================ FILE: recipes/wip/text/basalt/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/erikjuhani/basalt" [build] template = "custom" script = """ cookbook_cargo_packages basalt-tui """ ================================================ FILE: recipes/wip/text/bat/recipe.toml ================================================ #TODO sys-info crate build.rs does not recognize Redox [source] git = "https://github.com/sharkdp/bat" [build] template = "cargo" ================================================ FILE: recipes/wip/text/blogr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bahdotsh/blogr" [build] template = "custom" script = """ cookbook_cargo_packages blogr-cli """ ================================================ FILE: recipes/wip/text/csview/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/wfxr/csview" [build] template = "cargo" ================================================ FILE: recipes/wip/text/csvlens/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/YS-L/csvlens" [build] template = "cargo" ================================================ FILE: recipes/wip/text/dog/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/TrystanScottLambert/dog" [build] template = "cargo" ================================================ FILE: recipes/wip/text/duat/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/AhoyISki/duat" [build] template = "cargo" ================================================ FILE: recipes/wip/text/edit/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/microsoft/edit" [build] template = "cargo" ================================================ FILE: recipes/wip/text/emacs-nox/recipe.toml ================================================ #TODO compilation error #TODO make dependencies work [source] tar = "https://ftp.gnu.org/gnu/emacs/emacs-29.1.tar.xz" [build] template = "custom" dependencies = [ "dbus", "libgmp", "libgpm", "gnutls3", "jansson", "liblcms", "sqlite3", "libxml2", "zlib", "ncurses", ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_configure """ ================================================ FILE: recipes/wip/text/emacs-pgtk/recipe.toml ================================================ #TODO compilation error #TODO make dependencies work [source] tar = "https://ftp.gnu.org/gnu/emacs/emacs-29.1.tar.xz" [build] template = "custom" dependencies = [ "dbus", "libgmp", "libgpm", "gnutls3", "jansson", "liblcms", "sqlite3", "libxml2", "zlib", "ncurses", "cairo", "fontconfig", "freetype2", "gdk-pixbuf", "libgif", "glib", "gtk3", "harfbuzz", "libjpeg", "pango", "libpng", "librsvg", "libtiff", "libwebp", "libotf", ] script = """ export CPPFLAGS="-I${COOKBOOK_SYSROOT}/include/ncurses" cookbook_configure """ ================================================ FILE: recipes/wip/text/flowfix/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/warpwm/flowfix" [build] template = "cargo" ================================================ FILE: recipes/wip/text/fsrx/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jrnxf/fsrx" [build] template = "cargo" ================================================ FILE: recipes/wip/text/helix-gpui/recipe.toml ================================================ #TODO can't find the fontconfig dependency [source] git = "https://github.com/polachok/helix-gpui" [build] template = "cargo" dependencies = [ "openssl1", "fontconfig", ] ================================================ FILE: recipes/wip/text/igrep/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/konradsz/igrep" [build] template = "cargo" ================================================ FILE: recipes/wip/text/jt/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/shashwatah/jot" [build] template = "cargo" ================================================ FILE: recipes/wip/text/keypunch/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bragefuglseth/keypunch" [build] template = "cargo" dependencies = [ "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/text/ki-editor/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ki-editor/ki-editor" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/text/kibi/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/ilai-deutel/kibi" rev = "v0.3.2" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/kibi cp -rv "${COOKBOOK_SOURCE}"/syntax.d "${COOKBOOK_STAGE}"/usr/share/kibi cookbook_cargo """ ================================================ FILE: recipes/wip/text/mado/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/akiomik/mado" [build] template = "cargo" ================================================ FILE: recipes/wip/text/md-tui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/henriklovhaug/md-tui" [build] template = "cargo" ================================================ FILE: recipes/wip/text/mdcat/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/swsnr/mdcat" [build] template = "custom" script = """ cookbook_cargo --features=static """ ================================================ FILE: recipes/wip/text/nanorust/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Supakornn/nanorust" [build] template = "cargo" ================================================ FILE: recipes/wip/text/neovide/recipe.toml ================================================ #TODO Make neovim and freeglut work [source] git = "https://github.com/neovide/neovide" [build] template = "cargo" dependencies = [ "neovim", "openssl1", "freetype2", "expat", "bzip2", "freeglut", "fontconfig", ] ================================================ FILE: recipes/wip/text/neovim/recipe.toml ================================================ #TODO working with workarounds on SIGCHLD #TODO no documentation [source] git = "https://github.com/neovim/neovim" rev = "v0.11.5" shallow_clone = true patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "libiconv", "libuv", "luv", "lpeg", "tree-sitter", "gettext", "unibilium", "utf8proc", ] dev-dependencies = [ "host:luajit", "host:neovim", ] script = """ DYNAMIC_INIT # the only official way to cross compile in future is via zig # https://github.com/neovim/neovim/issues/19579 # the code path below is very hacky, and our zig support is poor yet COOKBOOK_CMAKE_FLAGS+=(-DLUA_GEN_PRG=luajit) export DEPS_BUILD_DIR=$COOKBOOK_SYSROOT/usr if [ "$TARGET" = "$COOKBOOK_HOST_TARGET" ]; then cookbook_cmake # needed to workaround bootstrapping process cp ./lib/libnlua0.so ${COOKBOOK_STAGE}/usr/lib/nvim/ patchelf --replace-needed \ "${COOKBOOK_SYSROOT}/usr/lib/liblpeg.so" \ 'liblpeg.so.1' ${COOKBOOK_STAGE}/usr/lib/nvim/libnlua0.so else # this is a very ugly workaround cookbook_cmake || true cp ${COOKBOOK_TOOLCHAIN}/usr/lib/nvim/libnlua0.so ./lib/libnlua0.so cookbook_cmake fi # Lpeg is absolute path https://github.com/neovim/neovim/issues/23395 patchelf --replace-needed \ "${COOKBOOK_SYSROOT}/usr/lib/liblpeg.so" \ 'liblpeg.so.1' ${COOKBOOK_STAGE}/usr/bin/nvim """ ================================================ FILE: recipes/wip/text/neovim/redox.patch ================================================ diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt index d103b5f4..37d9444e 100644 --- a/runtime/CMakeLists.txt +++ b/runtime/CMakeLists.txt @@ -24,37 +24,6 @@ add_custom_command(OUTPUT ${GENERATED_SYN_VIM} file(GLOB PACKAGES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/runtime/pack/dist/opt/*) -set(GENERATED_PACKAGE_TAGS) -foreach(PACKAGE ${PACKAGES}) - get_filename_component(PACKNAME ${PACKAGE} NAME) - file(GLOB "${PACKNAME}_DOC_FILES" CONFIGURE_DEPENDS ${PACKAGE}/doc/*.txt) - if(${PACKNAME}_DOC_FILES) - file(MAKE_DIRECTORY ${GENERATED_PACKAGE_DIR}/${PACKNAME}) - add_custom_command(OUTPUT "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags" - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${PACKAGE} ${GENERATED_PACKAGE_DIR}/${PACKNAME} - COMMAND $ - -u NONE -i NONE -e --headless -c "helptags doc" -c quit - DEPENDS - nvim_bin - nvim_runtime_deps - WORKING_DIRECTORY "${GENERATED_PACKAGE_DIR}/${PACKNAME}" - ) - - set("${PACKNAME}_DOC_NAMES") - foreach(DF "${${PACKNAME}_DOC_FILES}") - get_filename_component(F ${DF} NAME) - list(APPEND "${PACKNAME}_DOC_NAMES" ${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/${F}) - endforeach() - - install_helper( - FILES ${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags "${${PACKNAME}_DOC_NAMES}" - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/pack/dist/opt/${PACKNAME}/doc) - - list(APPEND GENERATED_PACKAGE_TAGS "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags") - endif() -endforeach() - set(BUILDDOCFILES) foreach(DF ${DOCFILES}) get_filename_component(F ${DF} NAME) @@ -65,8 +34,6 @@ add_custom_command(OUTPUT ${GENERATED_HELP_TAGS} COMMAND ${CMAKE_COMMAND} -E remove_directory doc COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/runtime/doc doc - COMMAND $ - -u NONE -i NONE -e --headless -c "helptags ++t doc" -c quit DEPENDS nvim_bin nvim_runtime_deps @@ -78,7 +45,6 @@ add_custom_target( DEPENDS ${GENERATED_SYN_VIM} ${GENERATED_HELP_TAGS} - ${GENERATED_PACKAGE_TAGS} ) # CMake is painful here. It will create the destination using the user's @@ -87,10 +53,6 @@ add_custom_target( # seems like the best compromise. If we create it, then everyone can see it. # If it's preexisting, leave it alone. -install_helper( - FILES ${GENERATED_HELP_TAGS} ${BUILDDOCFILES} - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/doc) - install_helper( FILES ${GENERATED_SYN_VIM} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim/runtime/syntax/vim) diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt index 4a8fe4c6..55a9ede1 100644 --- a/src/nvim/CMakeLists.txt +++ b/src/nvim/CMakeLists.txt @@ -93,19 +93,6 @@ if(NOT MSVC) endif() # -fstack-protector breaks Mingw-w64 builds -if(NOT MINGW) - check_c_compiler_flag(-fstack-protector-strong HAS_FSTACK_PROTECTOR_STRONG_FLAG) - if(HAS_FSTACK_PROTECTOR_STRONG_FLAG) - target_compile_options(main_lib INTERFACE -fstack-protector-strong) - target_link_libraries(main_lib INTERFACE -fstack-protector-strong) - else() - check_c_compiler_flag(-fstack-protector HAS_FSTACK_PROTECTOR_FLAG) - if(HAS_FSTACK_PROTECTOR_FLAG) - target_compile_options(main_lib INTERFACE -fstack-protector --param ssp-buffer-size=4) - target_link_libraries(main_lib INTERFACE -fstack-protector --param ssp-buffer-size=4) - endif() - endif() -endif() # Compiler specific options if(MSVC) @@ -145,9 +132,6 @@ endif() # Platform specific options if(UNIX) target_link_libraries(main_lib INTERFACE m) - if (NOT CMAKE_SYSTEM_NAME STREQUAL "SunOS") - target_link_libraries(main_lib INTERFACE util) - endif() endif() if(CMAKE_SYSTEM_NAME MATCHES "Windows") diff --git a/src/nvim/main.c b/src/nvim/main.c index 5c1e415c..fa6fa859 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -698,6 +698,12 @@ void getout(int exitval) assert(!ui_client_channel_id); exiting = true; + // parent doesn't notice SIGCHILD + pid_t ppid = getppid(); + if (ppid > 1) { + kill(ppid, SIGKILL); + } + // make sure startuptimes have been flushed time_finish(); diff --git a/src/nvim/os/os_defs.h b/src/nvim/os/os_defs.h index db575e00..b42cee2a 100644 --- a/src/nvim/os/os_defs.h +++ b/src/nvim/os/os_defs.h @@ -28,6 +28,8 @@ #if !defined(NAME_MAX) && defined(_XOPEN_NAME_MAX) # define NAME_MAX _XOPEN_NAME_MAX +#elif !defined(NAME_MAX) +# define NAME_MAX 255 #endif #define BASENAMELEN (NAME_MAX - 5) diff --git a/src/nvim/os/shell.c b/src/nvim/os/shell.c index 7dff8a1b..ebc61542 100644 --- a/src/nvim/os/shell.c +++ b/src/nvim/os/shell.c @@ -880,7 +880,16 @@ static int do_os_system(char **argv, const char *input, size_t len, char **outpu MultiQueue *events = multiqueue_new_child(main_loop.events); proc->events = events; proc->argv = argv; +#ifdef __redox__ + msg_puts("Shell execution is disabled until https://gitlab.redox-os.org/redox-os/redox/-/issues/1762 closed and this workaround removed\n"); + loop_poll_events(&main_loop, 0); + multiqueue_free(events); + return -1; + int status = -1; +#else int status = proc_spawn(proc, has_input, true, true); +#endif + if (status) { loop_poll_events(&main_loop, 0); // Failed, probably 'shell' is not executable. ================================================ FILE: recipes/wip/text/octotype/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/mahlquistj/octotype" [build] template = "cargo" ================================================ FILE: recipes/wip/text/quicknotes/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ollien/quicknotes" [build] template = "cargo" ================================================ FILE: recipes/wip/text/read-it-later/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/World/read-it-later" shallow_clone = true [build] template = "meson" dependencies = [ "gtk4", "libadwaita", "glib", "gdk-pixbuf", ] ================================================ FILE: recipes/wip/text/repgrep/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/acheronfail/repgrep" [build] template = "cargo" ================================================ FILE: recipes/wip/text/revi/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/revi-editor/revi" [build] template = "cargo" ================================================ FILE: recipes/wip/text/rhyolite/recipe.toml ================================================ #TODO not compiled or tested #TODO resource packaging: https://github.com/lockedmutex/rhyolite/blob/master/Cargo.toml#L43 [source] git = "https://github.com/lockedmutex/rhyolite" [build] template = "custom" dependencies = [ "freetype2", "fontconfig", ] script = """ cookbook_cargo --profile release """ ================================================ FILE: recipes/wip/text/ripgrep-all/recipe.toml ================================================ #TODO tokio-tar crate error [source] git = "https://github.com/phiresky/ripgrep-all" [build] template = "cargo" ================================================ FILE: recipes/wip/text/ripwc/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/LuminousToaster/ripwc" [build] template = "cargo" ================================================ FILE: recipes/wip/text/rnote/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/flxzt/rnote/blob/main/BUILDING.md#build-with-meson [source] git = "https://github.com/flxzt/rnote" [build] template = "meson" dependencies = [ "gtk4", "glib", "libadwaita", "libalsa", "libpoppler", "appstream", ] ================================================ FILE: recipes/wip/text/rucola/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Linus-Mussmaecher/rucola" [build] template = "cargo" [package] dependencies = [ "nerd-fonts", ] ================================================ FILE: recipes/wip/text/sd/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/chmln/sd" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/text/sed-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/pegasusheavy/sed-rs" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/text/serpl/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/yassinebridi/serpl" [build] template = "cargo" ================================================ FILE: recipes/wip/text/svgbob/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ivanceras/svgbob" [build] template = "custom" script = """ cookbook_cargo_packages svgbob_cli """ ================================================ FILE: recipes/wip/text/syncat/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/foxfriends/syncat" [build] template = "custom" script = """ cookbook_cargo_packages syncat """ ================================================ FILE: recipes/wip/text/t/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/alecthomas/t" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/text/treemd/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Epistates/treemd" [build] template = "cargo" ================================================ FILE: recipes/wip/text/tylax/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/scipenai/tylax" [build] template = "cargo" ================================================ FILE: recipes/wip/text/typesetter/recipe.toml ================================================ #TODO not compiled or tested #TODO discover minimum dependencies from meson log [source] git = "https://codeberg.org/haydn/typesetter" [build] template = "meson" ================================================ FILE: recipes/wip/text/yes-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/jedisct1/yes-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/text/zed/recipe.toml ================================================ #TODO not compiled or tested #TODO maybe missing dependencies, see https://github.com/zed-industries/zed/blob/main/script/linux#L15 #TODO build the gui ("zed" package) once we have gpu drivers to render vulkan at decent fps # build instructions - https://zed.dev/docs/development/linux [source] git = "https://github.com/zed-industries/zed" [build] template = "custom" dependencies = [ "fontconfig", "libxkbcommon", "openssl1", "zstd", "libgit2", "sqlite3", ] script = """ cookbook_cargo_packages cli mv "${COOKBOOK_STAGE}/usr/bin/cli" "${COOKBOOK_STAGE}/usr/bin/zed-cli" #mv "${COOKBOOK_STAGE}/usr/bin/zed" "${COOKBOOK_STAGE}/usr/bin/zed-editor" """ ================================================ FILE: recipes/wip/text/zee/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/zee-editor/zee" [build] template = "custom" script = """ cookbook_cargo_packages zee """ ================================================ FILE: recipes/wip/time/dispute/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Vinegret43/dispute" [build] template = "cargo" ================================================ FILE: recipes/wip/time/litime/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ikornaselur/litime" [build] template = "cargo" ================================================ FILE: recipes/wip/time/rsclock/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/valebes/rsClock" [build] template = "cargo" ================================================ FILE: recipes/wip/time/timer-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/pando85/timer" [build] template = "custom" script = """ cookbook_cargo_packages timer_core """ ================================================ FILE: recipes/wip/time/tomotroid/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/vadoola/Tomotroid" [build] template = "cargo" ================================================ FILE: recipes/wip/time/trackie/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/beatbrot/trackie" [build] template = "cargo" ================================================ FILE: recipes/wip/time/worktime-tui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Kamyil/work-tuimer" [build] template = "cargo" ================================================ FILE: recipes/wip/time/zman/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/azzamsa/zman" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/aeruginous/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/kevinmatthes/aeruginous-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/ani-cli/recipe.toml ================================================ #TODO move to the "tools" category [source] git = "https://github.com/pystardust/ani-cli" rev = "4a77bca5d95ae755ab5ac129c2db2025feab217b" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp "${COOKBOOK_SOURCE}"/ani-cli "${COOKBOOK_STAGE}"/usr/bin/ani-cli chmod a+x "${COOKBOOK_STAGE}"/usr/bin/ani-cli """ ================================================ FILE: recipes/wip/tools/ani-skip/recipe.toml ================================================ #TODO move to the "tools" category [source] git = "https://github.com/synacktraa/ani-skip" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin mkdir -pv "${COOKBOOK_STAGE}"/home/user/.config/mpv/scripts cp "${COOKBOOK_SOURCE}"/ani-skip "${COOKBOOK_STAGE}"/usr/bin/ani-skip cp "${COOKBOOK_SOURCE}"/skip.lua "${COOKBOOK_STAGE}"/home/user/.config/mpv/scripts chmod a+x "${COOKBOOK_STAGE}"/usr/bin/ani-skip """ ================================================ FILE: recipes/wip/tools/arrow-tools/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/domoritz/arrow-tools" [build] template = "custom" script = """ cookbook_cargo_packages csv2arrow csv2parquet json2arrow json2parquet """ ================================================ FILE: recipes/wip/tools/artem/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/FineFindus/artem" [build] template = "custom" dependencies = [ "openssl1", ] script = """ export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export OPENSSL_STATIC="true" cookbook_cargo """ ================================================ FILE: recipes/wip/tools/ast-grep/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/ast-grep/ast-grep" [build] template = "custom" script = """ cookbook_cargo_packages ast-grep """ ================================================ FILE: recipes/wip/tools/astc-encoder/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/ARM-software/astc-encoder/blob/main/Docs/Building.md#macos-and-linux-using-make [source] git = "https://github.com/ARM-software/astc-encoder" rev = "aeece2f609db959d1c5e43e4f00bd177ea130575" [build] template = "cmake" ================================================ FILE: recipes/wip/tools/astyle/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://astyle.sourceforge.net/install.html [source] tar = "https://sourceforge.net/projects/astyle/files/astyle/astyle%203.4/astyle-3.4.10.tar.bz2/download" [build] template = "cmake" ================================================ FILE: recipes/wip/tools/atm-cli/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/allthemusicllc/atm-cli" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/atuin/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/atuinsh/atuin" [build] template = "custom" script = """ cookbook_cargo_packages atuin """ ================================================ FILE: recipes/wip/tools/backhand/recipe.toml ================================================ #TODO missing script to properly move the binary [source] git = "https://github.com/wcampbell0x2a/backhand" [build] template = "custom" script = """ cookbook_cargo_packages backhand """ ================================================ FILE: recipes/wip/tools/bacup/recipe.toml ================================================ #TODO tokio-tar crate error #TODO create a service [source] git = "https://github.com/galeone/bacup" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/bartib/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/nikolassv/bartib" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/battop/recipe.toml ================================================ #TODO atty crate error (after cargo update) [source] git = "https://github.com/svartalf/rust-battop" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/bdt/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/datafusion-contrib/bdt" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/binserve/recipe.toml ================================================ #TODO compiled but not tested (after a patch on the ring crate) [source] git = "https://github.com/mufeedvh/binserve" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/birdy/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/kakoc/birdy" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/blockish-caca/recipe.toml ================================================ #TODO make libcaca work [source] git = "https://github.com/yazgoo/blockish-caca" [build] template = "cargo" dependencies = [ "libcaca", ] ================================================ FILE: recipes/wip/tools/broot/recipe.toml ================================================ #TODO nix crate compilation error [source] git = "https://github.com/Canop/broot" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/busybox/recipe.toml ================================================ #TODO missing script for GNU Make, see https://www.busybox.net/FAQ.html#configure #TODO cross-compilation - https://www.busybox.net/FAQ.html#build [source] tar = "https://www.busybox.net/downloads/busybox-1.36.1.tar.bz2" [build] template = "custom" ================================================ FILE: recipes/wip/tools/bvr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Avarel/bvr" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/byteblitz/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/noahra/byteblitz" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/caesium/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Lymphatus/caesium-clt" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/caligula/recipe.toml ================================================ #TODO process_path crate error [source] git = "https://github.com/ifd3f/caligula" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/carbonyl/recipe.toml ================================================ #TODO make nss work #TODO require Chromium building [source] git = "https://github.com/fathyb/carbonyl" [build] template = "cargo" dependencies = [ "nss", "fontconfig", "expat", ] ================================================ FILE: recipes/wip/tools/cb/recipe.toml ================================================ #TODO discover how to cross-compile: https://github.com/yaa110/cb#build-manually [source] git = "https://github.com/yaa110/cb" [build] template = "custom" ================================================ FILE: recipes/wip/tools/cfait/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://codeberg.org/trougnouf/cfait" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/checkpwn/recipe.toml ================================================ #TODO compiled but not tested (after patched ring crate) [source] git = "https://github.com/brycx/checkpwn" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/choose/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/theryangeary/choose" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/chromazone/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/matze/chromazone" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/clipcat/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/xrelkd/clipcat" [build] template = "custom" script = """ cookbook_cargo_packages clipcatd clipcatctl clipcat-menu """ ================================================ FILE: recipes/wip/tools/clipshare-desktop/recipe.toml ================================================ #TODO make the xdotool dependency work [source] git = "https://github.com/RastislavKish/clipshare" [build] template = "custom" dependencies = [ "xdotool", ] script = """ cookbook_cargo_packages desktop_client """ ================================================ FILE: recipes/wip/tools/clipshare-server/recipe.toml ================================================ #TODO probably wrong script, see https://github.com/RastislavKish/clipshare#building [source] git = "https://github.com/RastislavKish/clipshare" [build] template = "custom" dependencies = [ "xdotool", ] script = """ cookbook_cargo_packages server """ ================================================ FILE: recipes/wip/tools/clog-cli/recipe.toml ================================================ #TODO rustc-serialize crate error (after cargo update) [source] git = "https://github.com/clog-tool/clog-cli" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/conceal/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/TD-Sky/conceal" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/conserve/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/sourcefrog/conserve" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/counts/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/nnethercote/counts" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/cpuminer-opt/recipe.toml ================================================ #TODO maybe wrong template, see https://github.com/JayDDee/cpuminer-opt/wiki/Compiling-from-source #TODO fix jansson dependency [source] git = "https://github.com/JayDDee/cpuminer-opt" rev = "9d3a46c3551655f862db74a195e769fe86266903" [build] template = "configure" dependencies = [ "curl", "jansson", "libgmp", "zlib", ] ================================================ FILE: recipes/wip/tools/crunchy-cli/recipe.toml ================================================ #TODO fs2 crate error [source] git = "https://github.com/crunchy-labs/crunchy-cli" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/cube-timer/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/paarthmadan/cube" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/cute/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/PThorpe92/CuTE" [build] template = "custom" dependencies = [ "openssl3", ] script = """ DYNAMIC_INIT cookbook_cargo """ ================================================ FILE: recipes/wip/tools/czkawka/recipe.toml ================================================ #TODO Compiled but not tested [source] git = "https://github.com/qarmin/czkawka" [build] template = "custom" script = """ cookbook_cargo_packages czkawka_cli """ ================================================ FILE: recipes/wip/tools/daktilo/recipe.toml ================================================ #TODO rdev crate error [source] git = "https://github.com/orhun/daktilo" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/dead-ringer/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ztroop/dead-ringer" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/delta/recipe.toml ================================================ #TODO make the "less" dependency work [source] git = "https://github.com/dandavison/delta" [build] template = "custom" dependencies = [ "less", ] script = """ cookbook_cargo_packages git-delta """ ================================================ FILE: recipes/wip/tools/desed/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/SoptikHa2/desed" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/dfm/recipe.toml ================================================ #TODO port to redox [source] git = "https://github.com/chasinglogic/dfm" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/diffr/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/mookid/diffr" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/diffutils-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/uutils/diffutils" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/diffy/recipe.toml ================================================ #TODO add a command to properly move the executable #TODO compiled but not tested [source] git = "https://github.com/bmwill/diffy" [build] template = "custom" script = """ cookbook_cargo_packages diffy """ ================================================ FILE: recipes/wip/tools/dim/recipe.toml ================================================ #TODO missing script for building, see https://github.com/Dusk-Labs/dim#running-from-source #TODO probably missing dependencies [source] git = "https://github.com/Dusk-Labs/dim" [build] template = "custom" dependencies = [ "sqlite3", "openssl1", "ffmpeg6", ] ================================================ FILE: recipes/wip/tools/dirscan/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/orf/dirscan" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/diskonaut/recipe.toml ================================================ #TODO outdated redox_syscall crate (after cargo update) [source] git = "https://github.com/imsnif/diskonaut" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/dispatch/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/brianyu28/dispatch" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/dog-dns/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/ogham/dog" [build] template = "custom" dependencies = [ "openssl1", ] script = """ export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export OPENSSL_STATIC="true" cookbook_cargo """ ================================================ FILE: recipes/wip/tools/dotr/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/dpc/dotr" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/dotter/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/SuperCuber/dotter" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/dply/recipe.toml ================================================ #TODO jemalloc-sys crate error [source] git = "https://github.com/vincev/dply-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/dprint/recipe.toml ================================================ #TODO region crate error [source] git = "https://github.com/dprint/dprint" [build] template = "custom" script = """ cookbook_cargo_packages dprint """ ================================================ FILE: recipes/wip/tools/dra-cla/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/CoolnsX/dra-cla" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp "${COOKBOOK_SOURCE}"/dra-cla "${COOKBOOK_STAGE}"/usr/bin/dra-cla chmod a+x "${COOKBOOK_STAGE}"/usr/bin/dra-cla """ ================================================ FILE: recipes/wip/tools/dua/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Byron/dua-cli" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/dui/recipe.toml ================================================ #TODO Compiled but not tested [source] git = "https://gitlab.com/GregOwen/dui" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/dura/recipe.toml ================================================ #TODO make libgit2 dependency work [source] git = "https://github.com/tkellogg/dura" [build] template = "cargo" dependencies = [ "libgit2", ] ================================================ FILE: recipes/wip/tools/dust/recipe.toml ================================================ #TODO working but don't draw the size bars [source] git = "https://github.com/bootandy/dust" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/dutree/recipe.toml ================================================ #TODO program source code error (after cargo update) [source] git = "https://github.com/nachoparker/dutree" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/dysk/recipe.toml ================================================ #TODO nix crate error [source] git = "https://github.com/Canop/dysk" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/emplace/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/tversteeg/emplace" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/enchant/recipe.toml ================================================ #TODO can't find glib [source] tar = "https://github.com/AbiWord/enchant/releases/download/v2.6.3/enchant-2.6.3.tar.gz" [build] template = "configure" dependencies = [ "glib", "pcre", ] ================================================ FILE: recipes/wip/tools/envio/recipe.toml ================================================ #TODO require rustc 1.75 or newer [source] git = "https://github.com/envio-cli/envio" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/epub2txt/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/quininer/epub2txt" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/erdtree/recipe.toml ================================================ #TODO program source code error [source] git = "https://github.com/solidiquis/erdtree" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/espanso/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://espanso.org/docs/install/linux/#x11-compile [source] git = "https://github.com/espanso/espanso" [build] template = "custom" dependencies = [ "libxkbcommon", "dbus", "wxwidgets-gtk3", "openssl3", "libx11", "libxtst", ] script = """ DYNAMIC_INIT package=espanso "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --package "${package}" \ --release \ --no-default-features \ --features=vendored-tls,modulo mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${package}" \ "${COOKBOOK_STAGE}/usr/bin/${package}" """ ================================================ FILE: recipes/wip/tools/eureka/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/simeg/eureka" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/eva/recipe.toml ================================================ #TODO rustyline crate error [source] git = "https://github.com/nerdypepper/eva" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/exa/recipe.toml ================================================ #TODO outdated redox_syscall crate (after cargo update) [source] git = "https://github.com/ogham/exa" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/exhaust/recipe.toml ================================================ #TODO outdated redox_syscall crate [source] git = "https://github.com/heyrict/exhaust" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/exuberant-ctags/recipe.toml ================================================ #TODO compilation error - permission denied [source] tar = "https://sourceforge.net/projects/ctags/files/ctags/5.8/ctags-5.8.tar.gz/download" [build] template = "configure" ================================================ FILE: recipes/wip/tools/eza/recipe.toml ================================================ #TODO outdated redox_syscall crate [source] git = "https://github.com/eza-community/eza" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/fclones/recipe.toml ================================================ #TODO file-owner crate error [source] git = "https://github.com/pkolaczk/fclones" [build] template = "custom" script = """ cookbook_cargo_packages fclones """ ================================================ FILE: recipes/wip/tools/felix/recipe.toml ================================================ #TODO replace the terminal prompt with nothing on execution [source] git = "https://github.com/kyoheiu/felix" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/fennec/recipe.toml ================================================ #TODO update ring version (after cargo update) [source] git = "https://github.com/AbdulRhmanAlfaifi/Fennec" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/ffizer/recipe.toml ================================================ #TODO libssh2-sys crate error [source] git = "https://github.com/ffizer/ffizer" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo --features cli """ ================================================ FILE: recipes/wip/tools/findutils-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/uutils/findutils" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/flameshot/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from cmake log # build instructions: https://flameshot.org/docs/installation/source-code/#compilation [source] git = "https://github.com/flameshot-org/flameshot" branch = "v13.3.0" shallow_clone = true [build] template = "cmake" cmakeflags = [ "-DDISABLE_UPDATE_CHECKER=ON", "-DBUILD_STATIC_LIBS=OFF", ] #dependencies = [ # "qt5-base", # "qt5-tools", # "qt5-svg", #] ================================================ FILE: recipes/wip/tools/flowtime/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/Diego-Ivan/Flowtime#building-from-source [source] git = "https://github.com/Diego-Ivan/Flowtime" rev = "2cb1160f7f61ec0a6add292deca38a3150336f03" [build] template = "meson" dependencies = [ "gtk4", "libxml2", "libadwaita", ] ================================================ FILE: recipes/wip/tools/fselect/recipe.toml ================================================ #TODO make the mimalloc dependency work [source] git = "https://github.com/jhspetersson/fselect" [build] template = "cargo" dependencies = [ "mimalloc", ] ================================================ FILE: recipes/wip/tools/fuc/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/SUPERCILEX/fuc" [build] template = "custom" script = """ cookbook_cargo_packages cpz rmz """ ================================================ FILE: recipes/wip/tools/fuga/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/liebe-magi/fuga" [build] template = "custom" script = """ cookbook_cargo_packages fuga """ ================================================ FILE: recipes/wip/tools/funzzy/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/cristianoliveira/funzzy" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/fzf-make/recipe.toml ================================================ #TODO ahash and ioctl-rs crates error [source] git = "https://github.com/kyu08/fzf-make" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/gengo/recipe.toml ================================================ #TODO missing script to properly move the binary [source] git = "https://github.com/spenserblack/gengo" [build] template = "custom" script = """ cookbook_cargo_packages gengo """ ================================================ FILE: recipes/wip/tools/germ/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/volks73/germ" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/gifski/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ImageOptim/gifski" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/gnu-radio/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://wiki.gnuradio.org/index.php?title=LinuxInstall#For_GNU_Radio_3.10,_3.9,_and_Main_Branch # probably missing dependencies, see https://wiki.gnuradio.org/index.php?title=UbuntuInstall#Install_Dependencies [source] git = "https://github.com/gnuradio/gnuradio" rev = "bd928539d9eaa73736f8381cd2e60953a0eb8cb8" [build] template = "cmake" dependencies = [ "volk", "boost", "libgmp", "fftw", "sdl1", "qt5-base", "libusb", "libevdev", ] ================================================ FILE: recipes/wip/tools/gnuplot/recipe.toml ================================================ #TODO determine dependencies [source] tar = "https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.10/gnuplot-5.4.10.tar.gz/download" [build] template = "configure" ================================================ FILE: recipes/wip/tools/goldboot/recipe.toml ================================================ #TODO use a data type that don't download the private git submodules [source] git = "https://github.com/fossable/goldboot" [build] template = "custom" script = """ cookbook_cargo_packages goldboot """ ================================================ FILE: recipes/wip/tools/goxel/recipe.toml ================================================ #TODO missing script for the SCons, see https://github.com/guillaumechereau/goxel#linuxbsd [source] git = "https://github.com/guillaumechereau/goxel" rev = "4cdf7bc49cbfd87e60692f49483ea60271729845" [build] template = "custom" dependencies = [ "gtk3", "glfw3", ] ================================================ FILE: recipes/wip/tools/gpg-tui/recipe.toml ================================================ #TODO make dependencies work [source] git = "https://github.com/orhun/gpg-tui" [build] template = "cargo" dependencies = [ "gnupg", "gpgme", "libgpg-error", ] ================================================ FILE: recipes/wip/tools/gphoto2/recipe.toml ================================================ #TODO make libgphoto2 work [source] tar = "https://sourceforge.net/projects/gphoto/files/gphoto/2.5.28/gphoto2-2.5.28.tar.xz/download" [build] template = "configure" dependencies = [ "libgphoto2", ] ================================================ FILE: recipes/wip/tools/gping/recipe.toml ================================================ #TODO program source code error [source] git = "https://github.com/orf/gping" [build] template = "custom" script = """ cookbook_cargo_packages gping """ ================================================ FILE: recipes/wip/tools/gptman/recipe.toml ================================================ #TODO outdated redox_syscall crate [source] git = "https://github.com/rust-disk-partition-management/gptman" [build] template = "custom" script = """ cookbook_cargo --features cli """ ================================================ FILE: recipes/wip/tools/gptube-cli/recipe.toml ================================================ #TODO Seems to search for yt-dlp, see https://github.com/ZmoleCristian/gptube-cli/blob/main/Makefile [source] git = "https://github.com/ZmoleCristian/gptube-cli" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/grex/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/pemistahl/grex" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/groff/recipe.toml ================================================ #TODO compilation error - port fseterr.c [source] tar = "https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/tools/guix/recipe.toml ================================================ #TODO fix libgcrypt #TODO maybe missing dependencies, see https://guix.gnu.org/manual/en/html_node/Requirements.html [source] tar = "https://ftpmirror.gnu.org/gnu/guix/guix-1.4.0.tar.gz" [build] template = "configure" dependencies = [ "libgcrypt", "sqlite3", ] ================================================ FILE: recipes/wip/tools/halp/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/orhun/halp" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/hawkeye/recipe.toml ================================================ #TODO compiled but not tested #TODO add a command to properly move the executable [source] git = "https://github.com/korandoru/hawkeye" [build] template = "custom" script = """ cookbook_cargo_packages hawkeye hawkeye-fmt """ ================================================ FILE: recipes/wip/tools/haylxon/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/pwnwriter/haylxon" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/himalaya/recipe.toml ================================================ #TODO xdg-home crate error (after a patch on ring) [source] git = "https://github.com/soywod/himalaya" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/hired/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/sidju/hired" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/hoard/recipe.toml ================================================ #TODO aws-lc-sys crate error [source] git = "https://github.com/Hyde46/hoard" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/horsetab/recipe.toml ================================================ #TODO rdev crate error [source] git = "https://github.com/ChrisVilches/horsetab" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/humphrey/recipe.toml ================================================ #TODO Bash can't detect the "--all-features" flag on the script [source] git = "https://github.com/w-henderson/Humphrey" [build] template = "custom" script = """ binary=humphrey "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --bin "${binary}" \ --release --all-features mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${binary}" \ "${COOKBOOK_STAGE}/usr/bin/${binary}" """ ================================================ FILE: recipes/wip/tools/hwatch/recipe.toml ================================================ #TODO async-io crate error (after cargo update) [source] git = "https://github.com/blacknon/hwatch" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/imager/recipe.toml ================================================ #TODO webp-dev crate error [source] git = "https://github.com/imager-io/imager" [build] template = "custom" dependencies = [ "xz", "openssl1", ] script = """ cookbook_cargo_packages imager """ ================================================ FILE: recipes/wip/tools/inlyne/recipe.toml ================================================ #TODO ucred::get_peer_cred #TODO nix::sys::socket #TODO cmsg_space! [source] git = "https://github.com/trimental/inlyne" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/innernet-cli/recipe.toml ================================================ #TODO shared crate error [source] git = "https://github.com/tonarino/innernet" [build] template = "custom" script = """ cookbook_cargo_packages client """ ================================================ FILE: recipes/wip/tools/innernet-server/recipe.toml ================================================ #TODO shared crate error [source] git = "https://github.com/tonarino/innernet" [build] template = "custom" dependencies = [ "sqlite3", ] script = """ cookbook_cargo_packages server """ ================================================ FILE: recipes/wip/tools/intelli-shell/recipe.toml ================================================ #TODO OpenSSL error [source] git = "https://github.com/lasantosr/intelli-shell" [build] template = "custom" dependencies = [ "openssl1", ] script = """ export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export OPENSSL_STATIC="true" cookbook_cargo """ ================================================ FILE: recipes/wip/tools/interaction-calculus/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/VictorTaelin/Interaction-Calculus" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/intermodal/recipe.toml ================================================ #TODO termios crate error [source] git = "https://github.com/casey/intermodal" [build] template = "custom" script = """ cookbook_cargo mv "${COOKBOOK_STAGE}/usr/bin/imdl" "${COOKBOOK_STAGE}/usr/bin/intermodal" """ ================================================ FILE: recipes/wip/tools/itstool/recipe.toml ================================================ #TODO compiling, not tested [source] tar = "http://files.itstool.org/itstool/itstool-2.0.7.tar.bz2" [build] template = "configure" ================================================ FILE: recipes/wip/tools/jirust/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/moali87/jirust" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/jless/recipe.toml ================================================ #TODO outdated redox_syscall crate (after cargo update) [source] git = "https://github.com/PaulJuliusMartinez/jless" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/joshuto/recipe.toml ================================================ #TODO open and trash crates error [source] git = "https://github.com/kamiyaa/joshuto" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/jql/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/yamafaktory/jql" [build] template = "custom" script = """ cookbook_cargo_packages jql """ ================================================ FILE: recipes/wip/tools/kami/recipe.toml ================================================ #TODO termsize crate error (after cargo update) #TODO require bat and mpv at runtime [source] git = "https://github.com/mrfluffy-dev/kami" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/kanata/recipe.toml ================================================ #TODO kanata-parser crate error [source] git = "https://github.com/jtroo/kanata" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/kbt/recipe.toml ================================================ #TODO outdated redox_syscall crate (after cargo update) [source] git = "https://github.com/bloznelis/kbt" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/kodi/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md#4-build-kodi # maybe missing dependencies, see https://archlinux.org/packages/extra/x86_64/kodi/ [source] git = "https://github.com/xbmc/xbmc" rev = "5f418d0b133535c6675154688ac7144e34f4d436" [build] template = "cmake" cmakeflags = [ "-DCORE_PLATFORM_NAME=wayland", "-DAPP_RENDER_SYSTEM=gl", ] dependencies = [ "libass", "libbluray", "mesa", "bzip2", "curl", "dbus", "libflac", "fontconfig", "libfmt", "freetype2", "fribidi", "libgcrypt", "libgif", "glew", "gnutls3", "mesa-glu", "libgpg-error", "libjpeg", "libogg", "pcre", "libpng", "openssl1", "libtiff", "sqlite3", "libevdev", "libunistring", "libva", "libvorbis", "libxkbcommon", "libuuid", "libxslt", "pipewire", ] ================================================ FILE: recipes/wip/tools/lapce/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/lapce/lapce" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/lazy-etherscan/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/woxjro/lazy-etherscan" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/lcs-image-diff/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/bokuweb/lcs-image-diff-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/lddtree-rs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/messense/lddtree-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/legdur/recipe.toml ================================================ #TODO the repository can't be cloned because it's using the Mercurial now? what doesn't makes sense #TODO camino crate error [source] git = "https://hg.sr.ht/~cyplo/legdur" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/lemmeknow/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/swanandx/lemmeknow" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/less/recipe.toml ================================================ #TODO waiting termcap fix [source] tar = "https://www.greenwoodsoftware.com/less/less-633.tar.gz" [build] template = "configure" dependencies = [ "termcap", "libvterm", ] ================================================ FILE: recipes/wip/tools/lines-rs/recipe.toml ================================================ #TODO jemalloc-sys crate error [source] git = "https://github.com/ryanfowler/lines" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/lineselect/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/urbanogilson/lineselect" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/logss/recipe.toml ================================================ #TODO broken and don't exit [source] git = "https://github.com/todoesverso/logss" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/lowcharts/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/juan-leon/lowcharts" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/lucid/recipe.toml ================================================ #TODO nix crate error [source] git = "https://github.com/sharkdp/lucid" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/mandy/recipe.toml ================================================ #TODO libssh2-sys crate error [source] git = "https://github.com/angeldollface/mandy" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo_packages mandy-bin """ ================================================ FILE: recipes/wip/tools/mangohud/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/flightlessmango/MangoHud#installation---build-from-source [source] tar = "https://github.com/flightlessmango/MangoHud/releases/download/v0.8.1/MangoHud-v0.8.1-Source.tar.xz" [build] template = "meson" mesonflags = [ "-Dwith_xnvctrl=disabled", "-Dwith_dbus=disabled", ] dependencies = [ "mesa-x11", "libx11", #"libxkbcommon", ] ================================================ FILE: recipes/wip/tools/mask/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/jacobdeichert/mask" [build] template = "custom" script = """ cookbook_cargo_packages mask """ ================================================ FILE: recipes/wip/tools/matui/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/pkulak/matui" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/maze-tui/recipe.toml ================================================ #TODO go to the "maze_progs" folder and build "run_tui" and "run_maze" [source] git = "https://github.com/agl-alexglopez/maze-tui" [build] template = "custom" ================================================ FILE: recipes/wip/tools/mcfly/recipe.toml ================================================ #TODO program source code error [source] git = "https://github.com/cantino/mcfly" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/menyoki/recipe.toml ================================================ #TODO not compiled or tested # if the x11 backend don't work read this: https://github.com/orhun/menyoki/blob/master/IMPLEMENTATION.md#implementing-for-other-platforms [source] git = "https://github.com/orhun/menyoki" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/mhv/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/jgardona/mhv" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/minmon/recipe.toml ================================================ #TODO port to redox [source] git = "https://github.com/flo-at/minmon" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/mkisofs-rs/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/marysaka/mkisofs-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/mprocs/recipe.toml ================================================ #TODO termios crates error (after cargo update) [source] git = "https://github.com/pvolok/mprocs" [build] template = "custom" script = """ cookbook_cargo_packages mprocs """ ================================================ FILE: recipes/wip/tools/navi/recipe.toml ================================================ #TODO fs_at and libc crate errors (after cargo update) [source] git = "https://github.com/denisidoro/navi" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/nickel/recipe.toml ================================================ #TODO rustyline crate error [source] git = "https://github.com/tweag/nickel" [build] template = "custom" script = """ cookbook_cargo_packages nickel-lang-cli """ ================================================ FILE: recipes/wip/tools/nix/recipe.toml ================================================ #TODO make dependencies work [source] git = "https://github.com/NixOS/nix" rev = "50f8f1c8bc019a4c0fd098b9ac674b94cfc6af0d" [build] template = "custom" dependencies = [ "libbrotili", "openssl1", "curl", "sqlite3", "libeditline", "boost", "libsodium", "libcpuid", ] script = """ autoreconf -vfi COOKBOOK_CONFIGURE_FLAGS+=( --disable-tests ) cookbook_configure """ ================================================ FILE: recipes/wip/tools/nomad/recipe.toml ================================================ #TODO sys-info crate error #TODO require Nerd Fonts [source] git = "https://github.com/JosephLai241/nomad" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/nomino/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/yaa110/nomino" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/notnow/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/d-e-s-o/notnow" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/objdiff/recipe.toml ================================================ #TODO can't find the fontconfig dependency [source] git = "https://github.com/encounter/objdiff" [build] template = "custom" dependencies = [ "openssl1", "fontconfig", ] script = """ cookbook_cargo_packages objdiff-gui objdiff-cli """ ================================================ FILE: recipes/wip/tools/odilia/recipe.toml ================================================ #TODO xdg-home crate error (after cargo update) [source] git = "https://github.com/odilia-app/odilia" [build] template = "custom" script = """ cookbook_cargo_packages odilia """ ================================================ FILE: recipes/wip/tools/omega/recipe.toml ================================================ #TODO missing headers [source] git = "https://github.com/nwrenger/omega" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/oranda/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/axodotdev/oranda" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/orchaldir-texture-generator/recipe.toml ================================================ #TODO Compiled but not tested [source] git = "https://github.com/Orchaldir/texture_generator" [build] template = "custom" script = """ cookbook_cargo_packages texture_generator """ ================================================ FILE: recipes/wip/tools/pdbview/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/landaire/pdbview" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/pdu/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/KSXGitHub/parallel-disk-usage" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/pipr/recipe.toml ================================================ #TODO update mio to 0.8 (after cargo update) [source] git = "https://github.com/Elkowar/pipr" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/pixcil/recipe.toml ================================================ #TODO compiled but not tested #TODO missing script to properly move the binary #TODO require WebAssembly [source] git = "https://github.com/sile/pixcil" [build] template = "custom" script = """ cookbook_cargo_packages pixcil """ ================================================ FILE: recipes/wip/tools/pixelsort/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Void-ux/pixelsort" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/planify/recipe.toml ================================================ #TODO not compiled or tested #TODO determine minimum dependencies from meson log [source] git = "https://github.com/alainm23/planify" rev = "v4.17.0" [build] template = "meson" mesonflags = [ "-Dwebkit=false", "-Dportal=false", "-Devolution=false", ] ================================================ FILE: recipes/wip/tools/pomky/recipe.toml ================================================ #TODO waiting gdk-pixbuf conversion to TOML [source] git = "https://github.com/developomp/pomky" [build] template = "cargo" dependencies = [ "glib", "pcre", "gdk-pixbuf", ] ================================================ FILE: recipes/wip/tools/porsmo/recipe.toml ================================================ #TODO xdg-home crate error [source] git = "https://github.com/ColorCookie-dev/porsmo" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/posixutils-rs/recipe.toml ================================================ #TODO require a customized Cargo script [source] git = "https://github.com/rustcoreutils/posixutils-rs" [build] template = "custom" ================================================ FILE: recipes/wip/tools/potrace/recipe.toml ================================================ #TODO compiled but not tested [source] tar = "https://potrace.sourceforge.net/download/1.16/potrace-1.16.tar.gz" [build] template = "configure" dependencies = [ "zlib", ] ================================================ FILE: recipes/wip/tools/presenterm/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/mfontanini/presenterm" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/pueue/recipe.toml ================================================ #TODO pueue_lib crate error (after cargo update and a patch on ring) [source] git = "https://github.com/Nukesor/pueue" [build] template = "custom" script = """ cookbook_cargo_packages pueue """ ================================================ FILE: recipes/wip/tools/qv/recipe.toml ================================================ #TODO deltalake crate error (after a patch on ring) [source] git = "https://github.com/timvw/qv" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/rana/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/grunch/rana" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/rargs/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/lotabout/rargs" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/rclone/recipe.toml ================================================ #TODO missing script for Go, see https://rclone.org/install/#source [source] tar = "https://github.com/rclone/rclone/releases/download/v1.64.2/rclone-v1.64.2.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/tools/restic/recipe.toml ================================================ #TODO missing script for Go, see https://restic.readthedocs.io/en/stable/020_installation.html#from-source #TODO maybe needs to be patched [source] tar = "https://github.com/restic/restic/releases/download/v0.16.2/restic-0.16.2.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/tools/rfz/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/MangoTzara/rfz" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/rip/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/nivekuil/rip" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/ripasso/recipe.toml ================================================ #TODO make libgpg-error dependency work [source] git = "https://github.com/cortex/ripasso" [build] template = "custom" dependencies = [ "openssl1", "libgpg-error", ] script = """ cookbook_cargo_packages ripasso-cursive """ ================================================ FILE: recipes/wip/tools/ripsecrets/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/sirwart/ripsecrets" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/rix/recipe.toml ================================================ #TODO compilation error [source] git = "https://github.com/urbas/rix" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/rnr/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/ismaelgv/rnr" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/rq/recipe.toml ================================================ #TODO record-query crate error (after cargo update) [source] git = "https://github.com/dflemstr/rq" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/ruke/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/kauefraga/ruke" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/run/recipe.toml ================================================ #TODO fix the script [source] git = "https://github.com/LyonSyonII/run" [build] template = "custom" script = """ cd "${COOKBOOK_SOURCE}"/cli cookbook_cargo """ ================================================ FILE: recipes/wip/tools/ruplacer/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/your-tools/ruplacer" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/rusty/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/zahidkhawaja/rusty" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/rusty-krab-manager/recipe.toml ================================================ #TODO xdg-home and nix crates error (after cargo update) [source] git = "https://github.com/aryakaul/rusty-krab-manager" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/rusync/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/your-tools/rusync" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/sad/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ms-jpq/sad" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/sam/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) #TODO add a command to properly move the executable [source] git = "https://github.com/r-zenine/sam" [build] template = "custom" script = """ cookbook_cargo_packages sam-cli """ ================================================ FILE: recipes/wip/tools/scribus/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://wiki.scribus.net/canvas/Official:Compile_with_CMake [source] tar = "https://sourceforge.net/projects/scribus/files/scribus/1.6.4/scribus-1.6.4.tar.xz/download" [build] template = "custom" dependencies = [ "qt4", "cairo", "freetype2", "libxml2", "liblcms", "libtiff", "libjpeg", "fontconfig", ] ================================================ FILE: recipes/wip/tools/scrying/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/nccgroup/scrying" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/shd/recipe.toml ================================================ #TODO make the smartmontools dependency work [source] git = "https://github.com/alttch/shd" [build] template = "cargo" dependencies = [ "smartmontools", ] ================================================ FILE: recipes/wip/tools/shellfirm/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/kaplanelad/shellfirm" [build] template = "custom" script = """ cookbook_cargo_packages shellfirm """ ================================================ FILE: recipes/wip/tools/shokunin/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/sebastienrousseau/shokunin" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/sig/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ynqa/sig" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/sigi/recipe.toml ================================================ #TODO rustyline crate error [source] git = "https://github.com/sigi-cli/sigi" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/simplemoji/recipe.toml ================================================ #TODO require the Noto Color Emoji font, see https://fonts.google.com/noto/specimen/Noto+Color+Emoji [source] git = "https://github.com/SergioRibera/Simplemoji" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/skim/recipe.toml ================================================ #TODO tuikit crate error (after cargo update) [source] git = "https://github.com/lotabout/skim" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/skyspell/recipe.toml ================================================ #TODO missing an enchant backend and dictionary, see https://github.com/your-tools/skyspell#installation [source] git = "https://github.com/your-tools/skyspell" [build] template = "custom" dependencies = [ "sqlite3", "enchant", ] script = """ cookbook_cargo_packages skyspell """ ================================================ FILE: recipes/wip/tools/smartmontools/recipe.toml ================================================ #TODO compilation error [source] tar = "https://sourceforge.net/projects/smartmontools/files/smartmontools/7.3/smartmontools-7.3.tar.gz/download" [build] template = "configure" ================================================ FILE: recipes/wip/tools/snappy-rs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/BurntSushi/rust-snappy" [build] template = "custom" script = """ cookbook_cargo_packages szip """ ================================================ FILE: recipes/wip/tools/spacer/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/samwho/spacer" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/spidey/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/kdwk/Spidey" [build] template = "meson" dependencies = [ "gtk4", "glib", ] ================================================ FILE: recipes/wip/tools/sprinkles/recipe.toml ================================================ #TODO Compiled but not tested [source] git = "https://github.com/KhalilOuali/sprinkles" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/succeed2ban-tui/recipe.toml ================================================ #TODO libsystemd crate error (needs porting) [source] git = "https://github.com/J-Bockhofer/succeed2ban-tui" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/sued/recipe.toml ================================================ #TODO not compiled or tested # customization: https://codeberg.org/AeriaVelocity/sued#configuration [source] git = "https://codeberg.org/AeriaVelocity/sued" [build] template = "cargo" cargoflags = ["--features=repl,startup,history"] ================================================ FILE: recipes/wip/tools/svg2pdf/recipe.toml ================================================ #TODO compiled but not tested #TODO missing script to properly move the binary [source] git = "https://github.com/typst/svg2pdf" [build] template = "custom" script = """ cookbook_cargo_packages svg2pdf-cli """ ================================================ FILE: recipes/wip/tools/swc/recipe.toml ================================================ #TODO compiled but not tested #TODO missing script to properly move the binary [source] git = "https://github.com/swc-project/swc" [build] template = "custom" script = """ cookbook_cargo_packages swc_cli_impl """ ================================================ FILE: recipes/wip/tools/t-rec/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/sassman/t-rec-rs" [build] template = "custom" dependencies = [ "imagemagick", ] script = """ DYNAMIC_INIT cookbook_cargo """ ================================================ FILE: recipes/wip/tools/tailspin/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/bensadeh/tailspin" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/tarlz/recipe.toml ================================================ #TODO missing header files [source] tar = "https://download.savannah.gnu.org/releases/lzip/tarlz/tarlz-0.25.tar.lz" [build] template = "custom" dependencies = [ "lzlib", ] script = """ cookbook_configure """ ================================================ FILE: recipes/wip/tools/task-maker-rs/recipe.toml ================================================ #TODO tabox crate error [source] git = "https://github.com/edomora97/task-maker-rust" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/taskserver/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://taskwarrior.org/download/#quick-setup [source] tar = "https://github.com/GothenburgBitFactory/taskserver/releases/download/v1.1.0/taskd-1.1.0.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/tools/taskwarrior/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://taskwarrior.org/download/#quick-setup [source] tar = "https://github.com/GothenburgBitFactory/taskwarrior/releases/download/v2.6.2/task-2.6.2.tar.gz" [build] template = "cmake" ================================================ FILE: recipes/wip/tools/taskwarrior-tui/recipe.toml ================================================ #TODO rustyline crate error (after cargo update) [source] git = "https://github.com/kdheepak/taskwarrior-tui" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/tauno-monitor/recipe.toml ================================================ #TODO not compiled or tested # lacking build instructions [source] git = "https://github.com/taunoe/tauno-monitor" rev = "fecab98710bf6918141f34709f4ee1a055413056" [build] template = "meson" ================================================ FILE: recipes/wip/tools/tealdeer/recipe.toml ================================================ #TODO program source code error (after cargo update) [source] git = "https://github.com/dbrgn/tealdeer" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/teip/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/greymd/teip" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/thwack/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/yykamei/thwack" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/tin-summer/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/vmchale/tin-summer" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/tinywasm/recipe.toml ================================================ #TODO configuration error [source] git = "https://github.com/explodingcamera/tinywasm" [build] template = "custom" script = """ cookbook_cargo_packages tinywasm-cli """ ================================================ FILE: recipes/wip/tools/tl-rs/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/NewDawn0/tl" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/tock/recipe.toml ================================================ #TODO working but don't exit [source] git = "https://github.com/nwtnni/tock" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/toipe/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/Samyak2/toipe" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/torrust-tracker/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/torrust/torrust-tracker" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/toybox/recipe.toml ================================================ #TODO missing script for GNU Make, see https://www.landley.net/toybox/code.html#building [source] tar = "https://www.landley.net/toybox/downloads/toybox-0.8.9.tar.gz" [build] template = "custom" ================================================ FILE: recipes/wip/tools/tp-note/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.com/getreu/tp-note" [build] template = "custom" script = """ package=tpnote "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --package "${package}" \ --release \ --no-default-features \ --features=lang-detection,renderer mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${package}" \ "${COOKBOOK_STAGE}/usr/bin/${package}" """ ================================================ FILE: recipes/wip/tools/tq/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/cryptaliagy/tq-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/treq/recipe.toml ================================================ #TODO openssl error (after cargo update) [source] git = "https://github.com/talis-fb/TReq" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tools/tsuchita/recipe.toml ================================================ #TODO update mio to 0.8 (after cargo update) [source] git = "https://github.com/kamiyaa/tsuchita" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/tts-tui/recipe.toml ================================================ #TODO make speech-dispatcher work [source] git = "https://github.com/lesleyrs/tts-tui" [build] template = "cargo" dependencies = [ "speech-dispatcher", ] ================================================ FILE: recipes/wip/tools/ttyper/recipe.toml ================================================ #TODO replace the prompt with nothing on execution [source] git = "https://github.com/max-niederman/ttyper" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/tui-journal/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/AmmarAbouZor/tui-journal" [build] template = "custom" dependencies = [ "openssl3", "sqlite3", ] script = """ DYNAMIC_INIT cookbook_cargo """ ================================================ FILE: recipes/wip/tools/tvix/recipe.toml ================================================ #TODO tvix-castore crate error (after cargo update) [source] git = "https://github.com/tvlfyi/tvix" [build] template = "custom" script = """ cookbook_cargo_packages tvix-cli """ ================================================ FILE: recipes/wip/tools/typst/recipe.toml ================================================ #TODO compiled but not tested #TODO missing script to properly move the binary [source] git = "https://github.com/typst/typst" [build] template = "custom" script = """ cookbook_cargo_packages typst """ ================================================ FILE: recipes/wip/tools/upx/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/upx/upx/blob/devel/README.SRC [source] tar = "https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-src.tar.xz" [build] template = "custom" ================================================ FILE: recipes/wip/tools/util-linux/recipe.toml ================================================ #TODO compilation error [source] tar = "https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.tar.xz" [build] template = "configure" ================================================ FILE: recipes/wip/tools/vector/recipe.toml ================================================ #TODO missing script for "make", see https://vector.dev/docs/setup/installation/manual/from-source/ [source] git = "https://github.com/vectordotdev/vector" rev = "86f1c22d7f00d7d80210a2704ea9f5061f74ee55" [build] template = "custom" ================================================ FILE: recipes/wip/tools/ventoy/recipe.toml ================================================ #TODO missing script for cross-compilation, see https://github.com/ventoy/Ventoy/blob/master/DOC/BuildVentoyFromSource.txt #TODO missing dependencies, try to figure out what it needs at build-time and runtime [source] git = "https://github.com/ventoy/Ventoy" rev = "3f65f0ef03e4aebcd14f233ca808a4f894657802" [build] template = "custom" ================================================ FILE: recipes/wip/tools/vincenzo/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/gabrieldemian/vincenzo" [build] template = "custom" script = """ cookbook_cargo_packages vcz """ ================================================ FILE: recipes/wip/tools/watchexec/recipe.toml ================================================ #TODO xdg-home and nix crates error [source] git = "https://github.com/watchexec/watchexec" [build] template = "custom" script = """ cookbook_cargo_packages watchexec-cli """ ================================================ FILE: recipes/wip/tools/watchmen/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/ahriroot/watchmen" [build] template = "custom" script = """ cookbook_cargo_packages watchmen watchmend """ ================================================ FILE: recipes/wip/tools/wayback-rs/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/Neolex-Security/WaybackRust" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/wayshot/recipe.toml ================================================ #TODO missing script for "make", see https://git.sr.ht/~shinyzenith/wayshot#compiling [source] git = "https://git.sr.ht/~shinyzenith/wayshot" rev = "d3cdd329fe8263d5eca2ff62635fcb6b6ae57645" [build] template = "custom" ================================================ FILE: recipes/wip/tools/wethr/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/risoflora/wethr" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/weylus/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/H-M-H/Weylus#building [source] git = "https://github.com/H-M-H/Weylus" [build] template = "custom" dependencies = [ "pango", "gstreamer", "dbus", "libx11", "libxext", "libxft", "libxinerama", "libxcursor", "libxfixes", "libxtst", "libxrandr", "libxcomposite", "libxv", "libxi", "libxrender", "libdrm", ] script = """ DYNAMIC_INIT cookbook_cargo_packages weylus """ ================================================ FILE: recipes/wip/tools/wick/recipe.toml ================================================ #TODO Missing script for "just", see https://github.com/candlecorp/wick#install-from-source [source] git = "https://github.com/candlecorp/wick" rev = "7d498210c0cb729ee9b96d6fb226e0db3a514cba" [build] template = "custom" ================================================ FILE: recipes/wip/tools/wpaperd/recipe.toml ================================================ #TODO make libxkbcommon work [source] git = "https://github.com/danyspin97/wpaperd" [build] template = "cargo" dependencies = [ "libxkbcommon", ] ================================================ FILE: recipes/wip/tools/xcp/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/tarka/xcp" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/xdg-utils/recipe.toml ================================================ #TODO compilation error [source] tar = "https://portland.freedesktop.org/download/xdg-utils-1.1.3.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/tools/xdotool/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/jordansissel/xdotool/#building--compiling [source] git = "https://github.com/jordansissel/xdotool" rev = "eb489de1b4fb3fd0cd935d68ae16ecd4c653ac7d" [build] template = "custom" dependencies = [ "libx11", "libxi", "libxinerama", "libxkbcommon", "libxtst", ] ================================================ FILE: recipes/wip/tools/xdvdfs/recipe.toml ================================================ #TODO require a command to move the executable to a proper folder [source] git = "https://github.com/antangelo/xdvdfs" [build] template = "custom" script = """ cookbook_cargo_packages xdvdfs-cli """ ================================================ FILE: recipes/wip/tools/xh/recipe.toml ================================================ #TODO network-interface crate error (after cargo update) [source] git = "https://github.com/ducaale/xh" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/xiu/recipe.toml ================================================ #TODO webrtc-util crate error (after cargo update) [source] git = "https://github.com/harlanc/xiu" [build] template = "custom" dependencies = [ "openssl1", ] script = """ export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export OPENSSL_STATIC="true" cookbook_cargo_packages xiu """ ================================================ FILE: recipes/wip/tools/xorriso/recipe.toml ================================================ #TODO can't recognize the redox target [source] tar = "https://www.gnu.org/software/xorriso/xorriso-1.5.6.pl02.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/tools/xsv/recipe.toml ================================================ #TODO update the redox_syscall version on the dependency tree [source] git = "https://github.com/BurntSushi/xsv" [build] template = "cargo" ================================================ FILE: recipes/wip/tools/zet/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/yarrow/zet" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/finch/recipe.toml ================================================ #TODO missing dependencies [source] tar = "https://sourceforge.net/projects/pidgin/files/Pidgin/2.14.12/pidgin-2.14.12.tar.bz2" [build] template = "custom" dependencies = [ "ncurses", ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( --disable-gtkui ) cookbook_configure """ ================================================ FILE: recipes/wip/tui/gitu/recipe.toml ================================================ #TODO update the redox_syscall crate version [source] git = "https://github.com/altsem/gitu" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/gitui/recipe.toml ================================================ #TODO: Page fault [source] git = "https://github.com/extrawurst/gitui" [build] template = "custom" dependencies = [ "openssl1", ] script = """ DYNAMIC_INIT export OPENSSL_NO_VENDOR=1 cookbook_cargo """ ================================================ FILE: recipes/wip/tui/gyr/recipe.toml ================================================ #TODO promote [source] git = "https://git.sr.ht/~f9/gyr" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/heh/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ndd7xv/heh" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/heretek/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/wcampbell0x2a/heretek" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/lazyjj/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Cretezy/lazyjj" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/manga-tui/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/josueBarretogit/manga-tui" [build] template = "cargo" dependencies = [ "dbus", ] ================================================ FILE: recipes/wip/tui/nnn/recipe.toml ================================================ #TODO write a script for cross-compilation # how to static link the libraries: https://github.com/jarun/nnn/wiki/Developer-guides#static-compilation [source] tar = "https://github.com/jarun/nnn/releases/download/v5.0/nnn-v5.0.tar.gz" [build] template = "custom" dependencies = [ "ncursesw", "readline", ] ================================================ FILE: recipes/wip/tui/nyaa-rs/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Beastwick18/nyaa" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/oatmeal/recipe.toml ================================================ #TODO openssl-sys crate error [source] git = "https://github.com/dustinblackman/oatmeal" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/otree/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/fioncat/otree" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/projectable/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/dzfrias/projectable" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/radicle-tui/recipe.toml ================================================ #TODO update the redox_syscall crate version [source] git = "https://seed.radicle.xyz/z39mP9rQAaGmERfUMPULfPUi473tY.git" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/regname/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/linkdd/regname" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/russ/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/ckampfe/russ" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/rust-kanban/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/yashs662/rust_kanban" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tui/rust-traverse/recipe.toml ================================================ #TODO trash crate error [source] git = "https://github.com/dmcg310/Rust-Traverse" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/syndicationd/recipe.toml ================================================ #TODO compiled but not tested #TODO add a command to properly move the executable [source] git = "https://github.com/ymgyt/syndicationd" [build] template = "custom" script = """ cookbook_cargo_packages synd-term """ ================================================ FILE: recipes/wip/tui/tenere/recipe.toml ================================================ #TODO sys-info crate error [source] git = "https://github.com/pythops/tenere" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/terminusdm/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/sumoduduk/terminusdm" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tui/termlaunch/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/amaterasu-uwu-xd/termlaunch" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/termscp/recipe.toml ================================================ #TODO make dbus work [source] git = "https://github.com/veeso/termscp" [build] template = "custom" dependencies = [ "dbus", ] script = """ cookbook_cargo --no-default-features """ ================================================ FILE: recipes/wip/tui/thesaurust/recipe.toml ================================================ #TODO openssl error [source] git = "https://github.com/QuietPigeon2001/thesaurust" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tui/tooters/recipe.toml ================================================ #TODO port the webbrowser crate [source] git = "https://github.com/joshka/tooters" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tui/tui-slides/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/Chleba/tui-slides" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/twitch-tui/recipe.toml ================================================ #TODO rustyline crate error [source] git = "https://github.com/Xithrius/twitch-tui" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/tui/xplr/recipe.toml ================================================ #TODO tuikit crate error [source] git = "https://github.com/sayanarijit/xplr" [build] template = "cargo" ================================================ FILE: recipes/wip/tui/zenith/recipe.toml ================================================ #TODO async-io and rustix crate errors (after cargo update) [source] git = "https://github.com/bvaisvil/zenith" [build] template = "cargo" ================================================ FILE: recipes/wip/vice/01_redox.patch ================================================ diff -rupNw source-original/configure source/configure --- source-original/configure 2018-12-19 22:25:02.000000000 +0100 +++ source/configure 2019-02-12 17:09:41.954190921 +0100 @@ -10320,54 +10320,6 @@ done test -n "$DOS2UNIX" || DOS2UNIX="dos2unix" -for ac_prog in xa xa65 -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_XA+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$XA"; then - ac_cv_prog_XA="$XA" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_XA="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -XA=$ac_cv_prog_XA -if test -n "$XA"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XA" >&5 -$as_echo "$XA" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$XA" && break -done -test -n "$XA" || XA="no" - - -if test x"$XA" = "xno"; then - as_fn_error $? "xa is missing" "$LINENO" 5 -fi - if test x"$SVN" != "x"; then svnrevision=`$SVN 2>dummy.tmp info $srcdir | grep Revision | cut -d " " -f 2` rm dummy.tmp @@ -15132,6 +15084,9 @@ fi done +UNIX_NETWORK_FUNCS_PRESENT=no + + if test x"$UNIX_NETWORK_FUNCS_PRESENT" = "xyes"; then $as_echo "#define HAVE_NETWORK /**/" >>confdefs.h diff -rupNw source-original/src/arch/sdl/rs232dev.c source/src/arch/sdl/rs232dev.c --- source-original/src/arch/sdl/rs232dev.c 2018-08-13 20:18:45.000000000 +0200 +++ source/src/arch/sdl/rs232dev.c 2019-02-11 10:16:12.989841923 +0100 @@ -27,7 +27,7 @@ #include "vice.h" #ifdef UNIX_COMPILE -#include "rs232dev-unix.c" +//#include "rs232dev-unix.c" #endif #ifdef WIN32_COMPILE diff -rupNw source-original/src/opencbm.h source/src/opencbm.h --- source-original/src/opencbm.h 2018-08-22 21:01:32.000000000 +0200 +++ source/src/opencbm.h 2019-02-11 09:28:21.775162862 +0100 @@ -117,6 +117,10 @@ typedef unsigned char __u_char; typedef unsigned char __u_char; #endif +#ifdef __redox__ +typedef unsigned char __u_char; +#endif + #endif /* specifiers for the IEC bus lines */ diff -rupNw source-original/src/sound.c source/src/sound.c --- source-original/src/sound.c 2018-12-17 19:44:43.000000000 +0100 +++ source/src/sound.c 2019-02-12 08:57:18.934381713 +0100 @@ -1001,6 +1001,9 @@ int sound_open(void) break; } + speed = 44100; + channels = 2; + /* find pdev */ for (i = 0; (pdev = sound_devices[i]); i++) { if (!playname || (pdev->name && !strcasecmp(playname, pdev->name))) { ================================================ FILE: recipes/wip/vice/recipe.sh ================================================ VERSION=3.3 TAR=https://sourceforge.net/projects/vice-emu/files/releases/vice-$VERSION.tar.gz/download TAR_SHA256=1a55b38cc988165b077808c07c52a779d181270b28c14b5c9abf4e569137431d BUILD_DEPENDS=(sdl1 liborbital) function recipe_version { echo "$VERSION" skip=1 } function recipe_build { sysroot="$(realpath ../sysroot)" wget -O config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" export sdl_config="$sysroot/bin/sdl-config" export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL" export CXXFLAGS="$CFLAGS" export LDFLAGS="-L$sysroot/lib -static" ./configure \ --build=${BUILD} \ --host=${HOST} \ --prefix='' \ --enable-sdlui \ --disable-sdlui2 \ --disable-rs232 \ --disable-realdevice \ --disable-midi "$REDOX_MAKE" -j"$COOKBOOK_MAKE_JOBS" skip=1 } function recipe_clean { "$REDOX_MAKE" clean skip=1 } function recipe_stage { dest="$(realpath $1)" "$REDOX_MAKE" DESTDIR="$dest" install skip=1 } ================================================ FILE: recipes/wip/video/camera/cosmic-ext-camera/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/cosmic-utils/camera" shallow_clone = true [build] template = "cargo" dependencies = [ "gstreamer", ] ================================================ FILE: recipes/wip/video/camera/tuicam/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/hlsxx/tuicam" [build] template = "cargo" dependencies = [ "opencv4", ] ================================================ FILE: recipes/wip/video/camera/webcamoid/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/webcamoid/webcamoid/wiki/Raw-build-and-install [source] git = "https://github.com/webcamoid/webcamoid" rev = "171b91e378c9bfbd4c425415322971e4e8872108" [build] template = "cmake" dependencies = [ "qt5-base", "qt5-declarative", "qt5-quickcontrols2", "qt5-svg", ] ================================================ FILE: recipes/wip/video/converters/handbrake-cli/recipe.toml ================================================ #TODO not compiled or tested # build instructions - https://handbrake.fr/docs/en/1.7.0/developer/build-linux.html # dependencies - https://handbrake.fr/docs/en/1.7.0/developer/install-dependencies-ubuntu.html [source] tar = "https://handbrake.fr/rotation.php?file=HandBrake-1.8.1-source.tar.bz2" [build] template = "custom" dependencies = [ "libflac", "fontconfig", "freetype2", "fribidi", "harfbuzz", "jansson", "lame", "libass", "libiconv", "libjpeg", "libogg", "libsamplerate", "libtheora", "libvorbis", "libvpx", "x264", "libxml2", "xz", "libopus", "speex", ] script = """ COOKBOOK_CONFIGURE_FLAGS+=( --disable-gtk ) cookbook_configure """ ================================================ FILE: recipes/wip/video/converters/trv/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/transformrs/trv" [build] template = "cargo" [package] dependencies = [ "ffmpeg6", "typst", ] ================================================ FILE: recipes/wip/video/editors/anime-effects/recipe.toml ================================================ #TODO missing script for QMake, see https://github.com/AnimeEffectsDevs/AnimeEffects#clone--building [source] git = "https://github.com/AnimeEffectsDevs/AnimeEffects" rev = "6080497684809aa5c73bf015fec36e88443f6d11" [build] template = "custom" dependencies = [ "ffmpeg6", "mesa", "qt5-base", "glib", ] ================================================ FILE: recipes/wip/video/editors/blind/recipe.toml ================================================ #TODO missing script for gnu make #TODO verify if ffmpeg and imagemagick are needed at compile-time or run-time [source] tar = "https://dl.suckless.org/tools/blind-1.1.tar.gz" [build] template = "custom" [package] dependencies = [ "ffmpeg6", "imagemagick", ] ================================================ FILE: recipes/wip/video/editors/openshot/recipe.toml ================================================ #TODO not compiled or tested # launch instructions: https://github.com/OpenShot/openshot-qt#launch [source] git = "https://github.com/OpenShot/openshot-qt" rev = "v3.3.0" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}/usr/bin/openshot-qt" cp -rv "${COOKBOOK_SOURCE}"/src/* "${COOKBOOK_STAGE}/usr/bin/openshot-qt" echo "#!/usr/bin/env sh \n python3 /usr/bin/openshot-qt/src/launch.py" > "${COOKBOOK_STAGE}"/usr/bin/openshot chmod a+x "${COOKBOOK_STAGE}"/usr/bin/openshot """ [package] dependencies = [ "libopenshot", "libopenshot-audio", ] ================================================ FILE: recipes/wip/video/editors/video-trimmer/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://gitlab.gnome.org/YaLTeR/video-trimmer" [build] template = "meson" dependencies = [ "gtk4", "ffmpeg6", "gstreamer", ] ================================================ FILE: recipes/wip/video/other/alass/recipe.toml ================================================ #TODO linker error (after cargo update) [source] git = "https://github.com/kaegi/alass" [build] template = "custom" script = """ cookbook_cargo_packages alass-cli """ ================================================ FILE: recipes/wip/video/other/av1an/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/master-of-zen/Av1an" [build] template = "custom" dependencies = [ "ffmpeg6", ] script = """ cookbook_cargo_packages av1an """ ================================================ FILE: recipes/wip/video/other/avp/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/rust-av/avp" [build] template = "cargo" dependencies = [ "sdl2", ] ================================================ FILE: recipes/wip/video/other/detect-scene-change/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/soruly/detect-scene-change" [build] template = "cargo" dependencies = [ "ffmpeg6", ] ================================================ FILE: recipes/wip/video/other/dovi-tool/recipe.toml ================================================ #TODO yeslogic-fontconfig-sys crate error [source] git = "https://github.com/quietvoid/dovi_tool" [build] template = "cargo" ================================================ FILE: recipes/wip/video/other/gnome-video-effects/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://download.gnome.org/sources/gnome-video-effects/0.6/gnome-video-effects-0.6.0.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/video/other/gopro-assembler/recipe.toml ================================================ #TODO camino crate error [source] git = "https://github.com/alichtman/gopro-chaptered-video-assembler" [build] template = "cargo" ================================================ FILE: recipes/wip/video/other/gyroflow/recipe.toml ================================================ #TODO maybe missing dependencies, see https://github.com/gyroflow/gyroflow/blob/master/_scripts/linux.just [source] git = "https://github.com/gyroflow/gyroflow" [build] template = "cargo" dependencies = [ "fontconfig", "freetype2", "ffmpeg6", "qt6-base", ] ================================================ FILE: recipes/wip/video/other/imdb-rename/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/BurntSushi/imdb-rename" [build] template = "cargo" ================================================ FILE: recipes/wip/video/other/jerry/recipe.toml ================================================ #TODO fix fzf dependency [source] git = "https://github.com/justchokingaround/jerry" shallow_clone = true [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp "${COOKBOOK_SOURCE}"/jerry.sh "${COOKBOOK_STAGE}"/usr/bin/jerry chmod a+x "${COOKBOOK_STAGE}"/usr/bin/jerry """ [package] dependencies = [ "gnu-grep", "sed", "curl", #"fzf", "mpv", ] ================================================ FILE: recipes/wip/video/other/lecturecut/recipe.toml ================================================ #TODO update the redox_syscall crate version (after cargo update) [source] git = "https://github.com/LectureCut/CLI" [build] template = "cargo" ================================================ FILE: recipes/wip/video/other/lobster/recipe.toml ================================================ #TODO promote [source] git = "https://github.com/justchokingaround/lobster" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin cp "${COOKBOOK_SOURCE}"/lobster.sh "${COOKBOOK_STAGE}"/usr/bin/lobster chmod a+x "${COOKBOOK_STAGE}"/usr/bin/lobster """ ================================================ FILE: recipes/wip/video/other/pipeline/recipe.toml ================================================ #TODO make gtk4 work [source] tar = "https://gitlab.com/schmiddi-on-mobile/pipeline/-/package_files/114831818/download" [build] template = "custom" dependencies = [ "gtk4", "glib", "libadwaita", "gdk-pixbuf", ] script = """ cookbook_cargo mkdir -pv "${COOKBOOK_STAGE}"/usr/share/glib-2.0/schemas cp -rv "${COOKBOOK_SOURCE}"/data/de.schmidhuberj.tubefeeder.gschema.xml "${COOKBOOK_STAGE}"/usr/share/glib-2.0/schemas """ ================================================ FILE: recipes/wip/video/other/smoothie-rs/recipe.toml ================================================ #TODO rfd crate error [source] git = "https://github.com/couleur-tweak-tips/smoothie-rs" [build] template = "cargo" ================================================ FILE: recipes/wip/video/other/streamlib/recipe.toml ================================================ #TODO shared_child crate error (after cargo update) [source] git = "https://github.com/streamlib/streamlib" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/video/other/sub-batch/recipe.toml ================================================ #TODO interprocess crate error [source] git = "https://github.com/kl/sub-batch" [build] template = "cargo" ================================================ FILE: recipes/wip/video/other/teres/recipe.toml ================================================ #TODO missing dependencies, see https://github.com/animafps/teres/blob/main/CONTRIBUTING.md [source] git = "https://github.com/animafps/teres" [build] template = "cargo" dependencies = [ "ffmpeg6", ] ================================================ FILE: recipes/wip/video/other/timelens/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/timelens/timelens" [build] template = "cargo" dependencies = [ "gstreamer", ] ================================================ FILE: recipes/wip/video/other/trimmeroni/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://codeberg.org/outfrost/trimmeroni" [build] template = "cargo" ================================================ FILE: recipes/wip/video/other/vapoursynth/recipe.toml ================================================ #TODO maybe wrong script, see https://vapoursynth.com/doc/installation.html#linux-and-os-x-compilation [source] git = "https://github.com/vapoursynth/vapoursynth" rev = "3157049549a0940359b37004aeeeebd8f1db665e" script = "./autogen.sh" [build] template = "configure" ================================================ FILE: recipes/wip/video/other/video4discord/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Seebass22/video4discord" [build] template = "custom" script = """ cookbook_cargo_packages video4discord """ ================================================ FILE: recipes/wip/video/other/vidmerger/recipe.toml ================================================ #TODO Not compiled or tested [source] git = "https://github.com/tgotwig/vidmerger" [build] template = "cargo" dependencies = [ "ffmpeg6", ] ================================================ FILE: recipes/wip/video/other/yt-chanvids/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/daniel-araujo/yt-chanvids" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/vm/cloud-hypervisor/recipe.toml ================================================ #TODO port to redox # required host dependencies - https://github.com/cloud-hypervisor/cloud-hypervisor/blob/main/docs/building.md#install-prerequisites [source] git = "https://github.com/cloud-hypervisor/cloud-hypervisor" [build] template = "cargo" ================================================ FILE: recipes/wip/vm/crosvm/recipe.toml ================================================ #TODO port to redox #TODO maybe missing dependencies #TODO required host dependencies - https://github.com/google/crosvm/blob/main/tools/install-deps # feature flags - https://crosvm.dev/doc/crosvm/#feature-flags # how to use - https://crosvm.dev/book/running_crosvm/example_usage.html # examples - https://github.com/google/crosvm/tree/main/tools/examples [source] git = "https://chromium.googlesource.com/crosvm/crosvm" [build] template = "cargo" dependencies = [ "ffmpeg6", "libcap", "dbus", "libepoxy", "glib", "libslirp", ] ================================================ FILE: recipes/wip/vm/firecracker/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/firecracker-microvm/firecracker" [build] template = "custom" script = """ cookbook_cargo_packages firecracker """ ================================================ FILE: recipes/wip/vm/libguestfs/recipe.toml ================================================ #TODO determine the dependencies, read https://libguestfs.org/guestfs-building.1.html [source] tar = "https://download.libguestfs.org/1.52-stable/libguestfs-1.52.1.tar.gz" [build] template = "configure" ================================================ FILE: recipes/wip/vm/libvirt/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://libvirt.org/compiling.html#configuring-the-project [source] tar = "https://download.libvirt.org/libvirt-10.7.0.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/vm/qemu/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/qemu.git" shallow_clone = true [build] template = "custom" dependencies = [ "curl", "gettext", "glib", "libffi", "libiconv", "libjpeg", "liborbital", "libpng", "libstdcxx", "mesa", "nghttp2", "openssl1", "pcre2", "pixman", "sdl2", "sdl2-image", "zlib", ] script = """ DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS=( --host="${TARGET}" --prefix="/usr" --cross-prefix="${TARGET}" --disable-coroutine-pool --disable-dbus-display --disable-tpm ) case "${TARGET}" in aarch64-unknown-redox) COOKBOOK_CONFIGURE_FLAGS+=(--target-list=aarch64-softmmu) ;; i586-unknown-redox | i686-unknown-redox) COOKBOOK_CONFIGURE_FLAGS+=(--target-list=i386-softmmu) ;; x86_64-unknown-redox) COOKBOOK_CONFIGURE_FLAGS+=(--target-list=x86_64-softmmu) ;; *) echo "unsupported target ${TARGET}" exit 1 ;; esac cookbook_configure """ ================================================ FILE: recipes/wip/vm/v86/recipe.toml ================================================ #TODO missing script for "make", see https://github.com/copy/v86#how-to-build-run-and-embed [source] git = "https://github.com/copy/v86" [build] template = "custom" ================================================ FILE: recipes/wip/vm/virtualbox/recipe.toml ================================================ #TODO missing script for kbuild #TODO missing dependencies # build instructions: # https://www.virtualbox.org/wiki/Build_instructions # https://www.virtualbox.org/wiki/Linux%20build%20instructions # how to port - https://www.virtualbox.org/wiki/Porting_VirtualBox [source] tar = "https://download.virtualbox.org/virtualbox/7.0.20/VirtualBox-7.0.20.tar.bz2" [build] template = "custom" dependencies = [ "libcap", "curl", "libopus", "pulseaudio", "qt5-3d", "qt5-x11extras", "qt5-tools", "sdl1", "sdl2-ttf", "openssl1", "libvpx", "libxml2", "libxslt", "zlib", "mesa", ] ================================================ FILE: recipes/wip/wayland/anvil/recipe.toml ================================================ #TODO not compiled or tested [source] same_as = "../smallvil" [build] template = "cargo" dependencies = [ "libffi", "libwayland", "libxkbcommon", ] cargopackages = [ "anvil" ] ================================================ FILE: recipes/wip/wayland/cosmic-app-library/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/cosmic-app-library" branch = "redox" [build] template = "custom" dependencies = [ "gettext", "libwayland", "libxkbcommon", ] script = """ DYNAMIC_INIT export GETTEXT_DIR="${COOKBOOK_SYSROOT}/usr" cookbook_cargo --no-default-features """ ================================================ FILE: recipes/wip/wayland/cosmic-comp/recipe.toml ================================================ #TODO: performance issues, no keyboard input [source] git = "https://github.com/jackpot51/cosmic-comp" branch = "redox" [build] template = "custom" dependencies = [ "libffi", #TODO: requires evdev and some udev implementation: "libinput", "libwayland", "libxkbcommon", "mesa", "pixman", "seatd", ] script = """ DYNAMIC_INIT cookbook_cargo --no-default-features --config 'profile.release.lto = "thin"' """ ================================================ FILE: recipes/wip/wayland/cosmic-panel/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/cosmic-panel" branch = "redox" [build] template = "custom" dependencies = [ "gettext", #"libffi", #TODO: requires evdev and some udev implementation: "libinput", "libwayland", "libxkbcommon", #"mesa", #"pixman", #"seatd", ] script = """ DYNAMIC_INIT export GETTEXT_DIR="${COOKBOOK_SYSROOT}/usr" COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/cosmic-panel-bin" cookbook_cargo --no-default-features """ ================================================ FILE: recipes/wip/wayland/fht-compositor/recipe.toml ================================================ #TODO not compiled or tested #TODO enable the "opt" profile once wayland and eudev is working [source] git = "https://github.com/nferhat/fht-compositor" [build] template = "custom" dependencies = [ "libwayland", "libxkbcommon", "mesa", ] script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wayland-sessions cp -rv "${COOKBOOK_SOURCE}"/res/fht-compositor.desktop "${COOKBOOK_STAGE}"/usr/share/wayland-sessions package=fht-compositor "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --package "${package}" \ --release --winit-backend mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${package}" \ "${COOKBOOK_STAGE}/usr/bin/${package}" """ ================================================ FILE: recipes/wip/wayland/hyprland/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://wiki.hyprland.org/Getting-Started/Installation/#cmake-recommended [source] git = "https://github.com/hyprwm/Hyprland" rev = "ed936430216e7aa5f6f53d22eff713f8e9ed69ac" [build] template = "custom" dependencies = [ "libinput", "libxkbcommon", "libxcb", "pango", "cairo", "pixman", "libwayland", "seatd", "libxrender", "libx11", "libxcomposite", "libxfixes", ] script = """ DYNAMIC_INIT cookbook_cmake mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wayland-sessions cp -rv "${COOKBOOK_SOURCE}"/example/hyprland.desktop "${COOKBOOK_STAGE}"/usr/share/wayland-sessions """ ================================================ FILE: recipes/wip/wayland/iced-wayland/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/iced.git" branch = "redox-wayland" [build] dependencies = [ "libwayland", "libxkbcommon", ] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages sctk_lazy """ ================================================ FILE: recipes/wip/wayland/libcosmic-wayland/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/libcosmic.git" branch = "redox-wayland" [build] dependencies = [ "libwayland", "libxkbcommon", ] template = "custom" script = """ DYNAMIC_INIT cookbook_cargo_packages application mv "${COOKBOOK_STAGE}/usr/bin/application" "${COOKBOOK_STAGE}/usr/bin/libcosmic-wayland_application" """ ================================================ FILE: recipes/wip/wayland/libwayland/recipe.toml ================================================ #TODO: Requires sys/signalfd.h SFD_CLOEXEC, sys/timerfd.h TFD_CLOEXEC #TODO: F_DUPFD_CLOEXEC, MSG_CMSG_CLOEXEC, MSG_NOSIGNAL TFD_TIMER_ABSTIME [source] tar = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/1.24.0/downloads/wayland-1.24.0.tar.xz" patches = [ #FIXME: This patch is just a shim. Remove this patch "redox.patch" ] [build] template = "meson" dependencies = [ "libffi", "expat", "libxml2", ] mesonflags = [ "-Ddocumentation=false", "-Dtests=false", "-Ddtd_validation=false", ] ================================================ FILE: recipes/wip/wayland/libwayland/redox.patch ================================================ diff -ruwN source-old/meson.build source/meson.build --- source-old/meson.build 2025-07-06 06:11:26.000000000 -0600 +++ source/meson.build 2025-11-13 12:08:42.512612558 -0700 @@ -80,8 +80,6 @@ ffi_dep = dependency('libffi') decls = [ - { 'header': 'sys/signalfd.h', 'symbol': 'SFD_CLOEXEC' }, - { 'header': 'sys/timerfd.h', 'symbol': 'TFD_CLOEXEC' }, { 'header': 'time.h', 'symbol': 'CLOCK_MONOTONIC' }, ] diff -ruwN source-old/src/connection.c source/src/connection.c --- source-old/src/connection.c 2025-07-06 06:11:26.000000000 -0600 +++ source/src/connection.c 2025-11-13 12:08:42.512796844 -0700 @@ -490,7 +490,7 @@ do { len = sendmsg(connection->fd, &msg, - MSG_NOSIGNAL | MSG_DONTWAIT); + MSG_DONTWAIT); } while (len == -1 && errno == EINTR); if (len == -1) @@ -1506,8 +1506,10 @@ char *buffer; size_t buffer_length; +#if !defined(__redox__) f = open_memstream(&buffer, &buffer_length); if (f == NULL) +#endif return; clock_gettime(CLOCK_REALTIME, &tp); diff -ruwN source-old/src/event-loop.c source/src/event-loop.c --- source-old/src/event-loop.c 2025-07-06 06:11:26.000000000 -0600 +++ source/src/event-loop.c 2025-11-13 12:08:42.513005175 -0700 @@ -35,8 +35,8 @@ #include #include #include -#include -#include +// #include +// #include #include #include "timespec-util.h" #include "wayland-util.h" @@ -259,24 +259,13 @@ static int set_timer(int timerfd, struct timespec deadline) { - struct itimerspec its; - - its.it_interval.tv_sec = 0; - its.it_interval.tv_nsec = 0; - its.it_value = deadline; - return timerfd_settime(timerfd, TFD_TIMER_ABSTIME, &its, NULL); + return 0; } static int clear_timer(int timerfd) { - struct itimerspec its; - - its.it_interval.tv_sec = 0; - its.it_interval.tv_nsec = 0; - its.it_value.tv_sec = 0; - its.it_value.tv_nsec = 0; - return timerfd_settime(timerfd, 0, &its, NULL); + return 0; } static void @@ -307,7 +296,7 @@ wl_timer_heap_ensure_timerfd(struct wl_timer_heap *timers) { struct epoll_event ep; - int timer_fd; + int timer_fd = 0; if (timers->base.fd != -1) return 0; @@ -316,17 +305,6 @@ ep.events = EPOLLIN; ep.data.ptr = timers; - timer_fd = timerfd_create(CLOCK_MONOTONIC, - TFD_CLOEXEC | TFD_NONBLOCK); - if (timer_fd < 0) - return -1; - - if (epoll_ctl(timers->base.loop->epoll_fd, - EPOLL_CTL_ADD, timer_fd, &ep) < 0) { - close(timer_fd); - return -1; - } - timers->base.fd = timer_fd; return 0; } @@ -677,11 +655,12 @@ { struct wl_event_source_signal *signal_source = (struct wl_event_source_signal *) source; - struct signalfd_siginfo signal_info; + /*struct signalfd_siginfo signal_info; int len; len = read(source->fd, &signal_info, sizeof signal_info); if (!(len == -1 && errno == EAGAIN) && len != sizeof signal_info) + */ /* Is there anything we can do here? Will this ever happen? */ wl_log("signalfd read error: %s\n", strerror(errno)); @@ -730,7 +709,7 @@ sigemptyset(&mask); sigaddset(&mask, signal_number); - source->base.fd = signalfd(-1, &mask, SFD_CLOEXEC | SFD_NONBLOCK); + // source->base.fd = signalfd(-1, &mask, SFD_CLOEXEC | SFD_NONBLOCK); sigprocmask(SIG_BLOCK, &mask, NULL); source->func = func; diff -ruwN source-old/src/meson.build source/src/meson.build --- source-old/src/meson.build 2025-07-06 06:11:26.000000000 -0600 +++ source/src/meson.build 2025-11-13 12:08:42.513181686 -0700 @@ -81,8 +81,7 @@ endif if meson.is_cross_build() or not get_option('scanner') - scanner_dep = dependency('wayland-scanner', native: true, version: meson.project_version()) - wayland_scanner_for_build = find_program(scanner_dep.get_variable(pkgconfig: 'wayland_scanner')) + wayland_scanner_for_build = find_program('wayland-scanner', native: true) else wayland_scanner_for_build = wayland_scanner endif diff -ruwN source-old/src/wayland-os.c source/src/wayland-os.c --- source-old/src/wayland-os.c 2025-07-06 06:11:26.000000000 -0600 +++ source/src/wayland-os.c 2025-11-13 12:08:42.513310047 -0700 @@ -134,11 +134,13 @@ { int newfd; +#if defined(F_DUPFD_CLOEXEC) newfd = wl_fcntl(fd, F_DUPFD_CLOEXEC, minfd); if (newfd >= 0) return newfd; if (errno != EINVAL) return -1; +#endif newfd = wl_fcntl(fd, F_DUPFD, minfd); return set_cloexec_or_close(newfd); @@ -189,7 +191,7 @@ #else ssize_t len; - len = wl_recvmsg(sockfd, msg, flags | MSG_CMSG_CLOEXEC); + len = wl_recvmsg(sockfd, msg, flags); if (len >= 0) return len; if (errno != EINVAL) diff -ruwN source-old/src/wayland-server.c source/src/wayland-server.c --- source-old/src/wayland-server.c 2025-07-06 06:11:26.000000000 -0600 +++ source/src/wayland-server.c 2025-11-13 12:08:42.513500955 -0700 @@ -39,7 +39,7 @@ #include #include #include -#include +// #include #include #include @@ -1206,9 +1206,9 @@ return NULL; } - display->terminate_efd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK); - if (display->terminate_efd < 0) - goto err_eventfd; + // display->terminate_efd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK); + // if (display->terminate_efd < 0) + // goto err_eventfd; display->term_source = wl_event_loop_add_fd(display->loop, display->terminate_efd, ================================================ FILE: recipes/wip/wayland/niri/recipe.toml ================================================ #TODO Port Smithay #TODO probably wrong script for configuration, see https://github.com/YaLTeR/niri#installation [source] git = "https://github.com/YaLTeR/niri" [build] template = "custom" dependencies = [ "libwayland", ] script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/bin mkdir -pv "${COOKBOOK_STAGE}"/usr/share/wayland-sessions mkdir -pv "${COOKBOOK_STAGE}"/usr/share/xdg-desktop-portal cp -rv "${COOKBOOK_SOURCE}"/resources/niri-session "${COOKBOOK_STAGE}"/usr/bin cp -rv "${COOKBOOK_SOURCE}"/resources/niri.desktop "${COOKBOOK_STAGE}"/usr/share/wayland-sessions cp -rv "${COOKBOOK_SOURCE}"/resources/niri-portals.conf "${COOKBOOK_STAGE}"/usr/share/xdg-desktop-portal cookbook_cargo """ ================================================ FILE: recipes/wip/wayland/pinnacle/recipe.toml ================================================ #TODO make all dependencies work [source] git = "https://github.com/pinnacle-comp/pinnacle" [build] template = "custom" dependencies = [ "libwayland", "libxkbcommon", "libinput", "libeudev", "seatd", ] script = """ cookbook_cargo_packages pinnacle """ ================================================ FILE: recipes/wip/wayland/smallvil/recipe.toml ================================================ #TODO make libwayland work [source] git = "https://github.com/jackpot51/smithay" branch = "redox" [build] template = "cargo" dependencies = [ "libffi", "libwayland", "libxkbcommon", ] cargopackages = [ "smallvil" ] ================================================ FILE: recipes/wip/wayland/softbuffer-wayland/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/softbuffer.git" branch = "redox-wayland" [build] dependencies = [ "libwayland" ] template = "custom" script = """ DYNAMIC_INIT export RUSTFLAGS="${RUSTFLAGS} -lffi" cookbook_cargo_examples animation rectangle winit """ ================================================ FILE: recipes/wip/wayland/sway/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/swaywm/sway#compiling-from-source [source] tar = "https://github.com/swaywm/sway/releases/download/1.9/sway-1.9.tar.gz" blake3 = "6ae892f82daedef76d26e32c64ebd09cc454ae71f416d2179a512f7764138268" [build] template = "meson" dependencies = [ "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "glib", "harfbuzz", "json-c", "libdrm", "libffi", "libjpeg", "libpng", "libpthread-stubs", "libwayland", "libx11", "libxau", "libxcb", "libxext", "libxft", "libxkbcommon", "libxrender", "pango", "pcre2", "pixman", "shared-mime-info", "wayland-protocols", "wlroots", "x11proto", "zlib", ] ================================================ FILE: recipes/wip/wayland/wayland-protocols/recipe.toml ================================================ [source] tar = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/1.32/downloads/wayland-protocols-1.32.tar.xz" [build] template = "meson" mesonflags = [ "-Dtests=false" ] ================================================ FILE: recipes/wip/wayland/wayland-rs/recipe.toml ================================================ #TODO make libwayland work [source] git = "https://github.com/jackpot51/wayland-rs" branch = "redox" [build] template = "custom" dependencies = [ "libffi", "libwayland", ] script = """ DYNAMIC_INIT export RUSTFLAGS="${RUSTFLAGS} -lffi" cookbook_cargo_examples list_globals_no_dispatch list_globals simple_window """ ================================================ FILE: recipes/wip/wayland/wayland-utils/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.freedesktop.org/wayland/wayland-utils#building [source] tar = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/releases/1.2.0/downloads/wayland-utils-1.2.0.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/wayland/waylandpp/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/NilsBrause/waylandpp#building [source] git = "https://github.com/NilsBrause/waylandpp" [build] template = "cmake" ================================================ FILE: recipes/wip/wayland/winit-wayland/recipe.toml ================================================ [source] git = "https://github.com/jackpot51/winit.git" branch = "redox-wayland" [build] dependencies = [ "libwayland" ] template = "custom" script = """ DYNAMIC_INIT export RUSTFLAGS="${RUSTFLAGS} -lffi" cookbook_cargo_examples child_window control_flow pump_events window """ ================================================ FILE: recipes/wip/wayland/wlroots/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://gitlab.freedesktop.org/wlroots/wlroots#building [source] tar = "https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/0.17.0/downloads/wlroots-0.17.0.tar.gz" blake3 = "f119e53d1f1dd5c8d4c348b0ebc2a780cf4174d158995356a087b26c3bc7d222" patches = ["redox.patch"] [build] template = "meson" dependencies = [ "cairo", "expat", "freetype2", "fontconfig", "libdrm", "libffi", "libpng", "libpthread-stubs", "libwayland", "libx11", "libxau", "libxcb", "libxext", "libxfixes", "libxkbcommon", "libxxf86vm", "mesa-x11", "pixman", "wayland-protocols", "x11proto", "zlib", ] ================================================ FILE: recipes/wip/wayland/wlroots/redox.patch ================================================ diff -ruwN source-old/protocol/meson.build source/protocol/meson.build --- source-old/protocol/meson.build 2023-11-21 09:06:13.000000000 -0700 +++ source/protocol/meson.build 2025-10-30 17:22:43.903323248 -0600 @@ -5,9 +5,8 @@ ) wl_protocol_dir = wayland_protos.get_variable('pkgdatadir') -wayland_scanner_dep = dependency('wayland-scanner', native: true) wayland_scanner = find_program( - wayland_scanner_dep.get_variable('wayland_scanner'), + 'wayland-scanner', native: true, ) diff -ruwN source-old/render/dmabuf.c source/render/dmabuf.c --- source-old/render/dmabuf.c 2023-11-21 09:06:13.000000000 -0700 +++ source/render/dmabuf.c 2025-10-30 17:33:46.223683923 -0600 @@ -5,6 +5,11 @@ #include #include "render/dmabuf.h" +#if defined(__redox__) +//TODO: F_DUPFD_CLOEXEC needed for atomic close on exec +#define F_DUPFD_CLOEXEC F_DUPFD +#endif + void wlr_dmabuf_attributes_finish(struct wlr_dmabuf_attributes *attribs) { for (int i = 0; i < attribs->n_planes; ++i) { close(attribs->fd[i]); ================================================ FILE: recipes/wip/wayland/xwayland/recipe.toml ================================================ #TODO wayland-client, fix linux/input, wayland-scanner shim [source] tar = "https://www.x.org/releases/individual/xserver/xwayland-24.1.8.tar.xz" patches = [ "redox.patch" ] [build] template = "meson" dependencies = [ "libpthread-stubs", "libepoxy", "libxkbfile", "libxfont2", "libffi", "libpng", "pixman", "x11proto", "xtrans", "libxau", "libx11", "libxcb", "openssl1", "freetype2", "libwayland", "libfontenc", "wayland-protocols", "zlib", "libxcvt", "libxdmcp", "libxshmfence", ] mesonflags = [ "-Ddrm=false", "-Dglamor=false", "-Dglx=false", "-Dsecure-rpc=false", "-Dmitshm=false", ] ================================================ FILE: recipes/wip/wayland/xwayland/redox.patch ================================================ diff -ruwN source/hw/xwayland/meson.build source-new/hw/xwayland/meson.build --- source/hw/xwayland/meson.build 2024-01-16 16:38:49.000000000 +0700 +++ source-new/hw/xwayland/meson.build 2025-10-01 07:51:14.456575515 +0700 @@ -30,8 +30,7 @@ '../../mi/miinitext.h', ] -scanner_dep = dependency('wayland-scanner', native: true) -scanner = find_program(scanner_dep.get_pkgconfig_variable('wayland_scanner')) +scanner = find_program('wayland-scanner', native: true) protocols_dep = dependency('wayland-protocols', version: wayland_protocols_req) protodir = protocols_dep.get_pkgconfig_variable('pkgdatadir') @@ -55,11 +54,7 @@ arguments : ['client-header', '@INPUT@', '@OUTPUT@'] ) -if scanner_dep.version().version_compare('>= 1.14.91') scanner_argument = 'private-code' -else - scanner_argument = 'code' -endif code = generator(scanner, output : '@BASENAME@-protocol.c', diff -ruwN source/hw/xwayland/xwayland-glamor.h source-new/hw/xwayland/xwayland-glamor.h --- source/hw/xwayland/xwayland-glamor.h 2024-01-16 16:38:49.000000000 +0700 +++ source-new/hw/xwayland/xwayland-glamor.h 2025-10-01 08:01:01.409102814 +0700 @@ -31,7 +31,7 @@ #include #include -#include +// #include #include "xwayland-types.h" @@ -103,7 +103,7 @@ /* Called to get the DRM device of the primary GPU that this backend * is set up on. */ - drmDevice *(*get_main_device)(struct xwl_screen *xwl_screen); + // drmDevice *(*get_main_device)(struct xwl_screen *xwl_screen); /* Direct hook to create the backing pixmap for a window */ PixmapPtr (*create_pixmap_for_window)(struct xwl_window *xwl_window); diff -ruwN source/hw/xwayland/xwayland-input.c source-new/hw/xwayland/xwayland-input.c --- source/hw/xwayland/xwayland-input.c 2024-01-16 16:38:49.000000000 +0700 +++ source-new/hw/xwayland/xwayland-input.c 2025-10-01 08:02:59.681082380 +0700 @@ -26,7 +26,7 @@ #include -#include +// #include #include #include @@ -758,6 +758,7 @@ xwl_seat->xwl_screen->serial = serial; switch (button) { +/* case BTN_LEFT: index = 1; break; @@ -768,10 +769,9 @@ index = 3; break; default: - /* Skip indexes 4-7: they are used for vertical and horizontal scroll. - The rest of the buttons go in order: BTN_SIDE becomes 8, etc. */ index = 8 + button - BTN_SIDE; break; +*/ } valuator_mask_zero(&mask); @@ -1057,7 +1057,7 @@ state_rec = xwl_seat->keyboard->key->xkbInfo->state; xkb_state = (XkbStateFieldFromRec(&state_rec) & 0xff); - + /* if (((key == KEY_LEFTSHIFT || key == KEY_RIGHTSHIFT) && (xkb_state & ControlMask)) || ((key == KEY_LEFTCTRL || key == KEY_RIGHTCTRL) && (xkb_state & ShiftMask))) { @@ -1072,6 +1072,7 @@ if (xwl_window) xwl_window_rootful_update_title(xwl_window); } + */ } static void diff -ruwN source/hw/xwayland/xwayland-window.c source-new/hw/xwayland/xwayland-window.c --- source/hw/xwayland/xwayland-window.c 2024-01-16 16:38:49.000000000 +0700 +++ source-new/hw/xwayland/xwayland-window.c 2025-10-01 08:00:07.858324820 +0700 @@ -1102,7 +1102,7 @@ for (int j = 0; j < dev_formats->num_formats; j++) free(dev_formats->formats[j].modifiers); free(dev_formats->formats); - drmFreeDevice(&dev_formats->drm_dev); + // drmFreeDevice(&dev_formats->drm_dev); } void diff -ruwN source/hw/xwayland/xwayland-window.h source-new/hw/xwayland/xwayland-window.h --- source/hw/xwayland/xwayland-window.h 2024-01-16 16:38:49.000000000 +0700 +++ source-new/hw/xwayland/xwayland-window.h 2025-10-01 08:00:40.464798537 +0700 @@ -38,7 +38,7 @@ #include #include #include -#include +// #include #include "xwayland-types.h" @@ -55,7 +55,7 @@ }; struct xwl_device_formats { - drmDevice *drm_dev; + // drmDevice *drm_dev; int supports_scanout; uint32_t num_formats; struct xwl_format *formats; @@ -75,7 +75,7 @@ struct xwl_dmabuf_feedback { struct zwp_linux_dmabuf_feedback_v1 *dmabuf_feedback; struct xwl_format_table format_table; - drmDevice *main_dev; + // drmDevice *main_dev; /* * This will be filled in during wl events and copied to * dev_formats on dmabuf_feedback.tranche_done diff -ruwN source/os/access.c source-new/os/access.c --- source/os/access.c 2024-01-16 16:38:49.000000000 +0700 +++ source-new/os/access.c 2025-10-01 07:22:43.931644468 +0700 @@ -446,7 +446,7 @@ int family; register HOST *host; -#ifndef WIN32 +#if !defined(WIN32) && !defined(__redox__) struct utsname name; #else struct { @@ -477,7 +477,7 @@ * uname() lets me access to the whole string (it smashes release, you * see), whereas gethostname() kindly truncates it for me. */ -#ifndef WIN32 +#if !defined(WIN32) && !defined(__redox__) uname(&name); #else gethostname(name.nodename, sizeof(name.nodename)); ================================================ FILE: recipes/wip/web/basilisk/recipe.toml ================================================ #TODO determine build instructions: https://repo.palemoon.org/Basilisk-Dev/Basilisk/src/branch/master/build-scripts/linux/build_basilisk_subscripts/run_inside_docker.sh # dependencies: https://basilisk-browser.org/requirements.html [source] tar = "https://dl.basilisk-browser.org/basilisk-2025.10.10-source.tar.xz" [build] template = "custom" dependencies = [ "gtk3", "glib", "pango", "dbus", "libalsa", "libxt", "openssl3", "sqlite3", "libpulse", ] ================================================ FILE: recipes/wip/web/chromium/recipe.toml ================================================ #TODO missing script for building: https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md #TODO determine minimum dependencies # dependencies reference: # https://chromium.googlesource.com/chromium/src/+/main/build/install-build-deps.py#214 # https://chromium.googlesource.com/chromium/src/+/main/build/install-build-deps.py#355 [source] tar = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-119.0.6045.123.tar.xz" [build] template = "custom" # dependencies = [ # "gtk3", # "nss", # "nspr", # "xdg-utils", # "libgcrypt", # "dbus", # "libva", # "libffi", # "fontconfig", # "libjpeg", # "libflac", # "libxml2", # "ffmpeg6", # "libwebp", # "opus", # "harfbuzz", # "libpng", # "freetype2", # "bzip2", # "expat", # "glib", # "cairo", # "atk", # "libcap", # "pango", # "java21", # "libpulse", # "libx11", # "libxtst", # "libxkbcommon", # ] script = """ DYNAMIC_INIT """ ================================================ FILE: recipes/wip/web/dillo/recipe.toml ================================================ #TODO not compiled or tested # build instructions: https://github.com/dillo-browser/dillo/blob/master/doc/install.md [source] tar = "https://github.com/dillo-browser/dillo/releases/download/v3.2.0/dillo-3.2.0.tar.bz2" [build] template = "configure" dependencies = [ "fltk13", "openssl3", "zlib", "libpng", "libjpeg", "libwebp", "libbrotli", ] ================================================ FILE: recipes/wip/web/dirble/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/Isona/dirble" [build] template = "cargo" dependencies = [ "openssl1", ] ================================================ FILE: recipes/wip/web/dodeca/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/bearcove/dodeca" [build] template = "custom" script = """ cookbook_cargo_packages dodeca """ ================================================ FILE: recipes/wip/web/elinks/recipe.toml ================================================ #TODO not compiled or tested #TODO determine dependencies # build instructions: https://github.com/rkd77/elinks/blob/master/INSTALL [source] tar = "https://github.com/rkd77/elinks/releases/download/v0.18.0/elinks-0.18.0.tar.xz" [build] template = "meson" ================================================ FILE: recipes/wip/web/faircamp/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://codeberg.org/simonrepp/faircamp" [build] template = "cargo" ================================================ FILE: recipes/wip/web/firefox-esr/mozconfig ================================================ mk_add_options MOZ_OBJDIR=COOKBOOK_BUILD ac_add_options --target=TARGET ac_add_options --disable-debug ac_add_options --disable-tests ac_add_options --disable-audio-backends ac_add_options --disable-crashreporter ac_add_options --disable-updater ac_add_options --disable-dbus ac_add_options --disable-gecko-profiler ac_add_options --disable-profiling ac_add_options --disable-dmd # dark matter detector ac_add_options --without-wasm-sandboxed-libraries # need clang wasi # TODO: cairo-gtk3-x11-wayland or separate cairo-gtk3-wayland-only ac_add_options --enable-default-toolkit=cairo-gtk3-x11-only ac_add_options --enable-bootstrap=-clang # only use our clang ac_add_options --enable-optimize ac_add_options --with-system-nspr ac_add_options --with-gl-provider=EGL export MOZ_REQUIRE_SIGNING= export MOZ_TELEMETRY_REPORTING= export CC="TARGET_CC" export CXX="TARGET_CXX" ================================================ FILE: recipes/wip/web/firefox-esr/recipe.toml ================================================ #TODO patches for quinn-udp crate, switch into git fork # mach: https://firefox-source-docs.mozilla.org/setup/linux_build.html # dependencies: https://packages.gentoo.org/packages/www-client/firefox/dependencies # feature flags: https://wiki.gentoo.org/wiki/Firefox#USE_flags [source] tar = "https://ftp.mozilla.org/pub/firefox/releases/140.7.0esr/source/firefox-140.7.0esr.source.tar.xz" [build] template = "custom" dependencies = [ # "fontconfig", # "atk", # "cairo", "dbus", # "libffi", # "freetype2", # "gdk-pixbuf", # "glib", "gtk3", "pango", "libxkbcommon-x11", "libice", "mesa-x11", "x11proto-kb", "xcb-proto", "xextproto", "nspr", "libxrandr", "libsm", # TODO: Should separate clang library and runtime "clang21" # "sqlite3", # "nss-nspr", # "startup-notification", # "zlib", # "ffmpeg6", # "expat", # "libepoxy", # "pipewire", ] script = """ DYNAMIC_INIT cat ${COOKBOOK_RECIPE}/mozconfig > mozconfig sed -i "s|COOKBOOK_BUILD|${COOKBOOK_BUILD}|g" mozconfig sed -i "s|TARGET_CC|${CC}|g" mozconfig sed -i "s|TARGET_CXX|${CXX}|g" mozconfig sed -i "s|TARGET|${TARGET}|g" mozconfig export MOZCONFIG="${COOKBOOK_BUILD}/mozconfig" export PYTHONDONTWRITEBYTECODE=1 unset CC_WRAPPER if [[ -z "$CI" ]]; then export MACH_NO_TERMINAL_FOOTER=1; fi; # clang-sys specifics PREFIX_INCLUDE="$COOKBOOK_HOST_SYSROOT/$TARGET/include" export CLANGFLAGS="-I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$TARGET -I $PREFIX_INCLUDE/c++/13.2.0/backward" export CLANGFLAGS="$CLANGFLAGS -I $PREFIX_INCLUDE -I $COOKBOOK_SYSROOT/lib/clang/21/include -D__redox__" export BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_redox="-target x86_64-unknown-redox -nostdinc $CLANGFLAGS" export LLVM_CONFIG_PATH="$COOKBOOK_TOOLCHAIN/bin/llvm-config" # Don't poison the stage1 compiler (host -> host) unset AR AS CC CXX LD LDFLAGS NM OBJCOPY OBJDUMP RANLIB READELF RUSTFLAGS STRIP (cd ${COOKBOOK_SOURCE} && ./mach build) rsync -a ./dist ${COOKBOOK_STAGE} """ ================================================ FILE: recipes/wip/web/firefox-esr/redox.patch ================================================ diff --color -ruwN source/build/moz.configure/init.configure source-new/build/moz.configure/init.configure --- source/build/moz.configure/init.configure 2026-01-07 04:09:42.000000000 +0700 +++ source-new/build/moz.configure/init.configure 2026-01-27 12:48:28.508789372 +0700 @@ -511,6 +511,8 @@ canonical_os = canonical_kernel = "NetBSD" elif os.startswith("openbsd"): canonical_os = canonical_kernel = "OpenBSD" + elif os.startswith("redox"): + canonical_os = canonical_kernel = "Redox" elif os.startswith("solaris"): canonical_os = canonical_kernel = "SunOS" elif os.startswith("wasi") and allow_wasi: @@ -934,6 +936,14 @@ set_define("XP_FREEBSD", target_is_freebsd) +@depends(target) +def target_is_redox(target): + if target.kernel == "Redox": + return True + + +set_define("XP_REDOX", target_is_redox) + @depends(target) def target_is_solaris(target): diff --color -ruwN source/mozglue/misc/PlatformMutex.h source-new/mozglue/misc/PlatformMutex.h --- source/mozglue/misc/PlatformMutex.h 2026-01-07 04:09:50.000000000 +0700 +++ source-new/mozglue/misc/PlatformMutex.h 2026-01-27 13:12:16.262181670 +0700 @@ -48,7 +48,7 @@ PlatformData* platformData(); -#if !defined(XP_WIN) && !defined(__wasi__) +#if !defined(XP_WIN) && !defined(__wasi__) && !defined(__redox__) void* platformData_[sizeof(pthread_mutex_t) / sizeof(void*)]; static_assert(sizeof(pthread_mutex_t) / sizeof(void*) != 0 && sizeof(pthread_mutex_t) % sizeof(void*) == 0, diff --color -ruwN source/python/mozbuild/mozbuild/configure/constants.py source-new/python/mozbuild/mozbuild/configure/constants.py --- source/python/mozbuild/mozbuild/configure/constants.py 2026-01-07 04:09:50.000000000 +0700 +++ source-new/python/mozbuild/mozbuild/configure/constants.py 2026-01-27 09:16:48.349211711 +0700 @@ -40,6 +40,7 @@ "NetBSD", "OpenBSD", "OSX", + "Redox", "SunOS", "WINNT", "WASI", @@ -55,6 +56,7 @@ "Linux", "NetBSD", "OpenBSD", + "Redox", "SunOS", "WINNT", "WASI", @@ -146,6 +148,7 @@ "Linux": "__linux__", "NetBSD": "__NetBSD__", "OpenBSD": "__OpenBSD__", + "Redox": "__redox__", "SunOS": "__sun__", "WINNT": "_WIN32 || __CYGWIN__", "WASI": "__wasi__", diff --color -ruwN source/xpcom/build/BinaryPath.h source-new/xpcom/build/BinaryPath.h --- source/xpcom/build/BinaryPath.h 2026-01-07 04:09:59.000000000 +0700 +++ source-new/xpcom/build/BinaryPath.h 2026-01-27 12:51:20.922621049 +0700 @@ -133,11 +133,15 @@ return rv; } -#elif defined(ANDROID) +#elif defined(ANDROID) || defined(XP_REDOX) static nsresult Get(char aResult[MAXPATHLEN]) { // On Android, we use the MOZ_ANDROID_LIBDIR variable that is set by the // Java bootstrap code. +#if defined(XP_REDOX) + const char* libDir = getenv("MOZ_REDOX_LIBDIR"); +#else const char* libDir = getenv("MOZ_ANDROID_LIBDIR"); +#endif if (!libDir) { return NS_ERROR_FAILURE; } diff --color -ruwN source/Cargo.lock source-new/Cargo.lock --- source/Cargo.lock 2026-01-07 04:09:41.000000000 +0700 +++ source-new/Cargo.lock 2026-01-27 19:15:51.024103229 +0700 @@ -3724,6 +3724,16 @@ checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" [[package]] +name = "libredox" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +dependencies = [ + "bitflags 2.9.0", + "libc", +] + +[[package]] name = "libsqlite3-sys" version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5586,11 +5596,23 @@ [[package]] name = "redox_syscall" -version = "0.5.999" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.9.0", +] [[package]] name = "redox_users" -version = "0.4.999" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.999", + "libredox", + "thiserror 1.999.999", +] [[package]] name = "regex" diff --color -ruwN source/Cargo.toml source-new/Cargo.toml --- source/Cargo.toml 2026-01-07 04:09:40.000000000 +0700 +++ source-new/Cargo.toml 2026-01-27 19:14:06.467281854 +0700 @@ -134,12 +134,6 @@ # Patch r-efi to an empty crate r-efi = { path = "build/rust/r-efi" } -# Patch redox_users to an empty crate -redox_users = { path = "build/rust/redox_users" } - -# Patch redox_syscall to an empty crate -redox_syscall = { path = "build/rust/redox_syscall" } - # Patch hermit-abi to an empty crate hermit-abi = { path = "build/rust/hermit-abi" } diff --color -ruwN source/ipc/chromium/src/base/platform_thread.h source-new/ipc/chromium/src/base/platform_thread.h --- source/ipc/chromium/src/base/platform_thread.h 2026-01-07 04:09:45.000000000 +0700 +++ source-new/ipc/chromium/src/base/platform_thread.h 2026-01-27 18:12:57.887138642 +0700 @@ -24,7 +24,7 @@ #else # include typedef pthread_t PlatformThreadHandle; -# if defined(XP_LINUX) || defined(XP_OPENBSD) || defined(XP_SOLARIS) || \ +# if defined(XP_LINUX) || defined(XP_OPENBSD) || defined(XP_REDOX) || defined(XP_SOLARIS) || \ defined(__GLIBC__) # include typedef pid_t PlatformThreadId; diff --color -ruwN source/mozglue/misc/TimeStamp_posix.cpp source-new/mozglue/misc/TimeStamp_posix.cpp --- source/mozglue/misc/TimeStamp_posix.cpp 2026-01-07 04:09:50.000000000 +0700 +++ source-new/mozglue/misc/TimeStamp_posix.cpp 2026-01-27 17:59:05.200260121 +0700 @@ -13,7 +13,10 @@ // obtained with this API; see TimeDuration::Resolution; // + +#if !defined(__redox__) #include +#endif #include #include #include diff --color -ruwN source/supply-chain/audits.toml source-new/supply-chain/audits.toml --- source/supply-chain/audits.toml 2026-01-07 04:09:51.000000000 +0700 +++ source-new/supply-chain/audits.toml 2026-01-27 19:29:15.927403772 +0700 @@ -3235,6 +3235,11 @@ version = "0.2.6" notes = "This crate uses unsafe block, but this doesn't have network and file access. I audited code." +[[audits.libredox]] +who = "Wildan M " +criteria = "safe-to-deploy" +version = "0.1.12" + [[audits.libsqlite3-sys]] who = "Ben Dean-Kawamura " criteria = "safe-to-deploy" @@ -4560,10 +4565,20 @@ delta = "1.10.1 -> 1.10.2" [[audits.redox_syscall]] +who = "Wildan M " +criteria = "safe-to-deploy" +version = "0.5.18" + +[[audits.redox_syscall]] who = "Mike Hommey " criteria = "safe-to-deploy" delta = "0.2.13 -> 0.2.16" +[[audits.redox_users]] +who = "Wildan M " +criteria = "safe-to-deploy" +version = "0.4.6" + [[audits.regex]] who = "Mike Hommey " criteria = "safe-to-deploy" @@ -4676,7 +4691,7 @@ the `regex` developers in the same repository. This crate is explicitly designed for FFI use, and should not be used directly -by Rust code. The exported `extern \"C\"` functions are not marked as `unsafe`, +by Rust code. The exported `extern "C"` functions are not marked as `unsafe`, meaning that it is technically incorrect to use them from within Rust code, however they are reasonable to use from C code. @@ -6463,7 +6478,7 @@ who = "Makoto Kato " criteria = "safe-to-deploy" version = "0.1.2" -notes = "This crate is zero-copy version of \"From\". This has no unsafe code and uses no ambient capabilities." +notes = 'This crate is zero-copy version of "From". This has no unsafe code and uses no ambient capabilities.' [[audits.zerofrom]] who = "Makoto Kato " diff --color -ruwN source/supply-chain/imports.lock source-new/supply-chain/imports.lock --- source/supply-chain/imports.lock 2026-01-07 04:09:52.000000000 +0700 +++ source-new/supply-chain/imports.lock 2026-01-27 19:29:15.929403788 +0700 @@ -1592,7 +1592,7 @@ criteria = "safe-to-deploy" version = "1.6.0" notes = """ -Grepped for \"unsafe\", \"crypt\", \"cipher\", \"fs\", \"net\" - there were no +Grepped for "unsafe", "crypt", "cipher", "fs", "net" - there were no hits except for 8 occurrences of `unsafe`. Additional `unsafe` review comments can be found in https://crrev.com/c/5445719. """ @@ -1902,7 +1902,7 @@ * Using `unsafe` in a string: ``` - src/constfn.rs: \"unsafe\" => Qualifiers::Unsafe, + src/constfn.rs: "unsafe" => Qualifiers::Unsafe, ``` * Using `std::fs` in `build/build.rs` to write `${OUT_DIR}/version.expr` @@ -2104,6 +2104,7 @@ user-id = 213776 # divviup-github-automation start = "2020-09-28" end = "2026-01-07" +renew = false [[audits.isrg.audits.base64]] who = "Tim Geoghegan " diff --color -ruwN source/build/rust/redox_syscall/Cargo.toml source-new/build/rust/redox_syscall/Cargo.toml --- source/build/rust/redox_syscall/Cargo.toml 2026-01-07 04:09:41.000000000 +0700 +++ source-new/build/rust/redox_syscall/Cargo.toml 1970-01-01 07:00:00.000000000 +0700 @@ -1,8 +0,0 @@ -[package] -name = "redox_syscall" -version = "0.5.999" -edition = "2018" -license = "MPL-2.0" - -[lib] -path = "lib.rs" diff --color -ruwN source/build/rust/redox_syscall/lib.rs source-new/build/rust/redox_syscall/lib.rs --- source/build/rust/redox_syscall/lib.rs 2026-01-07 04:09:41.000000000 +0700 +++ source-new/build/rust/redox_syscall/lib.rs 1970-01-01 07:00:00.000000000 +0700 @@ -1,3 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ diff --color -ruwN source/build/rust/redox_users/Cargo.toml source-new/build/rust/redox_users/Cargo.toml --- source/build/rust/redox_users/Cargo.toml 2026-01-07 04:09:41.000000000 +0700 +++ source-new/build/rust/redox_users/Cargo.toml 1970-01-01 07:00:00.000000000 +0700 @@ -1,8 +0,0 @@ -[package] -name = "redox_users" -version = "0.4.999" -edition = "2018" -license = "MPL-2.0" - -[lib] -path = "lib.rs" diff --color -ruwN source/build/rust/redox_users/lib.rs source-new/build/rust/redox_users/lib.rs --- source/build/rust/redox_users/lib.rs 2026-01-07 04:09:41.000000000 +0700 +++ source-new/build/rust/redox_users/lib.rs 1970-01-01 07:00:00.000000000 +0700 @@ -1,3 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ================================================ FILE: recipes/wip/web/gosub/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/gosub-browser/gosub-engine" [build] template = "custom" script = """ binary=renderer "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \ --bin "${binary}" \ --release mkdir -pv "${COOKBOOK_STAGE}/usr/bin" cp -v \ "target/${TARGET}/release/${binary}" \ "${COOKBOOK_STAGE}/usr/bin/${binary}" """ ================================================ FILE: recipes/wip/web/librewolf/mozconfig ================================================ ac_add_options --disable-tests ac_add_options --target="{TARGET}" ac_add_options --enable-bootstrap ================================================ FILE: recipes/wip/web/librewolf/recipe.toml ================================================ #TODO missing script for mach: https://codeberg.org/librewolf/source#librewolf-build-instructions # dependencies: https://packages.gentoo.org/packages/www-client/firefox/dependencies # feature flags: https://wiki.gentoo.org/wiki/Firefox#USE_flags [source] tar = "https://gitlab.com/api/v4/projects/32320088/packages/generic/librewolf-source/144.0.2-1/librewolf-144.0.2-1.source.tar.gz" [build] template = "custom" dependencies = [ "fontconfig", "atk", "cairo", "dbus", "libffi", "freetype2", "gdk-pixbuf", "glib", "gtk3", "pango", "sqlite3", "nss-nspr", "startup-notification", "zlib", "ffmpeg6", "expat", "libepoxy", "pipewire", ] script = """ DYNAMIC_INIT export MOZCONFIG="${COOKBOOK_RECIPE}/mozconfig" """ ================================================ FILE: recipes/wip/web/marmite/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rochacbruno/marmite" [build] template = "cargo" ================================================ FILE: recipes/wip/web/monolith/recipe.toml ================================================ #TODO compiled but not tested (after cargo update) [source] git = "https://github.com/Y2Z/monolith" [build] template = "custom" dependencies = [ "openssl1", ] script = """ export OPENSSL_DIR="${COOKBOOK_SYSROOT}" export OPENSSL_STATIC="true" cookbook_cargo """ ================================================ FILE: recipes/wip/web/pale-moon/.mozconfig ================================================ # Clear this if not a 64bit build _BUILD_64=1 # Set GTK Version to 2 or 3 _GTK_VERSION=3 # Standard build options for Pale Moon ac_add_options --enable-application=palemoon ac_add_options --enable-optimize="-O2 -w" ac_add_options --enable-default-toolkit=cairo-gtk$_GTK_VERSION ac_add_options --enable-jemalloc ac_add_options --enable-strip ac_add_options --enable-devtools ac_add_options --enable-av1 ac_add_options --enable-jxl ac_add_options --disable-webrtc ac_add_options --disable-gamepad ac_add_options --disable-tests ac_add_options --disable-debug ac_add_options --disable-necko-wifi ac_add_options --disable-updater ac_add_options --with-pthreads # Please see https://www.palemoon.org/redist.shtml for restrictions when using the official branding. ac_add_options --enable-official-branding export MOZILLA_OFFICIAL=1 # Processor architecture specific build options if [ -n "$_BUILD_64" ]; then ac_add_options --x-libraries=/usr/lib64 else ac_add_options --x-libraries=/usr/lib fi export MOZ_PKG_SPECIAL=gtk$_GTK_VERSION ================================================ FILE: recipes/wip/web/pale-moon/recipe.toml ================================================ #TODO missing script for mach: https://developer.palemoon.org/build/linux/ [source] tar = "https://repo.palemoon.org/MoonchildProductions/Pale-Moon/archive/33.9.1_Release.tar.gz" [build] template = "custom" dependencies = [ "gtk3", "glib", "pango", "dbus", "mesa", "libxt", "openssl1", "sqlite3", "libpulse", "libalsa", "libx11", ] ================================================ FILE: recipes/wip/web/rustyink/recipe.toml ================================================ #TODO ahash crate error [source] git = "https://github.com/arjunkomath/rustyink" [build] template = "cargo" ================================================ FILE: recipes/wip/web/servo/.servobuild ================================================ # Copy this file to .servobuild in the Servo root directory # Paths starting with "./" are relative to the repo root # Tool options [tools] [build] # Set "mode = dev" or use `mach build --dev` to build the project with warning. # or Set "mode = release" or use `mach build --release` for optimized build. # Use `mode = ` or `mach build --profile=` to build the given # profile. Check the `Cargo.toml` manifest for a complete list of custom profiles. # Defaults to prompting before building #mode = "dev" # Set "android = true" or use `mach build --android` to build the Android app. android = false # Enable `debug_assert!` macros in release mode debug-assertions = true # Set "debug-mozjs" or use `mach build --debug-mozjs` to build a debug spidermonkey. debug-mozjs = false # When a GL error occurs as a result of a WebGL operation, print the stack trace for the content # JS and native Rust code that triggered the failed operation. Warning: very slow. webgl-backtrace = false # When a DOM exception is reported, print the stack trace for the content JS and native Rust code # that triggered it. dom-backtrace = false # Pick a media stack based on the target. Other values are "gstreamer" and "dummy" media-stack = "dummy" # Set to the path to your ccache binary to enable caching of compiler outputs #ccache = "/usr/local/bin/ccache" # Any optional flags that will be added to $RUSTFLAGS #rustflags = "" # Enable or disable rustc’s incremental compilation # Cargo’s default is to enable it in debug mode but not in release mode. # Leaving this key unspecified makes mach keep Cargo’s default. # It can be set to true or false in order to always enable or always disable # incremental compilation. #incremental = false #incremental = true # Android information [android] # Defaults to the value of $ANDROID_SDK_ROOT, $ANDROID_NDK_ROOT respectively #sdk = "/opt/android-sdk" #ndk = "/opt/android-ndk" # OpenHarmony [ohos] # Defaults to the value of $OHOS_SDK_NATIVE #ndk = "/path/to/ohos-sdk//native" ================================================ FILE: recipes/wip/web/servo/recipe.toml ================================================ [source] git = "https://gitlab.redox-os.org/redox-os/servo.git" branch = "redox" [build] template = "custom" dependencies = [ "expat", "fontconfig", "freetype2", "libpng", "mesa", "zlib", ] dev-dependencies = [ "llvm21.dev", "host:libarchive", # workaround for cmake error ] script = """ DYNAMIC_INIT cp -v "${COOKBOOK_RECIPE}/.servobuild" "${COOKBOOK_SOURCE}/.servobuild" # jemalloc specific configuration export JEMALLOC_SYS_WITH_LG_PAGE=16 export TARGET_CC="$CC" export TARGET_CXX="$CXX" export TARGET_AR="$AR" # pkg-config crate can only recognize one path to pkgconfig export PKG_CONFIG_PATH_x86_64_unknown_redox="${COOKBOOK_SYSROOT}/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_redox="${COOKBOOK_SYSROOT}/lib/pkgconfig" # rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ #TODO: mozjs-sys and mozangle uses clang, it won't know our prefix C libraries, so here's the workaround PREFIX_INCLUDE="$COOKBOOK_HOST_SYSROOT/$TARGET/include" export CLANGFLAGS="-I $PREFIX_INCLUDE/c++/13.2.0 -I $PREFIX_INCLUDE/c++/13.2.0/$TARGET -I $PREFIX_INCLUDE/c++/13.2.0/backward -I $PREFIX_INCLUDE" #Mozjs specifics unset CC_WRAPPER export CARGO_MAKEFLAGS="-j $COOKBOOK_MAKE_JOBS" CCACHE="sccache" COOKBOOK_CARGO_PATH="ports/servoshell" cookbook_cargo # resources packaging mkdir -p ${COOKBOOK_STAGE}/usr/lib/servo/bin mv ${COOKBOOK_STAGE}/usr/bin/servo ${COOKBOOK_STAGE}/usr/lib/servo/bin/ ln -s ../lib/servo/bin/servo ${COOKBOOK_STAGE}/usr/bin/servo rsync -a -v ${COOKBOOK_SOURCE}/resources ${COOKBOOK_STAGE}/usr/lib/servo/ """ [package] dependencies = [ "mesa" ] ================================================ FILE: recipes/wip/web/share-preview/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/rafaelmardojai/share-preview" shallow_clone = true [build] template = "meson" dependencies = [ "glib", "gtk4", "libadwaita", ] ================================================ FILE: recipes/wip/web/sitesmith/recipe.toml ================================================ #TODO compiled but not tested [source] git = "https://github.com/BradenEverson/sitesmith" [build] template = "cargo" ================================================ FILE: recipes/wip/web/spider/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/spider-rs/spider" [build] template = "custom" dependencies = [ "openssl1", ] script = """ cookbook_cargo_packages spider_cli """ ================================================ FILE: recipes/wip/web/sukr/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/nrdxp/sukr" shallow_clone = true [build] template = "cargo" ================================================ FILE: recipes/wip/web/surf/recipe.toml ================================================ #TODO missing script for gnu make # build instructions: https://git.suckless.org/surf/file/README.html [source] tar = "https://dl.suckless.org/surf/surf-2.1.tar.gz" [build] template = "custom" dependencies = [ "webkitgtk3", ] ================================================ FILE: recipes/wip/web/teacat/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/Ultrasquid9/TeaCat" [build] template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/teacat cp -rv "${COOKBOOK_SOURCE}"/test.tcat "${COOKBOOK_STAGE}"/usr/share/teacat cookbook_cargo """ ================================================ FILE: recipes/wip/web/tola-ssg/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/kawayww/tola-ssg" [build] template = "cargo" ================================================ FILE: recipes/wip/web/verso/recipe.toml ================================================ #TODO not compiled or tested [source] git = "https://github.com/versotile-org/verso" [build] template = "cargo" dependencies = [ "freetype2", "gettext", "glib", "gstreamer", "harfbuzz", "libffi", "libiconv", "libpng", "openssl1", "pcre", "zlib", ] ================================================ FILE: recipes/wip/web/vidium/recipe.toml ================================================ #TODO cookbook_cargo function error [source] git = "https://github.com/s-panferov/vidium" [build] template = "cargo" ================================================ FILE: recipes/wip/web/webkitgtk3/recipe.toml ================================================ #TODO runtime hangs [source] tar = "https://webkitgtk.org/releases/webkitgtk-2.49.1.tar.xz" blake3 = "7f04acb2f909ad334fc623afb297ebca1d5a5005bda1682946fb37e044e45ecb" patches = ["redox.patch"] [build] template = "custom" dependencies = [ "gtk3", "libatomic", "libgcrypt", "libsoup", "libtasn1", "libwebp", "sqlite3", ] dev-dependencies = [ "host:gperf" ] script = """ DYNAMIC_INIT export WEBKIT_USE_SCCACHE=1 export PYTHONDONTWRITEBYTECODE=1 #TODO: enable more features COOKBOOK_CMAKE_FLAGS+=( -DENABLE_ASSERTS=ON -DENABLE_GAMEPAD=OFF -DENABLE_INTROSPECTION=OFF -DENABLE_MEDIA_STREAM=OFF -DENABLE_JOURNALD_LOG=OFF -DENABLE_RELEASE_LOG=ON -DENABLE_SPEECH_SYNTHESIS=OFF -DENABLE_SPELLCHECK=OFF -DENABLE_WEB_AUDIO=OFF -DENABLE_WEB_CODECS=OFF -DENABLE_VIDEO=OFF -DPORT=GTK -DUNIX=1 -DUSE_AVIF=OFF -DUSE_GSTREAMER_GL=OFF -DUSE_GTK4=OFF -DUSE_JPEGXL=OFF -DUSE_LCMS=OFF -DUSE_LIBBACKTRACE=OFF -DUSE_LIBDRM=OFF -DUSE_LIBHYPHEN=OFF -DUSE_LIBSECRET=OFF -DUSE_SKIA=OFF -DUSE_SYSPROF_CAPTURE=OFF -DUSE_SYSTEM_MALLOC=ON -DUSE_SYSTEM_SYSPROF_CAPTURE=OFF -DUSE_WOFF2=OFF #TODO: remove these when runtime hangs solved -DENABLE_JIT=OFF -DENABLE_DFG_JIT=OFF -DENABLE_FTL_JIT=OFF -DENABLE_OPENGL=OFF -DENABLE_WEBGL=OFF -DENABLE_XSLT=OFF -DENABLE_GEOLOCATION=OFF -DENABLE_WEBDRIVER=OFF -DENABLE_BUBBLEWRAP_SANDBOX=OFF -DUSE_LCMS=OFF ) cookbook_cmake patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/lib/libwebkit2gtk-4.1.so" patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" mkdir -p "${COOKBOOK_STAGE}/usr/bin" ln -sr "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" "${COOKBOOK_STAGE}/usr/bin/MiniBrowser" """ [package] dependencies = ["glib-networking"] ================================================ FILE: recipes/wip/web/webkitgtk3/redox.patch ================================================ diff -ruwN source/Source/bmalloc/bmalloc/BPlatform.h source-new/Source/bmalloc/bmalloc/BPlatform.h --- source/Source/bmalloc/bmalloc/BPlatform.h 2025-03-28 13:18:28.347204000 +0700 +++ source-new/Source/bmalloc/bmalloc/BPlatform.h 2025-10-07 20:55:41.123161164 +0700 @@ -40,7 +40,7 @@ #define BOS_DARWIN 1 #endif -#if defined(__unix) || defined(__unix__) +#if defined(__unix) || defined(__unix__) || defined(__redox__) #define BOS_UNIX 1 #endif @@ -339,7 +339,7 @@ /* BENABLE(LIBPAS) is enabling libpas build. But this does not mean we use libpas for bmalloc replacement. */ #if !defined(BENABLE_LIBPAS) -#if BCPU(ADDRESS64) && (BOS(DARWIN) || (BOS(LINUX) && (BCPU(X86_64) || BCPU(ARM64))) || BPLATFORM(PLAYSTATION)) +#if BCPU(ADDRESS64) && (BOS(DARWIN) || (BOS(LINUX) && (BCPU(X86_64) || BCPU(ARM64))) || BPLATFORM(PLAYSTATION)) || defined(__redox__) #define BENABLE_LIBPAS 1 #ifndef PAS_BMALLOC #define PAS_BMALLOC 1 diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.c source-new/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.c --- source/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.c 2023-09-18 14:56:46.731077000 +0700 +++ source-new/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.c 2025-10-07 22:23:20.298893452 +0700 @@ -57,6 +57,8 @@ #if PAS_OS(LINUX) PAS_SYSCALL(mincore(object, size, (unsigned char*)vector->raw_data)); +#elif PAS_OS(REDOX) + // no op #else PAS_SYSCALL(mincore(object, size, vector->raw_data)); #endif diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.h source-new/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.h --- source/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.h 2023-09-18 14:56:46.731077000 +0700 +++ source-new/Source/bmalloc/libpas/src/libpas/pas_committed_pages_vector.h 2025-10-07 22:23:29.232045934 +0700 @@ -56,6 +56,8 @@ PAS_ASSERT(page_index < vector->size); #if PAS_OS(LINUX) return vector->raw_data[page_index]; +#elif PAS_OS(REDOX) + return true; // redox don't have swap yet #else return vector->raw_data[page_index] & (MINCORE_REFERENCED | MINCORE_REFERENCED_OTHER | diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_monotonic_time.c source-new/Source/bmalloc/libpas/src/libpas/pas_monotonic_time.c --- source/Source/bmalloc/libpas/src/libpas/pas_monotonic_time.c 2023-09-18 14:56:46.743076800 +0700 +++ source-new/Source/bmalloc/libpas/src/libpas/pas_monotonic_time.c 2025-10-07 22:23:50.202403881 +0700 @@ -89,6 +89,15 @@ return ts.tv_sec * 1000u * 1000u * 1000u + ts.tv_nsec; } + +#elif PAS_OS(REDOX) + +uint64_t pas_get_current_monotonic_time_nanoseconds(void) +{ + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (uint64_t)ts.tv_sec * 1000000000 + (uint64_t)ts.tv_nsec; +} #endif #endif /* LIBPAS_ENABLED */ diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c source-new/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c --- source/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c 2024-12-20 17:10:23.123508500 +0700 +++ source-new/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c 2025-10-07 22:26:27.358086406 +0700 @@ -228,6 +228,8 @@ PAS_SYSCALL(madvise(ptr, size, MADV_DODUMP)); #elif PAS_PLATFORM(PLAYSTATION) // We don't need to call madvise to map page. +#elif PAS_OS(REDOX) + // madvise not implemented #elif PAS_OS(FREEBSD) PAS_SYSCALL(madvise(ptr, size, MADV_NORMAL)); #endif @@ -276,6 +278,8 @@ #elif PAS_OS(LINUX) PAS_SYSCALL(madvise(ptr, size, MADV_DONTNEED)); PAS_SYSCALL(madvise(ptr, size, MADV_DONTDUMP)); +#elif PAS_OS(REDOX) + // madvise not implemented #else PAS_SYSCALL(madvise(ptr, size, MADV_DONTNEED)); #endif diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_platform.h source-new/Source/bmalloc/libpas/src/libpas/pas_platform.h --- source/Source/bmalloc/libpas/src/libpas/pas_platform.h 2024-11-07 21:16:41.458338300 +0700 +++ source-new/Source/bmalloc/libpas/src/libpas/pas_platform.h 2025-10-07 22:22:50.849390772 +0700 @@ -132,6 +132,10 @@ #define PAS_OS_LINUX 1 #endif +#ifdef __redox__ +#define PAS_OS_REDOX 1 +#endif + #if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__) #define PAS_OS_FREEBSD 1 #endif diff -ruwN source/Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c source-new/Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c --- source/Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c 2025-03-27 13:32:32.679094000 +0700 +++ source-new/Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c 2025-10-07 22:27:40.764339395 +0700 @@ -165,16 +165,6 @@ mprotect_res = mprotect((void*)upper_guard, upper_guard_size, PROT_NONE); PAS_ASSERT(!mprotect_res); - /* - * ensure physical addresses are released - * TODO: investigate using MADV_FREE_REUSABLE instead - */ - int madvise_res = madvise((void*)upper_guard, upper_guard_size, MADV_FREE); - PAS_ASSERT(!madvise_res); - - madvise_res = madvise((void*)lower_guard, lower_guard_size, MADV_FREE); - PAS_ASSERT(!madvise_res); - PAS_PROFILE(PGM_ALLOCATE, heap_config, key); /* create struct to hold hash map value */ @@ -231,13 +221,6 @@ int mprotect_res = mprotect((void*)value->start_of_data_pages, value->size_of_data_pages, PROT_NONE); PAS_ASSERT(!mprotect_res); - /* - * ensure physical addresses are released - * TODO: investigate using MADV_FREE_REUSABLE instead - */ - int madvise_res = madvise((void*)value->start_of_data_pages, value->size_of_data_pages, MADV_FREE); - PAS_ASSERT(!madvise_res); - free_wasted_mem += value->mem_to_waste; free_virtual_mem += value->size_of_allocated_pages; diff -ruwN source/Source/JavaScriptCore/heap/BlockDirectory.cpp source-new/Source/JavaScriptCore/heap/BlockDirectory.cpp --- source/Source/JavaScriptCore/heap/BlockDirectory.cpp 2025-03-21 00:07:59.015023500 +0700 +++ source-new/Source/JavaScriptCore/heap/BlockDirectory.cpp 2025-09-09 09:08:03.419985553 +0700 @@ -68,7 +68,7 @@ // FIXME: We should figure out a solution for Windows and PlayStation. // QNX doesn't have mincore(), though the information can be had. But since all mapped // pages are resident, does it matter? -#if OS(UNIX) && !PLATFORM(PLAYSTATION) && !OS(QNX) && !OS(HAIKU) +#if OS(UNIX) && !PLATFORM(PLAYSTATION) && !OS(QNX) && !OS(HAIKU) && !defined(__redox__) size_t pageSize = WTF::pageSize(); ASSERT(!(MarkedBlock::blockSize % pageSize)); auto numberOfPagesInMarkedBlock = MarkedBlock::blockSize / pageSize; diff -ruwN source/Source/JavaScriptCore/jsc.cpp source-new/Source/JavaScriptCore/jsc.cpp --- source/Source/JavaScriptCore/jsc.cpp 2025-03-21 18:07:10.820055200 +0700 +++ source-new/Source/JavaScriptCore/jsc.cpp 2025-09-09 09:08:03.446985840 +0700 @@ -208,6 +208,8 @@ for (;;) { #if OS(WINDOWS) Sleep(1000); +#elif defined(__redox__) + //TODO #else pause(); #endif diff -ruwN source/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp source-new/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp --- source/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp 2025-03-21 00:07:59.015023500 +0700 +++ source-new/Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp 2025-09-09 09:08:03.446985840 +0700 @@ -37,7 +37,7 @@ #include #include #include -#else +#elif !defined(__redox__) #include #endif #endif @@ -66,7 +66,7 @@ } cacheVersion.construct(0); dataLogLnIf(JSCBytecodeCacheVersionInternal::verbose, "Failed to get UUID for JavaScriptCore framework"); -#elif OS(UNIX) && !PLATFORM(PLAYSTATION) && !OS(HAIKU) +#elif OS(UNIX) && !PLATFORM(PLAYSTATION) && !OS(HAIKU) && !defined(__redox__) auto result = ([&] -> std::optional { Dl_info info { }; if (!dladdr(jsFunctionAddr, &info)) diff -ruwN source/Source/JavaScriptCore/runtime/MachineContext.h source-new/Source/JavaScriptCore/runtime/MachineContext.h --- source/Source/JavaScriptCore/runtime/MachineContext.h 2025-03-21 00:07:59.015023500 +0700 +++ source-new/Source/JavaScriptCore/runtime/MachineContext.h 2025-09-09 09:08:03.473986127 +0700 @@ -158,7 +158,7 @@ { #if OS(DARWIN) return stackPointerImpl(machineContext->__ss); -#elif OS(HAIKU) +#elif OS(HAIKU) || defined(__redox__) #if CPU(X86_64) return reinterpret_cast(machineContext.rsp); #else @@ -287,7 +287,7 @@ { #if OS(DARWIN) return framePointerImpl(machineContext->__ss); -#elif OS(HAIKU) +#elif OS(HAIKU) || defined(__redox__) #if CPU(X86_64) return reinterpret_cast(machineContext.rbp); #else @@ -455,7 +455,7 @@ { #if OS(DARWIN) return instructionPointerImpl(machineContext->__ss); -#elif OS(HAIKU) +#elif OS(HAIKU) || defined(__redox__) #if CPU(X86_64) return reinterpret_cast((uintptr_t&) machineContext.rip); #else @@ -649,7 +649,7 @@ { #if OS(DARWIN) return argumentPointer<1>(machineContext->__ss); -#elif OS(HAIKU) +#elif OS(HAIKU) || defined(__redox__) #if CPU(X86_64) return reinterpret_cast((uintptr_t&) machineContext.rsi); #else @@ -760,6 +760,13 @@ #error Unknown Architecture #endif +#elif defined(__redox__) +#if CPU(X86_64) + return reinterpret_cast((uintptr_t) machineContext.rbx); +#else +#error Unknown Architecture +#endif + #else #error Need a way to get the frame pointer for another thread on this platform #endif @@ -834,7 +841,7 @@ // LLInt uses regT4 as PC. #if OS(DARWIN) return llintInstructionPointer(machineContext->__ss); -#elif OS(HAIKU) +#elif OS(HAIKU) || defined(__redox__) #if CPU(X86_64) return reinterpret_cast((uintptr_t&) machineContext.r8); #else diff -ruwN source/Source/ThirdParty/ANGLE/GLESv2.cmake source-new/Source/ThirdParty/ANGLE/GLESv2.cmake --- source/Source/ThirdParty/ANGLE/GLESv2.cmake 2025-02-17 19:59:58.567796700 +0700 +++ source-new/Source/ThirdParty/ANGLE/GLESv2.cmake 2025-09-09 09:08:03.495986361 +0700 @@ -120,7 +120,7 @@ if(is_linux OR is_chromeos OR is_android OR is_fuchsia) list(APPEND libangle_common_sources - "src/common/system_utils_linux.cpp" + #"src/common/system_utils_linux.cpp" "src/common/system_utils_posix.cpp" ) endif() diff -ruwN source/Source/ThirdParty/ANGLE/PlatformGTK.cmake source-new/Source/ThirdParty/ANGLE/PlatformGTK.cmake --- source/Source/ThirdParty/ANGLE/PlatformGTK.cmake 2023-10-21 14:33:32.730009300 +0700 +++ source-new/Source/ThirdParty/ANGLE/PlatformGTK.cmake 2025-09-09 09:08:03.500986415 +0700 @@ -1,4 +1,4 @@ -list(APPEND ANGLE_DEFINITIONS ANGLE_PLATFORM_LINUX EGL_NO_PLATFORM_SPECIFIC_TYPES USE_SYSTEM_EGL) +list(APPEND ANGLE_DEFINITIONS ANGLE_PLATFORM_POSIX EGL_NO_PLATFORM_SPECIFIC_TYPES USE_SYSTEM_EGL) include(linux.cmake) if (USE_OPENGL) diff -ruwN source/Source/ThirdParty/ANGLE/src/common/log_utils.h source-new/Source/ThirdParty/ANGLE/src/common/log_utils.h --- source/Source/ThirdParty/ANGLE/src/common/log_utils.h 2025-02-17 19:59:58.571796700 +0700 +++ source-new/Source/ThirdParty/ANGLE/src/common/log_utils.h 2025-09-09 09:08:03.501986425 +0700 @@ -136,10 +136,12 @@ return FmtHexAutoSized(os, fmt.mValue, fmt.mPrefix, "0x", '0'); } +#if !defined(__redox__) friend std::wostream &operator<<(std::wostream &wos, const FmtHexHelper &fmt) { return FmtHexAutoSized(wos, fmt.mValue, fmt.mPrefix, L"0x", L'0'); } +#endif }; } // namespace priv diff -ruwN source/Source/ThirdParty/ANGLE/src/common/platform.h source-new/Source/ThirdParty/ANGLE/src/common/platform.h --- source/Source/ThirdParty/ANGLE/src/common/platform.h 2024-09-03 13:28:47.067031900 +0700 +++ source-new/Source/ThirdParty/ANGLE/src/common/platform.h 2025-09-09 09:08:03.518986606 +0700 @@ -28,7 +28,7 @@ # define ANGLE_PLATFORM_POSIX 1 #elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \ defined(__DragonFly__) || defined(__sun) || defined(__GLIBC__) || defined(__GNU__) || \ - defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__) + defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__) || defined(__redox__) # define ANGLE_PLATFORM_POSIX 1 #else # error Unsupported platform. diff -ruwN source/Source/ThirdParty/ANGLE/src/common/system_utils.h source-new/Source/ThirdParty/ANGLE/src/common/system_utils.h --- source/Source/ThirdParty/ANGLE/src/common/system_utils.h 2024-05-30 18:59:22.953676200 +0700 +++ source-new/Source/ThirdParty/ANGLE/src/common/system_utils.h 2025-09-09 09:08:03.536986798 +0700 @@ -256,7 +256,9 @@ } #endif -void SetCurrentThreadName(const char *name); +#if !defined(__redox__) +void SetCurrentThreadName(const char *name) +#endif } // namespace angle #endif // COMMON_SYSTEM_UTILS_H_ diff -ruwN source/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp source-new/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp --- source/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp 2024-05-30 18:59:22.953676200 +0700 +++ source-new/Source/ThirdParty/ANGLE/src/common/system_utils_posix.cpp 2025-09-09 09:08:03.539986830 +0700 @@ -33,6 +33,11 @@ # include #endif +#if defined(__redox__) +#define SEGV_MAPERR 1 +#define SEGV_ACCERR 2 +#endif + namespace angle { diff -ruwN source/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp source-new/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp --- source/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp 2024-06-25 15:04:37.142420000 +0700 +++ source-new/Source/ThirdParty/ANGLE/src/common/WorkerThread.cpp 2025-09-09 09:08:03.557987021 +0700 @@ -165,7 +165,9 @@ void AsyncWorkerPool::threadLoop() { +#if !defined(__redox__) angle::SetCurrentThreadName("ANGLE-Worker"); +#endif while (true) { diff -ruwN source/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp source-new/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp --- source/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp 2025-02-05 16:14:42.678567400 +0700 +++ source-new/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp 2025-09-09 09:08:03.577987234 +0700 @@ -58,7 +58,7 @@ # include "libANGLE/renderer/gl/wgl/DisplayWGL.h" # elif ANGLE_ENABLE_CGL # include "libANGLE/renderer/gl/cgl/DisplayCGL.h" -# elif defined(ANGLE_PLATFORM_LINUX) +# elif defined(ANGLE_PLATFORM_LINUX) || defined(__redox__) # include "libANGLE/renderer/gl/egl/DisplayEGL.h" # if defined(ANGLE_USE_X11) # include "libANGLE/renderer/gl/glx/DisplayGLX_api.h" @@ -422,7 +422,7 @@ impl = new rx::DisplayCGL(state); break; -# elif defined(ANGLE_PLATFORM_LINUX) +# elif defined(ANGLE_PLATFORM_LINUX) || defined(__redox__) # if defined(ANGLE_USE_GBM) if (platformType == 0) { diff -ruwN source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp source-new/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp --- source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp 2025-02-17 19:59:58.575796600 +0700 +++ source-new/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CLCommandQueueVk.cpp 2025-09-09 09:08:03.578987245 +0700 @@ -142,7 +142,9 @@ angle::Result DispatchWorkThread::finishLoop() { +#if !defined(__redox__) angle::SetCurrentThreadName("ANGLE-CL-CQD"); +#endif while (true) { diff -ruwN source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp source-new/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp --- source/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp 2025-02-05 16:14:42.690567300 +0700 +++ source-new/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandQueue.cpp 2025-09-09 09:08:03.578987245 +0700 @@ -378,7 +378,9 @@ void CleanUpThread::processTasks() { +#if !defined(__redox__) angle::SetCurrentThreadName("ANGLE-GC"); +#endif while (true) { diff -ruwN source/Source/ThirdParty/ANGLE/src/libGLESv2.gni source-new/Source/ThirdParty/ANGLE/src/libGLESv2.gni --- source/Source/ThirdParty/ANGLE/src/libGLESv2.gni 2025-02-17 19:59:58.587796200 +0700 +++ source-new/Source/ThirdParty/ANGLE/src/libGLESv2.gni 2025-09-09 09:08:03.578987245 +0700 @@ -115,7 +115,7 @@ if (is_linux || is_chromeos || is_android || is_fuchsia) { libangle_common_sources += [ - "src/common/system_utils_linux.cpp", + #"src/common/system_utils_linux.cpp", "src/common/system_utils_posix.cpp", ] } diff -ruwN source/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h source-new/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h --- source/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h 2024-08-14 15:56:17.506453500 +0700 +++ source-new/Source/ThirdParty/skia/src/gpu/ganesh/GrAutoLocaleSetter.h 2025-09-09 09:08:03.579987255 +0700 @@ -27,7 +27,7 @@ #define HAVE_XLOCALE 0 #endif -#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) +#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) || defined(__redox__) #define HAVE_LOCALE_T 0 #else #define HAVE_LOCALE_T 1 diff -ruwN source/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp source-new/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp --- source/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp 2024-05-30 18:59:23.965655000 +0700 +++ source-new/Source/ThirdParty/skia/src/ports/SkMemory_malloc.cpp 2025-09-09 09:08:03.579987255 +0700 @@ -126,7 +126,7 @@ #elif defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 17 completeSize = malloc_usable_size(addr); SkASSERT(completeSize >= size); - #elif defined(SK_BUILD_FOR_UNIX) + #elif defined(SK_BUILD_FOR_UNIX) && !defined(__redox__) completeSize = malloc_usable_size(addr); SkASSERT(completeSize >= size); #elif defined(SK_BUILD_FOR_WIN) diff -ruwN source/Source/WebCore/page/Page.cpp source-new/Source/WebCore/page/Page.cpp --- source/Source/WebCore/page/Page.cpp 2025-04-01 14:53:09.527295000 +0700 +++ source-new/Source/WebCore/page/Page.cpp 2025-09-09 09:08:03.580987266 +0700 @@ -536,8 +536,10 @@ if (RefPtr scrollingCoordinator = m_scrollingCoordinator) scrollingCoordinator->pageDestroyed(); +#if ENABLE(RESOURCE_USAGE) if (RefPtr resourceUsageOverlay = m_resourceUsageOverlay) resourceUsageOverlay->detachFromPage(); +#endif checkedBackForward()->close(); if (!isUtilityPage()) @@ -2981,9 +2983,11 @@ return; m_shouldSuppressHDR = shouldSuppressHDR; + #if ENABLE(VIDEO) forEachDocument([](auto& document) { document.shouldSuppressHDRDidChange(); }); + #endif } #if ENABLE(MEDIA_STREAM) diff -ruwN source/Source/WebCore/PlatformGTK.cmake source-new/Source/WebCore/PlatformGTK.cmake --- source/Source/WebCore/PlatformGTK.cmake 2024-12-16 16:07:48.162613200 +0700 +++ source-new/Source/WebCore/PlatformGTK.cmake 2025-09-09 09:08:03.580987266 +0700 @@ -75,21 +75,18 @@ ) list(APPEND WebCore_LIBRARIES - ${ENCHANT_LIBRARIES} ${GLIB_GIO_LIBRARIES} ${GLIB_GMODULE_LIBRARIES} ${GLIB_GOBJECT_LIBRARIES} ${GLIB_LIBRARIES} ${LIBSECRET_LIBRARIES} ${LIBTASN1_LIBRARIES} - ${HYPHEN_LIBRARIES} ${UPOWERGLIB_LIBRARIES} ${X11_X11_LIB} GTK::GTK ) list(APPEND WebCore_SYSTEM_INCLUDE_DIRECTORIES - ${ENCHANT_INCLUDE_DIRS} ${GIO_UNIX_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${LIBSECRET_INCLUDE_DIRS} diff -ruwN source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp source-new/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp --- source/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-03-31 16:35:43.461813700 +0700 +++ source-new/Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp 2025-09-09 09:08:03.591987383 +0700 @@ -48,13 +48,13 @@ #include #endif -#if OS(DARWIN) +#if OS(DARWIN) || defined(__redox__) #define MSG_NOSIGNAL 0 #endif // Although it's available on Darwin, SOCK_SEQPACKET seems to work differently // than in traditional Unix so fallback to STREAM on that platform. -#if defined(SOCK_SEQPACKET) && !OS(DARWIN) +#if defined(SOCK_SEQPACKET) && !OS(DARWIN) && !defined(__redox__) #define SOCKET_TYPE SOCK_SEQPACKET #else #if USE(GLIB) diff -ruwN source/Source/WebKit/PlatformGTK.cmake source-new/Source/WebKit/PlatformGTK.cmake --- source/Source/WebKit/PlatformGTK.cmake 2025-03-05 17:09:47.273706000 +0700 +++ source-new/Source/WebKit/PlatformGTK.cmake 2025-09-09 09:08:03.644987947 +0700 @@ -313,7 +313,6 @@ ) list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES - ${ENCHANT_INCLUDE_DIRS} ${GIO_UNIX_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS} ${GSTREAMER_INCLUDE_DIRS} diff -ruwN source/Source/WTF/wtf/glib/FileSystemGlib.cpp source-new/Source/WTF/wtf/glib/FileSystemGlib.cpp --- source/Source/WTF/wtf/glib/FileSystemGlib.cpp 2024-12-16 16:07:48.134613800 +0700 +++ source-new/Source/WTF/wtf/glib/FileSystemGlib.cpp 2025-09-09 09:08:03.644987947 +0700 @@ -70,7 +70,7 @@ return CString({ readLinkBuffer, static_cast(result) }); WTF_ALLOW_UNSAFE_BUFFER_USAGE_END } -#elif OS(HURD) +#elif OS(HURD) || defined(__redox__) CString currentExecutablePath() { return { }; diff -ruwN source/Source/WTF/wtf/InlineASM.h source-new/Source/WTF/wtf/InlineASM.h --- source/Source/WTF/wtf/InlineASM.h 2024-09-23 17:54:44.750106000 +0700 +++ source-new/Source/WTF/wtf/InlineASM.h 2025-09-09 09:08:03.667988192 +0700 @@ -89,7 +89,8 @@ || OS(HURD) \ || OS(NETBSD) \ || OS(QNX) \ - || OS(WINDOWS) + || OS(WINDOWS) \ + || defined(__redox__) // GNU as-compatible syntax. #define LOCAL_LABEL_STRING(name) ".L" #name #endif diff -ruwN source/Source/WTF/wtf/PlatformEnable.h source-new/Source/WTF/wtf/PlatformEnable.h --- source/Source/WTF/wtf/PlatformEnable.h 2025-03-18 15:33:00.063181400 +0700 +++ source-new/Source/WTF/wtf/PlatformEnable.h 2026-03-16 10:49:25.498709796 +0700 @@ -698,7 +698,7 @@ #if !defined(ENABLE_DFG_JIT) && ENABLE(JIT) /* Enable the DFG JIT on X86 and X86_64. */ -#if CPU(X86_64) && (OS(DARWIN) || OS(LINUX) || OS(FREEBSD) || OS(HAIKU) || OS(HURD) || OS(WINDOWS)) +#if CPU(X86_64) && (OS(DARWIN) || OS(LINUX) || OS(FREEBSD) || OS(HAIKU) || OS(HURD) || OS(WINDOWS) || defined(__redox__)) #define ENABLE_DFG_JIT 1 #endif diff -ruwN source/Source/WTF/wtf/PlatformHave.h source-new/Source/WTF/wtf/PlatformHave.h --- source/Source/WTF/wtf/PlatformHave.h 2025-04-02 19:09:45.800669000 +0700 +++ source-new/Source/WTF/wtf/PlatformHave.h 2025-09-09 09:08:03.707988617 +0700 @@ -231,7 +231,7 @@ #define HAVE_MACH_MEMORY_ENTRY 1 #endif -#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || OS(HAIKU) || OS(NETBSD) || OS(OPENBSD) || OS(LINUX) || OS(HURD) || OS(QNX)) && (CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(RISCV64))) +#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || OS(HAIKU) || OS(NETBSD) || OS(OPENBSD) || OS(LINUX) || OS(HURD) || OS(QNX) || defined(__redox__)) && (CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(RISCV64))) #define HAVE_MACHINE_CONTEXT 1 #endif diff -ruwN source/Source/WTF/wtf/PlatformOS.h source-new/Source/WTF/wtf/PlatformOS.h --- source/Source/WTF/wtf/PlatformOS.h 2025-04-03 12:49:09.282701700 +0700 +++ source-new/Source/WTF/wtf/PlatformOS.h 2025-09-09 09:08:03.709988639 +0700 @@ -143,7 +143,8 @@ || OS(OPENBSD) \ || defined(unix) \ || defined(__unix) \ - || defined(__unix__) + || defined(__unix__) \ + || defined(__redox__) #define WTF_OS_UNIX 1 #endif diff -ruwN source/Source/WTF/wtf/PlatformRegisters.h source-new/Source/WTF/wtf/PlatformRegisters.h --- source/Source/WTF/wtf/PlatformRegisters.h 2024-11-20 20:56:01.847236400 +0700 +++ source-new/Source/WTF/wtf/PlatformRegisters.h 2025-09-09 09:08:03.723988787 +0700 @@ -39,6 +39,8 @@ typedef ucontext_t mcontext_t; #elif OS(QNX) #include +#elif defined(__redox__) +#include #else #include #endif diff -ruwN source/Source/WTF/wtf/posix/CPUTimePOSIX.cpp source-new/Source/WTF/wtf/posix/CPUTimePOSIX.cpp --- source/Source/WTF/wtf/posix/CPUTimePOSIX.cpp 2023-09-18 14:56:45.363115500 +0700 +++ source-new/Source/WTF/wtf/posix/CPUTimePOSIX.cpp 2025-09-09 09:08:03.727988830 +0700 @@ -47,10 +47,14 @@ Seconds CPUTime::forCurrentThread() { +#if defined(__redox__) + return Seconds(0); +#else struct timespec ts { }; int ret = clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts); RELEASE_ASSERT(!ret); return Seconds(ts.tv_sec) + Seconds::fromNanoseconds(ts.tv_nsec); +#endif } } diff -ruwN source/Source/WTF/wtf/posix/FileHandlePOSIX.cpp source-new/Source/WTF/wtf/posix/FileHandlePOSIX.cpp --- source/Source/WTF/wtf/posix/FileHandlePOSIX.cpp 2025-03-21 18:07:10.828055100 +0700 +++ source-new/Source/WTF/wtf/posix/FileHandlePOSIX.cpp 2025-09-09 09:08:03.757989149 +0700 @@ -39,6 +39,10 @@ #include #include +#if defined(__redox__) +#define MAP_FILE 0 +#endif + namespace WTF::FileSystemImpl { std::optional FileHandle::read(std::span data) diff -ruwN source/Source/WTF/wtf/posix/ThreadingPOSIX.cpp source-new/Source/WTF/wtf/posix/ThreadingPOSIX.cpp --- source/Source/WTF/wtf/posix/ThreadingPOSIX.cpp 2025-03-05 17:09:47.149706400 +0700 +++ source-new/Source/WTF/wtf/posix/ThreadingPOSIX.cpp 2025-09-09 09:08:03.762989203 +0700 @@ -356,7 +356,7 @@ void Thread::changePriority(int delta) { -#if HAVE(PTHREAD_SETSCHEDPARAM) +#if HAVE(PTHREAD_SETSCHEDPARAM) && !defined(__redox__) Locker locker { m_mutex }; int policy; ================================================ FILE: recipes/wip/web/webkitgtk4/recipe.toml ================================================ #TODO not compiled or tested [source] tar = "https://webkitgtk.org/releases/webkitgtk-2.49.1.tar.xz" blake3 = "7f04acb2f909ad334fc623afb297ebca1d5a5005bda1682946fb37e044e45ecb" #patches = ["redox.patch"] [build] template = "custom" dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", #TODO "gstreamer", "gtk4", "harfbuzz", "libepoxy", "libatomic", "libffi", "libgcrypt", "libgpg-error", "libiconv", "libicu", "libjpeg", "libpng", "libpsl", "libpthread-stubs", "libsoup", "libtasn1", "libwebp", "libx11", "libxau", "libxcb", "libxext", "libxfixes", "libxi", "libxml2", "libxrandr", "libxrender", "libxslt", "libxxf86vm", "mesa-x11", "nghttp2", "pango", "pcre2", "pixman", "shared-mime-info", "sqlite3", "x11proto", "xextproto", "xz", "zlib", ] script = """ DYNAMIC_INIT export WEBKIT_USE_SCCACHE=1 export PYTHONDONTWRITEBYTECODE=1 #TODO: enable more features COOKBOOK_CMAKE_FLAGS+=( -DENABLE_ASSERTS=ON -DENABLE_GAMEPAD=OFF -DENABLE_INTROSPECTION=OFF -DENABLE_MEDIA_STREAM=OFF -DENABLE_JOURNALD_LOG=OFF -DENABLE_RELEASE_LOG=ON -DENABLE_SPEECH_SYNTHESIS=OFF -DENABLE_SPELLCHECK=OFF -DENABLE_WEB_AUDIO=OFF -DENABLE_WEB_CODECS=OFF -DENABLE_VIDEO=OFF -DPORT=GTK -DUNIX=1 -DUSE_AVIF=OFF -DUSE_GSTREAMER_GL=OFF -DUSE_GTK4=ON -DUSE_JPEGXL=OFF -DUSE_LCMS=OFF -DUSE_LIBBACKTRACE=OFF -DUSE_LIBDRM=OFF -DUSE_LIBHYPHEN=OFF -DUSE_LIBSECRET=OFF -DUSE_SKIA=OFF -DUSE_SYSPROF_CAPTURE=OFF -DUSE_SYSTEM_MALLOC=OFF -DUSE_SYSTEM_SYSPROF_CAPTURE=OFF -DUSE_WOFF2=OFF ) cookbook_cmake patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/lib/libwebkit2gtk-4.1.so" patchelf --replace-needed "${COOKBOOK_SYSROOT}/usr/lib/libsqlite3.so" "libsqlite3.so" "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" mkdir -p "${COOKBOOK_STAGE}/usr/bin" ln -sr "${COOKBOOK_STAGE}/usr/libexec/webkit2gtk-4.1/MiniBrowser" "${COOKBOOK_STAGE}/usr/bin/MiniBrowser" """ ================================================ FILE: recipes/wip/web/zen-browser/recipe.toml ================================================ #TODO missing script for npm # build instructions - https://docs.zen-browser.app/building #TODO analyze the dependencies [source] git = "https://github.com/zen-browser/desktop" branch = "stable" [build] template = "custom" ================================================ FILE: recipes/wip/x11/drm-info/recipe.toml ================================================ [source] tar = "https://gitlab.freedesktop.org/emersion/drm_info/-/archive/v2.9.0/drm_info-v2.9.0.tar.gz" blake3 = "48ff592b206a85c1d946abfe2f8a4e7ef40f9f1ee7d3d5ee454a33390f86d8cb" patches = ["redox.patch"] [build] dependencies = [ "json-c", "libdrm", ] template = "meson" ================================================ FILE: recipes/wip/x11/drm-info/redox.patch ================================================ diff -ruwN source-old/meson.build source/meson.build --- source-old/meson.build 2025-11-16 10:35:59.000000000 -0700 +++ source/meson.build 2025-12-11 15:29:28.845861423 -0700 @@ -68,7 +68,7 @@ elif libdrm.type_name() == 'internal' fourcc_h = meson.current_source_dir() / 'subprojects/libdrm/include/drm/drm_fourcc.h' else - fourcc_h = libdrm.get_variable(pkgconfig: 'pc_sysrootdir') + libdrm.get_variable(pkgconfig: 'includedir') / 'libdrm/drm_fourcc.h' + fourcc_h = libdrm.get_variable(pkgconfig: 'includedir') / 'libdrm/drm_fourcc.h' endif # The DRM_BUS_FAUX bus and its information is included in libdrm v2.4.127 ================================================ FILE: recipes/wip/x11/feh/recipe.toml ================================================ [source] tar = "https://feh.finalrewind.org/feh-3.11.2.tar.bz2" blake3 = "b9d704e0b37d99068cbc76d2b73c3b6ef673612060d7cfef0f5a3e8886255276" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "freetype2", "imlib2", "libpng", "libxau", "libxcb", "libx11", "libxext", "libxinerama", "libxt", "x11proto", "zlib", ] template = "custom" script = """ DYNAMIC_INIT rsync -a --delete "${COOKBOOK_SOURCE}/" ./ export LDLIBS="$("${PKG_CONFIG}" --libs freetype2 imlib2 libpng x11)" export PREFIX="/usr" "${COOKBOOK_MAKE}" curl=0 verscmp=0 install -Dm0755 src/feh "${COOKBOOK_STAGE}/usr/bin/feh" """ ================================================ FILE: recipes/wip/x11/font-util/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/font/font-util-1.4.1.tar.xz" blake3 = "b430a69efcba19f59d95bcb967aab1d5838b38f2bc94cbc58f6867eeeba21a3e" [build] template = "configure" ================================================ FILE: recipes/wip/x11/i3/i3/recipe.toml ================================================ #TODO: GLOB_TILDE and wordexp.h [source] tar = "https://i3wm.org/downloads/i3-4.24.tar.xz" blake3 = "3b54ed52759339e545a7a5f602946abc0164c37eb801e79c0cb40f93dbae53d2" [build] dependencies = [ "cairo", "libev", "libxkbcommon-x11", "pango", "pcre2", "startup-notification", "xcb-util-cursor", "xcb-util-keysyms", "xcb-util-wm", "xcb-util-xrm", "yajl", ] template = "meson" ================================================ FILE: recipes/wip/x11/iso-codes/recipe.toml ================================================ #TODO: move to appropriate category [source] tar = "https://salsa.debian.org/iso-codes-team/iso-codes/-/archive/v4.19.0/iso-codes-v4.19.0.tar.gz" blake3 = "153cc1748c96c4c6e8a00566aa7d0a573ec45f84c9155afd162cfc7a0cd6314b" [build] template = "configure" ================================================ FILE: recipes/wip/x11/jwm/recipe.toml ================================================ [source] tar = "https://github.com/joewing/jwm/releases/download/v2.4.6/jwm-2.4.6.tar.xz" blake3 = "08d69eee4584ba9346d4f326581e8538247a37d6fe11dd8604de7a8a7adbdd51" [build] dependencies = [ "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gettext", "glib", "harfbuzz", "libffi", "libice", "libiconv", "libjpeg", "libpng", "libpthread-stubs", #TODO for SVG support: "librsvg", "libsm", "libx11", "libxau", "libxcb", "libxext", "libxft", "libxmu", "libxpm", "libxrender", "libxt", "pango", "pcre2", "pixman", "x11proto", "zlib", ] template = "custom" script = """ DYNAMIC_INIT export LIBS="-liconv -lintl" rsync -a --delete "${COOKBOOK_SOURCE}/" ./ COOKBOOK_CONFIGURE="./configure" cookbook_configure """ ================================================ FILE: recipes/wip/x11/keybinder3/recipe.toml ================================================ [source] tar = "https://github.com/kupferlauncher/keybinder/releases/download/keybinder-3.0-v0.3.2/keybinder-3.0-0.3.2.tar.gz" blake3 = "04b010524abf7af8a6bdfdbeff393c0feecf2bdcc1fd642e75113137ccb62aed" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", "gtk3", "harfbuzz", "libepoxy", "libffi", "libiconv", "libicu", "libjpeg", "libpng", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxfixes", "libxft", "libxi", "libxrandr", "libxrender", "libxxf86vm", "mesa-x11", "pango", "pcre", "pcre2", "pixman", "shared-mime-info", "x11proto", "xcb-proto", "xextproto", "xtrans", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/leftwm/recipe.toml ================================================ #TODO: needs mkfifo in nix crate [source] git = "https://github.com/leftwm/leftwm" [build] dependencies = [] template = "custom" script = """ DYNAMIC_INIT COOKBOOK_SOURCE="${COOKBOOK_SOURCE}/leftwm" cookbook_cargo """ ================================================ FILE: recipes/wip/x11/libdrm/recipe.toml ================================================ [source] tar = "https://gitlab.freedesktop.org/mesa/libdrm/-/archive/libdrm-2.4.125/libdrm-libdrm-2.4.125.tar.gz" blake3 = "33e6448252639f4ff8a8cd30129b335c5d85356c1c93f8d77a79221003b14f66" patches = ["redox.patch"] [build] template = "meson" mesonflags = [ "-Damdgpu=disabled", "-Dintel=disabled", "-Dnouveau=disabled", "-Dradeon=disabled", "-Dvmwgfx=disabled", ] ================================================ FILE: recipes/wip/x11/libdrm/redox.patch ================================================ diff -ruwN source-old/include/drm/drm.h source/include/drm/drm.h --- source-old/include/drm/drm.h 2025-06-08 06:27:53.000000000 -0600 +++ source/include/drm/drm.h 2025-10-30 17:17:33.654234959 -0600 @@ -44,7 +44,11 @@ #else /* One of the BSDs */ #include +#if defined(__redox__) +#include +#else #include +#endif #include typedef int8_t __s8; typedef uint8_t __u8; diff -ruwN source-old/xf86drm.c source/xf86drm.c --- source-old/xf86drm.c 2025-06-08 06:27:53.000000000 -0600 +++ source/xf86drm.c 2025-10-30 17:18:58.374958567 -0600 @@ -57,6 +57,19 @@ #ifdef MAJOR_IN_SYSMACROS #include #endif +#if defined(__redox__) +// From musl sys/sysmacros.h +#define major(x) \ + ((unsigned)( (((x)>>31>>1) & 0xfffff000) | (((x)>>8) & 0x00000fff) )) +#define minor(x) \ + ((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) )) + +#define makedev(x,y) ( \ + (((x)&0xfffff000ULL) << 32) | \ + (((x)&0x00000fffULL) << 8) | \ + (((y)&0xffffff00ULL) << 12) | \ + (((y)&0x000000ffULL)) ) +#endif #if HAVE_SYS_SYSCTL_H #include #endif @@ -304,9 +317,14 @@ char *modifier_name = NULL; bool result = false; +#if defined(__redox__) + fprintf(stderr, "open_memstream not available on Redox\n"); + return NULL; +#else fp = open_memstream(&modifier_name, &size); if (!fp) return NULL; +#endif switch (type) { case DRM_FORMAT_MOD_ARM_TYPE_AFBC: @@ -409,9 +427,14 @@ char *mod_amd = NULL; size_t size = 0; +#if defined(__redox__) + fprintf(stderr, "open_memstream not available on Redox\n"); + return NULL; +#else fp = open_memstream(&mod_amd, &size); if (!fp) return NULL; +#endif switch (tile_version) { case AMD_FMT_MOD_TILE_VER_GFX9: diff -ruwN source-old/xf86drm.h source/xf86drm.h --- source-old/xf86drm.h 2025-06-08 06:27:53.000000000 -0600 +++ source/xf86drm.h 2025-10-30 17:17:33.655115281 -0600 @@ -47,7 +47,7 @@ #define DRM_MAX_MINOR 64 /* deprecated */ #endif -#if defined(__linux__) +#if defined(__linux__) || defined(__redox__) #define DRM_IOCTL_NR(n) _IOC_NR(n) #define DRM_IOC_VOID _IOC_NONE ================================================ FILE: recipes/wip/x11/libfontenc/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libfontenc-1.1.8.tar.xz" blake3 = "6ab127a335f7cb4892566e59448d91e9ec43ac522f31f97a3c94350f0a3ecaf4" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "x11proto", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libglvnd/recipe.toml ================================================ [source] # meson support not in latest release git = "https://github.com/NVIDIA/libglvnd.git" [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "x11proto", ] template = "meson" ================================================ FILE: recipes/wip/x11/libice/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libICE-1.1.2.tar.xz" blake3 = "3d1d41041e0a58799a5e9965fd258a4f6875143102644fbbc71061eb4c652577" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "x11proto", "xtrans", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libsm/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libSM-1.2.6.tar.xz" blake3 = "fccedc1f9781bab20b0084557464099a7b793cd704d4bb702f200def4c96dcd8" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libice", "x11proto", "xtrans", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libx11/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libX11-1.8.12.tar.xz" blake3 = "5bf1c64733322b6a90d9bce8d2bd2d8117a4950955caa00d0cd7974d42571d1e" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libxau", "libxcb", "x11proto", "xtrans", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --enable-malloc0returnsnull """ ================================================ FILE: recipes/wip/x11/libxau/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXau-1.0.12.tar.xz" blake3 = "674bc71a888eec20f0e29989e4669df90309d4baacad058107cdf89d23803bcc" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "x11proto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxaw/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXaw-1.0.16.tar.xz" blake3 = "f2a3b4955508dc7a576ad473119562b724f7936d312c85c79cb32f614c60f0c5" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libice", "libpthread-stubs", "libsm", "libx11", "libxau", "libxcb", "libxext", "libxmu", "libxpm", "libxt", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxcb/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/xcb/libxcb-1.17.0.tar.xz" blake3 = "3dce3b8adc257177dfec9b6b6cf55eeac13921520dd6c372fd8f9d867600337b" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libxau", "x11proto", "xcb-proto", ] template = "configure" configureflags = [ "--disable-devel-docs", ] ================================================ FILE: recipes/wip/x11/libxcomposite/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXcomposite-0.4.6.tar.xz" blake3 = "7e02026864066869aefc1d688415b1e8c6ab0b639556f93b6f5e86063aa1bbac" script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "libx11", "libxfixes", "x11proto", ] script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxcvt/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libxcvt-0.1.3.tar.xz" blake3 = "a6c8f264a70a742d2634f53d19489b984c28df11cb5653042e8921f7596534bb" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT cookbook_meson """ ================================================ FILE: recipes/wip/x11/libxdamage/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXdamage-1.1.6.tar.xz" blake3 = "d3d75f2656027288f87b9ddda8bf019862c63c6e4aeadd92f45870df6c2a7ce9" script = """ autotools_recursive_regenerate """ [build] template = "custom" dependencies = [ "libx11", "libxfixes", "x11proto", ] script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxdmcp/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXdmcp-1.1.5.tar.xz" blake3 = "d93c5ceb04019228ee6f034c4d10826025a7ae756d7b2f884fc2f768577173ba" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "x11proto" ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxext/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXext-1.3.6.tar.xz" blake3 = "4c24887ba3913728f3c0be945006f6babbc2c44c8118d4b1ca5366294e3f4406" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "x11proto", "xextproto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --enable-malloc0returnsnull """ ================================================ FILE: recipes/wip/x11/libxfixes/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXfixes-6.0.1.tar.xz" blake3 = "ccbae58717aa81f1ef52a2e6cbb7c57553a98b93f5a7a6f8a78e793a3a0c7f78" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "x11proto", "xextproto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxfont2/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXfont2-2.0.7.tar.xz" blake3 = "9b4951683df21108e45fda23dbd25dcb47b67a3a0e224a36374fbc2d0f489cac" patches = ["redox.patch"] script = """ autotools_recursive_regenerate """ [build] dependencies = [ "freetype2", "libfontenc", "libpng", "x11proto", "xtrans", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxfont2/redox.patch ================================================ --- libXfont2-2.0.7/Makefile.am 2024-08-01 17:38:40.000000000 -0600 +++ source/Makefile.am 2025-05-02 10:49:08.392987853 -0600 @@ -159,14 +159,14 @@ EXTRA_DIST = src/builtins/buildfont README.md # Test utilities -EXTRA_DIST += test/utils/README - -TEST_UTIL_SRCS = test/utils/font-test-utils.c test/utils/font-test-utils.h - -noinst_PROGRAMS = lsfontdir - -lsfontdir_SOURCES = test/utils/lsfontdir.c $(TEST_UTIL_SRCS) -lsfontdir_LDADD = libXfont2.la $(LTLIBOBJS) +#EXTRA_DIST += test/utils/README +# +#TEST_UTIL_SRCS = test/utils/font-test-utils.c test/utils/font-test-utils.h +# +#noinst_PROGRAMS = lsfontdir +# +#lsfontdir_SOURCES = test/utils/lsfontdir.c $(TEST_UTIL_SRCS) +#lsfontdir_LDADD = libXfont2.la $(LTLIBOBJS) MAINTAINERCLEANFILES = ChangeLog INSTALL ================================================ FILE: recipes/wip/x11/libxft/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXft-2.3.9.tar.xz" blake3 = "db5b642f7d5f1184d0975db36ae9f9fbd0a0c538a2288930fc034376374e83dc" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "expat", "fontconfig", "freetype2", "libpng", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxrender", "x11proto", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxi/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXi-1.8.2.tar.xz" blake3 = "8f0acdd884dc928c6c8bc4b6bca1f4c67c726fdb03e30910c09bdb41fd841d3e" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxfixes", "x11proto", "xextproto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --enable-malloc0returnsnull """ ================================================ FILE: recipes/wip/x11/libxinerama/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXinerama-1.1.5.tar.xz" blake3 = "58b4020c8a8fb62707f5073f967bf8abbc8dc7cff35c5750fabe097f46a924b4" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --enable-malloc0returnsnull """ ================================================ FILE: recipes/wip/x11/libxkbcommon-x11/recipe.toml ================================================ # TODO: Conflict with libxkbcommon-x11 # TODO: Keyboard not working, see patches [source] tar = "https://xkbcommon.org/download/libxkbcommon-1.7.0.tar.xz" blake3 = "5001ca0b8562feeef2010bf16c05657e3875fda3ed5fdedbf48b9135e5cdfcbc" patches = [ "redox.patch" ] [build] template = "custom" dependencies = [ "libxml2", "xz", "zlib", "libpthread-stubs", "libxau", "x11proto", "xcb-proto", "libxcb", ] script = """ DYNAMIC_INIT cookbook_meson \ -Denable-wayland=false \ -Denable-x11=true """ ================================================ FILE: recipes/wip/x11/libxkbcommon-x11/redox.patch ================================================ diff --color -ruwN source/meson.build source-new/meson.build --- source/meson.build 2024-03-24 04:23:43.000000000 +0700 +++ source-new/meson.build 2025-10-29 10:55:30.355297899 +0700 @@ -637,8 +637,6 @@ libxkbcommon_x11_test_internal = static_library( 'xkbcommon-x11-internal', libxkbcommon_x11_sources, - 'test/xvfb-wrapper.c', - 'test/xvfb-wrapper.h', include_directories: include_directories('src', 'include'), link_with: libxkbcommon_test_internal, dependencies: [ @@ -768,20 +766,6 @@ dependencies: test_dep), env: test_env, ) -if get_option('enable-x11') - test( - 'x11', - executable('test-x11', 'test/x11.c', dependencies: x11_test_dep), - env: test_env, - is_parallel : false, - ) - test( - 'x11comp', - executable('test-x11comp', 'test/x11comp.c', dependencies: x11_test_dep), - env: test_env, - is_parallel : false, - ) -endif if get_option('enable-xkbregistry') test( 'registry', diff --color -ruwN source/src/x11/util.c source-new/src/x11/util.c --- source/src/x11/util.c 2024-03-24 04:23:43.000000000 +0700 +++ source-new/src/x11/util.c 2025-10-29 15:03:58.879274347 +0700 @@ -39,7 +39,7 @@ uint16_t server_major, server_minor; if (flags & ~(XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS)) { - /* log_err_func(ctx, "unrecognized flags: %#x\n", flags); */ + printf("unrecognized flags: %#x\n", flags); return 0; } @@ -47,12 +47,12 @@ const xcb_query_extension_reply_t *reply = xcb_get_extension_data(conn, &xcb_xkb_id); if (!reply) { - /* log_err_func(ctx, "failed to query for XKB extension\n"); */ + printf("failed to query for XKB extension\n"); return 0; } if (!reply->present) { - /* log_err_func(ctx, "failed to start using XKB extension: not available in server\n"); */ + printf("failed to start using XKB extension: not available in server\n"); return 0; } @@ -68,20 +68,21 @@ xcb_xkb_use_extension_reply(conn, cookie, &error); if (!reply) { - /* log_err_func(ctx, */ - /* "failed to start using XKB extension: error code %d\n", */ - /* error ? error->error_code : -1); */ + printf( + "failed to start using XKB extension: error code %d\n", + error ? error->error_code : -1); free(error); return 0; } - if (!reply->supported) { - /* log_err_func(ctx, */ - /* "failed to start using XKB extension: server doesn't support version %d.%d\n", */ - /* major_xkb_version, minor_xkb_version); */ - free(reply); - return 0; - } + // FIXME: Figure out why winit/servo throwing this + // if (!reply->supported) { + // printf( + // "failed to start using XKB extension: server doesn't support version %d.%d\n", + // major_xkb_version, minor_xkb_version); + // free(reply); + // return 0; + // } server_major = reply->serverMajor; server_minor = reply->serverMinor; ================================================ FILE: recipes/wip/x11/libxkbfile/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libxkbfile-1.1.3.tar.xz" blake3 = "9566ee417df1127f21dd0e1fbcfcc14dacb366c07a1ec2de51f89af12535c06d" script = """ autotools_recursive_regenerate """ [build] dependencies =[ "libpthread-stubs", "libx11", "libxau", "libxcb", "x11proto", "x11proto-kb", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxklavier/recipe.toml ================================================ [source] tar = "https://download.gnome.org/sources/libxklavier/5.3/libxklavier-5.3.tar.xz" blake3 = "4811b8e069faef364b0cdd230dd7e42bc4afc279cb15282b68c11e89518c8930" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "glib", "iso-codes", "libx11", "libxi", "libxkbfile", "libxml2", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxmu/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXmu-1.2.1.tar.xz" blake3 = "466f7ab160c4e9f04866e9c895dbecb6a76ed1817ae16721d404c556d88f047e" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libice", "libpthread-stubs", "libsm", "libx11", "libxau", "libxcb", "libxext", "libxt", "x11proto", "x11proto-kb", "xextproto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxpm/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXpm-3.5.17.tar.xz" blake3 = "0cc9bbdc6d9c9d6ce100249b7bb68bff4550de43ee31d815fd9b21c8d178cd9e" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxrandr/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXrandr-1.5.4.tar.xz" blake3 = "c107a47d9c4329996d74d7a1ab8d254a2cf3aecea1575d7e146da9a06b762081" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxrender", "x11proto", "xextproto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --enable-malloc0returnsnull """ ================================================ FILE: recipes/wip/x11/libxrender/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXrender-0.9.12.tar.xz" blake3 = "900b431ad77835029a88fd0d874bbd0d748ff150b9e0c3841b3ce7a346cf396a" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --enable-malloc0returnsnull """ ================================================ FILE: recipes/wip/x11/libxres/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXres-1.2.3.tar.xz" blake3 = "ed6e65e554fb812ddbec0667d749cb6c0488a964d7b12a7c4c2cadac1287088f" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libx11", "libxext", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --enable-malloc0returnsnull """ ================================================ FILE: recipes/wip/x11/libxscrnsaver/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXScrnSaver-1.2.5.tar.xz" blake3 = "1efbadb14238f8679abb5e56bc99765b96565ee992bbab86cee88248c57f6240" [build] dependencies = [ "libx11", "libxext", ] template = "meson" ================================================ FILE: recipes/wip/x11/libxshmfence/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libxshmfence-1.3.tar.gz" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "x11proto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/libxt/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXt-1.3.1.tar.xz" blake3 = "fbf21683ce3e6d104529289254977bb08b355ecf7a36c763e8369acf85f15f24" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libice", "libpthread-stubs", "libsm", "libx11", "libxau", "libxcb", "x11proto", "x11proto-kb", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --enable-malloc0returnsnull """ ================================================ FILE: recipes/wip/x11/libxxf86vm/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/libXxf86vm-1.1.6.tar.xz" blake3 = "cd99c05a03e81f8579a56272debd554b2a44c2ac8211f0170a39be86e03221bb" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --enable-malloc0returnsnull """ ================================================ FILE: recipes/wip/x11/lxde/libfm-extra/recipe.toml ================================================ [source] tar = "https://github.com/lxde/libfm/archive/refs/tags/1.4.0.tar.gz" blake3 = "b43b4a87b199fb0c6df08f09c7b12e4a545963fc0f4ffac48f8db2a425e47351" script = """ DYNAMIC_INIT mkdir -p m4 autotools_recursive_regenerate """ [build] dependencies = [ "gettext", "libffi", "glib", "pcre2", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --with-extra-only """ ================================================ FILE: recipes/wip/x11/lxde/libfm-gtk3/recipe.toml ================================================ [source] tar = "https://github.com/lxde/libfm/archive/refs/tags/1.4.0.tar.gz" blake3 = "b43b4a87b199fb0c6df08f09c7b12e4a545963fc0f4ffac48f8db2a425e47351" script = """ DYNAMIC_INIT mkdir -p m4 autotools_recursive_regenerate """ [build] dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", "gtk3", "harfbuzz", "libepoxy", "libffi", "libfm-extra", "libiconv", "libicu", "libjpeg", "libmenu-cache", "libpng", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxfixes", "libxft", "libxi", "libxrandr", "libxrender", "libxxf86vm", "mesa-x11", "pango", "pcre", "pcre2", "pixman", "shared-mime-info", "x11proto", "xcb-proto", "xextproto", "xtrans", "zlib", ] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ COOKBOOK_CONFIGURE="./configure" cookbook_configure --disable-old-actions --disable-silent-rules --with-gtk=3 """ ================================================ FILE: recipes/wip/x11/lxde/libmenu-cache/recipe.toml ================================================ [source] tar = "https://github.com/lxde/menu-cache/archive/refs/tags/1.1.1.tar.gz" blake3 = "6490180be8851c23beec69a507f7285b94491c0b7ef955f7bc217095efb091ae" script = """ DYNAMIC_INIT mkdir -p m4 autotools_recursive_regenerate sed -i 's|#include |#include |g' libmenu-cache/menu-cache.c sed -i 's|#include |#include |g' menu-cache-daemon/menu-cached.c """ [build] dependencies = [ "gettext", "glib", "libffi", "libfm-extra", "libiconv", "pcre2", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/lxde/lxpanel/recipe.toml ================================================ [source] tar = "https://github.com/lxde/lxpanel/archive/refs/tags/0.11.1.tar.gz" blake3 = "5f94d410403499485d3abb6885407d6006e5029da538a1b882c670904ac616a5" script = """ DYNAMIC_INIT mkdir -p m4 autotools_recursive_regenerate """ [build] dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", "gtk3", "harfbuzz", "keybinder3", "libepoxy", "libffi", "libfm-gtk3", "libiconv", "libicu", "libjpeg", "libmenu-cache", "libpng", "libpthread-stubs", "libwnck3", "libx11", "libxau", "libxcb", "libxext", "libxfixes", "libxft", "libxi", "libxrandr", "libxrender", "libxxf86vm", "mesa-x11", "pango", "pcre", "pcre2", "pixman", "shared-mime-info", "x11proto", "xcb-proto", "xextproto", "xtrans", "zlib", ] template = "custom" script = """ DYNAMIC_INIT rsync -av --delete "${COOKBOOK_SOURCE}/" ./ COOKBOOK_CONFIGURE="./configure" cookbook_configure --enable-gtk3 --with-plugins=all,-cpu,-netstat,-netstatus,-weather """ ================================================ FILE: recipes/wip/x11/mate/caja/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/caja/releases/download/v1.26.4/caja-1.26.4.tar.xz" blake3 = "a70f5ce8dcb038d78346b385b2abd4d29a3e13c99b368a617c38107a9e725617" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libice", "libmate-desktop-2", "libnotify", "libsm", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure # TODO: conflict with shared-mime-info rm -f ${COOKBOOK_STAGE}/usr/share/mime/mime.cache """ ================================================ FILE: recipes/wip/x11/mate/dbus-glib/recipe.toml ================================================ [source] tar = "https://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.114.tar.gz" blake3 = "a632fb16525a201dd159b9538c6009ec717403d580a3741cbf96fd6f9af2828b" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "dbus", "expat", "glib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --with-dbus-binding-tool="$(which dbus-binding-tool)" """ ================================================ FILE: recipes/wip/x11/mate/libmate-desktop-2/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/mate-desktop/releases/download/v1.28.2/mate-desktop-1.28.2.tar.xz" blake3 = "b5897e91e0ad542dc3331209bb260124c8e14d654fcdb2d9a738e9fc23d4d3fa" [build] dependencies = [ "dconf", "iso-codes", "gtk3", ] template = "meson" ================================================ FILE: recipes/wip/x11/mate/libmate-menu/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/mate-menus/archive/refs/tags/v1.28.0.tar.gz" blake3 = "90b5540ec82bd9a6188d9eaf36bf1f489258aed4d35de53f3958346f892c0d7c" [build] dependencies = [ "glib", ] template = "meson" mesonflags = [ "-Dintrospection=false", ] ================================================ FILE: recipes/wip/x11/mate/libmatekbd/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/libmatekbd/releases/download/v1.28.0/libmatekbd-1.28.0.tar.xz" blake3 = "d5dcf7a47522cc586b6c47e9bd731bbd6db43fcb6797b33b52c03e816d9caedd" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "gtk3", "libxklavier", ] dev-dependencies = [ "host:libxml2" ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/mate/libmateweather/recipe.toml ================================================ # Uses custom rev for libsoup3 support, next release should include it [source] tar = "https://github.com/mate-desktop/libmateweather/archive/c1c54a15545f13f3dabd2bcd303533d818905c7b.tar.gz" blake3 = "78c3873937bb90141386d31b6c6d3e585f9f2bde6069933abffdbd9a9161707a" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "gtk3", "libsoup", ] dev-dependencies = [ "host:libxml2" ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/mate/marco/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/marco/releases/download/v1.29.1/marco-1.29.1.tar.xz" blake3 = "609db8d6da0ceffb67fd79a2d017be301f5cdbe441301ca5469530cdca4a7cf5" patches = ["redox.patch"] [build] dependencies = [ "gtk3", "libcanberra", "libice", "libmate-desktop-2", "libsm", "libxcomposite", "libxcursor", "libxdamage", "libxinerama", "libxres", ] template = "meson" [package] dependencies = [ "librsvg", "mate-settings-daemon", "zenity", ] ================================================ FILE: recipes/wip/x11/mate/marco/redox.patch ================================================ diff -ruwN source-old/meson.build source/meson.build --- source-old/meson.build 2025-09-22 16:03:46.000000000 -0600 +++ source/meson.build 2025-11-14 19:09:08.402564648 -0700 @@ -294,7 +294,7 @@ endif gdk_pixbuf_csource = find_program('gdk-pixbuf-csource') -zenity = find_program('zenity') +#Added to package depends: zenity = find_program('zenity') libxext = cc.find_library('Xext', required: false) if build_xsync ================================================ FILE: recipes/wip/x11/mate/mate-control-center/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/mate-control-center/archive/refs/tags/v1.28.1.tar.gz" blake3 = "78ef68e12d0f5d68f62953999e55061a0ef911eceecd2dc66b9242f6b84c143b" patches = ["redox.patch"] [build] dependencies = [ "libmate-desktop-2", "libmate-menu", "libmatekbd", "libxscrnsaver", "marco", ] dev-dependencies = [ "host:itstool" ] template = "meson" mesonflags = [ "-Dlibappindicator=no", ] ================================================ FILE: recipes/wip/x11/mate/mate-control-center/redox.patch ================================================ diff -ruwN source-old/capplets/display/meson.build source/capplets/display/meson.build --- source-old/capplets/display/meson.build 2024-05-22 13:44:05.000000000 -0600 +++ source/capplets/display/meson.build 2025-11-15 08:43:15.498757975 -0700 @@ -49,12 +49,13 @@ install_dir: mcc_desktopdir ) -policy = 'org.mate.randr.policy' - -i18n.merge_file( - input: policy + '.in', - output: policy, - po_dir: po_dir, - install: true, - install_dir: mcc_policydir, -) +#TODO: fails to merge +#policy = 'org.mate.randr.policy' +# +#i18n.merge_file( +# input: policy + '.in', +# output: policy, +# po_dir: po_dir, +# install: true, +# install_dir: mcc_policydir, +#) diff -ruwN source-old/capplets/meson.build source/capplets/meson.build --- source-old/capplets/meson.build 2024-05-22 13:44:05.000000000 -0600 +++ source/capplets/meson.build 2025-11-15 08:20:38.584035658 -0700 @@ -8,6 +8,6 @@ subdir('keyboard') subdir('mouse') subdir('network') -subdir('system-info') -subdir('time-admin') +#subdir('system-info') +#subdir('time-admin') subdir('windows') diff -ruwN source-old/meson.build source/meson.build --- source-old/meson.build 2024-05-22 13:44:05.000000000 -0600 +++ source/meson.build 2025-11-15 08:42:11.646734896 -0700 @@ -75,9 +75,9 @@ xcursor_dep = dependency('xcursor') dconf_dep = dependency('dconf', version: '>= 0.13.4') fontconfig_dep = dependency('fontconfig') -gtop_dep = dependency('libgtop-2.0') -udisks2_dep = dependency('udisks2') -polkit_dep = dependency('polkit-gobject-1') +#gtop_dep = dependency('libgtop-2.0') +#udisks2_dep = dependency('udisks2') +#polkit_dep = dependency('polkit-gobject-1') matekbd_dep = dependency('libmatekbd', version: '>=1.17.0') matekbdui_dep = dependency('libmatekbdui', version: '>=1.17.0') xklavier_dep = dependency('libxklavier', version: '>= 5.2') @@ -120,10 +120,10 @@ endif else appindicator = false - ayatana = true + ayatana = false endif appindicator_dep = dependency('appindicator3-0.1', version: '>= 0.0.13', required: appindicator) -ayatana_dep = dependency('ayatana-appindicator3-0.1', version: '>= 0.0.13', required: ayatana) +#ayatana_dep = dependency('ayatana-appindicator3-0.1', version: '>= 0.0.13', required: ayatana) config_h.set('HAVE_UBUNTU_APPINDICATOR', appindicator) gnome = import('gnome') i18n = import('i18n') @@ -155,7 +155,7 @@ subdir('help') subdir('font-viewer') subdir('capplets') -subdir('typing-break') +#subdir('typing-break') subdir('shell') gnome.post_install( ================================================ FILE: recipes/wip/x11/mate/mate-icon-theme/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/mate-icon-theme/releases/download/v1.28.0/mate-icon-theme-1.28.0.tar.xz" blake3 = "7269335000874df593ac06d991f4f19cdda984cd2199166987acb3f3cbd474bc" [build] template = "configure" configureflags = [ "--disable-icon-mapping", ] ================================================ FILE: recipes/wip/x11/mate/mate-panel/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/mate-panel/releases/download/v1.28.6/mate-panel-1.28.6.tar.xz" blake3 = "6411fa4da26be0032226395d50855bb6b1223f5b795f5e08f3999e9de92f2acd" script = """ DYNAMIC_INIT #TODO autotools_recursive_regenerate """ [build] dependencies = [ "gtk3", "libice", "libmate-desktop-2", "libmate-menu", "libmateweather", "libsm", "libwnck3", ] dev-dependencies = [ "host:itstool", "host:libxml2" ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/mate/mate-session-manager/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/mate-session-manager/releases/download/v1.28.0/mate-session-manager-1.28.0.tar.xz" blake3 = "c76fd3064f4697180006cc2562a0ac55ddfa40b4029047f58c8dcc790606a9a6" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "dbus-glib", "gtk3", "libsm", "libxcomposite", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/mate/mate-settings-daemon/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/mate-settings-daemon/releases/download/v1.28.0/mate-settings-daemon-1.28.0.tar.xz" blake3 = "396389887d2e79d22e8be28f51df8e6e807ffabb676fbd23888278cf39a65f3d" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "dconf", "gtk3", "libcanberra", "libmate-desktop-2", "libmatekbd", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --disable-rfkill """ ================================================ FILE: recipes/wip/x11/mate/mate-terminal/recipe.toml ================================================ [source] tar = "https://github.com/mate-desktop/mate-terminal/releases/download/v1.28.1/mate-terminal-1.28.1.tar.xz" blake3 = "5214a81a69cc18202fad9214e2dff671baf34a132a39c932214b234db113e16c" [build] dependencies = [ "dconf", "gtk3", "libstdcxx", "vte", ] dev-dependencies = [ "host:itstool", ] template = "meson" ================================================ FILE: recipes/wip/x11/mesa-demos-x11/recipe.toml ================================================ [source] tar = "https://archive.mesa3d.org/demos/mesa-demos-9.0.0.tar.xz" blake3 = "eef628aebdaa65d3bb1078bb6d6bdd7685c41fb67674e7f7b0e1e15f10433240" patches = ["redox.patch"] [build] dependencies = [ "mesa-glu-x11", ] dev-dependencies = [ "libstdcxx", ] template = "custom" script = """ DYNAMIC_INIT #TODO: implement sincos for es2gears cookbook_meson -Dgles2=disabled """ ================================================ FILE: recipes/wip/x11/mesa-demos-x11/redox.patch ================================================ diff -ruwN mesa-demos-9.0.0/meson.build source/meson.build --- mesa-demos-9.0.0/meson.build 2023-03-22 06:13:43.000000000 -0600 +++ source/meson.build 2025-05-06 15:58:57.523274337 -0600 @@ -99,7 +99,7 @@ endif dep_glx = dependency('glx', required: false, disabler : true) -if not dep_glx.found() and host_machine.system() == 'darwin' +if not dep_glx.found() # xquartz doesn't have a glx.pc, but it does have the header. And all the # symbols reside in libGL, so let's just use that. if cc.check_header('GL/glx.h', dependencies: dep_x11) ================================================ FILE: recipes/wip/x11/mesa-glu-x11/recipe.toml ================================================ [source] tar = "https://archive.mesa3d.org/glu/glu-9.0.3.tar.xz" blake3 = "beed1665ed983540e7502289ec50c7e66d840820af3e9ef21c9c4a7e9686ab9f" [build] dependencies = [ "mesa-x11", ] template = "custom" script = """ DYNAMIC_INIT cookbook_meson -Dgl_provider=gl """ ================================================ FILE: recipes/wip/x11/mesa-x11/recipe.toml ================================================ [source] same_as = "../../../libs/mesa" [build] template = "custom" dependencies = [ "expat", "libdrm", "libx11", "libxcb", "libxext", "libxfixes", "libxrandr", "libxshmfence", "libxxf86vm", "llvm21", "zlib", ] dev-dependencies = [ "llvm21.dev", ] script = """ DYNAMIC_INIT cookbook_meson \ -Ddri-drivers-path=/usr/lib/dri \ -Degl=enabled \ -Dglx=dri \ -Dllvm=enabled \ -Dplatforms=x11 \ -Dshader-cache=disabled """ ================================================ FILE: recipes/wip/x11/openbox/recipe.toml ================================================ #TODO: launches but has segfaults at runtime [source] tar = "https://openbox.org/dist/openbox/openbox-3.6.1.tar.xz" blake3 = "6bf434e52e04a9cfcd67c11cb9105b93fe2055dca49f1bed2c105fd117e88ef4" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gettext", "glib", "harfbuzz", "libffi", "libiconv", "libpng", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxft", "libxml2", "libxrender", "pango", "pcre2", "pixman", "x11proto", "xz", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/startup-notification/recipe.toml ================================================ [source] tar = "http://www.freedesktop.org/software/startup-notification/releases/startup-notification-0.12.tar.gz" blake3 = "134131fdd210d2eaef76eda9826b4a832807aac231dba334f157751ed1d6da36" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libice", "libx11", "xcb-util", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure lf_cv_sane_realloc=yes """ ================================================ FILE: recipes/wip/x11/twm/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/app/twm-1.0.13.tar.xz" blake3 = "50acf2123537a739dcaff50e1ae9b38d7e117a2d07cd3a6b550dcafdc52ff9fc" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libice", "libpthread-stubs", "libsm", "libx11", "libxau", "libxcb", "libxext", "libxmu", "libxt", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT export LIBS="-lxcb -lXau" cookbook_configure """ ================================================ FILE: recipes/wip/x11/x11proto/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/proto/xorgproto-2024.1.tar.xz" blake3 = "fad667bb04e16dca5e816969f2641bb075929cd73564114cc1aabd87d1975dd3" patches = ["redox.patch"] [build] template = "configure" ================================================ FILE: recipes/wip/x11/x11proto/redox.patch ================================================ diff -ruwN xorgproto-2023.2/include/X11/Xos_r.h source/include/X11/Xos_r.h --- xorgproto-2023.2/include/X11/Xos_r.h 2023-06-16 01:32:38.000000000 -0600 +++ source/include/X11/Xos_r.h 2025-05-02 10:10:07.250524701 -0600 @@ -318,7 +318,7 @@ (_Xos_processUnlock), \ (p).pwp ) -#elif !defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(__APPLE__) +#elif !defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(__APPLE__) && !defined(__redox__) # define X_NEEDS_PWPARAMS typedef struct { struct passwd pws; ================================================ FILE: recipes/wip/x11/x11proto-kb/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/proto/kbproto-1.0.7.tar.bz2" blake3 = "2fba8d4a298bd6504c237afccc2059a3b9db6363f203824aebf2c0a167197625" script = """ autotools_recursive_regenerate """ [build] template = "configure" ================================================ FILE: recipes/wip/x11/xcb-proto/recipe.toml ================================================ [source] tar = "https://xorg.freedesktop.org/archive/individual/proto/xcb-proto-1.17.0.tar.xz" blake3 = "68187400fded667f60b4b020d0fc37fa489ae0de33169fe7b07fcbaf88e7a3f9" [build] template = "configure" ================================================ FILE: recipes/wip/x11/xcb-util/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/xcb-util-0.4.1.tar.xz" blake3 = "ebc940220db0ca39a690a47b565ce73ab536c1fbfdebf008fa0edf0ced862aca" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libxcb", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/xcb-util-cursor/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/xcb-util-cursor-0.1.6.tar.xz" blake3 = "af6e7e99779682450e4cb3aa7225f5724845b1672c0380c65ca03b58dfb2d5d8" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "xcb-util-image", "xcb-util-renderutil", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/xcb-util-image/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/xcb-util-image-0.4.1.tar.xz" blake3 = "c8a0652f7c215bd312d9f238aed2ba6a122f087b623dafbbac4456f5351df603" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "xcb-util", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/xcb-util-keysyms/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/xcb-util-keysyms-0.4.1.tar.xz" blake3 = "c599df56c79a9f9dcf12b083e343f321cad6af654b83e2976b5a26bc890b5774" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libxcb", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/xcb-util-renderutil/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/xcb-util-renderutil-0.3.10.tar.xz" blake3 = "085c94d08bd8181512d4ce93cf0e5bcd48cd8ed983bbb7a7bcb3a3c2312a08ea" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libxcb", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure --disable-selective-werror """ ================================================ FILE: recipes/wip/x11/xcb-util-wm/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/lib/xcb-util-wm-0.4.2.tar.xz" blake3 = "4cf6b0e204e12eb6b824c939404fc5ad63d61cb94679e8adf5670207802bc738" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libxcb", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/xcb-util-xrm/recipe.toml ================================================ [source] tar = "https://github.com/Airblader/xcb-util-xrm/releases/download/v1.3/xcb-util-xrm-1.3.tar.bz2" blake3 = "21cd9a005dde4982a452df156a16f4a61bd5299fb1a24dda2c9e8169e0654f38" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libx11", "xcb-util", ] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/xev/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/app/xev-1.2.6.tar.xz" blake3 = "883347a6db32fb4cf6bc97906ca1dacf1c67b7b84bd2abef9c6c5fc20abea647" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxrandr", "libxrender", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT #TODO: why are LIBS not automatic? export LIBS="-lXrender -lXext -lX11 -lxcb -lXau" cookbook_configure """ ================================================ FILE: recipes/wip/x11/xextproto/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/proto/xextproto-7.3.0.tar.bz2" blake3 = "08cdd8b3838da9c99176778c925327aa35661d41d0e4d7458a378f14a42172c0" script = """ autotools_recursive_regenerate """ [build] template = "custom" script = """ DYNAMIC_INIT cookbook_configure """ ================================================ FILE: recipes/wip/x11/xeyes/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/app/xeyes-1.3.0.tar.xz" blake3 = "33d7ce4847c73e6ebea0cc595b04de80482a657132d0f2235548328ede88b673" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libice", "libpthread-stubs", "libsm", "libx11", "libxau", "libxcb", "libxext", "libxfixes", "libxi", "libxmu", "libxrender", "libxt", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT #TODO: why are LIBS not automatic? export LIBS="-lXext -lXmu -lXt -lSM -lICE -lX11 -lxcb -lXau" cookbook_configure --without-present """ ================================================ FILE: recipes/wip/x11/xfce4/garcon/recipe.toml ================================================ [source] tar = "https://archive.xfce.org/src/xfce/garcon/4.21/garcon-4.21.0.tar.xz" blake3 = "d0eb19cfcf718f3cf4a5fc89304b52b97aa35cb64222f7bc746924544e9fc7b8" [build] dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", "gtk3", "harfbuzz", "libepoxy", "libffi", "libiconv", "libjpeg", "libpng", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxfce4ui", "libxfce4util", "libxfixes", "libxft", "libxi", "libxrandr", "libxrender", "libxxf86vm", "mesa-x11", "pango", "pcre2", "pixman", "shared-mime-info", "x11proto", "xfconf", "zlib", ] template = "meson" mesonflags = [ "-Dintrospection=false", ] ================================================ FILE: recipes/wip/x11/xfce4/libxfce4ui/recipe.toml ================================================ [source] tar = "https://archive.xfce.org/src/xfce/libxfce4ui/4.21/libxfce4ui-4.21.2.tar.xz" blake3 = "027adb15e74b6df534bc526ec0e1056fede33cf2e69ce802391fb1f714350015" [build] dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", "gtk3", "harfbuzz", "libepoxy", "libffi", "libiconv", "libjpeg", "libpng", "libpthread-stubs", "libx11", "libxau", "libxcb", "libxext", "libxfce4util", "libxfixes", "libxft", "libxi", "libxrandr", "libxrender", "libxxf86vm", "mesa-x11", "pango", "pcre2", "pixman", "shared-mime-info", "x11proto", "xfconf", "zlib", ] template = "meson" mesonflags = [ "-Dintrospection=false", ] ================================================ FILE: recipes/wip/x11/xfce4/libxfce4util/recipe.toml ================================================ [source] tar = "https://archive.xfce.org/src/xfce/libxfce4util/4.20/libxfce4util-4.20.1.tar.bz2" blake3 = "d64d8c016e48fb21b4c76914b75e256670c5fe2bff4c3b54f76e56cf1a50cb8a" [build] dependencies = [ "gettext", "glib", "libffi", "libiconv", "pcre2", "zlib", ] template = "meson" mesonflags = [ "-Dintrospection=false", ] ================================================ FILE: recipes/wip/x11/xfce4/libxfce4windowing/recipe.toml ================================================ [source] tar = "https://archive.xfce.org/src/xfce/libxfce4windowing/4.20/libxfce4windowing-4.20.4.tar.bz2" blake3 = "396cbd13d547e6e109e348dd207747714dc4827b744fe729b1697c9dd1a55c3f" patches = ["redox.patch"] [build] dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", "gtk3", "harfbuzz", "libepoxy", "libffi", "libiconv", "libjpeg", "libpng", "libpthread-stubs", "libwnck3", "libx11", "libxau", "libxcb", "libxext", "libxfce4util", "libxfixes", "libxft", "libxi", "libxrandr", "libxrender", "libxxf86vm", "mesa-x11", "pango", "pcre2", "pixman", "shared-mime-info", "x11proto", "xfconf", "zlib", ] template = "meson" mesonflags = [ "-Dintrospection=false", "-Dwayland=disabled", "-Dx11=enabled", ] ================================================ FILE: recipes/wip/x11/xfce4/libxfce4windowing/redox.patch ================================================ diff -ruwN source-old/libxfce4windowing/xfw-monitor-x11.c source/libxfce4windowing/xfw-monitor-x11.c --- source-old/libxfce4windowing/xfw-monitor-x11.c 2025-08-14 01:01:54.000000000 -0600 +++ source/libxfce4windowing/xfw-monitor-x11.c 2025-10-30 15:06:17.333924750 -0600 @@ -28,7 +28,9 @@ #include #include #include +#if !defined(__redox__) #include +#endif #include #include "xfw-monitor-private.h" @@ -429,6 +431,7 @@ &edid_data); if (gdk_x11_display_error_trap_pop(display) == 0 && edid_data != NULL && nbytes > 0) { +#if !defined(__redox__) struct di_info *edid_info = di_info_parse_edid(edid_data, nbytes); if (edid_info != NULL) { char *make = di_info_get_make(edid_info); @@ -451,6 +454,7 @@ di_info_destroy(edid_info); } +#endif } if (edid_data != NULL) { XFree(edid_data); diff -ruwN source-old/meson.build source/meson.build --- source-old/meson.build 2025-08-14 01:05:11.000000000 -0600 +++ source/meson.build 2025-10-30 15:05:30.092853306 -0600 @@ -44,7 +44,7 @@ # Feature: 'x11' x11_deps = [] -x11_deps += dependency('libdisplay-info', version: dependency_versions['display-info'], required: get_option('x11')) +#x11_deps += dependency('libdisplay-info', version: dependency_versions['display-info'], required: get_option('x11')) x11_deps += dependency('x11', version: dependency_versions['libx11'], required: get_option('x11')) x11_deps += dependency('gdk-x11-3.0', version: dependency_versions['gtk'], required: get_option('x11')) x11_deps += dependency('libwnck-3.0', version: dependency_versions['wnck'], required: get_option('x11')) ================================================ FILE: recipes/wip/x11/xfce4/xfce4-panel/recipe.toml ================================================ [source] tar = "https://archive.xfce.org/src/xfce/xfce4-panel/4.21/xfce4-panel-4.21.0.tar.xz" blake3 = "59a8f55ba237a56ccd16869a28426fa3890c292164a4502dd07ddba45e0268ed" [build] dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "garcon", "gdk-pixbuf", "gettext", "glib", "gtk3", "harfbuzz", "libepoxy", "libffi", "libiconv", "libjpeg", "libpng", "libpthread-stubs", "libwnck3", "libx11", "libxau", "libxcb", "libxext", "libxfce4ui", "libxfce4util", "libxfce4windowing", "libxfixes", "libxft", "libxi", "libxrandr", "libxrender", "libxxf86vm", "mesa-x11", "pango", "pcre2", "pixman", "shared-mime-info", "x11proto", "xfconf", "zlib", ] template = "meson" mesonflags = [ "-Dintrospection=false", ] ================================================ FILE: recipes/wip/x11/xfce4/xfconf/recipe.toml ================================================ [source] tar = "https://archive.xfce.org/src/xfce/xfconf/4.21/xfconf-4.21.0.tar.xz" blake3 = "588bc6768775221a50d8cdd8480854a360b1343193115b639daf225aa34b97d7" [build] dependencies = [ "gettext", "glib", "libffi", "libiconv", "libxfce4util", "pcre2", "zlib", ] template = "meson" mesonflags = [ "-Dintrospection=false", ] ================================================ FILE: recipes/wip/x11/xfce4/xfwm4/recipe.toml ================================================ [source] tar = "https://archive.xfce.org/src/xfce/xfwm4/4.20/xfwm4-4.20.0.tar.bz2" blake3 = "1c48e0fd80ef674a1d6cd8b3ab2452e87ab1597693f99c3217d271070b5ba8c2" [build] dependencies = [ "atk", "cairo", "expat", "fontconfig", "freetype2", "fribidi", "gdk-pixbuf", "gettext", "glib", "gtk3", "harfbuzz", "libepoxy", "libffi", "libice", "libiconv", "libjpeg", "libpng", "libpthread-stubs", "libwnck3", "libx11", "libxau", "libxcb", "libxext", "libxfce4ui", "libxfce4util", "libxfixes", "libxft", "libxi", "libxinerama", "libxrandr", "libxrender", "libxxf86vm", "mesa-x11", "pango", "pcre2", "pixman", "shared-mime-info", "x11proto", "xfconf", "zlib", ] template = "custom" script = """ DYNAMIC_INIT export LIBS="$("${PKG_CONFIG}" --libs libxfce4util-1.0 x11)" cookbook_configure --disable-silent-rules """ ================================================ FILE: recipes/wip/x11/xinit/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/app/xinit-1.4.4.tar.xz" blake3 = "fe988bbff7c4a950256540ad8a469fed1cdbe11439ba738b9714ee2de16f2a6c" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT export LIBS="-lxcb -lXau" cookbook_configure """ ================================================ FILE: recipes/wip/x11/xkbcomp/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/app/xkbcomp-1.4.7.tar.xz" blake3 = "e6420ef168976726f8aa8cb362bc70dfe2bd810f2b33e5f71547ec182ed301ea" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libpthread-stubs", "libx11", "libxau", "libxcb", "libxkbfile", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT export LIBS="-lxcb -lXau" cookbook_configure """ ================================================ FILE: recipes/wip/x11/xkbutils/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/app/xkbutils-1.0.6.tar.xz" blake3 = "f19c157f5eaad7c91ee101952e55b9fd991b060892ecb3e6d9a7b46fa1dbe587" script = """ autotools_recursive_regenerate """ [build] dependencies = [ "libice", "libpthread-stubs", "libsm", "libx11", "libxau", "libxaw", "libxcb", "libxext", "libxmu", "libxpm", "libxt", "x11proto", ] template = "custom" script = """ DYNAMIC_INIT #TODO: why are LIBS not automatic? export LIBS="-lXaw7 -lXext -lXmu -lXpm -lXt -lSM -lICE -lX11 -lxcb -lXau" cookbook_configure """ ================================================ FILE: recipes/wip/x11/xkeyboard-config/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/data/xkeyboard-config/xkeyboard-config-2.44.tar.xz" blake3 = "6156aefb0608af6b7ae2c2ef444838b72524d1e4244cb26ee253669ecede3a5a" [build] template = "custom" script = """ DYNAMIC_INIT cookbook_meson """ ================================================ FILE: recipes/wip/x11/xserver-xorg/recipe.toml ================================================ [source] tar = "https://www.x.org/releases/individual/xserver/xorg-server-21.1.16.tar.xz" blake3 = "b47c68a0a8bc5b69143d95440fbf75c17245ba8bc2c28a8d9619d8c6890dca58" patches = ["redox.patch"] [build] dependencies = [ "font-util", "freetype2", "libfontenc", "libpng", "libpthread-stubs", #TODO: used for secure-rpc, needs syslog: "libtirpc", "libx11", "libxau", "libxcb", "libxcvt", "libxdmcp", "libxext", "libxfixes", "libxfont2", "libxkbfile", "libxxf86vm", "mesa-x11", "openssl3", "pixman", "x11proto", "xtrans", "zlib", ] template = "custom" script = """ DYNAMIC_INIT cookbook_meson \ -Ddri1=false \ -Dglamor=false \ -Dint10=false \ -Dpciaccess=false \ -Dsecure-rpc=false \ -Dudev=false \ -Dudev_kms=false \ -Dvgahw=false \ -Dxres=false \ -Dxvfb=false """ ================================================ FILE: recipes/wip/x11/xserver-xorg/redox.patch ================================================ diff -ruwN source-old/hw/xfree86/common/xf86Xinput.c source/hw/xfree86/common/xf86Xinput.c --- source-old/hw/xfree86/common/xf86Xinput.c 2025-02-25 11:56:05.000000000 -0700 +++ source/hw/xfree86/common/xf86Xinput.c 2025-11-07 14:37:53.041095608 -0700 @@ -860,8 +860,10 @@ if (stat(path, &st) == -1) return; + /*TODO *maj = major(st.st_rdev); *min = minor(st.st_rdev); + */ } static inline InputDriverPtr diff -ruwN source-old/hw/xfree86/drivers/modesetting/meson.build source/hw/xfree86/drivers/modesetting/meson.build --- source-old/hw/xfree86/drivers/modesetting/meson.build 2025-02-25 11:56:05.000000000 -0700 +++ source/hw/xfree86/drivers/modesetting/meson.build 2025-11-07 14:37:53.041947517 -0700 @@ -42,7 +42,7 @@ configuration: manpage_config, )) -test('modesetting symbol test', - xorg_symbol_test, - args: symbol_test_args, -) +# test('modesetting symbol test', +# xorg_symbol_test, +# args: symbol_test_args, +# ) diff -ruwN source-old/hw/xfree86/loader/meson.build source/hw/xfree86/loader/meson.build --- source-old/hw/xfree86/loader/meson.build 2025-02-25 11:56:05.000000000 -0700 +++ source/hw/xfree86/loader/meson.build 2025-11-07 14:37:53.042100945 -0700 @@ -10,7 +10,7 @@ c_args: xorg_c_args, ) -xorg_symbol_test = executable('xorg_symbol_test', - 'symbol-test.c', - dependencies: dl_dep, -) +# xorg_symbol_test = executable('xorg_symbol_test', +# 'symbol-test.c', +# dependencies: dl_dep, +# ) diff -ruwN source-old/hw/xfree86/meson.build source/hw/xfree86/meson.build --- source-old/hw/xfree86/meson.build 2025-02-25 11:56:05.000000000 -0700 +++ source/hw/xfree86/meson.build 2025-11-07 14:37:53.042256958 -0700 @@ -171,13 +171,13 @@ ) endif -executable('gtf', - 'utils/gtf/gtf.c', - include_directories: [inc, xorg_inc], - dependencies: xorg_deps, - c_args: xorg_c_args, - install: true, -) +# executable('gtf', +# 'utils/gtf/gtf.c', +# include_directories: [inc, xorg_inc], +# dependencies: xorg_deps, +# c_args: xorg_c_args, +# install: true, +# ) # For symbol presence testing only xorgserver_lib = shared_library( diff -ruwN source-old/hw/xfree86/os-support/shared/sigio.c source/hw/xfree86/os-support/shared/sigio.c --- source-old/hw/xfree86/os-support/shared/sigio.c 2025-02-25 11:56:05.000000000 -0700 +++ source/hw/xfree86/os-support/shared/sigio.c 2025-11-07 14:37:53.042429782 -0700 @@ -196,11 +196,12 @@ fd, strerror(errno)); } else { + /*TODO if (fcntl(fd, F_SETOWN, getpid()) == -1) { xf86Msg(X_WARNING, "fcntl(%d, F_SETOWN): %s\n", fd, strerror(errno)); } - else { + else*/{ installed = TRUE; } } diff -ruwN source-old/hw/xfree86/os-support/xf86_OSlib.h source/hw/xfree86/os-support/xf86_OSlib.h --- source-old/hw/xfree86/os-support/xf86_OSlib.h 2025-02-25 11:56:05.000000000 -0700 +++ source/hw/xfree86/os-support/xf86_OSlib.h 2025-11-07 14:37:53.042605933 -0700 @@ -176,7 +176,7 @@ /**************************************************************************/ /* Linux or Glibc-based system */ /**************************************************************************/ -#if defined(__linux__) || defined(__GLIBC__) || defined(__CYGWIN__) +#if defined(__linux__) || defined(__GLIBC__) || defined(__CYGWIN__) || defined(__redox__) #include #include #include diff -ruwN source-old/include/dix.h source/include/dix.h --- source-old/include/dix.h 2025-02-25 11:56:05.000000000 -0700 +++ source/include/dix.h 2025-11-07 14:37:53.042862204 -0700 @@ -55,6 +55,7 @@ #include "geext.h" #include "events.h" #include +#include #define EARLIER -1 #define SAMETIME 0 @@ -69,14 +70,28 @@ #define REQUEST_SIZE_MATCH(req) \ do { \ - if ((sizeof(req) >> 2) != client->req_len) \ + if ((sizeof(req) >> 2) != client->req_len) { \ + fprintf(stderr, \ + "REQUEST_SIZE_MATCH failed in %s:%d: " \ + "Expected len %lu, got %d\n", \ + __FILE__, __LINE__, \ + (unsigned long)(sizeof(req) >> 2), \ + client->req_len); \ return(BadLength); \ + } \ } while (0) #define REQUEST_AT_LEAST_SIZE(req) \ do { \ - if ((sizeof(req) >> 2) > client->req_len) \ + if ((sizeof(req) >> 2) > client->req_len) { \ + fprintf(stderr, \ + "REQUEST_AT_LEAST_SIZE failed in %s:%d: " \ + "Expected len %lu, got %d\n", \ + __FILE__, __LINE__, \ + (unsigned long)(sizeof(req) >> 2), \ + client->req_len); \ return(BadLength); \ + } \ } while (0) #define REQUEST_AT_LEAST_EXTRA_SIZE(req, extra) \ diff -ruwN source-old/include/meson.build source/include/meson.build --- source-old/include/meson.build 2025-02-25 11:56:05.000000000 -0700 +++ source/include/meson.build 2025-11-07 14:37:53.043095171 -0700 @@ -162,7 +162,7 @@ conf_data.set('HAVE_PORT_CREATE', cc.has_function('port_create') ? '1' : false) conf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep) ? '1' : false) conf_data.set('HAVE_SETEUID', cc.has_function('seteuid') ? '1' : false) -conf_data.set('HAVE_SETITIMER', cc.has_function('setitimer') ? '1' : false) +conf_data.set('HAVE_SETITIMER', false) conf_data.set('HAVE_SHMCTL64', cc.has_function('shmctl64') ? '1' : false) conf_data.set('HAVE_SIGACTION', cc.has_function('sigaction') ? '1' : false) conf_data.set('HAVE_SIGPROCMASK', cc.has_function('sigprocmask') ? '1' : false) @@ -190,14 +190,14 @@ conf_data.set('LISTEN_LOCAL', get_option('listen_local')) if cc.has_header_symbol('sys/socket.h', 'SCM_RIGHTS') - conf_data.set('XTRANS_SEND_FDS', '1') + #TODO conf_data.set('XTRANS_SEND_FDS', '1') endif -if conf_data.get('HAVE_GETPEEREID').to_int() == 0 and conf_data.get('HAVE_GETPEERUCRED').to_int() == 0 - if not cc.has_header_symbol('sys/socket.h', 'SO_PEERCRED') +#if conf_data.get('HAVE_GETPEEREID').to_int() == 0 and conf_data.get('HAVE_GETPEERUCRED').to_int() == 0 + #if not cc.has_header_symbol('sys/socket.h', 'SO_PEERCRED') conf_data.set('NO_LOCAL_CLIENT_CRED', 1) - endif -endif + #endif +#endif conf_data.set('TCPCONN', '1') conf_data.set('UNIXCONN', host_machine.system() != 'windows' ? '1' : false) @@ -212,7 +212,7 @@ conf_data.set('DRI2', build_dri2 ? '1' : false) conf_data.set('DRI3', build_dri3 ? '1' : false) if build_glx - conf_data.set_quoted('DRI_DRIVER_PATH', dri_dep.get_pkgconfig_variable('dridriverdir')) + conf_data.set_quoted('DRI_DRIVER_PATH', '/usr/lib/dri') endif conf_data.set('HAS_SHM', build_mitshm ? '1' : false) conf_data.set('MITSHM', build_mitshm ? '1' : false) diff -ruwN source-old/meson.build source/meson.build --- source-old/meson.build 2025-11-07 14:39:22.420574991 -0700 +++ source/meson.build 2025-11-07 14:37:53.043279226 -0700 @@ -439,7 +439,7 @@ error('DRI requested, but LIBDRM not found') endif -build_modesetting = libdrm_dep.found() and dri2proto_dep.found() +build_modesetting = false #TODO: libdrm_dep.found() and dri2proto_dep.found() build_vgahw = false if get_option('vgahw') == 'auto' @@ -753,7 +753,7 @@ subdir('hw') if host_machine.system() != 'windows' - subdir('test') + #subdir('test') endif install_man(configure_file( diff -ruwN source-old/os/access.c source/os/access.c --- source-old/os/access.c 2025-02-25 11:56:05.000000000 -0700 +++ source/os/access.c 2025-11-07 14:37:53.043632189 -0700 @@ -120,7 +120,7 @@ #include #endif -#if defined(SVR4) || (defined(SYSV) && defined(__i386__)) || defined(__GNU__) +#if defined(SVR4) || (defined(SYSV) && defined(__i386__)) || defined(__GNU__) || defined(__redox__) #include #endif #if defined(SYSV) && defined(__i386__) diff -ruwN source-old/Xext/bigreq.c source/Xext/bigreq.c --- source-old/Xext/bigreq.c 2025-02-25 11:56:05.000000000 -0700 +++ source/Xext/bigreq.c 2025-11-07 14:37:53.043862040 -0700 @@ -51,7 +51,8 @@ } if (stuff->brReqType != X_BigReqEnable) return BadRequest; - REQUEST_SIZE_MATCH(xBigReqEnableReq); + // libxkbcommon sends incorrect size + REQUEST_AT_LEAST_SIZE(xBigReqEnableReq); client->big_requests = TRUE; rep = (xBigReqEnableReply) { .type = X_Reply, ================================================ FILE: recipes/wip/x11/xserver-xorg-video-orbital/recipe.toml ================================================ # x11 video driver for running inside of orbital [source] tar = "https://www.x.org/releases/individual/driver/xf86-video-dummy-0.4.1.tar.xz" blake3 = "9b49296f62bf4d22345d87fc01f2a5571f941457c19d21c8800f8f6d2e64ae67" patches = ["redox.patch"] script = """ autotools_recursive_regenerate """ [build] dependencies = [ "liborbital", "pixman", "x11proto", "xserver-xorg", ] template = "custom" script = """ DYNAMIC_INIT export LIBS="-lorbital" cookbook_configure """ ================================================ FILE: recipes/wip/x11/xserver-xorg-video-orbital/redox.patch ================================================ diff -ruwN source-old/src/dummy_driver.c source/src/dummy_driver.c --- source-old/src/dummy_driver.c 2023-05-07 14:27:44.000000000 -0600 +++ source/src/dummy_driver.c 2025-10-29 11:13:11.863430241 -0600 @@ -39,6 +39,7 @@ /* These need to be checked */ #include #include +#include #include "scrnintstr.h" #include "servermd.h" @@ -51,6 +52,7 @@ static Bool DUMMYEnterVT(VT_FUNC_ARGS_DECL); static void DUMMYLeaveVT(VT_FUNC_ARGS_DECL); static Bool DUMMYCloseScreen(CLOSE_SCREEN_ARGS_DECL); +static void DUMMYBlockHandler(ScreenPtr pScreen, void *timeout); static Bool DUMMYCreateWindow(WindowPtr pWin); static void DUMMYFreeScreen(FREE_SCREEN_ARGS_DECL); static ModeStatus DUMMYValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, @@ -768,6 +770,97 @@ static ScrnInfoPtr DUMMYScrn; /* static-globalize it */ +static void DUMMYOrbitalEvent(int fd, int ready, void *data) { + DUMMYPtr dPtr = (DUMMYPtr)data; + if (!dPtr->orb_window) { + return; + } + + void *event_iter = orb_window_events(dPtr->orb_window); + if (!event_iter) { + return; + } + + bool running = true; + while (running) { + OrbEventOption event = orb_events_next(event_iter); + if (event.tag == OrbEventOption_None) { + break; + } + //TODO: handle more events + switch (event.tag) { + case OrbEventOption_Key: + if (inputInfo.keyboard) { + if (event.key.scancode > 0) { + //TODO: more advanced key mapping? + xf86PostKeyEvent(inputInfo.keyboard, event.key.scancode + 8, event.key.pressed); + } + } + break; + case OrbEventOption_Mouse: + if (inputInfo.pointer) { + xf86PostMotionEvent(inputInfo.pointer, 1, 0, 2, event.mouse.x, event.mouse.y); + } + break; + case OrbEventOption_MouseRelative: + if (inputInfo.pointer) { + if (event.mouse_relative.dx || event.mouse_relative.dy) { + xf86PostMotionEvent(inputInfo.pointer, 0, 0, 2, event.mouse_relative.dx, event.mouse_relative.dy); + } + } + break; + case OrbEventOption_Button: + if (inputInfo.pointer) { + xf86PostButtonEvent(inputInfo.pointer, 0, 1, event.button.left, 0, 0); + xf86PostButtonEvent(inputInfo.pointer, 0, 2, event.button.middle, 0, 0); + xf86PostButtonEvent(inputInfo.pointer, 0, 3, event.button.right, 0, 0); + } + break; + case OrbEventOption_None: + running = false; + break; + default: + //printf("unknown orbital event %d: %d, %d\n", event.unknown.code, event.unknown.a, event.unknown.b); + break; + } + } + + orb_events_destroy(event_iter); +} + +static Bool +CreateScreenResources(ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + DUMMYPtr dPtr = DUMMYPTR(pScrn); + PixmapPtr rootPixmap; + Bool ret; + + pScreen->CreateScreenResources = dPtr->CreateScreenResources; + ret = pScreen->CreateScreenResources(pScreen); + pScreen->CreateScreenResources = CreateScreenResources; + + if (!ret) { + return FALSE; + } + + rootPixmap = pScreen->GetScreenPixmap(pScreen); + + dPtr->damage = DamageCreate(NULL, NULL, DamageReportNone, TRUE, + pScreen, rootPixmap); + if (dPtr->damage) { + DamageRegister(&rootPixmap->drawable, dPtr->damage); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Damage tracking initialized\n"); + } + else { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Failed to create screen damage record\n"); + return FALSE; + } + + return TRUE; +} + + /* Mandatory */ static Bool DUMMYScreenInit(SCREEN_INIT_ARGS_DECL) @@ -776,7 +869,6 @@ DUMMYPtr dPtr; int ret; VisualPtr visual; - void *pixels; /* * we need to get the ScrnInfoRec for this screen, so let's allocate @@ -786,9 +878,22 @@ dPtr = DUMMYPTR(pScrn); DUMMYScrn = pScrn; + if (pScrn->bitsPerPixel != 32) { + printf("unsupported BPP %d\n", pScrn->bitsPerPixel); + return FALSE; + } - if (!(pixels = malloc(pScrn->videoRam * 1024))) + printf( + "orb_window_new %d, %d\n", + pScrn->virtualX, pScrn->virtualY + ); + dPtr->orb_window = orb_window_new_flags(-1, -1, pScrn->virtualX, pScrn->virtualY, "X11", ORB_WINDOW_ASYNC | ORB_WINDOW_BORDERLESS); + if (!dPtr->orb_window) { + printf("failed to open orbital window\n"); return FALSE; + } + + SetNotifyFd(orb_window_fd(dPtr->orb_window), DUMMYOrbitalEvent, X_NOTIFY_READ, dPtr); /* * Reset visual list. @@ -800,12 +905,10 @@ if (!miSetVisualTypes(pScrn->depth, miGetDefaultVisualMask(pScrn->depth), pScrn->rgbBits, pScrn->defaultVisual)) { - free(pixels); return FALSE; } if (!miSetPixmapDepths ()) { - free(pixels); return FALSE; } @@ -813,7 +916,7 @@ * Call the framebuffer layer's ScreenInit function, and fill in other * pScreen fields. */ - ret = fbScreenInit(pScreen, pixels, + ret = fbScreenInit(pScreen, orb_window_data(dPtr->orb_window), pScrn->virtualX, pScrn->virtualY, pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, pScrn->bitsPerPixel); @@ -838,6 +941,10 @@ /* must be after RGB ordering fixed */ fbPictureInit(pScreen, 0, 0); + /* Wrap the current CreateScreenResources function */ + dPtr->CreateScreenResources = pScreen->CreateScreenResources; + pScreen->CreateScreenResources = CreateScreenResources; + xf86SetBlackWhitePixels(pScreen); /* initialize XRANDR */ @@ -943,6 +1050,10 @@ dPtr->CloseScreen = pScreen->CloseScreen; pScreen->CloseScreen = DUMMYCloseScreen; + /* Wrap the current BlockHandler function */ + dPtr->BlockHandler = pScreen->BlockHandler; + pScreen->BlockHandler = DUMMYBlockHandler; + /* Wrap the current CreateWindow function */ dPtr->CreateWindow = pScreen->CreateWindow; pScreen->CreateWindow = DUMMYCreateWindow; @@ -975,11 +1086,26 @@ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); DUMMYPtr dPtr = DUMMYPTR(pScrn); - free(pScreen->GetScreenPixmap(pScreen)->devPrivate.ptr); + if (dPtr->damage) { + DamageUnregister(dPtr->damage); + DamageDestroy(dPtr->damage); + dPtr->damage = NULL; + } + + if (dPtr->orb_window) { + RemoveNotifyFd(orb_window_fd(dPtr->orb_window)); + + printf("orb_window_destroy %p\n", dPtr->orb_window); + orb_window_destroy(dPtr->orb_window); + dPtr->orb_window = NULL; + } if (dPtr->CursorInfo) xf86DestroyCursorInfoRec(dPtr->CursorInfo); + pScreen->CreateScreenResources = dPtr->CreateScreenResources; + pScreen->BlockHandler = dPtr->BlockHandler; + pScrn->vtSema = FALSE; pScreen->CloseScreen = dPtr->CloseScreen; return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); @@ -1009,6 +1135,31 @@ Atom VFB_PROP = 0; #define VFB_PROP_NAME "VFB_IDENT" +static void DUMMYBlockHandler(ScreenPtr pScreen, void *timeout) { + DUMMYPtr dPtr = DUMMYPTR(DUMMYScrn); + + //printf("BlockHandler %p %p\n", pScreen, timeout); + pScreen->BlockHandler = dPtr->BlockHandler; + pScreen->BlockHandler(pScreen, timeout); + dPtr->BlockHandler = pScreen->BlockHandler; + pScreen->BlockHandler = DUMMYBlockHandler; + + if (dPtr->damage) { + RegionPtr dirty = DamageRegion(dPtr->damage); + if (RegionNil(dirty)) { + // Do not sync if damage empty + return; + } + DamageEmpty(dPtr->damage); + } + + if (dPtr->orb_window) { + //TODO: use damage region? + //printf("orb_window_sync %p\n", dPtr->orb_window); + orb_window_sync(dPtr->orb_window); + } +} + static Bool DUMMYCreateWindow(WindowPtr pWin) { diff -ruwN source-old/src/dummy.h source/src/dummy.h --- source-old/src/dummy.h 2023-05-07 14:27:44.000000000 -0600 +++ source/src/dummy.h 2025-10-29 10:11:23.172517830 -0600 @@ -4,6 +4,7 @@ #include "xf86_OSproc.h" #include "xf86Cursor.h" +#include "xf86Xinput.h" #ifdef XvExtension #include "xf86xv.h" @@ -13,7 +14,9 @@ #include "compat-api.h" -#define DUMMY_MAX_SCREENS 16 +#include + +#define DUMMY_MAX_SCREENS 1 /* Supported chipsets */ typedef enum { @@ -44,6 +47,7 @@ OptionInfoPtr Options; Bool swCursor; /* proc pointer */ + CreateScreenResourcesProcPtr CreateScreenResources; CloseScreenProcPtr CloseScreen; xf86CursorInfoPtr CursorInfo; @@ -52,6 +56,7 @@ int cursorFG, cursorBG; dummy_colors colors[1024]; + void (*BlockHandler)(ScreenPtr, void*) ; /* wrapped BlockHandler */ Bool (*CreateWindow)(WindowPtr) ; /* wrapped CreateWindow */ Bool prop; /* XRANDR support begin */ @@ -60,6 +65,9 @@ struct _xf86Output *paOutputs[DUMMY_MAX_SCREENS]; int connected_outputs; /* XRANDR support end */ + + DamagePtr damage; + void *orb_window; } DUMMYRec, *DUMMYPtr; /* The privates of the DUMMY driver */ ================================================ FILE: recipes/wip/x11/xterm/recipe.toml ================================================ [source] tar = "https://invisible-island.net/archives/xterm/xterm-398.tgz" blake3 = "c42112586b2c231681db9327df9d797953469e3b7cb2abe93b8f3f821597d528" patches = ["redox.patch"] [build] dependencies = [ "expat", "fontconfig", "freetype2", "libice", "libpng", "libpthread-stubs", "libsm", "libx11", "libxau", "libxaw", "libxcb", "libxext", "libxft", "libxmu", "libxpm", "libxrender", "libxt", "ncurses", "pcre2", "x11proto", "zlib", ] template = "custom" script = """ DYNAMIC_INIT export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/usr/include/freetype2" #TODO: why are LIBS not automatic? export LIBS="-lXaw7 -lXmu -lXpm -lXt -lSM -lICE -lXft -lfreetype -lfontconfig -lXrender -lXext -lX11 -lxcb -lXau -lpcre2-8 -lexpat -lpng -lz" cookbook_configure \ --with-pcre2 \ cf_cv_func_setitimer=no """ ================================================ FILE: recipes/wip/x11/xterm/redox.patch ================================================ diff -ruwN xterm-398/main.c source/main.c --- xterm-398/main.c 2025-03-08 06:03:19.000000000 -0700 +++ source/main.c 2025-05-05 21:25:41.492475745 -0600 @@ -162,6 +162,10 @@ #define USE_POSIX_SIGNALS #endif +#ifndef XTABS +#define XTABS 0x01800 +#endif + #if defined(SYSV) && !defined(SVR4) && !defined(ISC22) && !defined(ISC30) /* older SYSV systems cannot ignore SIGHUP. Shell hangs, or you get extra shells, or something like that */ @@ -185,6 +189,10 @@ #define WTMP #endif +#ifdef __redox__ +#define USE_SYSV_PGRP +#endif + #ifdef __SCO__ #ifndef _SVID3 #define _SVID3 @@ -3114,7 +3122,7 @@ } } -#if defined(__osf__) || (defined(__linux__) && !defined(USE_USG_PTYS)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) +#if defined(__osf__) || (defined(__linux__) && !defined(USE_USG_PTYS)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__redox__) #define USE_OPENPTY 1 static int opened_tty = -1; #endif @@ -4494,7 +4502,7 @@ /* make /dev/tty work */ ioctl(ttyfd, TIOCSCTTY, 0); #endif -#ifdef USE_SYSV_PGRP +#if defined(USE_SYSV_PGRP) && !defined(__redox__) /* We need to make sure that we are actually * the process group leader for the pty. If * we are, then we should now be able to open diff -ruwN xterm-398/xterm.h source/xterm.h --- xterm-398/xterm.h 2025-04-08 01:36:09.000000000 -0600 +++ source/xterm.h 2025-05-05 21:11:05.413561791 -0600 @@ -80,7 +80,7 @@ #define HAVE_PUTENV 1 #endif -#if defined(CSRG_BASED) || defined(__GNU__) || defined(__minix) +#if defined(CSRG_BASED) || defined(__GNU__) || defined(__minix) || defined(__redox__) #define USE_POSIX_TERMIOS 1 #endif @@ -208,7 +208,7 @@ #define HAVE_PTY_H #endif -#if !defined(USG) && !defined(__minix) +#if !defined(USG) && !defined(__minix) && !defined(__redox__) #define HAVE_SETITIMER 1 #else #define HAVE_SETITIMER 0 diff -ruwN xterm-398/xterm_io.h source/xterm_io.h --- xterm-398/xterm_io.h 2024-09-30 02:03:20.000000000 -0600 +++ source/xterm_io.h 2025-05-05 21:11:05.413561791 -0600 @@ -57,7 +57,7 @@ #define USE_SYSV_TERMIO #endif -#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__INTERIX) || defined(__APPLE__) || defined(__UNIXWARE__) || defined(__hpux) +#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__INTERIX) || defined(__APPLE__) || defined(__UNIXWARE__) || defined(__hpux) || defined(__redox__) #ifndef USE_POSIX_TERMIOS #define USE_POSIX_TERMIOS #endif ================================================ FILE: recipes/wip/x11/xtrans/recipe.toml ================================================ [source] tar = "https://xorg.freedesktop.org/archive/individual/lib/xtrans-1.6.0.tar.xz" blake3 = "18e5a2478425ec43370d7719bc4ee4f25d01ad7f580fcc3b5d91effa267cbaaa" [build] template = "configure" ================================================ FILE: redox.ipxe ================================================ #!ipxe kernel bootloader-live.efi initrd http://${next-server}:8080/redox-live.iso boot ================================================ FILE: rust-toolchain.toml ================================================ [toolchain] channel = "nightly-2025-10-03" components = ["rust-src", "rustfmt", "clippy"] profile = "minimal" ================================================ FILE: scripts/backtrace.sh ================================================ #!/usr/bin/env bash # This script allow the user to copy a Rust backtrace from Redox # and retrieve the symbols usage() { echo "Usage: $0 -r recipe [ -e command_name ] [ -R ] [ -X | -6 | -A ] [[ -b backtracefile ] | [ addr1 ... ]]" echo echo "Print the backtrace contained in the backtracefile." echo "Symbols are taken from the executable for the given recipe." echo "If no backtracefile is given, decode the given addresses instead." echo "This command must be run in the 'redox' directory." echo echo "-X for x86_64, -6 for i686, -A for aarch64 (x86_64 is the default)." echo "To read from stdin, use '-b -'" echo "The name of the executable must match what Cargo believes it to be." echo "If the executalbe is named 'recipe_command', just use 'command' as the name." echo "The debug version of the executable is used if available." echo "The release version is used if no debug version exists." echo "-R to force the use of the 'release' version of the executable." echo "Make sure the executable is the one that produced the backtrace." exit 1 } ARCH="x86_64" while getopts ":b:e:r:hRXA6" opt do case "$opt" in X) ARCH="x86_64";; A) ARCH="aarch64";; 6) ARCH="i686";; b) INFILE="$OPTARG";; e) COMMAND="$OPTARG";; i) INST="$OPTARG";; r) RECIPE_NAME="$OPTARG";; R) RELEASE=true;; h) usage;; \?) echo "Unknown option -$OPTARG, try -h for help"; exit;; :) echo "-$OPTARG requires a value"; exit;; esac done shift $((OPTIND -1)) if [ -z "$RECIPE_NAME" ] then usage fi if [ -z "$INFILE" -a $# = 0 ] then usage fi # if no command name is given, assume it's the same as the recipe name RECIPE_DIR="$(target/release/find_recipe $RECIPE_NAME)" if [ -z "$COMMAND" ] then COMMAND="$RECIPE_NAME" fi # look for the debug version of the command EXECUTABLE="$RECIPE_DIR"/target/"$ARCH"-unknown-redox/build/target/"$ARCH"-unknown-redox/debug/"$COMMAND" # try the release version next if [ ! -f "$EXECUTABLE" -o ! -z "$RELEASE" ] then EXECUTABLE="$RECIPE_DIR"/target/"$ARCH"-unknown-redox/build/target/"$ARCH"-unknown-redox/release/"$COMMAND" fi if [ $# -ne 0 ] then addr2line --demangle=rust --inlines --pretty-print --functions --exe="$EXECUTABLE" $@ else sed '/^\s*$/d; s/^.*0x\([0-9a-f]*\).*$/\1/g' "$INFILE" | addr2line --demangle=rust --inlines --pretty-print --functions --exe="$EXECUTABLE" fi ================================================ FILE: scripts/cargo-update.sh ================================================ #!/usr/bin/env bash # This script runs "make f.recipe" and "cargo update" in the specified recipe recipe_name="$1" recipe_path=$(find recipes -name "$recipe_name" -maxdepth 4) make f."$recipe_name" cd "$recipe_path"/source cargo update ================================================ FILE: scripts/category.sh ================================================ #!/usr/bin/env bash # This script run the recipe command options on some Cookbook category if [ -z "$1" ] || [ -z "$2" ] then echo "Build or clean all recipe directories in a category" >&2 echo Usage: $0 "" "" >&2 echo "" can be f, r, c, u, p, or combinations that \"make\" understands >&2 echo "" can be path of category you want to run e.g. \"core\", \"wip\", \"wip/dev\" >&2 exit 1 fi make "${1#-}"."--category-$2" ================================================ FILE: scripts/changelog.sh ================================================ #!/usr/bin/env bash # This script show the changelog of all Redox components set -e LAST_RELEASE_TAG="$(git describe --tags --abbrev=0)" LAST_RELEASE_TIMESTAMP="$(git log --format="%ct" -1 "${LAST_RELEASE_TAG}")" echo "Last release: ${LAST_RELEASE_TAG} at ${LAST_RELEASE_TIMESTAMP}" REPOS=( redox=. cookbook=cookbook rust=rust ) if [ "$1" = "--summary" ] then summary=true elif [ "$1" = "--mdlinks" ] then mdlinks=true fi for package in $(installer/target/release/redox_installer --list-packages -c config/$(uname -m)/desktop.toml) do package_source="$(target/release/find_recipe ${package})" REPOS+=("${package}=${package_source}/source") done # TODO: resolve dependencies instead of manually adding these initfs packages for package in init logd ramfs randd zerod do package_source="$(target/release/find_recipe ${package})" REPOS+=("${package}=${package_source}/source") done for name_repo in "${REPOS[@]}" do name="$(echo "${name_repo}" | cut -d "=" -f 1)" repo="$(echo "${name_repo}" | cut -d "=" -f 2-)" if [ "${summary}" = true ] then echo echo "### ${name}" echo elif [ "${mdlinks}" = true ] then echo -n "- [${name}]" else echo -en "\x1B[1m${name}:\x1B[0m " fi if [ -e "${repo}/.git" ] then remote="$(git -C "${repo}" remote get-url origin)" website="${remote%.*}" before="$(git -C "${repo}" log --until="${LAST_RELEASE_TIMESTAMP}" --format="%h" -1)" after="$(git -C "${repo}" log --since="${LAST_RELEASE_TIMESTAMP}" --format="%h" -1)" if [ -z "${before}" ] then echo "New repository at ${website}" elif [ -z "${after}" ] then echo "No changes" else if [ "${summary}" = true ] then git -C "${repo}" log ${before}...${after} --oneline elif [ "${mdlinks}" = true ] then echo "(${website}/-/compare/${before}...${after})" else echo "${website}/-/compare/${before}...${after}" fi fi else echo "Not a git repository" fi done ================================================ FILE: scripts/check-ci-config.sh ================================================ #!/usr/bin/env bash set -e if [ -n "$1" ] then ARCH="$1" else ARCH="x86_64" fi make build/fstools declare -A packages for recipe_dir in $(build/fstools/bin/list_recipes | grep -v '^recipes/wip/') do recipe_name="$(basename "${recipe_dir}")" packages["${recipe_name}"]="${recipe_dir}" done config="config/${ARCH}/ci.toml" for package in $(build/fstools/bin/redox_installer --list-packages -c "${config}") do packages["${package}"]="" done echo "Checking for missing packages in ${config}" printf '%-32s%s\n' "PACKAGE" "RECIPE" for package in "${!packages[@]}" do recipe_dir="${packages["${package}"]}" if [ -n "${recipe_dir}" ] then printf '%-32s%s\n' "${package}" "${recipe_dir}" fi done | sort ================================================ FILE: scripts/commit-hash.sh ================================================ #!/usr/bin/env bash # This script shows the current Git commit hash of system recipes at recipes/core set -e # Check if recipes/core directory exists if [ ! -d "recipes/core" ] then echo "Error: recipes/core directory not found" exit 1 fi # Iterate through all system recipes in recipes/core for recipe_dir in recipes/core/*/ do recipe_name=$(basename "$recipe_dir") source_dir="$recipe_dir/source" # Check if source directory exists and is a git repository if [ -d "$source_dir" ] && [ -d "$source_dir/.git" ] then # Get the commit hash commit_hash=$(cd "$source_dir" && git rev-parse HEAD) echo "$recipe_name: $commit_hash" fi done ================================================ FILE: scripts/dual-boot.sh ================================================ #!/usr/bin/env bash # This script install Redox in the free space of your storage device # and add a boot entry (if you are using the systemd-boot boot loader) set -e if [ -n "$1" ] then DISK="$1" else DISK=/dev/disk/by-partlabel/REDOX_INSTALL fi if [ ! -b "${DISK}" ] then echo "$0: '${DISK}' is not a block device" >&2 exit 1 fi eval $(make setenv) IMAGE="${BUILD}/filesystem.img" set -x rm -f "${IMAGE}" make "${IMAGE}" sudo popsicle "${IMAGE}" "${DISK}" set +x ESP="$(bootctl --print-esp-path)" if [ -z "${ESP}" ] then echo "$0: no ESP found" >&2 exit 1 fi BOOTLOADER="recipes/core/bootloader/target/${ARCH}-unknown-redox/stage/usr/lib/boot/bootloader.efi" set -x sudo mkdir -pv "${ESP}/EFI" "${ESP}/loader/entries" sudo cp -v "${BOOTLOADER}" "${ESP}/EFI/redox.efi" sudo tee "${ESP}/loader/entries/redox.conf" < /dev/null) \ $(find "$recipe_path/target/$target/stage/bin" -type f 2> /dev/null) do shortname="$(basename $command)" echo "$recipe_path $shortname" done done | sort | $uniq ================================================ FILE: scripts/find-recipe.sh ================================================ #!/usr/bin/env bash # This script show all files installed by a recipe # Ensure arch and config are set as desired, we use these to find the build dir export ARCH=$(uname -m) export CONFIG_NAME=desktop # Make sure to unmount the image first make unmount &>/dev/null || true # Mount the image make mount >/dev/null # Find all files find "build/${ARCH}/${CONFIG_NAME}/" -type f | cut -d / -f5- |\ sort |\ uniq |\ while read path do # Skip empty paths if [ -z "${path}" ] then continue fi # Find all packages providing this file pkgs="$( find recipes/*"/target/${ARCH}-unknown-redox/stage/${path}" 2>/dev/null | cut -d/ -f3 | tr '\n' ' ' | sort | uniq )" if [ -n "${pkgs}" ] then echo "$path: ${pkgs}" else echo "$path: no packages, see config/${ARCH}/${CONFIG_NAME}.toml" fi done # Make sure to unmount the image make unmount &>/dev/null || true ================================================ FILE: scripts/include-recipes.sh ================================================ #!/usr/bin/env bash # This script create a list with: # "recipe-name = {} #TODO" # For quick testing of WIP recipes # Given a string, find recipe.toml files containing that string. # Create a list that can be copy/pasted into a filesystem config. if [ -z "$*" ] then echo "Find matching recipes, and format for inclusion in config" echo "Usage: $0 \"pattern\"" echo "Must be run from 'redox' directory" echo "e.g. $0 \"TODO.*error\"" exit 1 fi cookbook_recipes="recipes" recipe_paths=$(grep -rl "$*" "$cookbook_recipes" --include recipe.toml) for recipe_path in $recipe_paths do recipe_dir="$(dirname $recipe_path)" recipe_name="$(basename $recipe_dir)" echo "$recipe_name = {} # " $(grep "$*" $recipe_path) done ================================================ FILE: scripts/mount-redoxfs.sh ================================================ #!/usr/bin/env bash set -e MOUNT_POINT="/mnt/redoxfs" DISK_DEVICE="" show_help() { echo "Usage: $0 [options] " echo "" echo "Mount or unmount a RedoxFS partition" echo "" echo "Options:" echo " -u, --unmount Unmount the RedoxFS partition" echo " -m, --mount-point PATH Custom mount point (default: /mnt/redoxfs)" echo " -h, --help Show this help" echo "" echo "Examples:" echo " $0 /dev/sda3 Mount /dev/sda3" echo " $0 -u Unmount from default location" echo " $0 -m /mnt/my-redox /dev/sda3 Mount to custom location" } unmount_fs() { if mountpoint -q "$MOUNT_POINT" 2>/dev/null; then echo "Unmounting RedoxFS from $MOUNT_POINT..." fusermount -u "$MOUNT_POINT" || fusermount3 -u "$MOUNT_POINT" echo "Successfully unmounted" else echo "Nothing mounted at $MOUNT_POINT" fi exit 0 } check_dependencies() { # Try to find redoxfs in multiple locations REDOXFS_BIN="" if [ -x "build/fstools/bin/redoxfs" ]; then REDOXFS_BIN="build/fstools/bin/redoxfs" elif [ -x "$(dirname "$0")/../build/fstools/bin/redoxfs" ]; then REDOXFS_BIN="$(dirname "$0")/../build/fstools/bin/redoxfs" elif command -v redoxfs &> /dev/null; then REDOXFS_BIN="redoxfs" fi if [ -z "$REDOXFS_BIN" ]; then echo "Error: redoxfs command not found" echo "Please build it first with: make fstools" exit 1 fi if ! ldconfig -p 2>/dev/null | grep -q "libfuse3"; then echo "Error: libfuse 3.x is not installed" echo "Please install it:" if command -v apt-get &> /dev/null; then echo " sudo apt-get install fuse3 libfuse3-dev" elif command -v dnf &> /dev/null; then echo " sudo dnf install fuse3-devel" elif command -v pacman &> /dev/null; then echo " sudo pacman -S fuse3" else echo " (check your package manager for fuse3)" fi exit 1 fi } UNMOUNT=false while [[ $# -gt 0 ]]; do case $1 in -u|--unmount) UNMOUNT=true shift ;; -m|--mount-point) MOUNT_POINT="$2" shift 2 ;; -h|--help) show_help exit 0 ;; *) DISK_DEVICE="$1" shift ;; esac done if [ "$UNMOUNT" = true ]; then unmount_fs fi if [ -z "$DISK_DEVICE" ]; then DISK_DEVICE="/dev/disk/by-partlabel/REDOX_INSTALL" if [ ! -b "$DISK_DEVICE" ]; then echo "Error: No device specified and default partition not found" echo "" show_help exit 1 fi fi if [ ! -b "$DISK_DEVICE" ] && [ ! -f "$DISK_DEVICE" ]; then echo "Error: $DISK_DEVICE is not a block device or file" exit 1 fi check_dependencies mkdir -p "$MOUNT_POINT" echo "Mounting $DISK_DEVICE to $MOUNT_POINT..." "$REDOXFS_BIN" "$DISK_DEVICE" "$MOUNT_POINT" echo "RedoxFS successfully mounted at $MOUNT_POINT" echo "To unmount, run: $0 -u" ================================================ FILE: scripts/network-boot.sh ================================================ #!/usr/bin/env bash # Your host must use the static IP ${NETWORK}.1 and subnet mask 255.255.255.0 # 'Rx' in ascii is 82 and 120, adjust to taste NETWORK=10.82.120 set -ex trap 'kill -HUP 0' EXIT eval $(make setenv) make "${BUILD}/redox-live.iso" echo "Allowing packet forwarding" echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward iface="$(route | grep '^default ' | grep -o '[^ ]*$' | head -n 1)" echo "Forwarding packets to '$iface'" if ! sudo iptables -t nat -C POSTROUTING -o "$iface" -j MASQUERADE then echo "Forwarding rule does not exist, adding" sudo iptables -t nat -A POSTROUTING -o "$iface" -j MASQUERADE else echo "Forwarding rule already exists" fi ARGS=( "--no-daemon" "--bind-interfaces" "--listen-address=${NETWORK}.1" "--port=0" "--dhcp-range=${NETWORK}.3,${NETWORK}.254,255.255.255.0,1h" "--dhcp-option=6,1.1.1.1,1.0.0.1" "--enable-tftp" "--tftp-root=$(realpath "${BUILD}")" # BIOS "--dhcp-match=set:bios,option:client-arch,0" "--dhcp-boot=tag:!ipxe,tag:bios,undionly.kpxe" # EFI x86_64 "--dhcp-match=set:efi-x86_64,option:client-arch,7" "--dhcp-match=set:efi-x86_64,option:client-arch,9" "--dhcp-boot=tag:!ipxe,tag:efi-x86_64,ipxe-x86_64.efi" # EFI aarch64 "--dhcp-match=set:efi-aarch64,option:client-arch,11" "--dhcp-boot=tag:!ipxe,tag:efi-aarch64,ipxe-aarch64.efi" # IPXE "--dhcp-userclass=set:ipxe,iPXE" "--dhcp-boot=tag:ipxe,redox.ipxe" ) sudo dnsmasq "${ARGS[@]}"& python3 -m http.server -b "${NETWORK}.1" -d "${BUILD}" "8080" ================================================ FILE: scripts/pkg-size.sh ================================================ #!/usr/bin/env bash # This script show the package size of the recipes ("stage.pkgar" and "stage.tar.gz") # It must be used by package maintainers to enforce the library linking size policy if [ $# = 0 ] then find recipes \( -name stage.pkgar -o -name stage.tar.gz \) -exec ls -hs {} \; exit 0 fi for recipe in $@ do if [ "$recipe" = "-h" ] || [ "$recipe" = "--help" ] then echo "Usage: $0 [recipe] ..." echo " For the recipe(s), prints the size of 'stage.pkgar' and 'stage.tar.gz'." echo " If no recipe is given, then all packages are listed." exit 0 fi recipe_paths=$(find recipes -name $recipe) for recipe_path in $recipe_paths do if [ -f "$recipe_path/recipe.toml" ] || [ -f "$recipe_path/recipe.sh" ] then find "$recipe_path" \( -name stage.pkgar -o -name stage.tar.gz \) -exec ls -hs {} \; fi done done ================================================ FILE: scripts/print-recipe.sh ================================================ #!/usr/bin/env bash # This script print the recipe configuration cat $(target/release/find_recipe "$1")/recipe.* ================================================ FILE: scripts/recipe-match.sh ================================================ #!/usr/bin/env bash # This script print the recipe configuration files with determined text bat --decorations=always $(rg "$1" -li --sort=path recipes) ================================================ FILE: scripts/recipe-path.sh ================================================ #!/usr/bin/env bash FIND_RECIPE="find recipes -maxdepth 4 -name" for recipe in $* do ${FIND_RECIPE} "${recipe}" done ================================================ FILE: scripts/show-package.sh ================================================ #!/usr/bin/env bash # This script show the contents of the "stage" and "sysroot" folders in some recipe if [ -z "$*" ] then echo "Show the contents of the stage and sysroot folders in recipe(s)" echo "Usage: $0 recipe1 ..." echo "Must be run from the 'redox' directory" echo "e.g. $0 kernel" exit 1 fi find_recipe="target/release/find_recipe" if [ ! -x "$find_recipe" ] then echo "$find_recipe not found." echo "Please run 'make fstools' and try again." exit 1 fi for recipe in $* do recipe_dir="$("$find_recipe" "$recipe")" ls -1 "$recipe_dir/target"/*/{stage,sysroot} done ================================================ FILE: scripts/ventoy.sh ================================================ #!/usr/bin/env bash # This script create and copy the Redox bootable image to an Ventoy-formatted device set -e ARCHS=( i686 x86_64 ) CONFIGS=( demo desktop ) VENTOY="/media/${USER}/Ventoy" if [ ! -d "${VENTOY}" ] then echo "Ventoy not mounted" >&2 exit 1 fi for ARCH in "${ARCHS[@]}" do for CONFIG_NAME in "${CONFIGS[@]}" do IMAGE="build/${ARCH}/${CONFIG_NAME}/redox-live.iso" make ARCH="${ARCH}" CONFIG_NAME="${CONFIG_NAME}" "${IMAGE}" cp -v "${IMAGE}" "${VENTOY}/redox-${CONFIG_NAME}-${ARCH}.iso" done done sync echo "Finished copying configs (${CONFIGS[@]}) for archs (${ARCHS[@]})" ================================================ FILE: src/bin/cookbook_redoxer.rs ================================================ use std::env; fn main() { let mut args: Vec = env::args().collect(); // Ensure all flags go to cargo if args.len() >= 2 { args.insert(2, "--".to_string()); if args[1] == "write-exec" { if let Ok(stage_dir) = std::env::var("COOKBOOK_STAGE") { args.insert(2, format!("{}/root", stage_dir)); args.insert(2, "--folder".to_string()); args.insert(2, stage_dir); args.insert(2, "--root".to_string()); } } } redoxer::main(&args); } ================================================ FILE: src/bin/repo.rs ================================================ use ansi_to_tui::IntoText; use anyhow::{Context, anyhow, bail}; use cookbook::config::{CookConfig, get_config, init_config}; use cookbook::cook::cook_build::{build, get_stage_dirs, remove_stage_dir}; use cookbook::cook::fetch::{fetch, fetch_offline}; use cookbook::cook::fs::{create_target_dir, run_command}; use cookbook::cook::ident; use cookbook::cook::package::{package, package_handle_push}; use cookbook::cook::pty::{PtyOut, UnixSlavePty, flush_pty, setup_pty}; use cookbook::cook::script::KILL_ALL_PID; use cookbook::cook::tree::{self, WalkTreeEntry}; use cookbook::log_to_pty; use cookbook::recipe::{CookRecipe, recipes_flatten_package_names, recipes_mark_as_deps}; use pkg::{PackageName, PackageState}; use ratatui::Terminal; use ratatui::layout::{Constraint, Direction, Layout, Position, Rect}; use ratatui::prelude::TermionBackend; use ratatui::style::{Color, Style}; use ratatui::text::{Line, Span, Text}; use ratatui::widgets::{Block, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap}; use redox_installer::PackageConfig; use std::borrow::Cow; use std::collections::{BTreeMap, HashMap, HashSet, VecDeque}; use std::io::{Read, Write, stderr, stdin, stdout}; use std::path::PathBuf; use std::process::Command; use std::str::FromStr; use std::sync::atomic::{AtomicBool, AtomicU32, Ordering}; use std::sync::{Arc, OnceLock, mpsc}; use std::time::{Duration, Instant}; use std::{cmp, env, fs}; use std::{process, thread}; use termion::event::{Event, Key, MouseEvent}; use termion::input::TermRead; use termion::raw::IntoRawMode; use termion::screen::IntoAlternateScreen; use termion::{color, style}; // A repo manager, to replace repo.sh const REPO_HELP_STR: &str = r#" Usage: repo [flags] ... command list: fetch download recipe sources cook build recipe packages unfetch delete recipe sources clean delete recipe artifacts clean-target delete recipe artifacts for one target push extract package into sysroot find find path of recipe packages cook-tree show tree of recipe build push-tree show tree of recipe packages common flags: --cookbook= the "recipes" folder, default to $PWD/recipes --repo= the "repo" folder, default to $PWD/repo --sysroot= the "root" folder used for "push" command For Redox, defaults to "/", else default to $PWD/sysroot --with-package-deps include package deps (always implied in push command) --all apply to all recipes in --category= apply to all recipes in / --filesystem= override recipes config using installer file --repo-binary override recipes config to use repo_binary cook env and their defaults: CI= set to any value to disable TUI COOKBOOK_LOGS= whether to capture build logs (default is !CI) COOKBOOK_OFFLINE=false prevent internet access if possible ignored when command "fetch" is used COOKBOOK_NONSTOP=false keep running even a recipe build failed COOKBOOK_COMPRESSED=false build packages in compressed format COOKBOOK_VERBOSE=true print success/error on each recipe COOKBOOK_CLEAN_BUILD=false remove build directory before building COOKBOOK_CLEAN_TARGET=false remove target directory after building COOKBOOK_WRITE_FILETREE=false whether to write stage files tree COOKBOOK_MAKE_JOBS= override build jobs count from nproc COOKBOOK_WEB=false whether to generate package web files "#; #[derive(Clone)] struct CliConfig { cookbook_dir: PathBuf, repo_dir: PathBuf, sysroot_dir: PathBuf, logs_dir: Option, category: Option, filesystem: Option, with_package_deps: bool, all: bool, cook: CookConfig, } #[derive(PartialEq)] enum CliCommand { Fetch, Cook, CookTree, Unfetch, Clean, CleanTarget, Push, PushTree, Find, } impl CliCommand { pub fn is_informational(&self) -> bool { *self == CliCommand::PushTree || *self == CliCommand::CookTree || *self == CliCommand::Find } pub fn is_building(&self) -> bool { *self == CliCommand::Fetch || *self == CliCommand::Cook || *self == CliCommand::CookTree } pub fn is_pushing(&self) -> bool { *self == CliCommand::Push || *self == CliCommand::PushTree } pub fn is_cleaning(&self) -> bool { *self == CliCommand::Clean || *self == CliCommand::CleanTarget || *self == CliCommand::Unfetch } } impl FromStr for CliCommand { type Err = anyhow::Error; fn from_str(s: &str) -> Result { match s { "fetch" => Ok(CliCommand::Fetch), "cook" => Ok(CliCommand::Cook), "unfetch" => Ok(CliCommand::Unfetch), "clean" => Ok(CliCommand::Clean), "clean-target" => Ok(CliCommand::CleanTarget), "push" => Ok(CliCommand::Push), "push-tree" => Ok(CliCommand::PushTree), "cook-tree" => Ok(CliCommand::CookTree), "find" => Ok(CliCommand::Find), _ => Err(anyhow!("Unknown command '{}'\n{}\n", s, REPO_HELP_STR)), } } } impl ToString for CliCommand { fn to_string(&self) -> String { match self { CliCommand::Fetch => "fetch".to_string(), CliCommand::Cook => "cook".to_string(), CliCommand::Unfetch => "unfetch".to_string(), CliCommand::Clean => "clean".to_string(), CliCommand::CleanTarget => "clean-target".to_string(), CliCommand::Push => "push".to_string(), CliCommand::PushTree => "push-tree".to_string(), CliCommand::CookTree => "cook-tree".to_string(), CliCommand::Find => "find".to_string(), } } } impl CliConfig { fn new() -> Result { let current_dir = env::current_dir()?; Ok(CliConfig { //FIXME: This config is unused as redox-pkg harcoded this to $PWD/recipes cookbook_dir: current_dir.join("recipes"), repo_dir: current_dir.join("repo"), // build dir here is hardcoded in repo_builder as well logs_dir: if get_config().cook.logs { Some(current_dir.join("build/logs")) } else { None }, category: None, sysroot_dir: if cfg!(target_os = "redox") { PathBuf::from("/") } else { current_dir.join("sysroot") }, with_package_deps: false, cook: get_config().cook.clone(), all: false, filesystem: None, }) } } fn main() { init_config(); if let Err(e) = main_inner() { eprintln!("{:?}", e); process::exit(1); }; } fn main_inner() -> anyhow::Result<()> { let args: Vec = env::args().skip(1).collect(); if args.is_empty() || args.contains(&"--help".to_string()) || args.contains(&"-h".to_string()) { println!("{}", REPO_HELP_STR); process::exit(1); } let (config, command, recipes) = parse_args(args)?; if command.is_building() { ident::init_ident(); } if command == CliCommand::Cook && config.cook.tui { if let Some((name, e)) = run_tui_cook(config.clone(), recipes.clone())? { let _ = stderr().write(e.as_bytes()); let _ = stderr().write(b"\n\n"); print_failed(&command, &name); return Err(anyhow!("Execution has failed")); } else { print_success(&command, None); } return publish_packages(&recipes, &config.repo_dir); } if command == CliCommand::PushTree { return handle_tree(&recipes, false, &config); } if command == CliCommand::CookTree { return handle_tree(&recipes, true, &config); } if command == CliCommand::Push { return handle_push(&recipes, &config); } let verbose = config.cook.verbose; for recipe in &recipes { match repo_inner(&config, &command, recipe) { Ok(cached) => { if !command.is_informational() { if cached { print_cached(&command, Some(&recipe.name)); } else { print_success(&command, Some(&recipe.name)); } } } Err(e) => { if config.cook.nonstop { if verbose { eprintln!("{:?}", e); } if let Err(e) = handle_nonstop_fail(recipe) { eprintln!("{:?}", e) }; } print_failed(&command, &recipe.name); if !config.cook.nonstop { return Err(e); } } } } if command == CliCommand::Cook { return publish_packages(&recipes, &config.repo_dir); } if verbose && recipes.len() > 1 { println!( "\nCommand '{}' completed for {} recipes.", command.to_string(), recipes.len() ); } Ok(()) } fn print_failed(command: &CliCommand, recipe: &PackageName) { eprintln!( "{}{}{} {} - failed {}{}", style::Bold, color::Fg(color::AnsiValue(196)), command.to_string(), recipe.as_str(), color::Fg(color::Reset), style::Reset, ); } fn print_success(command: &CliCommand, recipe: Option<&PackageName>) { if let Some(recipe) = recipe { eprintln!( "{}{}{} {} - successful{}{}", style::Bold, color::Fg(color::AnsiValue(46)), command.to_string(), recipe.as_str(), color::Fg(color::Reset), style::Reset, ); } else { eprintln!( "{}{}{} - successful{}{}", style::Bold, color::Fg(color::AnsiValue(46)), command.to_string(), color::Fg(color::Reset), style::Reset, ); } } fn print_cached(command: &CliCommand, recipe: Option<&PackageName>) { if let Some(recipe) = recipe { eprintln!( "{}{}{} {} - cached{}{}", style::Bold, color::Fg(color::AnsiValue(45)), command.to_string(), recipe.as_str(), color::Fg(color::Reset), style::Reset, ); } else { eprintln!( "{}{}{} - cached{}{}", style::Bold, color::Fg(color::AnsiValue(45)), command.to_string(), color::Fg(color::Reset), style::Reset, ); } } fn repo_inner( config: &CliConfig, command: &CliCommand, recipe: &CookRecipe, ) -> Result { Ok(match *command { CliCommand::Fetch | CliCommand::Cook => { let repo_inner_fn = move |logger: &PtyOut| -> Result { let is_cook = *command == CliCommand::Cook; let mut cached = false; let source_dir = handle_fetch(recipe, config, is_cook, logger)?; if is_cook { cached = handle_cook(recipe, config, source_dir, logger)?; } Ok(cached) }; let Some(log_path) = &config.logs_dir else { return repo_inner_fn(&None); }; let (status_tx, status_rx) = mpsc::channel::(); let (mut stdout_writer, mut stderr_writer) = setup_logger(&status_tx, &recipe.name); let mut app = TuiApp::new(vec![recipe.clone()]); app.dump_logs_anyway = config.cook.verbose; let dump_fail_logs = !app.dump_logs_anyway; let th = thread::spawn(move || { while let Ok(update) = status_rx.recv() { match &update { StatusUpdate::CookThreadFinished => break, StatusUpdate::FailCook(r, _) => { let (logs, line) = app.get_recipe_log(&r.name); if let Some(logs) = logs { println!("{}", join_logs(logs, line)); } } _ => app.update_status(update), } } }); let mut logger = Some((&mut stdout_writer, &mut stderr_writer)); let result = repo_inner_fn(&logger); if let Err(err_ctx) = &result { log_to_pty!(&logger, "\n{:?}", err_ctx) } // successful fetch is not that useful to log if *command == CliCommand::Cook || result.is_err() { flush_pty(&mut logger); let log_path = log_path.join(format!("{}/{}.log", recipe.target, recipe.name.name())); status_tx .send(StatusUpdate::FlushLog(recipe.name.clone(), log_path)) .unwrap_or_default(); if dump_fail_logs && result.is_err() { status_tx .send(StatusUpdate::FailCook(recipe.clone(), "".into())) .unwrap_or_default(); } } status_tx .send(StatusUpdate::CookThreadFinished) .unwrap_or_default(); let _ = th.join(); result? } CliCommand::Unfetch | CliCommand::Clean | CliCommand::CleanTarget => { handle_clean(recipe, config, command)? } CliCommand::Push => unreachable!(), CliCommand::PushTree => unreachable!(), CliCommand::CookTree => unreachable!(), CliCommand::Find => { println!("{}", recipe.dir.display()); false } }) } fn publish_packages(recipe_names: &Vec, repo_path: &PathBuf) -> anyhow::Result<()> { let repo_bin = env::current_exe()?.parent().unwrap().join("repo_builder"); let mut command = Command::new(repo_bin); command .arg(repo_path) .args(recipe_names.iter().filter_map(|n| { if !n.is_deps { Some(n.name.as_str()) } else { None } })); run_command(command, &None).map_err(|e| anyhow!(e)) } fn parse_args(args: Vec) -> anyhow::Result<(CliConfig, CliCommand, Vec)> { let mut config = CliConfig::new()?; let mut command: Option = None; let mut recipe_names: Vec = Vec::new(); let mut override_filesystem_repo_binary = false; for arg in args { if arg.starts_with("--") { if let Some((key, value)) = arg.split_once('=') { match key { "--cookbook" => config.cookbook_dir = PathBuf::from(value), "--repo" => config.repo_dir = PathBuf::from(value), "--sysroot" => config.sysroot_dir = PathBuf::from(value), "--category" => config.category = Some(PathBuf::from(value)), "--filesystem" => { config.filesystem = Some({ let r = redox_installer::Config::from_file(&PathBuf::from(value)); r.context("Unable to read filesystem installer config")? }) } _ => { eprintln!("Error: Unknown flag with value: {}", arg); process::exit(1); } } } else if arg.starts_with("--category-") { // to workaround make command limit we provide this option config.category = Some(PathBuf::from(arg[("--category-").len()..].to_owned())); } else { match arg.as_str() { "--repo-binary" => override_filesystem_repo_binary = true, "--with-package-deps" => config.with_package_deps = true, "--all" => config.all = true, _ => { eprintln!("Error: Unknown flag: {}", arg); process::exit(1); } } } } else if arg.starts_with('-') { match arg.as_str() { _ => { eprintln!("Error: Unknown flag: {}", arg); process::exit(1); } } } else if command.is_none() { // The first non-flag argument is the command command = Some(arg); } else { // Subsequent non-flag arguments are recipe names recipe_names.push(arg.try_into().context("Invalid package name")?); } } if let Some(c) = config.category { // need to prefix by cookbook dir config.category = Some(PathBuf::from("recipes").join(c)); } if let Some(c) = config.logs_dir.as_mut() { fs::create_dir_all(c.join(redoxer::target())).map_err(|e| anyhow!(e))?; fs::create_dir_all(c.join(redoxer::host_target())).map_err(|e| anyhow!(e))?; } let command = command.ok_or(anyhow!("Error: No command specified."))?; let command: CliCommand = str::parse(&command)?; if command.is_informational() { // avoid extra data that clobber stdout config.cook.verbose = false; } let mut preloaded_recipes: BTreeMap = BTreeMap::new(); if recipe_names.is_empty() { if config.all || config.category.is_some() { if !recipe_names.is_empty() { bail!("Do not specify recipe names when using the --all or --category flag."); } if config.all && config.category.is_some() { bail!("Do not specify both --all and --category flag."); } if config.all && !command.is_cleaning() { // because read_recipe is false by logic below // some recipes on wip folders are invalid anyway bail!( "Refusing to run an unrealistic command to {} all recipes", command.to_string() ); } let all_recipes_path = match &config.category { None => pkg::recipes::list(""), Some(prefix) => pkg::recipes::list("") .into_iter() .filter(|p| p.starts_with(prefix)) .collect(), }; for path in all_recipes_path { // TODO: Allow selecting recipes from category as host? let recipe = CookRecipe::from_path(&path, !command.is_cleaning(), false)?; let recipe_name = recipe.name.clone(); preloaded_recipes.insert(recipe_name.clone(), recipe); recipe_names.push(recipe_name); } } else { if let Some(conf) = config.filesystem.as_ref() { recipe_names = conf .packages .keys() .filter_map(|k| PackageName::new(k.to_string()).ok()) .collect(); } else { bail!( "Error: No recipe names or filesystem config provided and --all flag was not used." ); } } } if command.is_cleaning() { let recipes = if preloaded_recipes.is_empty() { CookRecipe::from_list(recipe_names)? } else { preloaded_recipes.into_values().collect() }; return Ok((config, command, recipes)); } let mut recipes = if let Some(conf) = config.filesystem.as_ref() { let repo_binary = override_filesystem_repo_binary; // Expand deps for "source" + "local" and "binary" // This is the complete map from filesystem config let mut source_names: Vec = Vec::new(); let mut binary_names: Vec = Vec::new(); let mut special_rules: HashMap = HashMap::new(); let default_rule = if repo_binary { "binary" } else { "source" }; for (recipe_name_str, recipe_config) in conf.packages.iter() { let Ok(recipe_name) = PackageName::new(recipe_name_str) else { continue; }; let rule = match recipe_config { PackageConfig::Build(rule) => { special_rules.insert(recipe_name.clone(), rule.to_string()); rule } _ => default_rule, }; if rule == "source" || rule == "local" { source_names.push(recipe_name); } else if rule == "binary" { binary_names.push(recipe_name); } } source_names = CookRecipe::get_all_deps_names_recursive(&source_names, true)?; binary_names = CookRecipe::get_all_deps_names_recursive(&binary_names, false)?; let source_names: HashSet = source_names.into_iter().collect(); let binary_names: HashSet = binary_names.into_iter().collect(); // These are list that derived from recipe_names let mut source_recipe_names: Vec = Vec::new(); let mut binary_recipe_names: Vec = Vec::new(); let mut ignore_recipe_names: Vec = Vec::new(); for recipe_name in recipe_names.iter() { if source_names.contains(recipe_name) { source_recipe_names.push(recipe_name.clone()); } else if binary_names.contains(recipe_name) { binary_recipe_names.push(recipe_name.clone()); } else { if special_rules .get(recipe_name) .is_some_and(|s| s == "ignore") { ignore_recipe_names.push(recipe_name.clone()); } else if repo_binary { binary_recipe_names.push(recipe_name.clone()); } else { source_recipe_names.push(recipe_name.clone()); } } } if config.with_package_deps || command.is_pushing() { source_recipe_names = CookRecipe::get_package_deps_recursive(&source_recipe_names, true)?; binary_recipe_names = CookRecipe::get_package_deps_recursive(&binary_recipe_names, true)?; } let mut recipes = if command.is_building() || command.is_pushing() { // Pushing do not need dev deps, so does binary recipes at building let include_dev = command.is_building(); if include_dev && default_rule == "source" { // let's cover a very specific case, binary -> source -> binary -> dev // in this case, we need to move that "source" to "binary", because // that would include dev from its binary child, which is unnecessary let mut i = 0; while i < source_recipe_names.len() { let name = &source_recipe_names[i]; match special_rules.get(name) { Some(s) if s.as_str() == "source" => { if binary_names.contains(name) { let bin = source_recipe_names.remove(i); binary_recipe_names.push(bin); continue; } } _ => {} } i += 1; } } CookRecipe::get_build_deps_recursive(&source_recipe_names, include_dev)? } else { CookRecipe::from_list(source_recipe_names.clone())? }; let binary_recipes = if command.is_building() || command.is_pushing() { CookRecipe::get_build_deps_recursive(&binary_recipe_names, false)? } else { CookRecipe::from_list(binary_recipe_names.clone())? }; let ignore_recipes = CookRecipe::from_list(ignore_recipe_names.clone())?; recipes.extend(binary_recipes); recipes.extend(ignore_recipes); recipes = recipes_flatten_package_names(recipes); for recipe in recipes.iter_mut() { if let Some(special_rule) = special_rules.get(&recipe.name) { recipe.apply_filesystem_config(&special_rule)?; continue; } let rule = match ( source_names.contains(&recipe.name), binary_names.contains(&recipe.name), ) { (true, true) => { // both lists: flip logic if repo_binary { "source" } else { "binary" } } (true, false) => "source", (false, true) => "binary", (false, false) => default_rule, }; if recipe.name.is_host() && rule == "binary" { // host recipe binaries is currently not supported continue; } recipe.apply_filesystem_config(rule)?; } recipes } else { if config.with_package_deps || command.is_pushing() { recipe_names = CookRecipe::get_package_deps_recursive(&recipe_names, true)?; } if command.is_building() || command.is_pushing() { let include_dev = command.is_building(); CookRecipe::get_build_deps_recursive(&recipe_names, include_dev)? } else { CookRecipe::from_list(recipe_names.clone())? } }; if !config.with_package_deps || command.is_informational() { // In CliCommand::Cook, is_deps==true will make it skip checking source recipes_mark_as_deps(&recipe_names, &mut recipes); } Ok((config, command, recipes)) } fn handle_fetch( recipe: &CookRecipe, config: &CliConfig, allow_offline: bool, logger: &PtyOut, ) -> anyhow::Result { let source_dir = match config.cook.offline && allow_offline { true => fetch_offline(&recipe, logger), false => fetch(&recipe, !recipe.is_deps, logger), } .map_err(|e| anyhow!("failed to fetch: {:?}", e))?; Ok(source_dir) } fn handle_cook( recipe: &CookRecipe, config: &CliConfig, source_dir: PathBuf, logger: &PtyOut, ) -> anyhow::Result { let recipe_dir = &recipe.dir; let target_dir = create_target_dir(recipe_dir, recipe.target).map_err(|e| anyhow!(e))?; let build_result = build( recipe_dir, &source_dir, &target_dir, &recipe, &config.cook, logger, ) .map_err(|err| anyhow!("failed to build: {:?}", err))?; package(&recipe, &build_result, &config.cook, logger) .map_err(|err| anyhow!("failed to package: {:?}", err))?; if config.cook.clean_target || config.cook.write_filetree { for stage_dir in &build_result.stage_dirs { if stage_dir.is_dir() { if config.cook.write_filetree { let mut stage_files_buf = String::new(); tree::walk_file_tree(&stage_dir, "", &mut stage_files_buf) .context("failed to walk stage files tree")?; fs::write(stage_dir.with_added_extension("files"), stage_files_buf) .context("unable to write stage files")?; } if config.cook.clean_target { fs::remove_dir_all(&stage_dir).context("failed to remove stage dir")?; } } } } Ok(build_result.cached) } /// delete stage artifacts upon nonstop failure to let repo_builder know fn handle_nonstop_fail(recipe: &CookRecipe) -> anyhow::Result<()> { let target_dir = recipe.target_dir(); let stage_dirs = get_stage_dirs(&recipe.recipe.optional_packages, &target_dir); for stage_dir in stage_dirs { remove_stage_dir(&stage_dir) .map_err(|err| anyhow!("failed to remove stage dir: {:?}", err))?; } Ok(()) } fn handle_clean( recipe: &CookRecipe, _config: &CliConfig, command: &CliCommand, ) -> anyhow::Result { let mut dir = recipe.dir.join("target"); let mut cached = true; if matches!(*command, CliCommand::CleanTarget) { dir = dir.join(redoxer::target()) } if dir.exists() { fs::remove_dir_all(&dir).context(format!("failed to delete {}", dir.display()))?; cached = false; } let dir = recipe.dir.join("source"); if dir.exists() && matches!(*command, CliCommand::Unfetch) { fs::remove_dir_all(&dir).context(format!("failed to delete {}", dir.display()))?; cached = false; } Ok(cached) } static PUSH_SYSROOT_DIR: OnceLock = OnceLock::new(); fn handle_push(recipes: &Vec, config: &CliConfig) -> anyhow::Result<()> { let recipe_map: HashMap<&PackageName, &CookRecipe> = recipes.iter().map(|r| (&r.name, r)).collect(); let mut total_size: u64 = 0; let mut total_count: u64 = 0; let mut visited: HashSet = HashSet::new(); let num_recipes = recipes.len(); PUSH_SYSROOT_DIR.set(config.sysroot_dir.clone()).unwrap(); let handle_push_inner = move |package_name: &PackageName, _prefix: &str, _is_last: bool, entry: &WalkTreeEntry| -> anyhow::Result { let r = match entry { WalkTreeEntry::Built(archive_path, _) => { let install_path = PUSH_SYSROOT_DIR.get().unwrap(); let mut state = PackageState::from_sysroot(install_path).map_err(|e| anyhow!("{e:?}"))?; let r = package_handle_push(&mut state, archive_path, &install_path, false) .map_err(|e| anyhow!("{e:?}")); if matches!(r, Ok(false)) { state.to_sysroot(install_path)?; } r } WalkTreeEntry::NotBuilt => Err(anyhow!( "Package {} has not been built", package_name.name() )), WalkTreeEntry::Deduped | WalkTreeEntry::Missing => { // does not matter return Ok(false); } }; match r { Ok(true) => { print_cached(&CliCommand::Push, Some(package_name)); Ok(true) } Ok(false) => { print_success(&CliCommand::Push, Some(package_name)); Ok(false) } Err(e) => { print_failed(&CliCommand::Push, package_name); if get_config().cook.nonstop { Ok(true) } else { Err(e) } } } }; for (i, recipe) in recipes.iter().enumerate() { tree::walk_tree_entry( &recipe.name, &recipe_map, "", i == num_recipes - 1, false, &mut visited, &mut total_size, &mut total_count, handle_push_inner, )?; } if config.cook.verbose { println!(""); println!( "Pushed {} of {} {}", tree::format_size(total_size), total_count, if total_count == 1 { "package" } else { "packages" }, ); } Ok(()) } fn handle_tree( recipes: &Vec, is_build_tree: bool, _config: &CliConfig, ) -> anyhow::Result<()> { let recipe_map: HashMap<&PackageName, &CookRecipe> = recipes.iter().map(|r| (&r.name, r)).collect(); let mut total_size: u64 = 0; let mut total_count: u64 = 0; let mut visited: HashSet = HashSet::new(); let roots: Vec<&CookRecipe> = recipes.iter().filter(|r| !r.is_deps).collect(); let num_roots = roots.len(); for (i, root) in roots.iter().enumerate() { tree::display_tree_entry( &root.name, &recipe_map, "", i == num_roots - 1, is_build_tree, &mut visited, &mut total_size, &mut total_count, )?; } println!(""); if is_build_tree { println!( "Build summary: {} need build, {} may rebuild, with total of {} {}", total_size, roots.len(), visited.len(), if visited.len() == 1 { "recipe" } else { "recipes" }, ); } else { println!( "Estimated image size: {} of {} {}", tree::format_size(total_size), visited.len(), if visited.len() == 1 { "package" } else { "packages" }, ); } Ok(()) } // // ------------- TUI SPECIFIC CODE ------------------- // #[derive(Debug, Clone, PartialEq)] enum RecipeStatus { Pending, Fetching, Fetched, Cooking, Cached, Done, Failed(String), } #[derive(Debug, Clone, PartialEq)] enum StatusUpdate { StartFetch(PackageName), Fetched(CookRecipe), FailFetch(CookRecipe, String), StartCook(PackageName), Cooked(CookRecipe, bool), FailCook(CookRecipe, String), PushLog(PackageName, Vec), FlushLog(PackageName, PathBuf), FetchThreadFinished, CookThreadFinished, } #[derive(PartialEq)] enum JobType { Fetch, Cook, } impl ToString for JobType { fn to_string(&self) -> String { match self { JobType::Fetch => "Fetch", JobType::Cook => "Cook", } .to_string() } } struct TuiApp { recipes: Vec<(CookRecipe, RecipeStatus)>, fetch_queue: VecDeque, cook_queue: VecDeque, done: Vec, active_fetch: Option, active_cook: Option, logs: HashMap>, log_byte_buffer: HashMap>, log_scroll: usize, log_view_job: JobType, auto_scroll: bool, fetch_scroll: usize, cook_scroll: usize, cook_auto_scroll: bool, cook_list_state: ListState, fetch_complete: bool, cook_complete: bool, fetch_panel_rect: Option, cook_panel_rect: Option, log_panel_rect: Option, prompt: Option, dump_logs_anyway: bool, dump_logs_on_exit: Option<(PackageName, String)>, } impl TuiApp { fn new(recipes: Vec) -> Self { Self { recipes: recipes .iter() .cloned() .map(|r| (r, RecipeStatus::Pending)) .collect(), fetch_queue: recipes.iter().cloned().map(|r| r.clone()).collect(), cook_queue: VecDeque::new(), done: Vec::new(), active_fetch: None, active_cook: None, logs: HashMap::new(), log_byte_buffer: HashMap::new(), log_scroll: 0, auto_scroll: true, log_view_job: JobType::Fetch, fetch_scroll: 0, cook_scroll: 0, cook_auto_scroll: true, cook_list_state: ListState::default(), fetch_complete: false, cook_complete: false, fetch_panel_rect: None, cook_panel_rect: None, log_panel_rect: None, prompt: None, dump_logs_anyway: false, dump_logs_on_exit: None, } } pub fn get_active_name(&self) -> Option { if self.log_view_job == JobType::Cook { self.active_cook.clone() } else { self.active_fetch.clone() } } pub fn get_active_log( &self, ) -> ( Option, Option<&Vec>, Option>, ) { let active_name = self.get_active_name(); let (log_text, log_line) = if let Some(active_name) = active_name.as_ref() { self.get_recipe_log(active_name) } else { (None, None) }; (active_name, log_text, log_line) } pub fn get_recipe_log( &self, recipe_name: &PackageName, ) -> (Option<&Vec>, Option>) { let log_text = self.logs.get(recipe_name); let log_line = if let Some(b) = self.log_byte_buffer.get(recipe_name) { Some(String::from_utf8_lossy(b)) } else { None }; (log_text, log_line) } pub fn write_log(&self, recipe_name: &PackageName, log_path: &PathBuf) -> anyhow::Result<()> { let (Some(logs), line) = self.get_recipe_log(recipe_name) else { return Ok(()); }; let str = strip_ansi_escapes::strip_str(join_logs(logs, line)); if !str.trim_end().is_empty() { fs::write(log_path, str)?; } return Ok(()); } // Update the state based on a message from a worker thread fn update_status(&mut self, update: StatusUpdate) { let (name, new_status) = match update { StatusUpdate::StartFetch(name) => { self.active_fetch = Some(name.clone()); self.logs.insert(name.clone(), Vec::new()); self.log_byte_buffer.insert(name.clone(), Vec::new()); self.log_scroll = 0; self.auto_scroll = true; (name.clone(), RecipeStatus::Fetching) } StatusUpdate::Fetched(recipe) => (recipe.name.clone(), RecipeStatus::Fetched), StatusUpdate::FailFetch(recipe, err) => { self.prompt = Some(FailurePrompt::new(recipe.clone(), err.clone())); (recipe.name.clone(), RecipeStatus::Failed(err)) } StatusUpdate::StartCook(name) => { self.active_cook = Some(name.clone()); self.logs.insert(name.clone(), Vec::new()); self.log_byte_buffer.insert(name.clone(), Vec::new()); (name.clone(), RecipeStatus::Cooking) } StatusUpdate::PushLog(name, chunk) => { let buffer = self.log_byte_buffer.entry(name.clone()).or_default(); buffer.extend_from_slice(&chunk); if self.dump_logs_anyway { let _ = std::io::stdout().write_all(&chunk); } let log_list = self.logs.entry(name.clone()).or_default(); while let Some(newline_pos) = buffer.iter().position(|&b| b == b'\n') { let line_bytes = buffer.drain(..=newline_pos).collect::>(); let line_str = String::from_utf8_lossy(&line_bytes).into_owned(); let line_str_pos = line_str.trim_end(); let line_str = line_str_pos.rsplit('\r').next().unwrap_or(&line_str_pos); log_list.push(line_str.to_owned()); } return; } StatusUpdate::FlushLog(name, path) => { // TODO: This blocks the TUI, maybe open separate thread? // FIXME: handle error here? let _ = self.write_log(&name, &path); return; } StatusUpdate::Cooked(recipe, cached) => { if self.active_cook.as_ref() == Some(&recipe.name) { self.active_cook = None; } self.auto_scroll = true; ( recipe.name.clone(), if cached { RecipeStatus::Cached } else { RecipeStatus::Done }, ) } StatusUpdate::FailCook(recipe, err) => { self.prompt = Some(FailurePrompt::new(recipe.clone(), err.clone())); (recipe.name.clone(), RecipeStatus::Failed(err)) } StatusUpdate::FetchThreadFinished => { self.fetch_complete = true; self.log_view_job = JobType::Cook; return; } StatusUpdate::CookThreadFinished => { self.cook_complete = true; return; } }; if let Some((_, status)) = self.recipes.iter_mut().find(|(r, _)| r.name == name) { *status = new_status; } // Re-compute the queues for display self.fetch_queue = self .recipes .iter() .filter(|(_, s)| *s == RecipeStatus::Pending) .map(|(r, _)| r.clone()) .collect(); self.cook_queue = self .recipes .iter() .filter(|(_, s)| *s == RecipeStatus::Fetched) .map(|(r, _)| r.clone()) .collect(); self.done = self .recipes .iter() .filter(|(_, s)| *s == RecipeStatus::Done || *s == RecipeStatus::Cached) .map(|(r, _)| r.name.clone()) .collect(); } } fn run_tui_cook( config: CliConfig, recipes: Vec, ) -> anyhow::Result> { let (work_tx, work_rx) = mpsc::channel::<(CookRecipe, PathBuf)>(); let (status_tx, status_rx) = mpsc::channel::(); let running = Arc::new(AtomicBool::new(true)); let prompting = Arc::new(AtomicU32::new(0)); const TICK_RATE: Duration = Duration::from_millis(100); // ---- Cooker Thread ---- let cooker_config = config.clone(); let cooker_status_tx = status_tx.clone(); let cooker_prompting = prompting.clone(); let cooker_handle = thread::spawn(move || { 'done: for (mut recipe, source_dir) in work_rx { let name = recipe.name.clone(); let (mut stdout_writer, mut stderr_writer) = setup_logger(&cooker_status_tx, &name); let mut logger = Some((&mut stdout_writer, &mut stderr_writer)); 'again: loop { cooker_status_tx .send(StatusUpdate::StartCook(name.clone())) .unwrap(); let _ = recipe.reload_recipe(); // reread recipe.toml in case we're retrying let handler = handle_cook(&recipe, &cooker_config, source_dir.clone(), &logger); if let Some(log_path) = cooker_config.logs_dir.as_ref() { if let Err(err_ctx) = &handler { log_to_pty!(&logger, "\n{:?}", err_ctx) } flush_pty(&mut logger); let log_path = log_path.join(format!("{}/{}.log", recipe.target, name.name())); cooker_status_tx .send(StatusUpdate::FlushLog(name.clone(), log_path)) .unwrap_or_default(); } match handler { Ok(cached) => { cooker_status_tx .send(StatusUpdate::Cooked(recipe, cached)) .unwrap_or_default(); if cooker_config.cook.nonstop && cooker_prompting.load(Ordering::SeqCst) == 4 { break 'done; } break; } Err(e) => { cooker_status_tx .send(StatusUpdate::FailCook(recipe.clone(), e.to_string())) .unwrap_or_default(); if cooker_config.cook.nonstop { if cooker_prompting.load(Ordering::SeqCst) == 4 { break 'done; } // TODO: where to report error? let _ = handle_nonstop_fail(&recipe); break; } while cooker_prompting.load(Ordering::SeqCst) != 0 { thread::sleep(Duration::from_millis(101)); // wait other prompt } cooker_prompting.swap(1, Ordering::SeqCst); 'wait: loop { match cooker_prompting.load(Ordering::SeqCst) { 0 => break 'again, 1 => thread::sleep(Duration::from_millis(101)), 2 => { cooker_prompting.swap(0, Ordering::SeqCst); break 'wait; } // retry 3 => { cooker_prompting.swap(0, Ordering::SeqCst); let _ = handle_nonstop_fail(&recipe); break 'again; } // skip 4 => { cooker_prompting.swap(0, Ordering::SeqCst); break 'done; } // done _ => unreachable!(), } } } } } } cooker_status_tx .send(StatusUpdate::CookThreadFinished) .unwrap_or_default(); }); let mstdin = stdin(); let mstdout = stdout() .into_raw_mode() .unwrap() .into_alternate_screen() .unwrap(); // ----- Input Thread ----- let (input_tx, input_rx) = mpsc::channel::(); let _input_handle = thread::spawn(move || { for evt in mstdin.events() { if let Ok(evt) = evt { if input_tx.send(evt).is_err() { return; } } } }); // ---- Fetcher Thread ---- let fetcher_recipes = recipes.clone(); let fetcher_status_tx = status_tx.clone(); let fetcher_config = config.clone(); let fetcher_prompting = prompting.clone(); let fetcher_handle = thread::spawn(move || { 'done: for mut recipe in fetcher_recipes { let name = recipe.name.clone(); let (mut stdout_writer, mut stderr_writer) = setup_logger(&fetcher_status_tx, &name); let mut logger = Some((&mut stdout_writer, &mut stderr_writer)); 'again: loop { fetcher_status_tx .send(StatusUpdate::StartFetch(name.clone())) .unwrap(); let _ = recipe.reload_recipe(); // reread recipe.toml in case we're retrying let handler = handle_fetch(&recipe, &fetcher_config, true, &logger); if let Some(log_path) = fetcher_config.logs_dir.as_ref() // successful fetch log usually not that helpful && handler.is_err() { if let Err(err_ctx) = &handler { log_to_pty!(&logger, "\n{:?}", err_ctx) } flush_pty(&mut logger); let log_path = log_path.join(format!("{}/{}.log", recipe.target, name.name())); fetcher_status_tx .send(StatusUpdate::FlushLog(name.clone(), log_path)) .unwrap_or_default(); } match handler { Ok(source_dir) => { fetcher_status_tx .send(StatusUpdate::Fetched(recipe.clone())) .unwrap(); if work_tx.send((recipe.clone(), source_dir)).is_err() { // Cooker thread died break 'done; } if fetcher_config.cook.nonstop && fetcher_prompting.load(Ordering::SeqCst) == 4 { break 'done; } break; } Err(e) => { fetcher_status_tx .send(StatusUpdate::FailFetch(recipe.clone(), e.to_string())) .unwrap_or_default(); if fetcher_config.cook.nonstop { if fetcher_prompting.load(Ordering::SeqCst) == 4 { break 'done; } let _ = handle_nonstop_fail(&recipe); break; } while fetcher_prompting.load(Ordering::SeqCst) != 0 { thread::sleep(Duration::from_millis(101)); // wait other prompt } fetcher_prompting.swap(1, Ordering::SeqCst); 'wait: loop { match fetcher_prompting.load(Ordering::SeqCst) { 0 => break 'again, 1 => thread::sleep(Duration::from_millis(101)), 2 => { fetcher_prompting.swap(0, Ordering::SeqCst); break 'wait; } // retry 3 => { fetcher_prompting.swap(0, Ordering::SeqCst); let _ = handle_nonstop_fail(&recipe); break 'again; } // skip 4 => { fetcher_prompting.swap(0, Ordering::SeqCst); break 'done; } // done _ => unreachable!(), } } } } } } status_tx .send(StatusUpdate::FetchThreadFinished) .unwrap_or_default(); }); let mut terminal = Terminal::new(TermionBackend::new(stdout()))?; terminal.clear()?; let mut app = TuiApp::new(recipes); let spinner = ['-', '\\', '|', '/']; let mut spinner_i = 0; while running.load(Ordering::SeqCst) { let frame_start = Instant::now(); terminal.draw(|f| { spinner_i = (spinner_i + 1) % spinner.len(); let spin = spinner[spinner_i]; let mut constraints = Vec::new(); if !app.fetch_complete { constraints.push(Constraint::Length(22)); } constraints.push(Constraint::Length(22)); constraints.push(Constraint::Min(20)); let chunks = Layout::default() .direction(Direction::Horizontal) .constraints(constraints) .split(f.area()); let panel_height = chunks[0].height.saturating_sub(2) as usize; // Left Pane let fetch_items: Vec = app .recipes .iter() .filter(|(_, s)| *s == RecipeStatus::Pending || *s == RecipeStatus::Fetching) .map(|(r, s)| { let style = if *s == RecipeStatus::Fetching { Style::default().fg(Color::Yellow) } else { Style::default() }; let icon = match s { RecipeStatus::Pending => ' ', RecipeStatus::Fetching => spin, _ => '?', }; ListItem::new(format!("{icon} {}", r.name)).style(style) }) .collect(); let fetch_list = List::new(fetch_items).block( Block::default() .title("Fetch Queue [1]") .borders(Borders::ALL), ); f.render_widget(fetch_list, chunks[0]); // Right Pane let cook_items: Vec = app .recipes .iter() .filter(|(_, s)| { *s == RecipeStatus::Fetched || *s == RecipeStatus::Cooking || *s == RecipeStatus::Done || *s == RecipeStatus::Cached || matches!(s, RecipeStatus::Failed(_)) }) .map(|(r, s)| { let style = match s { RecipeStatus::Fetched => Style::default(), RecipeStatus::Cooking => Style::default().fg(Color::Yellow), RecipeStatus::Done => Style::default().fg(Color::Green), RecipeStatus::Cached => Style::default().fg(Color::Cyan), RecipeStatus::Failed(_) => Style::default().fg(Color::Red), _ => Style::default(), }; let icon = match s { RecipeStatus::Fetched => ' ', RecipeStatus::Cooking => spin, RecipeStatus::Done => '+', RecipeStatus::Cached => ' ', RecipeStatus::Failed(_) => 'X', _ => '?', }; ListItem::new(format!("{icon} {}", r.name)).style(style) }) .collect(); let total_items = cook_items.len(); if app.cook_auto_scroll { let cooking_index = app .recipes .iter() .filter(|(_, s)| { *s == RecipeStatus::Fetched || *s == RecipeStatus::Cooking || *s == RecipeStatus::Done || matches!(s, RecipeStatus::Failed(_)) }) .position(|(_r, s)| *s == RecipeStatus::Cooking); if let Some(index) = cooking_index { app.cook_list_state.select(Some(index)); let index_u16 = index; let center_offset = panel_height / 2; let new_offset = index_u16.saturating_sub(center_offset) as usize; *app.cook_list_state.offset_mut() = new_offset; } } else { app.cook_list_state.select(None); if total_items > 0 { let max_offset = total_items.saturating_sub(panel_height as usize); if *app.cook_list_state.offset_mut() > max_offset { *app.cook_list_state.offset_mut() = max_offset; } } else { *app.cook_list_state.offset_mut() = 0; } } let cook_items: Vec = cook_items[app.cook_scroll..].into(); let cook_chunk = chunks[if app.fetch_complete { 0 } else { 1 }]; let cook_list = List::new(cook_items).block( Block::default() .title("Cook Queue [2]") .borders(Borders::ALL), ); f.render_stateful_widget(cook_list, cook_chunk, &mut app.cook_list_state); let (active_name, log_text, log_line) = app.get_active_log(); let log_title = if let Some(active_name) = active_name { format!( " {} Log: {} ", app.log_view_job.to_string(), active_name.as_str() ) } else { format!(" {} Log ", app.log_view_job.to_string()) }; let mut enable_auto_scroll = false; let mut intended_scroll_pos = 0usize; let mut log_lines: Vec = if let Some(log_text) = log_text && !log_text.is_empty() { let total_log_lines = log_text.len() as usize; let start = if app.auto_scroll { if total_log_lines > panel_height { intended_scroll_pos = total_log_lines - panel_height; total_log_lines - panel_height } else { 0 } } else { if total_log_lines > panel_height { let limit = 2; // arbitrary number if app.log_scroll >= total_log_lines - limit { if app.prompt.is_none() || config.cook.nonstop { enable_auto_scroll = true; } intended_scroll_pos = total_log_lines - limit; total_log_lines - limit } else { app.log_scroll } } else { 0 } }; let end = cmp::min(panel_height + start, total_log_lines - 1); log_text[start..end] .iter() .map(|s| { let text_with_colors = s .into_text() .unwrap_or_else(|_| Text::raw("--unrenderable line--")); text_with_colors .lines .into_iter() .next() .unwrap_or_else(|| Line::raw("--unrenderable line--")) }) .collect() } else { vec![Line::from("No logs yet")] }; if let Some(buffer) = log_line && !buffer.is_empty() { let text_with_colors = handle_cr(&buffer) .into_text() .unwrap_or_else(|_| Text::raw("--unrenderable line--")); if let Some(line) = text_with_colors.lines.into_iter().next() { log_lines.push(line); } } let instruct = format!( " Keys: [c] Stop [PageUp/Down] Scroll{}{} ", match app.auto_scroll { true => "", false => " [End] Follow log trails", }, match (&app.log_view_job, app.fetch_complete) { (JobType::Fetch, _) => " [2] View Cook Log", (JobType::Cook, false) => " [1] View Fetch Log", (JobType::Cook, true) => "", } ); let mut log_paragraph = Paragraph::new(log_lines).block( Block::default() .title(log_title) .title_bottom(instruct) .borders(Borders::ALL), ); if !app.auto_scroll { log_paragraph = log_paragraph.wrap(Wrap { trim: false }); } f.render_widget( log_paragraph, chunks[if app.fetch_complete { 1 } else { 2 }], ); if let Some(prompt) = &mut app.prompt { if config.cook.nonstop && prompt.selected == PromptOption::Retry { prompt.selected = PromptOption::Skip; } draw_prompt(f, prompt, config.cook.nonstop); } if enable_auto_scroll { app.auto_scroll = true; } if intended_scroll_pos > 0 { app.log_scroll = intended_scroll_pos; } while let Ok(event) = input_rx.try_recv() { if let Some((app, res)) = handle_prompt_input(&event, &mut app) { prompting.swap(res as u32, Ordering::SeqCst); if res == PromptOption::Exit { // TODO: This can be a different log with what prompted on nonstop mode let (name, log, line) = app.get_active_log(); if let Some(name) = name && let Some(log) = log { app.dump_logs_on_exit = Some((name.to_owned(), join_logs(log, line))); } running.store(false, Ordering::SeqCst); } app.prompt = None; } else { handle_main_event(&mut app, &event); } } })?; while let Ok(update) = status_rx.try_recv() { app.update_status(update); } if app.cook_complete { running.swap(false, Ordering::SeqCst); } if let Some(sleep_duration) = TICK_RATE.checked_sub(frame_start.elapsed()) { thread::sleep(sleep_duration); } } drop(mstdout); let _ = stdout().flush(); if config.cook.nonstop && app.dump_logs_on_exit.is_some() { kill_everything(); } let _ = fetcher_handle.join(); let _ = cooker_handle.join(); Ok(app.dump_logs_on_exit) } fn join_logs(log: &Vec, line: Option>) -> String { let mut logs = log.join("\n"); if let Some(line) = line { logs.push_str("\n"); logs.push_str(handle_cr(&line)); } logs } fn handle_cr<'a>(buffer: &'a Cow<'_, str>) -> &'a str { let st = buffer.trim_end(); st.rsplit('\r').next().unwrap_or(&st) } fn handle_main_event(app: &mut TuiApp, event: &Event) { match event { Event::Key(key) => match key { Key::Char('1') => { app.log_view_job = JobType::Fetch; } Key::Char('2') => { app.log_view_job = JobType::Cook; } Key::Char('c') => { // as compilers still running, we use this way to stop it kill_everything(); } Key::Up => { app.auto_scroll = false; app.log_scroll = app.log_scroll.saturating_sub(1); } Key::Down => { app.auto_scroll = false; app.log_scroll = app.log_scroll.saturating_add(1); } Key::PageUp => { app.auto_scroll = false; app.log_scroll = app.log_scroll.saturating_sub(20); } Key::PageDown => { app.auto_scroll = false; app.log_scroll = app.log_scroll.saturating_add(20); } Key::End => { app.auto_scroll = true; } Key::Home => { app.auto_scroll = false; app.log_scroll = 0; } _ => {} }, //FIXME: This does nothing, it seems ratatui handles this itself magically Event::Mouse(mouse_event) => { match mouse_event { MouseEvent::Press(termion::event::MouseButton::WheelUp, x, y) => { // termion is 1-based, ratatui rects are 0-based let pos = Position { x: x.saturating_sub(1), y: y.saturating_sub(1), }; if app.fetch_panel_rect.map_or(false, |r| r.contains(pos)) { app.fetch_scroll = app.fetch_scroll.saturating_sub(1); } else if app.cook_panel_rect.map_or(false, |r| r.contains(pos)) { app.cook_scroll = app.cook_scroll.saturating_sub(1); app.cook_auto_scroll = false; } else if app.log_panel_rect.map_or(false, |r| r.contains(pos)) { app.auto_scroll = false; app.log_scroll = app.log_scroll.saturating_sub(1); } } MouseEvent::Press(termion::event::MouseButton::WheelDown, x, y) => { let pos = Position { x: x.saturating_sub(1), y: y.saturating_sub(1), }; if app.fetch_panel_rect.map_or(false, |r| r.contains(pos)) { app.fetch_scroll = app.fetch_scroll.saturating_add(1); } else if app.cook_panel_rect.map_or(false, |r| r.contains(pos)) { app.cook_scroll = app.cook_scroll.saturating_add(1); app.cook_auto_scroll = false; } else if app.log_panel_rect.map_or(false, |r| r.contains(pos)) { app.auto_scroll = false; app.log_scroll = app.log_scroll.saturating_add(1); } } _ => {} } } _ => {} } } fn kill_everything() { let pid = std::process::id(); Command::new("bash") .arg("-c") .arg(KILL_ALL_PID.replace("$PID", &pid.to_string())) .stdout(process::Stdio::null()) .stderr(process::Stdio::null()) .spawn() .expect("unable to spawn kill"); } fn handle_prompt_input<'a>( event: &Event, app: &'a mut TuiApp, ) -> Option<(&'a mut TuiApp, PromptOption)> { if let Some(prompt) = &mut app.prompt { match event { Event::Key(key) => match key { Key::Char('q') | Key::Ctrl('c') | Key::Esc => { // Treat as "Exit" return Some((app, PromptOption::Exit)); } Key::Left | Key::BackTab => prompt.prev(), Key::Right | Key::Char('\t') => prompt.next(), Key::Char('\n') => { let prompt = app.prompt.take().unwrap(); return Some((app, prompt.selected)); } _ => {} }, _ => {} // Ignore mouse events } } None } fn draw_prompt(f: &mut ratatui::Frame, prompt: &FailurePrompt, is_nonstop: bool) { let title = format!( " FAILURE in {} {}", prompt.recipe.name, if is_nonstop { "(skipped) " } else { "" } ); let mut error_text = prompt.error.clone(); if error_text.len() > 200 { error_text = error_text[0..100].to_string() + ".." + &error_text[(error_text.len() - 100)..(error_text.len() - 1)]; } else if error_text.len() > 100 { error_text = error_text[0..100].to_string() + ".."; } // Style for options let retry_style = if prompt.selected == PromptOption::Retry { Style::default().bg(Color::White).fg(Color::Black) } else { Style::default() }; let skip_style = if prompt.selected == PromptOption::Skip { Style::default().bg(Color::White).fg(Color::Black) } else { Style::default() }; let exit_style = if prompt.selected == PromptOption::Exit { Style::default().bg(Color::White).fg(Color::Black) } else { Style::default() }; let mut buttons = vec![ Span::styled(" [Skip] ", skip_style), Span::raw(" "), Span::styled(" [Exit] ", exit_style), ]; if !is_nonstop { buttons.push(Span::raw(" ")); buttons.push(Span::styled(" [Retry] ", retry_style)); } let text = vec![ Line::from(error_text).style(Style::default().fg(Color::Yellow)), Line::from(""), Line::from(buttons), ]; let block = Block::default() .title(Span::styled( title, Style::default().fg(Color::White).bg(Color::Red), )) .borders(Borders::ALL) .border_style(Style::default().fg(Color::Red)); let paragraph = Paragraph::new(text) .block(block) .alignment(ratatui::layout::Alignment::Center) .wrap(Wrap { trim: true }); let area = f.area(); let popup_area = Rect { x: area.width / 4, y: area.height / 3, width: area.width / 2, height: 10, }; f.render_widget(Clear, popup_area); // Clear the background f.render_widget(paragraph, popup_area); } fn spawn_log_reader( mut reader: R, package_name: PackageName, status_tx: mpsc::Sender, ) where R: Read + Send + 'static, { thread::spawn(move || { let mut buffer = [0; 1024]; loop { let buf = match reader.read(&mut buffer) { Ok(0) => break, Ok(n) => buffer[..n].to_vec(), Err(e) => format!("[IO Error] {}", e).into_bytes(), }; if status_tx .send(StatusUpdate::PushLog(package_name.clone(), buf)) .is_err() { // TUI thread hung up break; } } }); } fn setup_logger( status_tx: &mpsc::Sender, name: &PackageName, ) -> (UnixSlavePty, std::io::PipeWriter) { let (pty_reader, log_reader, pipes) = setup_pty(); spawn_log_reader(pty_reader, name.clone(), status_tx.clone()); spawn_log_reader(log_reader, name.clone(), status_tx.clone()); pipes } #[derive(PartialEq, Clone, Copy)] #[repr(u32)] enum PromptOption { Retry = 2, Skip, Exit, } struct FailurePrompt { recipe: CookRecipe, error: String, selected: PromptOption, } impl FailurePrompt { fn new(recipe: CookRecipe, error: String) -> Self { Self { recipe, error, selected: PromptOption::Exit, } } fn next(&mut self) { self.selected = match self.selected { PromptOption::Retry => PromptOption::Skip, PromptOption::Skip => PromptOption::Exit, PromptOption::Exit => PromptOption::Retry, } } fn prev(&mut self) { self.selected = match self.selected { PromptOption::Retry => PromptOption::Exit, PromptOption::Skip => PromptOption::Retry, PromptOption::Exit => PromptOption::Skip, } } } ================================================ FILE: src/bin/repo_builder.rs ================================================ use cookbook::WALK_DEPTH; use cookbook::cook::ident::{get_ident, init_ident}; use cookbook::cook::{fetch, package as cook_package}; use cookbook::recipe::CookRecipe; use cookbook::web::{CliWebConfig, generate_web}; use pkg::{Package, PackageName, recipes}; use pkg::{Repository, SourceIdentifier}; use std::collections::{BTreeMap, BTreeSet, HashMap}; use std::env; use std::fs::{self, File}; use std::io::{Read, Write}; use std::path::{Path, PathBuf}; use std::process::Command; use toml::Value; fn is_newer(src: &Path, dst: &Path) -> bool { match (fs::metadata(src), fs::metadata(dst)) { (Ok(src_meta), Ok(dst_meta)) => match (src_meta.modified(), dst_meta.modified()) { (Ok(src_time), Ok(dst_time)) => src_time > dst_time, (Ok(_), Err(_)) => true, _ => false, }, (Ok(_), Err(_)) => true, _ => false, } } #[derive(Clone)] struct CliConfig { repo_dir: PathBuf, appstream: bool, recipe_list: Vec, web: Option, } impl CliConfig { fn parse_args() -> Result { let mut args = env::args().skip(1); let repo_dir = PathBuf::from( args.next() .expect("Usage: repo_builder ..."), ); let web = CliWebConfig::parse_args(); Ok(CliConfig { repo_dir, appstream: env::var("COOKBOOK_APPSTREAM").ok().as_deref() == Some("true"), recipe_list: args.collect(), web, }) } } fn main() -> Result<(), Box> { init_ident(); let conf = CliConfig::parse_args()?; Ok(publish_packages(&conf)?) } // TODO: Make this callable from repo bin fn publish_packages(config: &CliConfig) -> anyhow::Result<()> { let repo_path = &config.repo_dir.join(redoxer::target()); if !repo_path.is_dir() { fs::create_dir_all(repo_path)?; } // Don't publish host packages let target_packages = &config .recipe_list .iter() .map(PackageName::new) .filter(|pkg| pkg.as_ref().is_ok_and(|p| !p.is_host())) .collect::, _>>()?; if target_packages.len() == 0 { return Ok(()); } // TODO: publish cross target builds? if std::env::var("COOKBOOK_CROSS_TARGET").is_ok_and(|x| !x.is_empty()) { return Ok(()); } // Runtime dependencies include both `[package.dependencies]` and dynamically // linked packages discovered by auto_deps. // // The following adds the package dependencies of the recipes to the repo as // well. let (recipe_list, recipe_map) = Package::new_recursive_nonstop(target_packages, WALK_DEPTH); if recipe_list.len() == 0 { // Fail-Safe anyhow::bail!("Zero packages are passing the build"); } let mut appstream_sources: HashMap = HashMap::new(); let mut packages: BTreeMap = BTreeMap::new(); let mut outdated_packages: BTreeMap = BTreeMap::new(); // === 1. Push recipes in list === for recipe_toml in &recipe_list { let recipe = &recipe_toml.name; let Some(recipe_path) = recipes::find(recipe.name()) else { eprintln!("recipe {} not found", recipe); continue; }; let Ok(cookbook_recipe) = CookRecipe::from_path(recipe_path, true, false) else { eprintln!("recipe {} unable to read", recipe); continue; }; let target_dir = cookbook_recipe.target_dir(); for package in cookbook_recipe.recipe.get_packages_list() { let (stage_dir, pkgar_src, toml_src) = cook_package::package_stage_paths(package, &target_dir); let recipe_name = cook_package::get_package_name(recipe.name(), package); let pkgar_dst = repo_path.join(format!("{}.pkgar", recipe_name)); let toml_dst = repo_path.join(format!("{}.toml", recipe_name)); if !fs::exists(&toml_src)? { eprintln!("recipe {} is missing stage.toml", recipe_name); continue; } if is_newer(&toml_src, &toml_dst) { eprintln!("\x1b[01;38;5;155mrepo - publishing {}\x1b[0m", recipe_name); if fs::exists(&pkgar_src)? { fs::copy(&pkgar_src, &pkgar_dst)?; } fs::copy(&toml_src, &toml_dst)?; } // TODO: Extract from pkgar instead to handle config.cook.clean_target == true if stage_dir.join("usr/share/metainfo").exists() { appstream_sources.insert(recipe.name().to_string(), stage_dir.clone()); } } } // === 2. Optional AppStream generation === if config.appstream { eprintln!("\x1b[01;38;5;155mrepo - generating appstream data\x1b[0m"); let root = env::var("ROOT").unwrap_or_else(|_| ".".into()); let target = env::var("TARGET").unwrap_or_else(|_| "x86_64-unknown-linux-gnu".into()); let appstream_root = Path::new(&root) .join("build") .join(&target) .join("appstream"); fs::remove_dir_all(&appstream_root).ok(); fs::create_dir_all(&appstream_root)?; if !appstream_sources.is_empty() { let mut compose_cmd = Command::new("appstreamcli"); compose_cmd .arg("compose") .arg("--origin=pkgar") .arg("--print-report=full") .arg(format!("--result-root={}", appstream_root.display())); for (_recipe, source_path) in &appstream_sources { compose_cmd.arg(source_path); } let exit_status = compose_cmd.status()?; if exit_status.success() { let appstream_pkg = repo_path.join("repo-appstream.pkgar"); fs::remove_file(&appstream_pkg).ok(); pkgar::create( format!("{}/build/id_ed25519.toml", root), &appstream_pkg, &appstream_root, )?; } else { eprintln!("\x1b[1;91;49mrepo - appstreamcli failed:\x1b[0m {exit_status:?}"); for (_recipe, source_path) in &appstream_sources { eprintln!("- {}", source_path.display()); } eprintln!(); } } } // === 3. List outdated packages === for (recipe, e) in recipe_map .into_iter() .filter_map(|(k, v)| v.err().and_then(|e| Some((k, e)))) { eprintln!( "\x1b[0;91;49mrepo - marking {} as outdated:\x1b[0m {e}", recipe ); let Some(recipe_path) = recipes::find(recipe.name()) else { eprintln!("recipe {} not found", recipe); continue; }; let Ok(cookbook_recipe) = CookRecipe::from_path(recipe_path, true, false) else { eprintln!("recipe {} unable to read", recipe); continue; }; match fetch::fetch_get_source_info(&cookbook_recipe) { Ok(source_ident) => { outdated_packages.insert(recipe.name().to_string(), source_ident); } Err(e) => { eprintln!( "\x1b[0;91;49m source of {} is not identifiable:\x1b[0m {e}", recipe ); let ident = get_ident(); outdated_packages.insert( recipe.name().to_string(), SourceIdentifier { source_identifier: "missing_source".to_string(), commit_identifier: ident.commit.clone(), time_identifier: ident.time.clone(), }, ); } }; } eprintln!("\x1b[01;38;5;155mrepo - generating repo.toml\x1b[0m"); // === 4. Read and update repo.toml === let repo_toml_path = repo_path.join("repo.toml"); if repo_toml_path.exists() { let mut file = File::open(&repo_toml_path)?; let mut contents = String::new(); file.read_to_string(&mut contents)?; let parsed: Repository = toml::from_str(&contents)?; for (k, v) in parsed.packages { packages.insert(k, v); } if parsed.outdated_packages.len() > 0 { let built_packages: BTreeSet = recipe_list .iter() .map(|p| p.name.name().to_string()) .collect(); for (k, v) in parsed.outdated_packages { if outdated_packages.contains_key(&k) || !built_packages.contains(&k) { outdated_packages.insert(k, v); } } } } for entry in fs::read_dir(&repo_path)? { let entry = entry?; let path = entry.path(); if path.extension().and_then(|s| s.to_str()) != Some("toml") { continue; } if path.file_stem().and_then(|s| s.to_str()) == Some("repo") { continue; } let content = fs::read_to_string(&path)?; let parsed: Value = toml::from_str(&content)?; let empty_ver = Value::String("".to_string()); let version_str = parsed .get("blake3") .unwrap_or_else(|| parsed.get("version").unwrap_or_else(|| &empty_ver)) .as_str() .unwrap_or(""); let package_name = path.file_stem().unwrap().to_string_lossy().to_string(); packages.insert(package_name, version_str.to_string()); } let repository = Repository { packages, outdated_packages, }; let output = toml::to_string(&repository)?; let mut output_file = File::create(&repo_toml_path)?; output_file.write_all(output.as_bytes())?; if let Some(conf) = &config.web { eprintln!("\x1b[01;38;5;155mrepo - generating web content\x1b[0m"); generate_web(&repository.packages.keys().cloned().collect(), conf); } Ok(()) } ================================================ FILE: src/blake3.rs ================================================ use blake3::Hasher; use std::{fs, io::Result, path::Path, time::Duration}; use crate::progress_bar::{ProgressBar, ProgressBarRead}; pub fn blake3_progress>(path: P) -> Result { let len = fs::metadata(&path)?.len(); let mut f = fs::File::open(&path)?; let mut pb = ProgressBar::new(len); pb.message("blake3: "); pb.set_max_refresh_rate(Some(Duration::new(1, 0))); pb.set_units(pbr::Units::Bytes); let mut pbr = ProgressBarRead::new(&mut pb, &mut f); let hash = Hasher::new().update_reader(&mut pbr)?.finalize(); let res = format!("{}", hash.to_hex()); pb.finish_println(""); Ok(res) } pub fn blake3_silent>(path: P) -> Result { let mut f = fs::File::open(&path)?; let hash = Hasher::new().update_reader(&mut f)?.finalize(); let res = format!("{}", hash.to_hex()); Ok(res) } pub fn hash_to_hex(h: [u8; 32]) -> String { format!("{}", blake3::Hash::from_bytes(h).to_hex()) } ================================================ FILE: src/config.rs ================================================ use std::{collections::HashMap, env, fs, str::FromStr, sync::OnceLock}; use serde::{Deserialize, Serialize}; #[derive(Debug, Default, Clone, Deserialize, PartialEq, Serialize)] #[serde(default)] pub struct CookConfigOpt { /// whether to run offline pub offline: Option, /// whether to set jobs number instead of from nproc pub jobs: Option, /// whether to use TUI to allow parallel build /// default value is yes if "CI" env unset and STDIN is open. pub tui: Option, /// whether to write logs to build/logs dir, default true on TUI pub logs: Option, /// whether to ignore build errors pub nonstop: Option, /// whether to archive packages with compressed format pub compressed: Option, /// whether to print verbose logs to certain commands /// build failure still be printed anyway pub verbose: Option, /// whether to always clean the build directory before building pub clean_build: Option, /// whether to always clean the target directory after building /// (deletes everything except pkgar files) pub clean_target: Option, /// whether to always write stage.files metadata pub write_filetree: Option, } #[derive(Debug, Default, Clone, Deserialize, PartialEq, Serialize)] pub struct CookConfig { pub offline: bool, pub jobs: usize, pub tui: bool, pub logs: bool, pub nonstop: bool, pub compressed: bool, pub verbose: bool, pub clean_build: bool, pub clean_target: bool, pub write_filetree: bool, } impl From for CookConfig { fn from(value: CookConfigOpt) -> Self { CookConfig { offline: value.offline.unwrap(), jobs: value.jobs.unwrap(), tui: value.tui.unwrap(), logs: value.logs.unwrap(), nonstop: value.nonstop.unwrap(), compressed: value.compressed.unwrap(), verbose: value.verbose.unwrap(), clean_build: value.clean_build.unwrap(), clean_target: value.clean_target.unwrap(), write_filetree: value.write_filetree.unwrap(), } } } #[derive(Debug, Default, Deserialize, PartialEq, Serialize)] #[serde(default)] pub struct CookbookConfig { #[serde(rename = "cook")] cook_opt: CookConfigOpt, #[serde(skip)] pub cook: CookConfig, pub mirrors: HashMap, } static CONFIG: OnceLock = OnceLock::new(); pub fn init_config() { let mut config: CookbookConfig = if fs::exists("cookbook.toml").unwrap_or(false) { let toml_content = fs::read_to_string("cookbook.toml") .map_err(|e| format!("Unable to read config: {:?}", e)) .unwrap(); toml::from_str(&toml_content) .map_err(|e| format!("Unable to parse config: {:?}", e)) .unwrap() } else { CookbookConfig::default() }; if config.cook_opt.tui.is_none() { config.cook_opt.tui = Some(!env::var("CI").is_ok_and(|s| !s.is_empty())); } if config.cook_opt.jobs.is_none() { config.cook_opt.jobs = Some(extract_env( "COOKBOOK_MAKE_JOBS", std::thread::available_parallelism() .map(|f| usize::from(f)) .unwrap_or(1), )); } if config.cook_opt.logs.is_none() { config.cook_opt.logs = Some(extract_env("COOKBOOK_LOGS", config.cook_opt.tui.unwrap())); } if config.cook_opt.offline.is_none() { config.cook_opt.offline = Some(extract_env("COOKBOOK_OFFLINE", false)); } if config.cook_opt.compressed.is_none() { config.cook_opt.compressed = Some(extract_env("COOKBOOK_COMPRESSED", false)); } if config.cook_opt.verbose.is_none() { config.cook_opt.verbose = Some(extract_env("COOKBOOK_VERBOSE", true)); } if config.cook_opt.nonstop.is_none() { config.cook_opt.nonstop = Some(extract_env("COOKBOOK_NONSTOP", false)); } if config.cook_opt.clean_build.is_none() { config.cook_opt.clean_build = Some(extract_env("COOKBOOK_CLEAN_BUILD", false)); } if config.cook_opt.clean_target.is_none() { config.cook_opt.clean_target = Some(extract_env("COOKBOOK_CLEAN_TARGET", false)); } if config.cook_opt.write_filetree.is_none() { config.cook_opt.write_filetree = Some(extract_env( "COOKBOOK_WRITE_FILETREE", config.cook_opt.clean_target.unwrap_or(false) || extract_env("COOKBOOK_WEB", false), )); } if config.mirrors.len() == 0 { // The GNU FTP mirror below is automatically inserted for convenience // You can choose other mirrors by setting it on cookbook.toml config.mirrors.insert( "ftp.gnu.org/gnu".to_string(), "mirrors.ocf.berkeley.edu/gnu".to_string(), ); } config.cook = CookConfig::from(config.cook_opt.clone()); CONFIG.set(config).expect("config is initialized twice"); } fn extract_env(key: &str, default: T) -> T { if let Ok(e) = env::var(&key) { str::parse(&e).unwrap_or(default) } else { default } } pub fn get_config() -> &'static CookbookConfig { return CONFIG.get().expect("Configuration is not initialized"); } pub fn translate_mirror(original_url: &str) -> String { let config = CONFIG.get().expect("Configuration is not initialized"); let stripped_url = original_url .strip_prefix("https://") .or_else(|| original_url.strip_prefix("http://")) .unwrap_or(original_url); let mut best_match_prefix: Option<&String> = None; for prefix in config.mirrors.keys() { if stripped_url.starts_with(prefix) { match best_match_prefix { Some(current_best) if prefix.len() > current_best.len() => { best_match_prefix = Some(prefix); } None => { best_match_prefix = Some(prefix); } _ => {} } } } if let Some(prefix) = best_match_prefix { let mirror_base = config.mirrors.get(prefix).unwrap(); let suffix = &stripped_url[prefix.len()..]; let ptotocol = &original_url[..(original_url.len() - stripped_url.len())]; return format!("{}{}{}", ptotocol, mirror_base, suffix); } original_url.to_string() } #[cfg(test)] mod tests { use super::*; fn setup_test_config() { let app_config = toml::from_str( "[mirrors]\n\ \"ftp.gnu.org/gnu\" = \"example.com/gnu\"\n\ \"github.com/foo/bar\" = \"github.com/baz/bar\"\n\ \"github.com/a\" = \"github.com/b\"\n", ) .expect("Unable to parse test config"); // This will be called for each test. If the config is already set, // it will do nothing, which is fine as all tests use the same config. let _ = CONFIG.set(app_config); } #[test] fn test_parse_cook() { let app_config: CookbookConfig = toml::from_str( "[cook]\n\ offline = true\n", ) .expect("Unable to parse test config"); assert_eq!(app_config.cook_opt.offline, Some(true)); assert_eq!(app_config.cook_opt.jobs, None); } #[test] fn test_exact_match() { setup_test_config(); assert_eq!(translate_mirror("ftp.gnu.org/gnu"), "example.com/gnu"); assert_eq!(translate_mirror("github.com/foo/bar"), "github.com/baz/bar"); } #[test] fn test_prefix_match() { setup_test_config(); assert_eq!( translate_mirror("https://github.com/a/c"), "https://github.com/b/c" ); assert_eq!( translate_mirror("https://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz"), "https://example.com/gnu/bash/bash-5.2.15.tar.gz" ); } #[test] fn test_longest_prefix_match() { setup_test_config(); // "github.com/foo/bar" is a longer and more specific prefix than "github.com/a", // so it should be chosen for the translation. assert_eq!( translate_mirror("https://github.com/foo/bar/baz"), "https://github.com/baz/bar/baz" ); } #[test] fn test_no_match() { setup_test_config(); assert_eq!(translate_mirror("www.rust-lang.org"), "www.rust-lang.org"); assert_eq!( translate_mirror("http://github.com/unrelated/repo"), "http://github.com/unrelated/repo" ); } } ================================================ FILE: src/cook/cook_build.rs ================================================ use pkg::PackageError; use pkg::{Package, PackageName}; use crate::config::CookConfig; use crate::cook::package::{package_source_paths, package_target}; use crate::cook::pty::PtyOut; use crate::cook::script::*; use crate::cook::{fetch, fs::*}; use crate::recipe::Recipe; use crate::recipe::{AutoDeps, CookRecipe}; use crate::recipe::{BuildKind, OptionalPackageRecipe}; use std::collections::VecDeque; use std::{ collections::BTreeSet, fs, path::{Path, PathBuf}, process::Command, str, time::SystemTime, }; use crate::{is_redox, log_to_pty}; fn auto_deps_from_dynamic_linking( stage_dirs: &[PathBuf], target_dir: &Path, dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, logger: &PtyOut, ) -> BTreeSet { let mut paths = BTreeSet::new(); let mut visited = BTreeSet::new(); let verbose = crate::config::get_config().cook.verbose; // Base directories may need to be updated for packages that place binaries in odd locations. let mut walk = VecDeque::new(); for stage_dir in stage_dirs { walk.push_back(stage_dir.join("usr/bin")); walk.push_back(stage_dir.join("usr/games")); walk.push_back(stage_dir.join("usr/lib")); walk.push_back(stage_dir.join("usr/libexec")); } // Recursively (DFS) walk each directory to ensure nested libs and bins are checked. while let Some(dir) = walk.pop_front() { let Ok(dir) = dir.canonicalize() else { continue; }; if visited.contains(&dir) { #[cfg(debug_assertions)] log_to_pty!( logger, "DEBUG: auto_deps => Skipping `{dir:?}` (already visited)" ); continue; } assert!( visited.insert(dir.clone()), "Directory `{:?}` should not be in visited\nVisited: {:#?}", dir, visited ); let Ok(read_dir) = fs::read_dir(&dir) else { continue; }; for entry_res in read_dir { let Ok(entry) = entry_res else { continue }; let Ok(file_type) = entry.file_type() else { continue; }; if file_type.is_file() { paths.insert(entry.path()); } else if file_type.is_dir() { walk.push_front(entry.path()); } } } let mut needed = BTreeSet::new(); for path in paths { let Ok(file) = fs::File::open(&path) else { continue; }; let read_cache = object::ReadCache::new(file); let Ok(object) = object::build::elf::Builder::read(&read_cache) else { continue; }; let Some(dynamic_data) = object.dynamic_data() else { continue; }; for dynamic in dynamic_data { let object::build::elf::Dynamic::String { tag, val } = dynamic else { continue; }; if *tag == object::elf::DT_NEEDED { let Ok(name) = str::from_utf8(val) else { continue; }; if let Ok(relative_path) = path.strip_prefix(target_dir) { if verbose { log_to_pty!(logger, "DEBUG: {} needs {}", relative_path.display(), name); } } needed.insert(name.to_string()); } } } let mut missing = needed.clone(); // relibc and friends will always be installed for preinstalled in &["libc.so.6", "libgcc_s.so.1", "libstdc++.so.6"] { missing.remove(*preinstalled); } let mut deps = BTreeSet::new(); if let Ok(key_file) = pkgar_keys::PublicKeyFile::open("build/id_ed25519.pub.toml") { for (dep, archive_path) in dep_pkgars.iter() { let Ok(mut package) = pkgar::PackageFile::new(archive_path, &key_file.pkey) else { continue; }; let Ok(entries) = pkgar_core::PackageSrc::read_entries(&mut package) else { continue; }; for entry in entries { let Ok(entry_path) = pkgar::ext::EntryExt::check_path(&entry) else { continue; }; for prefix in &["lib", "usr/lib"] { let Ok(child_path) = entry_path.strip_prefix(prefix) else { continue; }; let Some(child_name) = child_path.to_str() else { continue; }; if needed.contains(child_name) { if verbose { log_to_pty!(logger, "DEBUG: {} provides {}", dep, child_name); } deps.insert(dep.with_prefix(pkg::PackagePrefix::Any)); missing.remove(child_name); } } } } } if verbose { for name in missing { log_to_pty!(logger, "INFO: {} missing", name); } } deps } fn auto_deps_from_static_package_deps( build_dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, dynamic_dep_pkgars: &BTreeSet, ) -> Result, PackageError> { let static_dep_pkgars: Vec = build_dep_pkgars .iter() .map(|x| x.0.clone()) .filter(|x| !dynamic_dep_pkgars.contains(x)) .collect(); let pkgs = CookRecipe::get_package_deps_recursive(&static_dep_pkgars, false)?; Ok(pkgs.into_iter().collect()) } pub struct BuildResult { pub stage_dirs: Vec, pub auto_deps: BTreeSet, pub cached: bool, } impl BuildResult { pub fn new(stage_dirs: Vec, auto_deps: BTreeSet) -> Self { BuildResult { stage_dirs, auto_deps, cached: false, } } pub fn cached(stage_dirs: Vec, auto_deps: BTreeSet) -> Self { BuildResult { stage_dirs, auto_deps, cached: true, } } } pub fn build( recipe_dir: &Path, source_dir: &Path, target_dir: &Path, cook_recipe: &CookRecipe, cook_config: &CookConfig, logger: &PtyOut, ) -> Result { let recipe = &cook_recipe.recipe; let name = &cook_recipe.name; let check_source = !cook_recipe.is_deps; let sysroot_dir = target_dir.join("sysroot"); let toolchain_dir = target_dir.join("toolchain"); let stage_dirs = get_stage_dirs(&recipe.optional_packages, target_dir); let stage_pkgars: Vec = stage_dirs .iter() .map(|p| p.with_added_extension("pkgar")) .collect(); let cli_verbose = cook_config.verbose; let cli_jobs = cook_config.jobs; if recipe.build.kind == BuildKind::None { // metapackages don't need to do anything here return Ok(BuildResult::new(stage_dirs, BTreeSet::new())); } let mut dep_pkgars = BTreeSet::new(); let mut dep_host_pkgars = BTreeSet::new(); let build_deps = [ &recipe.build.dependencies[..], &recipe.build.dev_dependencies[..], ] .concat(); let build_deps = CookRecipe::get_build_deps_recursive(&build_deps, false).map_err(|e| format!("{:?}", e))?; for dependency in build_deps.iter() { let (_, pkgar, _) = dependency.stage_paths(); if dependency.name.is_host() { dep_host_pkgars.insert((dependency.name.clone(), pkgar)); } else { dep_pkgars.insert((dependency.name.clone(), pkgar)); } } macro_rules! make_auto_deps { () => { build_auto_deps( recipe, target_dir, &stage_dirs, cook_config, dep_pkgars, logger, ) }; } if !check_source { let stage_present = if cook_config.clean_target { stage_pkgars.iter().all(|file| file.is_file()) } else { stage_dirs.iter().all(|file| file.is_dir()) }; if stage_present { if cli_verbose { log_to_pty!(logger, "DEBUG: using cached build, not checking source"); } let auto_deps = make_auto_deps!()?; return Ok(BuildResult::cached(stage_dirs, auto_deps)); } } let mut source_modified = modified_dir_ignore_git(source_dir).unwrap_or(SystemTime::UNIX_EPOCH); if let Ok(recipe_modified) = modified(&recipe_dir.join("recipe.toml")) { if recipe_modified > source_modified { source_modified = recipe_modified } } let deps_modified = dep_pkgars .iter() .map(|(_dep, pkgar)| modified(pkgar)) .max() .unwrap_or(Ok(SystemTime::UNIX_EPOCH))?; let deps_host_modified = dep_host_pkgars .iter() .map(|(_dep, pkgar)| modified(pkgar)) .max() .unwrap_or(Ok(SystemTime::UNIX_EPOCH))?; // check stage dir modified against pkgar files, any files missing will result in UNIX_EPOCH let stage_modified = modified_all(&stage_pkgars, modified).unwrap_or(SystemTime::UNIX_EPOCH); // Rebuild stage if source is newer if stage_modified < source_modified || stage_modified < deps_modified || stage_modified < deps_host_modified { for stage_dir in &stage_dirs { if stage_dir.is_dir() { log_to_pty!(logger, "DEBUG: updating '{}'", stage_dir.display()); remove_stage_dir(stage_dir)?; } } } else { if cli_verbose { log_to_pty!(logger, "DEBUG: using cached build"); } if cook_config.clean_target { // stop early otherwise we'll end up rebuilding let auto_deps = make_auto_deps!()?; return Ok(BuildResult::cached(stage_dirs, auto_deps)); } } // Rebuild sysroot if source is newer if recipe.build.kind != BuildKind::Remote { let updated = build_deps_dir( logger, &sysroot_dir, target_dir.join("sysroot.tmp"), if name.is_host() { &dep_host_pkgars } else { &dep_pkgars }, source_modified, deps_modified, )?; if cli_verbose && !updated { log_to_pty!(logger, "DEBUG: using cached sysroot"); } } if recipe.build.kind != BuildKind::Remote && !name.is_host() && dep_host_pkgars.len() > 0 { let updated = build_deps_dir( logger, &toolchain_dir, target_dir.join("toolchain.tmp"), &dep_host_pkgars, source_modified, deps_host_modified, )?; if cli_verbose && !updated { log_to_pty!(logger, "DEBUG: using cached toolchain"); } } let stage_dir = stage_dirs .last() .expect("Should have atleast one stage dir"); let build_dir = get_build_dir(target_dir); if !stage_dir.is_dir() { // Create stage.tmp let stage_dir_tmp = target_dir.join("stage.tmp"); create_dir_clean(&stage_dir_tmp)?; // Create build dir, if it does not exist if cook_config.clean_build || !build_dir.is_dir() { create_dir_clean(&build_dir)?; } let flags_fn = |name, flags: &Vec| { format!( "{name}+=(\n{}\n)\n", flags .iter() .map(|s| format!(" \"{s}\"")) .collect::>() .join("\n") ) }; if recipe.build.kind == BuildKind::Remote { return build_remote(stage_dirs, recipe, target_dir, cook_config); } //TODO: better integration with redoxer (library instead of binary) //TODO: configurable target //TODO: Add more configurability, convert scripts to Rust? let script = match &recipe.build.kind { BuildKind::Cargo { cargopath, cargoflags, cargopackages, cargoexamples, } => { let mut script = format!( "DYNAMIC_INIT\n{}\nCOOKBOOK_CARGO_PATH={} ", flags_fn("COOKBOOK_CARGO_FLAGS", cargoflags), cargopath.as_deref().unwrap_or(".") ); if cargopackages.len() == 0 && cargoexamples.len() == 0 { script += "cookbook_cargo\n" } else { if cargopackages.len() > 0 { script += "cookbook_cargo_packages"; for package in cargopackages { script += " "; script += package; } script += "\n"; } if cargoexamples.len() > 0 { script += "cookbook_cargo_examples"; for example in cargoexamples { script += " "; script += example; } script += "\n"; } } script } BuildKind::Configure { configureflags } => format!( "DYNAMIC_INIT\n{}cookbook_configure", flags_fn("COOKBOOK_CONFIGURE_FLAGS", configureflags), ), BuildKind::Cmake { cmakeflags } => format!( "DYNAMIC_INIT\n{}cookbook_cmake", flags_fn("COOKBOOK_CMAKE_FLAGS", cmakeflags), ), BuildKind::Meson { mesonflags } => format!( "DYNAMIC_INIT\n{}cookbook_meson", flags_fn("COOKBOOK_MESON_FLAGS", mesonflags), ), BuildKind::Custom { script } => script.clone(), BuildKind::Remote => unreachable!(), BuildKind::None => "".to_owned(), }; let command = { //TODO: remove unwraps let cookbook_build = build_dir.canonicalize().unwrap(); let cookbook_recipe = recipe_dir.canonicalize().unwrap(); let cookbook_root = Path::new(".").canonicalize().unwrap(); let cookbook_stage = stage_dir_tmp.canonicalize().unwrap(); let cookbook_source = source_dir.canonicalize().unwrap(); let cookbook_sysroot = sysroot_dir.canonicalize().unwrap(); let cookbook_toolchain = toolchain_dir.canonicalize().ok(); let bash_args = if cli_verbose { "-ex" } else { "-e" }; let local_redoxer = Path::new("target/release/cookbook_redoxer"); let mut command = if is_redox() && !local_redoxer.is_file() { let mut command = Command::new("cookbook_redoxer"); command.arg(bash_args); command.env("COOKBOOK_REDOXER", "cookbook_redoxer"); command } else { let cookbook_redoxer = local_redoxer .canonicalize() .unwrap_or(PathBuf::from("/bin/false")); let mut command = Command::new(&cookbook_redoxer); command.arg("env").arg("bash").arg(bash_args); command.env("COOKBOOK_REDOXER", &cookbook_redoxer); command }; command.current_dir(&cookbook_build); command.env("TARGET", package_target(name)); command.env("COOKBOOK_BUILD", &cookbook_build); command.env("COOKBOOK_NAME", name.name()); command.env("COOKBOOK_HOST_TARGET", redoxer::host_target()); command.env("COOKBOOK_RECIPE", &cookbook_recipe); command.env("COOKBOOK_ROOT", &cookbook_root); command.env("COOKBOOK_STAGE", &cookbook_stage); command.env("COOKBOOK_SOURCE", &cookbook_source); command.env("COOKBOOK_SYSROOT", &cookbook_sysroot); if let Some(cookbook_toolchain) = &cookbook_toolchain { command.env("COOKBOOK_TOOLCHAIN", cookbook_toolchain); } else if name.is_host() { command.env("COOKBOOK_TOOLCHAIN", &cookbook_sysroot); } command.env("COOKBOOK_MAKE_JOBS", cli_jobs.to_string()); if cli_verbose { command.env("COOKBOOK_VERBOSE", "1"); } if cook_config.offline { command.env("COOKBOOK_OFFLINE", "1"); } if let Ok(ident_source) = fetch::fetch_get_source_info(&cook_recipe) { command.env("COOKBOOK_SOURCE_IDENT", ident_source.source_identifier); command.env("COOKBOOK_COMMIT_IDENT", ident_source.commit_identifier); } command }; let full_script = format!( "{}\n{}\n{}\n{}", BUILD_PRESCRIPT, SHARED_PRESCRIPT, script, BUILD_POSTSCRIPT ); run_command_stdin(command, full_script.as_bytes(), logger)?; // Move to each features dir let mut globs = Vec::new(); for (i, feat) in recipe.optional_packages.iter().enumerate() { let stage_dir = &stage_dirs[i]; create_dir_clean(&stage_dir)?; for path in &feat.files { let glob = globset::Glob::new(&path).map_err(|e| format!("{}", e))?; globs.push((glob.compile_matcher(), stage_dir.clone())); } } move_dir_all_fn( &stage_dir_tmp, &Box::new(|path: PathBuf| { for (glob, dst) in &globs { if glob.is_match(&path) { return Some(dst.as_path()); } } None }), ) .map_err(|e| format!("Unable to move {e:?}"))?; // Move stage.tmp to stage atomically rename(&stage_dir_tmp, &stage_dir)?; } if cook_config.clean_target { remove_all(&build_dir)?; remove_all(&sysroot_dir)?; if toolchain_dir.is_dir() { remove_all(&toolchain_dir)?; } // don't remove stage dir yet } let auto_deps = make_auto_deps!()?; Ok(BuildResult::new(stage_dirs, auto_deps)) } pub fn remove_stage_dir(stage_dir: &PathBuf) -> Result<(), String> { if stage_dir.is_dir() { remove_all(&stage_dir)?; } let stage_file = stage_dir.with_added_extension("pkgar"); if stage_file.is_file() { remove_all(&stage_file)?; } let stage_meta = stage_dir.with_added_extension("toml"); if stage_meta.is_file() { remove_all(&stage_meta)?; } let stage_files = stage_dir.with_added_extension("files"); if stage_files.is_file() { remove_all(&stage_files)?; } Ok(()) } pub fn get_stage_dirs(features: &Vec, target_dir: &Path) -> Vec { let mut target_dir = target_dir.to_path_buf(); if let Some(cross_target) = std::env::var("COOKBOOK_CROSS_TARGET").ok() { if cross_target != "" { // TODO: automatically pass COOKBOOK_CROSS_GNU_TARGET? target_dir = target_dir.join(cross_target) } } let mut v = Vec::new(); for f in features { v.push(target_dir.join(format!("stage.{}", f.name))); } // intentionally added last as it contains leftover files from package features v.push(target_dir.join("stage")); v } pub fn get_build_dir(target_dir: &Path) -> PathBuf { let mut target_dir = target_dir.to_path_buf(); if let Some(cross_target) = std::env::var("COOKBOOK_CROSS_TARGET").ok() { if cross_target != "" { // TODO: automatically pass COOKBOOK_CROSS_GNU_TARGET? target_dir = target_dir.join(cross_target) } } target_dir.join("build") } fn build_deps_dir( logger: &PtyOut, deps_dir: &PathBuf, deps_dir_tmp: PathBuf, dep_pkgars: &BTreeSet<(PackageName, PathBuf)>, source_modified: SystemTime, deps_modified: SystemTime, ) -> Result { if deps_dir.is_dir() { let tags_dir = deps_dir.join(".tags"); let sysroot_modified = modified_dir(&tags_dir).unwrap_or(SystemTime::UNIX_EPOCH); if sysroot_modified < source_modified || sysroot_modified < deps_modified || !check_files_present( &tags_dir, &dep_pkgars .iter() .map(|(name, _)| name.without_prefix()) .collect(), )? { log_to_pty!(logger, "DEBUG: updating '{}'", deps_dir.display()); remove_all(deps_dir)?; } } if !deps_dir.is_dir() { // Create sysroot.tmp create_dir_clean(&deps_dir_tmp)?; let tags_dir = deps_dir_tmp.join(".tags"); let usr_dir = deps_dir_tmp.join("usr"); create_dir(&tags_dir)?; create_dir(&usr_dir)?; for folder in &["bin", "include", "lib", "share"] { // Make sure sysroot/usr/$folder exists create_dir(&usr_dir.join(folder))?; // Link sysroot/$folder sysroot/usr/$folder symlink(Path::new("usr").join(folder), &deps_dir_tmp.join(folder))?; } let pkey_path = "build/id_ed25519.pub.toml"; for (name, archive_path) in dep_pkgars { let tag_file = tags_dir.join(name.without_prefix()); fs::write(&tag_file, "") .map_err(|e| format!("failed to write tag file {}: {:?}", tag_file.display(), e))?; pkgar::extract(pkey_path, &archive_path, deps_dir_tmp.to_str().unwrap()).map_err( |err| { format!( "failed to install '{}' in '{}': {:?}", archive_path.display(), deps_dir_tmp.display(), err ) }, )?; } // Move sysroot.tmp to sysroot atomically rename(&deps_dir_tmp, deps_dir)?; return Ok(true); } Ok(false) } /// Calculate automatic dependencies fn build_auto_deps( recipe: &Recipe, target_dir: &Path, stage_dirs: &Vec, cook_config: &CookConfig, mut dep_pkgars: BTreeSet<(PackageName, PathBuf)>, logger: &PtyOut, ) -> Result, String> { let auto_deps_path = target_dir.join("auto_deps.toml"); if auto_deps_path.is_file() && !cook_config.clean_target { if modified(&auto_deps_path)? < modified_all(stage_dirs, modified)? { if cook_config.verbose { log_to_pty!(logger, "DEBUG: updating {}", auto_deps_path.display()); } remove_all(&auto_deps_path)?; } else { if cook_config.verbose { log_to_pty!(logger, "DEBUG: Using cached auto deps"); } } } let auto_deps = if auto_deps_path.exists() { let toml_content = fs::read_to_string(&auto_deps_path).map_err(|_| "failed to read cached auto_deps")?; let wrapper: AutoDeps = toml::from_str(&toml_content).map_err(|_| "failed to deserialize cached auto_deps")?; wrapper.packages } else { let mut dynamic_deps = auto_deps_from_dynamic_linking(stage_dirs, target_dir, &dep_pkgars, logger); dep_pkgars.retain(|x| recipe.build.dependencies.contains(&x.0)); let package_deps = auto_deps_from_static_package_deps(&dep_pkgars, &dynamic_deps).unwrap_or_default(); dynamic_deps.extend(package_deps); let wrapper = AutoDeps { packages: dynamic_deps, }; serialize_and_write(&auto_deps_path, &wrapper)?; wrapper.packages }; Ok(auto_deps) } pub fn build_remote( stage_dirs: Vec, recipe: &Recipe, target_dir: &Path, cook_config: &CookConfig, ) -> Result { let source_toml = target_dir.join("source.toml"); let source_pubkey = "build/remotes/pub_key_static.redox-os.org.toml"; let packages = recipe.get_packages_list(); for (i, package) in packages.into_iter().enumerate() { // declare pkg dependencies as autodeps dependency let stage_dir = &stage_dirs[i]; if cook_config.clean_target && stage_dir.with_added_extension("pkgar").is_file() { continue; } if !stage_dir.is_dir() { let (_, source_pkgar, _) = package_source_paths(package, &target_dir); let stage_dir_tmp = target_dir.join("stage.tmp"); pkgar::extract(&source_pubkey, &source_pkgar, &stage_dir_tmp).map_err(|err| { format!( "failed to install '{}' in '{}': {:?}", source_pkgar.display(), stage_dir_tmp.display(), err ) })?; // Move stage.tmp to stage atomically rename(&stage_dir_tmp, &stage_dir)?; } } let auto_deps_path = target_dir.join("auto_deps.toml"); if auto_deps_path.is_file() && !cook_config.clean_target { if modified(&auto_deps_path)? < modified_all(&stage_dirs, modified)? { remove_all(&auto_deps_path)? } } let auto_deps = if auto_deps_path.exists() { let toml_content = fs::read_to_string(&auto_deps_path).map_err(|_| "failed to read cached auto_deps")?; let wrapper: AutoDeps = toml::from_str(&toml_content).map_err(|_| "failed to deserialize cached auto_deps")?; wrapper.packages } else { let toml_content = fs::read_to_string(&source_toml).map_err(|_| "failed to read source.toml")?; let pkg_toml: Package = toml::from_str(&toml_content).map_err(|_| "failed to deserialize source.toml")?; let wrapper = AutoDeps { packages: pkg_toml.depends.into_iter().collect(), }; serialize_and_write(&auto_deps_path, &wrapper)?; wrapper.packages }; Ok(BuildResult::new(stage_dirs, auto_deps)) } #[cfg(test)] mod tests { use std::os::unix; #[test] fn file_system_loop_no_infinite_loop() { let mut root = std::env::temp_dir(); root.push("temp_test_dir_file_system_loop_no_infinite_loop"); let _ = std::fs::remove_dir_all(&root); std::fs::create_dir_all(&root).expect("Failed to create temporary root directory"); // Hierarchy with an infinite loop let dir = root.join("loop"); unix::fs::symlink(&root, &dir).expect("Linking {dir:?} to {root:?}"); // Sanity check that we have a loop assert_eq!( root.canonicalize().unwrap(), dir.canonicalize().unwrap(), "Expected a loop where {dir:?} points to {root:?}" ); let entries = super::auto_deps_from_dynamic_linking( &vec![root.clone()], &root.join(".."), &Default::default(), &None, ); assert!( entries.is_empty(), "auto_deps shouldn't have yielded any libraries" ); } } ================================================ FILE: src/cook/fetch.rs ================================================ use crate::config::translate_mirror; use crate::cook::fetch_repo; use crate::cook::fetch_repo::PlainPtyCallback; use crate::cook::fs::*; use crate::cook::package::get_package_name; use crate::cook::package::package_source_paths; use crate::cook::pty::PtyOut; use crate::cook::script::*; use crate::is_redox; use crate::log_to_pty; use crate::recipe::BuildKind; use crate::recipe::CookRecipe; use crate::{blake3, recipe::SourceRecipe}; use pkg::SourceIdentifier; use pkg::net_backend::DownloadBackendWriter; use std::cell::RefCell; use std::fs; use std::fs::File; use std::io::Read; use std::path::{Path, PathBuf}; use std::process::Command; use std::rc::Rc; pub(crate) fn get_blake3(path: &PathBuf, show_progress: bool) -> Result { if show_progress { blake3::blake3_progress(&path) } else { blake3::blake3_silent(&path) } .map_err(|err| { format!( "failed to calculate blake3 of '{}': {}\n{:?}", path.display(), err, err ) }) } pub fn fetch_offline(recipe: &CookRecipe, logger: &PtyOut) -> Result { let recipe_dir = &recipe.dir; let source_dir = recipe_dir.join("source"); match recipe.recipe.build.kind { BuildKind::None => { // the build function doesn't need source dir exists fetch_apply_source_info(recipe, "".to_string())?; return Ok(source_dir); } BuildKind::Remote => { fetch_remote(recipe_dir, recipe, true, logger)?; return Ok(source_dir); } _ => {} } let ident = match &recipe.recipe.source { Some(SourceRecipe::Path { path: _ }) | None => { fetch(recipe, true, logger)?; "local_source".to_string() } Some(SourceRecipe::SameAs { same_as }) => { let recipe = fetch_resolve_canon(recipe_dir, &same_as, recipe.name.is_host())?; // recursively fetch fetch_offline(&recipe, logger)?; fetch_make_symlink(&source_dir, &same_as)?; fetch_get_source_info(&recipe)?.source_identifier } Some(SourceRecipe::Git { git: _, upstream: _, branch: _, rev: _, patches: _, script: _, shallow_clone: _, }) => { offline_check_exists(&source_dir)?; let (head_rev, _) = get_git_head_rev(&source_dir)?; head_rev } Some(SourceRecipe::Tar { tar: _, blake3, patches, script, }) => { if !source_dir.is_dir() { let source_tar = recipe_dir.join("source.tar"); let source_tar_blake3 = get_blake3(&source_tar, true && logger.is_none())?; if source_tar.exists() { if let Some(blake3) = blake3 { if source_tar_blake3 != *blake3 { return Err(format!( "The downloaded tar blake3 '{source_tar_blake3}' is not equal to blake3 in recipe.toml." )); } create_dir(&source_dir)?; fetch_extract_tar(source_tar, &source_dir, logger)?; fetch_apply_patches(recipe_dir, patches, script, &source_dir, logger)?; } else { // need to trust this tar file return Err(format!( "Please add blake3 = \"{source_tar_blake3}\" to '{recipe}'", recipe = recipe_dir.join("recipe.toml").display(), )); } } else { offline_check_exists(&source_dir)?; } } blake3.clone().unwrap_or("no_tar_blake3_hash_info".into()) } }; fetch_apply_source_info(recipe, ident)?; Ok(source_dir) } pub fn fetch(recipe: &CookRecipe, check_source: bool, logger: &PtyOut) -> Result { let recipe_dir = &recipe.dir; let source_dir = recipe_dir.join("source"); match recipe.recipe.build.kind { BuildKind::None => { // the build function doesn't need source dir exists fetch_apply_source_info(recipe, "".to_string())?; return Ok(source_dir); } BuildKind::Remote => { fetch_remote(recipe_dir, recipe, false, logger)?; return Ok(source_dir); } _ => {} } let ident = match &recipe.recipe.source { Some(SourceRecipe::SameAs { same_as }) => { let recipe = fetch_resolve_canon(recipe_dir, &same_as, recipe.name.is_host())?; // recursively fetch fetch(&recipe, check_source, logger)?; fetch_make_symlink(&source_dir, &same_as)?; fetch_get_source_info(&recipe)?.source_identifier } Some(SourceRecipe::Path { path }) => { if !source_dir.is_dir() || modified_dir(Path::new(&path))? > modified_dir(&source_dir)? { log_to_pty!( logger, "[DEBUG]: {} is newer than {}", path, source_dir.display() ); copy_dir_all(path, &source_dir).map_err(|e| { format!( "Couldn't copy source from {} to {}: {}", path, source_dir.display(), e ) })?; } "local_source".to_string() } Some(SourceRecipe::Git { git, upstream, branch, rev, patches, script, shallow_clone, }) => { //TODO: use libgit? let shallow_clone = *shallow_clone == Some(true); let can_skip_rebuild = if !source_dir.is_dir() { // Create source.tmp let source_dir_tmp = recipe_dir.join("source.tmp"); create_dir_clean(&source_dir_tmp)?; // Clone the repository to source.tmp let mut command = Command::new("git"); command .arg("clone") .arg("--recursive") .arg(translate_mirror(&git)); if let Some(branch) = branch { command.arg("--branch").arg(branch); } if shallow_clone { command .arg("--filter=tree:0") .arg("--also-filter-submodules"); } command.arg(&source_dir_tmp); run_command(command, logger)?; // Move source.tmp to source atomically rename(&source_dir_tmp, &source_dir)?; false } else if !check_source { true } else { if !source_dir.join(".git").is_dir() { return Err(format!( "'{}' is not a git repository, but recipe indicated git source", source_dir.display(), )); } // Reset origin let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command.arg("remote").arg("set-url").arg("origin").arg(git); run_command(command, logger)?; // Fetch origin let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command.arg("fetch").arg("origin"); run_command(command, logger)?; let (head_rev, detached_rev) = get_git_head_rev(&source_dir)?; if detached_rev { if let Some(rev) = rev && let Ok(exp_rev) = get_git_tag_rev(&source_dir, &rev) { exp_rev == head_rev } else { false } } else { let (_, remote_branch, remote_name, remote_url) = get_git_remote_tracking(&source_dir)?; // TODO: how to get default branch and compare it here? if let Some(branch) = branch && branch != &remote_branch { false } else if remote_name != "origin" { false } else if &remote_url != chop_dot_git(git) { false } else { match get_git_fetch_rev(&source_dir, &remote_url, &remote_branch) { Ok(fetch_rev) => fetch_rev == head_rev, Err(e) => { log_to_pty!(logger, "{}", e); false } } } } }; if !can_skip_rebuild { if let Some(_upstream) = upstream { //TODO: set upstream URL (is this needed?) // git remote set-url upstream "$GIT_UPSTREAM" &> /dev/null || // git remote add upstream "$GIT_UPSTREAM" // git fetch upstream } if !patches.is_empty() || script.is_some() { // Hard reset let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command.arg("reset").arg("--hard"); run_command(command, logger)?; } if let Some(rev) = rev { // Check out specified revision let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command.arg("checkout").arg(rev); run_command(command, logger)?; } else if !is_redox() { //TODO: complicated stuff to check and reset branch to origin //TODO: redox can't undestand this (got exit status 1) let mut command = Command::new("bash"); command.arg("-c").arg(GIT_RESET_BRANCH); if let Some(branch) = branch { command.env("BRANCH", branch); } command.current_dir(&source_dir); run_command(command, logger)?; } // Sync submodules URL let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command.arg("submodule").arg("sync").arg("--recursive"); run_command(command, logger)?; // Update submodules let mut command = Command::new("git"); command.arg("-C").arg(&source_dir); command .arg("submodule") .arg("update") .arg("--init") .arg("--recursive"); if shallow_clone { command.arg("--filter=tree:0"); } run_command(command, logger)?; fetch_apply_patches(recipe_dir, patches, script, &source_dir, logger)?; } let (head_rev, _) = get_git_head_rev(&source_dir)?; head_rev } Some(SourceRecipe::Tar { tar, blake3, patches, script, }) => { let source_tar = recipe_dir.join("source.tar"); let mut tar_updated = false; loop { if !source_tar.is_file() { tar_updated = true; download_wget(&tar, &source_tar, logger)?; } if !check_source { break; } let source_tar_blake3 = get_blake3(&source_tar, tar_updated && logger.is_none())?; if let Some(blake3) = blake3 { if source_tar_blake3 == *blake3 { break; } if tar_updated { return Err(format!( "The downloaded tar blake3 '{source_tar_blake3}' is not equal to blake3 in recipe.toml" )); } else { log_to_pty!( logger, "DEBUG: source tar blake3 is different and need redownload" ); remove_all(&source_tar)?; } } else { //TODO: set blake3 hash on the recipe with something like "cook fix" log_to_pty!( logger, "WARNING: set blake3 for '{}' to '{}'", source_tar.display(), source_tar_blake3 ); break; } } if source_dir.is_dir() { if tar_updated || fetch_is_patches_newer(recipe_dir, patches, &source_dir)? { log_to_pty!( logger, "DEBUG: source tar or patches is newer than the source directory" ); remove_all(&source_dir)? } } if !source_dir.is_dir() { // Create source.tmp let source_dir_tmp = recipe_dir.join("source.tmp"); create_dir_clean(&source_dir_tmp)?; fetch_extract_tar(source_tar, &source_dir_tmp, logger)?; fetch_apply_patches(recipe_dir, patches, script, &source_dir_tmp, logger)?; // Move source.tmp to source atomically rename(&source_dir_tmp, &source_dir)?; } blake3.clone().unwrap_or("no_tar_blake3_hash_info".into()) } // Local Sources None => { if !source_dir.is_dir() { log_to_pty!( logger, "WARNING: Recipe without source section expected source dir at '{}'", source_dir.display(), ); create_dir(&source_dir)?; } "local_source".into() } }; if let BuildKind::Cargo { cargopath, cargoflags: _, cargopackages: _, cargoexamples: _, } = &recipe.recipe.build.kind { // TODO: No need to fetch if !check_source and already fetched? fetch_cargo(&source_dir, cargopath.as_ref(), logger)?; } fetch_apply_source_info(recipe, ident)?; Ok(source_dir) } pub(crate) fn fetch_make_symlink(source_dir: &PathBuf, same_as: &String) -> Result<(), String> { let target_dir = Path::new(same_as).join("source"); if !source_dir.is_symlink() { if source_dir.is_dir() { return Err(format!( "'{dir}' is a directory, but recipe indicated a symlink. \n\ try removing '{dir}' if you haven't made any changes that would be lost", dir = source_dir.display(), )); } std::os::unix::fs::symlink(&target_dir, source_dir).map_err(|err| { format!( "failed to symlink '{}' to '{}': {}\n{:?}", target_dir.display(), source_dir.display(), err, err ) })?; } Ok(()) } pub(crate) fn fetch_resolve_canon( recipe_dir: &Path, same_as: &String, is_host: bool, ) -> Result { let canon_dir = Path::new(recipe_dir).join(same_as); if canon_dir .to_str() .unwrap() .chars() .filter(|c| *c == '/') .count() > 50 { return Err(format!("Infinite loop detected")); } if !canon_dir.exists() { return Err(format!("'{dir}' is not exists.", dir = canon_dir.display())); } CookRecipe::from_path(canon_dir.as_path(), true, is_host) .map_err(|e| format!("Unable to load {dir}: {e:?}", dir = canon_dir.display())) } pub(crate) fn fetch_extract_tar( source_tar: PathBuf, source_dir_tmp: &PathBuf, logger: &PtyOut, ) -> Result<(), String> { let mut command = Command::new("tar"); let verbose = crate::config::get_config().cook.verbose; if is_redox() { command.arg(if verbose { "xvf" } else { "xf" }); } else { command.arg("--extract"); command.arg("--no-same-owner"); if verbose { command.arg("--verbose"); } command.arg("--file"); } command.arg(&source_tar); command.arg("--directory").arg(source_dir_tmp); command.arg("--strip-components").arg("1"); run_command(command, logger)?; Ok(()) } pub(crate) fn fetch_cargo( source_dir: &PathBuf, cargopath: Option<&String>, logger: &PtyOut, ) -> Result<(), String> { let mut source_dir = source_dir.clone(); if let Some(cargopath) = cargopath { source_dir = source_dir.join(cargopath); } let local_redoxer = Path::new("target/release/cookbook_redoxer"); let mut command = if is_redox() && !local_redoxer.is_file() { Command::new("cookbook_redoxer") } else { let cookbook_redoxer = local_redoxer .canonicalize() .unwrap_or(PathBuf::from("cargo")); Command::new(&cookbook_redoxer) }; command.arg("fetch"); command.arg("--manifest-path"); command.arg(source_dir.join("Cargo.toml").into_os_string()); run_command(command, logger)?; Ok(()) } pub fn fetch_remote( recipe_dir: &Path, recipe: &CookRecipe, offline_mode: bool, logger: &PtyOut, ) -> Result<(), String> { let (mut manager, repository) = fetch_repo::get_binary_repo(); let target_dir = create_target_dir(recipe_dir, recipe.target)?; if logger.is_some() { let writer = logger.as_ref().unwrap().1.try_clone().unwrap(); manager.set_callback(Rc::new(RefCell::new(PlainPtyCallback::new(writer)))); } let packages = recipe.recipe.get_packages_list(); let name = recipe_dir .file_name() .ok_or("Unable to get recipe name")? .to_str() .unwrap(); for package in packages { let (_, source_pkgar, source_toml) = package_source_paths(package, &target_dir); let source_name = get_package_name(name, package); let Some(repo_blake3) = repository.packages.get(&source_name) else { return Err(format!( "Package {source_name} does not exist in server repository" )); }; if !offline_mode { if source_toml.is_file() { let pkg_toml = read_source_toml(&source_toml)?; if &pkg_toml.blake3 != repo_blake3 { log_to_pty!(logger, "DEBUG: Updating source binaries"); remove_all(&source_toml)?; if source_pkgar.is_file() { remove_all(&source_pkgar)?; } } } if !source_toml.is_file() { { let toml_file = File::create(&source_toml) .map_err(|e| format!("Unable to create source.toml: {e:?}"))?; let mut writer = DownloadBackendWriter::ToFile(toml_file); manager .download(&format!("{}.toml", &source_name), None, &mut writer) .map_err(|e| format!("Unable to download source.toml: {e:?}"))?; } let pkg_toml = read_source_toml(&source_toml)?; let pkgar_file = File::create(&source_pkgar) .map_err(|e| format!("Unable to create source.pkgar: {e:?}"))?; let mut writer = DownloadBackendWriter::ToFile(pkgar_file); manager .download( &format!("{}.pkgar", &source_name), Some(pkg_toml.network_size), &mut writer, ) .map_err(|e| format!("Unable to download source.pkgar: {e:?}"))?; } // manager.download(file, 0, dest) } else { offline_check_exists(&source_pkgar)?; offline_check_exists(&source_toml)?; } // guaranteed to exist once if package.is_none() { let pkg_toml = read_source_toml(&source_toml)?; fetch_apply_source_info_from_remote( recipe, &SourceIdentifier { commit_identifier: pkg_toml.commit_identifier.clone(), source_identifier: pkg_toml.source_identifier.clone(), time_identifier: pkg_toml.time_identifier.clone(), ..Default::default() }, )?; } } Ok(()) } fn read_source_toml(source_toml: &Path) -> Result { let mut file = File::open(source_toml).map_err(|e| format!("Unable to open source.toml: {e:?}"))?; let mut contents = String::new(); file.read_to_string(&mut contents) .map_err(|e| format!("Unable to read source.toml: {e:?}"))?; let pkg_toml = pkg::Package::from_toml(&contents) .map_err(|e| format!("Unable to parse source.toml: {e:?}"))?; Ok(pkg_toml) } pub(crate) fn fetch_is_patches_newer( recipe_dir: &Path, patches: &Vec, source_dir: &PathBuf, ) -> Result { // don't check source files inside as it can be mixed with user patches let source_time = modified(&source_dir)?; for patch_name in patches { let patch_file = recipe_dir.join(patch_name); if !patch_file.is_file() { return Err(format!( "failed to find patch file '{}'", patch_file.display() )); } let patch_time = modified(&patch_file)?; if patch_time > source_time { return Ok(true); } } return Ok(false); } pub(crate) fn fetch_apply_patches( recipe_dir: &Path, patches: &Vec, script: &Option, source_dir_tmp: &PathBuf, logger: &PtyOut, ) -> Result<(), String> { for patch_name in patches { let patch_file = recipe_dir.join(patch_name); if !patch_file.is_file() { return Err(format!( "failed to find patch file '{}'", patch_file.display() )); } let patch = fs::read_to_string(&patch_file).map_err(|err| { format!( "failed to read patch file '{}': {}\n{:#?}", patch_file.display(), err, err ) })?; let mut command = Command::new("patch"); command.arg("--directory").arg(source_dir_tmp); command.arg("--strip=1"); run_command_stdin(command, patch.as_bytes(), logger)?; } Ok(if let Some(script) = script { let mut command = Command::new("bash"); command.arg("-ex"); command.current_dir(source_dir_tmp); run_command_stdin( command, format!("{SHARED_PRESCRIPT}\n{script}").as_bytes(), logger, )?; }) } pub(crate) fn fetch_apply_source_info( recipe: &CookRecipe, source_identifier: String, ) -> Result<(), String> { let ident = crate::cook::ident::get_ident(); let info = SourceIdentifier { commit_identifier: ident.commit.to_string(), time_identifier: ident.time.to_string(), source_identifier: source_identifier, }; fetch_apply_source_info_from_remote(&recipe, &info) } pub(crate) fn fetch_apply_source_info_from_remote( recipe: &CookRecipe, info: &SourceIdentifier, ) -> Result<(), String> { let target_dir = create_target_dir(&recipe.dir, recipe.target)?; let source_toml_path = target_dir.join("source_info.toml"); serialize_and_write(&source_toml_path, &info)?; Ok(()) } pub fn fetch_get_source_info(recipe: &CookRecipe) -> Result { let target_dir = recipe.target_dir(); let source_toml_path = target_dir.join("source_info.toml"); let toml_content = fs::read_to_string(source_toml_path) .map_err(|e| format!("Unable to read source_info.toml: {:?}", e))?; let parsed = toml::from_str(&toml_content) .map_err(|e| format!("Unable to parse source_info.toml: {:?}", e))?; Ok(parsed) } ================================================ FILE: src/cook/fetch_repo.rs ================================================ use std::{ cell::RefCell, io::{PipeWriter, Write}, path::{Path, PathBuf}, rc::Rc, time::Duration, }; use pkg::{ PackageName, RemotePackage, RepoManager, Repository, callback::{Callback, SilentCallback}, net_backend::{CurlBackend, DownloadBackend}, }; // TODO: This is a workaround, but as long as whole // fetch operation is in single thread, this is ok thread_local! { static BINARY_REPO: RefCell> = RefCell::new(None); } fn load_cached_repo(path: &Path) -> Option { let metadata = std::fs::metadata(path).ok()?; if !crate::config::get_config().cook.offline { let yesterday = std::time::SystemTime::now().checked_sub(Duration::from_secs(24 * 3600))?; if metadata.modified().ok()? < yesterday { // stale cache let _ = std::fs::remove_file(path); return None; } } let toml_str = std::fs::read_to_string(path).ok()?; Repository::from_toml(&toml_str).ok() } fn init_binary_repo() -> (RepoManager, Repository) { let callback = Rc::new(RefCell::new(SilentCallback::new())); let download_backend = CurlBackend::new().expect("Curl not found"); let mut repo = RepoManager::new(callback, Box::new(download_backend)); repo.add_remote(crate::REMOTE_PKG_SOURCE, redoxer::target()) .expect("Unable to add remote"); let repo_path = PathBuf::from("build/remotes"); repo.set_download_path(repo_path.clone()); repo.sync_keys().expect("Unable to sync keys"); let repo_toml = load_cached_repo(&repo_path.join("repo.toml")).unwrap_or_else(|| { let (toml_str, _) = repo .get_package_toml(&PackageName::new("repo").unwrap()) .expect("Failed to fetch repo.toml"); Repository::from_toml(&toml_str).expect("Fetched repo.toml is invalid") }); (repo, repo_toml) } pub fn get_binary_repo() -> (RepoManager, Repository) { BINARY_REPO.with(|cell| { let mut opt = cell.borrow_mut(); if opt.is_none() { *opt = Some(init_binary_repo()); } let (repo, repo_toml) = opt.as_ref().unwrap(); ((*repo).clone(), repo_toml.clone()) }) } pub struct PlainPtyCallback { size: u64, unknown_size: bool, pos: u64, fetch_processed: usize, fetch_total: usize, interactive: bool, download_file: Option, pty: PipeWriter, } impl PlainPtyCallback { pub fn new(pty: PipeWriter) -> Self { Self { size: 0, unknown_size: false, pos: 0, fetch_processed: 0, fetch_total: 0, interactive: false, download_file: None, pty, } } /// Set if user require to agree on terminal pub fn set_interactive(&mut self, enabled: bool) { self.interactive = enabled; } fn flush(&self) { let _ = std::io::stderr().flush(); } pub fn format_size(bytes: u64) -> String { if bytes == 0 { return "0 B".to_string(); } const UNITS: [&str; 5] = ["B", "KiB", "MiB", "GiB", "TiB"]; let i = (bytes as f64).log(1024.0).floor() as usize; let size = bytes as f64 / 1024.0_f64.powi(i as i32); format!("{:.2} {}", size, UNITS[i]) } fn downloading_str(&self) -> &'static str { "Downloading" } } const RESET_LINE: &str = "\r\x1b[2K"; impl Callback for PlainPtyCallback { fn fetch_start(&mut self, initial_count: usize) { self.fetch_total = 0; self.fetch_processed = 0; self.fetch_package_increment(0, initial_count); } fn fetch_package_name(&mut self, pkg_name: &PackageName) { // resuming after fetch_package_increment let _ = write!(&self.pty, " {}", pkg_name.as_str()); self.flush(); } fn fetch_package_increment(&mut self, added_processed: usize, added_count: usize) { self.fetch_processed += added_processed; self.fetch_total += added_count; let _ = write!( &self.pty, "{RESET_LINE}Fetching: [{}/{}]", self.fetch_processed, self.fetch_total ); self.flush(); } fn fetch_end(&mut self) { if self.fetch_processed == self.fetch_total { let _ = writeln!(&self.pty, "{RESET_LINE}Fetch complete."); } else { let _ = writeln!(&self.pty, "{RESET_LINE}Fetch incomplete."); } } fn download_start(&mut self, length: u64, file: &str) { self.size = length; self.unknown_size = length == 0; self.pos = 0; if !self.unknown_size { let _ = write!(&self.pty, "{RESET_LINE}{} {file}", self.downloading_str()); self.download_file = Some(file.to_string()); self.flush(); } } fn download_increment(&mut self, downloaded: u64) { self.pos += downloaded; if self.unknown_size { self.size += downloaded; } if self.unknown_size { return; } // keep using MB for consistency let pos_mb = self.pos as f64 / 1_048_576.0; let size_mb = self.size as f64 / 1_048_576.0; let file_name = self .download_file .as_ref() .map(|s| s.as_str()) .unwrap_or(""); let _ = write!( &self.pty, "{RESET_LINE}{} {} [{:.2} MB / {:.2} MB]", self.downloading_str(), file_name, pos_mb, size_mb ); self.flush(); } fn download_end(&mut self) { if !self.unknown_size { let _ = writeln!(&self.pty, ""); self.download_file = None; } } fn install_extract(&mut self, remote_pkg: &RemotePackage) { let _ = writeln!(&self.pty, "Extracting {}...", remote_pkg.package.name); self.flush(); } } ================================================ FILE: src/cook/fs.rs ================================================ use serde::Serialize; use std::{ collections::BTreeSet, fs, io::{self, Write}, path::{Path, PathBuf}, process::{self, Command, Stdio}, time::SystemTime, }; use walkdir::{DirEntry, WalkDir}; use crate::{ config::translate_mirror, cook::pty::{PtyOut, spawn_to_pipe}, wrap_io_err, }; //TODO: pub(crate) for all of these functions pub fn remove_all(path: &Path) -> Result<(), String> { if path.is_dir() { fs::remove_dir_all(path) } else { fs::remove_file(path) } .map_err(|err| format!("failed to remove '{}': {}\n{:?}", path.display(), err, err)) } pub fn create_dir(dir: &Path) -> Result<(), String> { fs::create_dir(dir) .map_err(|err| format!("failed to create '{}': {}\n{:?}", dir.display(), err, err)) } pub fn create_dir_clean(dir: &Path) -> Result<(), String> { if dir.is_dir() { remove_all(dir)?; } fs::create_dir_all(dir) .map_err(|err| format!("failed to create '{}': {}\n{:?}", dir.display(), err, err)) } pub fn create_target_dir(recipe_dir: &Path, target: &'static str) -> Result { let target_parent_dir = recipe_dir.join("target"); if !target_parent_dir.is_dir() { create_dir(&target_parent_dir)?; } let target_dir = target_parent_dir.join(target); if !target_dir.is_dir() { create_dir(&target_dir)?; } Ok(target_dir) } pub fn copy_dir_all(src: impl AsRef, dst: impl AsRef) -> io::Result<()> { fs::create_dir_all(&dst)?; for entry in fs::read_dir(src)? { let entry = entry?; let ty = entry.file_type()?; if ty.is_dir() { copy_dir_all(entry.path(), dst.as_ref().join(entry.file_name()))?; } else { fs::copy(entry.path(), dst.as_ref().join(entry.file_name()))?; } } Ok(()) } pub fn move_dir_all_fn<'a>( src: impl AsRef, mv: &'a Box Option<&'a Path>>, ) -> io::Result<()> { move_dir_all_inner_fn(&src, &src, mv) } fn move_dir_all_inner_fn<'a>( src: impl AsRef, srcrel: impl AsRef, mv: &'a Box Option<&'a Path>>, ) -> io::Result<()> { let mut files = Vec::new(); for entry in fs::read_dir(&src)? { let entry = entry?; let ty = entry.file_type()?; if ty.is_dir() { move_dir_all_inner_fn(entry.path(), srcrel.as_ref(), mv)?; } else { let path: PathBuf = entry.path(); let Ok(relpath) = path.strip_prefix(&srcrel) else { continue; }; if let Some(dst) = mv(relpath.to_path_buf()) { files.push((entry.path(), relpath.to_path_buf(), dst.to_owned())); } } } for (src, srcrel, dst) in files { let path = dst.join(&srcrel); fs::create_dir_all(&path.parent().unwrap())?; std::fs::rename(&src, &path)?; } Ok(()) } pub fn symlink(original: impl AsRef, link: impl AsRef) -> Result<(), String> { std::os::unix::fs::symlink(&original, &link).map_err(|err| { format!( "failed to symlink '{}' to '{}': {}\n{:?}", original.as_ref().display(), link.as_ref().display(), err, err ) }) } pub fn modified(path: &Path) -> Result { let metadata = fs::metadata(path).map_err(|err| { format!( "failed to get metadata of '{}': {}\n{:#?}", path.display(), err, err ) })?; metadata.modified().map_err(|err| { format!( "failed to get modified time of '{}': {}\n{:#?}", path.display(), err, err ) }) } pub fn modified_all( path: &Vec, func: fn(path: &Path) -> Result, ) -> Result { let mut newest = SystemTime::UNIX_EPOCH; for entry_res in path { let modified = func(entry_res)?; if modified > newest { newest = modified; } } Ok(newest) } pub fn modified_dir_inner bool>( dir: &Path, filter: F, ) -> io::Result { let mut newest = fs::metadata(dir)?.modified()?; for entry_res in WalkDir::new(dir).into_iter().filter_entry(filter) { let entry = entry_res?; let modified = entry.metadata()?.modified()?; if modified > newest { newest = modified; } } Ok(newest) } pub fn modified_dir(dir: &Path) -> Result { modified_dir_inner(dir, |_| true).map_err(|err| { format!( "failed to get modified time of '{}': {}\n{:#?}", dir.display(), err, err ) }) } pub fn modified_dir_ignore_git(dir: &Path) -> Result { modified_dir_inner(dir, |entry| { entry .file_name() .to_str() .map(|s| s != ".git") .unwrap_or(true) }) .map_err(|err| { format!( "failed to get modified time of '{}': {}\n{:#?}", dir.display(), err, err ) }) } pub fn check_files_present(dir: &Path, expected_files: &BTreeSet<&str>) -> Result { let entries = fs::read_dir(dir) .map_err(|err| format!("failed to get list files of '{}': {:?}", dir.display(), err))?; let mut matches = 0; for entry_res in entries { let entry = entry_res .map_err(|err| format!("failed to get file entry of '{}': {:?}", dir.display(), err))?; let filename = entry.file_name(); let Some(filename) = filename.to_str() else { continue; }; if expected_files.contains(&filename) { matches += 1 } else if filename.starts_with('.') { continue; } else { return Ok(false); } } Ok(matches == expected_files.len()) } pub fn rename(src: &Path, dst: &Path) -> Result<(), String> { fs::rename(src, dst).map_err(|err| { format!( "failed to rename '{}' to '{}': {}\n{:?}", src.display(), dst.display(), err, err ) }) } pub fn run_command(mut command: process::Command, stdout_pipe: &PtyOut) -> Result<(), String> { let status = spawn_to_pipe(&mut command, stdout_pipe) .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))? .wait() .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))?; if !status.success() { return Err(format!( "failed to run {:?}: exited with status {}", command, status )); } Ok(()) } pub fn run_command_stdin( mut command: process::Command, stdin_data: &[u8], stdout_pipe: &PtyOut, ) -> Result<(), String> { command.stdin(Stdio::piped()); let mut child = spawn_to_pipe(&mut command, stdout_pipe) .map_err(|err| format!("failed to spawn {:?}: {}\n{:#?}", command, err, err))?; if let Some(ref mut stdin) = child.stdin { stdin.write_all(stdin_data).map_err(|err| { format!( "failed to write stdin of {:?}: {}\n{:#?}", command, err, err ) })?; } else { return Err(format!("failed to find stdin of {:?}", command)); } let status = child .wait() .map_err(|err| format!("failed to run {:?}: {}\n{:#?}", command, err, err))?; if !status.success() { return Err(format!( "failed to run {:?}: exited with status {}", command, status )); } Ok(()) } pub fn serialize_and_write(file_path: &Path, content: &T) -> Result<(), String> { let toml_content = toml::to_string(content).map_err(|err| { format!( "Failed to serialize content for '{}': {}", file_path.display(), err ) })?; fs::write(file_path, toml_content) .map_err(|err| format!("Failed to write to file '{}': {}", file_path.display(), err))?; Ok(()) } pub fn offline_check_exists(path: &PathBuf) -> Result<(), String> { if !path.exists() { return Err(format!( "'{path}' is not exist and unable to continue in offline mode", path = path.display(), ))?; } Ok(()) } pub fn download_wget(url: &str, dest: &PathBuf, logger: &PtyOut) -> Result<(), String> { if !dest.is_file() { let dest_tmp = PathBuf::from(format!("{}.tmp", dest.display())); let mut command = Command::new("wget"); command.arg(translate_mirror(url)); command.arg("--continue").arg("-O").arg(&dest_tmp); run_command(command, logger)?; rename(&dest_tmp, &dest)?; } Ok(()) } pub fn read_to_string(path: &Path) -> crate::Result { fs::read_to_string(path).map_err(wrap_io_err!(path, "Reading file to string")) } /// get commit rev and return if it's detached or not pub fn get_git_head_rev(dir: &PathBuf) -> Result<(String, bool), String> { let git_head = dir.join(".git/HEAD"); let head_str = fs::read_to_string(&git_head) .map_err(|e| format!("unable to read {path}: {e}", path = git_head.display()))?; if head_str.starts_with("ref: ") { let entry = head_str["ref: ".len()..].trim_end(); let git_ref = dir.join(".git").join(entry); let ref_str = if git_ref.is_file() { fs::read_to_string(&git_ref) .map_err(|e| format!("unable to read {path}: {e}", path = git_ref.display()))? } else { get_git_ref_entry(dir, entry)? }; Ok((ref_str.trim().to_string(), false)) } else { Ok((head_str.trim().to_string(), true)) } } /// get commit from "rev" which either a full commit hash or a tag name pub fn get_git_tag_rev(dir: &PathBuf, tag: &str) -> Result { if tag.len() == 40 && tag.chars().all(|f| f.is_ascii_hexdigit()) { return Ok(tag.to_string()); } get_git_ref_entry(dir, &format!("refs/tags/{tag}")) } pub fn get_git_ref_entry(dir: &PathBuf, entry: &str) -> Result { let git_refs = dir.join(".git/packed-refs"); let refs_str = fs::read_to_string(&git_refs) .map_err(|e| format!("unable to read {path}: {e}", path = git_refs.display()))?; for line in refs_str.lines() { if line.contains(entry) { let sha = line .split_whitespace() .next() .ok_or_else(|| "packed-refs line is malformed.".to_string())?; return Ok(sha.to_string()); } } Err(format!("Could not find a rev for {}", entry)) } /// get commit rev after fetch pub fn get_git_fetch_rev( dir: &PathBuf, remote_url: &str, remote_branch: &str, ) -> Result { let git_fetch_head = dir.join(".git/FETCH_HEAD"); let fetch_head_content = fs::read_to_string(&git_fetch_head).map_err(|e| { format!( "unable to read {path}: {e}", path = git_fetch_head.display() ) })?; let expected_comment_part = format!("branch '{}' of {}", remote_branch, remote_url); for line in fetch_head_content.lines() { if line.contains(&expected_comment_part) && !line.contains("not-for-merge") { let sha = line .split_whitespace() .next() .ok_or_else(|| "FETCH_HEAD line is malformed.".to_string())?; return Ok(sha.to_string()); } } Err(format!( "Could not find a fetch target for tracking {}", expected_comment_part )) } /// (local_branch_name, remote_branch, remote_name, remote_url) /// -> ("fix_stuff", "master", "origin", "https://gitlab.redox-os.org/willnode/redox") pub fn get_git_remote_tracking(dir: &PathBuf) -> Result<(String, String, String, String), String> { let git_head = dir.join(".git/HEAD"); let git_config = dir.join(".git/config"); let head_content = fs::read_to_string(&git_head) .map_err(|e| format!("unable to read {path}: {e}", path = git_head.display()))?; if !head_content.starts_with("ref: ") { let sha = head_content.trim_end().to_string(); return Ok((sha, "".to_string(), "".to_string(), "".to_string())); } let local_branch_path = head_content["ref: ".len()..].trim_end(); let local_branch_name = get_git_branch_name(local_branch_path)?; let config_content = fs::read_to_string(&git_config) .map_err(|e| format!("unable to read {path}: {e}", path = git_config.display()))?; let branch_section = format!("[branch \"{}\"]", local_branch_name); let mut remote_name: Option = None; let mut remote_branch: Option = None; let mut parsing_branch_section = false; for line in config_content.lines().map(|l| l.trim()) { if line.is_empty() { continue; } if line == branch_section { parsing_branch_section = true; continue; } if parsing_branch_section { if line.starts_with('[') { break; } if line.starts_with("remote = ") { remote_name = Some(line["remote = ".len()..].trim().to_string()); } if line.starts_with("merge = ") { remote_branch = Some(get_git_branch_name(line["merge = ".len()..].trim())?); } } } let remote_name_str = remote_name .ok_or_else(|| format!("Branch '{}' is not tracking a remote.", local_branch_name))?; let remote_branch_str = remote_branch.unwrap_or("".into()); let remote_section = format!("[remote \"{}\"]", remote_name_str); let mut remote_url: Option = None; let mut parsing_remote_section = false; for line in config_content.lines().map(|l| l.trim()) { if line.is_empty() { continue; } if line == remote_section { parsing_remote_section = true; continue; } if parsing_remote_section { if line.starts_with('[') { break; } if line.starts_with("url = ") { let mut url = line["url = ".len()..].trim(); url = chop_dot_git(url); remote_url = Some(url.to_string()); } } } let remote_url_str = remote_url.ok_or_else(|| { format!( "Could not find URL for remote '{}' in .git/config.", remote_name_str ) })?; Ok(( local_branch_name, remote_branch_str, remote_name_str, remote_url_str, )) } pub(crate) fn chop_dot_git(url: &str) -> &str { if url.ends_with(".git") { return &url[..url.len() - ".git".len()]; } url } fn get_git_branch_name(local_branch_path: &str) -> Result { // TODO: incorrectly handle branch with slashes Ok(local_branch_path .split('/') .last() .ok_or_else(|| format!("Failed to parse branch name of {:?}", local_branch_path))? .to_string()) } ================================================ FILE: src/cook/ident.rs ================================================ use std::{ process::{Command, Stdio}, sync::OnceLock, }; #[derive(Debug, Default)] pub struct IdentifierConfig { pub commit: String, pub time: String, } impl IdentifierConfig { fn new() -> Self { let (commit, _) = crate::cook::fs::get_git_head_rev( &std::env::current_dir().expect("unable to get $PWD"), ) .unwrap_or(("".into(), false)); // better than importing heavy deps like chrono let time = String::from_utf8_lossy( &Command::new("date") .arg("-u") .arg("+%Y-%m-%dT%H:%M:%SZ") .stdout(Stdio::piped()) .output() .expect("Failed to get current ISO-formatted time") .stdout .trim_ascii(), ) .into(); IdentifierConfig { commit, time } } } static IDENTIFIER_CONFIG: OnceLock = OnceLock::new(); pub fn get_ident() -> &'static IdentifierConfig { IDENTIFIER_CONFIG .get() .expect("Identifier is not initialized") } pub fn init_ident() { IDENTIFIER_CONFIG .set(IdentifierConfig::new()) .expect("Identifier is initialized twice") } ================================================ FILE: src/cook/package.rs ================================================ use std::{ collections::BTreeSet, path::{Path, PathBuf}, }; use pkg::{InstallState, Package, PackageName, PackagePrefix, PackageState}; use pkgar::ext::PackageSrcExt; use pkgar_core::HeaderFlags; use crate::{ blake3::hash_to_hex, config::CookConfig, cook::{cook_build::BuildResult, fetch, fs::*, pty::PtyOut}, log_to_pty, recipe::{BuildKind, CookRecipe, OptionalPackageRecipe}, }; pub fn package( recipe: &CookRecipe, build_result: &BuildResult, cook_config: &CookConfig, logger: &PtyOut, ) -> Result<(), String> { let name = &recipe.name; let target_dir = &recipe.target_dir(); let auto_deps = &build_result.auto_deps; if recipe.recipe.build.kind == BuildKind::None { // metapackages don't have stage dir and optional packages package_toml( target_dir.join("stage.toml"), recipe, None, recipe.recipe.package.dependencies.clone(), &auto_deps, )?; return Ok(()); } let secret_path = "build/id_ed25519.toml"; let public_path = "build/id_ed25519.pub.toml"; if !Path::new(secret_path).is_file() || !Path::new(public_path).is_file() { if !Path::new("build").is_dir() { create_dir(Path::new("build"))?; } let (public_key, secret_key) = pkgar_keys::SecretKeyFile::new(); public_key .save(public_path) .map_err(|err| format!("failed to save pkgar public key: {:?}", err))?; secret_key .save(secret_path) .map_err(|err| format!("failed to save pkgar secret key: {:?}", err))?; } let packages = recipe.recipe.get_packages_list(); for package in packages { let (stage_dir, package_file, package_meta) = package_stage_paths(package, target_dir); // Rebuild package if stage is newer if package_file.is_file() && !build_result.cached { log_to_pty!(logger, "DEBUG: updating '{}'", package_file.display()); remove_all(&package_file)?; if package_meta.is_file() { remove_all(&package_meta)?; } } if !package_file.is_file() { pkgar::create_with_flags( secret_path, package_file.to_str().unwrap(), stage_dir.to_str().unwrap(), HeaderFlags::latest( pkgar_core::Architecture::Independent, match cook_config.compressed { true => pkgar_core::Packaging::LZMA2, false => pkgar_core::Packaging::Uncompressed, }, ), ) .map_err(|err| format!("failed to create pkgar archive: {:?}", err))?; } let deps = if package.is_some() { BTreeSet::from([name.with_prefix(PackagePrefix::Any)]) } else { auto_deps.clone() }; if !package_meta.is_file() { let name = match package { Some(p) => PackageName::new(format!("{}.{}", name.name(), p.name)) .map_err(|e| format!("{}", e))?, None => name.clone(), }; let package_deps = match package { Some(p) => p .dependencies .iter() .map(|dep| { if dep.name().is_empty() { name.with_suffix(dep.suffix()) } else { dep.clone() } }) .collect(), None => recipe.recipe.package.dependencies.clone(), }; package_toml( package_meta, recipe, Some((Path::new(public_path), &package_file)), package_deps, &deps, )?; } } Ok(()) } pub fn package_toml( toml_path: PathBuf, recipe: &CookRecipe, package_file: Option<(&Path, &PathBuf)>, mut package_deps: Vec, auto_deps: &BTreeSet, ) -> Result<(), String> { for dep in auto_deps.iter() { if !package_deps.contains(dep) { package_deps.push(dep.clone()); } } let (hash, network_size, storage_size) = if let Some((pkey_path, archive_path)) = package_file { use pkgar_core::PackageSrc; let pkey = pkgar_keys::PublicKeyFile::open(pkey_path) .map_err(|e| format!("Unable to read public key: {e:?}"))? .pkey; let mut package = pkgar::PackageFile::new(archive_path, &pkey).map_err(|e| { format!( "Unable to read packaged pkgar file {}: {e:?}", archive_path.display(), ) })?; let mt = std::fs::metadata(archive_path).map_err(|e| { format!( "Unable to read packaged pkgar file {}: {e:?}", archive_path.display(), ) })?; let package_size = mt.len(); let storage_size = match package.header().flags.packaging() { pkgar_core::Packaging::LZMA2 => { let mut size = 0; let entries = package .read_entries() .map_err(|e| format!("Unable to get lzma entry: {e}"))?; for entry in entries { let data_reader = package .data_reader(&entry) .map_err(|e| format!("Unable to read lzma entry: {e}"))?; size += data_reader.unpacked_size; package .restore_reader(data_reader.into_inner()) .map_err(|e| format!("Unable to put lzma entry: {e}"))?; } size } _ => package_size, }; ( hash_to_hex(package.header().blake3), package_size, storage_size, ) } else { ("".into(), 0, 0) }; let ident_source = fetch::fetch_get_source_info(recipe)?; let package = Package { name: recipe.name.with_prefix(PackagePrefix::Any), version: recipe.guess_version().unwrap_or("TODO".into()), target: recipe.target.to_string(), blake3: hash, network_size, storage_size, depends: package_deps, commit_identifier: ident_source.commit_identifier, source_identifier: ident_source.source_identifier, time_identifier: ident_source.time_identifier, ..Default::default() }; serialize_and_write(&toml_path, &package)?; return Ok(()); } pub fn package_target(name: &PackageName) -> &'static str { if name.is_host() { redoxer::host_target() } else { redoxer::target() } } pub fn package_stage_paths( package: Option<&OptionalPackageRecipe>, target_dir: &Path, ) -> (PathBuf, PathBuf, PathBuf) { let mut target_dir = target_dir.to_path_buf(); if let Some(cross_target) = std::env::var("COOKBOOK_CROSS_TARGET").ok() { if cross_target != "" { // TODO: automatically pass COOKBOOK_CROSS_GNU_TARGET? target_dir = target_dir.join(cross_target) } } package_name_paths(package, &target_dir, "stage") } pub fn package_source_paths( package: Option<&OptionalPackageRecipe>, target_dir: &Path, ) -> (PathBuf, PathBuf, PathBuf) { package_name_paths(package, target_dir, "source") } fn package_name_paths( package: Option<&OptionalPackageRecipe>, target_dir: &Path, name: &str, ) -> (PathBuf, PathBuf, PathBuf) { let prefix_name = get_package_name(name, package); let package_stage = target_dir.join(&prefix_name); let package_file = package_stage.with_added_extension("pkgar"); let package_meta = package_stage.with_added_extension("toml"); (package_stage, package_file, package_meta) } pub fn get_package_name(name: &str, package: Option<&OptionalPackageRecipe>) -> String { get_package_name_inner(name, package.map(|p| p.name.as_str())) } fn get_package_name_inner(name: &str, package: Option<&str>) -> String { let mut prefix_name = name.to_string(); if let Some(package) = package { prefix_name.push('.'); prefix_name.push_str(package); } prefix_name } pub fn package_handle_push( state: &mut PackageState, archive_path: &Path, sysroot_dir: &Path, reinstall: bool, ) -> crate::Result { let archive_toml = archive_path.with_extension("toml"); let pkey_path = "build/id_ed25519.pub.toml"; let pkg_toml = Package::from_file(&archive_toml)?; match state.installed.get(&pkg_toml.name) { Some(s) if !reinstall && pkg_toml.blake3 == s.blake3 => Ok(true), Some(s) => { // "local" is what remote name from installer is hardcoded into let remote_name = "local".to_string(); let install_state = InstallState::from_package(&pkg_toml, remote_name, s.manual, s.dependents.clone()); // TODO: use pkgar::replace unless forced reinstall pkgar::extract(pkey_path, &archive_path, sysroot_dir)?; state.installed.insert(pkg_toml.name.clone(), install_state); Ok(false) } None => { // "local" is what remote name from installer is hardcoded into let remote_name = "local".to_string(); // TODO: Handle manual & depedents let install_state = InstallState::from_package(&pkg_toml, remote_name, true, BTreeSet::new()); pkgar::extract(pkey_path, &archive_path, sysroot_dir)?; // TODO: Inject dependencies // TODO: Check if we need to inject remote key state.installed.insert(pkg_toml.name.clone(), install_state); Ok(false) } } } ================================================ FILE: src/cook/pty.rs ================================================ use anyhow::{Error, bail}; use libc::{self, winsize}; use std::fs::File; use std::io::{Read, Write}; use std::os::fd::FromRawFd; use std::os::unix::io::AsRawFd; use std::os::unix::process::CommandExt; use std::process::Child; use std::time::Duration; use std::{io, mem, ptr}; use std::{ io::{PipeReader, PipeWriter}, process::Command, }; pub use std::os::unix::io::RawFd; #[macro_export] macro_rules! log_to_pty { ($logger:expr, $($arg:tt)+) => { if $logger.is_some() { use std::io::Write; let mut logfd = $logger.as_ref().unwrap().1.try_clone().unwrap(); let _ = logfd.write(format!($($arg)+).as_bytes()); let _ = logfd.write(&[b'\n']); } else { eprintln!($($arg)+); } }; } pub type PtyOut<'a> = Option<(&'a mut UnixSlavePty, &'a mut PipeWriter)>; pub fn setup_pty() -> ( Box, PipeReader, (UnixSlavePty, std::io::PipeWriter), ) { let pty_system = UnixPtySystem::default(); let pair = pty_system .openpty(PtySize { rows: 24, // Standard terminal size cols: 80, // Standard terminal size ..Default::default() }) .expect("Unable to open pty"); // TODO: There's no way to handle stdin let pty_reader = pair .master .try_clone_reader() .expect("Unable to clone pty reader"); let (log_reader, log_writer) = std::io::pipe().expect("Failed to create log pipe"); let pipes = (pair.slave, log_writer); (pty_reader, log_reader, pipes) } pub fn flush_pty(logger: &mut PtyOut) { let Some((pty, file)) = logger else { return; }; // Not sure if flush actually working let _ = pty.flush(); std::thread::sleep(Duration::from_millis(10)); let _ = file.flush(); } pub fn spawn_to_pipe(command: &mut Command, stdout_pipe: &PtyOut) -> Result { match stdout_pipe { Some(stdout) => stdout.0.spawn_command(command.into()), None => Ok(command.spawn()?), } } // // based on portable-pty crate // copied here since it isn't flexible enough // #[derive(Default)] pub struct UnixPtySystem {} /// Represents the size of the visible display area in the pty #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct PtySize { /// The number of lines of text pub rows: u16, /// The number of columns of text pub cols: u16, /// The width of a cell in pixels. Note that some systems never /// fill this value and ignore it. pub pixel_width: u16, /// The height of a cell in pixels. Note that some systems never /// fill this value and ignore it. pub pixel_height: u16, } impl Default for PtySize { fn default() -> Self { PtySize { rows: 24, cols: 80, pixel_width: 0, pixel_height: 0, } } } fn openpty(size: PtySize) -> anyhow::Result<(UnixMasterPty, UnixSlavePty)> { let mut master: RawFd = -1; let mut slave: RawFd = -1; let mut size = winsize { ws_row: size.rows, ws_col: size.cols, ws_xpixel: size.pixel_width, ws_ypixel: size.pixel_height, }; let result = unsafe { // BSDish systems may require mut pointers to some args #[allow(clippy::unnecessary_mut_passed)] libc::openpty( &mut master, &mut slave, ptr::null_mut(), ptr::null_mut(), &mut size, ) }; if result != 0 { bail!("failed to openpty: {:?}", io::Error::last_os_error()); } let master = UnixMasterPty { fd: PtyFd(unsafe { File::from_raw_fd(master) }), }; let slave = UnixSlavePty { fd: PtyFd(unsafe { File::from_raw_fd(slave) }), }; // Ensure that these descriptors will get closed when we execute // the child process. This is done after constructing the Pty // instances so that we ensure that the Ptys get drop()'d if // the cloexec() functions fail (unlikely!). cloexec(master.fd.as_raw_fd())?; cloexec(slave.fd.as_raw_fd())?; Ok((master, slave)) } pub struct PtyPair { // slave is listed first so that it is dropped first. // The drop order is stable and specified by rust rfc 1857 pub slave: UnixSlavePty, pub master: UnixMasterPty, } impl UnixPtySystem { fn openpty(&self, size: PtySize) -> anyhow::Result { let (master, slave) = openpty(size)?; Ok(PtyPair { master: master, slave: slave, }) } } struct PtyFd(pub File); impl std::ops::Deref for PtyFd { type Target = File; fn deref(&self) -> &File { &self.0 } } impl Read for PtyFd { fn read(&mut self, buf: &mut [u8]) -> Result { match self.0.read(buf) { Err(ref e) if e.raw_os_error() == Some(libc::EIO) => { // EIO indicates that the slave pty has been closed. // Treat this as EOF so that std::io::Read::read_to_string // and similar functions gracefully terminate when they // encounter this condition Ok(0) } x => x, } } } impl PtyFd { fn resize(&self, size: PtySize) -> Result<(), Error> { let ws_size = winsize { ws_row: size.rows, ws_col: size.cols, ws_xpixel: size.pixel_width, ws_ypixel: size.pixel_height, }; if unsafe { libc::ioctl( self.0.as_raw_fd(), libc::TIOCSWINSZ as _, &ws_size as *const _, ) } != 0 { bail!( "failed to ioctl(TIOCSWINSZ): {:?}", io::Error::last_os_error() ); } Ok(()) } fn get_size(&self) -> Result { let mut size: winsize = unsafe { mem::zeroed() }; if unsafe { libc::ioctl( self.0.as_raw_fd(), libc::TIOCGWINSZ as _, &mut size as *mut _, ) } != 0 { bail!( "failed to ioctl(TIOCGWINSZ): {:?}", io::Error::last_os_error() ); } Ok(PtySize { rows: size.ws_row, cols: size.ws_col, pixel_width: size.ws_xpixel, pixel_height: size.ws_ypixel, }) } fn spawn_command(&self, cmd: &mut Command) -> anyhow::Result { unsafe { cmd // .stdin(self.as_stdio()?) .stdout(self.try_clone()?) .stderr(self.try_clone()?) .pre_exec(move || { // Clean up a few things before we exec the program // Clear out any potentially problematic signal // dispositions that we might have inherited for signo in &[ libc::SIGCHLD, libc::SIGHUP, libc::SIGINT, libc::SIGQUIT, libc::SIGTERM, libc::SIGALRM, ] { libc::signal(*signo, libc::SIG_DFL); } let empty_set: libc::sigset_t = std::mem::zeroed(); libc::sigprocmask(libc::SIG_SETMASK, &empty_set, std::ptr::null_mut()); // Establish ourselves as a session leader. if libc::setsid() == -1 { return Err(io::Error::last_os_error()); } Ok(()) }) }; let mut child = cmd.spawn()?; // Ensure that we close out the slave fds that Child retains; // they are not what we need (we need the master side to reference // them) and won't work in the usual way anyway. // In practice these are None, but it seems best to be move them // out in case the behavior of Command changes in the future. // child.stdin.take(); child.stdout.take(); child.stderr.take(); Ok(child) } fn flush(&mut self) -> std::io::Result<()> { self.0.flush() } } /// Represents the master end of a pty. /// The file descriptor will be closed when the Pty is dropped. pub struct UnixMasterPty { fd: PtyFd, } /// Represents the slave end of a pty. /// The file descriptor will be closed when the Pty is dropped. pub struct UnixSlavePty { fd: PtyFd, } /// Helper function to set the close-on-exec flag for a raw descriptor fn cloexec(fd: RawFd) -> Result<(), Error> { let flags = unsafe { libc::fcntl(fd, libc::F_GETFD) }; if flags == -1 { bail!( "fcntl to read flags failed: {:?}", io::Error::last_os_error() ); } let result = unsafe { libc::fcntl(fd, libc::F_SETFD, flags | libc::FD_CLOEXEC) }; if result == -1 { bail!( "fcntl to set CLOEXEC failed: {:?}", io::Error::last_os_error() ); } Ok(()) } impl UnixSlavePty { fn spawn_command(&self, builder: &mut Command) -> Result { Ok(self.fd.spawn_command(builder)?) } fn flush(&mut self) -> Result<(), anyhow::Error> { Ok(self.fd.flush()?) } } impl UnixMasterPty { #[allow(unused)] fn resize(&self, size: PtySize) -> Result<(), Error> { self.fd.resize(size) } #[allow(unused)] fn get_size(&self) -> Result { self.fd.get_size() } fn try_clone_reader(&self) -> Result, Error> { let fd = PtyFd(self.fd.try_clone()?); Ok(Box::new(fd)) } } ================================================ FILE: src/cook/script.rs ================================================ // Scripts here is executed using "cookbook_redoxer env" where CC, RUSTFLAGS, etc. defined. // Look up redoxer env script if you want to see how they work. pub(crate) static SHARED_PRESCRIPT: &str = r#" # Build dynamically function DYNAMIC_INIT { case "${TARGET}" in "i586-unknown-redox" | "riscv64gc-unknown-redox") [ -z "${COOKBOOK_VERBOSE}" ] || echo "WARN: ${TARGET} does not support dynamic linking." >&2 return ;; esac [ -z "${COOKBOOK_VERBOSE}" ] || echo "DEBUG: Program is being compiled dynamically." COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" --prefix="/usr" --enable-shared --disable-static ) COOKBOOK_CMAKE_FLAGS=( -DBUILD_SHARED_LIBS=True -DENABLE_SHARED=True -DENABLE_STATIC=False ) COOKBOOK_MESON_FLAGS=( --buildtype release --wrap-mode nofallback -Ddefault_library=shared -Dprefix=/usr ) # TODO: check paths for spaces export LDFLAGS="${USER_LDFLAGS}-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib -L${COOKBOOK_SYSROOT}/lib" export RUSTFLAGS="-C target-feature=-crt-static -L native=${COOKBOOK_SYSROOT}/lib -C link-arg=-Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" export COOKBOOK_DYNAMIC=1 if [ function = $(type -t reexport_flags) ]; then reexport_flags fi } COOKBOOK_AUTORECONF="autoreconf" autotools_recursive_regenerate() { for f in $(find . -name configure.ac -o -name configure.in -type f | sort); do echo "* autotools regen in '$(dirname $f)'..." ( cd "$(dirname "$f")" && "${COOKBOOK_AUTORECONF}" -fvi "$@" -I${COOKBOOK_HOST_SYSROOT}/share/aclocal ) done } # Build both dynamically and statically function DYNAMIC_STATIC_INIT { DYNAMIC_INIT if [ "${COOKBOOK_DYNAMIC}" == "1" ] then COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" --prefix="/usr" --enable-shared --enable-static ) COOKBOOK_CMAKE_FLAGS=( -DBUILD_SHARED_LIBS=True -DENABLE_SHARED=True -DENABLE_STATIC=True ) COOKBOOK_MESON_FLAGS=( --buildtype release --wrap-mode nofallback -Ddefault_library=both -Dprefix=/usr ) fi } function GNU_CONFIG_GET { wget -O "$1" "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false" } "#; pub(crate) static BUILD_PRESCRIPT: &str = r#" # Add cookbook bins to path export PATH="${COOKBOOK_ROOT}/bin:${PATH}" # Add toolchain dir to path if exists if [ ! -z "${COOKBOOK_TOOLCHAIN}" ] then export PATH="${COOKBOOK_TOOLCHAIN}/bin:${PATH}" export LD_LIBRARY_PATH="${COOKBOOK_TOOLCHAIN}/lib:${LD_LIBRARY_PATH}" fi # This puts cargo build artifacts in the build directory export CARGO_TARGET_DIR="${COOKBOOK_BUILD}/target" # This adds the sysroot includes for most C compilation #TODO: check paths for spaces! export CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }-I${COOKBOOK_SYSROOT}/include" # This adds the sysroot libraries and compiles binaries statically for most C compilation #TODO: check paths for spaces! USER_LDFLAGS="${LDFLAGS:+$LDFLAGS }" export LDFLAGS="${USER_LDFLAGS}-L${COOKBOOK_SYSROOT}/lib --static" # This reexport C variables into custom build script that can be consumed by cc crate function reexport_flags { target=${TARGET//-/_} export CFLAGS_${target}="${CFLAGS:+$CFLAGS }${CPPFLAGS}" export CXXFLAGS_${target}="${CXXFLAGS:+$CXXFLAGS }${CPPFLAGS}" export LDFLAGS_${target}="${LDFLAGS}" } # These ensure that pkg-config gets the right flags from the sysroot if [ "${TARGET}" != "${COOKBOOK_HOST_TARGET}" ] then export PKG_CONFIG_ALLOW_CROSS=1 export PKG_CONFIG_PATH= export PKG_CONFIG_LIBDIR="${COOKBOOK_SYSROOT}/lib/pkgconfig" export PKG_CONFIG_SYSROOT_DIR="${COOKBOOK_SYSROOT}" fi # To build the debug version of a Cargo program, add COOKBOOK_DEBUG=true, and # to not strip symbols from the final package, add COOKBOOK_NOSTRIP=true to the recipe # (or to your environment) before calling cookbook_cargo or cookbook_cargo_packages build_type=release install_flags=--no-track build_flags=--release if [ ! -z "${COOKBOOK_DEBUG}" ] then install_flags+=" --debug" build_flags= build_type=debug export CPPFLAGS="${CPPFLAGS} -g" fi if [ ! -z "${COOKBOOK_OFFLINE}" ] then build_flags+=" --offline" install_flags+=" --offline" fi reexport_flags COOKBOOK_CARGO="${COOKBOOK_REDOXER}" COOKBOOK_CARGO_FLAGS=( --locked ) # cargo template using cargo install function cookbook_cargo { "${COOKBOOK_CARGO}" install \ --path "${COOKBOOK_SOURCE}${COOKBOOK_CARGO_PATH:+/$COOKBOOK_CARGO_PATH}" \ --root "${COOKBOOK_STAGE}/usr" \ -j "${COOKBOOK_MAKE_JOBS}" ${install_flags} \ ${COOKBOOK_CARGO_FLAGS[@]} "$@" } # cargo template using cargo build (prefixed name) function cookbook_cargo_build { recipe="${recipe:-$(basename "${COOKBOOK_RECIPE}")}" bin_dir="${bin_dir:-.}" bin_flags="${bin_flags:-}" bin_name="${bin_name:-$(basename "${COOKBOOK_CARGO_PATH}")}" bin_final_name="${bin_final_name:-${recipe}_${bin_name//_/-}}" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" "${COOKBOOK_CARGO}" build \ --manifest-path "${COOKBOOK_SOURCE}${COOKBOOK_CARGO_PATH:+/$COOKBOOK_CARGO_PATH}/Cargo.toml" \ ${bin_flags} ${build_flags} -j "${COOKBOOK_MAKE_JOBS}" ${COOKBOOK_CARGO_FLAGS[@]} cp -v \ "target/${TARGET}/${build_type}/${bin_dir}/${bin_name}" \ "${COOKBOOK_STAGE}/usr/bin/${bin_final_name}" unset bin_name bin_flags bin_dir bin_final_name } # helper for installing binaries that are cargo examples function cookbook_cargo_examples { recipe="$(basename "${COOKBOOK_RECIPE}")" for example in "$@" do bin_dir="examples" bin_name="${example}" bin_flags="--example ${example}" cookbook_cargo_build done } # helper for installing binaries that are cargo packages function cookbook_cargo_packages { recipe="$(basename "${COOKBOOK_RECIPE}")" mkdir -pv "${COOKBOOK_STAGE}/usr/bin" for package in "$@" do bin_name="${package}" bin_flags="--package ${package}" bin_final_name="${package//_/-}" cookbook_cargo_build done } # configure template COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/configure" COOKBOOK_CONFIGURE_FLAGS=( --host="${GNU_TARGET}" --prefix="/usr" --disable-shared --enable-static ) COOKBOOK_MAKE="make" function cookbook_configure { "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}" "$@" "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" } COOKBOOK_CMAKE="cmake" COOKBOOK_NINJA="ninja" COOKBOOK_CMAKE_FLAGS=( -DBUILD_SHARED_LIBS=False -DENABLE_SHARED=False -DENABLE_STATIC=True ) function generate_cookbook_cmake_file { target=$1 gcc_prefix=$2 sysroot=$3 file=$4 arch=$(echo "$target" | cut -d - -f1) os=$(echo "$target" | cut -d - -f3) if [ "$os" = "linux" ]; then SYSTEM_NAME="Linux" else SYSTEM_NAME="UnixPaths" fi cat > $file <> $file echo "set(CMAKE_CXX_FLAGS \"${CFLAGS} ${CPPFLAGS}\")" >> $file fi if [ -n "${CC_WRAPPER}" ] then echo "set(CMAKE_C_COMPILER_LAUNCHER ${CC_WRAPPER})" >> $file echo "set(CMAKE_CXX_COMPILER_LAUNCHER ${CC_WRAPPER})" >> $file fi } function cookbook_cmake { generate_cookbook_cmake_file $TARGET $GNU_TARGET- "$COOKBOOK_SYSROOT" cross_file.cmake "${COOKBOOK_CMAKE}" "${COOKBOOK_SOURCE}" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CROSSCOMPILING=True \ -DCMAKE_INSTALL_INCLUDEDIR=include \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_OLDINCLUDEDIR=/include \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_SBINDIR=bin \ -DCMAKE_TOOLCHAIN_FILE=cross_file.cmake \ -GNinja \ -Wno-dev \ "${COOKBOOK_CMAKE_FLAGS[@]}" \ "$@" "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" } COOKBOOK_MESON="meson" COOKBOOK_MESON_FLAGS=( --buildtype release --wrap-mode nofallback -Ddefault_library=static -Dprefix=/usr ) function cookbook_meson { # TODO: do this in rust, to handle path spaces as well function format_flags { local flags=($1) local formatted="" for i in "${!flags[@]}"; do formatted+="'${flags[$i]}'" if [ $i -lt $((${#flags[@]} - 1)) ]; then formatted+=", " fi done echo "$formatted" } echo "[binaries]" > cross_file.txt echo "c = [$(printf "'%s', " $CC | sed 's/, $//')]" >> cross_file.txt echo "cpp = [$(printf "'%s', " $CXX | sed 's/, $//')]" >> cross_file.txt echo "ar = '${AR}'" >> cross_file.txt echo "strip = '${STRIP}'" >> cross_file.txt echo "pkg-config = '${PKG_CONFIG}'" >> cross_file.txt echo "llvm-config = '${TARGET}-llvm-config'" >> cross_file.txt echo "glib-compile-resources = 'glib-compile-resources'" >> cross_file.txt echo "glib-compile-schemas = 'glib-compile-schemas'" >> cross_file.txt echo "[host_machine]" >> cross_file.txt echo "system = '$(echo "${TARGET}" | cut -d - -f3)'" >> cross_file.txt echo "cpu_family = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt echo "cpu = '$(echo "${TARGET}" | cut -d - -f1)'" >> cross_file.txt echo "endian = 'little'" >> cross_file.txt echo "[built-in options]" >> cross_file.txt echo "prefix = '/usr'" >> cross_file.txt echo "libdir = 'lib'" >> cross_file.txt echo "bindir = 'bin'" >> cross_file.txt echo "c_args = [$(format_flags "$CFLAGS $CPPFLAGS")]" >> cross_file.txt echo "cpp_args = [$(format_flags "$CXXFLAGS $CPPFLAGS")]" >> cross_file.txt echo "c_link_args = [$(format_flags "$LDFLAGS")]" >> cross_file.txt echo "[properties]" >> cross_file.txt echo "needs_exe_wrapper = true" >> cross_file.txt echo "sys_root = '${COOKBOOK_SYSROOT}'" >> cross_file.txt unset AR AS CC CXX LD NM OBJCOPY OBJDUMP PKG_CONFIG RANLIB READELF STRIP "${COOKBOOK_MESON}" setup \ "${COOKBOOK_SOURCE}" \ . \ --cross-file cross_file.txt \ "${COOKBOOK_MESON_FLAGS[@]}" \ "$@" "${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}" DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}" } "#; pub(crate) static BUILD_POSTSCRIPT: &str = r#" # Strip binaries for dir in "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/usr/bin" "${COOKBOOK_STAGE}/libexec" "${COOKBOOK_STAGE}/usr/libexec" do if [ -d "${dir}" ] && [ -z "${COOKBOOK_NOSTRIP}" ] then find "${dir}" -type f -exec "${GNU_TARGET}-strip" -v {} ';' fi done # Remove libtool files for dir in "${COOKBOOK_STAGE}/lib" "${COOKBOOK_STAGE}/usr/lib" do if [ -d "${dir}" ] then find "${dir}" -type f -name '*.la' -exec rm -fv {} ';' fi done # Remove cargo install files for file in .crates.toml .crates2.json do if [ -f "${COOKBOOK_STAGE}/${file}" ] then rm -v "${COOKBOOK_STAGE}/${file}" fi done # Add pkgname to appstream metadata for dir in "${COOKBOOK_STAGE}/share/metainfo" "${COOKBOOK_STAGE}/usr/share/metainfo" do if [ -d "${dir}" ] then find "${dir}" -type f -name '*.xml' -exec sed -i 's||'"${COOKBOOK_NAME}"'|g' {} ';' fi done "#; pub(crate) static GIT_RESET_BRANCH: &str = r#" ORIGIN_BRANCH="$(git branch --remotes | grep '^ origin/HEAD -> ' | cut -d ' ' -f 5-)" if [ -n "$BRANCH" ] then ORIGIN_BRANCH="origin/$BRANCH" fi if [ "$(git rev-parse HEAD)" != "$(git rev-parse $ORIGIN_BRANCH)" ] then git checkout -B "$(echo "$ORIGIN_BRANCH" | cut -d / -f 2-)" "$ORIGIN_BRANCH" fi"#; pub static KILL_ALL_PID: &str = r#" THISPID=$$ CHILDREN=$(ps -o pid= --ppid $PID | grep -v $THISPID); ALL_DESCENDANTS=''; while [ -n "$CHILDREN" ]; do ALL_DESCENDANTS="$ALL_DESCENDANTS $CHILDREN"; CHILDREN=$(ps -o pid= --ppid $(echo $CHILDREN) | tr '\n' ' '); done; if [ -n "$ALL_DESCENDANTS" ]; then kill -9 $ALL_DESCENDANTS; fi "#; ================================================ FILE: src/cook/tree.rs ================================================ use anyhow::Context; use pkg::{Package, PackageName}; use std::fmt::Write as _; use std::{ collections::{HashMap, HashSet}, fs::read_to_string, path::PathBuf, }; use crate::recipe::CookRecipe; pub enum WalkTreeEntry<'a> { Built(&'a PathBuf, u64), NotBuilt, Deduped, Missing, } pub fn display_tree_entry( package_name: &PackageName, recipe_map: &HashMap<&PackageName, &CookRecipe>, prefix: &str, is_last: bool, is_build_tree: bool, visited: &mut HashSet, total_size: &mut u64, total_count: &mut u64, ) -> anyhow::Result<()> { walk_tree_entry( package_name, recipe_map, prefix, is_last, is_build_tree, visited, total_size, total_count, display_pkg_fn, ) } pub fn walk_tree_entry( package_name: &PackageName, recipe_map: &HashMap<&PackageName, &CookRecipe>, prefix: &str, is_last: bool, is_build_tree: bool, visited: &mut HashSet, total_size: &mut u64, total_count: &mut u64, op: fn(&PackageName, &str, bool, &WalkTreeEntry) -> anyhow::Result, ) -> anyhow::Result<()> { let cook_recipe = match recipe_map.get(package_name) { Some(r) => r, None => { // Data not provided, will not be processed by the build system op(package_name, prefix, is_last, &WalkTreeEntry::Missing)?; return Ok(()); } }; let (_, pkg_path, pkg_toml) = cook_recipe.stage_paths(); let deduped = visited.contains(package_name); let entry = match (std::fs::metadata(&pkg_path), deduped) { (_, true) => WalkTreeEntry::Deduped, (Ok(meta), _) => WalkTreeEntry::Built(&pkg_path, meta.len()), (Err(_), _) => WalkTreeEntry::NotBuilt, }; let cached = op(package_name, prefix, is_last, &entry)?; if deduped || cached { return Ok(()); } visited.insert(package_name.clone()); if !cached { if is_build_tree { if matches!(entry, WalkTreeEntry::NotBuilt) { *total_size += 1; } } else { if let WalkTreeEntry::Built(_p, pkg_size) = &entry { *total_size += pkg_size; } } *total_count += 1; } let pkg_meta: Package; let mut all_deps_set: HashSet<&PackageName> = HashSet::new(); if is_build_tree { all_deps_set.extend(cook_recipe.recipe.build.dependencies.iter()); all_deps_set.extend(cook_recipe.recipe.package.dependencies.iter()); } else { if let Ok(pkg_toml_str) = read_to_string(&pkg_toml) { // more accurate with auto deps pkg_meta = toml::from_str(&pkg_toml_str) .context(format!("Unable to parse {}", pkg_toml.display()))?; all_deps_set.extend(pkg_meta.depends.iter()); } } if all_deps_set.is_empty() { return Ok(()); } let sorted_deps: Vec<&PackageName> = all_deps_set.into_iter().collect(); let deps_count = sorted_deps.len(); let child_prefix = if is_last { " " } else { "│ " }; for (i, dep_name) in sorted_deps.iter().enumerate() { walk_tree_entry( dep_name, recipe_map, &format!("{}{}", prefix, child_prefix), i == deps_count - 1, is_build_tree, visited, total_size, total_count, op, )?; } Ok(()) } pub fn display_pkg_fn( package_name: &PackageName, prefix: &str, is_last: bool, entry: &WalkTreeEntry, ) -> anyhow::Result { let size_str = match entry { WalkTreeEntry::Built(_path_buf, size) => format!("[{}]", format_size(*size)), WalkTreeEntry::NotBuilt => "(not built)".to_string(), WalkTreeEntry::Deduped => "".to_string(), WalkTreeEntry::Missing => "(omitted)".to_string(), }; let line_prefix = if is_last { "└── " } else { "├── " }; println!("{}{}{} {}", prefix, line_prefix, package_name, size_str); // TODO: check dirty build by checking source ident Ok(false) } pub fn walk_file_tree(dir: &PathBuf, prefix: &str, buffer: &mut String) -> std::io::Result { if !dir.is_dir() { return Ok(0); } let fmt_err = std::io::Error::other; let entries: Vec<_> = std::fs::read_dir(dir)?.filter_map(|e| e.ok()).collect(); let mut total_size = 0; for (index, entry) in entries.iter().enumerate() { let path = entry.path(); let metadata = entry.metadata()?; let is_last = index == entries.len() - 1; let line_prefix = if is_last { "└── " } else { "├── " }; let file_name = path .file_name() .and_then(|n| n.to_str()) .unwrap_or("Unknown"); if path.is_dir() { writeln!(buffer, "{}{}{}/", prefix, line_prefix, file_name).map_err(fmt_err)?; let new_prefix = format!("{}{}", prefix, if is_last { " " } else { "│ " }); walk_file_tree(&path, &new_prefix, buffer)?; } else { let size = metadata.len(); total_size += size; writeln!( buffer, "{}{}{} ({})", prefix, line_prefix, file_name, format_size(size) ) .map_err(fmt_err)?; } } Ok(total_size) } pub fn format_size(bytes: u64) -> String { if bytes == 0 { return "0 B".to_string(); } const UNITS: [&str; 5] = ["B", "KiB", "MiB", "GiB", "TiB"]; let i = (bytes as f64).log(1024.0).floor() as usize; let size = bytes as f64 / 1024.0_f64.powi(i as i32); format!("{:.2} {}", size, UNITS[i]) } ================================================ FILE: src/cook.rs ================================================ // avoid confusion with build.rs pub mod cook_build; pub mod fetch; pub mod fetch_repo; pub mod fs; pub mod ident; pub mod package; pub mod pty; pub mod script; pub mod tree; ================================================ FILE: src/lib.rs ================================================ pub mod blake3; pub mod config; pub mod cook; pub mod recipe; pub mod web; mod progress_bar; /// Default for maximum number of levels to descend down dependencies tree. pub const WALK_DEPTH: usize = 16; /// Default remote package source, for recipes with build type = "remote" pub const REMOTE_PKG_SOURCE: &str = "https://static.redox-os.org/pkg"; pub fn is_redox() -> bool { cfg!(target_os = "redox") } // Errors use std::io; use std::path::PathBuf; #[derive(Debug)] pub enum Error { Io { source: io::Error, path: Option, context: &'static str, }, Package(pkg::PackageError), Pkgar(pkgar::Error), Other(String), } macro_rules! wrap_io_err { ($context:expr) => { |source| crate::Error::Io { source, path: None, context: $context, } }; ($path:expr, $context:expr) => { |source| crate::Error::Io { source, path: Some($path.to_path_buf()), context: $context, } }; } impl From for Error { fn from(value: String) -> Self { Error::Other(value) } } impl From for Error { fn from(value: pkg::PackageError) -> Self { Error::Package(value) } } impl From for Error { fn from(value: pkgar::Error) -> Self { match value { pkgar::Error::Io { source, path, context, } => Error::Io { source, path, context, }, _ => Error::Pkgar(value), } } } pub(crate) type Result = std::result::Result; pub(crate) use wrap_io_err; ================================================ FILE: src/progress_bar.rs ================================================ pub use pbr::ProgressBar; use std::io::{Read, Result, Write}; pub struct ProgressBarRead<'p, 'r, P: Write + 'p, R: Read + 'r> { pb: &'p mut ProgressBar

, r: &'r mut R, } impl<'p, 'r, P: Write, R: Read> ProgressBarRead<'p, 'r, P, R> { pub fn new(pb: &'p mut ProgressBar

, r: &'r mut R) -> ProgressBarRead<'p, 'r, P, R> { ProgressBarRead { pb, r } } } impl<'p, 'r, P: Write, R: Read> Read for ProgressBarRead<'p, 'r, P, R> { fn read(&mut self, buf: &mut [u8]) -> Result { let count = self.r.read(buf)?; self.pb.add(count as u64); Ok(count) } } ================================================ FILE: src/recipe.rs ================================================ use std::{ collections::BTreeSet, convert::TryInto, fs, path::{Path, PathBuf}, }; use pkg::{PackageError, PackageName, recipes}; use regex::Regex; use serde::{Deserialize, Serialize}; use crate::{WALK_DEPTH, cook::package as cook_package}; /// Specifies how to download the source for a recipe #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[serde(untagged)] pub enum SourceRecipe { /// Reuse the source directory of another package /// /// This is useful when a single source repo contains multiple projects which each have their /// own recipe to build them. SameAs { /// Relative path to the package for which to reuse the source dir same_as: String, }, /// Path source Path { /// The path to the source path: String, }, /// A git repository source Git { /// The URL for the git repository, such as https://gitlab.redox-os.org/redox-os/ion.git git: String, /// The URL for an upstream repository upstream: Option, /// The optional branch of the git repository to track, such as master. Please specify to /// make updates to the rev easier branch: Option, /// The optional revision of the git repository to use for builds. Please specify for /// reproducible builds rev: Option, /// The optional config to clone with treeless clone. Default is true if "rev" added shallow_clone: Option, /// A list of patch files to apply to the source #[serde(default)] patches: Vec, /// Optional script to run to prepare the source script: Option, }, /// A tar file source Tar { /// The URL of a tar source tar: String, /// The optional blake3 sum of the tar file. Please specify this to make reproducible /// builds more reliable blake3: Option, /// A list of patch files to apply to the source #[serde(default)] patches: Vec, /// Optional script to run to prepare the source, such as ./autogen.sh script: Option, }, } /// Specifies how to build a recipe #[derive(Debug, Clone, Deserialize, PartialEq, Serialize)] #[serde(tag = "template")] pub enum BuildKind { /// Will not build (for meta packages) #[serde(rename = "none")] None, /// Will download compiled package from remote #[serde(rename = "remote")] Remote, /// Will build and install using cargo #[serde(rename = "cargo")] Cargo { #[serde(default)] cargopath: Option, #[serde(default)] cargoflags: Vec, #[serde(default)] cargopackages: Vec, #[serde(default)] cargoexamples: Vec, }, /// Will build and install using configure and make #[serde(rename = "configure")] Configure { #[serde(default)] configureflags: Vec, }, /// Will build and install using cmake #[serde(rename = "cmake")] Cmake { #[serde(default)] cmakeflags: Vec, }, /// Will build and install using meson #[serde(rename = "meson")] Meson { #[serde(default)] mesonflags: Vec, }, /// Will build and install using custom commands #[serde(rename = "custom")] Custom { script: String }, } impl Default for BuildKind { fn default() -> Self { BuildKind::None } } #[derive(Debug, Clone, Default, Deserialize, PartialEq, Serialize)] #[serde(default)] pub struct BuildRecipe { #[serde(flatten)] pub kind: BuildKind, pub dependencies: Vec, #[serde(rename = "dev-dependencies")] pub dev_dependencies: Vec, } #[derive(Debug, Clone, Default, Deserialize, PartialEq, Serialize)] #[serde(default)] pub struct PackageRecipe { pub dependencies: Vec, pub version: Option, pub description: Option, } #[derive(Debug, Clone, Default, Deserialize, PartialEq, Serialize)] #[serde(default)] pub struct OptionalPackageRecipe { pub name: String, pub dependencies: Vec, pub files: Vec, } /// Everything required to build a Redox package #[derive(Debug, Clone, Default, Deserialize, PartialEq, Serialize)] #[serde(default)] pub struct Recipe { /// Specifies how to download the source for this recipe pub source: Option, /// Specifies how to build this recipe pub build: BuildRecipe, /// Specifies how to package this recipe pub package: PackageRecipe, /// Specifies optional packages based from this recipe #[serde(rename = "optional-packages")] pub optional_packages: Vec, } impl BuildRecipe { pub fn new(kind: BuildKind) -> Self { let mut build = Self::default(); build.kind = kind; build } pub fn set_as_remote(&mut self) { if self.kind == BuildKind::None { // BuildKind::Remote won't handle remote meta-packages return; } self.kind = BuildKind::Remote; self.dev_dependencies = Vec::new(); } pub fn set_as_none(&mut self) { self.kind = BuildKind::None; self.dependencies = Vec::new(); self.dev_dependencies = Vec::new(); } } #[derive(Debug, Clone, PartialEq)] pub struct CookRecipe { pub name: PackageName, pub dir: PathBuf, pub recipe: Recipe, pub target: &'static str, /// If false, it's listed on install config pub is_deps: bool, pub rule: String, } impl Recipe { pub fn new(file: &PathBuf) -> Result { if !file.is_file() { return Err(PackageError::FileMissing(file.clone())); } let toml = fs::read_to_string(&file) .map_err(|err| PackageError::FileError(err.raw_os_error(), file.clone()))?; let recipe: Recipe = toml::from_str(&toml).map_err(|err| PackageError::Parse(err, Some(file.clone())))?; Ok(recipe) } pub fn get_packages_list(&self) -> Vec> { let mut packages: Vec> = self.optional_packages.iter().map(|p| Some(p)).collect(); // the mandatory package, put last because of cook_build packages.push(None); packages } } impl CookRecipe { pub fn new(name: PackageName, dir: PathBuf, mut recipe: Recipe) -> Result { let target = cook_package::package_target(&name); if name.is_host() { let thisname = name.name(); let fn_map = |p: PackageName| { if p.is_host() { if p.name() == thisname { None } else { Some(p) } } else if p.is_target() { None } else { Some(p.with_host()) } }; recipe.build.dependencies = recipe .build .dependencies .into_iter() .filter_map(fn_map) .collect(); recipe.build.dev_dependencies = recipe .build .dev_dependencies .into_iter() .filter_map(fn_map) .collect(); } Ok(Self { name, dir, recipe, target, is_deps: false, rule: "".into(), }) } pub fn from_name(name: PackageName) -> Result { let dir = recipes::find(name.name()) .ok_or_else(|| PackageError::PackageNotFound(name.clone()))?; let file = dir.join("recipe.toml"); let recipe = Recipe::new(&file)?; Self::new(name, dir.to_path_buf(), recipe) } pub fn from_list(names: Vec) -> Result, PackageError> { let mut packages = Vec::new(); for name in names { packages.push(Self::from_name(name)?); } Ok(packages) } pub fn from_path(dir: &Path, read_recipe: bool, is_host: bool) -> Result { let file = dir.join("recipe.toml"); let mut name: PackageName = dir.file_name().unwrap().try_into()?; if is_host { name = name.with_host(); } let recipe = if read_recipe { Recipe::new(&file)? } else { // clean/unfetch don't need to read recipe Recipe::default() }; Self::new(name, dir.to_path_buf(), recipe) } fn new_recursive( names: &[PackageName], recurse_build_deps: bool, recurse_dev_build_deps: bool, recurse_package_deps: bool, collect_build_deps: bool, collect_package_deps: bool, collect_self: bool, recursion: usize, ) -> Result, PackageError> { if recursion == 0 { return Err(PackageError::Recursion(Default::default())); } let mut recipes = Vec::new(); let mut recipes_set = BTreeSet::new(); for name in names { let recipe = Self::from_name(name.clone())?; if recurse_build_deps { let dependencies = Self::new_recursive( &recipe.recipe.build.dependencies, recurse_build_deps, recurse_dev_build_deps, recurse_package_deps, collect_build_deps, collect_package_deps, collect_build_deps, recursion - 1, ) .map_err(|mut err| { err.append_recursion(name); err })?; for dependency in dependencies { if !recipes_set.contains(&dependency.name) { recipes_set.insert(dependency.name.clone()); recipes.push(dependency); } } } if recurse_dev_build_deps { let dependencies = Self::new_recursive( &recipe.recipe.build.dev_dependencies, recurse_build_deps, recurse_dev_build_deps, recurse_package_deps, collect_build_deps, collect_package_deps, collect_build_deps, recursion - 1, ) .map_err(|mut err| { err.append_recursion(name); err })?; for dependency in dependencies { if !recipes_set.contains(&dependency.name) { recipes_set.insert(dependency.name.clone()); recipes.push(dependency); } } } if recurse_package_deps { let dependencies = Self::new_recursive( &recipe.recipe.package.dependencies, recurse_build_deps, recurse_dev_build_deps, recurse_package_deps, collect_build_deps, collect_package_deps, collect_package_deps, recursion - 1, ) .map_err(|mut err| { err.append_recursion(name); err })?; for dependency in dependencies { if !recipes_set.contains(&dependency.name) { recipes_set.insert(dependency.name.clone()); recipes.push(dependency); } } } if collect_self && !recipes_set.contains(&recipe.name) { recipes_set.insert(recipe.name.clone()); recipes.push(recipe); } } Ok(recipes) } pub fn get_build_deps_recursive( names: &[PackageName], include_dev: bool, ) -> Result, PackageError> { let packages = Self::new_recursive( names, true, include_dev, false, true, false, true, WALK_DEPTH, )?; Ok(packages) } pub fn get_package_deps_recursive( names: &[PackageName], include_names: bool, ) -> Result, PackageError> { // recurse_build_deps == true here as libraries (build deps) can have runtime files (package deps) let packages = Self::new_recursive( names, true, false, true, false, true, include_names, WALK_DEPTH, )?; Ok(packages.into_iter().map(|p| p.name).collect()) } pub fn get_all_deps_names_recursive( names: &[PackageName], include_dev: bool, ) -> Result, PackageError> { let packages = Self::new_recursive(names, true, include_dev, true, true, true, true, WALK_DEPTH)?; Ok(packages.into_iter().map(|p| p.name).collect()) } pub fn reload_recipe(&mut self) -> Result<(), PackageError> { self.recipe = Self::from_path(&self.dir, true, self.name.is_host())?.recipe; let _ = self.apply_filesystem_config(&self.rule.clone()); Ok(()) } /// returns stage dir, pkgar file and toml file. pub fn stage_paths(&self) -> (PathBuf, PathBuf, PathBuf) { let r = self.name.suffix().map(|p| OptionalPackageRecipe { name: p.to_string(), ..Default::default() }); cook_package::package_stage_paths(r.as_ref(), &self.target_dir()) } pub fn target_dir(&self) -> PathBuf { self.dir.join("target").join(self.target) } pub fn apply_filesystem_config(&mut self, rule: &str) -> Result<(), anyhow::Error> { match rule { // build from source as usual "source" => {} // keep local changes "local" => self.recipe.source = None, // download from remote build "binary" => { self.recipe.source = None; self.recipe.build.set_as_remote(); } // don't build this recipe (unlikely to go here unless some deps need it) // TODO: Note that we're assuming this being ignored from e.g. metapackages // TODO: Will totally broke build if this recipe needed as some other build dependencies "ignore" => { self.recipe.source = None; self.recipe.build.set_as_none(); } rule => { anyhow::bail!( // Fail fast because we could risk losing local changes if "local" was typo'ed "Invalid pkg config {} = \"{}\"\nExpecting either 'source', 'local', 'binary' or 'ignore'", self.name.as_str(), rule ); } } self.rule = rule.to_string(); Ok(()) } pub fn guess_version(&self) -> Option { let recipe = &self.recipe; if recipe.build.kind == BuildKind::None { return Some("".into()); // signifies a meta package } else if let Some(v) = &recipe.package.version { return Some(v.to_string()); } let re = VersionExtractor::new(); let mut dir = self.dir.to_path_buf(); if let Some(r) = &recipe.source { match r { SourceRecipe::Tar { tar, blake3: _, patches: _, script: _, } => { if let Some(ver) = re.extract_ver(&tar) { return Some(ver); } } SourceRecipe::Git { git: _, upstream: _, branch, rev, shallow_clone: _, patches: _, script: _, } => { if let Some(rev) = rev { if let Some(ver) = re.extract_ver(&rev) { return Some(ver); } } if let Some(branch) = branch { if let Some(ver) = re.extract_ver(&branch) { return Some(ver); } } } SourceRecipe::SameAs { same_as } => { dir = self.dir.join(same_as); } _ => {} } }; let cargo_path = dir.join("source/Cargo.toml"); if let Some(ver) = VersionExtractor::extract_cargo_ver(&cargo_path) { return Some(ver); } None } } // TODO: Wrap these vectors in a struct pub fn recipes_mark_as_deps(names: &[PackageName], packages: &mut Vec) { for package in packages.iter_mut() { package.is_deps = !names.contains(&package.name); } } pub fn recipes_flatten_package_names(packages: Vec) -> Vec { let mut new_packages = Vec::new(); let mut packages_set = BTreeSet::new(); for mut package in packages { let is_host = package.name.is_host(); let mut name = package.name.with_suffix(None); if is_host { name = name.with_host(); } if !packages_set.contains(name.as_str()) { packages_set.insert(name.to_string()); package.name = name; new_packages.push(package); } } new_packages } #[derive(Serialize, Deserialize)] pub struct AutoDeps { pub packages: BTreeSet, } pub struct VersionExtractor { regex: Regex, } impl VersionExtractor { pub fn new() -> Self { Self { regex: Regex::new(r"\d+(\.\d+){1,2}").unwrap(), } } pub fn extract_ver(&self, text: &str) -> Option { if let Some(arm) = self.regex.captures(&text) { return Some(arm.get(0)?.as_str().to_string()); } None } fn extract_cargo_ver(path: &Path) -> Option { let content = std::fs::read_to_string(path).ok()?; let manifest = content.parse::().ok()?; if let Some(version) = manifest .get("package") .and_then(|pkg| pkg.get("version")) .and_then(|v| v.as_str()) { return Some(version.to_string()); } if let Some(version) = manifest .get("workspace") .and_then(|ws| ws.get("package")) .and_then(|pkg| pkg.get("version")) .and_then(|v| v.as_str()) { return Some(version.to_string()); } None } } #[cfg(test)] mod tests { use pkg::PackageName; #[test] fn git_cargo_recipe() { use crate::recipe::{BuildKind, BuildRecipe, Recipe, SourceRecipe}; let recipe: Recipe = toml::from_str( r#" [source] git = "https://gitlab.redox-os.org/redox-os/acid.git" branch = "master" rev = "06344744d3d55a5ac9a62a6059cb363d40699bbc" [build] template = "cargo" "#, ) .unwrap(); assert_eq!( recipe, Recipe { source: Some(SourceRecipe::Git { git: "https://gitlab.redox-os.org/redox-os/acid.git".to_string(), upstream: None, branch: Some("master".to_string()), rev: Some("06344744d3d55a5ac9a62a6059cb363d40699bbc".to_string()), patches: Vec::new(), script: None, shallow_clone: None, }), build: BuildRecipe::new(BuildKind::Cargo { cargopath: None, cargoflags: Vec::new(), cargopackages: Vec::new(), cargoexamples: Vec::new(), }), ..Default::default() } ); } #[test] fn tar_custom_recipe() { use crate::recipe::{BuildKind, BuildRecipe, Recipe, SourceRecipe}; let recipe: Recipe = toml::from_str( r#" [source] tar = "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz" blake3 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" [build] template = "custom" script = "make" "#, ) .unwrap(); assert_eq!( recipe, Recipe { source: Some(SourceRecipe::Tar { tar: "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz".to_string(), blake3: Some( "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a" .to_string() ), patches: Vec::new(), script: None, }), build: BuildRecipe::new(BuildKind::Custom { script: "make".to_string() }), ..Default::default() } ); } #[test] fn meta_recipe() { use crate::recipe::{BuildKind, BuildRecipe, PackageRecipe, Recipe}; let recipe: Recipe = toml::from_str( r#" [package] dependencies = [ "gcc13", ] "#, ) .unwrap(); assert_eq!( recipe, Recipe { source: None, build: BuildRecipe::new(BuildKind::None), package: PackageRecipe { dependencies: vec![PackageName::new("gcc13").unwrap()], ..Default::default() }, ..Default::default() } ); } } ================================================ FILE: src/web/html.rs ================================================ use crate::cook::ident; use crate::recipe::SourceRecipe; use crate::web::get_category; use crate::{cook::tree::format_size, recipe::CookRecipe}; use pkg::Package; use std::collections::BTreeMap; use std::{fs, path::Path}; pub fn generate_html_pkg( package: &Package, recipe: &CookRecipe, dependents: &Vec, stage_files: &Option, html_path: &Path, config: &crate::web::CliWebConfig, ) { let name = &package.name; let version = &package.version; let target = &package.target; let category = &get_category(&recipe.dir); let description = recipe .recipe .package .description .as_ref() .map(|p| p.as_str()) .unwrap_or("-"); let desc_html = recipe .recipe .package .description .as_ref() .map(|desc| format!(r#"

{}

"#, desc)) .unwrap_or_default(); let repo_url = &config.repo_url; let deps_html = if package.depends.is_empty() { String::from("

None

") } else { let items: Vec = package .depends .iter() .map(|dep| format!(r#"
  • {dep}
  • "#)) .collect(); format!("
      \n{}\n
    ", items.join("\n")) }; let dependents_html = if dependents.is_empty() { String::from("

    None

    ") } else { let items: Vec = dependents .iter() .map(|dep| format!(r#"
  • {dep}
  • "#)) .collect(); format!("
      \n{}\n
    ", items.join("\n")) }; let mut source_html = match &recipe.recipe.source { Some(SourceRecipe::Git { git, .. }) => { let host = get_hostname(git); let tree_link = get_tree_url(git, host, &package.source_identifier, None); let short_commit = get_short_commit(&package.source_identifier); format!( r#"
    Git:{host}
    Commit:{short_commit}
    "# ) } Some(SourceRecipe::Tar { tar, .. }) => { let host = get_hostname(tar); format!( r#"
    Tarball:{host}
    "# ) } Some(SourceRecipe::SameAs { same_as }) => { let r = Path::new(same_as).file_name().unwrap().to_string_lossy(); format!( r#"
    Same as:{r}
    "# ) } _ => String::from(r#"

    No source specified.

    "#), }; let (files_html, files_count) = if let Some(stage_files) = stage_files { let count = stage_files .split('\n') .filter(|p| !p.ends_with('/') && !p.is_empty()) .count(); (format!("
    {stage_files}
    "), format!("{}", count)) } else { ( String::from(r#"

    No package files defined.

    "#), String::from("?"), ) }; { let host = get_hostname(&config.this_repo); let tree_link = get_tree_url( &config.this_repo, host, &package.commit_identifier, Some(&format!("recipes/{category}/{name}/recipe.toml")), ); let short_commit = get_short_commit(&package.commit_identifier); source_html += &format!( r#"
    Build script:{short_commit}
    "# ); } let (arch, os) = { let target_split: Vec<&str> = package.target.split('-').collect(); ( target_split .get(0) .map(|s| s.to_string()) .unwrap_or("-".into()), target_split .get(2) .map(|s| s.to_string()) .unwrap_or("-".into()), ) }; let html = format!( r#" {name} - Redox OS Package
    ← Back to packages

    {name} {version}

    {desc_html}

    {description}

    $ pkg install {name}

    Dependencies

    {deps_html}

    Dependents

    {dependents_html}

    Package Files

    {files_html}
    Download

    Package Info

    OS{os}
    Architecture{arch}
    Category{category}
    Network Size{network_size}
    Storage Size{storage_size}
    File count{files_count}
    Published{published_short}
    Hash{blake3}

    Package Source

    {source_html}
    "#, network_size = format_size(package.network_size), storage_size = format_size(package.storage_size), published_short = &package.time_identifier[0..10], published = package.time_identifier, blake3 = package.blake3, ); fs::write(html_path, html).expect("Failed to write package HTML file"); } pub fn generate_html_index( grouped_packages: BTreeMap>, index_path: &Path, config: &crate::web::CliWebConfig, ) { let mut categories_html = Vec::new(); for (category, pkgs) in grouped_packages { let cards_html: Vec = pkgs .iter() .map(|(pkg, _recipe)| { let name = &pkg.name; format!( r#"

    {name}

    {version} {size}
    "#, name = name, version = pkg.version, size = format_size(pkg.network_size) ) }) .collect(); let category_block = format!( r#"

    {category}

    {cards}
    "#, category = category, cards = cards_html.join("\n") ); categories_html.push(category_block); } let html = format!( r#" Redox Package Repository

    Redox OS Package Repository

    Repository for {target}

    {category_sections}
    "#, target = redoxer::target(), category_sections = categories_html.join("\n\n"), commit_time = &ident::get_ident().time, commit_hash = get_short_commit(&ident::get_ident().commit), commit_tree = get_tree_url( &config.this_repo, get_hostname(&config.this_repo), &ident::get_ident().commit, None ), ); fs::write(index_path, html).expect("Failed to write index HTML file"); } fn get_hostname(url: &str) -> &str { url.split("://") .nth(1) .unwrap_or(url) .split('/') .next() .unwrap_or(url) .split(':') .next() .unwrap_or(url) } pub fn get_tree_url(git_url: &str, host: &str, commit: &str, folder: Option<&str>) -> String { let mut base_url = git_url.trim_end_matches(".git").to_string(); if let Some(ssh_path) = base_url.strip_prefix("git@") { // "git@github.com:user/repo" -> "https://github.com/user/repo" base_url = format!("https://{}", ssh_path.replace(':', "/")); } else if base_url.starts_with("git://") { // "git://github.com/user/repo" -> "https://github.com/user/repo" base_url = base_url.replacen("git://", "https://", 1); } let base_url = if host == "github.com" { format!("{}/tree/{}", base_url, commit) } else if host.contains("gitlab") { format!("{}/-/tree/{}", base_url, commit) } else { return format!("{}?commit={}", base_url, commit); }; match folder { Some(f) => format!("{base_url}/{f}"), None => base_url, } } fn get_short_commit(commit: &str) -> &str { commit.get(0..7).unwrap_or("?") } ================================================ FILE: src/web/style.css ================================================ * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; background-color: #f9f9fb; color: #24292e; line-height: 1.6; } .container { max-width: 1280px; margin: 0 auto; padding: 0 20px; } .category-section { margin-bottom: 50px; } .category-title { font-size: 1.5rem; color: #24292e; border-bottom: 2px solid #e1e4e8; padding-bottom: 10px; margin-bottom: 20px; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; } .package-grid { display: block; display: flex; flex-wrap: wrap; margin: -10px; } .package-card { background-color: #ffffff; border: 1px solid #e1e4e8; border-radius: 6px; padding: 15px; margin: 10px; display: inline-block; width: 30%; vertical-align: top; display: flex; flex: 0 1 280px; flex-direction: column; justify-content: space-between; } .package-card .pkg-name { margin-bottom: 15px; font-size: 1.25rem; } .package-card .pkg-name a { border: none; } .package-card .pkg-name a:hover { text-decoration: underline; } .package-card .pkg-stats { display: block; display: flex; justify-content: space-between; align-items: center; color: #6a737d; font-size: 0.9rem; border-top: 1px solid #e1e4e8; padding-top: 10px; } .package-card .pkg-version { font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; background-color: #f3f4f6; padding: 3px 6px; border-radius: 4px; color: #24292e; } .package-card .pkg-size { font-weight: 500; } a { color: #24292e; text-decoration: none; border-bottom: 1px solid #e1e4e8; } a:hover { color: #000000; border-bottom: 1px solid #24292e; } h1, h2, h3 { font-weight: 600; margin: 1rem 0; } code { font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; background-color: #f3f4f6; padding: 0.2em 0.4em; border-radius: 3px; font-size: 0.9em; } .card { background-color: #ffffff; border: 1px solid #e1e4e8; border-radius: 6px; padding: 20px; margin-bottom: 20px; } .pkg-header, .index-header { background-color: #ffffff; border-bottom: 1px solid #d1d5da; padding: 40px 0; margin-bottom: 40px; text-align: center; } .pkg-header h1 { font-size: 2.5rem; margin-bottom: 0.5rem; } .pkg-header .version { color: #6a737d; font-size: 1.5rem; font-weight: 400; } .pkg-header .description { font-size: 1.2rem; color: #586069; max-width: 600px; margin: 0 auto 1.5rem auto; } .back-link { display: inline-block; margin-bottom: 20px; color: #6a737d; border: none; font-size: 0.9rem; } .back-link:hover { color: #24292e; border: none; } .install-action { display: inline-block; background-color: #f3f4f6; border: 1px solid #d1d5da; border-radius: 6px; padding: 12px 20px; font-family: ui-monospace, SFMono-Regular, monospace; font-size: 1.1rem; color: #24292e; } .install-action .prompt { color: #6a737d; margin-right: 12px; } .install-action code { background-color: transparent; padding: 0; font-size: 1.1rem; user-select: all; } .pkg-content { display: flex; flex-wrap: wrap; justify-content: space-between; } .pkg-main, .pkg-meta { width: 100%; } @media (min-width: 768px) { .pkg-main { width: 60%; } .pkg-meta { width: 35%; } } .meta-box { overflow-x: auto; display: block; max-width: 150px; user-select: all; padding: 8px; white-space: nowrap; } table { width: 100%; border-collapse: collapse; } th, td { padding: 10px 0; text-align: left; border-bottom: 1px solid #e1e4e8; } th { color: #6a737d; font-weight: 500; } .pkg-meta table th { width: 40%; padding-right: 10px; } .pkg-deps ul, .pkg-dependents ul { list-style-type: none; display: flex; flex-wrap: wrap; } .pkg-deps li, .pkg-dependents li { padding: 8px 0; border-bottom: 1px solid #e1e4e8; width: 50%; } ================================================ FILE: src/web.rs ================================================ use std::{ collections::{BTreeMap, BTreeSet, HashMap}, env, fs, path::{Path, PathBuf}, }; use pkg::{Package, PackageName}; use crate::{ recipe::CookRecipe, web::html::{generate_html_index, generate_html_pkg}, }; pub mod html; #[derive(Clone)] pub struct CliWebConfig { /// path relative to cwd dir to generate web files out_dir: PathBuf, /// absolute url to repo (not the web) instead of "/repo" repo_url: String, /// this repository build url this_repo: String, } impl CliWebConfig { pub fn parse_args() -> Option { if env::var("COOKBOOK_WEB").ok().as_deref() != Some("true") { return None; } let Ok(pwd) = env::current_dir() else { return None; }; Some(CliWebConfig { repo_url: env::var("COOKBOOK_WEB_REPO_URL") .ok() .unwrap_or("/repo".to_string()), out_dir: pwd.join( env::var("COOKBOOK_WEB_OUT_DIR") .ok() .unwrap_or("web".to_string()), ), // TODO: Hardcoded URL, maybe get this remote-url next time this_repo: "https://gitlab.redox-os.org/redox-os/redox".to_string(), }) } } const CSS: &str = include_str!("./web/style.css"); pub fn generate_web(all_packages: &Vec, config: &CliWebConfig) { let repo_path = &config.out_dir.join(redoxer::target()); if !repo_path.is_dir() { fs::create_dir_all(repo_path).unwrap(); } let mut valid_packages = Vec::new(); let mut dependents_map: HashMap> = HashMap::new(); for package_name in all_packages { let Some(recipe_path) = pkg::recipes::find(package_name) else { continue; }; // TODO: Package::from_path let Ok(package) = Package::new(&PackageName::new(package_name).unwrap()) else { continue; }; let Ok(recipe) = CookRecipe::from_path(&recipe_path, true, false) else { continue; }; for dep in &package.depends { dependents_map .entry(dep.to_string()) .or_default() .insert(package.name.to_string()); } valid_packages.push((package, recipe)); } for (package, recipe) in &valid_packages { let dependents = dependents_map .get(package.name.as_str()) .cloned() .unwrap_or_default(); let stage_files_path = recipe.stage_paths().0.with_added_extension("files"); let stage_files = fs::read_to_string(stage_files_path).ok(); let html_path = repo_path.join(format!("{}.html", package.name.as_str())); generate_html_pkg( &package, &recipe, &dependents.into_iter().collect(), &stage_files, &html_path, &config, ); } let mut grouped_packages: BTreeMap> = BTreeMap::new(); for item in &valid_packages { let category = get_category(&item.1.dir); grouped_packages.entry(category).or_default().push(item); } let index_path = repo_path.join("index.html"); let style_path = repo_path.join("style.css"); generate_html_index(grouped_packages, &index_path, &config); fs::write(style_path, CSS).expect("Failed to write CSS file"); } pub(crate) fn get_category(dir: &Path) -> String { let Some(category) = dir.parent().map(|p| p.display().to_string()) else { return "uncategorized".to_string(); }; category["recipes/".len()..].to_string() }