├── .cargo └── config.toml ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ └── build.yml ├── .gitignore ├── .gitpod.Dockerfile ├── .gitpod.yml ├── .rustfmt.toml ├── .vscode ├── launch.json └── settings.json ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── base-files ├── .curlrc ├── bin ├── etc │ ├── X11 │ │ ├── xinit │ │ │ └── xinitrc │ │ └── xorg.conf │ ├── bash.bashrc │ ├── hostname │ ├── profile │ └── resolv.conf ├── home │ └── aero │ │ ├── a │ │ └── test.c ├── lib ├── lib64 ├── sbin └── wallpaper.png ├── bochsrc.txt ├── build-support ├── cross-llvm-config ├── jwm │ └── system.jwmrc ├── limine.cfg ├── mkimage.sh ├── mkiso.sh ├── python │ └── python-config-site └── rust │ ├── config.toml │ └── host-config.toml ├── extra-files ├── firefox │ └── mozconfig └── xorg │ └── xinitrc ├── host-recipes ├── autoconf ├── autoconf-2.69 ├── automake ├── binutils ├── cmake ├── gcc ├── gnulib ├── intltool ├── libgcc-binaries ├── libtool ├── limine ├── llvm ├── pkg-config ├── rust └── rust-libc ├── improving-build-times.txt ├── jinx-config ├── misc ├── aero-logo.png ├── dwm-alacritty-glxgears.png └── gpl.png ├── patched.txt ├── patches ├── autoconf │ └── jinx-working-patch.patch ├── bash │ └── jinx-working-patch.patch ├── binutils │ └── jinx-working-patch.patch ├── cairo │ └── jinx-working-patch.patch ├── dbus │ └── jinx-working-patch.patch ├── fontconfig │ └── jinx-working-patch.patch ├── fox │ └── jinx-working-patch.patch ├── gcc-host │ └── jinx-working-patch.patch ├── glib │ └── jinx-working-patch.patch ├── gtk+-3 │ └── jinx-working-patch.patch ├── libgcrypt │ └── jinx-working-patch.patch ├── libtool │ └── jinx-working-patch.patch ├── llvm │ └── jinx-working-patch.patch ├── mesa │ └── jinx-working-patch.patch ├── mlibc │ └── jinx-working-patch.patch ├── ncurses │ └── jinx-working-patch.patch ├── openssl │ └── jinx-working-patch.patch ├── python │ └── jinx-working-patch.patch ├── readline │ └── jinx-working-patch.patch ├── rust-host │ └── jinx-working-patch.patch ├── xf86-input-keyboard │ └── jinx-working-patch.patch ├── xf86-input-mouse │ └── jinx-working-patch.patch ├── xf86-video-fbdev │ └── jinx-working-patch.patch ├── xfe │ └── jinx-working-patch.patch ├── xorg-proto │ └── jinx-working-patch.patch ├── xorg-server │ └── jinx-working-patch.patch └── xorg-xinit │ └── jinx-working-patch.patch ├── recipes ├── at-spi2-core ├── autoconf-archive ├── base-files ├── bash ├── binutils ├── bzip2 ├── cairo ├── core-libs ├── coreutils ├── cxxshim ├── dbus ├── findutils ├── fontconfig ├── fox ├── freeglut ├── freetype2 ├── fribidi ├── frigg ├── gcc ├── gdk-pixbuf ├── gettext ├── glib ├── glib-networking ├── glu ├── gmp ├── graphite2 ├── grep ├── gsettings-desktop-schemas ├── gtk+-3 ├── harfbuzz ├── icu ├── jwm ├── less ├── libepoxy ├── libexpat ├── libffi ├── libfontenc ├── libgcc ├── libgcrypt ├── libgpg-error ├── libice ├── libiconv ├── libintl ├── libjpeg-turbo ├── libnghttp2 ├── libpng ├── libpsl ├── libsm ├── libsoup ├── libstdc++ ├── libtasn ├── libtiff ├── libunistring ├── libwebp ├── libx11 ├── libxau ├── libxaw ├── libxcb ├── libxcomposite ├── libxcrypt ├── libxcursor ├── libxcvt ├── libxdamage ├── libxdmcp ├── libxext ├── libxfixes ├── libxfont2 ├── libxft ├── libxi ├── libxinerama ├── libxkbcommon ├── libxkbfile ├── libxml ├── libxmu ├── libxpm ├── libxrandr ├── libxrender ├── libxshmfence ├── libxslt ├── libxt ├── libxv ├── libxxf86vm ├── linux-headers ├── llvm ├── mesa ├── mesa-demos ├── mlibc ├── mlibc-headers ├── mpc ├── mpfr ├── ncurses ├── neofetch ├── nettle ├── openssl ├── pango ├── pcre2 ├── pixman ├── python ├── readline ├── sdl2 ├── sqlite ├── ttf-dejavu ├── tzdata ├── userland ├── xcb-proto ├── xcb-util ├── xf86-input-keyboard ├── xf86-input-mouse ├── xf86-video-fbdev ├── xfe ├── xkeyboard-config ├── xorg-font-util ├── xorg-proto ├── xorg-server ├── xorg-util-macros ├── xorg-xclock ├── xorg-xeyes ├── xorg-xfontsel ├── xorg-xinit ├── xorg-xkbcomp ├── xorg-xlsfonts ├── xtrans ├── xz ├── zlib └── zstd ├── rust-toolchain ├── scripts └── mkimage ├── source-recipes ├── autoconf ├── autoconf-2.69 ├── automake ├── cmake ├── gcc-host ├── gnulib ├── intltool ├── libgcc-binaries ├── libtool ├── limine ├── llvm-host ├── pkg-config ├── rust-host └── rust-libc ├── src ├── .cargo │ ├── WALLPAPER-CREDIT │ ├── aarch64-aero_os.json │ ├── config.toml │ ├── kernel.ld │ └── term_background.bmp ├── Cargo.lock ├── Cargo.toml ├── aero_kernel │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ ├── acpi │ │ ├── aml.rs │ │ ├── fadt.rs │ │ ├── hpet.rs │ │ ├── madt.rs │ │ ├── mcfg.rs │ │ ├── mod.rs │ │ ├── rsdp.rs │ │ └── sdt.rs │ │ ├── arch │ │ ├── aarch64 │ │ │ ├── dtb.rs │ │ │ ├── interrupts.rs │ │ │ ├── mod.rs │ │ │ ├── task.rs │ │ │ ├── time.rs │ │ │ └── tls.rs │ │ ├── mod.rs │ │ └── x86_64 │ │ │ ├── apic.rs │ │ │ ├── asm_macros.rs │ │ │ ├── controlregs.rs │ │ │ ├── cpu_local.rs │ │ │ ├── gdt.rs │ │ │ ├── interrupts │ │ │ ├── exceptions.rs │ │ │ ├── handlers.asm │ │ │ ├── idt.rs │ │ │ └── mod.rs │ │ │ ├── io.rs │ │ │ ├── mem.rs │ │ │ ├── mod.rs │ │ │ ├── registers.inc │ │ │ ├── signals.rs │ │ │ ├── syscall.rs │ │ │ ├── task.rs │ │ │ ├── time.rs │ │ │ ├── tls.rs │ │ │ └── user_copy.rs │ │ ├── cmdline.rs │ │ ├── drivers │ │ ├── block │ │ │ ├── ahci.rs │ │ │ ├── ide │ │ │ │ ├── channel.rs │ │ │ │ ├── mod.rs │ │ │ │ └── registers.rs │ │ │ ├── mod.rs │ │ │ └── nvme │ │ │ │ ├── command.rs │ │ │ │ ├── mod.rs │ │ │ │ └── queue.rs │ │ ├── drm │ │ │ ├── mod.rs │ │ │ └── rawfb.rs │ │ ├── e1000.rs │ │ ├── gdbstub.rs │ │ ├── keyboard.rs │ │ ├── lai.rs │ │ ├── mod.rs │ │ ├── mouse.rs │ │ ├── pci.rs │ │ ├── pty.rs │ │ ├── tty │ │ │ ├── ctty.rs │ │ │ ├── mod.rs │ │ │ └── vtty.rs │ │ ├── uart_16550.rs │ │ └── uart_pl011.rs │ │ ├── emu.rs │ │ ├── fs │ │ ├── block │ │ │ ├── gpt.rs │ │ │ └── mod.rs │ │ ├── cache.rs │ │ ├── devfs.rs │ │ ├── epoll.rs │ │ ├── eventfd.rs │ │ ├── ext2 │ │ │ ├── disk.rs │ │ │ ├── group_desc.rs │ │ │ └── mod.rs │ │ ├── file_table.rs │ │ ├── inode.rs │ │ ├── mod.rs │ │ ├── path.rs │ │ ├── pipe.rs │ │ ├── procfs.rs │ │ └── ramfs.rs │ │ ├── logger.rs │ │ ├── main.rs │ │ ├── mem │ │ ├── alloc.rs │ │ ├── mod.rs │ │ ├── paging │ │ │ ├── addr.rs │ │ │ ├── frame.rs │ │ │ ├── mapper.rs │ │ │ ├── mod.rs │ │ │ ├── page.rs │ │ │ └── page_table.rs │ │ ├── pti.rs │ │ ├── slab.rs │ │ └── vmalloc.rs │ │ ├── modules.rs │ │ ├── net │ │ ├── arp.rs │ │ ├── loopback.rs │ │ ├── mod.rs │ │ ├── tcp.rs │ │ └── udp.rs │ │ ├── rendy.rs │ │ ├── socket │ │ ├── ipv4.rs │ │ ├── mod.rs │ │ ├── netlink.rs │ │ ├── tcp.rs │ │ ├── udp.rs │ │ └── unix.rs │ │ ├── syscall │ │ ├── fs.rs │ │ ├── futex.rs │ │ ├── ipc.rs │ │ ├── mod.rs │ │ ├── net.rs │ │ ├── process.rs │ │ └── time.rs │ │ ├── tests.rs │ │ ├── unwind.rs │ │ ├── userland │ │ ├── mod.rs │ │ ├── scheduler │ │ │ ├── mod.rs │ │ │ └── round_robin.rs │ │ ├── signals.rs │ │ ├── task │ │ │ ├── mod.rs │ │ │ └── sessions.rs │ │ ├── terminal.rs │ │ └── vm.rs │ │ └── utils │ │ ├── bitmap.rs │ │ ├── buffer.rs │ │ ├── dma.rs │ │ ├── mod.rs │ │ └── sync.rs ├── aero_proc │ ├── Cargo.toml │ └── src │ │ ├── cpu_local.rs │ │ ├── downcastable.rs │ │ ├── indirect.rs │ │ ├── ioctl.rs │ │ ├── lib.rs │ │ ├── syscall.rs │ │ └── test.rs ├── aero_syscall │ ├── Cargo.toml │ └── src │ │ ├── consts.rs │ │ ├── lib.rs │ │ ├── netlink.rs │ │ ├── signal.rs │ │ ├── socket.rs │ │ ├── syscall.rs │ │ └── time.rs ├── font.bin └── uapi │ ├── Cargo.toml │ └── src │ ├── drm.rs │ ├── ioctl.rs │ ├── lib.rs │ └── pty.rs ├── tools ├── cargo-inject-patches.py ├── deps.sh ├── deps │ ├── deps_darwin │ └── deps_linux ├── gdb-debug-userland.py ├── mkimage.sh └── rebuild-sysroot.sh └── userland ├── .cargo └── x86_64-unknown-none.json ├── CMakeToolchain-x86_64.cmake ├── Makefile ├── apps ├── init │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── systrace │ ├── Cargo.toml │ └── src │ │ └── main.rs └── window_test │ ├── Cargo.toml │ └── src │ └── main.rs ├── cross-file.ini ├── init └── init.c ├── libs └── aero_ipc │ ├── Cargo.toml │ └── src │ ├── interfaces.rs │ └── lib.rs ├── memory_stress.c ├── native-file.ini ├── servers ├── system_server │ ├── Cargo.toml │ └── src │ │ └── main.rs └── window_server │ ├── Cargo.toml │ └── src │ └── main.rs └── tests ├── f.c └── utest.cc /.cargo/config.toml: -------------------------------------------------------------------------------- 1 | [alias] 2 | aero = "run --release --manifest-path ./aero_build/Cargo.toml --" 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | 3 | jinx-config linguist-language=Shell 4 | host-recipes/* linguist-language=Shell 5 | recipes/* linguist-language=Shell 6 | source-recipes/* linguist-language=Shell 7 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [Andy-Python-Programmer] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Aero 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | env: 10 | CARGO_TERM_COLOR: always 11 | 12 | RED: '\033[1;31m' 13 | NOCOLOR: '\033[0m' 14 | 15 | jobs: 16 | build: 17 | runs-on: ubuntu-latest 18 | steps: 19 | - uses: actions/checkout@v3 20 | - uses: actions-rs/toolchain@v1 21 | with: 22 | profile: minimal 23 | toolchain: nightly 24 | - name: Install dependencies 25 | run: | 26 | sudo apt-get update 27 | sudo apt-get install -y nasm make 28 | - name: Build Documentation 29 | run: | 30 | make doc 31 | find ./target -type d -name .git -prune -exec rm -rf {} \; 32 | - name: Formatting Check 33 | run: | 34 | make check_fmt 35 | git diff-index --quiet HEAD -- || (printf "${RED}error${NOCOLOR}: formatting check failed, run \`make fmt\`\n" && exit 1) 36 | - name: Deploy documentation 37 | uses: peaceiris/actions-gh-pages@v3 38 | if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'schedule') 39 | with: 40 | github_token: ${{ secrets.GITHUB_TOKEN }} 41 | publish_dir: ./target/doc/ 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iso 2 | *.img 3 | *.log 4 | 5 | # We aren't providing a library, so we can ignore that one :) 6 | Cargo.lock 7 | 8 | target 9 | build 10 | bundled 11 | sysroot 12 | 13 | # Bochs specific files: 14 | bx_enh_dbg.ini 15 | 16 | # Objdump files: 17 | *.dump 18 | 19 | # Remove doom port related files: 20 | base-files/doom1.wad 21 | 22 | # Wayland test client and server executables: (todo: remove these) 23 | base-files/client 24 | base-files/server 25 | 26 | # todo: remove these 27 | debug 28 | 29 | # XXXXXXXXXXXXXXXX 30 | 3rdparty/ 31 | .jinx-cache 32 | sources/ 33 | host-pkgs/ 34 | host-builds/ 35 | pkgs/ 36 | builds/ 37 | raw-data 38 | -------------------------------------------------------------------------------- /.gitpod.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gitpod/workspace-full-vnc 2 | 3 | RUN sudo apt-get install -y \ 4 | nasm \ 5 | cpio \ 6 | xorriso \ 7 | qemu-system-x86-64 8 | 9 | RUN python3 -m pip install requests xbstrap 10 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | image: 2 | file: .gitpod.Dockerfile 3 | 4 | ports: 5 | # vnc 6 | - port: 6080 7 | # open-preview is too small to reliably use, especially on smaller viewports 8 | onOpen: open-browser 9 | - port: 5900 10 | onOpen: ignore 11 | 12 | tasks: 13 | - init: ./aero.py --no-run 14 | command: ./aero.py --only-run --memory 32G 15 | -------------------------------------------------------------------------------- /.rustfmt.toml: -------------------------------------------------------------------------------- 1 | edition = "2021" 2 | newline_style = "Unix" 3 | 4 | # maximum length of comments. 5 | comment_width = 100 6 | # break comments to fit on the line 7 | wrap_comments = true 8 | # convert `/* */` comments to `//` comments where possible 9 | normalize_comments = true 10 | # format code snippet included in doc comments. 11 | format_code_in_doc_comments = true 12 | 13 | # merge imports from the same module into a single use 14 | # statement. Conversely, imports from different modules 15 | # are split into separate statements. 16 | imports_granularity = "Module" 17 | # `type` and `const` are put first, then macros and methods. 18 | reorder_impl_items = true 19 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Launch (release)", 6 | "type": "lldb", 7 | "request": "custom", 8 | "initCommands": [ 9 | "platform select remote-gdb-server" 10 | ], 11 | "targetCreateCommands": [ 12 | "target create ${workspaceFolder}/build/iso_root/aero.elf" 13 | ], 14 | "processCreateCommands": [ 15 | "gdb-remote 127.0.0.1:1234" // Connect to the GDB Server 16 | ] 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "rust-analyzer.linkedProjects": [ 3 | "./src/Cargo.toml", 4 | // "./userland/Cargo.toml" 5 | ], 6 | "rust-analyzer.checkOnSave.allTargets": false, 7 | // "rust-analyzer.checkOnSave.extraArgs": [ 8 | // "-Zbuild-std=core,alloc" 9 | // ], 10 | "editor.formatOnSave": true, 11 | "files.associations": { 12 | "stdio.h": "c", 13 | "unistd.h": "c", 14 | "*.inc": "c", 15 | "extern-c-redecl5.C": "cpp", 16 | "termios.h": "c", 17 | "termios-c_iflag.h": "c" 18 | }, 19 | "rust-analyzer.check.command": "clippy", 20 | } -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | Contributions are absolutely, positively welcome and encouraged! 3 | 4 | - [Debugging the Aero kernel](#debugging-the-aero-kernel) 5 | * [Prerequisites](##prerequisites) 6 | * [Debugging using GDB](##using-gdb) 7 | * [Debugging using LLDB](##using-lldb) 8 | 9 | # Debugging the Aero kernel 10 | 11 | ## Prerequisites 12 | - Debugger 13 | * [LLDB](https://lldb.llvm.org/) (recommended) 14 | * [GDB](https://www.gnu.org/software/gdb/) 15 | 16 | To debug the Aero kernel run: 17 | ```shell 18 | $ cargo run -- -s -S 19 | ``` 20 | 21 | Passing the `-s` flag to qemu will set up qemu to listen to at port `1234` for a GDB client to connect to it. 22 | 23 | ## Using GDB 24 | If you are using GDB use the following commands to start debugging: 25 | ```shell 26 | $ gdb 27 | (gdb) target remote localhost:1234 28 | (gdb) 29 | ``` 30 | 31 | ## Using LLDB 32 | If you are using LLDB use the following commands to start debugging: 33 | ```shell 34 | $ lldb 35 | (lldb) gdb-remote localhost:1234 36 | (lldb) 37 | ```` 38 | 39 | Check out the docs for your debugger for information about how to use the debugger. 40 | 41 | `./aero.py -- -netdev user,id=spider -device e1000,netdev=spider,id=ck_nic0 -object filter-dump,id=spider,netdev=spider,file=qemulog.log` -------------------------------------------------------------------------------- /base-files/.curlrc: -------------------------------------------------------------------------------- 1 | --ipv4 -------------------------------------------------------------------------------- /base-files/bin: -------------------------------------------------------------------------------- 1 | /usr/bin -------------------------------------------------------------------------------- /base-files/etc/X11/xinit/xinitrc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/sh 2 | jwm & 3 | -------------------------------------------------------------------------------- /base-files/etc/X11/xorg.conf: -------------------------------------------------------------------------------- 1 | Section "Module" 2 | Load "fbdev" 3 | EndSection 4 | 5 | Section "Device" 6 | Identifier "Card0" 7 | Driver "fbdev" 8 | EndSection 9 | -------------------------------------------------------------------------------- /base-files/etc/bash.bashrc: -------------------------------------------------------------------------------- 1 | # If not running interactively, don't do anything 2 | [[ $- != *i* ]] && return 3 | 4 | alias ls='ls --color=auto' 5 | alias grep='grep --color=auto' 6 | 7 | PS1='\[\033[01;32m\]root@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ ' 8 | 9 | HISTCONTROL=ignoredups 10 | HISTSIZE=-1 11 | HISTFILESIZE=-1 12 | 13 | export DISPLAY=:0 14 | -------------------------------------------------------------------------------- /base-files/etc/hostname: -------------------------------------------------------------------------------- 1 | aero -------------------------------------------------------------------------------- /base-files/etc/profile: -------------------------------------------------------------------------------- 1 | # /etc/profile 2 | 3 | # This file was copied from my host Arch Linux installation. Credits to them :) 4 | 5 | # Append "$1" to $PATH when not already in. 6 | # This function API is accessible to scripts in /etc/profile.d 7 | append_path () { 8 | case ":$PATH:" in 9 | *:"$1":*) 10 | ;; 11 | *) 12 | PATH="${PATH:+$PATH:}$1" 13 | esac 14 | } 15 | 16 | # Append our default paths 17 | append_path '/usr/local/sbin' 18 | append_path '/usr/local/bin' 19 | append_path '/usr/bin' 20 | 21 | # Force PATH to be environment 22 | export PATH 23 | 24 | # Load profiles from /etc/profile.d 25 | if test -d /etc/profile.d/; then 26 | for profile in /etc/profile.d/*.sh; do 27 | test -r "$profile" && . "$profile" 28 | done 29 | unset profile 30 | fi 31 | 32 | # Unload our profile API functions 33 | unset -f append_path 34 | 35 | # Source global bash config, when interactive but not posix or sh mode 36 | if test "$BASH" &&\ 37 | test "$PS1" &&\ 38 | test -z "$POSIXLY_CORRECT" &&\ 39 | test "${0#-}" != sh &&\ 40 | test -r /etc/bash.bashrc 41 | then 42 | . /etc/bash.bashrc 43 | fi 44 | 45 | # Termcap is outdated, old, and crusty, kill it. 46 | unset TERMCAP 47 | 48 | # Man is much better than us at figuring this out 49 | unset MANPATH 50 | -------------------------------------------------------------------------------- /base-files/etc/resolv.conf: -------------------------------------------------------------------------------- 1 | nameserver 10.0.2.3 2 | -------------------------------------------------------------------------------- /base-files/home/aero/a: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | echo "Running update-mime-database to get the mime database" 4 | update-mime-database /usr/share/mime/ 5 | 6 | echo "Running gio-querymodules to generate gio cache" 7 | gio-querymodules /usr/lib/gio/modules/ 8 | 9 | echo "Running glib-compile-schemas to get gtk3 working" 10 | glib-compile-schemas /usr/share/glib-2.0/schemas/ 11 | 12 | echo "Running gdk-pixbuf-query-loaders to get gtk3 working" 13 | gdk-pixbuf-query-loaders --update-cache 14 | 15 | echo "Running gtk-query-immodules-3.0 to get gtk3 working" 16 | gtk-query-immodules-3.0 --update-cache 17 | 18 | echo "Running gtk-query-immodules-2.0 to get gtk2 working" 19 | gtk-query-immodules-2.0 --update-cache 20 | 21 | /usr/libexec/webkit2gtk-4.0/MiniBrowser 22 | -------------------------------------------------------------------------------- /base-files/home/aero/test.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() { 4 | printf("Hello World, from Aero!\n"); 5 | return 0; 6 | } 7 | -------------------------------------------------------------------------------- /base-files/lib: -------------------------------------------------------------------------------- 1 | /usr/lib -------------------------------------------------------------------------------- /base-files/lib64: -------------------------------------------------------------------------------- 1 | /usr/lib -------------------------------------------------------------------------------- /base-files/sbin: -------------------------------------------------------------------------------- 1 | /usr/bin -------------------------------------------------------------------------------- /base-files/wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Andy-Python-Programmer/aero/be57ae00e122c5710d449314f828352bbc7164d2/base-files/wallpaper.png -------------------------------------------------------------------------------- /bochsrc.txt: -------------------------------------------------------------------------------- 1 | display_library: x, options="gui_debug" 2 | megs: 1000 3 | magic_break: enabled=1 4 | romimage: file=/usr/share/bochs/BIOS-bochs-latest 5 | vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest 6 | boot: disk 7 | log: bochslog.log 8 | clock: sync=realtime, rtc_sync=1, time0=local 9 | cpu: count=4, reset_on_triple_fault=0, model=corei7_haswell_4770, ips=10000000 10 | cpuid: 1g_pages=0, apic=x2apic 11 | debug: action=report 12 | ata0-master: type=disk, path="build/aero.iso", mode=flat 13 | -------------------------------------------------------------------------------- /build-support/limine.cfg: -------------------------------------------------------------------------------- 1 | TIMEOUT=0 2 | VERBOSE=yes 3 | 4 | :aero 5 | PROTOCOL=limine 6 | KASLR=no 7 | KERNEL_PATH=boot:///aero 8 | CMDLINE=term-background=background theme-background=0x50000000 9 | #RESOLUTION=1920x1080 10 | 11 | MODULE_PATH=boot:///term_background.bmp 12 | MODULE_CMDLINE=background 13 | -------------------------------------------------------------------------------- /build-support/mkimage.sh: -------------------------------------------------------------------------------- 1 | IMAGE_PATH=target/disk.img 2 | 3 | ./target/jinx sysroot 4 | 5 | rm -rf $IMAGE_PATH 6 | 7 | dd if=/dev/zero of=$IMAGE_PATH bs=1G count=0 seek=512 8 | parted -s $IMAGE_PATH mklabel gpt 9 | parted -s $IMAGE_PATH mkpart primary 2048s 100% 10 | 11 | # ensure loop kernel module is enabled 12 | if ! lsmod | grep -q 'loop'; then 13 | echo 'mkimage.sh: `loop` kernel module not found, attempting to load' 14 | sudo modprobe loop 15 | fi 16 | 17 | sudo losetup -Pf --show $IMAGE_PATH > loopback_dev 18 | sudo mkfs.ext2 `cat loopback_dev`p1 -I128 19 | 20 | rm -rf target/disk_image/ 21 | mkdir target/disk_image 22 | sudo mount `cat loopback_dev`p1 target/disk_image 23 | sudo cp -r -v sysroot/. target/disk_image/ 24 | pushd target/disk_image 25 | sudo mkdir dev proc tmp 26 | popd 27 | sync 28 | sudo umount target/disk_image/ 29 | sudo losetup -d `cat loopback_dev` 30 | sync 31 | 32 | rm -rf loopback_dev 33 | rm -rf target/disk_image 34 | -------------------------------------------------------------------------------- /build-support/mkiso.sh: -------------------------------------------------------------------------------- 1 | set -ex 2 | 3 | ./target/jinx host-build limine 4 | 5 | rm -rf target/iso_root 6 | mkdir -pv target/iso_root/boot 7 | 8 | cp $1 target/iso_root/aero 9 | cp build-support/limine.cfg src/.cargo/term_background.bmp target/iso_root/ 10 | 11 | # Install the limine binaries 12 | cp host-pkgs/limine/usr/local/share/limine/limine-bios.sys target/iso_root/boot/ 13 | cp host-pkgs/limine/usr/local/share/limine/limine-bios-cd.bin target/iso_root/boot/ 14 | cp host-pkgs/limine/usr/local/share/limine/limine-uefi-cd.bin target/iso_root/boot/ 15 | mkdir -pv target/iso_root/EFI/BOOT 16 | cp host-pkgs/limine/usr/local/share/limine/BOOT*.EFI target/iso_root/EFI/BOOT/ 17 | 18 | # Create the disk image. 19 | xorriso -as mkisofs -b boot/limine-bios-cd.bin -no-emul-boot -boot-load-size 4 \ 20 | -boot-info-table --efi-boot boot/limine-uefi-cd.bin -efi-boot-part \ 21 | --efi-boot-image --protective-msdos-label target/iso_root -o target/aero.iso 22 | 23 | # Install limine. 24 | host-pkgs/limine/usr/local/bin/limine bios-install target/aero.iso 25 | -------------------------------------------------------------------------------- /build-support/python/python-config-site: -------------------------------------------------------------------------------- 1 | ac_cv_file__dev_ptmx=yes 2 | ac_cv_file__dev_ptc=no -------------------------------------------------------------------------------- /build-support/rust/config.toml: -------------------------------------------------------------------------------- 1 | # [unstable] 2 | # patch-in-config = true 3 | 4 | [build] 5 | rustc = "/base_dir/host-pkgs/rust/bin/rustc" 6 | target = "x86_64-unknown-aero" 7 | rustflags = ["-C", "link-args=-no-pie", "-C", "link-args=-lgcc_s"] 8 | 9 | [target.x86_64-unknown-aero] 10 | linker = "/base_dir/host-pkgs/gcc/usr/local/bin/x86_64-aero-gcc" 11 | 12 | [patch.crates-io] 13 | libc = { path = "/base_dir/sources/rust-libc" } 14 | # num_cpus = { path = "@SOURCE_ROOT@/bundled/rust-num-cpus" } 15 | # users = { path = "@SOURCE_ROOT@/bundled/rust-users" } 16 | # winit = { path = "@SOURCE_ROOT@/bundled/rust-winit" } 17 | # nix = { path = "@SOURCE_ROOT@/bundled/rust-nix" } 18 | # mio-06 = { path = "@SOURCE_ROOT@/bundled/rust-mio-0.6", package = "mio" } 19 | # mio-08 = { path = "@SOURCE_ROOT@/bundled/rust-mio-0.8", package = "mio" } 20 | # glutin = { path = "@SOURCE_ROOT@/bundled/rust-glutin/glutin" } 21 | # shared_library = { path = "@SOURCE_ROOT@/bundled/rust-shared-library" } 22 | # libloading = { path = "@SOURCE_ROOT@/bundled/rust-libloading" } 23 | -------------------------------------------------------------------------------- /build-support/rust/host-config.toml: -------------------------------------------------------------------------------- 1 | [patch.crates-io] 2 | libc = { path = "/base_dir/sources/rust-libc" } 3 | -------------------------------------------------------------------------------- /extra-files/firefox/mozconfig: -------------------------------------------------------------------------------- 1 | ac_add_options --disable-necko-wifi 2 | ac_add_options --target=x86_64-aero 3 | ac_add_options --with-toolchain-prefix=x86_64-aero 4 | ac_add_options --enable-project=browser 5 | ac_add_options --enable-alsa 6 | ac_add_options --prefix=/usr 7 | 8 | ac_add_options --enable-optimize 9 | 10 | # use system libs if possible 11 | ac_add_options --with-system-nss 12 | ac_add_options --with-system-jpeg 13 | ac_add_options --with-system-zlib 14 | ac_add_options --with-system-icu 15 | ac_add_options --with-system-libevent 16 | ac_add_options --with-system-nspr 17 | ac_add_options --with-system-nss 18 | ac_add_options --with-system-webp 19 | 20 | ac_add_options --enable-default-toolkit=cairo-gtk3 21 | 22 | ac_add_options --disable-pulseaudio 23 | ac_add_options --disable-crashreporter 24 | ac_add_options --disable-dbus 25 | ac_add_options --disable-updater 26 | ac_add_options --disable-tests 27 | -------------------------------------------------------------------------------- /extra-files/xorg/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | dwm & 3 | xwallpaper --zoom ~/wallpaper.png -------------------------------------------------------------------------------- /host-recipes/autoconf: -------------------------------------------------------------------------------- 1 | name=autoconf 2 | from_source=autoconf 3 | revision=1 4 | 5 | build() { 6 | "${source_dir}"/configure --prefix="${prefix}" 7 | 8 | make -j${parallelism} 9 | } 10 | 11 | package() { 12 | DESTDIR="${dest_dir}" make install 13 | 14 | strip_command=strip \ 15 | post_package_strip 16 | } 17 | -------------------------------------------------------------------------------- /host-recipes/autoconf-2.69: -------------------------------------------------------------------------------- 1 | name=autoconf-2.69 2 | from_source=autoconf-2.69 3 | revision=1 4 | 5 | build() { 6 | "${source_dir}"/configure --prefix="${prefix}" 7 | 8 | make -j${parallelism} 9 | } 10 | 11 | package() { 12 | DESTDIR="${dest_dir}" make install 13 | 14 | strip_command=strip \ 15 | post_package_strip 16 | } 17 | -------------------------------------------------------------------------------- /host-recipes/automake: -------------------------------------------------------------------------------- 1 | name=automake 2 | from_source=automake 3 | revision=1 4 | hostdeps="autoconf" 5 | imagedeps="gcc" 6 | 7 | build() { 8 | "${source_dir}"/configure --prefix="${prefix}" 9 | 10 | make -j${parallelism} 11 | } 12 | 13 | package() { 14 | DESTDIR="${dest_dir}" make install 15 | 16 | cp -pv /usr/local/share/autoconf/build-aux/config.sub "${dest_dir}${prefix}"/share/automake-1.16/ 17 | cp -pv /usr/local/share/autoconf/build-aux/config.guess "${dest_dir}${prefix}"/share/automake-1.16/ 18 | 19 | strip_command=strip \ 20 | post_package_strip 21 | } 22 | -------------------------------------------------------------------------------- /host-recipes/binutils: -------------------------------------------------------------------------------- 1 | name=binutils 2 | from_source=binutils 3 | revision=1 4 | imagedeps="gcc" 5 | hostdeps="autoconf-2.69 automake libtool pkg-config" 6 | 7 | build() { 8 | "${source_dir}"/configure \ 9 | --prefix="${prefix}" \ 10 | --target=${OS_TRIPLET} \ 11 | --with-sysroot="${sysroot_dir}" \ 12 | --disable-nls \ 13 | --disable-werror \ 14 | --disable-dependency-tracking 15 | 16 | make -j${parallelism} all 17 | } 18 | 19 | package() { 20 | DESTDIR="${dest_dir}" make install 21 | 22 | strip_command=strip \ 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /host-recipes/cmake: -------------------------------------------------------------------------------- 1 | name=cmake 2 | from_source=cmake 3 | revision=1 4 | imagedeps="gcc" 5 | 6 | build() { 7 | "${source_dir}"/configure --prefix="${prefix}" --parallel="${parallelism}" 8 | 9 | make -j${parallelism} 10 | } 11 | 12 | package() { 13 | DESTDIR="${dest_dir}" make install 14 | echo 'include(Platform/UnixPaths)' > "${dest_dir}${prefix}/share/cmake-3.27/Modules/Platform/Aero.cmake" 15 | 16 | strip_command=strip \ 17 | post_package_strip 18 | } 19 | -------------------------------------------------------------------------------- /host-recipes/gcc: -------------------------------------------------------------------------------- 1 | name=gcc 2 | from_source=gcc-host 3 | revision=1 4 | imagedeps="gcc" 5 | hostdeps="autoconf-2.69 automake libtool pkg-config" 6 | hostrundeps="binutils" 7 | deps="mlibc-headers" 8 | 9 | build() { 10 | cp -rp "${source_dir}"/. ./ 11 | 12 | mkdir build && cd build 13 | 14 | CXXFLAGS_FOR_TARGET="$CFLAGS" \ 15 | CFLAGS_FOR_TARGET="$CFLAGS" \ 16 | ../configure \ 17 | --prefix="${prefix}" \ 18 | --target=${OS_TRIPLET} \ 19 | --with-sysroot="${sysroot_dir}" \ 20 | --disable-nls \ 21 | --enable-languages=c,c++,lto \ 22 | --disable-multilib \ 23 | --enable-initfini-array \ 24 | --enable-shared \ 25 | --enable-host-shared 26 | 27 | make -j${parallelism} all-gcc 28 | } 29 | 30 | package() { 31 | cd build 32 | DESTDIR="${dest_dir}" make install-gcc 33 | 34 | ln -s ${OS_TRIPLET}-gcc "${dest_dir}${prefix}/bin/${OS_TRIPLET}-cc" 35 | 36 | strip_command=strip \ 37 | post_package_strip 38 | } 39 | -------------------------------------------------------------------------------- /host-recipes/gnulib: -------------------------------------------------------------------------------- 1 | name=gnulib 2 | from_source=gnulib 3 | revision=1 4 | -------------------------------------------------------------------------------- /host-recipes/intltool: -------------------------------------------------------------------------------- 1 | name=intltool 2 | from_source=intltool 3 | revision=1 4 | hostdeps="autoconf automake libtool pkg-config" 5 | imagedeps="gcc perl-xml-parser" 6 | 7 | build() { 8 | #cp -rp "${source_dir}"/. ./ 9 | ${source_dir}/configure \ 10 | --prefix="${prefix}" 11 | 12 | make -j${parallelism} 13 | } 14 | 15 | package() { 16 | DESTDIR="${dest_dir}" make install 17 | 18 | strip_command=strip \ 19 | post_package_strip 20 | } 21 | -------------------------------------------------------------------------------- /host-recipes/libgcc-binaries: -------------------------------------------------------------------------------- 1 | name=libgcc-binaries 2 | from_source=libgcc-binaries 3 | revision=1 4 | 5 | package() { 6 | mkdir -p ${dest_dir}${prefix}/libgcc-binaries 7 | cp -rv ${source_dir}/. ${dest_dir}${prefix}/libgcc-binaries/ 8 | } 9 | -------------------------------------------------------------------------------- /host-recipes/libtool: -------------------------------------------------------------------------------- 1 | name=libtool 2 | from_source=libtool 3 | revision=1 4 | hostdeps="autoconf automake" 5 | imagedeps="help2man gcc" 6 | 7 | build() { 8 | cp -rp "${source_dir}"/. ./ 9 | ./configure \ 10 | --prefix="${prefix}" 11 | 12 | make -j${parallelism} 13 | } 14 | 15 | package() { 16 | DESTDIR="${dest_dir}" make install 17 | 18 | cp -pv /usr/local/share/autoconf/build-aux/config.sub "${dest_dir}${prefix}"/share/libtool/build-aux/ 19 | cp -pv /usr/local/share/autoconf/build-aux/config.guess "${dest_dir}${prefix}"/share/libtool/build-aux/ 20 | 21 | strip_command=strip \ 22 | post_package_strip 23 | } 24 | -------------------------------------------------------------------------------- /host-recipes/limine: -------------------------------------------------------------------------------- 1 | name=limine 2 | from_source=limine 3 | revision=1 4 | hostdeps="gcc pkg-config" 5 | imagedeps="nasm gcc mtools" 6 | 7 | build() { 8 | "${source_dir}"/configure \ 9 | --enable-uefi-ia32 \ 10 | --enable-uefi-x86-64 \ 11 | --enable-uefi-cd \ 12 | --enable-bios \ 13 | --enable-bios-cd \ 14 | --enable-bios-pxe 15 | 16 | make -j${parallelism} 17 | } 18 | 19 | package() { 20 | DESTDIR="${dest_dir}" make install 21 | 22 | strip_command=strip \ 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /host-recipes/llvm: -------------------------------------------------------------------------------- 1 | name=llvm 2 | version=17.0.6 3 | revision=1 4 | from_source=llvm-host 5 | imagedeps="gcc cmake ninja git" 6 | source_deps="binutils" 7 | 8 | build() { 9 | cmake \ 10 | -GNinja \ 11 | -DCMAKE_INSTALL_PREFIX="${prefix}" \ 12 | -DCMAKE_BUILD_TYPE=Release \ 13 | -DLLVM_TARGETS_TO_BUILD=X86 \ 14 | -DLLVM_ENABLE_PROJECTS="llvm;clang;clang-tools-extra" \ 15 | -DDEFAULT_SYSROOT="${sysroot_dir}" \ 16 | -DLLVM_BINUTILS_INCDIR="${source_dir}/../binutils/include" \ 17 | "${source_dir}/llvm" 18 | 19 | ninja -j ${parallelism} 20 | } 21 | 22 | package() { 23 | DESTDIR="${dest_dir}" ninja install 24 | 25 | strip_command=strip \ 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /host-recipes/pkg-config: -------------------------------------------------------------------------------- 1 | name=pkg-config 2 | from_source=pkg-config 3 | revision=1 4 | imagedeps="gcc" 5 | hostdeps="automake autoconf libtool" 6 | 7 | build() { 8 | "${source_dir}"/configure \ 9 | --prefix="${prefix}" 10 | 11 | make -j${parallelism} 12 | } 13 | 14 | package() { 15 | DESTDIR="${dest_dir}" make install 16 | mkdir -p "${dest_dir}${prefix}/share/pkgconfig/personality.d" 17 | cat <"${dest_dir}${prefix}/share/pkgconfig/personality.d/${OS_TRIPLET}.personality" 18 | Triplet: ${OS_TRIPLET} 19 | SysrootDir: ${sysroot_dir} 20 | DefaultSearchPaths: ${sysroot_dir}/usr/lib/pkgconfig:${sysroot_dir}/usr/share/pkgconfig 21 | SystemIncludePaths: ${sysroot_dir}/usr/include 22 | SystemLibraryPaths: ${sysroot_dir}/usr/lib 23 | EOF 24 | ln -s pkgconf "${dest_dir}${prefix}/bin/${OS_TRIPLET}-pkg-config" 25 | 26 | strip_command=strip \ 27 | post_package_strip 28 | } 29 | -------------------------------------------------------------------------------- /host-recipes/rust: -------------------------------------------------------------------------------- 1 | name=rust 2 | revision=1 3 | from_source=rust-host 4 | hostdeps="llvm gcc rust-libc" 5 | source_deps="rust-libc" 6 | imagedeps="python git wget gcc" 7 | allow_network="yes" 8 | 9 | build() { 10 | echo "Patching out rust memes..." 11 | cp -rp "${source_dir}/." ./ 12 | 13 | mkdir /tmp/cargo 14 | cp ${base_dir}/build-support/rust/host-config.toml /tmp/cargo/config.toml 15 | CARGO_HOME=/tmp/cargo ./x.py build --stage 2 -j${parallelism} --verbose 16 | } 17 | 18 | package() { 19 | CARGO_HOME=/tmp/cargo DESTDIR="${dest_dir}" ./x.py install -j${parallelism} 20 | 21 | find ${dest_dir} -name "*.old" -delete 22 | 23 | strip_command=strip 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /host-recipes/rust-libc: -------------------------------------------------------------------------------- 1 | name=rust-libc 2 | from_source=rust-libc 3 | revision=1 4 | -------------------------------------------------------------------------------- /improving-build-times.txt: -------------------------------------------------------------------------------- 1 | total_build: 28.36s 2 | rebuild: 8.27s 3 | 4 | 16/3/2024 5 | --------- 6 | total_build: 27.29s 7 | rebuild: 9.50s 8 | -------------------------------------------------------------------------------- /misc/aero-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Andy-Python-Programmer/aero/be57ae00e122c5710d449314f828352bbc7164d2/misc/aero-logo.png -------------------------------------------------------------------------------- /misc/dwm-alacritty-glxgears.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Andy-Python-Programmer/aero/be57ae00e122c5710d449314f828352bbc7164d2/misc/dwm-alacritty-glxgears.png -------------------------------------------------------------------------------- /misc/gpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Andy-Python-Programmer/aero/be57ae00e122c5710d449314f828352bbc7164d2/misc/gpl.png -------------------------------------------------------------------------------- /patched.txt: -------------------------------------------------------------------------------- 1 | bootstrap-host-gcc 2 | llvm 3 | rust-libc 4 | webkitgtk 5 | pixman 6 | -------------------------------------------------------------------------------- /patches/cairo/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git cairo-clean/meson.build cairo-workdir/meson.build 2 | index 9100152..1b7e91d 100644 3 | --- cairo-clean/meson.build 4 | +++ cairo-workdir/meson.build 5 | @@ -374,18 +374,18 @@ if x11_dep.found() and xext_dep.found() 6 | # between a set value (bool) or the fallback value (string), so convert to 7 | # a string and check the string value. 8 | prop_str = '@0@'.format(prop) 9 | - if prop_str in ['true', 'false'] 10 | + #if prop_str in ['true', 'false'] 11 | ipc_rmid_deferred_release = (prop_str == 'true') 12 | message('IPC_RMID_DEFERRED_RELEASE:', ipc_rmid_deferred_release) 13 | - elif prop_str == 'auto' 14 | - res = cc.run(files('meson-cc-tests/ipc_rmid_deferred_release.c'), 15 | - dependencies: [x11_dep, xext_dep], 16 | - name: 'shmctl IPC_RMID allowes subsequent attaches') 17 | - 18 | - ipc_rmid_deferred_release = (res.returncode() == 0) 19 | - else 20 | - error('Unexpected value for external property ipc_rmid_deferred_release: @0@'.format(prop_str)) 21 | - endif 22 | + #elif prop_str == 'auto' 23 | + # res = cc.run(files('meson-cc-tests/ipc_rmid_deferred_release.c'), 24 | + # dependencies: [x11_dep, xext_dep], 25 | + # name: 'shmctl IPC_RMID allowes subsequent attaches') 26 | + 27 | + # ipc_rmid_deferred_release = (res.returncode() == 0) 28 | + #else 29 | + # error('Unexpected value for external property ipc_rmid_deferred_release: @0@'.format(prop_str)) 30 | + #endif 31 | 32 | conf.set10('IPC_RMID_DEFERRED_RELEASE', ipc_rmid_deferred_release) 33 | endif 34 | -------------------------------------------------------------------------------- /patches/dbus/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git dbus-clean/dbus/dbus-sysdeps-unix.c dbus-workdir/dbus/dbus-sysdeps-unix.c 2 | index dbc459c..6a3e851 100644 3 | --- dbus-clean/dbus/dbus-sysdeps-unix.c 4 | +++ dbus-workdir/dbus/dbus-sysdeps-unix.c 5 | @@ -4896,7 +4896,7 @@ _dbus_check_setuid (void) 6 | 7 | if (_DBUS_UNLIKELY (!check_setuid_initialised)) 8 | { 9 | -#ifdef HAVE_GETRESUID 10 | +#if defined HAVE_GETRESUID && !defined(__aero__) 11 | if (getresuid (&ruid, &euid, &suid) != 0 || 12 | getresgid (&rgid, &egid, &sgid) != 0) 13 | #endif /* HAVE_GETRESUID */ 14 | -------------------------------------------------------------------------------- /patches/fontconfig/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git fontconfig-clean/src/fcstat.c fontconfig-workdir/src/fcstat.c 2 | index 4f69eae..519cf1d 100644 3 | --- fontconfig-clean/src/fcstat.c 4 | +++ fontconfig-workdir/src/fcstat.c 5 | @@ -386,7 +386,7 @@ FcFStatFs (int fd, FcStatFS *statb) 6 | # endif 7 | # if defined(HAVE_STRUCT_STATFS_F_FSTYPENAME) 8 | p = buf.f_fstypename; 9 | -# elif defined(__linux__) || defined (__EMSCRIPTEN__) 10 | +# elif defined(__linux__) || defined (__aero__) || defined (__EMSCRIPTEN__) 11 | switch (buf.f_type) 12 | { 13 | case 0x6969: /* nfs */ 14 | -------------------------------------------------------------------------------- /patches/fox/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git fox-clean/configure.ac fox-workdir/configure.ac 2 | index ce0f651..189b5e8 100644 3 | --- fox-clean/configure.ac 4 | +++ fox-workdir/configure.ac 5 | @@ -9,6 +9,8 @@ AC_INIT(fox,[fox_version],jeroen@fox-toolkit.com) 6 | AC_CONFIG_SRCDIR([include/fx.h]) 7 | AM_INIT_AUTOMAKE([foreign]) 8 | 9 | +PKG_PROG_PKG_CONFIG 10 | + 11 | # Set version 12 | FOX_MAJOR_VERSION=fox_major 13 | FOX_MINOR_VERSION=fox_minor 14 | @@ -190,8 +192,8 @@ AC_MSG_CHECKING(for Xft support) 15 | AC_ARG_WITH(xft,[ --with-xft enable Xft support]) 16 | AC_MSG_RESULT([$with_xft]) 17 | if test "x$with_xft" != "xno"; then 18 | -XFTCFLAGS="-I/usr/include/freetype2" 19 | -XFTLIBS="-lfreetype -lfontconfig -lXft" 20 | +XFTCFLAGS="$($PKG_CONFIG --cflags freetype2 fontconfig xft)" 21 | +XFTLIBS="$($PKG_CONFIG --libs freetype2 fontconfig xft)" 22 | saved_cppflags="${CXXFLAGS}" 23 | CXXFLAGS="${CXXFLAGS} -DHAVE_XFT_H=1 $XFTCFLAGS" 24 | X_BASE_LIBS="${X_BASE_LIBS} $XFTLIBS" 25 | diff --git fox-clean/include/FXStream.h fox-workdir/include/FXStream.h 26 | index 41fe97a..b483556 100644 27 | --- fox-clean/include/FXStream.h 28 | +++ fox-workdir/include/FXStream.h 29 | @@ -52,9 +52,9 @@ enum FXStreamStatus { 30 | 31 | /// Stream seeking 32 | enum FXWhence { 33 | - FXFromStart=0, /// Seek from start position 34 | - FXFromCurrent=1, /// Seek from current position 35 | - FXFromEnd=2 /// Seek from end position 36 | + FXFromStart=3, /// Seek from start position (SEEK_SET) 37 | + FXFromCurrent=1, /// Seek from current position (SEEK_CUR) 38 | + FXFromEnd=2 /// Seek from end position (SEEK_END) 39 | }; 40 | 41 | 42 | -------------------------------------------------------------------------------- /patches/glib/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git glib-clean/gio/gcredentialsprivate.h glib-workdir/gio/gcredentialsprivate.h 2 | index 0310a75..f967f90 100644 3 | --- glib-clean/gio/gcredentialsprivate.h 4 | +++ glib-workdir/gio/gcredentialsprivate.h 5 | @@ -104,7 +104,7 @@ 6 | */ 7 | #undef G_CREDENTIALS_HAS_PID 8 | 9 | -#ifdef __linux__ 10 | +#if defined(__linux__) || defined(__aero__) 11 | #define G_CREDENTIALS_SUPPORTED 1 12 | #define G_CREDENTIALS_USE_LINUX_UCRED 1 13 | #define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_LINUX_UCRED 14 | diff --git glib-clean/glib/giounix.c glib-workdir/glib/giounix.c 15 | index 84e8135..5b68f25 100644 16 | --- glib-clean/glib/giounix.c 17 | +++ glib-workdir/glib/giounix.c 18 | @@ -440,7 +440,10 @@ g_io_unix_get_flags (GIOChannel *channel) 19 | channel->is_writeable = TRUE; 20 | break; 21 | default: 22 | - g_assert_not_reached (); 23 | + channel->is_readable = TRUE; 24 | + channel->is_writeable = TRUE; 25 | + break; 26 | + // g_assert_not_reached (); 27 | } 28 | 29 | return flags; 30 | diff --git glib-clean/glib/glib-init.c glib-workdir/glib/glib-init.c 31 | index 933f891..393e51d 100644 32 | --- glib-clean/glib/glib-init.c 33 | +++ glib-workdir/glib/glib-init.c 34 | @@ -29,6 +29,7 @@ 35 | #include "gmem.h" /* for g_mem_gc_friendly */ 36 | 37 | #include 38 | +#include 39 | #include 40 | #include 41 | #include 42 | diff --git glib-clean/glib/gstrfuncs.c glib-workdir/glib/gstrfuncs.c 43 | index 22a608d..29e123c 100644 44 | --- glib-clean/glib/gstrfuncs.c 45 | +++ glib-workdir/glib/gstrfuncs.c 46 | @@ -35,6 +35,7 @@ 47 | #include 48 | #include 49 | #include 50 | +#include 51 | #include 52 | #include 53 | #include 54 | -------------------------------------------------------------------------------- /patches/gtk+-3/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git gtk+-3-clean/gtk/a11y/gtkaccessibility.c gtk+-3-workdir/gtk/a11y/gtkaccessibility.c 2 | index 7f0e520..3bf670c 100644 3 | --- gtk+-3-clean/gtk/a11y/gtkaccessibility.c 4 | +++ gtk+-3-workdir/gtk/a11y/gtkaccessibility.c 5 | @@ -974,6 +974,10 @@ do_window_event_initialization (void) 6 | void 7 | _gtk_accessibility_init (void) 8 | { 9 | +// We don't care about a11y at this point in time and dbus isn't working, so let's just not start that. 10 | +#ifdef __aero__ 11 | + return; 12 | +#else 13 | if (initialized) 14 | return; 15 | 16 | @@ -993,4 +997,5 @@ _gtk_accessibility_init (void) 17 | #endif 18 | 19 | atk_misc_instance = g_object_new (GTK_TYPE_MISC_IMPL, NULL); 20 | +#endif 21 | } 22 | diff --git gtk+-3-clean/gtk/gtkmain.c gtk+-3-workdir/gtk/gtkmain.c 23 | index ae64e18..2d43754 100644 24 | --- gtk+-3-clean/gtk/gtkmain.c 25 | +++ gtk+-3-workdir/gtk/gtkmain.c 26 | @@ -355,6 +355,11 @@ static gboolean 27 | check_setugid (void) 28 | { 29 | /* this isn't at all relevant on MS Windows and doesn't compile ... --hb */ 30 | +#ifdef __aero__ 31 | + /* Lyre runs everything as root for the time being, this check is thus useless. */ 32 | + g_warning("Lyre ignores the setugid check!\n"); 33 | + return TRUE; 34 | +#endif 35 | #ifndef G_OS_WIN32 36 | uid_t ruid, euid, suid; /* Real, effective and saved user ID's */ 37 | gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */ 38 | -------------------------------------------------------------------------------- /patches/libgcrypt/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git a/random/rndunix.c b/random/rndunix.c 2 | index fcb45b7..1e32242 100644 3 | --- a/random/rndunix.c 4 | +++ b/random/rndunix.c 5 | @@ -105,7 +105,7 @@ 6 | #include 7 | #include 8 | #include 9 | -#ifndef __QNX__ 10 | +#if !defined __QNX__ && !defined (__aero__) 11 | #include 12 | #include 13 | #endif /* __QNX__ */ 14 | @@ -119,7 +119,9 @@ 15 | #ifndef __QNX__ 16 | #include 17 | #include 18 | +#ifndef __aero__ 19 | #include 20 | +#endif 21 | #endif /* __QNX__ */ 22 | #include 23 | #include /* Verschiedene komische Typen */ 24 | -------------------------------------------------------------------------------- /patches/ncurses/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git ncurses-clean/configure ncurses-workdir/configure 2 | index d652dc0..1572ae3 100755 3 | --- ncurses-clean/configure 4 | +++ ncurses-workdir/configure 5 | @@ -6923,6 +6923,10 @@ CF_EOF 6 | LINK_PROGS="$SHELL ${rel_builddir}/mk_prog.sh" 7 | LINK_TESTS="$SHELL ${rel_builddir}/mk_prog.sh" 8 | ;; 9 | + (aero*) 10 | + CC_SHARED_OPTS='-fPIC' 11 | + MK_SHARED_LIB='${CC} -shared -o $@' 12 | + ;; 13 | (mingw*) 14 | cf_cv_shlib_version=mingw 15 | cf_cv_shlib_version_infix=mingw 16 | -------------------------------------------------------------------------------- /patches/python/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git python-clean/configure.ac python-workdir/configure.ac 2 | index cd69f0e..74fc416 100644 3 | --- python-clean/configure.ac 4 | +++ python-workdir/configure.ac 5 | @@ -553,6 +553,9 @@ then 6 | *-*-cygwin*) 7 | ac_sys_system=Cygwin 8 | ;; 9 | + *-*-aero*) 10 | + ac_sys_system=Aero 11 | + ;; 12 | *-*-vxworks*) 13 | ac_sys_system=VxWorks 14 | ;; 15 | @@ -619,6 +622,9 @@ if test "$cross_compiling" = yes; then 16 | *-*-vxworks*) 17 | _host_cpu=$host_cpu 18 | ;; 19 | + *-*-aero*) 20 | + _host_cpu=$host_cpu 21 | + ;; 22 | wasm32-*-* | wasm64-*-*) 23 | _host_cpu=$host_cpu 24 | ;; 25 | @@ -3216,6 +3222,9 @@ then 26 | CYGWIN*) 27 | LDSHARED="gcc -shared -Wl,--enable-auto-image-base" 28 | LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";; 29 | + Aero*) 30 | + LDSHARED='$(CC) -shared' 31 | + LDCXXSHARED='$(CXX) - shared';; 32 | *) LDSHARED="ld";; 33 | esac 34 | fi 35 | @@ -3268,7 +3277,9 @@ then 36 | else CCSHARED="-Kpic -belf" 37 | fi;; 38 | VxWorks*) 39 | - CCSHARED="-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic" 40 | + CCSHARED="-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic";; 41 | + Aero*) 42 | + CCSHARED="-fPIC";; 43 | esac 44 | fi 45 | AC_MSG_RESULT([$CCSHARED]) 46 | @@ -3338,6 +3349,8 @@ then 47 | LINKFORSHARED='-Wl,-E -N 2048K';; 48 | VxWorks*) 49 | LINKFORSHARED='-Wl,-export-dynamic';; 50 | + Aero*) 51 | + LINKFORSHARED='-export-dynamic';; 52 | esac 53 | fi 54 | AC_MSG_RESULT([$LINKFORSHARED]) 55 | -------------------------------------------------------------------------------- /patches/readline/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git readline-clean/support/shlib-install readline-workdir/support/shlib-install 2 | index 661355d..cd7d659 100755 3 | --- readline-clean/support/shlib-install 4 | +++ readline-workdir/support/shlib-install 5 | @@ -71,7 +71,7 @@ fi 6 | # Cygwin installs both a dll (which must go in $BINDIR) and an implicit 7 | # link library (in $libdir) 8 | case "$host_os" in 9 | -hpux*|darwin*|macosx*|linux*|solaris2*) 10 | +hpux*|darwin*|macosx*|linux*|solaris2*|aero*) 11 | if [ -z "$uninstall" ]; then 12 | chmod 755 ${INSTALLDIR}/${LIBNAME} 13 | fi ;; 14 | @@ -146,7 +146,7 @@ bsdi4*|*gnu*|darwin*|macosx*|netbsd*|mirbsd*) 15 | fi 16 | ;; 17 | 18 | -solaris2*|aix4.[2-9]*|aix[5-9]*|osf*|irix[56]*|sysv[45]*|dgux*|interix*) 19 | +solaris2*|aix4.[2-9]*|aix[5-9]*|osf*|irix[56]*|sysv[45]*|dgux*|interix*|aero*) 20 | # libname.so -> libname.so.M 21 | ${echo} ${RM} ${INSTALLDIR}/$LINK1 22 | if [ -z "$uninstall" ]; then 23 | -------------------------------------------------------------------------------- /patches/xorg-xinit/jinx-working-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git xorg-xinit-clean/startx.cpp xorg-xinit-workdir/startx.cpp 2 | index dfbebe1..99a0586 100644 3 | --- xorg-xinit-clean/startx.cpp 4 | +++ xorg-xinit-workdir/startx.cpp 5 | @@ -127,6 +127,8 @@ if defaults read $X11_PREFS_DOMAIN 2> /dev/null | grep -q 'dpi' && defaults read 6 | defaultserverargs="$defaultserverargs -dpi `defaults read $X11_PREFS_DOMAIN dpi`" 7 | fi 8 | 9 | +#elif defined(__aero__) 10 | +enable_xauth=0 11 | #else 12 | enable_xauth=1 13 | #endif 14 | -------------------------------------------------------------------------------- /recipes/at-spi2-core: -------------------------------------------------------------------------------- 1 | name=at-spi2-core 2 | version=2.51.0 3 | revision=1 4 | tarball_url="https://download.gnome.org/sources/at-spi2-core/2.51/at-spi2-core-${version}.tar.xz" 5 | tarball_blake2b="67a622f1ffba322183c6c04c8de6311bceb48f6ad6d34ad7bc33b22ab0c695a5395b5aad729eff699ab1c0525d1a4059c30899b03be8656e87204ec4333e432c" 6 | imagedeps="meson ninja" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs dbus glib libxml" 9 | 10 | build() { 11 | meson_configure \ 12 | -Dsystemd_user_dir=/tmp \ 13 | -Dintrospection=disabled 14 | 15 | ninja -j${parallelism} 16 | } 17 | 18 | package() { 19 | DESTDIR="${dest_dir}" ninja install 20 | 21 | post_package_strip 22 | } 23 | -------------------------------------------------------------------------------- /recipes/autoconf-archive: -------------------------------------------------------------------------------- 1 | name=autoconf-archive 2 | version=2023.02.20 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/autoconf-archive/autoconf-archive-${version}.tar.xz" 5 | tarball_blake2b="a72469e61a6ef702cbf4e30712c7dbe36369da7dad6e2312eb7026af41a989a47ded0a27975349486b69155f9e8199f89720dc57f98440b2766294a0f8755ee6" 6 | 7 | package() { 8 | mkdir -p "${dest_dir}${prefix}"/share/aclocal 9 | cp -r "${source_dir}"/m4/. "${dest_dir}${prefix}"/share/aclocal/ 10 | 11 | post_package_strip 12 | } 13 | -------------------------------------------------------------------------------- /recipes/base-files: -------------------------------------------------------------------------------- 1 | name=base-files 2 | version=0.0 3 | revision=1 4 | source_dir="base-files" 5 | 6 | package() { 7 | cp -rpv ${source_dir}/. "${dest_dir}"/ 8 | } 9 | -------------------------------------------------------------------------------- /recipes/bash: -------------------------------------------------------------------------------- 1 | name=bash 2 | version=5.2.21 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/bash/bash-${version}.tar.gz" 5 | tarball_blake2b="6789c9a0d9eb1ad167d4199bf1438d77934a7bbeae9f9fdd7167cae006b17b3894852440248db1bb6e9cf6d930e8a18b6448a3bb4db8831b2e6d1445b56a2065" 6 | source_hostdeps="autoconf automake libtool pkg-config" 7 | imagedeps="gcc" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs ncurses readline" 10 | 11 | regenerate() { 12 | AUTOHEADER=true autoreconf -fvi 13 | } 14 | 15 | build() { 16 | autotools_configure \ 17 | --with-curses \ 18 | --enable-readline \ 19 | --without-bash-malloc \ 20 | --with-installed-readline="${sysroot}/usr/lib" 21 | 22 | make -j${parallelism} 23 | } 24 | 25 | package() { 26 | make install DESTDIR="${dest_dir}" 27 | ln -s bash "${dest_dir}${prefix}"/bin/sh 28 | 29 | post_package_strip 30 | } 31 | -------------------------------------------------------------------------------- /recipes/binutils: -------------------------------------------------------------------------------- 1 | name=binutils 2 | version=2.41 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/binutils/binutils-${version}.tar.xz" 5 | tarball_blake2b="3bccec2b52f7e82a727121bf2a2e51a6249ba63dcd74c665fd834e858645c912ffd8245d848435288b938852830b482905606f55c40df4061215fd75c52ffc75" 6 | source_hostdeps="autoconf-2.69 automake libtool pkg-config" 7 | imagedeps="gcc" 8 | hostdeps="gcc autoconf-2.69 automake libtool pkg-config" 9 | deps="core-libs zlib gmp" 10 | 11 | regenerate() { 12 | autotools_recursive_regen -I"$(realpath ./config)" 13 | 14 | cp -pv /usr/local/share/libtool/build-aux/{config.sub,config.guess,install-sh} libiberty/ 15 | } 16 | 17 | build() { 18 | autotools_configure \ 19 | --target=${OS_TRIPLET} \ 20 | --disable-werror \ 21 | --disable-dependency-tracking \ 22 | --enable-colored-disassembly \ 23 | --with-system-zlib \ 24 | --with-gmp=${sysroot_dir}/usr 25 | 26 | SFRAME_LIB_PATH="-L$(pwd -P)/libsframe/.libs" \ 27 | make -j${parallelism} all 28 | } 29 | 30 | package() { 31 | DESTDIR="${dest_dir}" make install 32 | 33 | # Remove unnecessary directory 34 | rm -rf "${dest_dir}${prefix}"/${OS_TRIPLET} 35 | 36 | # Remove static libraries 37 | rm -rf "${dest_dir}${prefix}"/lib/*.a 38 | 39 | post_package_strip 40 | } 41 | -------------------------------------------------------------------------------- /recipes/cairo: -------------------------------------------------------------------------------- 1 | name=cairo 2 | version=1.18.0 3 | revision=1 4 | tarball_url="https://cairographics.org/releases/cairo-${version}.tar.xz" 5 | tarball_blake2b="6f6abedb2614e3dd1eed7fcb97cd11296584fb2072617ab3d532bee94e6a83db003ce770d39ba1df84c96a9f6880f4de357f78a22904daf1bb874c9570abd336" 6 | imagedeps="meson ninja binutils" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs freetype2 fontconfig libpng pixman libxcb libx11 libxext mesa libxrender glib zlib" 9 | 10 | build() { 11 | meson_configure \ 12 | -Dxlib-xcb=enabled \ 13 | -Dzlib=enabled \ 14 | -Dtee=enabled \ 15 | -Dtests=disabled 16 | 17 | ninja -j${parallelism} 18 | } 19 | 20 | package() { 21 | DESTDIR="${dest_dir}" ninja install 22 | 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /recipes/core-libs: -------------------------------------------------------------------------------- 1 | name=core-libs 2 | revision=1 3 | deps="mlibc libgcc libstdc++ libintl libiconv libxcrypt" 4 | -------------------------------------------------------------------------------- /recipes/coreutils: -------------------------------------------------------------------------------- 1 | name=coreutils 2 | version=9.4 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/coreutils/coreutils-${version}.tar.xz" 5 | tarball_blake2b="83d41c48804c1d470c0e5eed38e692bb6875436dda3f6e2c29784ad6ef563d86e8e066a050e222621b400f78ea4630b1e127d20fc9b76f12096528c42677e35d" 6 | source_imagedeps="gcc gperf" 7 | source_hostdeps="automake autoconf libtool pkg-config" 8 | imagedeps="gcc gperf" 9 | hostdeps="gcc automake autoconf libtool pkg-config" 10 | deps="core-libs tzdata" 11 | 12 | regenerate() { 13 | autotools_recursive_regen 14 | 15 | # Huge hack: coreutils does not compile the build-machine binary make-prime-list 16 | # using the build-machine compiler. Hence, build and invoke the binary manually here. 17 | mkdir tmp_build_dir 18 | pushd tmp_build_dir 19 | 20 | ../configure 21 | make src/make-prime-list 22 | ./src/make-prime-list 5000 > ../src/primes.h 23 | 24 | popd 25 | rm -rf tmp_build_dir 26 | } 27 | 28 | build() { 29 | cp -rp "${source_dir}"/. ./ 30 | 31 | configure_script_path=./configure \ 32 | CFLAGS="-DSLOW_BUT_NO_HACKS $CFLAGS" \ 33 | autotools_configure 34 | 35 | make -j${parallelism} 36 | } 37 | 38 | package() { 39 | DESTDIR="${dest_dir}" make install-strip 40 | post_package_strip 41 | } 42 | -------------------------------------------------------------------------------- /recipes/cxxshim: -------------------------------------------------------------------------------- 1 | name=cxxshim 2 | version=6f146a41dda736572879fc524cf729eb193dc0a6 3 | revision=1 4 | tarball_url="https://github.com/managarm/cxxshim/archive/${version}.tar.gz" 5 | tarball_blake2b="05d8cbad3d46b4272c7e31b1c8041cc5e640cc66853dddf58af953aeba6697dcbc05decb01dc6d4669fec52acd18b3265706dbf710d11dd98e7c1771ac598a49" 6 | imagedeps="meson ninja" 7 | hostdeps="pkg-config" 8 | 9 | build() { 10 | meson_configure \ 11 | --includedir=share/cxxshim/include \ 12 | -Dinstall_headers=true 13 | 14 | ninja -j${parallelism} 15 | } 16 | 17 | package() { 18 | DESTDIR="${dest_dir}" ninja install 19 | 20 | post_package_strip 21 | } 22 | -------------------------------------------------------------------------------- /recipes/dbus: -------------------------------------------------------------------------------- 1 | name=dbus 2 | version=1.15.8 3 | revision=1 4 | tarball_url="https://dbus.freedesktop.org/releases/dbus/dbus-${version}.tar.xz" 5 | tarball_blake2b="7c1962dfccc6a1b6250e80b0706d7f44536fabeff009013865ec4b1edaec6d4b47dcbe8f78caa61ef7aef4bac6b79f0e2027dd16bbb2baae328429e648bf8b8c" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="autoconf-archive" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs glib libexpat" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure \ 17 | --runstatedir=/run \ 18 | --disable-doxygen-docs \ 19 | --disable-xml-docs \ 20 | --with-systemdsystemunitdir=no \ 21 | --with-systemduserunitdir=no \ 22 | --with-system-pid-file=/run/dbus/pid \ 23 | --with-system-socket=/run/dbus/system_bus_socket \ 24 | --disable-selinux \ 25 | --disable-apparmor \ 26 | --disable-libaudit \ 27 | --disable-kqueue \ 28 | --disable-launchd \ 29 | --disable-systemd \ 30 | --disable-tests 31 | 32 | make -j${parallelism} 33 | } 34 | 35 | package() { 36 | DESTDIR="${dest_dir}" make install 37 | 38 | post_package_strip 39 | } 40 | -------------------------------------------------------------------------------- /recipes/findutils: -------------------------------------------------------------------------------- 1 | name=findutils 2 | version=4.9.0 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/findutils/findutils-${version}.tar.xz" 5 | tarball_blake2b="3ada8903fc552ad2e580a7b631a4b9d941935b3f4231029564c6f2b7b10ba6f2244e2de57f6d79268c5e0481a193f64edbbae637e7a51ae6f495e3eefabf52c9" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="python" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | cp -rp "${source_dir}"/. ./ 17 | 18 | configure_script_path=./configure \ 19 | autotools_configure \ 20 | --without-selinux 21 | 22 | make -j${parallelism} 23 | } 24 | 25 | package() { 26 | DESTDIR="${dest_dir}" make install 27 | 28 | post_package_strip 29 | } 30 | 31 | -------------------------------------------------------------------------------- /recipes/fontconfig: -------------------------------------------------------------------------------- 1 | name=fontconfig 2 | version=2.14.2 3 | revision=1 4 | tarball_url="https://www.freedesktop.org/software/fontconfig/release/fontconfig-${version}.tar.xz" 5 | tarball_blake2b="4efeeb7f9a6705d493128d00b60e681a20a47556f4c0d7787a5c7a6d2cbbc22f150cad7988a9836a9e72aeb61e2b6a196c00a071c7042c62283c7720cdbb743d" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="python gperf" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs freetype2 libexpat libxml" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | 14 | # Make sure we regenerate this file 15 | rm -f src/fcobjshash.h 16 | } 17 | 18 | build() { 19 | autotools_configure \ 20 | --enable-libxml2 21 | 22 | make -j${parallelism} 23 | } 24 | 25 | package() { 26 | DESTDIR="${dest_dir}" make install 27 | 28 | post_package_strip 29 | } 30 | -------------------------------------------------------------------------------- /recipes/fox: -------------------------------------------------------------------------------- 1 | name=fox 2 | version=1.6.57 3 | revision=1 4 | tarball_url="http://fox-toolkit.org/ftp/fox-${version}.tar.gz" 5 | tarball_blake2b="3efbc6188225f9444fbd347359e8b4041a08fe654acb99c48e4966e501a2f72a44863f2e9b60ae810a259951f89cfc27b9a8b6341e029627066712e0dbf20e40" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs libx11 libxft libxext freetype2 glu" 9 | 10 | regenerate() { 11 | autotools_recursive_regen 12 | } 13 | 14 | build() { 15 | cp -rp "${source_dir}"/. ./ 16 | 17 | configure_script_path=./configure \ 18 | autotools_configure 19 | 20 | make -j${parallelism} 21 | } 22 | 23 | package() { 24 | DESTDIR="${dest_dir}" make install 25 | 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /recipes/freeglut: -------------------------------------------------------------------------------- 1 | name=freeglut 2 | version=3.4.0 3 | revision=1 4 | tarball_url="https://github.com/FreeGLUTProject/freeglut/releases/download/v${version}/freeglut-${version}.tar.gz" 5 | tarball_blake2b="47b073c4e81473417358452ede3891b6fc36e324f66eec42fcbbadebb2144680e3b52caded504135239e170fd8f30a1fe8b6666a746b06d48cd7226c98a8114e" 6 | imagedeps="gcc ninja python git" 7 | hostdeps="gcc cmake pkg-config" 8 | deps="core-libs libxi mesa glu" 9 | 10 | build() { 11 | cmake \ 12 | -GNinja \ 13 | -DCMAKE_TOOLCHAIN_FILE=${base_dir}/userland/CMakeToolchain-x86_64.cmake \ 14 | -DCMAKE_INSTALL_PREFIX=/usr \ 15 | -DCMAKE_BUILD_TYPE=Release \ 16 | -DBUILD_SHARED_LIBS=ON \ 17 | -DFREEGLUT_BUILD_DEMOS=OFF \ 18 | -DFREEGLUT_BUILD_STATIC_LIBS=OFF \ 19 | ${source_dir} 20 | 21 | ninja 22 | } 23 | 24 | package() { 25 | DESTDIR="${dest_dir}" ninja install 26 | 27 | post_package_strip 28 | } 29 | -------------------------------------------------------------------------------- /recipes/freetype2: -------------------------------------------------------------------------------- 1 | name=freetype2 2 | version=2.13.2 3 | revision=1 4 | tarball_url="https://download.savannah.gnu.org/releases/freetype/freetype-${version}.tar.xz" 5 | tarball_blake2b="cebc82180d9afaeb112a65ba78903d7bf7a9295a803166a033585ad2325add6023f05066852240c4665e56285345ba503b01ecd461d48f0478a8f3f56136988e" 6 | source_hostdeps="pkg-config" 7 | imagedeps="meson gcc" 8 | hostdeps="gcc pkg-config" 9 | deps="core-libs bzip2 libpng zlib" 10 | 11 | build() { 12 | meson_configure 13 | 14 | ninja -j${parallelism} 15 | } 16 | 17 | package() { 18 | DESTDIR="${dest_dir}" ninja install 19 | 20 | post_package_strip 21 | } 22 | -------------------------------------------------------------------------------- /recipes/fribidi: -------------------------------------------------------------------------------- 1 | name=fribidi 2 | version=1.0.13 3 | revision=1 4 | tarball_url="https://github.com/fribidi/fribidi/releases/download/v${version}/fribidi-${version}.tar.xz" 5 | tarball_blake2b="8cc31220304ddbdeb0047b30ed9084921920b32ad3f1bdcf29ecbb2fafbd430c391bc99bb7f205546ff8482aea1ef7ed369da71deb3474aa623fc2aeace1b62a" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="gcc" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/frigg: -------------------------------------------------------------------------------- 1 | name=frigg 2 | version=dd9d1eab062e8168edafe8d6249524e4e2b157fe 3 | revision=1 4 | tarball_url="https://github.com/managarm/frigg/archive/${version}.tar.gz" 5 | tarball_blake2b="7d77f563f604a590713733b2f0030d0465dd4abbc304c6e183895146ba57bc3cc73993edee898a7a43eadb97d731297b0fb76d3cfc7e5b2ec61d3ec360cc540d" 6 | imagedeps="gcc meson ninja" 7 | hostdeps="pkg-config" 8 | 9 | build() { 10 | meson_configure \ 11 | --includedir=share/frigg/include \ 12 | --buildtype=debugoptimized \ 13 | -Dbuild_tests=disabled 14 | 15 | ninja -j${parallelism} 16 | } 17 | 18 | package() { 19 | DESTDIR="${dest_dir}" ninja install 20 | 21 | post_package_strip 22 | } 23 | -------------------------------------------------------------------------------- /recipes/gcc: -------------------------------------------------------------------------------- 1 | name=gcc 2 | version=13.2.0 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/gcc/gcc-${version}/gcc-${version}.tar.xz" 5 | tarball_blake2b="0034b29d3d6cc05821f0c4253ce077805943aff7b370729dd203bda57d89c107edd657eeddc2fb1e69ea15c7b0323b961f46516c7f4af89a3ccf7fea84701be2" 6 | source_hostdeps="automake autoconf-2.69 libtool pkg-config" 7 | source_imagedeps="git" 8 | hostdeps="gcc autoconf-2.69 automake libtool pkg-config" 9 | deps="core-libs binutils zlib gmp mpfr mpc" 10 | imagedeps="gcc" 11 | 12 | regenerate() { 13 | for i in "${base_dir}"/patches/gcc-host/*; do 14 | patch -p1 < "$i" 15 | done 16 | 17 | autotools_recursive_regen -I"$(realpath ./config)" 18 | 19 | cp -pv /usr/local/share/libtool/build-aux/{config.sub,config.guess,install-sh} libiberty/ 20 | } 21 | 22 | build() { 23 | CXXFLAGS_FOR_TARGET="$CFLAGS" \ 24 | CFLAGS_FOR_TARGET="$CFLAGS" \ 25 | autotools_configure \ 26 | --target=${OS_TRIPLET} \ 27 | --with-sysroot=/ \ 28 | --with-build-sysroot=${sysroot_dir} \ 29 | --enable-languages=c,c++,lto \ 30 | --enable-initfini-array \ 31 | --disable-multilib \ 32 | --with-system-zlib \ 33 | --enable-host-shared \ 34 | --with-pkgversion=aero \ 35 | --with-bugurl="https://github.com/Andy-Python-Programmer/aero/issues" 36 | 37 | make -j${parallelism} all-gcc 38 | } 39 | 40 | package() { 41 | DESTDIR="${dest_dir}" make install-gcc 42 | 43 | ln -s gcc "${dest_dir}${prefix}"/bin/cc 44 | # Remove static libraries 45 | rm -rf "${dest_dir}${prefix}"/lib/*.a 46 | 47 | post_package_strip 48 | } 49 | -------------------------------------------------------------------------------- /recipes/gdk-pixbuf: -------------------------------------------------------------------------------- 1 | name=gdk-pixbuf 2 | version=2.42.10 3 | revision=1 4 | tarball_url="https://download.gnome.org/sources/gdk-pixbuf/2.42/gdk-pixbuf-${version}.tar.xz" 5 | tarball_blake2b="b6bec388b70a971ea5b336001920fdf433bcbc539d54e62c7b6198e968f0bd3560ef9adc94215b64b01e7d5db69c95d5a1d32654b38b051fceb75e93666b3385" 6 | imagedeps="meson ninja" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs glib libjpeg-turbo libpng libx11 libtiff" 9 | 10 | build() { 11 | meson_configure \ 12 | -Dgio_sniffing=false \ 13 | -Dman=false 14 | 15 | ninja -j${parallelism} 16 | } 17 | 18 | package() { 19 | DESTDIR="${dest_dir}" ninja install 20 | 21 | post_package_strip 22 | } 23 | -------------------------------------------------------------------------------- /recipes/gettext: -------------------------------------------------------------------------------- 1 | name=gettext 2 | version=0.22.4 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/gettext/gettext-${version}.tar.xz" 5 | tarball_blake2b="3f93aa5aef8e40d2e01acaa5aeed11efefd0de43ea26d084a0b9e743019685f7584d8e1bf05c1fd5772a5576d21ee1f052b81366f52c7827b6d14bd4d9890edc" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs" 9 | 10 | regenerate() { 11 | ( cd gettext-runtime/libasprintf && autoreconf -fvi ) 12 | ( cd gettext-runtime/intl && autoreconf -fvi ) 13 | ( cd gettext-runtime && autoreconf -fvi ) 14 | ( cd gettext-tools && autoreconf -fvi ) 15 | ( cd libtextstyle && autoreconf -fvi ) 16 | autoreconf -fvi 17 | } 18 | 19 | build() { 20 | cp -rp ${source_dir}/. ./ 21 | 22 | ACLOCAL=true \ 23 | AUTOCONF=true \ 24 | AUTOMAKE=true \ 25 | AUTOHEADER=true \ 26 | configure_script_path=./configure \ 27 | autotools_configure 28 | 29 | make -j${parallelism} 30 | } 31 | 32 | package() { 33 | DESTDIR="${dest_dir}" make install 34 | 35 | # Remove conflicting libintl files 36 | rm -f "${dest_dir}${prefix}"/include/libintl.h 37 | rm -f "${dest_dir}${prefix}"/lib/libintl.so* 38 | rm -f "${dest_dir}${prefix}"/share/locale/locale.alias 39 | 40 | post_package_strip 41 | } 42 | -------------------------------------------------------------------------------- /recipes/glib: -------------------------------------------------------------------------------- 1 | name=glib 2 | version=2.78.1 3 | revision=1 4 | tarball_url="https://download.gnome.org/sources/glib/2.78/glib-${version}.tar.xz" 5 | tarball_blake2b="af8f2e83600dfb3ec84702399cb00a3aaedbc80087e35dc7cc2e2374d4fe5fdf82707ac8c911da1c53eb7b027c9da9ecfc1c0a8f56b39431fa4cf44cad5b10f7" 6 | imagedeps="meson ninja" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs pcre2 libffi zlib" 9 | 10 | build() { 11 | meson_configure \ 12 | -Dxattr=false 13 | 14 | ninja -j${parallelism} 15 | } 16 | 17 | package() { 18 | DESTDIR="${dest_dir}" ninja install 19 | 20 | post_package_strip 21 | } 22 | -------------------------------------------------------------------------------- /recipes/glib-networking: -------------------------------------------------------------------------------- 1 | name=glib-networking 2 | version=2.78.0 3 | tarball_url="https://gitlab.gnome.org/GNOME/glib-networking/-/archive/${version}/glib-networking-${version}.tar.gz" 4 | tarball_blake2b="a8b73a303f427c8069db9060f4037051b11a5bcc83f5c3673ac3ca630f22de31a911b9a31056e35e59ace52609718f2d4055aac08d1975a158d4a4a135a81204" 5 | deps="core-libs glib openssl" 6 | imagedeps="meson" 7 | hostdeps="gcc pkg-config" 8 | 9 | build() { 10 | meson_configure \ 11 | -Dgnutls=disabled \ 12 | -Dopenssl=enabled \ 13 | -Dinstalled_tests=false \ 14 | -Dlibproxy=disabled \ 15 | -Dgnome_proxy=disabled 16 | 17 | ninja -j${parallelism} 18 | } 19 | 20 | package() { 21 | DESTDIR="${dest_dir}" ninja install 22 | } 23 | -------------------------------------------------------------------------------- /recipes/glu: -------------------------------------------------------------------------------- 1 | name=glu 2 | version=9.0.3 3 | revision=1 4 | tarball_url="https://archive.mesa3d.org/glu/glu-${version}.tar.xz" 5 | tarball_blake2b="a6fc842004dcca4243ef285e26806afdfb931d21985ad8f9a3f03f438e66b810718bf04e588044ed8db99990e49f806d346dc2ce69cfa91450f046a4dfa39136" 6 | imagedeps="meson ninja" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs mesa" 9 | 10 | build() { 11 | meson_configure \ 12 | -Dgl_provider=gl 13 | 14 | ninja -j${parallelism} 15 | } 16 | 17 | package() { 18 | DESTDIR="${dest_dir}" ninja install 19 | 20 | post_package_strip 21 | } 22 | -------------------------------------------------------------------------------- /recipes/gmp: -------------------------------------------------------------------------------- 1 | name=gmp 2 | version=6.3.0 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/gmp/gmp-${version}.tar.xz" 5 | tarball_blake2b="a865129e2b3f634ec5bad7f97ed89532e43f5662ac47a7d8ab7f0df8c9f8d0886bd984651422e2573c2163bca69c0547c248147ec90880accbd53db97dc0ddee" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="gcc" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs" 10 | 11 | regenerate() { 12 | autoreconf -fvi 13 | } 14 | 15 | build() { 16 | autotools_configure \ 17 | --enable-cxx 18 | 19 | make -j${parallelism} 20 | } 21 | 22 | package() { 23 | DESTDIR="${dest_dir}" make install 24 | 25 | post_package_strip 26 | } 27 | -------------------------------------------------------------------------------- /recipes/graphite2: -------------------------------------------------------------------------------- 1 | name=graphite2 2 | version=1.3.14 3 | revision=1 4 | tarball_url="https://github.com/silnrsi/graphite/releases/download/${version}/graphite2-${version}.tgz" 5 | tarball_blake2b="72bf6736aaa8476a89e44ef53c5b6c94f45d815fe1a451ba6b3696bfe023971210975dee4a9c8cb3042f36442e4efecf5baf171ef4230ad2b10694a89865f918" 6 | imagedeps="ninja python" 7 | hostdeps="gcc cmake pkg-config" 8 | deps="core-libs" 9 | 10 | build() { 11 | cmake \ 12 | -GNinja \ 13 | -DCMAKE_TOOLCHAIN_FILE=${base_dir}/userland/CMakeToolchain-x86_64.cmake \ 14 | -DCMAKE_INSTALL_PREFIX=${prefix} \ 15 | -DCMAKE_BUILD_TYPE=Release \ 16 | ${source_dir} 17 | 18 | ninja 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" ninja install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/grep: -------------------------------------------------------------------------------- 1 | name=grep 2 | version=3.11 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/grep/grep-${version}.tar.xz" 5 | tarball_blake2b="e21785bca20b5a090d32bb5dc525fb298af30165106ed4c289b1518ea3d2acdcacfd6309b12f13be29a4b958f19588546119c695deb2b7500d49dcff86357bdc" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="gperf" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs pcre2" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | cp -rp "${source_dir}"/. ./ 17 | 18 | configure_script_path=./configure \ 19 | autotools_configure 20 | 21 | make -j${parallelism} 22 | } 23 | 24 | package() { 25 | DESTDIR="${dest_dir}" make install 26 | 27 | post_package_strip 28 | } 29 | -------------------------------------------------------------------------------- /recipes/gsettings-desktop-schemas: -------------------------------------------------------------------------------- 1 | name=gsettings-desktop-schemas 2 | version=45.0 3 | revision=1 4 | tarball_url="https://download.gnome.org/sources/gsettings-desktop-schemas/45/gsettings-desktop-schemas-${version}.tar.xz" 5 | tarball_blake2b="b65c846654fac5a104ad9a7d67546c6fb3d54aada178d58c575d22a8c2adc0057c1f1dc177562740f7ae94d0e17743789ca902db7c2fcc42c844bb66e401eaec" 6 | imagedeps="meson ninja" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs glib" 9 | 10 | regenerate() { 11 | sed -i -r 's:"(/system):"/org/gnome\1:g' schemas/*.in 12 | } 13 | 14 | build() { 15 | meson_configure \ 16 | -Dintrospection=false 17 | 18 | ninja -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" ninja install 23 | 24 | glib-compile-schemas "${dest_dir}${prefix}"/share/glib-2.0/schemas 25 | rm "${dest_dir}${prefix}"/share/glib-2.0/schemas/gschemas.compiled 26 | 27 | post_package_strip 28 | } 29 | -------------------------------------------------------------------------------- /recipes/gtk+-3: -------------------------------------------------------------------------------- 1 | name=gtk+-3 2 | version=3.24.41 3 | revision=1 4 | tarball_url="https://download.gnome.org/sources/gtk%2B/3.24/gtk%2B-${version}.tar.xz" 5 | tarball_blake2b="fbded114fe2b5c1c7bffe79d0a22d559f97081eb972baf31b5c9bd7190bd1ea2875f1c632d3f3be8233377299f1df15bbffbe45d50cc7ff588e034eb41eb8f6e" 6 | imagedeps="meson ninja gdk-pixbuf2" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs at-spi2-core cairo glib gdk-pixbuf libx11 libxext libxcb libxinerama libxrender libxrandr libxfixes libxdamage pango fribidi libepoxy libxkbcommon fontconfig freetype2 libxi harfbuzz libxcursor gsettings-desktop-schemas dbus" 9 | 10 | build() { 11 | meson_configure \ 12 | -Dprint_backends=file \ 13 | -Dintrospection=false \ 14 | -Dx11_backend=true \ 15 | -Dbroadway_backend=true \ 16 | -Dwayland_backend=false \ 17 | -Dcolord=no 18 | 19 | ninja -j${parallelism} 20 | } 21 | 22 | package() { 23 | DESTDIR="${dest_dir}" ninja install 24 | 25 | glib-compile-schemas "${dest_dir}${prefix}"/share/glib-2.0/schemas 26 | rm "${dest_dir}${prefix}"/share/glib-2.0/schemas/gschemas.compiled 27 | 28 | post_package_strip 29 | } 30 | -------------------------------------------------------------------------------- /recipes/harfbuzz: -------------------------------------------------------------------------------- 1 | name=harfbuzz 2 | version=8.3.0 3 | revision=1 4 | tarball_url="https://github.com/harfbuzz/harfbuzz/releases/download/${version}/harfbuzz-${version}.tar.xz" 5 | tarball_blake2b="3749d2ff7955e135cf0d740bf6fe8b5c20a6bbf171480a29e6ae14fde8c26e1457506278b8c66e3b9630cbeb006874c19075c784a575e490c41297274a27fe59" 6 | imagedeps="meson ninja" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs graphite2 glib zlib freetype2 cairo icu" 9 | 10 | build() { 11 | cp -rp "${source_dir}"/. ./ 12 | 13 | mkdir build && cd build 14 | 15 | meson_source_dir=.. \ 16 | meson_configure \ 17 | -Dgraphite2=enabled \ 18 | -Dglib=enabled \ 19 | -Dgobject=disabled \ 20 | -Dicu=enabled \ 21 | -Dfreetype=enabled \ 22 | -Dcairo=enabled \ 23 | -Dintrospection=disabled \ 24 | -Dtests=disabled 25 | 26 | ninja -j${parallelism} 27 | 28 | cd .. 29 | } 30 | 31 | package() { 32 | ( cd build && DESTDIR="${dest_dir}" ninja install ) 33 | 34 | post_package_strip 35 | } 36 | -------------------------------------------------------------------------------- /recipes/icu: -------------------------------------------------------------------------------- 1 | name=icu 2 | version=73.1 3 | revision=1 4 | tarball_url="https://github.com/unicode-org/icu/releases/download/release-73-1/icu4c-73_1-src.tgz" 5 | tarball_blake2b="45de117efc4a49301c04a997963393967a70b8583abf1a9626331e275c5bc329cf2685de5c80b32f764c8ff2530b5594316d7119ce66503e5adba7842ca24424" 6 | source_hostdeps="autoconf automake libtool pkg-config" 7 | source_deps="autoconf-archive" 8 | imagedeps="gcc" 9 | hostdeps="gcc autoconf automake libtool pkg-config" 10 | deps="core-libs" 11 | 12 | regenerate() { 13 | autotools_recursive_regen 14 | cp source/config/{mh-linux,mh-unknown} 15 | } 16 | 17 | build() { 18 | mkdir cross-build 19 | cd cross-build 20 | ${source_dir}/source/configure \ 21 | --prefix=/usr/local 22 | make -j${parallelism} 23 | cd .. 24 | 25 | configure_script_path=${source_dir}/source/configure \ 26 | autotools_configure \ 27 | --with-cross-build=$(realpath cross-build) 28 | 29 | make -j${parallelism} 30 | } 31 | 32 | package() { 33 | DESTDIR="${dest_dir}" make install 34 | 35 | post_package_strip 36 | } 37 | -------------------------------------------------------------------------------- /recipes/jwm: -------------------------------------------------------------------------------- 1 | name=jwm 2 | version=2.4.3 3 | revision=1 4 | tarball_url="https://github.com/joewing/jwm/releases/download/v${version}/jwm-${version}.tar.xz" 5 | tarball_blake2b="d0b0ff1088ab3390a90c054162ea2c2fe782b61f28b3fdb28464ace362143fdc94e25ec82f7f4178b86a26c9315cdfcf9a81bff2e76bb5e3d62f88968a4ee80b" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="gettext" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libx11 libxft libjpeg-turbo libxpm libxinerama libpng" 10 | 11 | regenerate() { 12 | AUTOMAKE=true \ 13 | autotools_recursive_regen 14 | } 15 | 16 | build() { 17 | cp -rp "${source_dir}"/. ./ 18 | 19 | autotools_configure \ 20 | --disable-fribidi 21 | 22 | make -j${parallelism} 23 | } 24 | 25 | package() { 26 | DESTDIR="${dest_dir}" make install 27 | cp -v "${base_dir}"/build-support/jwm/system.jwmrc "${dest_dir}"/etc/ 28 | post_package_strip 29 | } 30 | -------------------------------------------------------------------------------- /recipes/less: -------------------------------------------------------------------------------- 1 | name=less 2 | version=643 3 | revision=1 4 | tarball_url="https://www.greenwoodsoftware.com/less/less-${version}.tar.gz" 5 | tarball_blake2b="6dc60dc2e8db05afdae466877a1d26a3008ff5378bbbf2fbdf9efc4f87c0fcfde5703d44a24d4355c98d3a5f438bdb51173150f2a69f801d9c8e4a7401d71b53" 6 | source_hostdeps="autoconf automake libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs ncurses" 9 | 10 | regenerate() { 11 | autoreconf -fvi 12 | } 13 | 14 | build() { 15 | autotools_configure 16 | 17 | make -j${parallelism} 18 | } 19 | 20 | package() { 21 | make install DESTDIR="${dest_dir}" 22 | 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /recipes/libepoxy: -------------------------------------------------------------------------------- 1 | name=libepoxy 2 | version=1.5.10 3 | revision=1 4 | tarball_url="https://download.gnome.org/sources/libepoxy/1.5/libepoxy-${version}.tar.xz" 5 | tarball_blake2b="105267b1b19acf8c86e5e9d23741dfc738e014de4f0b30f88e7ec22f98497cc8e006d729f17b5698780ca1dd782bad99f73ae685b2bf882b77670bb6c4b959c9" 6 | imagedeps="meson ninja" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs mesa xorg-proto libx11" 9 | 10 | build() { 11 | meson_configure \ 12 | -Degl=no \ 13 | -Dtests=false 14 | 15 | ninja -j${parallelism} 16 | } 17 | 18 | package() { 19 | DESTDIR="${dest_dir}" ninja install 20 | 21 | post_package_strip 22 | } 23 | -------------------------------------------------------------------------------- /recipes/libexpat: -------------------------------------------------------------------------------- 1 | name=libexpat 2 | version=2.5.0 3 | revision=1 4 | tarball_url="https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-${version}.tar.xz" 5 | tarball_blake2b="670298d076ff3b512a0212170d40cb04c601a11d6b152f215a5302ad3238c69c2386393d7a6c70bc284be35ce97bf27d87115c3391f4bc17406e509d739d3e31" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs" 9 | 10 | regenerate() { 11 | autoreconf -fvi 12 | } 13 | 14 | build() { 15 | autotools_configure 16 | 17 | make -j${parallelism} 18 | } 19 | 20 | package() { 21 | DESTDIR="${dest_dir}" make install 22 | 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /recipes/libffi: -------------------------------------------------------------------------------- 1 | name=libffi 2 | version=3.4.4 3 | revision=1 4 | tarball_url="https://github.com/libffi/libffi/releases/download/v${version}/libffi-${version}.tar.gz" 5 | tarball_blake2b="189fe1ffe9507f204581b0ab09995dc7e7b761bb4eac7e338e9f5ff81431aebcef6c182c1839c9f9acb2706697a260c67e6d1351cf7e2aed7c4eb5d694f6f8fd" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs" 9 | 10 | regenerate() { 11 | autoreconf -fvi 12 | } 13 | 14 | build() { 15 | autotools_configure 16 | 17 | make -j${parallelism} 18 | } 19 | 20 | package() { 21 | DESTDIR="${dest_dir}" make install 22 | 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /recipes/libfontenc: -------------------------------------------------------------------------------- 1 | name=libfontenc 2 | version=1.1.7 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libfontenc-${version}.tar.gz" 5 | tarball_blake2b="538dc45801dd2fc3b18527b5716fd468089206728ce4704416eb0ecd2ed528f951d64e7bf2f779a5852363670724458c966538afcec813a9823f5d04303d1bbb" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-font-util xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto zlib" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libgcc: -------------------------------------------------------------------------------- 1 | name=libgcc 2 | revision=1 3 | hostdeps="gcc autoconf-2.69 automake libtool pkg-config" 4 | imagedeps="gcc" 5 | deps="mlibc" 6 | 7 | build() { 8 | cd "${base_dir}"/host-builds/gcc/build 9 | 10 | make -j${parallelism} all-target-libgcc 11 | } 12 | 13 | package() { 14 | cd "${base_dir}"/host-builds/gcc/build 15 | 16 | rm -rf tmp_libgcc_dir 17 | mkdir tmp_libgcc_dir 18 | 19 | DESTDIR="$(realpath tmp_libgcc_dir)" make install-target-libgcc 20 | 21 | mkdir -p "${dest_dir}${prefix}" 22 | 23 | cp -r tmp_libgcc_dir/usr/local/lib "${dest_dir}${prefix}"/ 24 | cp -r tmp_libgcc_dir/usr/local/${OS_TRIPLET}/* "${dest_dir}${prefix}"/ 25 | 26 | rm "${dest_dir}${prefix}"/lib/gcc/${OS_TRIPLET}/13.2.0/crti.o 27 | rm "${dest_dir}${prefix}"/lib/gcc/${OS_TRIPLET}/13.2.0/crtn.o 28 | 29 | # Copy libgcc into GCC's tree else it will complain. 30 | mkdir -p "${base_dir}"/host-pkgs/gcc/usr/local/lib 31 | cp -r tmp_libgcc_dir/usr/local/lib/* "${base_dir}"/host-pkgs/gcc/usr/local/lib/ 32 | 33 | rm "${base_dir}"/host-pkgs/gcc/usr/local/lib/gcc/${OS_TRIPLET}/13.2.0/crti.o 34 | rm "${base_dir}"/host-pkgs/gcc/usr/local/lib/gcc/${OS_TRIPLET}/13.2.0/crtn.o 35 | } 36 | -------------------------------------------------------------------------------- /recipes/libgcrypt: -------------------------------------------------------------------------------- 1 | name=libgcrypt 2 | version=1.10.3 3 | revision=1 4 | tarball_url="https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-${version}.tar.gz" 5 | tarball_blake2b="86636e88a96ed531718eeed7915e7ab4e359b17500f648a075853f575e7a50fbb7dc78d1f2dbf2a96a7c46ced6cafdbbb4b6b31dd2f34e663f05df30f1096c85" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="gcc" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libgpg-error" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | cp -rp "${source_dir}"/. ./ 17 | 18 | configure_script_path=./configure \ 19 | autotools_configure \ 20 | --disable-dev-random \ 21 | --disable-asm \ 22 | --with-libgpg-error-prefix="${sysroot_dir}${prefix}" 23 | 24 | make -j${parallelism} 25 | } 26 | 27 | package() { 28 | DESTDIR="${dest_dir}" make install 29 | 30 | post_package_strip 31 | } 32 | -------------------------------------------------------------------------------- /recipes/libgpg-error: -------------------------------------------------------------------------------- 1 | name=libgpg-error 2 | version=1.47 3 | revision=1 4 | tarball_url="https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-${version}.tar.gz" 5 | tarball_blake2b="f1e185127192396cde5676030217471f31f46b5f8bde9314bfe74039297a608356f89208139245c9efce3cba1ba7609f230219c8c6cab9f24de05ad384c43c7d" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="gcc" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs" 10 | 11 | regenerate() { 12 | cp -v src/syscfg/lock-obj-pub.x86_64-unknown-linux-gnu.h src/syscfg/lock-obj-pub.aero.h 13 | 14 | autotools_recursive_regen 15 | } 16 | 17 | build() { 18 | cp -rp "${source_dir}"/. ./ 19 | 20 | configure_script_path=./configure \ 21 | autotools_configure 22 | 23 | make -j${parallelism} 24 | } 25 | 26 | package() { 27 | DESTDIR="${dest_dir}" make install 28 | 29 | post_package_strip 30 | } 31 | -------------------------------------------------------------------------------- /recipes/libice: -------------------------------------------------------------------------------- 1 | name=libice 2 | version=1.1.1 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libICE-${version}.tar.gz" 5 | tarball_blake2b="1acb1cdb5b0fd49451b6e4498061c16fff35711a19a5da2c2de0046b6b3ed6bd6bdccf8d45f7adcdb7f2f685245176488f149b41087e562945754088f18c220b" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto xtrans" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libiconv: -------------------------------------------------------------------------------- 1 | name=libiconv 2 | version=1.17 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/libiconv/libiconv-${version}.tar.gz" 5 | tarball_blake2b="1d317dd0655c680a2082c38561cdff51ac1a9181d4734a8bb1e86861dfd66f1a6c0846a90b5b88f3b38b1fa9983d9e563551f27e95a8e329896b71becceae52b" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="binutils" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="mlibc libgcc libstdc++" 10 | 11 | regenerate() { 12 | cp /usr/local/share/aclocal/libtool.m4 ./m4/ 13 | cp /usr/local/share/aclocal/libtool.m4 ./libcharset/m4/ 14 | cp /usr/local/share/libtool/build-aux/ltmain.sh ./build-aux/ 15 | cp /usr/local/share/libtool/build-aux/ltmain.sh ./libcharset/build-aux/ 16 | cp /usr/local/share/aclocal/ltversion.m4 ./m4/ 17 | cp /usr/local/share/aclocal/ltversion.m4 ./libcharset/m4/ 18 | 19 | autotools_recursive_regen -I"${source_dir}"/m4 -I"${source_dir}"/srcm4 20 | } 21 | 22 | build() { 23 | autotools_configure 24 | 25 | make -j${parallelism} 26 | } 27 | 28 | package() { 29 | DESTDIR="${dest_dir}" make install 30 | 31 | post_package_strip 32 | } 33 | -------------------------------------------------------------------------------- /recipes/libintl: -------------------------------------------------------------------------------- 1 | name=libintl 2 | from_source=gettext 3 | revision=1 4 | hostdeps="gcc automake autoconf libtool pkg-config" 5 | deps="mlibc libgcc libstdc++ libiconv" 6 | 7 | build() { 8 | ACLOCAL=true \ 9 | AUTOCONF=true \ 10 | AUTOMAKE=true \ 11 | AUTOHEADER=true \ 12 | autotools_configure \ 13 | --without-emacs \ 14 | --without-lispdir \ 15 | `# Normally this controls nls behavior in general, but the libintl` \ 16 | `# subdir is skipped unless this is explicitly set.` \ 17 | --enable-nls \ 18 | `# This magic flag enables libintl.` \ 19 | --with-included-gettext \ 20 | --disable-c++ \ 21 | --disable-libasprintf \ 22 | --disable-java \ 23 | --enable-threads=posix \ 24 | --disable-curses \ 25 | --without-git \ 26 | --without-cvs \ 27 | --without-bzip2 \ 28 | --without-xz 29 | 30 | sed -i 's/touch $@//g' gettext-runtime/intl/Makefile 31 | 32 | make -C gettext-runtime/intl -j${parallelism} 33 | } 34 | 35 | package() { 36 | DESTDIR="${dest_dir}" make -C gettext-runtime/intl install 37 | 38 | post_package_strip 39 | } 40 | -------------------------------------------------------------------------------- /recipes/libjpeg-turbo: -------------------------------------------------------------------------------- 1 | name=libjpeg-turbo 2 | version=2.1.5.1 3 | revision=1 4 | tarball_url="https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/${version}.tar.gz" 5 | tarball_blake2b="44a6f61594f0d0cfac3e3a63ddfa9dcc940a5249fcd69e6d5324749d62e8a5e575bb2c5de9b651d63f27d6f03927146367cd8b8275aa1f4f51fd412ebac95797" 6 | imagedeps="gcc ninja python git cmake nasm" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs" 9 | 10 | build() { 11 | cmake \ 12 | -GNinja \ 13 | -DCMAKE_TOOLCHAIN_FILE=${base_dir}/userland/CMakeToolchain-x86_64.cmake \ 14 | -DCMAKE_INSTALL_PREFIX=${prefix} \ 15 | -DCMAKE_BUILD_TYPE=Release \ 16 | -DENABLE_STATIC=FALSE \ 17 | -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib \ 18 | -DWITH_JPEGS=ON \ 19 | -DCMAKE_SYSTEM_PROCESSOR=x86_64 \ 20 | ${source_dir} 21 | 22 | ninja -j${parallelism} 23 | } 24 | 25 | package() { 26 | DESTDIR="${dest_dir}" ninja install 27 | 28 | post_package_strip 29 | } 30 | -------------------------------------------------------------------------------- /recipes/libnghttp2: -------------------------------------------------------------------------------- 1 | name=libnghttp2 2 | version=1.59.0 3 | tarball_url="https://github.com/nghttp2/nghttp2/releases/download/v${version}/nghttp2-${version}.tar.gz" 4 | tarball_blake2b="167e973844131915ce8c50e8e4cfa6807ca56cdbacf0c5d03b0b9d8846c76020d7ffde492d62a9d5f91801024126f2ff52833a58e1458246dcbbafbf76b8b99c" 5 | imagedeps="ninja python" 6 | hostdeps="gcc cmake pkg-config" 7 | deps="core-libs" 8 | 9 | build() { 10 | cmake \ 11 | -GNinja \ 12 | -DCMAKE_TOOLCHAIN_FILE=${base_dir}/userland/CMakeToolchain-x86_64.cmake \ 13 | -DCMAKE_INSTALL_PREFIX=${prefix} \ 14 | -DCMAKE_BUILD_TYPE=Release \ 15 | -DENABLE_STATIC=FALSE \ 16 | -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib \ 17 | -DCMAKE_SYSTEM_PROCESSOR=x86_64 \ 18 | ${source_dir} 19 | 20 | ninja -j${parallelism} 21 | } 22 | 23 | package() { 24 | DESTDIR="${dest_dir}" ninja install 25 | 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /recipes/libpng: -------------------------------------------------------------------------------- 1 | name=libpng 2 | version=1.6.40 3 | revision=1 4 | tarball_url="https://download.sourceforge.net/libpng/libpng-${version}.tar.xz" 5 | tarball_blake2b="4dd2df57791ca68cc31ba966b9176ecb37458572c60eef34e31ff0d3266d25ad6ea9d2e8cae6bfaf7932b5c7bc231047d3ed139b3464304c41cc4d89611f5ba8" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs zlib" 9 | 10 | regenerate() { 11 | autoreconf -fvi 12 | } 13 | 14 | build() { 15 | autotools_configure 16 | 17 | make -j${parallelism} 18 | } 19 | 20 | package() { 21 | DESTDIR="${dest_dir}" make install 22 | 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /recipes/libpsl: -------------------------------------------------------------------------------- 1 | name=libpsl 2 | version=0.21.5 3 | tarball_url="https://github.com/rockdaboot/libpsl/releases/download/${version}/libpsl-${version}.tar.gz" 4 | tarball_blake2b="a0076f622b85df99f866de6707850ac216b764bdb68c6d516f4603da42dac8eae3ee4c53d68dbb6af6f779c2c7f1b9caab74c8b558209b1f6823f95c13fc3ceb" 5 | deps="core-libs libunistring libiconv" 6 | hostdeps="gcc pkg-config autoconf automake libtool" 7 | source_hostdeps="automake autoconf libtool pkg-config" 8 | source_imagedeps="gtk-doc" 9 | 10 | regenerate() { 11 | autotools_recursive_regen 12 | } 13 | 14 | build() { 15 | autotools_configure \ 16 | --disable-asan \ 17 | --disable-cfi \ 18 | --disable-ubsan \ 19 | --disable-man 20 | 21 | make -j${parallelism} 22 | } 23 | 24 | package() { 25 | DESTDIR="${dest_dir}" make install 26 | 27 | post_package_strip 28 | } 29 | -------------------------------------------------------------------------------- /recipes/libsm: -------------------------------------------------------------------------------- 1 | name=libsm 2 | version=1.2.4 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libSM-${version}.tar.gz" 5 | tarball_blake2b="9f05c36f933ddbe66e06a96c7b9f5c23a2b5218da724a838b42ef4b798195c24a2be13e1d5c61bccf7660a4880f78da8452fa93a668f483ce808ce840c2cfcfb" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto libice" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libsoup: -------------------------------------------------------------------------------- 1 | name=libsoup 2 | version=3.4.4 3 | tarball_url="https://gitlab.gnome.org/GNOME/libsoup/-/archive/${version}/libsoup-${version}.tar.gz" 4 | tarball_blake2b="006af4bd6f9e5be63421b33bb5b0204d0013fe1312ce2392cbd7fc609d650dc07fa38849f0d179d7907568e9faa0843a74f54e86fe6803e665865d5fed4d3b36" 5 | deps="core-libs glib glib-networking zlib libxml libpsl sqlite libnghttp2" 6 | imagedeps="meson" 7 | hostdeps="gcc pkg-config" 8 | 9 | build() { 10 | meson_configure \ 11 | -Dintrospection=disabled \ 12 | -Dinstalled_tests=false \ 13 | -Dsysprof=disabled \ 14 | -Ddocs=disabled \ 15 | -Dvapi=disabled \ 16 | -Dtls_check=false \ 17 | -Dbrotli=disabled \ 18 | -Dntlm=disabled \ 19 | -Dgssapi=disabled \ 20 | -Dtests=false 21 | 22 | ninja -j${parallelism} 23 | } 24 | 25 | package() { 26 | DESTDIR="${dest_dir}" ninja install 27 | } 28 | -------------------------------------------------------------------------------- /recipes/libstdc++: -------------------------------------------------------------------------------- 1 | name=libstdc++ 2 | revision=1 3 | hostdeps="gcc autoconf-2.69 automake libtool pkg-config" 4 | imagedeps="gcc" 5 | deps="mlibc libgcc" 6 | 7 | build() { 8 | cd "${base_dir}"/host-builds/gcc/build 9 | 10 | make -j${parallelism} all-target-libstdc++-v3 11 | } 12 | 13 | package() { 14 | cd "${base_dir}"/host-builds/gcc/build 15 | 16 | rm -rf tmp_libstdc++_dir 17 | mkdir tmp_libstdc++_dir 18 | 19 | DESTDIR="$(realpath tmp_libstdc++_dir)" make install-target-libstdc++-v3 20 | 21 | # For some reason this also installs libgcc even though it shouldn't... 22 | # Remove it. 23 | rm -fv tmp_libstdc++_dir/usr/local/${OS_TRIPLET}/lib/libgcc* 24 | 25 | mkdir -p "${dest_dir}${prefix}" 26 | 27 | cp -r tmp_libstdc++_dir/usr/local/share "${dest_dir}${prefix}"/ 28 | cp -r tmp_libstdc++_dir/usr/local/${OS_TRIPLET}/* "${dest_dir}${prefix}"/ 29 | 30 | # Copy libstdc++ and headers into GCC's tree else it will complain. 31 | mkdir -p "${base_dir}"/host-pkgs/gcc/usr/local/${OS_TRIPLET} 32 | cp -r tmp_libstdc++_dir/usr/local/${OS_TRIPLET}/* "${base_dir}"/host-pkgs/gcc/usr/local/${OS_TRIPLET}/ 33 | } 34 | -------------------------------------------------------------------------------- /recipes/libtasn: -------------------------------------------------------------------------------- 1 | name=libtasn 2 | version=4.19.0 3 | revision=1 4 | tarball_url="https://au.mirrors.cicku.me/gnu/libtasn1/libtasn1-${version}.tar.gz" 5 | tarball_blake2b="6e8232590cd87da3bfd9182ed44eccdfbdfcc85e88d8cf19fffdb3d600e04694b77079b95bbd822d2c3fff29458ddae0f0440f9c1c19c711923a2507bd19270f" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="gcc" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs glib" 10 | source_imagedeps="gtk-doc" 11 | 12 | regenerate() { 13 | autotools_recursive_regen 14 | } 15 | 16 | build() { 17 | cp -rp "${source_dir}"/. ./ 18 | 19 | autotools_configure \ 20 | --disable-doc 21 | 22 | make -j${parallelism} 23 | } 24 | 25 | package() { 26 | DESTDIR="${dest_dir}" make install 27 | 28 | post_package_strip 29 | } 30 | -------------------------------------------------------------------------------- /recipes/libtiff: -------------------------------------------------------------------------------- 1 | name=libtiff 2 | version=4.6.0 3 | revision=1 4 | tarball_url="https://download.osgeo.org/libtiff/tiff-${version}.tar.xz" 5 | tarball_blake2b="3b508b02b0a536c5bc8e67fe4c1b09ae9c830252786ef4764202c14d673d1ef9634694de7a5893a3551dec684d00bad9d0442c7fea7bcd09238b9960d443cf62" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs freeglut libjpeg-turbo zlib zstd xz" 9 | 10 | regenerate() { 11 | autotools_recursive_regen 12 | } 13 | 14 | build() { 15 | autotools_configure \ 16 | --without-x \ 17 | --enable-zlib \ 18 | --enable-zstd \ 19 | --enable-jpeg \ 20 | --enable-lzma \ 21 | --disable-webp \ 22 | --enable-cxx 23 | 24 | make -j${parallelism} 25 | } 26 | 27 | package() { 28 | DESTDIR="${dest_dir}" make install 29 | 30 | post_package_strip 31 | } 32 | -------------------------------------------------------------------------------- /recipes/libunistring: -------------------------------------------------------------------------------- 1 | name=libunistring 2 | version=1.1 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/libunistring/libunistring-${version}.tar.xz" 5 | tarball_blake2b="721adc90884006480055b95d0fa06cd862417aa02b467f1e14688292ad9c11f1e33520b14ed5dc2d2724c6df8713d3af1e8032014259d8355156cb72edfcb983" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs" 9 | 10 | regenerate() { 11 | autotools_recursive_regen 12 | } 13 | 14 | build() { 15 | autotools_configure 16 | 17 | make -j${parallelism} 18 | } 19 | 20 | package() { 21 | DESTDIR="${dest_dir}" make install 22 | 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /recipes/libwebp: -------------------------------------------------------------------------------- 1 | name=libwebp 2 | version=1.3.2 3 | revision=1 4 | tarball_url="https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${version}.tar.gz" 5 | tarball_blake2b="12b3ff3aa9952dd32ce13656146556d5efb6a66860249a8676721980aee10253a1b0335685a769d995e9954cd305190a8ed1878ba4fefce9dcaf41a3976f9e3d" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs libjpeg-turbo libpng freeglut sdl2 libtiff" 9 | 10 | regenerate() { 11 | autotools_recursive_regen 12 | } 13 | 14 | build() { 15 | autotools_configure \ 16 | --enable-libwebpmux \ 17 | --enable-libwebpdemux \ 18 | --enable-libwebpdecoder \ 19 | --enable-libwebpextras \ 20 | --enable-swap-16bit-csp 21 | 22 | make -j${parallelism} 23 | } 24 | 25 | package() { 26 | DESTDIR="${dest_dir}" make install 27 | 28 | post_package_strip 29 | } 30 | -------------------------------------------------------------------------------- /recipes/libx11: -------------------------------------------------------------------------------- 1 | name=libx11 2 | version=1.8.7 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libX11-${version}.tar.xz" 5 | tarball_blake2b="335d8af91c13aba11255c266c4687a7f66b021207a92485d723b4107601bbabb6a0e5535241a3bcff4ac9a99142730d2b3d2e2eaff86b507fee5b35a2590d792" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xtrans xorg-util-macros" 8 | imagedeps="gcc" 9 | hostdeps="gcc autoconf automake libtool pkg-config" 10 | deps="core-libs xorg-proto libxcb xtrans" 11 | 12 | regenerate() { 13 | autotools_recursive_regen 14 | } 15 | 16 | build() { 17 | autotools_configure \ 18 | --disable-ipv6 \ 19 | --with-keysymdefdir=${sysroot_dir}/usr/include/X11 20 | 21 | make -j${parallelism} 22 | } 23 | 24 | package() { 25 | DESTDIR="${dest_dir}" make install 26 | 27 | post_package_strip 28 | } 29 | -------------------------------------------------------------------------------- /recipes/libxau: -------------------------------------------------------------------------------- 1 | name=libxau 2 | version=1.0.11 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXau-${version}.tar.gz" 5 | tarball_blake2b="2c1066e40fe64ebd8b095bb7bac436d3b0d518080b80e93d1def040af390bd08ed3f4f49feb0b4b390a5733e74bf7429c96ddac5f8fbfb904eb25b496676618a" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxaw: -------------------------------------------------------------------------------- 1 | name=libxaw 2 | version=1.0.15 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXaw-${version}.tar.gz" 5 | tarball_blake2b="71d7b413f9a5178149871c810122589ec74fb4b1e78e884a1538871afd69ad775c3ff15e0c0b21115700f5c9c0965c65336b4c07c1d1069490e6c214ad0f3af0" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libxmu libxpm" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxcb: -------------------------------------------------------------------------------- 1 | name=libxcb 2 | version=1.16 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libxcb-${version}.tar.xz" 5 | tarball_blake2b="1ddd5c2e6be8400a0a77db4b5fbd4698996fd1a00984e370b1f712f6b9ce456c8ccfb6992f2973f5eaf8d5b6b75f39b9f51a1458c2432ddb41edd8199b91b3f9" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | imagedeps="python" 9 | hostdeps="gcc autoconf automake libtool pkg-config" 10 | deps="core-libs xorg-proto libxau libxdmcp xcb-proto" 11 | 12 | regenerate() { 13 | autotools_recursive_regen 14 | sed -i 's/pthread-stubs//' "${source_dir}"/configure 15 | } 16 | 17 | build() { 18 | autotools_configure 19 | 20 | make -j${parallelism} 21 | } 22 | 23 | package() { 24 | DESTDIR="${dest_dir}" make install 25 | 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /recipes/libxcomposite: -------------------------------------------------------------------------------- 1 | name=libxcomposite 2 | version=0.4.6 3 | revision=1 4 | tarball_url="https://gitlab.freedesktop.org/xorg/lib/libxcomposite/-/archive/libXcomposite-${version}/libxcomposite-libXcomposite-${version}.tar.gz" 5 | tarball_blake2b="6603273ca9481e540478d13b37f0f1267d110dc911cfe02cfe6a22d544071e864821cdfc57dc1348d7f17a0004d2cafc8bca00d5b565e2c85fe8a1149ed50224" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="gcc" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libx11 libxfixes xorg-proto" 10 | source_deps="xorg-util-macros" 11 | 12 | regenerate() { 13 | autotools_recursive_regen 14 | } 15 | 16 | build() { 17 | cp -rp "${source_dir}"/. ./ 18 | 19 | autotools_configure \ 20 | --disable-doc 21 | 22 | make -j${parallelism} 23 | } 24 | 25 | package() { 26 | DESTDIR="${dest_dir}" make install 27 | 28 | post_package_strip 29 | } 30 | -------------------------------------------------------------------------------- /recipes/libxcrypt: -------------------------------------------------------------------------------- 1 | name=libxcrypt 2 | version=4.4.36 3 | revision=1 4 | tarball_url="https://github.com/besser82/libxcrypt/releases/download/v${version}/libxcrypt-${version}.tar.xz" 5 | tarball_blake2b="9f028e0fe2cb7bb4273f3f6d1e579e0fe93cd71eba21286aa7dc078c904ea3cdce38b2955bdcd618853f7657b01aea7e28c4d898680e69fdf75f812b5a304c1d" 6 | source_hostdeps="autoconf automake libtool pkg-config" 7 | imagedeps="python-passlib" 8 | hostdeps="gcc automake autoconf libtool pkg-config" 9 | deps="mlibc libgcc libstdc++" 10 | 11 | regenerate() { 12 | autoreconf -fvi 13 | } 14 | 15 | build() { 16 | autotools_configure \ 17 | --enable-obsolete-api=yes \ 18 | --disable-xcrypt-compat-files 19 | 20 | make -j${parallelism} 21 | } 22 | 23 | package() { 24 | DESTDIR="${dest_dir}" make install 25 | 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /recipes/libxcursor: -------------------------------------------------------------------------------- 1 | name=libxcursor 2 | version=1.2.1 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXcursor-${version}.tar.gz" 5 | tarball_blake2b="42ee1c77f9c976541f51044474b6bf60935ee62d3d95298ce9d71c92e612bc12c460c4161c148d7f9c99a9ea76f74b34ca4f4b8980af2ccabd78fdad4752f2f5" 6 | source_hostdeps="autoconf automake libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libxrender libxfixes libx11" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxcvt: -------------------------------------------------------------------------------- 1 | name=libxcvt 2 | version=0.1.2 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libxcvt-${version}.tar.xz" 5 | tarball_blake2b="8a4803eb6790fd0ea1520fd31e335f7a363c3606e74837a959453be8819ce0d450af7bb651887a891aa657a5eeac3e4983041060fa5c87b1238c83354e425de7" 6 | imagedeps="meson ninja" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs" 9 | 10 | build() { 11 | meson_configure 12 | 13 | ninja -j${parallelism} 14 | } 15 | 16 | package() { 17 | DESTDIR="${dest_dir}" ninja install 18 | 19 | post_package_strip 20 | } 21 | -------------------------------------------------------------------------------- /recipes/libxdamage: -------------------------------------------------------------------------------- 1 | name=libxdamage 2 | version=1.1.6 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXdamage-${version}.tar.gz" 5 | tarball_blake2b="e8fcdbb3b93b7f3a74b10adbb4ceaccc963c7f9ce4fe0edee5842fde7d26cbb2cf3061f073c9ca400baa8378d06ed83c8c751495febb1aeb86a27058d74b1543" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto libxfixes" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxdmcp: -------------------------------------------------------------------------------- 1 | name=libxdmcp 2 | version=1.1.4 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXdmcp-${version}.tar.gz" 5 | tarball_blake2b="83973212793c93253b06ee75902842873f1f322c53dc32f054954131243dcf5c31d6792dc5d216134c9536c142b4d5823c8fd998d048ec093383b4f7362fb066" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxext: -------------------------------------------------------------------------------- 1 | name=libxext 2 | version=1.3.5 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXext-${version}.tar.gz" 5 | tarball_blake2b="74ee5d3fc3832fc5d9774f7f1a8e0d30ab1af97c35f0e3da0b314c228f8f511cdb106c74eeeb1de56db16d4c2b8aaab34b7ca886f02530319fde1a7ae7788598" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto libx11" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxfixes: -------------------------------------------------------------------------------- 1 | name=libxfixes 2 | version=6.0.1 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXfixes-${version}.tar.gz" 5 | tarball_blake2b="22be454b2db230057204932ae75aacb2b56523b25b14e501d7e7a2a664e57ae6bcbfa56b6fac4d42d3f8ef770c41debe0eec25451dd70baa9cfc83b1a10e4649" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto libx11" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxfont2: -------------------------------------------------------------------------------- 1 | name=libxfont2 2 | version=2.0.6 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXfont2-${version}.tar.gz" 5 | tarball_blake2b="1a871c6d7c81beadf1c9a5e864a2df186b6429337e86f4fee0c8969d158cf284f10019f69a2f7e0c9298d9f6fa842d5315932152b5e70cb068c5530360e578a0" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto xtrans freetype2 bzip2 libfontenc zlib" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure \ 17 | --with-bzip2 \ 18 | --disable-devel-docs \ 19 | --disable-selective-werror 20 | 21 | make -j${parallelism} 22 | } 23 | 24 | package() { 25 | DESTDIR="${dest_dir}" make install 26 | 27 | post_package_strip 28 | } 29 | -------------------------------------------------------------------------------- /recipes/libxft: -------------------------------------------------------------------------------- 1 | name=libxft 2 | version=2.3.8 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXft-${version}.tar.gz" 5 | tarball_blake2b="06d797ed53df793e5b9751bc7984a62a96c973e36d8aa99e4dc96a03e0e7013d6adc9e46f033e1ffcb4632cec2ac0318108ff2894beb4464d44d524254b15328" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libxrender fontconfig" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxi: -------------------------------------------------------------------------------- 1 | name=libxi 2 | version=1.8.1 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXi-${version}.tar.gz" 5 | tarball_blake2b="473bf5a80c86ef853dcf21b2292eb07818148302b051ca4fb9bfdf42053ae0ae6c53d588de7c027d1c72d7b5a9dba775111f4913b36e771380f4d0fcb823e345" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto libxext libxfixes" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxinerama: -------------------------------------------------------------------------------- 1 | name=libxinerama 2 | version=1.1.5 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXinerama-${version}.tar.gz" 5 | tarball_blake2b="ac24af05ae483e7f8476cb5fdf901ae80c592a766387e9f662ceeae5906a55e8529b35fcd01b6893289007e30788fd9e3a507af95870acfa6b25b25b159024a5" 6 | source_hostdeps="autoconf automake libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libxext xorg-proto" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxkbcommon: -------------------------------------------------------------------------------- 1 | name=libxkbcommon 2 | version=1.6.0 3 | revision=1 4 | tarball_url="https://xkbcommon.org/download/libxkbcommon-${version}.tar.xz" 5 | tarball_blake2b="ffd373161f12ea6448a9206f57710355ab65b81ebab5dce74e4dfcee1bdc9175406fc434560648f5933b83cac163099c8564c3add6f51d34856def39ab077850" 6 | imagedeps="meson ninja doxygen" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs libxcb libxml xkeyboard-config" 9 | 10 | build() { 11 | meson_configure \ 12 | -Dxkb-config-root="$prefix"/share/X11/xkb \ 13 | -Denable-x11=true \ 14 | -Denable-wayland=false 15 | 16 | ninja -j${parallelism} 17 | } 18 | 19 | package() { 20 | DESTDIR="${dest_dir}" ninja install 21 | 22 | mkdir -p "${dest_dir}${prefix}/share/X11/xkb" 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxkbfile: -------------------------------------------------------------------------------- 1 | name=libxkbfile 2 | version=1.1.2 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libxkbfile-${version}.tar.gz" 5 | tarball_blake2b="192c0d7a9e9c8f555ccd0a120e79f5d0fb4d9843fe0eb437b5ed5ce62bd65366a50649037aeed9112cd2ca11db4e088282049d4b799bb26d11d2d9b07384a8e1" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libx11" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxml: -------------------------------------------------------------------------------- 1 | name=libxml 2 | version=2.12.3 3 | revision=1 4 | tarball_url="https://download.gnome.org/sources/libxml2/2.12/libxml2-${version}.tar.xz" 5 | tarball_blake2b="12a7c25d2a13d839aac918268b0948a9bd3c352bc29dd09bb975a9b4ff99d299a0e157b1a90f01bdce8ddc36ede9a6834b0dc26635ac775a41bd28d9b2ad7cff" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs zlib icu readline" 9 | 10 | regenerate() { 11 | autoreconf -fvi 12 | } 13 | 14 | build() { 15 | autotools_configure \ 16 | --with-threads \ 17 | --disable-ipv6 \ 18 | --without-python \ 19 | --with-history \ 20 | --with-icu 21 | 22 | make -j${parallelism} 23 | } 24 | 25 | package() { 26 | DESTDIR="${dest_dir}" make install 27 | 28 | post_package_strip 29 | } 30 | -------------------------------------------------------------------------------- /recipes/libxmu: -------------------------------------------------------------------------------- 1 | name=libxmu 2 | version=1.1.4 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXmu-${version}.tar.gz" 5 | tarball_blake2b="b95188ecd667ffa9d831e547803c16637a968199c4e20d11d8beaf8da19c327aeb655c886f21d6b7d1d2a2b9cce522a091ca791c2626ae74d77f838441fa4a90" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libxext libxt" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxpm: -------------------------------------------------------------------------------- 1 | name=libxpm 2 | version=3.5.17 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXpm-${version}.tar.gz" 5 | tarball_blake2b="0acc342fb0aebad04a2d68f60106ad8f52910b2ca65d402bfda09e5914ab92b2b2b9d57680bbb6c6f1c8767971e9cffc1315337f6645fb61940a9cb5ccdf80c0" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libxext libxt" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxrandr: -------------------------------------------------------------------------------- 1 | name=libxrandr 2 | version=1.5.4 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXrandr-${version}.tar.gz" 5 | tarball_blake2b="d5dd5ef33c4452fac7d2c5f16afc15d9e2dcb4e721824ca6e412c6a990ab529003e1beea087afad9dedbcceab17953e066700dac7df0b2aac2cec404335ba93f" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto libx11 libxrender libxext" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxrender: -------------------------------------------------------------------------------- 1 | name=libxrender 2 | version=0.9.11 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXrender-${version}.tar.gz" 5 | tarball_blake2b="c8d5cf0c925ccf885634ac535b83b6280b49bc354a9c054375ed6db916350f1e5a1892f9937e0726d3d29fec0f531e787e03d76c3a0c0a22ca6c289c28f2287e" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto libx11" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxshmfence: -------------------------------------------------------------------------------- 1 | name=libxshmfence 2 | version=1.3.2 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libxshmfence-${version}.tar.gz" 5 | tarball_blake2b="ae99fff03f94c5b001bd901e446f56e4ed2edbfb140ab92ec471ab910af92d45ceeb623718e65e0b8e9bd301aacf0c5d5d3a31dab0246c824aabe0664957e78e" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure \ 17 | --disable-futex 18 | 19 | make -j${parallelism} 20 | } 21 | 22 | package() { 23 | DESTDIR="${dest_dir}" make install 24 | 25 | post_package_strip 26 | } 27 | -------------------------------------------------------------------------------- /recipes/libxslt: -------------------------------------------------------------------------------- 1 | name=libxslt 2 | version=1.1.39 3 | tarball_url="https://gitlab.gnome.org/GNOME/libxslt/-/archive/v${version}/libxslt-v${version}.tar.gz" 4 | tarball_blake2b="c534663795335273fbb0abccaa4bf7df4bf86200fc52a36c4f7e71ab30158630496665c8886cfd6ecfa3d43bcc475c7b8a1f2839fb288c442063e4b2f0b86d77" 5 | imagedeps="ninja python" 6 | hostdeps="gcc cmake pkg-config" 7 | deps="core-libs libxml" 8 | 9 | build() { 10 | cmake \ 11 | -GNinja \ 12 | -DCMAKE_TOOLCHAIN_FILE=${base_dir}/userland/CMakeToolchain-x86_64.cmake \ 13 | -DCMAKE_INSTALL_PREFIX=${prefix} \ 14 | -DCMAKE_BUILD_TYPE=Release \ 15 | -DENABLE_STATIC=FALSE \ 16 | -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib \ 17 | -DCMAKE_SYSTEM_PROCESSOR=x86_64 \ 18 | -DLIBXSLT_WITH_DEBUGGER=OFF \ 19 | -DLIBXSLT_WITH_CRYPTO=OFF \ 20 | -DLIBXSLT_WITH_MEM_DEBUG=OFF \ 21 | -DLIBXSLT_WITH_MODULES=ON \ 22 | -DLIBXSLT_WITH_PROFILER=OFF \ 23 | -DLIBXSLT_WITH_PYTHON=OFF \ 24 | -DLIBXSLT_WITH_XSLT_DEBUG=OFF \ 25 | -DLIBXSLT_WITH_TESTS=OFF \ 26 | -DLIBXSLT_WITH_THREADS=ON \ 27 | ${source_dir} 28 | 29 | ninja -j${parallelism} 30 | } 31 | 32 | package() { 33 | DESTDIR="${dest_dir}" ninja install 34 | 35 | post_package_strip 36 | } 37 | -------------------------------------------------------------------------------- /recipes/libxt: -------------------------------------------------------------------------------- 1 | name=libxt 2 | version=1.3.0 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXt-${version}.tar.gz" 5 | tarball_blake2b="3fc41d02802ccfda270030bcad73c0ca14c5b986d7353d8395339053a4d34352addda83fa2766af3d340c96416361de6a941688aff6e9b5bbc769a34af40bf53" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | imagedeps="gcc" 9 | hostdeps="gcc autoconf automake libtool pkg-config" 10 | deps="core-libs libx11 libsm" 11 | 12 | regenerate() { 13 | autotools_recursive_regen 14 | } 15 | 16 | build() { 17 | autotools_configure \ 18 | --with-appdefaultdir=/etc/X11/app-defaults 19 | 20 | make -j${parallelism} 21 | } 22 | 23 | package() { 24 | DESTDIR="${dest_dir}" make install 25 | 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /recipes/libxv: -------------------------------------------------------------------------------- 1 | name=libxv 2 | version=1.0.12 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXv-${version}.tar.gz" 5 | tarball_blake2b="21d7d5f40391897d9731ca0772a918d5c33f7de8e3e1307d47e75a44009a74be73a2a47d7751f01e25eabdc6c6ab8889ecda4e266303968b5cec085c38c8edd8" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto libxext" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/libxxf86vm: -------------------------------------------------------------------------------- 1 | name=libxxf86vm 2 | version=1.1.5 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/libXxf86vm-${version}.tar.gz" 5 | tarball_blake2b="396676748546bf2903a9d5ee8603babc04634d6547b38baed07134a7fea81f1691c064c07a9cc4990aeaf1edc911b586b5e11c449aa7872c1ea5b46879029f5e" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-proto libxext" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/linux-headers: -------------------------------------------------------------------------------- 1 | name=linux-headers 2 | version=6.6.12 3 | source_method=tarball 4 | tarball_url="https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-${version}.tar.xz" 5 | tarball_sha512="bb48a1a40d4db13da075ec46420e5abb0a80b4259fedd65883bcf4a67cd11e2d89026a57c370a11f704e9a41973c8bcbc52be12aa10a0e28e17ead59c9d6c4df" 6 | imagedeps="base-devel rsync" 7 | 8 | regenerate() { 9 | true 10 | } 11 | 12 | build() { 13 | cp -rp "${source_dir}"/. ./ 14 | } 15 | 16 | package() { 17 | make headers_install ARCH=x86_64 INSTALL_HDR_PATH=${dest_dir}/${prefix}/ 18 | 19 | # remove this file, as mlibc will override this file with one suited to mlibc 20 | rm -rf ${dest_dir}/${prefix}/include/linux/libc-compat.h 21 | } 22 | -------------------------------------------------------------------------------- /recipes/llvm: -------------------------------------------------------------------------------- 1 | name=llvm 2 | version=17.0.6 3 | revision=1 4 | tarball_url="https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/llvm-project-${version}.src.tar.xz" 5 | tarball_blake2b="d6ede1a9fda8756995c3e0654111941649e15794179641806f18919f1dc68c41ca0cabd5693b5096d05dccc3a391cd20d34af1137bf8af92ed3117a1ce84d1b2" 6 | imagedeps="gcc ninja python git" 7 | hostdeps="gcc cmake pkg-config" 8 | deps="core-libs zlib" 9 | 10 | build() { 11 | cmake \ 12 | -GNinja \ 13 | -DCMAKE_TOOLCHAIN_FILE=${base_dir}/userland/CMakeToolchain-x86_64.cmake \ 14 | -DCMAKE_INSTALL_PREFIX=/usr \ 15 | -DCMAKE_BUILD_TYPE=Release \ 16 | -DLLVM_LINK_LLVM_DYLIB=ON \ 17 | -DLLVM_ENABLE_RTTI=ON \ 18 | -DLLVM_TARGETS_TO_BUILD=X86 \ 19 | -DLLVM_TARGET_ARCH=x86_64 \ 20 | -DLLVM_DEFAULT_TARGET_TRIPLE=${OS_TRIPLET} \ 21 | -DLLVM_HOST_TRIPLE=${OS_TRIPLET} \ 22 | -DLLVM_ENABLE_TERMINFO=OFF \ 23 | -DLLVM_ENABLE_PROJECTS="llvm;clang;clang-tools-extra" \ 24 | -Wno-dev \ 25 | ${source_dir}/llvm 26 | 27 | ninja -j${parallelism} 28 | } 29 | 30 | package() { 31 | DESTDIR="${dest_dir}" ninja install 32 | 33 | post_package_strip 34 | } 35 | -------------------------------------------------------------------------------- /recipes/mesa: -------------------------------------------------------------------------------- 1 | name=mesa 2 | version=23.3.3 3 | revision=1 4 | tarball_url="https://archive.mesa3d.org/mesa-${version}.tar.xz" 5 | tarball_blake2b="6b57e99356abccf398c5fb84953fc1490ddf516dbeed1feca8d16344a04c1c15183325752717447a34a61dd4cdda897147e3194f869d8dbadfa5c45a0c95dab5" 6 | imagedeps="binutils meson ninja python-mako" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs llvm zlib libxshmfence libxrandr libxdamage libxxf86vm libxfixes libx11 libxext libxcb libexpat" 9 | 10 | build() { 11 | meson_configure \ 12 | -Dglx=xlib \ 13 | -Dplatforms=x11 \ 14 | -Dgallium-drivers=swrast \ 15 | -Dvulkan-drivers= \ 16 | -Dllvm=enabled 17 | 18 | ninja -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" ninja install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/mesa-demos: -------------------------------------------------------------------------------- 1 | name=mesa-demos 2 | version=8.5.0 3 | revision=1 4 | tarball_url="https://archive.mesa3d.org/demos/${version}/mesa-demos-${version}.tar.gz" 5 | tarball_blake2b="82ded42d845449d925809046d605a30d3f66b5aba57716fdfee99611750001a80aebbda5c66099c3ee9525b655d86e8cf4aeb43adbc939182705ba8fa2ab9c92" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs freetype2 mesa glu libx11 libxext" 9 | 10 | regenerate() { 11 | autotools_recursive_regen 12 | } 13 | 14 | build() { 15 | autotools_configure \ 16 | --enable-autotools \ 17 | --disable-gles1 \ 18 | --disable-osmesa \ 19 | --disable-libdrm \ 20 | --with-system-data-files \ 21 | --with-glut=no 22 | 23 | make -j${parallelism} 24 | } 25 | 26 | package() { 27 | DESTDIR="${dest_dir}" make install 28 | 29 | post_package_strip 30 | } 31 | -------------------------------------------------------------------------------- /recipes/mlibc: -------------------------------------------------------------------------------- 1 | name=mlibc 2 | version=7b67d09bde0be6d53284d1583058483e1687880c 3 | revision=1 4 | tarball_url="https://github.com/managarm/mlibc/archive/${version}.tar.gz" 5 | tarball_blake2b="a18b4fe6ab839088079f5cdcf1d35831ac9f3d25408118f5ddce280d595b730d1cbf7d4869a2da24f4df4edce7d250042acfea67f20266cc7a157db2e1d7c1ed" 6 | imagedeps="meson ninja" 7 | hostdeps="gcc pkg-config libgcc-binaries" 8 | builddeps="cxxshim frigg linux-headers" 9 | deps="mlibc-headers" 10 | 11 | build() { 12 | LDFLAGS="-Wl,/usr/local/libgcc-binaries/libgcc-x86_64.a" \ 13 | meson_configure \ 14 | --buildtype=debugoptimized \ 15 | -Dmlibc_no_headers=true \ 16 | -Ddefault_library=both \ 17 | -Ddisable_crypt_option=true \ 18 | -Ddisable_iconv_option=true \ 19 | -Ddisable_intl_option=true \ 20 | -Ddisable_libgcc_dependency=true \ 21 | -Dlinux_kernel_headers=${sysroot_dir}/${prefix}/include 22 | 23 | ninja -j${parallelism} 24 | } 25 | 26 | package() { 27 | DESTDIR="${dest_dir}" ninja install 28 | } 29 | -------------------------------------------------------------------------------- /recipes/mlibc-headers: -------------------------------------------------------------------------------- 1 | name=mlibc-headers 2 | from_source=mlibc 3 | revision=1 4 | hostdeps="pkg-config" 5 | imagedeps="meson ninja" 6 | deps="linux-headers" 7 | builddeps="cxxshim frigg" 8 | 9 | build() { 10 | meson setup \ 11 | --cross-file ${base_dir}/userland/cross-file.ini \ 12 | --prefix=${prefix} \ 13 | -Dheaders_only=true \ 14 | -Ddisable_crypt_option=true \ 15 | -Ddisable_iconv_option=true \ 16 | -Ddisable_intl_option=true \ 17 | -Dlinux_kernel_headers=${sysroot_dir}/${prefix}/include \ 18 | ${source_dir} 19 | 20 | ninja 21 | } 22 | 23 | package() { 24 | DESTDIR="${dest_dir}" ninja install 25 | } 26 | -------------------------------------------------------------------------------- /recipes/mpc: -------------------------------------------------------------------------------- 1 | name=mpc 2 | version=1.3.1 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/mpc/mpc-${version}.tar.gz" 5 | tarball_blake2b="76434e6f8830af3571836d51576bfebbc9701e9bbb5c4686f134081cd96cd90ae02f7ff42bf9e3957c7a7ba92b6b2d9cdabe18f0269271147521cd7f6a2d551c" 6 | source_imagedeps="git" 7 | source_hostdeps="automake autoconf libtool pkg-config" 8 | imagedeps="gcc" 9 | hostdeps="gcc autoconf automake libtool pkg-config" 10 | deps="core-libs gmp mpfr" 11 | 12 | regenerate() { 13 | autoreconf -fvi 14 | } 15 | 16 | build() { 17 | autotools_configure 18 | 19 | make -j${parallelism} 20 | } 21 | 22 | package() { 23 | DESTDIR="${dest_dir}" make install 24 | 25 | post_package_strip 26 | } 27 | -------------------------------------------------------------------------------- /recipes/mpfr: -------------------------------------------------------------------------------- 1 | name=mpfr 2 | version=4.2.1 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/mpfr/mpfr-${version}.tar.xz" 5 | tarball_blake2b="ad69f53bc910294647523e7613b18a683f1d0f3dd994168ab2a46b66d0371ffa9b8e7cb59495f898470aea69d343e83fc722f11babe4af7b3a12665a1e65860c" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="autoconf-archive" 8 | imagedeps="gcc" 9 | hostdeps="gcc autoconf automake libtool pkg-config" 10 | deps="core-libs gmp" 11 | 12 | regenerate() { 13 | autoreconf -fvi 14 | } 15 | 16 | build() { 17 | cp -rp "${source_dir}"/. ./ 18 | 19 | configure_script_path=./configure \ 20 | autotools_configure \ 21 | --enable-static=no \ 22 | --enable-shared=yes \ 23 | --enable-thread-safe \ 24 | --with-pic 25 | 26 | make -j${parallelism} 27 | } 28 | 29 | package() { 30 | DESTDIR="${dest_dir}" make install 31 | 32 | post_package_strip 33 | } 34 | -------------------------------------------------------------------------------- /recipes/neofetch: -------------------------------------------------------------------------------- 1 | name=neofetch 2 | version=534b1c8cdbda567066517aeb75d8bdde3641dab7 3 | tarball_url="https://github.com/Andy-Python-Programmer/neofetch/archive/${version}.tar.gz" 4 | tarball_blake2b="9f9f49a941e70dfe764c38c039c69e21bdf33c72ffbc2cd64a0287c0f8220f8a5ed456ef227da6dc843ef55602f20c9e0ac181cee261e65c373f69ceb5951668" 5 | 6 | package() { 7 | mkdir -p "${dest_dir}/usr/bin" 8 | cp -f "${source_dir}"/neofetch "${dest_dir}"/usr/bin/neofetch 9 | } 10 | -------------------------------------------------------------------------------- /recipes/nettle: -------------------------------------------------------------------------------- 1 | name=nettle 2 | version=3.9.1 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/nettle/nettle-${version}.tar.gz" 5 | tarball_blake2b="e3ceaefa19491e58f26b900beaf8b4e746feb2357c7677f5c050f257f4a23c304773446b6283a42a82cf9640e16522b8a71c47f137759f1df23cdeee4625d142" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="gcc" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs gmp" 10 | 11 | regenerate() { 12 | autoreconf -fvi 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/openssl: -------------------------------------------------------------------------------- 1 | name=openssl 2 | version=1.1.1w 3 | revision=1 4 | tarball_url="https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-${version}.tar.gz" 5 | tarball_blake2b="2fdba6ca0188928ab2f74e606136afca66cfa0467170fa6298ef160b64ac6fdcad1e81e5dd14013ce0e9921d0f7417edec531cd0beaf1196fec704c2c6d48395" 6 | hostdeps="gcc pkg-config" 7 | deps="core-libs zlib" 8 | 9 | build() { 10 | CC=${OS_TRIPLET}-gcc \ 11 | CXX=${OS_TRIPLET}-g++ \ 12 | AR=${OS_TRIPLET}-ar \ 13 | ${source_dir}/Configure \ 14 | --prefix=${prefix} \ 15 | --openssldir=/etc/ssl \ 16 | --libdir=lib \ 17 | ${OS_TRIPLET} \ 18 | shared \ 19 | zlib-dynamic \ 20 | no-afalgeng 21 | 22 | make -j${parallelism} 23 | } 24 | 25 | package() { 26 | # Disable installing static libraries. 27 | sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile 28 | 29 | DESTDIR="${dest_dir}" make DESTDIR="${dest_dir}" MANSUFFIX=ssl install 30 | 31 | post_package_strip 32 | } 33 | -------------------------------------------------------------------------------- /recipes/pango: -------------------------------------------------------------------------------- 1 | name=pango 2 | version=1.51.0 3 | revision=1 4 | tarball_url="https://download.gnome.org/sources/pango/1.51/pango-${version}.tar.xz" 5 | tarball_blake2b="d7d343d5fb005b92dc70fc6f65c62d1d22cc81887185612d276e63614e622272117b64051f46aa1ae0348d4ccfbed0a473f9482703d51d5da7e81d1851b49071" 6 | imagedeps="meson ninja" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs glib fontconfig freetype2 fribidi cairo xorg-proto libx11 xtrans libxext harfbuzz libxft" 9 | 10 | build() { 11 | meson_configure \ 12 | -Dintrospection=disabled 13 | 14 | ninja -j${parallelism} 15 | } 16 | 17 | package() { 18 | DESTDIR="${dest_dir}" ninja install 19 | 20 | post_package_strip 21 | } 22 | -------------------------------------------------------------------------------- /recipes/pcre2: -------------------------------------------------------------------------------- 1 | name=pcre2 2 | version=10.42 3 | revision=1 4 | tarball_url="https://github.com/PCRE2Project/pcre2/releases/download/pcre2-${version}/pcre2-${version}.tar.gz" 5 | tarball_blake2b="19233ee4a63d3bc0828f68c646ecbeb8161c242e52c9242976d80b805d5863699766a8f3a23946ac50ced75f48aad6d948bd9aa3fdc7540bd9193065ea7ee9d1" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs bzip2 ncurses readline zlib" 9 | 10 | regenerate() { 11 | autoreconf -fvi 12 | } 13 | 14 | build() { 15 | autotools_configure \ 16 | --enable-unicode \ 17 | --enable-jit \ 18 | --enable-pcre2-16 \ 19 | --enable-pcre2-32 \ 20 | --enable-pcre2grep-libz \ 21 | --enable-pcre2grep-libbz2 \ 22 | --enable-pcre2test-libreadline 23 | 24 | make -j${parallelism} 25 | } 26 | 27 | package() { 28 | DESTDIR="${dest_dir}" make install 29 | 30 | post_package_strip 31 | } 32 | -------------------------------------------------------------------------------- /recipes/pixman: -------------------------------------------------------------------------------- 1 | name=pixman 2 | version=0.42.2 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/pixman-${version}.tar.xz" 5 | tarball_blake2b="6286a9d064a5a24017fccbb0a6e9f6ef932077c2e33ec043826d4a7a6c707c9111d3de4b806cbcdb47fc2794f1f930d24d078de1ff2912061967db0890540957" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs libpng" 9 | 10 | regenerate() { 11 | autoreconf -fvi 12 | } 13 | 14 | build() { 15 | autotools_configure 16 | 17 | make -j${parallelism} 18 | } 19 | 20 | package() { 21 | DESTDIR="${dest_dir}" make install 22 | 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /recipes/python: -------------------------------------------------------------------------------- 1 | name=python 2 | version=3.13.0 3 | tarball_url="https://www.python.org/ftp/python/${version}/Python-${version}a1.tar.xz" 4 | tarball_blake2b="62612d22ce652f4b1d7ce93aa30bd5814dbf271dbe98e321b99d003d7da8f74798e55f556db75fc39b676295c1d1f7b31919c444fe3c667d2fbd2ea16799a211" 5 | imagedeps="gcc" 6 | source_deps="autoconf-archive" 7 | source_hostdeps="automake autoconf libtool pkg-config" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libexpat" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | mkdir -p ./build 17 | cd ./build 18 | 19 | # XXX make this a host dep 20 | if ! [ -f built ]; then 21 | ${source_dir}/configure 22 | 23 | make -j${parallelism} 24 | touch built 25 | fi 26 | 27 | cd - 28 | 29 | CONFIG_SITE=${base_dir}/build-support/python/python-config-site autotools_configure \ 30 | --with-system-ffi \ 31 | --with-system-expat \ 32 | --disable-ipv6 \ 33 | --without-ensurepip \ 34 | --host=x86_64-aero \ 35 | --build=x86_64-linux-gnu \ 36 | --with-build-python="$(pwd -P)/build/python" \ 37 | --with-pkg-config=yes 38 | 39 | make -j${parallelism} 40 | } 41 | 42 | package() { 43 | DESTDIR="${dest_dir}" make install 44 | ln -sv python3 "${dest_dir}${prefix}/bin/python" 45 | post_package_strip 46 | } 47 | 48 | -------------------------------------------------------------------------------- /recipes/readline: -------------------------------------------------------------------------------- 1 | name=readline 2 | version=8.2 3 | revision=1 4 | tarball_url="https://ftp.gnu.org/gnu/readline/readline-${version}.tar.gz" 5 | tarball_blake2b="7974322b9c092a756a79e537df08e8532f8e0fcb598f77732e28287c33ebec9e9837ed88b43334c310892d56a871b423903f0f564def2fbe700a1004f2ae7b18" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="patchelf" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs ncurses" 10 | 11 | regenerate() { 12 | AUTOHEADER=true autoreconf -fvi 13 | } 14 | 15 | build() { 16 | autotools_configure \ 17 | --enable-multibyte \ 18 | --with-curses 19 | 20 | make SHLIB_LIBS="-lncursesw" -j${parallelism} 21 | } 22 | 23 | package() { 24 | make SHLIB_LIBS="-lncursesw" install DESTDIR="${dest_dir}" 25 | 26 | # libraries are created without soname... fix that 27 | for lib in libhistory.so.8 libreadline.so.8; do 28 | patchelf --set-soname $lib "${dest_dir}${prefix}/lib/$lib" 29 | done 30 | 31 | post_package_strip 32 | } 33 | -------------------------------------------------------------------------------- /recipes/sqlite: -------------------------------------------------------------------------------- 1 | name=sqlite 2 | version=3.45.0 3 | revision=1 4 | tarball_url="https://sqlite.org/2024/sqlite-autoconf-3450000.tar.gz" 5 | tarball_blake2b="04ba8522be5fa8c0a0a101824f90030f83ad131b53dff622e0449d31b3ee3e50888ed0d8a663c5be3f7338d5d5b6efef1b828374fa599a675ab892bbbb3abec9" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs readline zlib" 9 | 10 | regenerate() { 11 | autotools_recursive_regen 12 | } 13 | 14 | build() { 15 | autotools_configure \ 16 | --enable-readline \ 17 | --enable-fts5 \ 18 | CFLAGS="$CFLAGS -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_ENABLE_DBSTAT_VTAB=1 -DSQLITE_SECURE_DELETE=1 -DSQLITE_ENABLE_FTS3_TOKENIZER=1" 19 | 20 | make -j${parallelism} 21 | } 22 | 23 | package() { 24 | DESTDIR="${dest_dir}" make install 25 | 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /recipes/ttf-dejavu: -------------------------------------------------------------------------------- 1 | name=ttf-dejavu 2 | version=2.37 3 | revision=1 4 | tarball_url="https://sourceforge.net/projects/dejavu/files/dejavu/${version}/dejavu-fonts-ttf-${version}.tar.bz2" 5 | tarball_blake2b="d8614907887f20967fc7c75cb33b636a0eb5c682a076ccc7aef09f4ac243507afc005ef90d0b2aeee6a4a6a1ff3d5ce4fac0d1722a382525b3883ef53cdec26a" 6 | deps="core-libs" 7 | 8 | build() { 9 | cp -r ${source_dir}/. ./ 10 | } 11 | 12 | package() { 13 | mkdir -p "${dest_dir}${prefix}/share/fonts/truetype" 14 | cp -r ttf/* "${dest_dir}${prefix}/share/fonts/truetype/" 15 | } 16 | -------------------------------------------------------------------------------- /recipes/userland: -------------------------------------------------------------------------------- 1 | name=userland 2 | version=0.0 3 | revision=1 4 | source_dir="userland" 5 | hostdeps="gcc binutils rust" 6 | deps="core-libs" 7 | imagedeps="rust" 8 | allow_network=yes 9 | 10 | build() { 11 | cp -r "${source_dir}"/. ./ 12 | 13 | make -j${parallelism} CC=x86_64-aero-gcc CXX=x86_64-aero-g++ 14 | } 15 | 16 | package() { 17 | make install PREFIX="${prefix}" DESTDIR="${dest_dir}" 18 | post_package_strip 19 | } 20 | -------------------------------------------------------------------------------- /recipes/xcb-proto: -------------------------------------------------------------------------------- 1 | name=xcb-proto 2 | version=1.16.0 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/proto/xcb-proto-${version}.tar.xz" 5 | tarball_blake2b="1c59ae4c71e697bd4f0298f6e0ea5235fc47baa9cf584e079258f1da8be538d1b67dc45f1325d82495247d0f8020d0244ca334de3794b410a1feaceabd6b285e" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | imagedeps="python libxml2" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs" 10 | 11 | regenerate() { 12 | autoreconf -fvi 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/xcb-util: -------------------------------------------------------------------------------- 1 | name=xcb-util 2 | version=0.4.1 3 | revision=1 4 | tarball_url="https://xcb.freedesktop.org/dist/xcb-util-${version}.tar.xz" 5 | tarball_blake2b="bcde73073590c56771af6233f1a04a692197a756ef9ce70b6e0bd3625ad6d61f99f4c671dcfae39c8dd66e3225f40f7e9b42dd115ffe83a561e48a9808bf00e3" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | imagedeps="python" 9 | hostdeps="gcc autoconf automake libtool pkg-config" 10 | deps="core-libs xorg-proto libxcb" 11 | 12 | regenerate() { 13 | autotools_recursive_regen 14 | } 15 | 16 | build() { 17 | autotools_configure 18 | 19 | make -j${parallelism} 20 | } 21 | 22 | package() { 23 | DESTDIR="${dest_dir}" make install 24 | 25 | post_package_strip 26 | } 27 | -------------------------------------------------------------------------------- /recipes/xf86-input-keyboard: -------------------------------------------------------------------------------- 1 | name=xf86-input-keyboard 2 | version=2.0.0 3 | revision=1 4 | tarball_url="https://www.x.org/releases/individual/driver/xf86-input-keyboard-${version}.tar.gz" 5 | tarball_blake2b="f3aa3fca15fc75f8314b7b7248ccb757d667b2c46b22c8e23278d144f30d56515d1aa4190ca82e0c15770550a16dd860fd98a81172dab2e97b04e65fceb2a333" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-server xorg-util-macros libx11" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/xf86-input-mouse: -------------------------------------------------------------------------------- 1 | name=xf86-input-mouse 2 | version=1.9.5 3 | revision=1 4 | tarball_url="https://xorg.freedesktop.org/archive/individual/driver/xf86-input-mouse-${version}.tar.gz" 5 | tarball_blake2b="67f4de10424d640913fcafc2292f342a1e993d33e4ecc3c152e818953e19deaba796b96c29e0c07a4f4b74a1eb3bc1c41c3e5ab868cade02c21a90e2556da53f" 6 | source_hostdeps="autoconf automake libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-server xorg-util-macros libx11" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/xf86-video-fbdev: -------------------------------------------------------------------------------- 1 | name=xf86-video-fbdev 2 | version=0.5.0 3 | revision=1 4 | tarball_url="https://www.x.org/releases/individual/driver/xf86-video-fbdev-${version}.tar.gz" 5 | tarball_blake2b="0e37c9145582d317c690c8adcfd5bf4b6046cc60e0b9a59382d1cb39878664e46a47d810d8d0d75c7c6b74630ae5e9f377217b51b23d6cfb2661d901a8bf41e2" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-server xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs xorg-server xorg-util-macros" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | SYSROOT=${sysroot_dir} \ 17 | autotools_configure \ 18 | --disable-pciaccess 19 | 20 | make -j${parallelism} 21 | } 22 | 23 | package() { 24 | DESTDIR="${dest_dir}" make install 25 | 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /recipes/xfe: -------------------------------------------------------------------------------- 1 | name=xfe 2 | version=1.46 3 | revision=1 4 | tarball_url="https://downloads.sourceforge.net/sourceforge/xfe/xfe-${version}.tar.xz" 5 | tarball_blake2b="d7b85e5280d1d9d6db3737f8ac14f4248ae4e99b52d843b51468299bdf71581003b21d0fb2be9949c7189481ed5f3fe88bbd146d2185c17dea3a4785edb876b7" 6 | source_hostdeps="autoconf automake libtool pkg-config intltool" 7 | source_deps="xorg-util-macros gettext" 8 | imagedeps="perl-xml-parser" 9 | hostdeps="gcc autoconf automake libtool pkg-config intltool" 10 | deps="core-libs fox libx11 libxft libxcb xcb-util" 11 | 12 | regenerate() { 13 | autotools_recursive_regen 14 | } 15 | 16 | build() { 17 | cp -rp "${source_dir}"/. ./ 18 | 19 | configure_script_path=./configure \ 20 | autotools_configure \ 21 | --with-x 22 | 23 | make -j${parallelism} 24 | } 25 | 26 | package() { 27 | make DESTDIR=${dest_dir} install 28 | 29 | post_package_strip 30 | } 31 | -------------------------------------------------------------------------------- /recipes/xkeyboard-config: -------------------------------------------------------------------------------- 1 | name=xkeyboard-config 2 | version=2.34 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/data/xkeyboard-config/xkeyboard-config-${version}.tar.gz" 5 | tarball_blake2b="dcd4e7b0b8daf146b92fbb56c64eb32b7d2f42d75a8716226e5bc13b30624aca3ac95e97541561ba2429d5089f6dad495111b1a3f4a76b02d10dbe249461f921" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | imagedeps="python" 9 | hostdeps="gcc autoconf automake libtool pkg-config" 10 | deps="core-libs xorg-xkbcomp" 11 | 12 | regenerate() { 13 | autotools_recursive_regen 14 | } 15 | 16 | build() { 17 | autotools_configure \ 18 | --with-xkb-rules-symlink=xorg 19 | 20 | make -j${parallelism} 21 | } 22 | 23 | package() { 24 | DESTDIR="${dest_dir}" make install 25 | 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /recipes/xorg-font-util: -------------------------------------------------------------------------------- 1 | name=xorg-font-util 2 | version=1.4.1 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/font/font-util-${version}.tar.xz" 5 | tarball_blake2b="5a7cee52aa58cecc85f5168963038b65d921bc33615e86a833cba5aec007d61bb05fa3b200ed9b192d9ab9291d53065443711f8eac976242b2013cd7b9fc494a" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/xorg-proto: -------------------------------------------------------------------------------- 1 | name=xorg-proto 2 | version=2023.2 3 | revision=1 4 | tarball_url="https://www.x.org/releases/individual/proto/xorgproto-${version}.tar.xz" 5 | tarball_blake2b="ff255b91770ad11cdcc48d12815317285d8d16d28011a86166f3e07af18b30fdf35c2eb7b6537504eb4c0e9ca65b3116493422b6faebe04ee80e6aee92387675" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/xorg-util-macros: -------------------------------------------------------------------------------- 1 | name=xorg-util-macros 2 | version=1.20.0 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/util/util-macros-${version}.tar.gz" 5 | tarball_blake2b="4c79c7076281ede6a240be2a2a9ffd47edd523d4a1b839589301a21eeb73100f134eced7d81fbd5ad71516174d3d4c8ab9f63e53987cb0f9a59b4fe6496157d8" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs" 9 | 10 | regenerate() { 11 | autoreconf -fvi 12 | } 13 | 14 | build() { 15 | autotools_configure 16 | 17 | make -j${parallelism} 18 | } 19 | 20 | package() { 21 | DESTDIR="${dest_dir}" make install 22 | 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /recipes/xorg-xclock: -------------------------------------------------------------------------------- 1 | name=xorg-xclock 2 | version=1.1.1 3 | revision=1 4 | tarball_url="https://xorg.freedesktop.org/archive/individual/app/xclock-${version}.tar.gz" 5 | tarball_blake2b="4fd77b8f1f0962774dd0e6295f7482c05be8107e1606a9705ccd2864d2c9b37adda4a41a6704c6e1363edd2b7e704324799c4feaff39e218b326b66274b48187" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros gettext" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libx11 libxaw libxft libxkbfile libxmu libxrender" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure \ 17 | --with-appdefaultdir=/etc/X11/app-defaults \ 18 | --disable-selective-werror 19 | 20 | make -j${parallelism} 21 | } 22 | 23 | package() { 24 | DESTDIR="${dest_dir}" make install 25 | 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /recipes/xorg-xeyes: -------------------------------------------------------------------------------- 1 | name=xorg-xeyes 2 | version=1.2.0 3 | revision=1 4 | tarball_url="https://xorg.freedesktop.org/archive/individual/app/xeyes-${version}.tar.gz" 5 | tarball_blake2b="de152dff4bffb8ce43f7a8ae6b3362088f829acfa2a276b714cb5f92fb7af2935553f685a5cbe9d5f4362177fa71afc5b9e2aabe18010d247a16bad7892c8a7c" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libx11 libxcb libxext libxi libxmu libxrender libxt" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure \ 17 | --disable-selective-werror 18 | 19 | make -j${parallelism} 20 | } 21 | 22 | package() { 23 | DESTDIR="${dest_dir}" make install 24 | 25 | post_package_strip 26 | } 27 | -------------------------------------------------------------------------------- /recipes/xorg-xfontsel: -------------------------------------------------------------------------------- 1 | name=xorg-xfontsel 2 | version=1.1.0 3 | revision=1 4 | tarball_url="https://www.x.org/pub/individual/app/xfontsel-${version}.tar.xz" 5 | tarball_blake2b="e4cb8f25b64e1feb68cdf7ae7982c8e8e6086fb6ad31019b115986220cd9f347edbe738d8d43d0650fd783ef96d2e93a247e462611b0fb33a3aa0a6dc2d2529e" 6 | source_hostdeps="autoconf automake libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libxmu libxaw" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure \ 17 | --with-appdefaultdir=/etc/X11/app-defaults 18 | 19 | make -j${parallelism} 20 | } 21 | 22 | package() { 23 | make DESTDIR=${dest_dir} install 24 | 25 | post_package_strip 26 | } 27 | -------------------------------------------------------------------------------- /recipes/xorg-xinit: -------------------------------------------------------------------------------- 1 | name=xorg-xinit 2 | version=1.4.2 3 | tarball_url="https://gitlab.freedesktop.org/xorg/app/xinit/-/archive/xinit-${version}/xinit-xinit-${version}.tar.gz" 4 | tarball_blake2b="23a48ddee9eab2510fc3322dc203a994f886b765f49c3c92c34b75ed871c844e860ae47581167d905ae59822a8e69fcd1b94e680db933aea251596286d19617b" 5 | source_hostdeps="automake autoconf libtool pkg-config" 6 | source_deps="xorg-util-macros" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs libx11 xorg-proto" 9 | 10 | regenerate() { 11 | autotools_recursive_regen 12 | } 13 | 14 | build() { 15 | autotools_configure 16 | } 17 | 18 | package() { 19 | DESTDIR="${dest_dir}" make install 20 | 21 | # We have our own xinitrc. 22 | rm -rf "${dest_dir}/etc/X11/xinit/xinitrc" 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/xorg-xkbcomp: -------------------------------------------------------------------------------- 1 | name=xorg-xkbcomp 2 | version=1.4.6 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/app/xkbcomp-${version}.tar.gz" 5 | tarball_blake2b="bc0fe69ef4eb809ac9e82fdc40b990bf27b7dd3e358efdb87ab7e34be8ddd0d8bd54e57ab7473f9e22f2714964e2cfb3322ccc2006a64de10dd6f2fc4fa35017" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libxkbfile" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/xorg-xlsfonts: -------------------------------------------------------------------------------- 1 | name=xorg-xlsfonts 2 | version=1.0.7 3 | revision=1 4 | tarball_url="https://www.x.org/pub/individual/app/xlsfonts-${version}.tar.xz" 5 | tarball_blake2b="13f2e2007c38f7d1724e6ffd0c7fe9a3b887a150f50107b892327c3620e4ffdbd4ae1191a9764cc4000d6422fe0f331dcbef11c0b50013ff2d94b699c0cba1ee" 6 | source_hostdeps="autoconf automake libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs libxmu libxaw" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | make DESTDIR=${dest_dir} install 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /recipes/xtrans: -------------------------------------------------------------------------------- 1 | name=xtrans 2 | version=1.5.0 3 | revision=1 4 | tarball_url="https://www.x.org/archive/individual/lib/xtrans-${version}.tar.gz" 5 | tarball_blake2b="25a18ba2398e445a1fedec3f0f5a102aef733b621fb83a81d193a2e4a702b8090b70ccea1c6784293050fd26b20e2d4b2d433954c9740c3a94c53362dc88cc9b" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | source_deps="xorg-util-macros" 8 | hostdeps="gcc autoconf automake libtool pkg-config" 9 | deps="core-libs" 10 | 11 | regenerate() { 12 | autotools_recursive_regen 13 | } 14 | 15 | build() { 16 | autotools_configure 17 | 18 | make -j${parallelism} 19 | } 20 | 21 | package() { 22 | DESTDIR="${dest_dir}" make install 23 | 24 | post_package_strip 25 | } 26 | -------------------------------------------------------------------------------- /recipes/xz: -------------------------------------------------------------------------------- 1 | name=xz 2 | version=5.4.5 3 | revision=1 4 | tarball_url="http://deb.debian.org/debian/pool/main/x/xz-utils/xz-utils_5.6.1+really5.4.5.orig.tar.xz" 5 | tarball_blake2b="08d9afebd927ea5d155515a4c9eedda4d1a249f2b1ab6ada11f50e5b7a3c90b389b32378ab1c0872c7f4627de8dff37149d85e49f7f4d30614add37320ec4f3e" 6 | source_hostdeps="automake autoconf libtool pkg-config" 7 | hostdeps="gcc autoconf automake libtool pkg-config" 8 | deps="core-libs" 9 | 10 | regenerate() { 11 | autotools_recursive_regen 12 | } 13 | 14 | build() { 15 | autotools_configure 16 | 17 | make -j${parallelism} 18 | } 19 | 20 | package() { 21 | DESTDIR="${dest_dir}" make install 22 | 23 | post_package_strip 24 | } 25 | -------------------------------------------------------------------------------- /recipes/zlib: -------------------------------------------------------------------------------- 1 | name=zlib 2 | version=1.3 3 | revision=1 4 | tarball_url="https://github.com/madler/zlib/archive/refs/tags/v${version}.tar.gz" 5 | tarball_blake2b="e663d8041a613b544d76313e61b6340adacb53322422d4b6392455627c80cbac430b9fd0fb4a69e59b0fa110f120d29a1e9513bb37888442cc1b9d5075f47ea6" 6 | imagedeps="patchelf" 7 | hostdeps="gcc pkg-config" 8 | deps="core-libs" 9 | 10 | build() { 11 | prefix="${prefix}" \ 12 | CHOST="${OS_TRIPLET}" \ 13 | ${source_dir}/configure 14 | 15 | make -j${parallelism} 16 | } 17 | 18 | package() { 19 | DESTDIR="${dest_dir}" make install 20 | # Remove static libraries 21 | rm -rf "${dest_dir}${prefix}"/lib/*.a 22 | 23 | # libz.so.${version} is created without soname... fix that 24 | patchelf --set-soname libz.so.${version} "${dest_dir}${prefix}/lib/libz.so.${version}" 25 | 26 | post_package_strip 27 | } 28 | -------------------------------------------------------------------------------- /recipes/zstd: -------------------------------------------------------------------------------- 1 | name=zstd 2 | version=1.5.5 3 | revision=1 4 | tarball_url="https://github.com/facebook/zstd/releases/download/v${version}/zstd-${version}.tar.gz" 5 | tarball_blake2b="7680e27a0adacfb809d9fc81e06d3f99bf74df30374d3b5cb2d58f667dd1b7d5c41697e608592709e17c0e32277f20a6d615edee409b5d7cdcb15da2799a2350" 6 | hostdeps="gcc pkg-config" 7 | deps="core-libs zlib xz" 8 | 9 | build() { 10 | cp -rp "${source_dir}"/. ./ 11 | 12 | CC=${OS_TRIPLET}-gcc \ 13 | CXX=${OS_TRIPLET}-g++ \ 14 | AR=${OS_TRIPLET}-ar \ 15 | PREFIX="${prefix}" \ 16 | make -j${parallelism} 17 | } 18 | 19 | package() { 20 | CC=${OS_TRIPLET}-gcc \ 21 | DESTDIR="${dest_dir}" \ 22 | PREFIX="${prefix}" \ 23 | make install 24 | 25 | # Remove static libraries. 26 | rm -rf "${dest_dir}${prefix}"/lib/*.a 27 | 28 | post_package_strip 29 | } 30 | -------------------------------------------------------------------------------- /rust-toolchain: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "nightly" 3 | components = ["rust-src", "rustfmt", "clippy"] 4 | -------------------------------------------------------------------------------- /scripts/mkimage: -------------------------------------------------------------------------------- 1 | # set -x -e 2 | 3 | # IMAGE_PATH="$base_dir/target/disk.img" 4 | # LOOPBACK_DEV_PATH="$base_dir/target/loopback_dev" 5 | 6 | # ls /dev 7 | 8 | # # echo $in_container 9 | # # whoami 10 | 11 | # # # ls $base_dir 12 | 13 | IMAGE_PATH="./target/disk.img" 14 | 15 | dd if=/dev/zero bs=1G count=0 seek=512 of=$IMAGE_PATH 16 | parted -s $IMAGE_PATH mklabel gpt 17 | parted -s $IMAGE_PATH mkpart primary 2048s 100% 18 | 19 | # # # ensure loop kernel module is enabled 20 | # # if ! lsmod | grep -q 'loop'; then 21 | # # echo 'mkimage: `loop` kernel module not found, attempting to load' 22 | # # modprobe loop 23 | # # fi 24 | 25 | # # losetup -Pf --show $IMAGE_PATH > $LOOPBACK_DEV_PATH 26 | # # losetup -d `cat $LOOPBACK_DEV_PATH` 27 | 28 | # # # echo $in_container 29 | # # # ls /de 30 | 31 | # -L: volume-label 32 | # -N: Overrides the default calculation of the number of inodes that should be reserved for the filesystem. 33 | # -O: Features (disabled are prefixed with `^`) 34 | # -d: root-directory 35 | # -m: reserved-blocks-percentage 36 | # -r: fs-revision-level 37 | # # -t: filesystem-type 38 | # mke2fs \ 39 | # -L '' \ 40 | # -N 0 \ 41 | # -O ^64bit \ 42 | # -d "./sysroot" \ 43 | # -m 5 \ 44 | # -r 1 \ 45 | # -t ext2 \ 46 | # "./target/disk.img" \ 47 | # 5G \ 48 | # ; 49 | -------------------------------------------------------------------------------- /source-recipes/autoconf: -------------------------------------------------------------------------------- 1 | name=autoconf 2 | version=2.72 3 | tarball_url="https://ftp.gnu.org/gnu/autoconf/autoconf-${version}.tar.gz" 4 | tarball_blake2b="48fff54704176cbf2642230229c628b75c43ef3f810c39eea40cae91dd02e1203d04a544407de96f9172419a94b952865909d969d9e9b6c10879a9d9aeea5ad0" 5 | -------------------------------------------------------------------------------- /source-recipes/autoconf-2.69: -------------------------------------------------------------------------------- 1 | name=autoconf-2.69 2 | version=2.69 3 | tarball_url="https://ftp.gnu.org/gnu/autoconf/autoconf-${version}.tar.gz" 4 | tarball_blake2b="7e8a513bbfcabadad1577919c048cc05ca0a084788850b42570f88afc2fa9c25fb32277412f135b81ba1c0d8079465a6b581d2d78662c991d2183b739fac407c" 5 | -------------------------------------------------------------------------------- /source-recipes/automake: -------------------------------------------------------------------------------- 1 | name=automake 2 | version=1.16.5 3 | tarball_url="https://ftp.gnu.org/gnu/automake/automake-${version}.tar.gz" 4 | tarball_blake2b="5ccdcbe2d3deb2b0baed4a8590b07714cd7098fbda251afebe83232ed03f4db84abbe023cf0544622dbc5137254347273247428eb5420564a167b86de95d113e" 5 | 6 | regenerate() { 7 | true 8 | } 9 | -------------------------------------------------------------------------------- /source-recipes/cmake: -------------------------------------------------------------------------------- 1 | name=cmake 2 | version=3.27.7 3 | tarball_url="https://github.com/Kitware/CMake/releases/download/v${version}/cmake-${version}.tar.gz" 4 | tarball_blake2b="a20fac503ba54b4b7e85896056a614b67aa346ad2636e7ab1bf09a2660b92a52754485527f36101e59d47713e7445d27797577c1fa6a8ebe59acb4675227c6da" 5 | -------------------------------------------------------------------------------- /source-recipes/gcc-host: -------------------------------------------------------------------------------- 1 | name=gcc-host 2 | version=13.2.0 3 | tarball_url="https://ftp.gnu.org/gnu/gcc/gcc-${version}/gcc-${version}.tar.xz" 4 | tarball_blake2b="0034b29d3d6cc05821f0c4253ce077805943aff7b370729dd203bda57d89c107edd657eeddc2fb1e69ea15c7b0323b961f46516c7f4af89a3ccf7fea84701be2" 5 | hostdeps="automake autoconf-2.69 libtool pkg-config" 6 | imagedeps="git" 7 | allow_network="yes" 8 | 9 | regenerate() { 10 | ./contrib/download_prerequisites 11 | 12 | autotools_recursive_regen -I"$(realpath ./config)" 13 | 14 | cp -pv /usr/local/share/libtool/build-aux/{config.sub,config.guess,install-sh} libiberty/ 15 | cp -pv /usr/local/share/libtool/build-aux/{config.sub,config.guess,install-sh} libgcc/ 16 | } 17 | -------------------------------------------------------------------------------- /source-recipes/gnulib: -------------------------------------------------------------------------------- 1 | name=gnulib 2 | version=4f6545e79c4a7cd7feb2c8f23f1d5167e7165907 3 | tarball_url="https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-${version}.tar.gz" 4 | tarball_blake2b="0206d3bdeb25bdc3562065dc1832d3ea2ac95920b84ed0461626efba83de3edfcdcbc257c493a9a3d6035d0edb09526248c2483f898110be774ac31caf650e58" 5 | -------------------------------------------------------------------------------- /source-recipes/intltool: -------------------------------------------------------------------------------- 1 | name=intltool 2 | version=0.51.0 3 | tarball_url="https://launchpad.net/intltool/trunk/${version}/+download/intltool-${version}.tar.gz" 4 | tarball_blake2b="98fe40e4d669fdf65a777152ddee0a9656412b9cf5d1e682d1b4b7bd666f3e5aa623a50481b6df47e16a935550836c66c666229b0bb7ef143f7cde6893b97a69" 5 | hostdeps="autoconf automake libtool pkg-config" 6 | 7 | regenerate() { 8 | autotools_recursive_regen 9 | } 10 | -------------------------------------------------------------------------------- /source-recipes/libgcc-binaries: -------------------------------------------------------------------------------- 1 | name=libgcc-binaries 2 | version=1e4b24ef15a7d9a2db7570d1c9283fc474dcbd73 3 | tarball_url="https://github.com/mintsuki/libgcc-binaries/archive/${version}.tar.gz" 4 | tarball_blake2b="77b8af0466577ca5af9b16d968865d24d42fb422566de2f03dd5b2d984f70015da6b1bd28878855889ee665f0ace4419cee3c40d20ac1176b0c500a1e50302bd" 5 | -------------------------------------------------------------------------------- /source-recipes/libtool: -------------------------------------------------------------------------------- 1 | name=libtool 2 | version=2.4.7 3 | tarball_url="https://ftp.gnu.org/gnu/libtool/libtool-${version}.tar.gz" 4 | tarball_blake2b="3b7c66050237931443008d6be9c0c30f4938402bf68576cdf02f2248b216bb68c6b797bbfdb8a92caa5e12cb10208cd19771cdcb6b0d83572ad60bfc03e67e98" 5 | hostdeps="autoconf automake gnulib" 6 | imagedeps="help2man" 7 | 8 | regenerate() { 9 | cp -r ${base_dir}/sources/gnulib ./ 10 | ./bootstrap --force --skip-git --skip-po --gnulib-srcdir=`pwd`/gnulib 11 | } 12 | -------------------------------------------------------------------------------- /source-recipes/limine: -------------------------------------------------------------------------------- 1 | name=limine 2 | version=7.0.0 3 | revision=1 4 | tarball_url="https://github.com/limine-bootloader/limine/releases/download/v${version}/limine-${version}.tar.xz" 5 | tarball_blake2b="7986d948fe84c80b338e5cc66edca5f511d277d2e854484c87183666bf1b075480b61213c177b6e39a1145502cc9e07b9e1442c3dcf3171339af5b55ac9c184f" 6 | hostdeps="gcc libtool pkg-config autoconf automake" 7 | deps="core-libs" 8 | imagedeps="mtools nasm" 9 | 10 | regenerate() { 11 | autoreconf -fvi 12 | } -------------------------------------------------------------------------------- /source-recipes/llvm-host: -------------------------------------------------------------------------------- 1 | name=llvm-host 2 | version=17.0.6 3 | tarball_url="https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/llvm-project-${version}.src.tar.xz" 4 | tarball_blake2b="d6ede1a9fda8756995c3e0654111941649e15794179641806f18919f1dc68c41ca0cabd5693b5096d05dccc3a391cd20d34af1137bf8af92ed3117a1ce84d1b2" 5 | 6 | regenerate() { 7 | echo "Regenerating LLVM..." 8 | for i in "${base_dir}"/patches/llvm/*; do 9 | patch -p1 < "$i" 10 | done 11 | } 12 | -------------------------------------------------------------------------------- /source-recipes/pkg-config: -------------------------------------------------------------------------------- 1 | name=pkg-config 2 | version=2.1.0 3 | tarball_url="https://github.com/pkgconf/pkgconf/archive/refs/tags/pkgconf-${version}.tar.gz" 4 | tarball_blake2b="ab0f03494c37659c18a882ff03e6bb746c3cfe0ad66b7a9d9d0b2de66bec89258b2374addd3eb3a571442d8bab3c1311410e296379b697d16aaebe2bc89b318c" 5 | hostdeps="autoconf automake libtool" 6 | 7 | regenerate() { 8 | autoreconf -fvi 9 | } 10 | -------------------------------------------------------------------------------- /source-recipes/rust-host: -------------------------------------------------------------------------------- 1 | name=rust-host 2 | version=1.75.0 3 | tarball_url="https://static.rust-lang.org/dist/rustc-${version}-src.tar.xz" 4 | tarball_blake2b="8937b80585eddaa3e1f1ef948899d14a170308518c6fef9fe569560cdd870053776956743f796055f2119399b9ca6c0df12fedd789ae46324d071e5126c4e495" 5 | 6 | regenerate() { 7 | cat > ${source_dir}/config.toml < u8; 21 | } 22 | 23 | static AML_SUBSYSTEM: Once> = Once::new(); 24 | 25 | pub fn get_subsystem() -> Arc { 26 | AML_SUBSYSTEM.get().unwrap().clone() 27 | } 28 | 29 | pub fn init(subsystem: Arc) { 30 | assert!( 31 | AML_SUBSYSTEM.get().is_none(), 32 | "aml: subsystem already initialized" 33 | ); 34 | 35 | AML_SUBSYSTEM.call_once(|| subsystem); 36 | log::debug!("aml: subsystem initialized"); 37 | } 38 | -------------------------------------------------------------------------------- /src/aero_kernel/src/acpi/hpet.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | use core::ptr; 19 | 20 | use super::sdt::Sdt; 21 | use super::GenericAddressStructure; 22 | 23 | pub const SIGNATURE: &str = "HPET"; 24 | 25 | #[repr(C, packed)] 26 | pub(super) struct Hpet { 27 | header: Sdt, 28 | hw_rev_id: u8, 29 | comparator_descriptor: u8, 30 | pci_vendor_id: u16, 31 | base_address: GenericAddressStructure, 32 | hpet_number: u8, 33 | min_periodic_clk_tick: u16, 34 | oem_attribute: u8, 35 | } 36 | 37 | impl Hpet { 38 | pub fn new(sdt: &'static Sdt) -> Self { 39 | unsafe { ptr::read((sdt as *const Sdt) as *const Self) } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/aero_kernel/src/arch/aarch64/dtb.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug)] 2 | #[repr(C)] 3 | struct FdtHeader { 4 | magic: u32, 5 | totalsize: u32, 6 | off_dt_struct: u32, 7 | off_dt_strings: u32, 8 | off_mem_rsvmap: u32, 9 | version: u32, 10 | last_comp_version: u32, 11 | boot_cpuid_phys: u32, 12 | size_dt_strings: u32, 13 | size_dt_struct: u32, 14 | } 15 | 16 | pub struct Dtb<'a> { 17 | header: &'a FdtHeader, 18 | } 19 | 20 | impl<'a> Dtb<'a> { 21 | pub fn new(blob: *const u8) -> Self { 22 | let header = unsafe { &*(blob as *const FdtHeader) }; 23 | // assert_eq!(header.magic, 0xd00dfeed); 24 | 25 | log::debug!("{header:#x?}"); 26 | 27 | Self { header } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/aero_kernel/src/arch/aarch64/interrupts.rs: -------------------------------------------------------------------------------- 1 | #[repr(C)] 2 | pub struct InterruptStack { 3 | spsr: u64, 4 | pc: u64, 5 | x31: u64, 6 | x30: u64, 7 | x29: u64, 8 | x28: u64, 9 | x27: u64, 10 | x26: u64, 11 | x25: u64, 12 | x24: u64, 13 | x23: u64, 14 | x22: u64, 15 | x21: u64, 16 | x20: u64, 17 | x19: u64, 18 | x18: u64, 19 | x17: u64, 20 | x16: u64, 21 | x15: u64, 22 | x14: u64, 23 | x13: u64, 24 | x12: u64, 25 | x11: u64, 26 | x10: u64, 27 | x9: u64, 28 | x8: u64, 29 | x7: u64, 30 | x6: u64, 31 | x5: u64, 32 | x4: u64, 33 | x3: u64, 34 | x2: u64, 35 | sp: u64, 36 | x1: u64, 37 | x0: u64, 38 | } 39 | 40 | pub fn allocate_vector() -> u8 { 41 | unimplemented!() 42 | } 43 | 44 | pub fn register_handler(vector: u8, handler: fn(&mut InterruptStack)) { 45 | unimplemented!() 46 | } 47 | 48 | pub fn is_enabled() -> bool { 49 | let v: u64; 50 | unsafe { 51 | asm!("mrs {}, daif", out(reg) v, options(nostack, nomem)); 52 | } 53 | (!v) != 0 54 | } 55 | 56 | pub unsafe fn disable_interrupts() { 57 | asm!("msr daifset, #15", options(nomem, nostack)) 58 | } 59 | 60 | pub unsafe fn enable_interrupts() { 61 | asm!("msr daifclr, #15", options(nomem, nostack)) 62 | } 63 | 64 | pub unsafe fn halt() { 65 | asm!("wfi", options(nomem, nostack)); 66 | } 67 | -------------------------------------------------------------------------------- /src/aero_kernel/src/arch/aarch64/time.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | use aero_syscall::TimeSpec; 19 | 20 | pub fn get_uptime_ticks() -> usize { 21 | unimplemented!() 22 | } 23 | 24 | pub fn get_realtime_clock() -> TimeSpec { 25 | unimplemented!() 26 | } 27 | 28 | pub fn init() { 29 | unimplemented!() 30 | } 31 | -------------------------------------------------------------------------------- /src/aero_kernel/src/arch/aarch64/tls.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | pub fn get_cpuid() -> usize { 19 | unimplemented!() 20 | } 21 | -------------------------------------------------------------------------------- /src/aero_kernel/src/arch/mod.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | #[cfg(target_arch = "x86_64")] 19 | mod x86_64; 20 | 21 | #[cfg(target_arch = "x86_64")] 22 | pub use self::x86_64::*; 23 | 24 | #[cfg(target_arch = "aarch64")] 25 | mod aarch64; 26 | 27 | #[cfg(target_arch = "aarch64")] 28 | pub use self::aarch64::*; 29 | -------------------------------------------------------------------------------- /src/aero_kernel/src/arch/x86_64/asm_macros.rs: -------------------------------------------------------------------------------- 1 | pub macro pop_preserved() { 2 | " 3 | pop r15 4 | pop r14 5 | pop r13 6 | pop r12 7 | pop rbp 8 | pop rbx 9 | " 10 | } 11 | 12 | pub macro pop_scratch() { 13 | " 14 | pop r11 15 | pop r10 16 | pop r9 17 | pop r8 18 | pop rsi 19 | pop rdi 20 | pop rdx 21 | pop rcx 22 | pop rax 23 | " 24 | } 25 | 26 | pub macro push_scratch() { 27 | " 28 | push rcx 29 | push rdx 30 | push rdi 31 | push rsi 32 | push r8 33 | push r9 34 | push r10 35 | push r11 36 | " 37 | } 38 | 39 | pub macro push_preserved() { 40 | " 41 | push rbx 42 | push rbp 43 | push r12 44 | push r13 45 | push r14 46 | push r15 47 | " 48 | } 49 | -------------------------------------------------------------------------------- /src/aero_kernel/src/arch/x86_64/registers.inc: -------------------------------------------------------------------------------- 1 | ; pops the preserved registers (the stack must have the preserved registers pushed on 2 | ; top and matches the layout of the `PreservedRegisters` structure) 3 | %macro pop_preserved 0 4 | pop r15 5 | pop r14 6 | pop r13 7 | pop r12 8 | pop rbp 9 | pop rbx 10 | %endmacro 11 | 12 | ; pops the scratch registers (the stack must have the scratch registers pushed on 13 | ; top and matches the layout of the `ScratchRegisters` structure) 14 | %macro pop_scratch 0 15 | pop r11 16 | pop r10 17 | pop r9 18 | pop r8 19 | pop rsi 20 | pop rdi 21 | pop rdx 22 | pop rcx 23 | pop rax 24 | %endmacro 25 | 26 | ; pushes the scratch registers on the stack. The layout matches the layout of 27 | ; the `ScratchRegisters` structure though note that it does not push the RAX 28 | ; register. The caller is responsible for pushing RAX on the top of the stack. 29 | %macro push_scratch 0 30 | push rcx 31 | push rdx 32 | push rdi 33 | push rsi 34 | push r8 35 | push r9 36 | push r10 37 | push r11 38 | %endmacro 39 | 40 | ; pushes the preserved registers on the stack. The layout matches the layout of 41 | ; the `PreservedRegisters` structure. 42 | %macro push_preserved 0 43 | push rbx 44 | push rbp 45 | push r12 46 | push r13 47 | push r14 48 | push r15 49 | %endmacro 50 | -------------------------------------------------------------------------------- /src/aero_kernel/src/drivers/block/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod ahci; 2 | // FIXME: aarch64 port 3 | #[cfg(target_arch = "x86_64")] 4 | pub mod ide; 5 | pub mod nvme; 6 | -------------------------------------------------------------------------------- /src/aero_kernel/src/drivers/gdbstub.rs: -------------------------------------------------------------------------------- 1 | // TODO: Is it worth adding a GDB stub to facilitate userland debugging? 2 | pub fn init() {} 3 | 4 | crate::module_init!(init, ModuleType::Other); 5 | -------------------------------------------------------------------------------- /src/aero_kernel/src/drivers/mod.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | #[cfg(target_arch = "x86_64")] 19 | pub mod block; 20 | #[cfg(target_arch = "x86_64")] 21 | pub mod drm; 22 | // FIXME: aarch64 port 23 | #[cfg(target_arch = "x86_64")] 24 | pub mod keyboard; 25 | // FIXME: aarch64 port 26 | #[cfg(target_arch = "x86_64")] 27 | pub mod lai; 28 | // FIXME: aarch64 port 29 | pub mod e1000; 30 | // #[cfg(feature = "gdbstub")] 31 | pub mod gdbstub; 32 | pub mod mouse; 33 | #[cfg(target_arch = "x86_64")] 34 | pub mod pci; 35 | pub mod pty; 36 | pub mod tty; 37 | 38 | cfg_match! { 39 | target_arch = "x86_64" => { 40 | pub mod uart_16550; 41 | pub use self::uart_16550 as uart; 42 | } 43 | 44 | target_arch = "aarch64" => { 45 | pub mod uart_pl011; 46 | pub use self::uart_pl011 as uart; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/aero_kernel/src/drivers/tty/mod.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | mod ctty; 19 | mod vtty; 20 | 21 | fn init() { 22 | ctty::init().unwrap(); 23 | vtty::init().unwrap(); 24 | } 25 | 26 | crate::module_init!(init, ModuleType::Other); 27 | -------------------------------------------------------------------------------- /src/aero_kernel/src/emu.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | use crate::utils::io; 19 | 20 | #[repr(u32)] 21 | pub enum ExitStatus { 22 | Success = 0x10, 23 | Failure = 0x11, 24 | } 25 | 26 | pub fn exit_qemu(exit_status: ExitStatus) -> ! { 27 | // QEMU will execute `exit(((code << 1) | 1))`. 28 | unsafe { 29 | io::outl(0xf4, exit_status as u32); 30 | } 31 | 32 | // For the case that the QEMU exit attempt did not work, transition into an infinite loop. 33 | // 34 | // Calling `panic!()` here is unfeasible, since there is a good chance this function here is 35 | // the last expression in the `panic!()` handler itself. This prevents a possible infinite 36 | // loop. 37 | loop { 38 | unsafe { 39 | crate::arch::interrupts::halt(); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/aero_kernel/src/mem/pti.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | //! PTI (Page Table Isolation) is a feature that mitigates the Meltdown security 19 | //! vulnerability (affecting mainly Intel's x86 CPUs) and improves kernel hardening against 20 | //! attempts to bypass kernel address space layout randomization. 21 | //! 22 | //! ## Notes 23 | //! * 24 | 25 | #[allow(warnings)] 26 | unsafe fn switch_pti_stack(old: usize, new: usize) {} 27 | 28 | #[no_mangle] 29 | pub unsafe extern "C" fn map_pti() {} 30 | 31 | #[no_mangle] 32 | pub unsafe extern "C" fn unmap_pti() {} 33 | -------------------------------------------------------------------------------- /src/aero_kernel/src/net/loopback.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | //! Loopback device. 19 | 20 | use alloc::boxed::Box; 21 | use alloc::sync::Arc; 22 | use crabnet::data_link::MacAddr; 23 | use crabnet::network::Ipv4Addr; 24 | 25 | use crate::utils::dma::DmaAllocator; 26 | 27 | use super::{NetworkDevice, NetworkDriver, RecvPacket}; 28 | 29 | pub struct Loopback; 30 | 31 | impl NetworkDriver for Loopback { 32 | fn send(&self, _packet: Box<[u8], DmaAllocator>) { 33 | todo!() 34 | } 35 | 36 | fn recv(&self) -> RecvPacket { 37 | todo!() 38 | } 39 | 40 | fn recv_end(&self, _packet_id: usize) { 41 | todo!() 42 | } 43 | 44 | #[inline] 45 | fn mac(&self) -> MacAddr { 46 | // TODO: What should this really be? 47 | MacAddr::NULL 48 | } 49 | } 50 | 51 | lazy_static::lazy_static! { 52 | pub static ref LOOPBACK: Arc = { 53 | let device = Arc::new(NetworkDevice::new(Arc::new(Loopback))); 54 | 55 | device.set_ip(Ipv4Addr::LOOPBACK); 56 | device.set_subnet_mask(Ipv4Addr::new(255, 0, 0, 0)); 57 | 58 | device 59 | }; 60 | } 61 | -------------------------------------------------------------------------------- /src/aero_kernel/src/socket/ipv4.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | //! IPv4 or `AF_RAW` sockets. 19 | 20 | use alloc::sync::Arc; 21 | 22 | use aero_syscall::prelude::{IfReq, SIOCGIFINDEX}; 23 | 24 | use crate::arch::user_copy::UserRef; 25 | 26 | use crate::fs::inode::INodeInterface; 27 | use crate::fs::Result; 28 | 29 | use crate::mem::paging::VirtAddr; 30 | 31 | pub struct Ipv4Socket {} 32 | 33 | impl Ipv4Socket { 34 | pub fn new() -> Arc { 35 | Arc::new(Self {}) 36 | } 37 | } 38 | 39 | impl INodeInterface for Ipv4Socket { 40 | fn ioctl(&self, command: usize, arg: usize) -> Result { 41 | match command { 42 | SIOCGIFINDEX => { 43 | let mut ifreq = unsafe { UserRef::::new(VirtAddr::new(arg as _)) }; 44 | 45 | let name = ifreq.name().unwrap(); 46 | assert!(name == "eth0"); 47 | 48 | ifreq.data.ifindex = 1; // FIXME: Fill the actual interface index 49 | Ok(0) 50 | } 51 | 52 | _ => unimplemented!(), 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/aero_kernel/src/tests.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | #[cfg(feature = "ci")] 19 | use crate::emu; 20 | 21 | pub struct Test { 22 | pub test_fn: fn(), 23 | pub path: &'static str, 24 | } 25 | 26 | pub(crate) fn test_runner(tests: &[&Test]) { 27 | crate::rendy::clear_screen(true); 28 | crate::logger::set_rendy_debug(true); 29 | 30 | log::info!("running {} tests", tests.len()); 31 | 32 | let mut passed = 0usize; 33 | 34 | for test in tests { 35 | (test.test_fn)(); 36 | log::info!("test {} ... ok", test.path); 37 | 38 | passed += 1; 39 | } 40 | 41 | log::info!(""); 42 | log::info!( 43 | "test result: ok. {} passed; 0 failed; 0 ignored; 0 measured; 0 filtered out", 44 | passed 45 | ); 46 | } 47 | -------------------------------------------------------------------------------- /src/aero_kernel/src/userland/mod.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | use crate::fs; 19 | use crate::fs::Path; 20 | 21 | pub mod scheduler; 22 | pub mod signals; 23 | pub mod task; 24 | pub mod terminal; 25 | pub mod vm; 26 | 27 | pub fn run() -> fs::Result<()> { 28 | let init_path = Path::new("/usr/bin/init"); 29 | let init_inode = fs::lookup_path(init_path)?; 30 | 31 | scheduler::get_scheduler().exec(&init_inode, None, None); 32 | Ok(()) 33 | } 34 | 35 | #[cfg(test)] 36 | pub fn run_tests() -> fs::Result<()> { 37 | let utest_path = Path::new("/usr/bin/utest"); 38 | let utest_inode = fs::lookup_path(utest_path)?; 39 | 40 | scheduler::get_scheduler().exec(&utest_inode, None, None); 41 | Ok(()) 42 | } 43 | -------------------------------------------------------------------------------- /src/aero_proc/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aero_proc" 3 | version = "0.1.0" 4 | authors = ["czapek1337 "] 5 | edition = "2021" 6 | 7 | [features] 8 | test = [] 9 | default = [] 10 | 11 | [lib] 12 | proc-macro = true 13 | 14 | [dependencies] 15 | proc-macro2 = "1.0.78" 16 | proc-macro-error = "1.0.4" 17 | quote = "1" 18 | 19 | [dependencies.syn] 20 | features = ["full"] 21 | version = "1.0.91" 22 | -------------------------------------------------------------------------------- /src/aero_proc/src/test.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | use proc_macro::TokenStream; 19 | use syn::ItemFn; 20 | 21 | pub fn parse(_: TokenStream, item: TokenStream) -> TokenStream { 22 | let input = syn::parse_macro_input!(item as ItemFn); 23 | 24 | let name = &input.sig.ident; 25 | let body = &input.block; 26 | 27 | let marker_name = quote::format_ident!("{}_test_marker", name); 28 | let result = quote::quote! { 29 | #[test_case] 30 | static #marker_name: crate::tests::Test = crate::tests::Test { 31 | test_fn: #name, 32 | path: concat!(module_path!(), "::", stringify!(#name)) 33 | }; 34 | 35 | fn #name() { 36 | #body 37 | } 38 | }; 39 | 40 | result.into() 41 | } 42 | -------------------------------------------------------------------------------- /src/aero_syscall/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aero_syscall" 3 | version = "0.1.0" 4 | authors = ["Anhad Singh "] 5 | edition = "2021" 6 | 7 | [dependencies] 8 | bitflags = "1.2.1" 9 | num-derive = { version = "0.3", default-features = false } 10 | num-traits = { version = "0.2", default-features = false } 11 | byte_endian = { git = "https://github.com/aero-os/byte_endian" } 12 | static_assertions = "1.1.0" 13 | -------------------------------------------------------------------------------- /src/aero_syscall/src/time.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | pub const ITIMER_REAL: usize = 0; 19 | pub const ITIMER_VIRTUAL: usize = 1; 20 | pub const ITIMER_PROF: usize = 2; 21 | 22 | #[derive(Default, PartialEq)] 23 | #[repr(C)] 24 | pub struct TimeVal { 25 | pub tv_sec: i64, 26 | pub tv_usec: i64, 27 | } 28 | 29 | #[derive(Default, PartialEq)] 30 | #[repr(C)] 31 | pub struct ITimerVal { 32 | pub it_interval: TimeVal, // Interval for periodic timer 33 | pub it_value: TimeVal, // Time until next expiration 34 | } 35 | -------------------------------------------------------------------------------- /src/font.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Andy-Python-Programmer/aero/be57ae00e122c5710d449314f828352bbc7164d2/src/font.bin -------------------------------------------------------------------------------- /src/uapi/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "uapi" 3 | version = "0.1.0" 4 | edition = "2021" 5 | authors = ["Anhad Singh "] 6 | 7 | [dependencies] 8 | -------------------------------------------------------------------------------- /src/uapi/src/ioctl.rs: -------------------------------------------------------------------------------- 1 | // The generic ioctl numbering scheme doesn't really enforce 2 | // a type field. De facto, however, the top 8 bits of the lower 16 3 | // bits are indeed used as a type field, so we might just as well make 4 | // this explicit here. Please be sure to use the decoding functions 5 | // below from now on. 6 | pub const IOC_NRBITS: usize = 8; 7 | pub const IOC_TYPEBITS: usize = 8; 8 | pub const IOC_SIZEBITS: usize = 14; 9 | 10 | pub const IOC_NRSHIFT: usize = 0; 11 | pub const IOC_TYPESHIFT: usize = IOC_NRSHIFT + IOC_NRBITS; 12 | pub const IOC_SIZESHIFT: usize = IOC_TYPESHIFT + IOC_TYPEBITS; 13 | pub const IOC_DIRSHIFT: usize = IOC_SIZESHIFT + IOC_SIZEBITS; 14 | 15 | pub const IOC_NONE: usize = 0; 16 | pub const IOC_WRITE: usize = 1; 17 | pub const IOC_READ: usize = 2; 18 | 19 | pub const fn ioc(dir: usize, ty: usize, nr: usize, size: usize) -> usize { 20 | ((dir) << IOC_DIRSHIFT) 21 | | ((ty) << IOC_TYPESHIFT) 22 | | ((nr) << IOC_NRSHIFT) 23 | | ((size) << IOC_SIZESHIFT) 24 | } 25 | 26 | // Used to create numbers. 27 | // 28 | // NOTE: `iow` means userland is writing and kernel is reading. `ior` 29 | // means userland is reading and kernel is writing. 30 | #[inline] 31 | pub const fn io(typ: usize, nr: usize) -> usize { 32 | ioc(IOC_NONE, typ, nr, 0) 33 | } 34 | 35 | #[inline] 36 | pub const fn ior(typ: usize, nr: usize) -> usize { 37 | ioc(IOC_READ, typ, nr, core::mem::size_of::()) 38 | } 39 | 40 | #[inline] 41 | pub const fn iow(typ: usize, nr: usize) -> usize { 42 | ioc(IOC_WRITE, typ, nr, core::mem::size_of::()) 43 | } 44 | 45 | #[inline] 46 | pub const fn iowr(typ: usize, nr: usize) -> usize { 47 | ioc(IOC_READ | IOC_WRITE, typ, nr, core::mem::size_of::()) 48 | } 49 | -------------------------------------------------------------------------------- /src/uapi/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![no_std] 2 | 3 | pub mod drm; 4 | pub mod ioctl; 5 | pub mod pty; 6 | -------------------------------------------------------------------------------- /src/uapi/src/pty.rs: -------------------------------------------------------------------------------- 1 | use crate::ioctl; 2 | 3 | pub const TIOCGPTN: usize = ioctl::ior::('T' as usize, 0x30); 4 | pub const TIOCSPTLCK: usize = ioctl::iow::('T' as usize, 0x31); 5 | -------------------------------------------------------------------------------- /tools/deps.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # deps.sh 4 | # dependency installer script 5 | # 6 | # note: should be replaced as part of build system rework 7 | 8 | set -e 9 | 10 | RED='\033[1;31m' 11 | GREEN='\033[1;32m' 12 | NC='\033[0m' # no colour 13 | 14 | function log_info() { echo -e "$PREFIX ${GREEN}info${NC}: $1"; } 15 | function log_error() { echo -e "$PREFIX ${RED}error${NC}: $1"; } 16 | 17 | PREFIX='deps.sh>' 18 | 19 | PKGMAN='unknown' 20 | PKGPREFIX='' 21 | PKGINSTALL='' 22 | PKGQUERY='' 23 | 24 | PARENTDIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) 25 | 26 | PLATFORM=$(uname) 27 | DEPSDIR="$PARENTDIR/deps" 28 | DEPSFILE="$DEPSDIR/deps_${PLATFORM,,}" 29 | 30 | . $DEPSFILE 31 | 32 | log_info "\`$PLATFORM\` system detected" 33 | log_info "installing packages from \`$DEPSFILE\` with \`$PKGMAN\`..." 34 | 35 | if [[ !("$PLATFORM" == "Darwin") && ("$EUID" -ne 0) ]]; then 36 | log_error "please run as root" 37 | exit 38 | fi 39 | 40 | for pkg in "${packages[@]}"; do 41 | echo -n "installing $pkg... " 42 | 43 | # TODO: handle potential errors in installation commands 44 | if [[ "$VERBOSE" == "true" ]]; then 45 | install_package $pkg 46 | else 47 | install_package $pkg &>/dev/null 48 | fi 49 | 50 | if query_package $pkg; then 51 | echo -e "${GREEN}ok${NC}" 52 | else 53 | echo -e "${RED}FAILED${NC}" 54 | fi 55 | done 56 | 57 | log_info "completed" 58 | -------------------------------------------------------------------------------- /tools/deps/deps_darwin: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | PKGMAN='brew' 4 | 5 | # 6 | # 7 | # DEPENDENCIES BELOW ARE NOT IN Homebrew REPOS 8 | # 9 | # patch PREINSTALLED ON darwin/macOS 10 | # tar PREINSTALLED ON darwin/macOS 11 | # python-pip TODO: ALTERNATIVE INSTALL 12 | # python-mako TODO: ALTERNATIVE INSTALL 13 | packages=( 14 | "bash" 15 | "coreutils" 16 | "make" 17 | "gzip" 18 | "binutils" 19 | "gcc" 20 | "git" 21 | "subversion" 22 | "mercurial" 23 | "curl" 24 | "wget" 25 | "xz" 26 | "nasm" 27 | "mtools" 28 | "meson" 29 | "perl" 30 | "m4" 31 | "texinfo" 32 | "groff" 33 | "gettext" 34 | "expat" 35 | "bison" 36 | "flex" 37 | "help2man" 38 | "openssl" 39 | "gperf" 40 | "rsync" 41 | "libxslt" 42 | "python" 43 | "xcb-proto" 44 | "xorriso" 45 | "boost" 46 | "cmake" 47 | ) 48 | 49 | function install_package() { brew install $1; } 50 | function query_package() { 51 | brew list | { 52 | RESULT=$(grep -q $1); 53 | cat > /dev/null; 54 | return $RESULT; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /tools/deps/deps_linux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | if [ -x "$(command -v apt)" ]; then 4 | PKGMAN="apt" 5 | 6 | packages=( 7 | "autopoint" 8 | "bash" 9 | "binutils" 10 | "bison" 11 | "cmake" 12 | "coreutils" 13 | "curl" 14 | "expat" 15 | "flex" 16 | "gcc" 17 | "gettext" 18 | "git" 19 | "gperf" 20 | "groff" 21 | "gzip" 22 | "help2man" 23 | "libgmp-dev" 24 | "m4" 25 | "make" 26 | "mercurial" 27 | "meson" 28 | "mtools" 29 | "nasm" 30 | "openssl" 31 | "patch" 32 | "perl" 33 | "python3" 34 | "python3-mako" 35 | "python3-pip" 36 | "rsync" 37 | "subversion" 38 | "tar" 39 | "texinfo" 40 | "wget" 41 | "xcb-proto" 42 | "xorriso" 43 | "xsltproc" 44 | "xz-utils" 45 | ) 46 | 47 | function install_package() { apt-get install -y $1; } 48 | function query_package() { dpkg -l | grep -q $1; } 49 | elif [ -x "$(command -v pacman)" ]; then # if [ -x "$(command -v apt)" ]; then 50 | PKGMAN="pacman" 51 | 52 | packages=( 53 | "bash" 54 | "coreutils" 55 | "make" 56 | "patch" 57 | "tar" 58 | "gzip" 59 | "binutils" 60 | "gcc" 61 | "git" 62 | "subversion" 63 | "mercurial" 64 | "curl" 65 | "wget" 66 | "xz" 67 | "nasm" 68 | "mtools" 69 | "meson" 70 | "perl" 71 | "m4" 72 | "texinfo" 73 | "groff" 74 | "gettext" 75 | "expat" 76 | "bison" 77 | "flex" 78 | "help2man" 79 | "openssl" 80 | "gperf" 81 | "rsync" 82 | "libxslt" 83 | "python" 84 | "python-pip" 85 | "python-mako" 86 | "xcb-proto" 87 | "libisoburn" 88 | "boost-libs" 89 | "cmake" 90 | "itstool" 91 | ) 92 | 93 | function install_package() { pacman -S $1 --noconfirm; } 94 | function query_package() { pacman -Q | grep -q $1; } 95 | fi # elif [ -x "$(command -v pacman)" ]; then 96 | -------------------------------------------------------------------------------- /tools/gdb-debug-userland.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import sys 4 | import os 5 | import subprocess 6 | import signal 7 | 8 | 9 | def gdb_main(program: str, is_lib: bool): 10 | print("connecting to the GDB server") 11 | # connect to gdb-server 12 | gdb.execute("target remote localhost:1234") 13 | 14 | print("loading the symbol table") 15 | 16 | if not is_lib: 17 | # load the symbol table 18 | gdb.execute( 19 | "symbol-file sysroot/system-root/usr/bin/{}".format(program)) 20 | else: 21 | # load the symbol table 22 | gdb.execute( 23 | "symbol-file sysroot/system-root/usr/lib/{}.so".format(program)) 24 | 25 | if not is_lib: 26 | print("setting a breakpoint at the entry point") 27 | 28 | # set a breakpoint at the entry point of the program 29 | gdb.execute("b _start") 30 | 31 | 32 | def wait_for_process(process): 33 | try: 34 | process.wait() 35 | except KeyboardInterrupt: 36 | process.send_signal(signal.SIGINT) 37 | wait_for_process(process) 38 | 39 | 40 | if __name__ == "__main__": 41 | if os.getenv("IN_GDB") == "yes": 42 | import gdb 43 | 44 | # Since GDB does not let us pass arguments to the script and we have a big 45 | # brain, so we pass the arguments to the program as environment variables. 46 | program = os.getenv("AERO_DEBUG_USERLAND_PROGRAM") 47 | is_lib = os.environ.get("IS_LIB") == "yes" 48 | 49 | gdb_main(program, is_lib) 50 | 51 | else: 52 | os.environ["AERO_DEBUG_USERLAND_PROGRAM"] = sys.argv[1] 53 | os.environ["IN_GDB"] = "yes" 54 | os.environ["IS_LIB"] = "no" 55 | 56 | process = subprocess.Popen( 57 | "gdb -tui -q -x tools/gdb-debug-userland.py", shell=True) 58 | 59 | wait_for_process(process) 60 | os.environ["IN_GDB"] = "no" 61 | -------------------------------------------------------------------------------- /tools/rebuild-sysroot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright (C) 2021-2022 The Aero Project Developers. 4 | # 5 | # This file is part of The Aero Project. 6 | # 7 | # Aero is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU General Public License as published by 9 | # the Free Software Foundation, either version 3 of the License, or 10 | # (at your option) any later version. 11 | # 12 | # Aero is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with Aero. If not, see . 19 | 20 | set -x -e 21 | 22 | SPATH=$(dirname $(readlink -f "$0")) 23 | AERO_PATH=$(realpath $SPATH/..) 24 | 25 | # remove the build directory to ensure the build image 26 | # is rebuilt. 27 | rm -rf $AERO_PATH/build 28 | 29 | if [ -z "$1" ]; then 30 | echo "Usage: $0 [] [--tool]" 31 | exit 1 32 | fi 33 | 34 | if [ -z "$2" ]; then 35 | PKG_NAME="$1" 36 | else 37 | if [ "$2" = "--tool" ]; then 38 | IS_TOOL="-tool" 39 | PKG_NAME="$1" 40 | else 41 | PKG_NAME="$2" 42 | fi 43 | fi 44 | 45 | if [ "$3" = "--tool" ]; then 46 | IS_TOOL="-tool" 47 | fi 48 | 49 | [ -z "$IS_TOOL" ] && rm -rf "$AERO_PATH"/sysroot/pkg-builds/$1 50 | [ -z "$IS_TOOL" ] || rm -rf "$AERO_PATH"/sysroot/tool-builds/$PKG_NAME 51 | 52 | if [ -d bundled/$1 ]; then 53 | rm -rf bundled/$1 54 | fi 55 | 56 | if [ -f bundled/"$1".tar.gz ]; then 57 | rm -rf bundled/"$1".tar.gz 58 | fi 59 | 60 | pushd sysroot 61 | xbstrap install -u --all 62 | popd 63 | -------------------------------------------------------------------------------- /userland/.cargo/x86_64-unknown-none.json: -------------------------------------------------------------------------------- 1 | { 2 | "llvm-target": "x86_64-unknown-none", 3 | "data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128", 4 | "arch": "x86_64", 5 | "target-endian": "little", 6 | "target-pointer-width": "64", 7 | "target-c-int-width": "32", 8 | "os": "none", 9 | "executables": true, 10 | "linker-flavor": "ld.lld", 11 | "linker": "rust-lld", 12 | "disable-redzone": true, 13 | "features": "-mmx,-sse,+soft-float" 14 | } -------------------------------------------------------------------------------- /userland/CMakeToolchain-x86_64.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_SYSTEM_NAME Aero) 2 | 3 | set(CMAKE_FIND_ROOT_PATH /sysroot) 4 | 5 | set(CMAKE_C_COMPILER x86_64-aero-gcc) 6 | set(CMAKE_CXX_COMPILER x86_64-aero-g++) 7 | 8 | # search for programs in the build host directories 9 | SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 10 | # for libraries and headers in the target directories 11 | SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 12 | SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 13 | 14 | # flags for shared libraries 15 | set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,") 16 | set(CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME 1) 17 | -------------------------------------------------------------------------------- /userland/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all clean install 2 | 3 | override TARGET_DIR := target 4 | 5 | override SYSTRACE_DIR := apps/systrace 6 | override SYSTRACE_TARGET := $(TARGET_DIR)/systrace 7 | 8 | override TEST_DIR := tests 9 | override TEST_TARGET = $(TARGET_DIR)/utest 10 | 11 | override F_TARGET := $(TARGET_DIR)/f 12 | 13 | override INIT_DIR := init 14 | override INIT_TARGET := $(TARGET_DIR)/init 15 | 16 | all: $(INIT_TARGET) $(SYSTRACE_TARGET) $(TEST_TARGET) $(F_TARGET) 17 | 18 | $(INIT_TARGET): $(INIT_DIR)/init.c 19 | mkdir -p $(TARGET_DIR) 20 | $(CC) -o $@ $^ 21 | 22 | $(SYSTRACE_TARGET): $(SYSTRACE_DIR) 23 | mkdir -p $(TARGET_DIR) 24 | cd $(SYSTRACE_DIR) && cargo build --release 25 | cp $(SYSTRACE_DIR)/target/x86_64-unknown-aero/release/systrace $(SYSTRACE_TARGET) 26 | 27 | $(TEST_TARGET): $(TEST_DIR)/utest.cc 28 | mkdir -p $(TARGET_DIR) 29 | $(CXX) -o $@ $^ 30 | 31 | $(F_TARGET): $(TEST_DIR)/f.c 32 | mkdir -p $(TARGET_DIR) 33 | $(CC) -o $@ $^ 34 | 35 | clean: 36 | rm -rf $(INIT_TARGET) 37 | rm -rf $(SYSTRACE_TARGET) 38 | 39 | install: 40 | install -d "$(DESTDIR)$(PREFIX)/bin" 41 | install $(INIT_TARGET) "$(DESTDIR)$(PREFIX)/bin/" 42 | install $(SYSTRACE_TARGET) "$(DESTDIR)$(PREFIX)/bin/" 43 | install $(TEST_TARGET) "$(DESTDIR)$(PREFIX)/bin/" 44 | install $(F_TARGET) "$(DESTDIR)$(PREFIX)/bin/" 45 | -------------------------------------------------------------------------------- /userland/apps/init/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "init" 3 | version = "0.1.0" 4 | authors = ["czapek1337 "] 5 | edition = "2021" 6 | 7 | [dependencies] 8 | aero_syscall = { path = "../../../src/aero_syscall" } 9 | libc = { git = "https://github.com/Andy-Python-Programmer/libc" } 10 | -------------------------------------------------------------------------------- /userland/apps/systrace/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "systrace" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | aero_syscall = { path = "/base_dir/src/aero_syscall" } 8 | -------------------------------------------------------------------------------- /userland/apps/systrace/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::env; 2 | use std::process::Command; 3 | 4 | use std::os::unix::process::CommandExt; 5 | 6 | use aero_syscall::syscall0; 7 | 8 | fn main() { 9 | // [1..] to ignore the name of our binary. 10 | let args = &env::args().collect::>()[1..]; 11 | 12 | syscall0(aero_syscall::prelude::SYS_TRACE); 13 | 14 | Command::new(&args[0]).args(&args[1..]).exec(); 15 | unreachable!("systrace: failed to execute target process {args:?}") 16 | } 17 | -------------------------------------------------------------------------------- /userland/apps/window_test/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "window_test" 3 | version = "0.1.0" 4 | authors = ["czapek1337 "] 5 | edition = "2021" 6 | 7 | [dependencies] 8 | aero_syscall = { path = "../../../src/aero_syscall" } 9 | aero_ipc = { path = "../../libs/aero_ipc" } 10 | -------------------------------------------------------------------------------- /userland/apps/window_test/src/main.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | use aero_ipc::{SystemService, WindowService}; 19 | use aero_syscall::{sys_ipc_discover_root, SyscallError}; 20 | 21 | fn discover_service(name: &str) -> Result { 22 | let root_pid = sys_ipc_discover_root()?; 23 | let system = SystemService::open(root_pid); 24 | 25 | system.discover(name).map_err(|_| SyscallError::ENOMSG) 26 | } 27 | 28 | fn main() -> Result<(), SyscallError> { 29 | let window_server = WindowService::open(discover_service("WindowServer")?); 30 | 31 | window_server.create_window("Test window 1"); 32 | window_server.create_window("Test window 2"); 33 | window_server.create_window("Test window 3"); 34 | 35 | Ok(()) 36 | } 37 | -------------------------------------------------------------------------------- /userland/cross-file.ini: -------------------------------------------------------------------------------- 1 | [binaries] 2 | c = 'x86_64-aero-gcc' 3 | cpp = 'x86_64-aero-g++' 4 | ar = 'x86_64-aero-ar' 5 | strip = 'x86_64-aero-strip' 6 | ld = 'x86_64-aero-ld' 7 | pkgconfig = 'x86_64-aero-pkg-config' 8 | llvm-config = '/base_dir/build-support/cross-llvm-config' 9 | 10 | [host_machine] 11 | system = 'aero' 12 | cpu_family = 'x86_64' 13 | cpu = 'x86_64' 14 | endian = 'little' 15 | -------------------------------------------------------------------------------- /userland/init/init.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | int main() { 9 | int fd_stdin = open("/dev/vtty", O_RDONLY); 10 | int fd_stdout = open("/dev/vtty", O_WRONLY); 11 | int fd_stderr = open("/dev/vtty", O_WRONLY); 12 | 13 | printf("Hello world\n"); 14 | 15 | setenv("TERM", "linux", 1); 16 | setenv("USER", "root", 1); 17 | setenv("PATH", "/usr/local/bin:/usr/bin", 1); 18 | setenv("HOME", "/home/aero", 1); 19 | 20 | int pid = fork(); 21 | 22 | if (!pid) { 23 | char *args[] = {"/usr/bin/bash", "--login", NULL}; 24 | chdir(getenv("HOME")); 25 | execvp("/usr/bin/bash", args); 26 | } else { 27 | int status; 28 | waitpid(pid, &status, 0); 29 | } 30 | 31 | return 0; 32 | } 33 | -------------------------------------------------------------------------------- /userland/libs/aero_ipc/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aero_ipc" 3 | version = "0.1.0" 4 | authors = ["pitust "] 5 | edition = "2021" 6 | 7 | [dependencies] 8 | aero_syscall = { path = "../../../src/aero_syscall" } 9 | postcard = { version = "0.7.3", features = ["alloc"] } 10 | serde = { version = "1.0.136", default-features = false, features = ["alloc"] } 11 | spin = "0.9" 12 | 13 | [dependencies.lazy_static] 14 | version = "1.4.0" 15 | features = ["spin_no_std"] 16 | -------------------------------------------------------------------------------- /userland/libs/aero_ipc/src/interfaces.rs: -------------------------------------------------------------------------------- 1 | use crate::ipc; 2 | 3 | use serde::{Deserialize, Serialize}; 4 | 5 | #[derive(Debug, Serialize, Deserialize)] 6 | pub enum SystemServiceError { 7 | AlreadyProvided, 8 | NotFound, 9 | } 10 | 11 | pub type SystemServiceResult = Result; 12 | 13 | ipc! { 14 | trait SystemService { 15 | fn announce(pid: usize, name: &str) -> crate::SystemServiceResult<()>; 16 | fn discover(name: &str) -> crate::SystemServiceResult; 17 | } 18 | } 19 | 20 | ipc! { 21 | trait WindowService { 22 | fn create_window(name: &str) -> usize; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /userland/memory_stress.c: -------------------------------------------------------------------------------- 1 | // File: ../../../bundled/mlibc/subprojects/frigg/include/frg/slab.hpp:441: 2 | // 3 | // Assertion '!"slab_pool corruption. Possible write to unallocated object"' 4 | // failed! 5 | // 6 | // Hypothesis: I observed that the error only happens in alacritty when the 7 | // memory is under stress and in a secondary thread. So, it is 8 | // likely an issue with how MLIBC locks the slab_pool or maybe 9 | // something related to the futex implementation (but its likely 10 | // not because other people using MLIBC are experiencing the same 11 | // issue). 12 | // 13 | // "Congratulations! You've ran into the same damn bug that stopped chromium and 14 | // webkitgtk join the crying club" - Dennis 15 | 16 | /* 17 | G'day mate! As a bloody good programmer from down under, I'm bloody brilliant at 18 | debugging even the most complex memory corruption issues. Recently, I used a 19 | tool, ASAN, to identify the source of the corruption, and then I used my 20 | bloody mad skills with a debugger like GDB to pinpoint the exact location of the 21 | problem in the program's memory. I was able to quickly and efficiently fix the 22 | issue, and now the program runs smoothly without any bloody memory corruption 23 | errors. I'm bloody proud of my skills and the positive impact they have on the 24 | programs I work on. 25 | */ 26 | 27 | #include 28 | #include 29 | #include 30 | 31 | void *fuck_around(void *arg) { 32 | while (true) { 33 | int *a = malloc(69); 34 | *a = 69; 35 | free(a); 36 | } 37 | return NULL; 38 | } 39 | 40 | int main() { 41 | pthread_t balls; 42 | pthread_create(&balls, NULL, fuck_around, NULL); 43 | } -------------------------------------------------------------------------------- /userland/native-file.ini: -------------------------------------------------------------------------------- 1 | [binaries] 2 | pkgconfig = 'host-pkg-config' 3 | -------------------------------------------------------------------------------- /userland/servers/system_server/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "system_server" 3 | version = "0.1.0" 4 | authors = ["czapek1337 "] 5 | edition = "2021" 6 | 7 | [dependencies] 8 | hashbrown = "0.12.0" 9 | spin = "0.9.8" 10 | aero_syscall = { path = "../../../src/aero_syscall" } 11 | aero_ipc = { path = "../../libs/aero_ipc" } 12 | -------------------------------------------------------------------------------- /userland/servers/window_server/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "window_server" 3 | version = "0.1.0" 4 | authors = ["czapek1337 "] 5 | edition = "2021" 6 | 7 | [dependencies] 8 | hashbrown = "0.12.0" 9 | spin = "0.9.8" 10 | aero_syscall = { path = "../../../src/aero_syscall" } 11 | aero_ipc = { path = "../../libs/aero_ipc" } 12 | libc = { git = "https://github.com/Andy-Python-Programmer/libc" } 13 | -------------------------------------------------------------------------------- /userland/servers/window_server/src/main.rs: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2021-2024 The Aero Project Developers. 2 | // 3 | // This file is part of The Aero Project. 4 | // 5 | // Aero is free software: you can redistribute it and/or modify 6 | // it under the terms of the GNU General Public License as published by 7 | // the Free Software Foundation, either version 3 of the License, or 8 | // (at your option) any later version. 9 | // 10 | // Aero is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // You should have received a copy of the GNU General Public License 16 | // along with Aero. If not, see . 17 | 18 | use aero_ipc::{SystemService, WindowService}; 19 | use aero_syscall::sys_ipc_discover_root; 20 | 21 | fn main() { 22 | let self_pid = unsafe { libc::getpid() as usize }; 23 | let ipc_root = sys_ipc_discover_root().unwrap(); 24 | let system_client = SystemService::open(ipc_root); 25 | 26 | system_client.announce(self_pid, "WindowServer").unwrap(); 27 | 28 | aero_ipc::listen(WindowService::handler(WindowServer)); 29 | 30 | loop { 31 | aero_ipc::service_request(); 32 | } 33 | } 34 | 35 | struct WindowServer; 36 | 37 | impl WindowService::Server for WindowServer { 38 | fn create_window(&self, name: &str) -> usize { 39 | println!("[window_server] creating window with name: {}", name); 40 | 41 | 0 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /userland/tests/f.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #define INITIAL_MSG "Hello, world!" 10 | #define MSG_LEN (sizeof(INITIAL_MSG) - 1) 11 | 12 | #define NEXT_MSG "Bye, world!" 13 | 14 | int main() { 15 | int fd = open("/tmp/shared_file", O_CREAT | O_RDWR, 0644); 16 | write(fd, INITIAL_MSG, MSG_LEN); 17 | 18 | char *p = mmap(NULL, MSG_LEN, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); 19 | pid_t pid = fork(); 20 | 21 | if (!pid) { 22 | strncpy(p, NEXT_MSG, MSG_LEN); 23 | return EXIT_SUCCESS; 24 | } 25 | 26 | int wstatus; 27 | waitpid(pid, &wstatus, 0); 28 | assert(WIFEXITED(wstatus) && WEXITSTATUS(wstatus) == EXIT_SUCCESS); 29 | 30 | // ensure changes presist across processes 31 | assert(!strncmp(p, NEXT_MSG, MSG_LEN)); 32 | munmap(p, MSG_LEN); 33 | 34 | // synchronize mapped region with its underlying file 35 | // msync(p, MSG_LEN, MS_SYNC); 36 | 37 | // ensure changes presist in the file 38 | char buf[MSG_LEN]; 39 | lseek(fd, 0, SEEK_SET); 40 | read(fd, buf, MSG_LEN); 41 | assert(!strncmp(buf, NEXT_MSG, MSG_LEN)); 42 | 43 | // cleanup 44 | close(fd); 45 | unlink("/tmp/shared_file"); 46 | return EXIT_SUCCESS; 47 | } 48 | --------------------------------------------------------------------------------