diff --git a/Readme.md b/Readme.md index a6e9443..fb6175c 100644 --- a/Readme.md +++ b/Readme.md @@ -1,27 +1,121 @@ -## Advantages +# AeroLinux +> ### Минималистичный, производительный и нейроинтегрированный дистрибутив будущего -> ### Cross libc -> +0-15% performance, depending on the application -> packages use the most appropriate libc library -> ### Profile-guided optimization -> +5-20% performance, optimization for any usage scenario -> (to use in build set pgo=true in env) +
-## Flexibility -> ### Simple insulation -> At the repository level -> Packages with completely incompatible libraries are separated into different repositories: -> /pkg/\ -> -> Between the packages -> Packages are installed as "packages" in different folders: -> /pkg/\/\ -> -> The repository combines files /pkg/\/\/{bin, lib, ...} to /pkg/\/{bin, lib, ...} -> ### Storage optimization -> Final Assembly Philosophy: -> After the final system build, when no more packages need to be installed. -> Flexible removal of all unused files by reading time -## Easy to use -> Isolating packages makes it easy to find a configuration -> `pkg config \` squirrel makes it even easier +## 🌱 Введение + +Традиционно минимализм и гибкость — враги: лёгкие системы сложны в настройке, универсальные — тяжелы и запутаны. +**AeroLinux ломает этот компромисс через интеграцию с [Аурой](https://auraid.org/aura/aura) — нейроинтегрированной экосистемой для автоматизации работы и мышления.** + +Система остаётся минималистичной на уровне архитектуры — без зависимостной спагетти, с изолированными конфигами в `/pkg///etc` и лёгким ядром. Но вместо ручной настройки вы говорите промт: +> «Отключи анимацию переключения окон» → система сама находит нужные файлы и применяет изменения. + +Нейроинтеграция превращает минимализм из ограничения в преимущество: +- ✅ **Лёгкость и скорость** — как в минималистичных дистрибутивах +- ✅ **Простота настройки** — как в «умных» универсальных системах +- ❌ Нет сложных конфигов, которые нужно искать/настраивать часами +- ❌ Нет тяжёлых слоёв абстракции, замедляющих систему + +Вы получаете систему, которая **адаптируется под вас**, а не заставляет вас подстраиваться под неё — без потери производительности и прозрачности. + +
+ +## 📊 Текущее состояние + +✅ **209 базовых пакетов** собрано и протестировано +→ Сейчас активно переключаюсь на проект [Aura ID](https://auraid.org/aura/aura) для настройки автоматического парсинга и сборки проектов + +✅ **Ядро Linux**, собранное собственноручно под современные десктопы и ноутбуки +→ После установки система автоматически пересобирает ядро *под ваше конкретное оборудование*: определяет устройства через eudev → собирает модули как встроенные → уходит от eudev для максимального минимализма и производительности + +✅ **Поддержка GCC15** с современными флагами безопасности +⚠️ Автопатчинг устаревшего кода — в дорожной карте (реализация через нейроинтеграцию с Аурой) + +✅ **Профилированная сборка (PGO + BOLT)** — будет реализована сразу после автосборки пакетов через Ауру + +🚧 **Multi-Kernel** (Linux/BSD/RTOS/UEFI) — поддерживается на уровне архитектуры, реализация рассматривается — изучается практическая польза подхода + +
+ +## ⚡ Производительность + +### Кросс-оптимизация на уровне пакетов +- **Cross-libc** (glibc/musl) — выбор библиотеки под сценарий использования: **+0–8%** к производительности +- **Cross-compilers** (GCC/Clang/LLVM) — выбор компилятора *на уровне пакета* (не файла): + → Системные утилиты и низкоуровневые компоненты — лучше через **GCC** + → Браузеры (Firefox/Chromium) и современные приложения — лучше через **Clang/LLVM** + → Итог: **+0–15%** к производительности + +### Профилирование приложений (PGO + BOLT) +- **PGO** (Profile-Guided Optimization) — компиляция с учётом реальных сценариев использования: **+5–20%** +- **BOLT** (Binary Optimization and Layout Tool) — пост-линковочная оптимизация бинарника: **+3–8%** +- **Совместный эффект**: **+8–25%** к производительности приложений (в среднем **~15%**) +- **Парадигма «не собирай сам — получи готовое»**: + ``` + pkg download --pgo-gen → использование приложения → + pkg download --pgo-use → профили отправляются на сервер → получение оптимизированного бинарника + ``` + → Никаких сборочных пакетов локально — только готовый результат! + +### Профилирование ядра под сценарии +- **Игровой режим** (низкие задержки, высокая отзывчивость): **+0.5–12%** к производительности + Смена профиля ядра *на лету* через `kexec` без перезагрузки → pkg run set linux-kernel-minecraft +- **Энергоэффективный режим** (максимальная экономия): **+10–30%** к автономности +- **Режим ожидания** (idle): **+5–15%** к снижению фонового потребления + +
+ +## 🤖 Нейроинтеграция: система, которая понимает вас + +### Простой промт вместо сложных команд +> «Отключи анимацию переключения окон» → система автоматически находит и применяет нужные настройки в конфигах + +### Архитектура, заточенная под ИИ +- **Изолированные конфигурации** — каждый пакет хранит свои конфиги в `/pkg///etc`: + - `nginx`: `/pkg/gnu/nginx/etc/nginx.conf`, `/pkg/gnu/nginx/etc/conf.d/` + - `sway`: `/pkg/gnu/sway/etc/config` + - `aeropkg`: `/pkg/aero/aeropkg/etc/aeropkg.conf` +- **Документация для всех пакетов** → автоматическая конвертация в `.md` → интеграция с графом контекста Ауры +- **Точечное извлечение знаний** — Аура подхватывает *только нужные фрагменты* из документации через граф контекста, без загрузки всего репозитория + +### Как это работает на практике +``` +Ваш промт → AeroLinux (пакеты + ядро + .md документация) → Граф контекста Ауры → LLM + ↓ + Автоматическая настройка системы +``` + +
+ +## 🌐 Новые подходы и парадигмы + +### Гибкость без потери минимализма +- **Не «один размер под всех»** — система адаптируется под вас: + - Общее ядро при установке → персональная пересборка под ваше железо + - Выбор библиотек и компиляторов под задачу + - Модульная архитектура — подключайте только нужное +- **При этом сохраняются преимущества минимализма:** + - Нет «тяжёлых» окружений: база — Sway (тайловый менеджер) + Neovim. Нужно другое → задай промт. + - Минималистичный init без зависимостной спагетти + - Собственный пакетный менеджер `aeropkg` — лёгкий и прозрачный + +
+ +## 🌱 Минимализм и энергоэффективность + +- **Быстрая загрузка** — минималистичная система инициализации без лишних слоёв +- **Оптимизация потребления памяти** — только необходимые сервисы в памяти +- **Андервольтинг процессора** — снижение напряжения без потери стабильности +- **Управление частотой ядер** — динамическая подстройка под нагрузку +- **Энергосберегающие режимы** — переход в минимальное потребление при простое + +
+ +## 💡 Почему AeroLinux? + +- ✨ **Безопаснее**: современные компиляторы (GCC15) + будущий автопатчинг = меньше уязвимостей +- ⚡ **Быстрее**: кросс-оптимизация (**+0–15%**) + профилированная сборка (**+8–25%**) +- 🧠 **Умнее**: настройка через промт, а не команды — минимализм без сложности +- 🔧 **Гибче**: система собирается *под вас*, а не *для всех* +- 🌱 **Честнее**: прозрачная архитектура без скрытых зависимостей и «мусора» diff --git a/assets/etc/aeropkg.md b/assets/etc/aeropkg.md index a34f968..d5861f6 100644 --- a/assets/etc/aeropkg.md +++ b/assets/etc/aeropkg.md @@ -7,8 +7,10 @@ Aeropkg config file ``` cfg *** Repository list and priority *** gnu /pkg/gnu/aeropkg/var/gnu musl /pkg/gnu/aeropkg/var/musl +nolibc /pkg/gnu/aeropkg/var/nolibc ``` + > # Env > Block name `env *** env ***` > Global process environment @@ -27,7 +29,7 @@ SHELL=/bin/sh ``` ``` env *** env gnu *** -save_source=true +save_source=false ``` > # Hooks diff --git a/assets/etc/index-conflict.md b/assets/etc/index-conflict.md index b1e8c34..67cc1e0 100644 --- a/assets/etc/index-conflict.md +++ b/assets/etc/index-conflict.md @@ -1,17 +1 @@ -Format -= - -``` cfg *** bin *** -``` - -``` cfg *** sbin *** -``` - -``` cfg *** include *** -``` - -``` cfg *** lib *** -``` - -``` cfg *** share *** -``` +# Format diff --git a/assets/var/gnu/7z.md b/assets/var/gnu/7z.md index 65cbdd2..07e26f1 100644 --- a/assets/var/gnu/7z.md +++ b/assets/var/gnu/7z.md @@ -11,13 +11,8 @@ ln /pkg/gnu/7z/bin/7zz /pkg/gnu/7z/bin/7z ``` ``` sh *** config *** -cat > /pkg/gnu/7z/bin/unzip <<'EOF' +cat > /pkg/gnu/7z/bin/unzip </dev/null 2>&1 -[ $? -le 1 ] && exit 0 || exit 1 -EOF -chmod +x /pkg/gnu/7z/bin/unzip + +7z x "$@" ``` diff --git a/assets/var/gnu/alsa-lib.md b/assets/var/gnu/alsa-lib.md new file mode 100644 index 0000000..dd10d9b --- /dev/null +++ b/assets/var/gnu/alsa-lib.md @@ -0,0 +1,9 @@ +alsa-lib 1.2.9 += +https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.9.tar.bz2 + +``` sh *** build *** +./configure --prefix=/pkg/gnu/alsa-lib +make -j&(nproc) +make install +``` diff --git a/assets/var/gnu/autoconf.md b/assets/var/gnu/autoconf.md index cf9db41..941c0dd 100644 --- a/assets/var/gnu/autoconf.md +++ b/assets/var/gnu/autoconf.md @@ -3,9 +3,9 @@ autoconf 2.72 wget https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/autoconf && -make -j$(nproc) && make install && +./configure --prefix=/pkg/gnu/autoconf +make -j$(nproc) +make install ``` ``` cfg *** run deps *** diff --git a/assets/var/gnu/automake.md b/assets/var/gnu/automake.md index 04a9dfe..dc18bed 100644 --- a/assets/var/gnu/automake.md +++ b/assets/var/gnu/automake.md @@ -2,10 +2,14 @@ automake 1.17 = https://ftp.gnu.org/gnu/automake/automake-1.17.tar.xz +``` sh *** patch *** +sed -i 's|@datadir@|/pkg/gnu/share|g' bin/aclocal.in +``` + ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/automake && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/automake +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/bash.md b/assets/var/gnu/bash.md index a67330b..0da6683 100644 --- a/assets/var/gnu/bash.md +++ b/assets/var/gnu/bash.md @@ -3,9 +3,11 @@ bash 5.2.37 https://ftp.gnu.org/gnu/bash/bash-5.2.37.tar.gz ``` sh *** build *** -grep -q '#include ' lib/termcap/tparam.c || sed -i '/# include /a #include ' lib/termcap/tparam.c && -./configure --prefix=/pkg/gnu/bash && -make -j$(nproc) && make install && +grep -q '#include ' lib/termcap/tparam.c || sed -i '/# include /a #include ' lib/termcap/tparam.c + +./configure --prefix=/pkg/gnu/bash +make -j$(nproc) +make install ln /pkg/gnu/bash/bin/bash /pkg/gnu/bash/bin/sh ``` diff --git a/assets/var/gnu/bc.md b/assets/var/gnu/bc.md index b48c65a..f1304ff 100644 --- a/assets/var/gnu/bc.md +++ b/assets/var/gnu/bc.md @@ -3,7 +3,9 @@ bc 1.0.8.2 https://ftp.gnu.org/gnu/bc/bc-1.08.2.tar.lz ``` sh *** build *** -./configure --prefix=/pkg/gnu/bc && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/bc +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/binutils.md b/assets/var/gnu/binutils.md index f5cc5e5..c384d70 100644 --- a/assets/var/gnu/binutils.md +++ b/assets/var/gnu/binutils.md @@ -1,15 +1,14 @@ - binutils 2.44 = https://ftp.gnu.org/gnu/binutils/binutils-2.44.tar.xz ``` sh *** build *** -./configure \ - --disable-nls \ - --prefix=/pkg/gnu/binutils && -make -j$(nproc) && make install +./configure --disable-nls --prefix=/pkg/gnu/binutils +make -j$(nproc) +make install ``` ``` cfg *** build deps *** -linux +linux-headers +json-c ``` diff --git a/assets/var/gnu/bison.md b/assets/var/gnu/bison.md index 2e874ec..eef3561 100644 --- a/assets/var/gnu/bison.md +++ b/assets/var/gnu/bison.md @@ -3,7 +3,9 @@ bison 3.8.2 https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/bison && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/bison +make -j$(nproc) +make install ``` ``` cfg *** run deps *** diff --git a/assets/var/gnu/brightnessctl.md b/assets/var/gnu/brightnessctl.md new file mode 100644 index 0000000..7643932 --- /dev/null +++ b/assets/var/gnu/brightnessctl.md @@ -0,0 +1,9 @@ +brightnessctl += +https://github.com/Hummer12007/brightnessctl.git + +``` sh *** build *** +./configure --prefix=/pkg/gnu/brightnessctl +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/brotli.md b/assets/var/gnu/brotli.md new file mode 100644 index 0000000..9c8f030 --- /dev/null +++ b/assets/var/gnu/brotli.md @@ -0,0 +1,10 @@ +brotli += +https://github.com/google/brotli/archive/refs/tags/v1.2.0.tar.gz + +``` sh *** build *** +mkdir -p build && cd build +cmake .. -DCMAKE_INSTALL_PREFIX=/pkg/gnu/brotli -DCMAKE_BUILD_TYPE=Release +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/bzip2.md b/assets/var/gnu/bzip2.md index f01c7f1..fb5b223 100644 --- a/assets/var/gnu/bzip2.md +++ b/assets/var/gnu/bzip2.md @@ -3,5 +3,9 @@ bzip2 https://gitlab.com/federicomenaquintero/bzip2/-/archive/master/bzip2-master.tar.gz ``` sh *** build *** -meson setup .. --prefix=/pkg/gnu/bzip2 && ninja && ninja install +mkdir -p build +cd build +meson setup .. --prefix=/pkg/gnu/bzip2 +ninja +ninja install ``` diff --git a/assets/var/gnu/cairo.md b/assets/var/gnu/cairo.md new file mode 100644 index 0000000..87c0305 --- /dev/null +++ b/assets/var/gnu/cairo.md @@ -0,0 +1,11 @@ +cairo 1.18.4 += +https://gitlab.freedesktop.org/cairo/cairo/-/archive/1.18.4/cairo-1.18.4.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/cairo --buildtype=release .. +ninja +ninja install +``` diff --git a/assets/var/gnu/cmake.md b/assets/var/gnu/cmake.md index b209a42..9c47f8f 100644 --- a/assets/var/gnu/cmake.md +++ b/assets/var/gnu/cmake.md @@ -3,7 +3,9 @@ cmake 4.0.2 https://github.com/Kitware/CMake/releases/download/v4.0.2/cmake-4.0.2.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/cmake && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/cmake +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/coreutils.md b/assets/var/gnu/coreutils.md index 8705e4c..c5ae331 100644 --- a/assets/var/gnu/coreutils.md +++ b/assets/var/gnu/coreutils.md @@ -6,6 +6,7 @@ https://ftp.gnu.org/gnu/coreutils/coreutils-9.6.tar.xz FORCE_UNSAFE_CONFIGURE=1 \ ./configure \ --enable-install-program=hostname \ - --prefix=/pkg/gnu/coreutils && -make -j$(nproc) && make install + --prefix=/pkg/gnu/coreutils +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/cups.md b/assets/var/gnu/cups.md new file mode 100644 index 0000000..e9c73d4 --- /dev/null +++ b/assets/var/gnu/cups.md @@ -0,0 +1,9 @@ +cups 2.3.6 += +https://github.com/apple/cups/archive/refs/tags/v2.3.6.tar.gz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/cups +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/curl.md b/assets/var/gnu/curl.md index 8162cc9..c6068d5 100644 --- a/assets/var/gnu/curl.md +++ b/assets/var/gnu/curl.md @@ -7,8 +7,9 @@ https://github.com/curl/curl/releases/download/curl-8_14_1/curl-8.14.1.tar.gz --prefix=/pkg/gnu/curl \ --disable-docs \ --with-openssl \ - --with-ca-path=/pkg/gnu/openssl/ssl/certs/ && -make -j$(nproc) && make install + --with-ca-path=/pkg/gnu/openssl/ssl/certs/ +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/dash.md b/assets/var/gnu/dash.md index 940b3dc..c56f1e0 100644 --- a/assets/var/gnu/dash.md +++ b/assets/var/gnu/dash.md @@ -6,7 +6,8 @@ http://deb.debian.org/debian/pool/main/d/dash/dash_0.5.12.orig.tar.gz ./configure \ --disable-static \ --enable-shared \ - --prefix=/pkg/gnu/dash && -make -j$(nproc) && make install && + --prefix=/pkg/gnu/dash +make -j$(nproc) +make install ln /pkg/gnu/dash/bin/dash /pkg/gnu/dash/bin/sh ``` diff --git a/assets/var/gnu/dbus.md b/assets/var/gnu/dbus.md index 3d6e1dc..2328b3d 100644 --- a/assets/var/gnu/dbus.md +++ b/assets/var/gnu/dbus.md @@ -3,8 +3,11 @@ dbus 1.16.2 https://gitlab.freedesktop.org/dbus/dbus/-/archive/dbus-1.16.2/dbus-dbus-1.16.2.tar.gz ``` sh *** build *** -mkdir build; cd build && -cmake -DCMAKE_INSTALL_PREFIX=/pkg/gnu/dbus .. && make -j$(nproc) && make install +mkdir -p build +cd build +cmake -DCMAKE_INSTALL_PREFIX=/pkg/gnu/dbus -DCMAKE_INSTALL_LIBDIR=lib .. +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/dhcp.md b/assets/var/gnu/dhcp.md index 8d9d00c..9a1933d 100644 --- a/assets/var/gnu/dhcp.md +++ b/assets/var/gnu/dhcp.md @@ -3,5 +3,7 @@ dhcp 4.4.3 https://ftp.isc.org/isc/dhcp/4.4.3-P1/dhcp-4.4.3-P1.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/dhcp && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/dhcp +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/diffutils.md b/assets/var/gnu/diffutils.md index 7ade1b0..b0c0336 100644 --- a/assets/var/gnu/diffutils.md +++ b/assets/var/gnu/diffutils.md @@ -3,5 +3,7 @@ diffutils 3.12 https://ftp.gnu.org/gnu/diffutils/diffutils-3.12.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/diffutils && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/diffutils +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/docbook-xslt.md b/assets/var/gnu/docbook-xslt.md new file mode 100644 index 0000000..899e9db --- /dev/null +++ b/assets/var/gnu/docbook-xslt.md @@ -0,0 +1,25 @@ +docbook-xslt 2.7.6 += +https://codeberg.org/DocBook/xslTNG/releases/download/2.7.6/docbook-xslTNG-2.7.6.zip + +``` sh *** patch *** +mv docbook-xslTNG-2.7.6/* . +rm -r docbook-xslTNG-2.7.6 +``` + +``` sh *** build *** +mkdir -p /pkg/gnu/docbook-xslt +cp -rPl * /pkg/gnu/docbook-xslt + +mkdir -p /pkg/gnu/docbook-xslt/etc/xml +cat > /pkg/gnu/docbook-xslt/etc/xml/catalog <<'EOF' + + + + + + +EOF +``` diff --git a/assets/var/gnu/docbook-xslt1-nons.md b/assets/var/gnu/docbook-xslt1-nons.md new file mode 100644 index 0000000..ab9da9a --- /dev/null +++ b/assets/var/gnu/docbook-xslt1-nons.md @@ -0,0 +1,25 @@ +docbook-xslt1-nons += +https://github.com/docbook/xslt10-stylesheets/releases/download/snapshot%2F2020-06-03/docbook-xsl-nons-snapshot.zip + +``` sh *** patch *** +mv docbook-xsl-nons-snapshot/* . +rm -r docbook-xsl-nons-snapshot +``` + +``` sh *** build *** +mkdir -p /pkg/gnu/docbook-xslt1-nons +cp -rPl * /pkg/gnu/docbook-xslt1-nons + +mkdir -p /pkg/gnu/docbook-xslt1-nons/etc/xml +cat > /pkg/gnu/docbook-xslt1-nons/etc/xml/catalog <<'EOF' + + + + + + +EOF +``` diff --git a/assets/var/gnu/docbook-xslt1.md b/assets/var/gnu/docbook-xslt1.md new file mode 100644 index 0000000..0bb9dbe --- /dev/null +++ b/assets/var/gnu/docbook-xslt1.md @@ -0,0 +1,24 @@ +docbook-xslt1 += +https://github.com/docbook/xslt10-stylesheets/releases/download/snapshot%2F2020-06-03/docbook-xsl-snapshot.zip + +``` sh *** patch *** +mv docbook-xsl-snapshot/* . +rm -r docbook-xsl-snapshot +``` + +``` sh *** build *** +mkdir -p /pkg/gnu/docbook-xslt1 +cp -rPl * /pkg/gnu/docbook-xslt1 +mkdir -p /pkg/gnu/docbook-xslt1/etc/xml +cat > /pkg/gnu/docbook-xslt1/etc/xml/catalog <<'EOF' + + + + + + +EOF +``` diff --git a/assets/var/gnu/docbook4-xml.md b/assets/var/gnu/docbook4-xml.md new file mode 100644 index 0000000..a00e73d --- /dev/null +++ b/assets/var/gnu/docbook4-xml.md @@ -0,0 +1,8 @@ +docbook4-xml 4.5 += +https://www.oasis-open.org/docbook/xml/4.5/docbook-xml-4.5.zip + +``` sh *** build *** +mkdir -p /pkg/gnu/docbook4-xml/share/xml/docbook/dtd/4.5 +cp -rPl * /pkg/gnu/docbook4-xml/share/xml/docbook/dtd/4.5 +``` diff --git a/assets/var/gnu/docbook5-xml.md b/assets/var/gnu/docbook5-xml.md new file mode 100644 index 0000000..5e40d1b --- /dev/null +++ b/assets/var/gnu/docbook5-xml.md @@ -0,0 +1,8 @@ +docbook5-xml 5.2 += +https://docs.oasis-open.org/docbook/docbook/v5.2/os/docbook-v5.2-os.zip + +``` sh *** build *** +mkdir -p /pkg/gnu/docbook5-xml/share/xml/docbook/schema/5.2 +cp -rPl * /pkg/gnu/docbook5-xml/share/xml/docbook/schema/5.2 +``` diff --git a/assets/var/gnu/doxygen.md b/assets/var/gnu/doxygen.md new file mode 100644 index 0000000..98dce4a --- /dev/null +++ b/assets/var/gnu/doxygen.md @@ -0,0 +1,9 @@ +doxygen 1.16.1 += +https://github.com/doxygen/doxygen/releases/download/Release_1_16_1/doxygen-1.16.1.src.tar.gz + +``` sh *** build *** +cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/pkg/gnu/doxygen -Dbuild_wizard=OFF . +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/duktape.md b/assets/var/gnu/duktape.md new file mode 100644 index 0000000..05c4d0b --- /dev/null +++ b/assets/var/gnu/duktape.md @@ -0,0 +1,8 @@ +duktape 2.7.0 += +https://github.com/svaarala/duktape/releases/download/v2.7.0/duktape-2.7.0.tar.xz + +``` sh *** build *** +make -f Makefile.sharedlibrary +make -f Makefile.sharedlibrary install INSTALL_PREFIX=/pkg/gnu/duktape +``` diff --git a/assets/var/gnu/ed.md b/assets/var/gnu/ed.md index a061679..e6640bd 100644 --- a/assets/var/gnu/ed.md +++ b/assets/var/gnu/ed.md @@ -3,5 +3,7 @@ ed 1.21.1 https://ftp.gnu.org/gnu/ed/ed-1.21.1.tar.lz ``` sh *** build *** -./configure --prefix=/pkg/gnu/ed && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/ed +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/elfutils.md b/assets/var/gnu/elfutils.md index b0ef02c..d058cb8 100644 --- a/assets/var/gnu/elfutils.md +++ b/assets/var/gnu/elfutils.md @@ -3,5 +3,7 @@ elfutils 0.193 https://sourceware.org/elfutils/ftp/0.193/elfutils-0.193.tar.bz2 ``` sh *** build *** -./configure --prefix=/pkg/gnu/elfutils --enable-libdebuginfod --enable-debuginfod && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/elfutils --enable-libdebuginfod --enable-debuginfod +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/ell.md b/assets/var/gnu/ell.md index d2b0c96..c7da73c 100644 --- a/assets/var/gnu/ell.md +++ b/assets/var/gnu/ell.md @@ -3,8 +3,10 @@ ell git://git.kernel.org/pub/scm/libs/ell/ell.git ``` sh *** build *** -libtoolize && ./bootstrap && -./configure --prefix=/pkg/gnu/ell && -make -j$(nproc) && make install +libtoolize +./bootstrap +./configure --prefix=/pkg/gnu/ell +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/eudev.md b/assets/var/gnu/eudev.md new file mode 100644 index 0000000..e1589dd --- /dev/null +++ b/assets/var/gnu/eudev.md @@ -0,0 +1,21 @@ +eudev 3.2.14 += +https://github.com/eudev-project/eudev/releases/download/v3.2.14/eudev-3.2.14.tar.gz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/eudev +make -j$(nproc) +make install +``` + +``` sh *** config *** +sed -i '/KERNEL=="sgx_enclave"/d; /KERNEL=="sgx_vepc"/d' /pkg/gnu/eudev/lib/udev/rules.d/50-udev-default.rules +cat < /pkg/gnu/eudev/etc/udev/rules.d/80-drivers.rules +ACTION=="add", KERNEL=="*", ENV{MODALIAS}=="?*", RUN+="/pkg/gnu/sbin/modprobe $env{MODALIAS}" +EOF +udevadm hwdb --update +``` + +``` cfg *** run deps *** +gperf +``` diff --git a/assets/var/gnu/execline.md b/assets/var/gnu/execline.md index a436559..c22fc38 100644 --- a/assets/var/gnu/execline.md +++ b/assets/var/gnu/execline.md @@ -2,8 +2,10 @@ execline 2.9.7 = https://skarnet.org/software/execline/execline-2.9.7.0.tar.gz -``` sh *** bulid *** -./configure --prefix=/pkg/gnu/execline --with-sysdeps=/pkg/gnu/skalibs/lib/skalibs/sysdeps && make -j$(nproc) && make install +``` sh *** build *** +./configure --prefix=/pkg/gnu/execline --with-sysdeps=/pkg/gnu/skalibs/lib/skalibs/sysdeps +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/expat.md b/assets/var/gnu/expat.md index 36d99bd..541aa71 100644 --- a/assets/var/gnu/expat.md +++ b/assets/var/gnu/expat.md @@ -3,5 +3,7 @@ expat 2.7.1 https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/expat && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/expat +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/fdk-aac.md b/assets/var/gnu/fdk-aac.md new file mode 100644 index 0000000..ebe78e6 --- /dev/null +++ b/assets/var/gnu/fdk-aac.md @@ -0,0 +1,10 @@ +fdk-aac 2.0.3 += +https://github.com/mstorsjo/fdk-aac/archive/refs/tags/v2.0.3.tar.gz + +``` sh *** build *** +./autogen.sh +./configure --prefix=/pkg/gnu/fdk-aac +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/file.md b/assets/var/gnu/file.md index 8234055..56948c3 100644 --- a/assets/var/gnu/file.md +++ b/assets/var/gnu/file.md @@ -3,5 +3,7 @@ file 5.46 http://ftp.astron.com/pub/file/file-5.46.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/file && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/file +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/findutils.md b/assets/var/gnu/findutils.md index b2b0ec4..bb7802a 100644 --- a/assets/var/gnu/findutils.md +++ b/assets/var/gnu/findutils.md @@ -3,7 +3,7 @@ findutils 4.10.0 https://ftp.gnu.org/gnu/findutils/findutils-4.10.0.tar.xz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/findutils && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/findutils +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/flac.md b/assets/var/gnu/flac.md new file mode 100644 index 0000000..d598ab1 --- /dev/null +++ b/assets/var/gnu/flac.md @@ -0,0 +1,9 @@ +flac += +https://ftp.osuosl.org/pub/xiph/releases/flac/flac-1.5.0.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/flac +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/flex.md b/assets/var/gnu/flex.md index 4b0d77b..b61f52f 100644 --- a/assets/var/gnu/flex.md +++ b/assets/var/gnu/flex.md @@ -3,10 +3,10 @@ flex 2.6.4 https://github.com/westes/flex/archive/refs/tags/v2.6.4.tar.gz ``` sh *** build *** -./autogen.sh && -./configure \ - --prefix=/pkg/gnu/flex && -make -j$(nproc) && make install +./autogen.sh +./configure --prefix=/pkg/gnu/flex +make -j$(nproc) +make install ``` ``` cfg *** run deps *** diff --git a/assets/var/gnu/fzf.md b/assets/var/gnu/fzf.md index 4149f61..44ce07f 100644 --- a/assets/var/gnu/fzf.md +++ b/assets/var/gnu/fzf.md @@ -5,3 +5,7 @@ https://github.com/junegunn/fzf/archive/refs/tags/v0.65.2.tar.gz ``` sh *** build *** make install PREFIX=/pkg/gnu/fzf FZF_VERSION=0.65.2 FZF_REVISION=tarball ``` + +``` sh *** build deps *** +go +``` diff --git a/assets/var/gnu/gawk.md b/assets/var/gnu/gawk.md index e9cbaac..4f7df10 100644 --- a/assets/var/gnu/gawk.md +++ b/assets/var/gnu/gawk.md @@ -3,7 +3,7 @@ gawk 5.3.2 https://ftp.gnu.org/gnu/gawk/gawk-5.3.2.tar.xz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/gawk && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/gawk +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/gcc.md b/assets/var/gnu/gcc.md index bb8e87f..3a36aa5 100644 --- a/assets/var/gnu/gcc.md +++ b/assets/var/gnu/gcc.md @@ -1,6 +1,6 @@ -gcc 15.1.0 +gcc 15.2.0 = -https://ftp.gnu.org/gnu/gcc/gcc-15.1.0/gcc-15.1.0.tar.xz +https://ftp.gnu.org/gnu/gcc/gcc-15.2.0/gcc-15.2.0.tar.xz ``` sh *** patch *** @@ -8,13 +8,15 @@ rg -l "/lib64/ld-linux-x86-64.so.2" ./ | xargs sed -i 's|/lib64/ld-linux-x86-64. ``` ``` sh *** build *** -mkdir build; cd build && +mkdir -p build +cd build ../configure \ --prefix=/pkg/gnu/gcc \ --disable-multilib \ --enable-languages=c,c++ \ --disable-werror && -make -j$(nproc) && make install && +make -j$(nproc) +make install ln /pkg/gnu/gcc/bin/gcc /pkg/gnu/gcc/bin/cc ``` diff --git a/assets/var/gnu/gcc14.md b/assets/var/gnu/gcc14.md index ab953a0..82b0b90 100644 --- a/assets/var/gnu/gcc14.md +++ b/assets/var/gnu/gcc14.md @@ -8,13 +8,15 @@ rg -l "/lib64/ld-linux-x86-64.so.2" ./ | xargs sed -i 's|/lib64/ld-linux-x86-64. ``` ``` sh *** build *** -mkdir build; cd build && +mkdir -p build +cd build ../configure \ --prefix=/pkg/gnu/gcc14 \ --disable-multilib \ --enable-languages=c,c++ \ - --disable-werror && -make -j$(nproc) && make install && + --disable-werror +make -j$(nproc) +make install ln /pkg/gnu/gcc14/bin/gcc /pkg/gnu/gcc14/bin/cc ``` diff --git a/assets/var/gnu/gdk-pixbuf.md b/assets/var/gnu/gdk-pixbuf.md new file mode 100644 index 0000000..1c1f1f7 --- /dev/null +++ b/assets/var/gnu/gdk-pixbuf.md @@ -0,0 +1,16 @@ +gdk-pixbuf 2.44.4 += +https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/archive/2.44.4/gdk-pixbuf-2.44.4.tar.gz + +``` sh *** build *** +pip3 install docutils +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/gdk-pixbuf --buildtype=release -Dgio_sniffing=false -Dglycin=disabled .. +ninja +ninja install +``` + +``` cfg *** build deps *** +libjpeg-turbo +``` diff --git a/assets/var/gnu/gettext.md b/assets/var/gnu/gettext.md index 07bb26f..351362d 100644 --- a/assets/var/gnu/gettext.md +++ b/assets/var/gnu/gettext.md @@ -3,5 +3,7 @@ gettext 0.25 https://ftp.gnu.org/gnu/gettext/gettext-0.25.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/gettext && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/gettext +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/git.md b/assets/var/gnu/git.md index 186d3e7..4339eec 100644 --- a/assets/var/gnu/git.md +++ b/assets/var/gnu/git.md @@ -3,11 +3,10 @@ git 2.49 https://github.com/git/git/archive/refs/tags/v2.49.0.tar.gz ``` sh *** build *** -make configure && -./configure \ - --prefix=/pkg/gnu/git \ - --without-tcltk && -make -j$(nproc) && make install +make configure +./configure --prefix=/pkg/gnu/git --without-tcltk +make -j$(nproc) +make install ``` ``` sh *** config *** diff --git a/assets/var/gnu/glib-networking.md b/assets/var/gnu/glib-networking.md new file mode 100644 index 0000000..fff3dc7 --- /dev/null +++ b/assets/var/gnu/glib-networking.md @@ -0,0 +1,16 @@ +glib-networking += +https://gitlab.gnome.org/GNOME/glib-networking.git + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/glib-networking --buildtype=release .. +ninja +ninja install +``` + +``` cfg *** build deps *** +libproxy +gnutls +``` diff --git a/assets/var/gnu/glib.md b/assets/var/gnu/glib.md index f3a2588..ea31d12 100644 --- a/assets/var/gnu/glib.md +++ b/assets/var/gnu/glib.md @@ -1,11 +1,13 @@ -glib 2.85 +glib 2.88 = -https://download.gnome.org/sources/glib/2.85/glib-2.85.0.tar.xz +https://download.gnome.org/sources/glib/2.88/glib-2.88.0.tar.xz ``` sh *** build *** -mkdir build; cd build && -meson setup --prefix=/pkg/gnu/glib .. && -ninja -C . && ninja install +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/glib .. +ninja -C . +ninja install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/glibc.md b/assets/var/gnu/glibc.md index bf1d90c..242303d 100644 --- a/assets/var/gnu/glibc.md +++ b/assets/var/gnu/glibc.md @@ -3,26 +3,28 @@ glibc 2.41 https://ftp.gnu.org/gnu/libc/glibc-2.41.tar.xz ``` sh *** build *** -mkdir build; cd build && +mkdir -p build +cd build ../configure \ --with-headers=/pkg/gnu/linux/include \ --disable-multilib \ --enable-install-ldconfig \ - --prefix=/pkg/gnu/glibc && -make -j$(nproc) && make install && -mkdir -p /pkg/gnu/glibc/{share/i18n/charmaps,lib/locale,etc/ld.so.conf.d} && -cp localedata/charmaps/* /pkg/gnu/glibc/share/i18n/charmaps/ && + --prefix=/pkg/gnu/glibc +make -j$(nproc) +make install +mkdir -p /pkg/gnu/glibc/{share/i18n/charmaps,lib/locale,etc/ld.so.conf.d} +cp localedata/charmaps/* /pkg/gnu/glibc/share/i18n/charmaps/ ``` ``` sh *** config *** -echo "include /pkg/gnu/glibc/etc/ld.so.conf.d/*.conf" > /pkg/gnu/glibc/etc/ld.so.conf && -echo "/pkg/gnu/lib" > /pkg/gnu/glibc/etc/ld.so.conf.d/lib.conf && -/pkg/gnu/glibc/bin/localedef -i en_US -f UTF-8 en_US.UTF-8 && +echo "include /pkg/gnu/glibc/etc/ld.so.conf.d/*.conf" > /pkg/gnu/glibc/etc/ld.so.conf +echo "/pkg/gnu/lib" > /pkg/gnu/glibc/etc/ld.so.conf.d/lib.conf +/pkg/gnu/glibc/bin/localedef -i en_US -f UTF-8 en_US.UTF-8 sed -i 's|/pkg/gnu/glibc/lib64/ld-linux-x86-64.so.2|/pkg/gnu/glibc/lib/ld-linux-x86-64.so.2|g' /pkg/gnu/glibc/bin/ldd ``` ``` cfg *** build deps *** -linux +linux-headers ``` ``` cfg *** run deps *** diff --git a/assets/var/gnu/glycin.md b/assets/var/gnu/glycin.md new file mode 100644 index 0000000..9d5d726 --- /dev/null +++ b/assets/var/gnu/glycin.md @@ -0,0 +1,18 @@ +glycin 2.1 += +https://gitlab.gnome.org/GNOME/glycin/-/archive/2.1.rc/glycin-2.1.rc.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/glycin .. +ninja +ninja install +``` + +``` cfg *** build deps *** +libseccomp +libheif +libjxl +librsvg +``` diff --git a/assets/var/gnu/gmp.md b/assets/var/gnu/gmp.md index a50b64c..6b0dcb4 100644 --- a/assets/var/gnu/gmp.md +++ b/assets/var/gnu/gmp.md @@ -3,15 +3,14 @@ gmp 6.3.0 https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz ``` sh *** build *** -./configure \ - --enable-cxx \ - --prefix=/pkg/gnu/gmp && -make -j$(nproc) && make install +./configure --enable-cxx --prefix=/pkg/gnu/gmp +make -j$(nproc) +make install ``` ``` cfg *** build deps *** -linux glibc +linux-headers ``` ``` cfg *** run deps *** diff --git a/assets/var/gnu/gnutls.md b/assets/var/gnu/gnutls.md new file mode 100644 index 0000000..0f5bd5a --- /dev/null +++ b/assets/var/gnu/gnutls.md @@ -0,0 +1,17 @@ +gnutls 3.8.12 += +https://www.gnupg.org/ftp/gcrypt/gnutls/v3.8/gnutls-3.8.12.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/gnutls +make -j$(nproc) +make install +``` + +``` cfg *** build deps *** +nettle +gmp +libunistring +libtasn1 +p11-kit +``` diff --git a/assets/var/gnu/go-1.4.md b/assets/var/gnu/go-1.4.md index 6393009..dba1d8f 100644 --- a/assets/var/gnu/go-1.4.md +++ b/assets/var/gnu/go-1.4.md @@ -1,4 +1,4 @@ -go 1.4.3 +go-1.4 1.4.3 = https://go.dev/dl/go1.4.3.src.tar.gz diff --git a/assets/var/gnu/go.md b/assets/var/gnu/go.md index a73cabc..2d246f9 100644 --- a/assets/var/gnu/go.md +++ b/assets/var/gnu/go.md @@ -6,11 +6,12 @@ https://go.dev/dl/go1.25.1.linux-amd64.tar.gz export GOROOT_BOOTSTRAP=/pkg/src/go/.go-bootstrap export PKG_HOME=/pkg/gnu/go export GOROOT_FINAL=/pkg/gnu/go +rm -rf "$GOROOT_BOOTSTRAP" mkdir -p $GOROOT_BOOTSTRAP -cp -rPl ./* $GOROOT_BOOTSTRAP +rsync -a --exclude='.git/' ./ "$GOROOT_BOOTSTRAP/" cd src ./make.bash cd .. mkdir -p $PKG_HOME -cp -rPl ./* $PKG_HOME +rsync -a --exclude='.git/' --exclude='aeropkg.*' --exclude='.go-bootstrap' ./ "$PKG_HOME/" ``` diff --git a/assets/var/gnu/gobject-introspection.md b/assets/var/gnu/gobject-introspection.md new file mode 100644 index 0000000..03f4f09 --- /dev/null +++ b/assets/var/gnu/gobject-introspection.md @@ -0,0 +1,11 @@ +gobject-introspection 1.86.0 += +https://gitlab.gnome.org/GNOME/gobject-introspection/-/archive/1.86.0/gobject-introspection-1.86.0.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/gobject-introspection --buildtype=release -Dtests=false .. +ninja +ninja install +``` diff --git a/assets/var/gnu/gperf.md b/assets/var/gnu/gperf.md new file mode 100644 index 0000000..885fd99 --- /dev/null +++ b/assets/var/gnu/gperf.md @@ -0,0 +1,9 @@ +gperf 3.3 += +https://ftp.gnu.org/gnu/gperf/gperf-3.3.tar.gz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/gperf +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/graphviz.md b/assets/var/gnu/graphviz.md new file mode 100644 index 0000000..b211d84 --- /dev/null +++ b/assets/var/gnu/graphviz.md @@ -0,0 +1,13 @@ +graphviz 14.1.2 += +https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/14.1.2/graphviz-14.1.2.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/graphviz +make -j$(nproc) +make install +``` + +``` cfg *** build deps *** +perl +``` diff --git a/assets/var/gnu/grep.md b/assets/var/gnu/grep.md index 9f3776a..a0dc7a7 100644 --- a/assets/var/gnu/grep.md +++ b/assets/var/gnu/grep.md @@ -3,9 +3,9 @@ grep 3.11 https://mirror.truenetwork.ru/gnu/grep/grep-3.11.tar.xz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/grep && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/grep +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/gsettings-desktop-schemas.md b/assets/var/gnu/gsettings-desktop-schemas.md new file mode 100644 index 0000000..aede1be --- /dev/null +++ b/assets/var/gnu/gsettings-desktop-schemas.md @@ -0,0 +1,15 @@ +gsettings-desktop-schemas 50.0 += +https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas/-/archive/50.0/gsettings-desktop-schemas-50.0.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/gsettings-desktop-schemas --buildtype=release .. +ninja +ninja install +``` + +``` cfg *** build deps *** +gobject-introspection +``` diff --git a/assets/var/gnu/gstreamer.md b/assets/var/gnu/gstreamer.md new file mode 100644 index 0000000..aa1b1ed --- /dev/null +++ b/assets/var/gnu/gstreamer.md @@ -0,0 +1,33 @@ +gstreamer += +https://gitlab.freedesktop.org/gstreamer/gstreamer.git + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/gstreamer .. +ninja +ninja install +``` + +``` cfg *** build deps *** +gst-python +orc +libnice +ogg +opus +flac +lame +fdk-aac +libsrtp +webrtc-audio-processing +json-glib +pygobject +pycairo +gobject-introspection + +libvpx +openh264 +vmaf +libsoup +``` diff --git a/assets/var/gnu/gtest.md b/assets/var/gnu/gtest.md new file mode 100644 index 0000000..f00e559 --- /dev/null +++ b/assets/var/gnu/gtest.md @@ -0,0 +1,17 @@ +gtest 1.17.0 += +https://github.com/google/googletest/archive/refs/tags/v1.17.0.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +cmake .. \ + -DCMAKE_INSTALL_PREFIX=/pkg/gnu/gtest \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DBUILD_SHARED_LIBS=ON \ + -Dgtest_build_tests=OFF \ + -Dgtest_build_samples=OFF +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/gtk.md b/assets/var/gnu/gtk.md new file mode 100644 index 0000000..6bcee2e --- /dev/null +++ b/assets/var/gnu/gtk.md @@ -0,0 +1,17 @@ +gtk 4.22.0 += +https://gitlab.gnome.org/GNOME/gtk/-/archive/4.22.0/gtk-4.22.0.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/gtk .. +ninja +ninja install +``` + +``` cfg *** build deps *** +shared-mime-info +gdk-pixbuf +gstreamer +``` diff --git a/assets/var/gnu/gzip.md b/assets/var/gnu/gzip.md index 67e0f47..eb19f32 100644 --- a/assets/var/gnu/gzip.md +++ b/assets/var/gnu/gzip.md @@ -3,5 +3,7 @@ gzip 1.13 https://mirror.truenetwork.ru/gnu/gzip/gzip-1.13.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/gzip && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/gzip +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/highway.md b/assets/var/gnu/highway.md new file mode 100644 index 0000000..5743134 --- /dev/null +++ b/assets/var/gnu/highway.md @@ -0,0 +1,16 @@ +highway 1.3.0 += +https://github.com/google/highway/archive/refs/tags/1.3.0.tar.gz + +``` sh *** build *** +mkdir -p build && cd build +cmake .. \ + -DCMAKE_INSTALL_PREFIX=/pkg/gnu/highway \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_TESTING=OFF \ + -DBUILD_SHARED_LIBS=ON +make -j$(nproc) +make install +``` + diff --git a/assets/var/gnu/inetutils.md b/assets/var/gnu/inetutils.md index 06b002b..7e26875 100644 --- a/assets/var/gnu/inetutils.md +++ b/assets/var/gnu/inetutils.md @@ -3,5 +3,7 @@ inetutils 2.6 https://ftp.gnu.org/gnu/inetutils/inetutils-2.6.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/inetutils --with-libcap && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/inetutils --with-libcap +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/iproute2.md b/assets/var/gnu/iproute2.md index 6fdc4fc..45035a6 100644 --- a/assets/var/gnu/iproute2.md +++ b/assets/var/gnu/iproute2.md @@ -12,7 +12,10 @@ sed -i \ ``` ``` sh *** build *** -./configure --prefix=/pkg/gnu/iproute2 && make -j$(nproc) && make install && mkdir -p /pkg/gnu/iproute2/etc/netns +./configure --prefix=/pkg/gnu/iproute2 +make -j$(nproc) +make install +mkdir -p /pkg/gnu/iproute2/etc/netns ``` ``` cfg *** run deps *** diff --git a/assets/var/gnu/isl.md b/assets/var/gnu/isl.md index 82c9cad..2be801a 100644 --- a/assets/var/gnu/isl.md +++ b/assets/var/gnu/isl.md @@ -3,7 +3,7 @@ isl 0.27 https://libisl.sourceforge.io/isl-0.27.tar.xz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/isl && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/isl +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/itstool.md b/assets/var/gnu/itstool.md new file mode 100644 index 0000000..f95b156 --- /dev/null +++ b/assets/var/gnu/itstool.md @@ -0,0 +1,3 @@ +itstool += +https://github.com/itstool/itstool/archive/refs/tags/2.0.7.tar.gz diff --git a/assets/var/gnu/iwd.md b/assets/var/gnu/iwd.md index 165a3f2..4d80b27 100644 --- a/assets/var/gnu/iwd.md +++ b/assets/var/gnu/iwd.md @@ -3,12 +3,11 @@ iwd git://git.kernel.org/pub/scm/network/wireless/iwd.git ``` sh *** build *** -libtoolize && ./bootstrap && -./configure \ - --disable-systemd-service \ - --disable-manual-pages \ - --prefix=/pkg/gnu/iwd && -make -j$(nproc) && make install +libtoolize +./bootstrap +./configure --disable-systemd-service --disable-manual-pages --prefix=/pkg/gnu/iwd +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/jq.md b/assets/var/gnu/jq.md new file mode 100644 index 0000000..0564821 --- /dev/null +++ b/assets/var/gnu/jq.md @@ -0,0 +1,11 @@ +jq 1.8.1 += +https://github.com/jqlang/jq.git + +``` sh *** build *** +git submodule update --init +autoreconf -i +./configure --prefix=/pkg/gnu/jq +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/json-c.md b/assets/var/gnu/json-c.md index 817e9cb..c27ab44 100644 --- a/assets/var/gnu/json-c.md +++ b/assets/var/gnu/json-c.md @@ -3,8 +3,11 @@ json-c 0.18 https://github.com/json-c/json-c/archive/refs/tags/json-c-0.18-20240915.tar.gz ``` sh *** build *** -mkdir build; cd build && -../cmake-configure -DCMAKE_POLICY_VERSION_MINIMUM=3.5 .. && -cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/pkg/gnu/json-c .. && make -j$(nproc) && make install +mkdir -p build +cd build +../cmake-configure -DCMAKE_POLICY_VERSION_MINIMUM=3.5 .. +cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_INSTALL_PREFIX=/pkg/gnu/json-c .. +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/json-glib.md b/assets/var/gnu/json-glib.md new file mode 100644 index 0000000..fcdac9f --- /dev/null +++ b/assets/var/gnu/json-glib.md @@ -0,0 +1,11 @@ +json-glib 1.10.8 += +https://gitlab.gnome.org/GNOME/json-glib/-/archive/1.10.8/json-glib-1.10.8.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/json-glib .. +ninja +ninja install +``` diff --git a/assets/var/gnu/kmod.md b/assets/var/gnu/kmod.md index b885fc8..67f8e22 100644 --- a/assets/var/gnu/kmod.md +++ b/assets/var/gnu/kmod.md @@ -3,12 +3,15 @@ kmod 34.2 https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git/snapshot/kmod-34.2.tar.gz ``` sh *** patch *** -libtoolize && +libtoolize printf '\nnoarch_pkgconfigdir = /pkg/gnu/lib/pkgconfig\npkgconfigdir = /pkg/gnu/lib/pkgconfig\n' >> Makefile.am ``` ``` sh *** build *** -./autogen.sh && ./configure --prefix=/pkg/gnu/kmod --disable-manpages && make -j$(nproc) && make install +./autogen.sh +./configure --prefix=/pkg/gnu/kmod --disable-manpages +make -j$(nproc) +make install ``` ``` cfg *** run deps *** diff --git a/assets/var/gnu/lame.md b/assets/var/gnu/lame.md new file mode 100644 index 0000000..eb2af7d --- /dev/null +++ b/assets/var/gnu/lame.md @@ -0,0 +1,9 @@ +lame 3.100 += +https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/lame LIBS="-ltinfo -lncurses" +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libbsd.md b/assets/var/gnu/libbsd.md index 49bb8c7..8f18d9f 100644 --- a/assets/var/gnu/libbsd.md +++ b/assets/var/gnu/libbsd.md @@ -3,7 +3,9 @@ libbsd 0.12.2 https://libbsd.freedesktop.org/releases/libbsd-0.12.2.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/libbsd && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/libbsd +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/libcap.md b/assets/var/gnu/libcap.md index 970f8b9..cfd194b 100644 --- a/assets/var/gnu/libcap.md +++ b/assets/var/gnu/libcap.md @@ -3,6 +3,6 @@ libcap 2.76 https://git.kernel.org/pub/scm/libs/libcap/libcap.git/snapshot/libcap-2.76.tar.gz ``` sh *** build *** -make -j$(nproc) && +make -j$(nproc) make install prefix=/pkg/gnu/libcap2 libdir=/pkg/gnu/libcap2/lib ``` diff --git a/assets/var/gnu/libdex.md b/assets/var/gnu/libdex.md new file mode 100644 index 0000000..8f50e83 --- /dev/null +++ b/assets/var/gnu/libdex.md @@ -0,0 +1,11 @@ +libdex 1.1.0 += +https://gitlab.gnome.org/GNOME/libdex/-/archive/1.1.0/libdex-1.1.0.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/libdex --buildtype=release -Dvapi=false .. +ninja +ninja install +``` diff --git a/assets/var/gnu/libdrm.md b/assets/var/gnu/libdrm.md new file mode 100644 index 0000000..89e8144 --- /dev/null +++ b/assets/var/gnu/libdrm.md @@ -0,0 +1,11 @@ +libdrm 2.4.131 += +https://gitlab.freedesktop.org/mesa/libdrm/-/archive/libdrm-2.4.131/libdrm-libdrm-2.4.131.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/libdrm --buildtype=release .. +ninja +ninja install +``` diff --git a/assets/var/gnu/libeconf.md b/assets/var/gnu/libeconf.md index aa969f0..1031aaf 100644 --- a/assets/var/gnu/libeconf.md +++ b/assets/var/gnu/libeconf.md @@ -3,7 +3,7 @@ libeconf 0.8.0 https://github.com/openSUSE/libeconf/archive/refs/tags/v0.8.0.tar.gz ``` sh *** build *** -mkdir build +mkdir -p build cd build meson setup \ --prefix=/pkg/gnu/libeconf \ diff --git a/assets/var/gnu/libevdev.md b/assets/var/gnu/libevdev.md new file mode 100644 index 0000000..2e8c475 --- /dev/null +++ b/assets/var/gnu/libevdev.md @@ -0,0 +1,11 @@ +libevdev 1.13.6 += +https://gitlab.freedesktop.org/libevdev/libevdev/-/archive/libevdev-1.13.6/libevdev-libevdev-1.13.6.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/libevdev --buildtype=release -Dtests=disabled -Ddocumentation=disabled .. +ninja +ninja install +``` diff --git a/assets/var/gnu/libffi.md b/assets/var/gnu/libffi.md index 801a540..df445d9 100644 --- a/assets/var/gnu/libffi.md +++ b/assets/var/gnu/libffi.md @@ -3,5 +3,7 @@ libffi 3.5.1 https://github.com/libffi/libffi/releases/download/v3.5.1/libffi-3.5.1.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/libffi && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/libffi --libdir=/pkg/gnu/libffi/lib --disable-multi-os-directory +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/libgudev.md b/assets/var/gnu/libgudev.md new file mode 100644 index 0000000..6dd54bc --- /dev/null +++ b/assets/var/gnu/libgudev.md @@ -0,0 +1,11 @@ +libgudev 238 += +https://gitlab.gnome.org/GNOME/libgudev/-/archive/238/libgudev-238.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/libgudev --buildtype=release .. +ninja +ninja install +``` diff --git a/assets/var/gnu/libheif.md b/assets/var/gnu/libheif.md new file mode 100644 index 0000000..e75605a --- /dev/null +++ b/assets/var/gnu/libheif.md @@ -0,0 +1,9 @@ +libheif 1.21.2 += +https://github.com/strukturag/libheif/archive/refs/tags/v1.21.2.tar.gz + +``` sh *** build *** +cmake -B build -DCMAKE_INSTALL_PREFIX=/pkg/gnu/libheif +cmake --build build -j $(nproc) +cmake --install build +``` diff --git a/assets/var/gnu/libice.md b/assets/var/gnu/libice.md new file mode 100644 index 0000000..b46b279 --- /dev/null +++ b/assets/var/gnu/libice.md @@ -0,0 +1,9 @@ +libice 1.1.2 += +https://www.x.org/releases/individual/lib/libICE-1.1.2.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libice +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libinput.md b/assets/var/gnu/libinput.md new file mode 100644 index 0000000..11693c1 --- /dev/null +++ b/assets/var/gnu/libinput.md @@ -0,0 +1,16 @@ +libinput 1.30.1 += +https://gitlab.freedesktop.org/libinput/libinput/-/archive/1.30.1/libinput-1.30.1.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/libinput --buildtype=release -Ddebug-gui=false .. +ninja +ninja install +``` + +``` cfg *** build deps *** +mtdev +libwacom +``` diff --git a/assets/var/gnu/libjpeg-turbo.md b/assets/var/gnu/libjpeg-turbo.md new file mode 100644 index 0000000..058b1e2 --- /dev/null +++ b/assets/var/gnu/libjpeg-turbo.md @@ -0,0 +1,11 @@ +libjpeg-turbo 3.1.3 += +https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/3.1.3.tar.gz + +``` sh *** build *** +mkdir build +cd build +cmake .. -DCMAKE_INSTALL_PREFIX=/pkg/gnu/libjpeg-turbo -DCMAKE_BUILD_TYPE=Release +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libjxl.md b/assets/var/gnu/libjxl.md new file mode 100644 index 0000000..5a694db --- /dev/null +++ b/assets/var/gnu/libjxl.md @@ -0,0 +1,22 @@ +libjxl 0.11.2 += +https://github.com/libjxl/libjxl/archive/refs/tags/v0.11.2.tar.gz + +``` sh *** build *** +./deps.sh +mkdir -p build +cd build +cmake .. \ + -DCMAKE_INSTALL_PREFIX=/pkg/gnu/libjxl \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_TESTING=OFF \ + -DJPEGXL_FORCE_SYSTEM_BROTLI=ON \ + -DJPEGXL_ENABLE_EXAMPLES=OFF \ + -DJPEGXL_ENABLE_TOOLS=OFF +make -j$(nproc) +make install +``` + +``` sh *** build deps *** +brotli +``` diff --git a/assets/var/gnu/libmd.md b/assets/var/gnu/libmd.md index ccaea4a..cc3f71e 100644 --- a/assets/var/gnu/libmd.md +++ b/assets/var/gnu/libmd.md @@ -3,5 +3,7 @@ libmd 1.1.0 https://archive.hadrons.org/software/libmd/libmd-1.1.0.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/libmd && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/libmd +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/libnice.md b/assets/var/gnu/libnice.md new file mode 100644 index 0000000..6da57cc --- /dev/null +++ b/assets/var/gnu/libnice.md @@ -0,0 +1,11 @@ +libnice 0.1.23 += +https://gitlab.freedesktop.org/libnice/libnice/-/archive/0.1.23/libnice-0.1.23.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/libnice .. +ninja +ninja install +``` diff --git a/assets/var/gnu/libnotify.md b/assets/var/gnu/libnotify.md new file mode 100644 index 0000000..2aa8f44 --- /dev/null +++ b/assets/var/gnu/libnotify.md @@ -0,0 +1,16 @@ +libnotify 0.8.8 += +https://gitlab.gnome.org/GNOME/libnotify/-/archive/0.8.8/libnotify-0.8.8.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup .. --prefix=/pkg/gnu/libnotify +ninja +ninja install +``` + +``` cfg *** build deps *** +gdk-pixbuf +gtk +``` diff --git a/assets/var/gnu/libogg.md b/assets/var/gnu/libogg.md new file mode 100644 index 0000000..e69de29 diff --git a/assets/var/gnu/libp11.md b/assets/var/gnu/libp11.md new file mode 100644 index 0000000..9b3842d --- /dev/null +++ b/assets/var/gnu/libp11.md @@ -0,0 +1,10 @@ +libp11 0.4.18 += +https://github.com/OpenSC/libp11/archive/refs/tags/libp11-0.4.18.tar.gz + +``` sh *** build *** +./bootstrap +./configure --prefix=/pkg/gnu/libp11 +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libproxy.md b/assets/var/gnu/libproxy.md new file mode 100644 index 0000000..cf06f64 --- /dev/null +++ b/assets/var/gnu/libproxy.md @@ -0,0 +1,17 @@ +libproxy 0.5.12 += +https://github.com/libproxy/libproxy/archive/refs/tags/0.5.12.tar.gz + +``` sh *** build *** +pip3 install gi-docgen +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/libproxy --buildtype=release -Dvapi=false -Dc_args="-Wno-error=missing-include-dirs" .. +ninja +ninja install +``` + +``` cfg *** build deps *** +gsettings-desktop-schemas +duktape +``` diff --git a/assets/var/gnu/libpsl.md b/assets/var/gnu/libpsl.md index 189bee5..5067bc0 100644 --- a/assets/var/gnu/libpsl.md +++ b/assets/var/gnu/libpsl.md @@ -3,7 +3,9 @@ libpsl 0.21.5 https://github.com/rockdaboot/libpsl/releases/download/0.21.5/libpsl-0.21.5.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/libpsl && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/libpsl +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/librsvg.md b/assets/var/gnu/librsvg.md new file mode 100644 index 0000000..3ddab2b --- /dev/null +++ b/assets/var/gnu/librsvg.md @@ -0,0 +1,13 @@ +librsvg 2.62.0 += +https://gitlab.gnome.org/GNOME/librsvg/-/archive/2.62.0/librsvg-2.62.0.tar.gz + +``` sh *** build *** +cargo install cargo-c +pkg link rustup +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/librsvg .. +ninja +ninja install +``` diff --git a/assets/var/gnu/libseccomp.md b/assets/var/gnu/libseccomp.md new file mode 100644 index 0000000..1f14cf1 --- /dev/null +++ b/assets/var/gnu/libseccomp.md @@ -0,0 +1,10 @@ +libseccomp 2.6.0 += +https://github.com/seccomp/libseccomp/archive/refs/tags/v2.6.0.tar.gz + +``` sh *** build *** +./autogen.sh +./configure --prefix=/pkg/gnu/libseccomp +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libsm.md b/assets/var/gnu/libsm.md new file mode 100644 index 0000000..c317daa --- /dev/null +++ b/assets/var/gnu/libsm.md @@ -0,0 +1,13 @@ +libsm 1.2.6 += +https://www.x.org/releases/individual/lib/libSM-1.2.6.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libsm +make -j$(nproc) +make install +``` + +``` cfg *** build deps *** +libice +``` diff --git a/assets/var/gnu/libsoup.md b/assets/var/gnu/libsoup.md new file mode 100644 index 0000000..8ca8b9d --- /dev/null +++ b/assets/var/gnu/libsoup.md @@ -0,0 +1,17 @@ +libsoup 3.6.6 += +https://gitlab.gnome.org/GNOME/libsoup/-/archive/3.6.6/libsoup-3.6.6.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +GIO_MODULE_DIR=/pkg/gnu/lib/gio/modules meson setup --prefix=/pkg/gnu/libsoup --buildtype=release .. +ninja +ninja install +``` + +``` cfg *** build deps *** +nghttp2 +glib-networking +sysprof +``` diff --git a/assets/var/gnu/libsrtp.md b/assets/var/gnu/libsrtp.md new file mode 100644 index 0000000..493eea9 --- /dev/null +++ b/assets/var/gnu/libsrtp.md @@ -0,0 +1,9 @@ +libsrtp 2.8.0 += +https://github.com/cisco/libsrtp/archive/refs/tags/v2.8.0.tar.gz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libsrtp +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libtasn1.md b/assets/var/gnu/libtasn1.md new file mode 100644 index 0000000..66aaa3d --- /dev/null +++ b/assets/var/gnu/libtasn1.md @@ -0,0 +1,9 @@ +libtasn1 4.21.0 += +https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.21.0.tar.gz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libtasn1 +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libtool.md b/assets/var/gnu/libtool.md index 2f07157..ed4e6a3 100644 --- a/assets/var/gnu/libtool.md +++ b/assets/var/gnu/libtool.md @@ -3,7 +3,7 @@ libtool 2.5.4 https://mirror.ihost.md/gnu/libtool/libtool-2.5.4.tar.xz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/libtool && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/libtool +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/libunistring.md b/assets/var/gnu/libunistring.md index ad8f79c..b89ed49 100644 --- a/assets/var/gnu/libunistring.md +++ b/assets/var/gnu/libunistring.md @@ -3,5 +3,7 @@ libunistring 1.3 https://ftp.gnu.org/gnu/libunistring/libunistring-1.3.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/libunistring && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/libunistring +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/libunwind.md b/assets/var/gnu/libunwind.md index 834b57e..1270554 100644 --- a/assets/var/gnu/libunwind.md +++ b/assets/var/gnu/libunwind.md @@ -3,5 +3,7 @@ libunwind 1.8.2 https://github.com/libunwind/libunwind/releases/download/v1.8.2/libunwind-1.8.2.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/libunwind && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/libunwind +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/libuv.md b/assets/var/gnu/libuv.md index 1147478..beb0cb2 100644 --- a/assets/var/gnu/libuv.md +++ b/assets/var/gnu/libuv.md @@ -3,8 +3,8 @@ libuv 1.51 https://github.com/libuv/libuv/archive/refs/tags/v1.51.0.tar.gz ``` sh *** build *** -./autogen.sh && -./configure --prefix=/pkg/gnu/libuv -disable-static && -make -j$(nproc) && +./autogen.sh +./configure --prefix=/pkg/gnu/libuv -disable-static +make -j$(nproc) make install ``` diff --git a/assets/var/gnu/libvpx.md b/assets/var/gnu/libvpx.md new file mode 100644 index 0000000..e3f4807 --- /dev/null +++ b/assets/var/gnu/libvpx.md @@ -0,0 +1,13 @@ +libvpx += +https://github.com/webmproject/libvpx.git + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libvpx +make -j$(nproc) +make install +``` + +``` cfg *** build deps *** +nasm +``` diff --git a/assets/var/gnu/libwacom.md b/assets/var/gnu/libwacom.md new file mode 100644 index 0000000..2855f04 --- /dev/null +++ b/assets/var/gnu/libwacom.md @@ -0,0 +1,15 @@ +libwacom 2.17 += +https://github.com/linuxwacom/libwacom/releases/download/libwacom-2.17.0/libwacom-2.17.0.tar.xz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/libwacom --buildtype=release -Dtests=disabled .. +ninja +ninja install +``` + +``` cfg *** build deps *** +libgudev +``` diff --git a/assets/var/gnu/libx11.md b/assets/var/gnu/libx11.md new file mode 100644 index 0000000..1c9e56a --- /dev/null +++ b/assets/var/gnu/libx11.md @@ -0,0 +1,13 @@ +libx11 1.8.13 += +https://www.x.org/releases/individual/lib/libX11-1.8.13.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libx11 +make -j$(nproc) +make install +``` + +``` cfg *** build deps *** +xtrans +``` diff --git a/assets/var/gnu/libxau.md b/assets/var/gnu/libxau.md new file mode 100644 index 0000000..81e00f7 --- /dev/null +++ b/assets/var/gnu/libxau.md @@ -0,0 +1,15 @@ +libxau 1.0.12 += +https://gitlab.freedesktop.org/xorg/lib/libxau/-/archive/libXau-1.0.12/libxau-libXau-1.0.12.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/libxau --buildtype=release .. +ninja +ninja install +``` + +``` cfg *** build deps *** +xproto +``` diff --git a/assets/var/gnu/libxcb.md b/assets/var/gnu/libxcb.md new file mode 100644 index 0000000..6327f28 --- /dev/null +++ b/assets/var/gnu/libxcb.md @@ -0,0 +1,15 @@ +libxcb 1.17.0 += +https://xcb.freedesktop.org/dist/libxcb-1.17.0.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libxcb +make -j$(nproc) +make install +``` + +``` cfg *** build deps *** +xcb-proto +util-macros +libxau +``` diff --git a/assets/var/gnu/libxcomposite.md b/assets/var/gnu/libxcomposite.md new file mode 100644 index 0000000..209028b --- /dev/null +++ b/assets/var/gnu/libxcomposite.md @@ -0,0 +1,3 @@ +libxcomposite 0.4.7 += +https://www.x.org/releases/individual/lib/libXcomposite-0.4.7.tar.xz diff --git a/assets/var/gnu/libxcrypt.md b/assets/var/gnu/libxcrypt.md index eef3b19..90ece59 100644 --- a/assets/var/gnu/libxcrypt.md +++ b/assets/var/gnu/libxcrypt.md @@ -3,5 +3,7 @@ libxcrypt 4.4.38 https://github.com/besser82/libxcrypt/releases/download/v4.4.38/libxcrypt-4.4.38.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/libxcrypt && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/libxcrypt +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/libxext.md b/assets/var/gnu/libxext.md new file mode 100644 index 0000000..835db15 --- /dev/null +++ b/assets/var/gnu/libxext.md @@ -0,0 +1,9 @@ +libxext 1.3.7 += +https://www.x.org/releases/individual/lib/libXext-1.3.7.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libxext +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libxfixes.md b/assets/var/gnu/libxfixes.md new file mode 100644 index 0000000..23db5ab --- /dev/null +++ b/assets/var/gnu/libxfixes.md @@ -0,0 +1,9 @@ +libxfixes 6.0.2 += +https://www.x.org/releases/individual/lib/libXfixes-6.0.2.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libxfixes +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libxi.md b/assets/var/gnu/libxi.md new file mode 100644 index 0000000..bd77582 --- /dev/null +++ b/assets/var/gnu/libxi.md @@ -0,0 +1,14 @@ +libxi 1.8.1 += +https://www.x.org/releases/individual/lib/libXi-1.8.1.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libxi +make -j$(nproc) +make install +``` + +``` cfg *** build deps *** +libxext +libxfixes +``` diff --git a/assets/var/gnu/libxkbcommon.md b/assets/var/gnu/libxkbcommon.md new file mode 100644 index 0000000..7f65890 --- /dev/null +++ b/assets/var/gnu/libxkbcommon.md @@ -0,0 +1,15 @@ +libxkbcommon 1.13.1 += +https://github.com/xkbcommon/libxkbcommon/archive/refs/tags/xkbcommon-1.13.1.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/libxkbcommon --buildtype=release .. +ninja +ninja install +``` + +``` cfg *** build deps *** +libxcb +``` diff --git a/assets/var/gnu/libxml2.md b/assets/var/gnu/libxml2.md new file mode 100644 index 0000000..1397279 --- /dev/null +++ b/assets/var/gnu/libxml2.md @@ -0,0 +1,58 @@ +libxml2 2.15.1 += +https://github.com/GNOME/libxml2/archive/refs/tags/v2.15.1.tar.gz + +``` sh *** build *** +libtoolize +./autogen.sh +./configure --prefix=/pkg/gnu/libxml2 +make -j$(nproc) +make install +``` + +``` sh *** config *** +mkdir -p /pkg/gnu/libxml2/etc/xml +cat > /pkg/gnu/libxml2/etc/xml/catalog <<'EOF' + + + + + + + + + + + + + + + + + + + + + + + + + + +EOF + +mkdir -p /pkg/gnu/s6/etc/envdir +echo "/pkg/gnu/libxml2/etc/xml/catalog" > /pkg/gnu/s6/etc/envdir/XML_CATALOG_FILES +``` diff --git a/assets/var/gnu/libxrandr.md b/assets/var/gnu/libxrandr.md new file mode 100644 index 0000000..6b22cf6 --- /dev/null +++ b/assets/var/gnu/libxrandr.md @@ -0,0 +1,9 @@ +libxrandr 1.5.5 += +https://www.x.org/releases/individual/lib/libXrandr-1.5.5.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libxrandr +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libxrender.md b/assets/var/gnu/libxrender.md new file mode 100644 index 0000000..3d55cab --- /dev/null +++ b/assets/var/gnu/libxrender.md @@ -0,0 +1,9 @@ +libxrender 0.9.12 += +https://www.x.org/releases/individual/lib/libXrender-0.9.12.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libxrender +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libxslt.md b/assets/var/gnu/libxslt.md new file mode 100644 index 0000000..64d94ba --- /dev/null +++ b/assets/var/gnu/libxslt.md @@ -0,0 +1,11 @@ +libxslt 1.1.45 += +https://github.com/GNOME/libxslt/archive/refs/tags/v1.1.45.tar.gz + +``` sh *** build *** +libtoolize +./autogen.sh +./configure --prefix=/pkg/gnu/libxslt +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/libxt.md b/assets/var/gnu/libxt.md new file mode 100644 index 0000000..15eb1da --- /dev/null +++ b/assets/var/gnu/libxt.md @@ -0,0 +1,13 @@ +libxt 1.3.1 += +https://www.x.org/releases/individual/lib/libXt-1.3.1.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libxt +make -j$(nproc) +make install +``` + +``` cfg *** build deps *** +libsm +``` diff --git a/assets/var/gnu/libxtst.md b/assets/var/gnu/libxtst.md new file mode 100644 index 0000000..d51ba41 --- /dev/null +++ b/assets/var/gnu/libxtst.md @@ -0,0 +1,13 @@ +libxtst 1.2.5 += +https://www.x.org/releases/individual/lib/libXtst-1.2.5.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/libxtst +make -j$(nproc) +make install +``` + +``` cfg *** build deps *** +libxi +``` diff --git a/assets/var/gnu/linux-headers.md b/assets/var/gnu/linux-headers.md new file mode 100644 index 0000000..3a1dca8 --- /dev/null +++ b/assets/var/gnu/linux-headers.md @@ -0,0 +1,12 @@ +linux-headers 6.18.7 += +https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.18.7.tar.xz + +``` sh *** build *** +make ARCH=x86 INSTALL_HDR_PATH=/pkg/gnu/linux-headers headers_install +``` + +``` cfg *** build deps *** +glibc +gcc +``` diff --git a/assets/var/gnu/linux-kernel.md b/assets/var/gnu/linux-kernel.md new file mode 100644 index 0000000..5665fb9 --- /dev/null +++ b/assets/var/gnu/linux-kernel.md @@ -0,0 +1,105 @@ +linux-kernel 6.18.7 += +https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.18.7.tar.xz + +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_XHCI_HCD=m +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_HID=m +CONFIG_HID_GENERIC=m +CONFIG_USB_COMMON=m + +CONFIG_KEYBOARD_ATKBD=m +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=m + +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_I2C_GPIO=m +7299 + + +``` sh *** build *** +# +# Configuration +# +cat > .config.base < .config.modules +./scripts/kconfig/merge_config.sh .config .config.modules +sed -E '/.*DEBUG.*/ s/=(y|m)/=n/' -i .config +make olddefconfig +./scripts/kconfig/merge_config.sh -m .config .config.base +make -j$(nproc) bzImage modules +make INSTALL_MOD_PATH=/pkg/gnu/linux-kernel modules_install +mkdir -p /pkg/gnu/linux-kernel/var/certs +objcopy arch/x86/boot/bzImage /pkg/gnu/linux-kernel/var/BOOTX64.EFI +cp System.map /pkg/gnu/linux-kernel/var/System.map +cp .config /pkg/gnu/linux-kernel/var/config +cp {certs/signing_key.pem,certs/signing_key.x509} /pkg/gnu/linux-kernel/var/certs || true +``` + +``` sh *** config *** +cp -rPl /pkg/gnu/linux-kernel/lib / +pkg run set linux-kernel +``` + +``` sh *** set *** +cp -r /pkg/gnu/linux-kernel/var/BOOTX64.EFI /boot/efi/EFI/BOOT/BOOTX64.EFI +``` diff --git a/assets/var/gnu/linux-pam.md b/assets/var/gnu/linux-pam.md index ff8b4b7..8498344 100644 --- a/assets/var/gnu/linux-pam.md +++ b/assets/var/gnu/linux-pam.md @@ -3,9 +3,11 @@ linux-pam 1.7.0 https://github.com/linux-pam/linux-pam/releases/download/v1.7.0/Linux-PAM-1.7.0.tar.xz ``` sh *** build *** -mkdir build; cd build && -meson setup --prefix=/pkg/gnu/linux-pam .. && -ninja && ninja install +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/linux-pam .. +ninja +ninja install ``` ``` sh *** config *** diff --git a/assets/var/gnu/linux.md b/assets/var/gnu/linux.md deleted file mode 100644 index c0335fd..0000000 --- a/assets/var/gnu/linux.md +++ /dev/null @@ -1,12 +0,0 @@ -linux 6.17.8 -= -https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.17.8.tar.xz - -``` sh *** build *** -make ARCH=x86 INSTALL_HDR_PATH=/pkg/gnu/linux headers_install -``` - -``` cfg *** build deps *** -glibc -gcc -``` diff --git a/assets/var/gnu/luv.md b/assets/var/gnu/luv.md index 071c296..292cf22 100644 --- a/assets/var/gnu/luv.md +++ b/assets/var/gnu/luv.md @@ -3,7 +3,8 @@ luv 1.51 https://github.com/luvit/luv/releases/download/1.51.0-1/luv-1.51.0-1.tar.gz ``` sh *** build *** -mkdir -p build; cd build +mkdir -p build +cd build cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/pkg/gnu/luv \ diff --git a/assets/var/gnu/lz4.md b/assets/var/gnu/lz4.md index 8403cdc..bbf404b 100644 --- a/assets/var/gnu/lz4.md +++ b/assets/var/gnu/lz4.md @@ -3,5 +3,8 @@ lz4 1.10 https://github.com/lz4/lz4/releases/download/v1.10.0/lz4-1.10.0.tar.gz ``` sh *** build *** -cd build/cmake && cmake . -DCMAKE_INSTALL_PREFIX=/pkg/gnu/lz4 && make -j$(nproc) && make install +cd build/cmake +cmake . -DCMAKE_INSTALL_PREFIX=/pkg/gnu/lz4 +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/lzip.md b/assets/var/gnu/lzip.md index f0d8a0d..07687d3 100644 --- a/assets/var/gnu/lzip.md +++ b/assets/var/gnu/lzip.md @@ -3,5 +3,7 @@ lzip 1.25 https://download.savannah.gnu.org/releases/lzip/lzip-1.25.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/lzip && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/lzip +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/m4.md b/assets/var/gnu/m4.md index 9d47eec..ca58080 100644 --- a/assets/var/gnu/m4.md +++ b/assets/var/gnu/m4.md @@ -3,7 +3,7 @@ m4 1.4.20 https://ftp.gnu.org/gnu/m4/m4-1.4.20.tar.xz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/m4 && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/m4 +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/make.md b/assets/var/gnu/make.md index 4719330..45c6cd7 100644 --- a/assets/var/gnu/make.md +++ b/assets/var/gnu/make.md @@ -3,9 +3,9 @@ make 4.4.1 https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/make && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/make +make -j$(nproc) +make install ``` ``` cfg *** run deps *** diff --git a/assets/var/gnu/meson.md b/assets/var/gnu/meson.md index 853c021..acbd449 100644 --- a/assets/var/gnu/meson.md +++ b/assets/var/gnu/meson.md @@ -3,7 +3,9 @@ meson 1.8.1 https://github.com/mesonbuild/meson/releases/download/1.8.1/meson-1.8.1.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/meson && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/meson +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/mpc.md b/assets/var/gnu/mpc.md index b981f10..6bbd202 100644 --- a/assets/var/gnu/mpc.md +++ b/assets/var/gnu/mpc.md @@ -6,12 +6,13 @@ https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz ./configure \ --with-gmp=/pkg/gnu/gmp \ --with-mpfr=/pkg/gnu/mpfr \ - --prefix=/pkg/gnu/mpc && -make -j$(nproc) && make install + --prefix=/pkg/gnu/mpc +make -j$(nproc) +make install ``` ``` cfg *** build deps *** -linux +linux-headers glibc gmp mpfr diff --git a/assets/var/gnu/mpfr.md b/assets/var/gnu/mpfr.md index 4cc373d..14fd734 100644 --- a/assets/var/gnu/mpfr.md +++ b/assets/var/gnu/mpfr.md @@ -5,12 +5,13 @@ https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.2.tar.xz ``` sh *** build *** ./configure \ --with-gmp=/pkg/gnu/gmp \ - --prefix=/pkg/gnu/mpfr && -make -j$(nproc) && make install + --prefix=/pkg/gnu/mpfr +make -j$(nproc) +make install ``` ``` cfg *** build deps *** -linux +linux-headers glibc gmp ``` diff --git a/assets/var/gnu/mtdev.md b/assets/var/gnu/mtdev.md new file mode 100644 index 0000000..688e306 --- /dev/null +++ b/assets/var/gnu/mtdev.md @@ -0,0 +1,9 @@ +mtdev 1.1.7 += +https://bitmath.se/org/code/mtdev/mtdev-1.1.7.tar.gz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/mtdev +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/nasm.md b/assets/var/gnu/nasm.md new file mode 100644 index 0000000..3571470 --- /dev/null +++ b/assets/var/gnu/nasm.md @@ -0,0 +1,12 @@ +nasm += +https://github.com/netwide-assembler/nasm.git + +``` sh *** build *** +pip3 install asciidoc +./autogen.sh +./configure --prefix=/pkg/gnu/nasm +make -j$(nproc) +make manpages +make install +``` diff --git a/assets/var/gnu/ncurses.md b/assets/var/gnu/ncurses.md index b0491d1..cc931b1 100644 --- a/assets/var/gnu/ncurses.md +++ b/assets/var/gnu/ncurses.md @@ -10,8 +10,11 @@ https://ftp.gnu.org/gnu/ncurses/ncurses-6.5.tar.gz --with-termlib \ --with-shared \ --enable-pc-files \ - --with-pkg-config-libdir=/pkg/gnu/ncurses/lib/pkgconfig && -make -j$(nproc) && make install && make clean && + --with-pkg-config-libdir=/pkg/gnu/ncurses/lib/pkgconfig +make -j$(nproc) +make install +make clean + ./configure \ --prefix=/pkg/gnu/ncurses \ --without-cxx-binding \ @@ -21,8 +24,9 @@ make -j$(nproc) && make install && make clean && --with-shared \ --enable-pc-files \ --with-pkg-config-libdir=/pkg/gnu/ncurses/lib/pkgconfig \ - --disable-widec && -make -j$(nproc) && make install + --disable-widec +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/neovim.md b/assets/var/gnu/neovim.md index 3e3ba4e..81c73d1 100644 --- a/assets/var/gnu/neovim.md +++ b/assets/var/gnu/neovim.md @@ -5,10 +5,9 @@ https://github.com/neovim/neovim/archive/refs/tags/nightly.tar.gz ``` sh *** build *** luarocks install lpeg pkg link gnu luarocks -mkdir -p build; cd build -cmake .. \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=/pkg/gnu/neovim +mkdir -p build +cd build +cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/pkg/gnu/neovim make -j&(nproc) make install ``` diff --git a/assets/var/gnu/nettle.md b/assets/var/gnu/nettle.md index c5fc9aa..193d4ac 100644 --- a/assets/var/gnu/nettle.md +++ b/assets/var/gnu/nettle.md @@ -3,7 +3,9 @@ nettle 3.10.2 https://ftp.gnu.org/gnu/nettle/nettle-3.10.2.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/nettle --disable-static && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/nettle --disable-static +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/nghttp2.md b/assets/var/gnu/nghttp2.md new file mode 100644 index 0000000..68ff89e --- /dev/null +++ b/assets/var/gnu/nghttp2.md @@ -0,0 +1,9 @@ +nghttp2 1.68.1 += +https://github.com/nghttp2/nghttp2/releases/download/v1.68.1/nghttp2-1.68.1.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/nghttp2 +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/ninja.md b/assets/var/gnu/ninja.md index 01e34cd..edac355 100644 --- a/assets/var/gnu/ninja.md +++ b/assets/var/gnu/ninja.md @@ -3,7 +3,7 @@ ninja 1.12.1 https://github.com/ninja-build/ninja/archive/refs/tags/v1.12.1.tar.gz ``` sh *** build *** -./configure.py --bootstrap && +./configure.py --bootstrap mkdir -p /pkg/gnu/ninja/bin cp ninja /pkg/gnu/ninja/bin ``` diff --git a/assets/var/gnu/ogg.md b/assets/var/gnu/ogg.md new file mode 100644 index 0000000..c221786 --- /dev/null +++ b/assets/var/gnu/ogg.md @@ -0,0 +1,10 @@ +ogg += +https://github.com/xiph/ogg.git + +``` sh *** build *** +./autogen.sh +./configure --prefix=/pkg/gnu/ogg +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/openh264.md b/assets/var/gnu/openh264.md new file mode 100644 index 0000000..47965dd --- /dev/null +++ b/assets/var/gnu/openh264.md @@ -0,0 +1,11 @@ +openh264 2.5.1 += +https://github.com/cisco/openh264/archive/refs/tags/2.5.1.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/openh264 --libdir=lib --buildtype=release +ninja +ninja install +``` diff --git a/assets/var/gnu/openjdk11.md b/assets/var/gnu/openjdk11.md new file mode 100644 index 0000000..8dadda6 --- /dev/null +++ b/assets/var/gnu/openjdk11.md @@ -0,0 +1,35 @@ +openjdk11 += +https://github.com/openjdk/jdk11u.git + +``` env *** env *** +disable=true +PATH=$PATH:/pkg/gnu/zulujdk11/bin +``` + +``` sh *** build *** +chmod +x ./configure +./configure \ + --prefix=/pkg/gnu/openjdk11 \ + --with-debug-level=release \ + --with-boot-jdk=/pkg/gnu/zulujdk11 \ + --with-extra-cflags="-Wno-error=format-truncation -Wno-format-truncation -Wno-unterminated-string-initialization -Wno-calloc-transposed-args -Wno-maybe-uninitialized" \ + --with-extra-cxxflags="-Wno-error=format-truncation -Wno-format-truncation" +make images install +``` + +``` cfg *** build deps *** +zulujdk11 +xproto +libx11 +libxrender +libxrandr +libxtst +libxt +cups +alsa-lib +``` + +``` cfg *** run deps *** +zip +``` diff --git a/assets/var/gnu/openjdk17.md b/assets/var/gnu/openjdk17.md new file mode 100644 index 0000000..a07392a --- /dev/null +++ b/assets/var/gnu/openjdk17.md @@ -0,0 +1,33 @@ +openjdk17 += +https://github.com/openjdk/jdk17u.git + +``` env *** env *** +disable=true +PATH=$PATH:/pkg/gnu/zulujdk17/bin +``` + +``` sh *** build *** +chmod +x ./configure +./configure \ + --prefix=/pkg/gnu/openjdk17 \ + --with-debug-level=release \ + --with-boot-jdk=/pkg/gnu/zulujdk17 +make images install +``` + +``` cfg *** build deps *** +zulujdk17 +xproto +libx11 +libxrender +libxrandr +libxtst +libxt +cups +alsa-lib +``` + +``` cfg *** run deps *** +zip +``` diff --git a/assets/var/gnu/openjdk21.md b/assets/var/gnu/openjdk21.md new file mode 100644 index 0000000..95981c7 --- /dev/null +++ b/assets/var/gnu/openjdk21.md @@ -0,0 +1,35 @@ +openjdk21 += +https://github.com/openjdk/jdk21u.git + +``` env *** env *** +disable=true +PATH=$PATH:/pkg/gnu/zulujdk21/bin +``` + +``` sh *** build *** +chmod +x ./configure +./configure \ + --prefix=/pkg/gnu/openjdk21 \ + --with-debug-level=release \ + --with-boot-jdk=/pkg/gnu/zulujdk21 +make images +mkdir -p /pkg/gnu/openjdk21 +cp -rPl build/linux-x86_64-server-release/images/jdk/* /pkg/gnu/openjdk21 +``` + +``` cfg *** build deps *** +zulujdk21 +xproto +libx11 +libxrender +libxrandr +libxtst +libxt +cups +alsa-lib +``` + +``` cfg *** run deps *** +zip +``` diff --git a/assets/var/gnu/openjdk25.md b/assets/var/gnu/openjdk25.md new file mode 100644 index 0000000..0ac42ad --- /dev/null +++ b/assets/var/gnu/openjdk25.md @@ -0,0 +1,35 @@ +openjdk25 += +https://github.com/openjdk/jdk25u.git + +``` env *** env *** +disable=true +PATH=$PATH:/pkg/gnu/zulujdk25/bin +``` + +``` sh *** build *** +chmod +x ./configure +./configure \ + --prefix=/pkg/gnu/openjdk25 \ + --with-debug-level=release \ + --with-boot-jdk=/pkg/gnu/zulujdk25 +make images +mkdir -p /pkg/gnu/openjdk25 +cp -rPl build/linux-x86_64-server-release/images/jdk/* /pkg/gnu/openjdk25 +``` + +``` cfg *** build deps *** +zulujdk25 +xproto +libx11 +libxrender +libxrandr +libxtst +libxt +cups +alsa-lib +``` + +``` cfg *** run deps *** +zip +``` diff --git a/assets/var/gnu/openjdk8.md b/assets/var/gnu/openjdk8.md new file mode 100644 index 0000000..e33b09f --- /dev/null +++ b/assets/var/gnu/openjdk8.md @@ -0,0 +1,39 @@ +openjdk8 += +https://github.com/openjdk/shenandoah-jdk8u.git + +``` sh ** patch ** +sed -i 's/INVOKE(SplashLoadMemory, NULL)/INVOKE(SplashLoadMemory, 0)/' jdk/src/share/bin/splashscreen_stubs.c +sed -i 's/INVOKE(SplashLoadFile, NULL)/INVOKE(SplashLoadFile, 0)/' jdk/src/share/bin/splashscreen_stubs.c +sed -i 's/freeArray(scale, numBands)/freeArray((void**)scale, numBands)/g' jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c +``` + +``` env *** env *** +disable=true +PATH=$PATH:/pkg/gnu/zulujdk8/bin +``` + +``` sh *** build *** +./configure \ + --prefix=/pkg/gnu/openjdk8 \ + --with-debug-level=release \ + --with-boot-jdk=/pkg/gnu/zulujdk8 \ + --with-extra-cflags="-std=gnu17 -Wno-error -Wno-implicit-fallthrough -Wno-sign-compare -Werror=maybe-uninitialized -Werror=unterminated-string-initialization" \ + --with-extra-cxxflags="-std=gnu++98 -Wno-error -Wno-implicit-fallthrough -Wno-sign-compare -Werror=maybe-uninitialized -Werror=unterminated-string-initialization" +make images install +``` + +``` cfg *** build deps *** +zulujdk8 +xproto +libx11 +libxrender +libxtst +libxt +cups +alsa-lib +``` + +``` cfg *** run deps *** +zip +``` diff --git a/assets/var/gnu/openssh.md b/assets/var/gnu/openssh.md new file mode 100644 index 0000000..a2b8de6 --- /dev/null +++ b/assets/var/gnu/openssh.md @@ -0,0 +1,10 @@ +openssh += +https://github.com/openssh/openssh-portable.git + +``` sh *** build *** +autoreconf -fi +./configure --prefix=/pkg/gnu/openssh --sysconfdir=/pkg/gnu/openssh/etc --with-ssl-dir=/pkg/gnu --with-zlib +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/openssl.md b/assets/var/gnu/openssl.md index ba82b52..7a957e5 100644 --- a/assets/var/gnu/openssl.md +++ b/assets/var/gnu/openssl.md @@ -3,16 +3,21 @@ openssl 3.5.0 https://github.com/openssl/openssl/releases/download/openssl-3.5.0/openssl-3.5.0.tar.gz ``` sh *** build *** -./Configure --prefix=/pkg/gnu/openssl --libdir=lib linux-x86_64 shared zlib-dynamic && make -j$(nproc) && make install +./Configure --prefix=/pkg/gnu/openssl --libdir=lib linux-x86_64 shared zlib-dynamic +make -j$(nproc) +make install ``` ``` sh *** config *** -wget https://curl.se/ca/cacert.pem -O /pkg/gnu/openssl/ssl/cacert.pem --no-check-certificate && -csplit -f "/pkg/gnu/openssl/ssl/certs/cert-" -b "%03d.pem" "/pkg/gnu/openssl/ssl/cacert.pem" '/-----BEGIN CERTIFICATE-----/' '{*}' &>/dev/null && +wget https://curl.se/ca/cacert.pem -O /pkg/gnu/openssl/ssl/cacert.pem --no-check-certificate +csplit -f "/pkg/gnu/openssl/ssl/certs/cert-" -b "%03d.pem" "/pkg/gnu/openssl/ssl/cacert.pem" '/-----BEGIN CERTIFICATE-----/' '{*}' &>/dev/null + for cert in "/pkg/gnu/openssl/ssl/certs/"cert-*.pem; do hash=$(openssl x509 -hash -noout -in "$cert") mv "$cert" "/pkg/gnu/openssl/ssl/certs/$hash.$(find "/pkg/gnu/openssl/ssl/certs/" -maxdepth 1 -type f -name "$hash.*" | wc -l)" done +echo "/pkg/gnu/openssl/ssl/certs" > /pkg/gnu/s6/etc/envdir/SSL_CERT_DIR +echo "/pkg/gnu/openssl/ssl/cacert.pem" > /pkg/gnu/s6/etc/envdir/SSL_CERT_FILE ``` ``` cfg *** run deps *** diff --git a/assets/var/gnu/opus.md b/assets/var/gnu/opus.md new file mode 100644 index 0000000..14f64a2 --- /dev/null +++ b/assets/var/gnu/opus.md @@ -0,0 +1,9 @@ +opus 1.6.1 += +https://downloads.xiph.org/releases/opus/opus-1.6.1.tar.gz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/opus +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/orc.md b/assets/var/gnu/orc.md new file mode 100644 index 0000000..92fa98e --- /dev/null +++ b/assets/var/gnu/orc.md @@ -0,0 +1,11 @@ +orc 2.3.0 += +https://dlcdn.apache.org/orc/orc-2.3.0/orc-2.3.0.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/orc .. +ninja +ninja install +``` diff --git a/assets/var/gnu/p11-kit.md b/assets/var/gnu/p11-kit.md new file mode 100644 index 0000000..2d7132c --- /dev/null +++ b/assets/var/gnu/p11-kit.md @@ -0,0 +1,13 @@ +p11-kit 0.26.2 += +https://github.com/p11-glue/p11-kit/releases/download/0.26.2/p11-kit-0.26.2.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/p11-kit -with-trust-paths=/pkg/gnu/openssl/ssl/certs +make -j$(nproc) +make install +``` + +``` cfg *** build deps *** +openssl +``` diff --git a/assets/var/gnu/pango.md b/assets/var/gnu/pango.md new file mode 100644 index 0000000..67c2c8d --- /dev/null +++ b/assets/var/gnu/pango.md @@ -0,0 +1,11 @@ +pango 1.57.0 += +https://gitlab.gnome.org/GNOME/pango/-/archive/1.57.0/pango-1.57.0.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/pango --buildtype=release .. +ninja +ninja install +``` diff --git a/assets/var/gnu/patch.md b/assets/var/gnu/patch.md new file mode 100644 index 0000000..2518711 --- /dev/null +++ b/assets/var/gnu/patch.md @@ -0,0 +1,9 @@ +patch 2.8 += +https://ftp.gnu.org/gnu/patch/patch-2.8.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/patch +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/pciutils.md b/assets/var/gnu/pciutils.md new file mode 100644 index 0000000..0e0c011 --- /dev/null +++ b/assets/var/gnu/pciutils.md @@ -0,0 +1,8 @@ +pciutils += +https://git.kernel.org/pub/scm/utils/pciutils/pciutils.git + +``` sh *** build *** +make PREFIX=/pkg/gnu/pciutils all +make PREFIX=/pkg/gnu/pciutils install +``` diff --git a/assets/var/gnu/pcre2.md b/assets/var/gnu/pcre2.md index 372d2f4..3f92984 100644 --- a/assets/var/gnu/pcre2.md +++ b/assets/var/gnu/pcre2.md @@ -3,9 +3,9 @@ pcre2 10.45 https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.45/pcre2-10.45.tar.gz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/pcre2 && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/pcre2 +make -j$(nproc) +make install ``` ``` cfg *** run deps *** diff --git a/assets/var/gnu/perl.md b/assets/var/gnu/perl.md index 779180f..ca6721a 100644 --- a/assets/var/gnu/perl.md +++ b/assets/var/gnu/perl.md @@ -2,5 +2,13 @@ perl 5.40.2 = https://github.com/Perl/perl5/archive/refs/tags/v5.40.2.tar.gz -cd /source/perl5-5.40.2 && mkdir -p /pkg/gnu/perl5 && ./Configure -desA -Dprefix=/pkg/gnu/perl5 && make -j$(nproc) && make install #PERL5################# - +``` sh *** build *** +mkdir -p /pkg/gnu/perl +./Configure -des \ + -Dprefix=/pkg/gnu/perl \ + -Dcccdlflags='-fPIC' \ + -Dccdlflags='-Wl,-E' \ + -Duseshrplib +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/pkg-config.md b/assets/var/gnu/pkg-config.md index 520bcb3..99eb5f2 100644 --- a/assets/var/gnu/pkg-config.md +++ b/assets/var/gnu/pkg-config.md @@ -5,8 +5,9 @@ https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz ``` sh *** build *** ./configure \ --prefix=/pkg/gnu/pkg-config \ - --with-pc-path=/pkg/gnu/lib/pkgconfig && -make -j$(nproc) && make install && + --with-pc-path="/pkg/gnu/lib/pkgconfig:/pkg/gnu/share/pkgconfig" +make -j$(nproc) +make install echo "/pkg/gnu/pkg-config/share/aclocal" >> /pkg/gnu/automake/share/aclocal/dirlist ``` diff --git a/assets/var/gnu/python3.md b/assets/var/gnu/python3.md index 195998e..3e39922 100644 --- a/assets/var/gnu/python3.md +++ b/assets/var/gnu/python3.md @@ -3,7 +3,9 @@ python3 3.13.4 https://github.com/python/cpython/archive/refs/tags/v3.13.4.tar.gz ``` sh *** build *** -CFLAGS="-I/pkg/gnu/include/ncurses" ./configure --prefix=/pkg/gnu/python3 --enable-optimizations && make -j$(nproc) && make install +CFLAGS="-I/pkg/gnu/include/ncurses" ./configure --prefix=/pkg/gnu/python3 --enable-optimizations +make -j$(nproc) +make install ``` ``` sh *** config *** diff --git a/assets/var/gnu/rdfind.md b/assets/var/gnu/rdfind.md index 99656b3..ee9d72f 100644 --- a/assets/var/gnu/rdfind.md +++ b/assets/var/gnu/rdfind.md @@ -3,7 +3,10 @@ rdfind 1.7.0 https://github.com/pauldreik/rdfind/archive/refs/tags/releases/1.7.0.tar.gz ``` sh *** build *** -./bootstrap.sh && ./configure --prefix=/pkg/gnu/rdfind && make -j$(nproc) && make install +./bootstrap.sh +./configure --prefix=/pkg/gnu/rdfind +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/re2c.md b/assets/var/gnu/re2c.md index 0fdec06..5108636 100644 --- a/assets/var/gnu/re2c.md +++ b/assets/var/gnu/re2c.md @@ -3,5 +3,7 @@ re2c 4.2 https://github.com/skvadrik/re2c/releases/download/4.2/re2c-4.2.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/re2c && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/re2c +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/readline.md b/assets/var/gnu/readline.md index 833268a..09ed70b 100644 --- a/assets/var/gnu/readline.md +++ b/assets/var/gnu/readline.md @@ -7,8 +7,9 @@ export LIBS="-ltinfo" ./configure \ --prefix=/pkg/gnu/readline \ --with-curses \ - --with-shared-termcap-library=tinfo && -make -j$(nproc) && make install + --with-shared-termcap-library=tinfo +make -j$(nproc) +make install sed -i 's/Requires\.private: termcap/Requires.private: tinfo/' /pkg/gnu/readline/lib/pkgconfig/readline.pc ``` diff --git a/assets/var/gnu/ripgrep.md b/assets/var/gnu/ripgrep.md index caaaa73..a4548dc 100644 --- a/assets/var/gnu/ripgrep.md +++ b/assets/var/gnu/ripgrep.md @@ -3,7 +3,7 @@ ripgrep 14.1.1 https://github.com/BurntSushi/ripgrep/archive/refs/tags/14.1.1.tar.gz ``` sh *** build *** -cargo build --release && -mkdir -p /pkg/gnu/ripgrep/bin && +cargo build --release +mkdir -p /pkg/gnu/ripgrep/bin cp target/release/rg /pkg/gnu/ripgrep/bin/ ``` diff --git a/assets/var/gnu/rsync.md b/assets/var/gnu/rsync.md index 07d18fc..668eeb6 100644 --- a/assets/var/gnu/rsync.md +++ b/assets/var/gnu/rsync.md @@ -3,5 +3,7 @@ rsync 3.4.1 https://github.com/RsyncProject/rsync/releases/download/v3.4.1/rsync-3.4.1.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/rsync && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/rsync +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/rustup.md b/assets/var/gnu/rustup.md index 972305b..7c3c2a3 100644 --- a/assets/var/gnu/rustup.md +++ b/assets/var/gnu/rustup.md @@ -1,7 +1,32 @@ -rust +rustup = ``` sh *** build *** curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \ -RUSTUP_HOME=/pkg/gnu/rustup CARGO_HOME=/pkg/gnu/cargo sh -s -- --no-modify-path -y --default-toolchain stable --profile default +RUSTUP_HOME=/pkg/gnu/rustup \ +CARGO_HOME=/pkg/gnu/rustup \ +RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static \ +RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup \ +sh -s -- --no-modify-path -y --default-toolchain stable --profile default +``` + +``` sh *** config *** +echo "/pkg/gnu/rustup" > /pkg/gnu/s6/etc/envdir/CARGO_HOME +echo "/pkg/gnu/rustup" > /pkg/gnu/s6/etc/envdir/RUSTUP_HOME +echo "/pkg/gnu/openssl/ssl/cacert.pem" > /pkg/gnu/s6/etc/envdir/CARGO_HTTP_CAINFO +cat > /pkg/gnu/rustup/config.toml << 'EOF' +[source.crates-io] +replace-with = "mirror" + +[source.mirror] +registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/" + +[http] +timeout = 60 +multiplexing = false +low-speed-limit = 1024 + +[net] +retry = 5 +EOF ``` diff --git a/assets/var/gnu/s6-linux-utils.md b/assets/var/gnu/s6-linux-utils.md index 00e81d6..f3a0f53 100644 --- a/assets/var/gnu/s6-linux-utils.md +++ b/assets/var/gnu/s6-linux-utils.md @@ -3,11 +3,11 @@ s6-linux-utils 2.6.3 https://skarnet.org/software/s6-linux-utils/s6-linux-utils-2.6.3.0.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/s6-linux-utils --with-sysdeps=/pkg/gnu/skalibs/lib/skalibs/sysdeps && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/s6-linux-utils --with-sysdeps=/pkg/gnu/skalibs/lib/skalibs/sysdeps +make -j$(nproc) +make install ``` ``` cfg *** build deps *** skalibs ``` - diff --git a/assets/var/gnu/s6.md b/assets/var/gnu/s6.md index 14c4d4d..3357f9e 100644 --- a/assets/var/gnu/s6.md +++ b/assets/var/gnu/s6.md @@ -3,8 +3,10 @@ s6 2.13.2 https://skarnet.org/software/s6/s6-2.13.2.0.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/s6 --with-sysdeps=/pkg/gnu/skalibs/lib/skalibs/sysdeps && -make -j$(nproc) && make install && mkdir -p /pkg/gnu/s6/etc/service +./configure --prefix=/pkg/gnu/s6 --with-sysdeps=/pkg/gnu/skalibs/lib/skalibs/sysdeps +make -j$(nproc) +make install +mkdir -p /pkg/gnu/s6/etc/service ``` ``` sh *** config *** diff --git a/assets/var/gnu/scdoc.md b/assets/var/gnu/scdoc.md new file mode 100644 index 0000000..e33498f --- /dev/null +++ b/assets/var/gnu/scdoc.md @@ -0,0 +1,8 @@ +scdoc 1.11.4 += +https://git.sr.ht/~sircmpwn/scdoc/archive/1.11.4.tar.gz + +``` sh *** build *** +make PREFIX=/pkg/gnu/scdoc -j$(nproc) +make PREFIX=/pkg/gnu/scdoc install +``` diff --git a/assets/var/gnu/sed.md b/assets/var/gnu/sed.md index c1b9517..97217a8 100644 --- a/assets/var/gnu/sed.md +++ b/assets/var/gnu/sed.md @@ -3,7 +3,7 @@ sed 4.9 https://mirror.ihost.md/gnu/sed/sed-4.9.tar.xz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/sed && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/sed +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/shadow.md b/assets/var/gnu/shadow.md index e5279e2..277838c 100644 --- a/assets/var/gnu/shadow.md +++ b/assets/var/gnu/shadow.md @@ -3,7 +3,9 @@ shadow 4.17.4 https://github.com/shadow-maint/shadow/releases/download/4.17.4/shadow-4.17.4.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/shadow && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/shadow +make -j$(nproc) +make install ``` ``` sh *** config *** diff --git a/assets/var/gnu/shared-mime-info.md b/assets/var/gnu/shared-mime-info.md new file mode 100644 index 0000000..3182f06 --- /dev/null +++ b/assets/var/gnu/shared-mime-info.md @@ -0,0 +1,18 @@ +shared-mime-info += +https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.4/shared-mime-info-2.4.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/shared-mime-info .. +ninja +ninja install +``` + +``` cfg *** build deps *** +libxml2 +docbook4-xml +docbook-xslt1 +libxslt +``` diff --git a/assets/var/gnu/skalibs.md b/assets/var/gnu/skalibs.md index 1ec1051..f0eee14 100644 --- a/assets/var/gnu/skalibs.md +++ b/assets/var/gnu/skalibs.md @@ -3,5 +3,7 @@ skalibs 2.14.4 https://skarnet.org/software/skalibs/skalibs-2.14.4.0.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/skalibs && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/skalibs +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/sqlite.md b/assets/var/gnu/sqlite.md index 6fa2e37..1187dea 100644 --- a/assets/var/gnu/sqlite.md +++ b/assets/var/gnu/sqlite.md @@ -2,10 +2,10 @@ sqlite 3.50.4 = https://www.sqlite.org/2025/sqlite-autoconf-3500400.tar.gz -``` -./configure \ - --prefix=/pkg/gnu/sqlite && -make -j$(nproc) && make install +``` sh *** build *** +./configure --prefix=/pkg/gnu/sqlite +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/st.md b/assets/var/gnu/st.md new file mode 100644 index 0000000..454f7fc --- /dev/null +++ b/assets/var/gnu/st.md @@ -0,0 +1,15 @@ +st += +https://root-kit.ru/AeroLinux/AeroSt.git + +``` sh *** patch *** +cp config.def.h config.h +sed -i 's/^static char \*font = .*;/static char \*font = "monospace:bold:size=16:antialias=true:autohint=true";/' config.h +sed -i 's/^\t"gray90", \/\* default foreground colour \*\//\t"#ffffff", \/\* default foreground colour \*\//' config.h +sed -i 's/^\t"black", \/\* default background colour \*\//\t"#242424", \/\* default background colour \*\//' config.h +``` + +``` sh *** build *** +make CC=gcc -j$(nproc) +sudo make install +``` diff --git a/assets/var/gnu/strace.md b/assets/var/gnu/strace.md index 9f655f6..b408a33 100644 --- a/assets/var/gnu/strace.md +++ b/assets/var/gnu/strace.md @@ -3,7 +3,9 @@ strace 6.15 https://github.com/strace/strace/releases/download/v6.15/strace-6.15.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/strace --enable-mpers=no && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/strace --enable-mpers=no +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/sway.md b/assets/var/gnu/sway.md new file mode 100644 index 0000000..ddbb8d1 --- /dev/null +++ b/assets/var/gnu/sway.md @@ -0,0 +1,74 @@ +sway 1.11 += +https://github.com/swaywm/sway/releases/download/1.11/sway-1.11.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/sway --buildtype=release .. +ninja +ninja install +``` + +``` sh *** config *** +rm -r /pkg/gnu/sway/etc/sway +git clone https://root-kit.ru/AeroLinux/AeroSway.git /pkg/gnu/sway/etc/sway + +cat > /pkg/gnu/sway/bin/sway-autologin-shell </dev/null; then + echo "Error: seatd is not running. Start it manually or via systemd." + exit 1 + fi + + if [ ! -w "/run/seatd.sock" ]; then + echo "Error: No access to /run/seatd.sock. Ensure you are in the 'seat' group." + exit 1 + fi + + export XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-/tmp/sway-runtime-$$}" + mkdir -p "$XDG_RUNTIME_DIR" + chmod 0700 "$XDG_RUNTIME_DIR" + + exec "$SWAY_BIN" "$@" +else + exec zsh +fi +EOF +chmod +x /pkg/gnu/sway/bin/sway-autologin-shell +``` + +``` cfg *** build deps *** +wlroots +wayland +wayland-protocols +pcre2 +json-c +pango +cairo +scdoc +libevdev +libinput +``` + +``` cfg *** run deps *** +jq +brightnessctl +libnotify +notify-send +mako +st +``` diff --git a/assets/var/gnu/sysprof.md b/assets/var/gnu/sysprof.md new file mode 100644 index 0000000..75f2f61 --- /dev/null +++ b/assets/var/gnu/sysprof.md @@ -0,0 +1,16 @@ +sysprof 50.0 += +https://gitlab.gnome.org/GNOME/sysprof/-/archive/50.0/sysprof-50.0.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/sysprof --buildtype=release -Dgtk=false -Dsysprofd=none .. +ninja +ninja install +``` + +``` cfg *** build deps *** +libdex +itstool +``` diff --git a/assets/var/gnu/tar.md b/assets/var/gnu/tar.md index 6331e69..669d643 100644 --- a/assets/var/gnu/tar.md +++ b/assets/var/gnu/tar.md @@ -3,6 +3,7 @@ tar 1.35 https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz ``` sh *** build *** -FORCE_UNSAFE_CONFIGURE=1 \ -./configure --prefix=/pkg/gnu/tar && make -j$(nproc) && make install +FORCE_UNSAFE_CONFIGURE=1 ./configure --prefix=/pkg/gnu/tar +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/texinfo.md b/assets/var/gnu/texinfo.md index 1d0fead..1290193 100644 --- a/assets/var/gnu/texinfo.md +++ b/assets/var/gnu/texinfo.md @@ -3,7 +3,9 @@ texinfo 7.2 https://ftp.gnu.org/gnu/texinfo/texinfo-7.2.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/texinfo && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/texinfo +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/tzdb.md b/assets/var/gnu/tzdb.md index a8499be..5a7fb9f 100644 --- a/assets/var/gnu/tzdb.md +++ b/assets/var/gnu/tzdb.md @@ -3,7 +3,8 @@ tzdb 2025 https://data.iana.org/time-zones/releases/tzdb-2025b.tar.lz ``` sh *** build *** -make CC=gcc -j$(nproc) && make DESTDIR=/pkg/gnu/tzdb install && -mv /pkg/gnu/tzdb/usr/* /pkg/gnu/tzdb/ && +make CC=gcc -j$(nproc) +make DESTDIR=/pkg/gnu/tzdb install +mv /pkg/gnu/tzdb/usr/* /pkg/gnu/tzdb/ rm -r /pkg/gnu/tzdb/usr/ ``` diff --git a/assets/var/gnu/util-linux.md b/assets/var/gnu/util-linux.md index 91c6d7b..459ef8e 100644 --- a/assets/var/gnu/util-linux.md +++ b/assets/var/gnu/util-linux.md @@ -3,7 +3,9 @@ util-linux 2.41 https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.41/util-linux-2.41.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/util-linux && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/util-linux +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/util-macros.md b/assets/var/gnu/util-macros.md new file mode 100644 index 0000000..b436b3f --- /dev/null +++ b/assets/var/gnu/util-macros.md @@ -0,0 +1,10 @@ +util-macros 1.20.2 += +https://gitlab.freedesktop.org/xorg/util/macros/-/archive/util-macros-1.20.2/macros-util-macros-1.20.2.tar.gz + +``` sh *** build *** +./autogen.sh +./configure --prefix=/pkg/gnu/util-macros +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/vmaf.md b/assets/var/gnu/vmaf.md new file mode 100644 index 0000000..fc5a770 --- /dev/null +++ b/assets/var/gnu/vmaf.md @@ -0,0 +1,12 @@ +vmaf += +https://github.com/Netflix/vmaf.git + +``` sh *** build *** +cd libvmaf +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/vmaf --buildtype=release .. +ninja +ninja install +``` diff --git a/assets/var/gnu/wayland-protocols.md b/assets/var/gnu/wayland-protocols.md new file mode 100644 index 0000000..16530fd --- /dev/null +++ b/assets/var/gnu/wayland-protocols.md @@ -0,0 +1,11 @@ +wayland-protocols 1.41 += +https://github.com/wayland-mirror/wayland-protocols/archive/refs/tags/1.41.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/wayland-protocols --buildtype=release .. +ninja +ninja install +``` diff --git a/assets/var/gnu/wayland.md b/assets/var/gnu/wayland.md new file mode 100644 index 0000000..1e945c1 --- /dev/null +++ b/assets/var/gnu/wayland.md @@ -0,0 +1,15 @@ +wayland 1.24.0 += +https://github.com/wayland-mirror/wayland/archive/refs/tags/1.23.1.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/wayland --buildtype=release -Ddocumentation=false .. +ninja +ninja install +``` + +``` cfg *** build deps *** +libxml2 +``` diff --git a/assets/var/gnu/webrtc-audio-processing.md b/assets/var/gnu/webrtc-audio-processing.md new file mode 100644 index 0000000..618daad --- /dev/null +++ b/assets/var/gnu/webrtc-audio-processing.md @@ -0,0 +1,16 @@ +webrtc-audio-processing 2.1 += +http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/webrtc-audio-processing-2.1.tar.xz + +``` sh *** patch *** +sed -i '1i #include ' webrtc/rtc_base/trace_event.h +sed -i '/#include /a #include ' webrtc/modules/audio_processing/aec3/multi_channel_content_detector.h +``` + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/webrtc-audio-processing .. +ninja +ninja install +``` diff --git a/assets/var/gnu/wget.md b/assets/var/gnu/wget.md index 604a744..7a22283 100644 --- a/assets/var/gnu/wget.md +++ b/assets/var/gnu/wget.md @@ -3,8 +3,9 @@ wget 1.25 https://ftp.gnu.org/gnu/wget/wget-1.25.0.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/wget --with-ssl=openssl && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/wget --with-ssl=openssl +make -j$(nproc) +make install ``` ``` cfg *** build deps *** diff --git a/assets/var/gnu/which.md b/assets/var/gnu/which.md index e82d94b..7de8d9a 100644 --- a/assets/var/gnu/which.md +++ b/assets/var/gnu/which.md @@ -3,5 +3,7 @@ which 2.23 https://ftp.gnu.org/gnu/which/which-2.23.tar.gz ``` sh *** build *** -./configure --prefix=/pkg/gnu/which && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/which +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/wlroots.md b/assets/var/gnu/wlroots.md new file mode 100644 index 0000000..cb5c0b4 --- /dev/null +++ b/assets/var/gnu/wlroots.md @@ -0,0 +1,16 @@ +wlroots 0.19.2 += +https://gitlab.freedesktop.org/wlroots/wlroots/-/archive/0.19.2/wlroots-0.19.2.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/wlroots --buildtype=release .. +ninja +ninja install +``` + +``` cfg *** build deps *** +libdrm +libxkbcommon +``` diff --git a/assets/var/gnu/xcb-proto.md b/assets/var/gnu/xcb-proto.md new file mode 100644 index 0000000..d46184c --- /dev/null +++ b/assets/var/gnu/xcb-proto.md @@ -0,0 +1,9 @@ +xcb-proto 1.17.0 += +https://xcb.freedesktop.org/dist/xcb-proto-1.17.0.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/xcb-proto +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/xmlto.md b/assets/var/gnu/xmlto.md new file mode 100644 index 0000000..cdd943c --- /dev/null +++ b/assets/var/gnu/xmlto.md @@ -0,0 +1,19 @@ +xmlto += +https://github.com/deepin-community/xmlto.git + +``` sh *** patch *** +sed -i 's/^static ifsense;/int static ifsense;/' xmlif/xmlif.l +sed -i 's/^main(/int main(/' xmlif/xmlif.l +``` + +``` sh *** build *** +autoreconf -fi +./configure --prefix=/pkg/gnu/xmlto +make -j$(nproc) +make install +``` + +``` cfg *** run deps *** +libxslt +``` diff --git a/assets/var/gnu/xproto.md b/assets/var/gnu/xproto.md new file mode 100644 index 0000000..dfaa444 --- /dev/null +++ b/assets/var/gnu/xproto.md @@ -0,0 +1,11 @@ +xproto 2025.1 += +https://www.x.org/releases/individual/proto/xorgproto-2025.1.tar.xz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/xproto --buildtype=release .. +ninja +ninja install +``` diff --git a/assets/var/gnu/xtrans.md b/assets/var/gnu/xtrans.md new file mode 100644 index 0000000..e1ef3cd --- /dev/null +++ b/assets/var/gnu/xtrans.md @@ -0,0 +1,9 @@ +xtrans += +https://www.x.org/releases/individual/lib/xtrans-1.6.0.tar.xz + +``` sh *** build *** +./configure --prefix=/pkg/gnu/xtrans +make -j$(nproc) +make install +``` diff --git a/assets/var/gnu/xxhash.md b/assets/var/gnu/xxhash.md index 8cb0e0e..95225e9 100644 --- a/assets/var/gnu/xxhash.md +++ b/assets/var/gnu/xxhash.md @@ -3,5 +3,6 @@ xxhash 0.8.3 https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.3.tar.gz ``` sh *** build *** -make CC=gcc -j$(nproc) && make PREFIX=/pkg/gnu/xxhash install +make CC=gcc -j$(nproc) +make PREFIX=/pkg/gnu/xxhash install ``` diff --git a/assets/var/gnu/xz.md b/assets/var/gnu/xz.md index ea91684..4d2ae6a 100644 --- a/assets/var/gnu/xz.md +++ b/assets/var/gnu/xz.md @@ -3,5 +3,7 @@ xz 5.6.4 https://github.com/tukaani-project/xz/releases/download/v5.6.4/xz-5.6.4.tar.xz ``` sh *** build *** -./configure --prefix=/pkg/gnu/xz && make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/xz +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/zip.md b/assets/var/gnu/zip.md new file mode 100644 index 0000000..dbe69c4 --- /dev/null +++ b/assets/var/gnu/zip.md @@ -0,0 +1,12 @@ +zip 3.0 += +https://downloads.sourceforge.net/infozip/zip30.tar.gz + +``` sh *** patch *** +sed -e "s|generic CC=gcc CPP=\"gcc -E\"|zips CC=$CC CPP=\"$CPP -E\" CFLAGS=\"-DLARGE_FILE_SUPPORT $CFLAGS \${CFLAGS_NOOPT}\" LFLAGS2=\"$LDFLAGS\"|g" -i unix/Makefile +``` + +``` sh *** build *** +make -f unix/Makefile generic_gcc +make prefix=/pkg/gnu/zip -f unix/Makefile install +``` diff --git a/assets/var/gnu/zlib.md b/assets/var/gnu/zlib.md index eed17fa..78fb534 100644 --- a/assets/var/gnu/zlib.md +++ b/assets/var/gnu/zlib.md @@ -3,7 +3,7 @@ zlib 1.3.1 https://zlib.net/zlib-1.3.1.tar.gz ``` sh *** build *** -./configure \ - --prefix=/pkg/gnu/zlib && -make -j$(nproc) && make install +./configure --prefix=/pkg/gnu/zlib +make -j$(nproc) +make install ``` diff --git a/assets/var/gnu/zsh.md b/assets/var/gnu/zsh.md index 70207a8..de6a07c 100644 --- a/assets/var/gnu/zsh.md +++ b/assets/var/gnu/zsh.md @@ -4,14 +4,15 @@ https://github.com/zsh-users/zsh/archive/refs/tags/zsh-5.9.0.2-test.tar.gz ``` sh *** build *** -autoreconf --install && +autoreconf --install ./configure \ --prefix=/pkg/gnu/zsh \ --enable-etcdir=/pkg/gnu/zsh/etc \ --enable-multibyte \ --enable-pcre \ - --enable-cap && -make -j$(nproc) && make install.bin install.modules install.fns + --enable-cap +make -j$(nproc) +make install.bin install.modules install.fns ``` ``` sh *** config *** diff --git a/assets/var/gnu/zstd.md b/assets/var/gnu/zstd.md index b9fbdb9..88dc855 100644 --- a/assets/var/gnu/zstd.md +++ b/assets/var/gnu/zstd.md @@ -3,5 +3,6 @@ zstd 1.5.7 https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz ``` sh *** build *** -make -j$(nproc) && make prefix=/pkg/gnu/zstd install +make -j$(nproc) +make prefix=/pkg/gnu/zstd install ``` diff --git a/assets/var/gnu/zulujdk11.md b/assets/var/gnu/zulujdk11.md new file mode 100644 index 0000000..87668d9 --- /dev/null +++ b/assets/var/gnu/zulujdk11.md @@ -0,0 +1,16 @@ +zulujdk11 11.0.30 += +https://cdn.azul.com/zulu/bin/zulu11.86.21-ca-jdk11.0.30-linux_x64.tar.gz + +``` env *** env *** +disable=true +``` + +``` sh *** build *** +mkdir -p /pkg/gnu/zulujdk11 +cp -rPl bin conf include jmods legal lib man release /pkg/gnu/zulujdk11 +``` + +``` sh *** config *** +rm -f /pkg/gnu/zulujdk11/lib/src.zip +``` diff --git a/assets/var/gnu/zulujdk17.md b/assets/var/gnu/zulujdk17.md new file mode 100644 index 0000000..5d54a36 --- /dev/null +++ b/assets/var/gnu/zulujdk17.md @@ -0,0 +1,16 @@ +zulujdk17 17.0.18 += +https://cdn.azul.com/zulu/bin/zulu17.64.17-ca-jdk17.0.18-linux_x64.tar.gz + +``` env *** env *** +disable=true +``` + +``` sh *** build *** +mkdir -p /pkg/gnu/zulujdk17 +cp -rPl bin conf include jmods legal lib man release /pkg/gnu/zulujdk17 +``` + +``` sh *** config *** +rm -f /pkg/gnu/zulujdk17/lib/src.zip +``` diff --git a/assets/var/gnu/zulujdk21.md b/assets/var/gnu/zulujdk21.md new file mode 100644 index 0000000..8d327da --- /dev/null +++ b/assets/var/gnu/zulujdk21.md @@ -0,0 +1,17 @@ +zulujdk21 21.0.10 += +https://cdn.azul.com/zulu/bin/zulu21.48.17-ca-jdk21.0.10-linux_x64.tar.gz + +``` env *** env *** +disable=true +``` + +``` sh *** build *** +mkdir -p /pkg/gnu/zulujdk21 +cp -rPl bin conf include jmods legal lib man release /pkg/gnu/zulujdk21 +``` + +``` sh *** config *** +rm -f /pkg/gnu/zulujdk21/lib/src.zip +``` + diff --git a/assets/var/gnu/zulujdk25.md b/assets/var/gnu/zulujdk25.md new file mode 100644 index 0000000..52815ca --- /dev/null +++ b/assets/var/gnu/zulujdk25.md @@ -0,0 +1,16 @@ +zulujdk25 25.0.2 += +https://cdn.azul.com/zulu/bin/zulu25.32.21-ca-jdk25.0.2-linux_x64.tar.gz + +``` env *** env *** +disable=true +``` + +``` sh *** build *** +mkdir -p /pkg/gnu/zulujdk25 +cp -rPl bin conf include jmods legal lib man release /pkg/gnu/zulujdk25 +``` + +``` sh *** config *** +rm -f /pkg/gnu/zulujdk25/lib/src.zip +``` diff --git a/assets/var/gnu/zulujdk8.md b/assets/var/gnu/zulujdk8.md new file mode 100644 index 0000000..039487f --- /dev/null +++ b/assets/var/gnu/zulujdk8.md @@ -0,0 +1,12 @@ +zulujdk8 8.0.482 += +https://cdn.azul.com/zulu/bin/zulu8.92.0.21-ca-jdk8.0.482-linux_x64.tar.gz + +``` env *** env *** +disable=true +``` + +``` sh *** build *** +mkdir -p /pkg/gnu/zulujdk8 +cp -rPl bin lib jre include man release /pkg/gnu/zulujdk8 +``` diff --git a/assets/var/nolibc/linux-6.17.md b/assets/var/nolibc/linux-6.17.md deleted file mode 100644 index 899a7ee..0000000 --- a/assets/var/nolibc/linux-6.17.md +++ /dev/null @@ -1,3 +0,0 @@ -linux-6.17 6.17.7 -= - diff --git a/assets/var/trash/docbook.md b/assets/var/trash/docbook.md new file mode 100644 index 0000000..b74f513 --- /dev/null +++ b/assets/var/trash/docbook.md @@ -0,0 +1,7 @@ +docbook 5.2 += +https://github.com/docbook/docbook/archive/refs/tags/5.2.tar.gz + +``` cfg *** deps *** +java +``` diff --git a/assets/var/trash/shared-mime-info.md b/assets/var/trash/shared-mime-info.md new file mode 100644 index 0000000..0506118 --- /dev/null +++ b/assets/var/trash/shared-mime-info.md @@ -0,0 +1,15 @@ +shared-mime-info 2.4 += +https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.4/shared-mime-info-2.4.tar.gz + +``` sh *** build *** +mkdir -p build +cd build +meson setup --prefix=/pkg/gnu/shared-mime-info --buildtype=release .. +ninja +ninja install +``` + +``` cfg *** build deps *** +docbook +``` diff --git a/install.sh b/install.sh index 1967e4e..f069bfe 100755 --- a/install.sh +++ b/install.sh @@ -1,37 +1,36 @@ #!/bin/sh +errors="" +[ -z "$aeropkg_home" ] && errors="${errors}aeropkg_home must be set to build\n" +[ -z "$aeropkg_base" ] && errors="${errors}aeropkg_base must be set to build\n" -if [ -z "$1" ]; then - echo "Ошибка: Укажите путь установки как аргумент." - echo "Пример использования: $0 /pkg/gnu/aeropkg/ /pkg" - exit 1 -fi -if [ -z "$2" ]; then - echo "Ошибка: Укажите базовую директорию как аргумент." - echo "Пример использования: $0 /pkg/gnu/aeropkg/ /pkg" +if [ -n "$errors" ]; then + printf "Error:\n$errors" >&2 exit 1 fi - -INSTALL_PATH="$1" -BASE_PATH="$2" +INSTALL_PATH="$aeropkg_home" +BASE_PATH="$aeropkg_base" SCRIPT_DIR=$(dirname "$(readlink -f "$0")") -echo "Установка в '$INSTALL_PATH'..." -AEROPKHG_BASE=$BASE_PATH AEROPKG_HOME=$INSTALL_PATH cargo install --path . --root "$INSTALL_PATH" -patchelf --set-interpreter /pkg/gnu/glibc/lib/ld-linux-x86-64.so.2 /pkg/gnu/aeropkg/bin/pkg -if [ $? -ne 0 ]; then - echo "Ошибка при установке." +cargo build --release +mkdir -p "$SCRIPT_DIR/target/release/bin" +cp -f "$SCRIPT_DIR/target/release/pkg" "$SCRIPT_DIR/target/release/bin" + +echo "Installing to '$INSTALL_PATH'..." +rsync -a --delete "$SCRIPT_DIR/assets/" "$SCRIPT_DIR/target/release/bin" "$INSTALL_PATH/" + +BIN_PATH="$INSTALL_PATH/bin/pkg" +if [ -f "$BIN_PATH" ]; then + patchelf --set-interpreter /pkg/gnu/glibc/lib/ld-linux-x86-64.so.2 "$BIN_PATH" + if [ $? -ne 0 ]; then + echo "Error: Failed to apply patchelf to '$BIN_PATH'." + exit 1 + fi +else + echo "Error: Executable '$BIN_PATH' not found after installation." exit 1 fi -ASSETS_DIR="$SCRIPT_DIR/assets" -if [ -d "$ASSETS_DIR" ]; then - echo "Копирование файлов из '$ASSETS_DIR' в '$INSTALL_PATH'..." - cp -r "$ASSETS_DIR"/* "$INSTALL_PATH" -else - echo "Предупреждение: Директория '$ASSETS_DIR' не найдена. Пропуск копирования." -fi - -echo "Проект успешно установлен в '$INSTALL_PATH'" -echo "Базовая директория - '$BASE_PATH'" +echo "Project successfully installed to '$INSTALL_PATH'" +echo "Base directory: '$BASE_PATH'" diff --git a/src/commands/delete.rs b/src/commands/delete.rs index 85f8fd3..9b6804e 100644 --- a/src/commands/delete.rs +++ b/src/commands/delete.rs @@ -3,18 +3,18 @@ use crate::utils::parser; pub fn delete(repo: &String, pkgname: &String) { - super::disable::disable(&repo, &pkgname).unwrap(); - fs::remove_dir_all(super::get_aeropkg_base().join(&repo).join(&pkgname)).unwrap(); + super::disable::disable(repo, pkgname); + fs::remove_dir_all(super::get_aeropkg_base().join(repo).join(pkgname)).unwrap() } pub fn delete_recursive(repo: &String, pkgname: &String) { - let pkg_dir = super::get_aeropkg_base().join(repo).join(pkgname); + let pkg_dir = &super::get_aeropkg_base().join(repo).join(pkgname); if pkg_dir.exists() { - let var_path = super::get_var_path(); - let pkg_md_path = var_path.join(format!("{}/{}.md", repo, pkgname)); + let var_path = super::get_aeropkg_var(); + let pkg_md_path = &var_path.join(format!("{}/{}.md", repo, pkgname)); - match parser::get_build_deps(&pkg_md_path) { + match parser::get_build_deps(pkg_md_path) { Ok(deps) => { for dependency in deps.lines() { let dependency = dependency.trim(); @@ -33,9 +33,8 @@ pub fn delete_recursive(repo: &String, pkgname: &String) { } } - fs::remove_dir_all(&pkg_dir).unwrap(); - + fs::remove_dir_all(pkg_dir).unwrap() } else { - eprintln!("{} not installed in {}", pkgname, repo) + println!("{} not installed in {}", pkgname, repo) } } diff --git a/src/commands/disable.rs b/src/commands/disable.rs index cfb617a..aeb581f 100644 --- a/src/commands/disable.rs +++ b/src/commands/disable.rs @@ -1,14 +1,13 @@ use std::fs; -use crate::utils::fs::deletecopy::deletecopy; +use crate::utils::fs::removelink::removelink; use crate::utils::shell::*; -pub fn disable(repo: &String, pkgname: &String) -> Result<(), String> { - let source = crate::commands::get_aeropkg_base().join(repo).join(pkgname); - - if source.join("disabled").exists() { return Ok(()) }; +pub fn disable(repo: &String, pkgname: &String) { + let source = &crate::commands::get_aeropkg_base().join(repo).join(pkgname); + if source.join("disabled").exists() { return }; - let destination = source.parent() - .ok_or("Failed to get parent directory for path")? + let destination = &source.parent() + .ok_or("Failed to get parent directory for path").unwrap() .to_path_buf(); let dirs_to_copy = vec![ @@ -20,18 +19,14 @@ pub fn disable(repo: &String, pkgname: &String) -> Result<(), String> { ]; for base_system_folder_dir in dirs_to_copy { - let src = source.join(base_system_folder_dir); - let dest = destination.join(base_system_folder_dir); + let src = &source.join(base_system_folder_dir); + let dest = &destination.join(base_system_folder_dir); - if src.exists() { - deletecopy(&src, &dest) - .map_err(|e| format!("Failed to delete copy {} to {}: {}", src.display(), dest.display(), e))?; - } + if src.exists() { removelink(src, dest).map_err(|e| format!("Failed to remove link {} to {}: {}", src.display(), dest.display(), e)).unwrap() } } - mount_overlay(&destination)?; - shell_update()?; + mount_overlay(); + shell_update(); - fs::File::create(&source.join("disabled")).ok(); - Ok(()) + fs::File::create(source.join("disabled")).ok(); } diff --git a/src/commands/enable.rs b/src/commands/enable.rs index 423facb..0109fbd 100644 --- a/src/commands/enable.rs +++ b/src/commands/enable.rs @@ -1,10 +1,9 @@ use std::fs; use super::link::link; -pub fn enable(repo: &String, pkgname: &String) -> Result<(), String> { - let source = crate::commands::get_aeropkg_base().join(repo).join(pkgname); - let _ = fs::remove_file(&source.join("disabled")); +pub fn enable(repo: &String, pkgname: &String) { + let source = &crate::commands::get_aeropkg_base().join(repo).join(pkgname); + let _ = fs::remove_file(source.join("disabled")); - link(&repo, &pkgname)?; - Ok(()) + link(repo, pkgname) } diff --git a/src/commands/install.rs b/src/commands/install.rs index 7fecad1..956a44a 100644 --- a/src/commands/install.rs +++ b/src/commands/install.rs @@ -1,5 +1,6 @@ use std::path::Path; -use std::process; +use std::fs; +use std::os::unix::fs::MetadataExt; use crate::utils::parser::{self, pkginfo}; use super::run::download::download; @@ -8,63 +9,56 @@ use super::run::build::build; use super::run::config::config; -pub fn install(repo: &String, pkgname: &String) -> Result<(), bool> { - let pkg_md_path = crate::commands::get_var_path().join(format!("{}/{}.md", &repo, &pkgname)); +pub fn install(repo: &String, pkgname: &String) { + let pkg_md_path = &crate::commands::get_aeropkg_var().join(format!("{}/{}.md", repo, pkgname)); + let builded_pkg_md_path = crate::commands::get_aeropkg_base().join(repo).join(pkgname).join("build-script.md"); + if builded_pkg_md_path.exists() { + if fs::metadata(builded_pkg_md_path).unwrap().ino() == fs::metadata(pkg_md_path).unwrap().ino() { return } + } - check_build_dependency(&repo, &pkg_md_path)?; - check_run_dependency(&pkg_md_path)?; - download(&repo, &pkgname)?; - patch(&repo, &pkgname)?; - build(&repo, &pkgname)?; - config(&repo, &pkgname)?; - - println!("Package {} installed successfully from repo {}", pkgname, repo); - Ok(()) + check_build_dependency(repo, pkg_md_path); + check_run_dependency(pkg_md_path); + download(repo, pkgname); + patch(repo, pkgname); + build(repo, pkgname); + config(repo, pkgname); } -fn check_build_dependency(repo: &String, pkg_md_path: &Path) -> Result<(), bool> { - let deps = match parser::get_build_deps(&pkg_md_path) { +fn check_build_dependency(repo: &String, pkg_md_path: &Path) { + let deps = match parser::get_build_deps(pkg_md_path) { Ok(deps) => deps, - Err(_) => { return Ok(()) } + Err(_) => { return } }; for dependency in deps.lines() { if !dependency.trim().is_empty() { if !super::get_aeropkg_base().join(repo).join(dependency).exists() { - match install(repo, &dependency.to_string()) { - Ok(()) => {} - Err(_) => {process::exit(1) } - } + install(repo, &dependency.to_string()) } } } - - Ok(()) } -fn check_run_dependency(pkg_md_path: &Path) -> Result<(), bool> { +fn check_run_dependency(pkg_md_path: &Path) { let deps = match parser::get_run_deps(pkg_md_path) { Ok(deps) => deps, - Err(_) => { return Ok(()) } + Err(_) => { return } }; - let repo_list = parser::repoinfo::get_repo_list(); + let repo_list = &parser::repoinfo::get_repo_list(); for pkgname in deps.split_whitespace() { let mut found = false; - for repo_name in &repo_list { + for repo_name in repo_list { let path = super::get_aeropkg_base().join(repo_name).join(pkgname); if path.exists() { - found = true; - break; + found = true; break } } if !found { - install(&pkginfo::get_priority_repo(pkgname.to_string()), &pkgname.to_string()); + install(&pkginfo::get_priority_repo(&pkgname.to_string()), &pkgname.to_string()) } } - - Ok(()) } diff --git a/src/commands/link.rs b/src/commands/link.rs index a8814dc..c2e2cde 100644 --- a/src/commands/link.rs +++ b/src/commands/link.rs @@ -1,12 +1,12 @@ use crate::utils::fs::hardcopy::hardcopy_handler; use crate::utils::shell::*; -pub fn link(repo: &String, pkgname: &String) -> Result<(), String> { +pub fn link(repo: &String, pkgname: &String) { let source = crate::commands::get_aeropkg_base().join(repo).join(pkgname); - if source.join("disabled").exists() { println!("Can't link disabled package: {}", &pkgname); return Ok(()) } + if source.join("disabled").exists() { println!("Disabled package, no linking: {}\nUse `pkg enable {}` to link", pkgname, pkgname); return } let destination = source.parent() - .ok_or("Failed to get parent directory for path")? + .ok_or("Failed to get parent directory for path").unwrap() .to_path_buf(); let dirs_to_copy = vec![ @@ -24,12 +24,10 @@ pub fn link(repo: &String, pkgname: &String) -> Result<(), String> { if src.exists() { hardcopy_handler(&src, &dest) - .map_err(|e| format!("Failed to copy {} to {}: {}", src.display(), dest.display(), e))?; + .map_err(|e| format!("Failed to copy {} to {}: {}", src.display(), dest.display(), e)).unwrap() } } - mount_overlay(&destination)?; - shell_update()?; - - Ok(()) + mount_overlay(); + shell_update() } diff --git a/src/commands/mod.rs b/src/commands/mod.rs index e28e25b..8d5ff23 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -9,18 +9,18 @@ pub mod run; use std::path::PathBuf; -pub fn get_var_path() -> PathBuf { - PathBuf::from(env!("AEROPKG_HOME")).join("var") +pub fn get_aeropkg_var() -> PathBuf { + PathBuf::from(env!("aeropkg_home")).join("var") } -pub fn get_etc_path() -> PathBuf { - PathBuf::from(env!("AEROPKG_HOME")).join("etc") +pub fn get_aeropkg_etc() -> PathBuf { + PathBuf::from(env!("aeropkg_home")).join("etc") } pub fn get_aeropkg_home() -> PathBuf { - PathBuf::from(env!("AEROPKG_HOME")) + PathBuf::from(env!("aeropkg_home")) } pub fn get_aeropkg_base() -> PathBuf { - PathBuf::from(env!("AEROPKG_BASE")) + PathBuf::from(env!("aeropkg_base")) } diff --git a/src/commands/run/build.rs b/src/commands/run/build.rs index 1ab9e7b..5c22d9e 100644 --- a/src/commands/run/build.rs +++ b/src/commands/run/build.rs @@ -1,5 +1,4 @@ use std::fs; -use std::os::unix::fs::MetadataExt; use crate::utils::parser::{self, env::get_install_env}; use crate::utils::shell::{run_install_script,run_install_script_hook}; @@ -8,81 +7,67 @@ use super::download::download; use super::patch::patch; -pub fn build( - repo: &String, - pkgname: &String, -) -> Result<(), bool> { - let src_dir = &crate::commands::get_aeropkg_base().join("src").join(&pkgname); - let pkg_md_path = &crate::commands::get_var_path().join(format!("{}/{}.md", &repo, &pkgname)); - - let builded_pkg_md_path = crate::commands::get_aeropkg_base().join(&repo).join(&pkgname).join("build-script.md"); - if builded_pkg_md_path.exists() { - if fs::metadata(&builded_pkg_md_path).unwrap().ino() == fs::metadata(&pkg_md_path).unwrap().ino() { - println!("package {} already installed in {} repo", &pkgname, &repo); - return Ok(()) - } - } - +pub fn build(repo: &String, pkgname: &String) { + let src_dir = &crate::commands::get_aeropkg_base().join("src").join(pkgname); + let pkg_md_path = &crate::commands::get_aeropkg_var().join(format!("{}/{}.md", repo, pkgname)); + let builded_pkg_md_path = &crate::commands::get_aeropkg_base().join(repo).join(pkgname).join("build-script.md"); let build_script = match parser::get_build_script(pkg_md_path) { Ok(script) => script, Err(error) => { - eprintln!("Failed to parse build script: {}", error); - return Err(false); + panic!("Failed to parse build script: {}", error); } }; + if builded_pkg_md_path.exists() { + let builded_script = match parser::get_build_script(builded_pkg_md_path) { + Ok(script) => script, + Err(error) => { + panic!("Failed to parse build block from {}: {}", builded_pkg_md_path.to_string_lossy(), error); + } + }; + if build_script == builded_script { return } + } if src_dir.join("aeropkg.applied-build").exists() { let src_build = fs::read_to_string(src_dir.join("aeropkg.applied-build")).unwrap_or("".to_string()); if build_script == src_build { - return Ok(()) + return } else { - println!("build:\n{}\nend build", build_script); - println!("src build:\n{}\nend src build", src_build); fs::remove_dir_all(src_dir).unwrap(); - download(&repo, &pkgname)?; - patch(&repo, &pkgname)?; + download(repo, pkgname); + patch(repo, pkgname) } } let full_env = get_install_env(repo, pkgname, pkg_md_path, "build"); - run_install_script(&build_script, src_dir, &full_env)?; - run_install_script_hook(repo, "build", &full_env)?; + run_install_script(&build_script, src_dir, &full_env); + run_install_script_hook(repo, "build", &full_env); let dest_dir = crate::commands::get_aeropkg_base().join(repo).join(pkgname); - if let Err(e) = fs::create_dir_all(&dest_dir) { - eprintln!("Failed to create destination directory: {}", e); - return Err(false); - } - let dest_path = dest_dir.join("build-script.md"); - fs::remove_file(&dest_path).ok(); - if let Err(e) = fs::hard_link(pkg_md_path, &dest_path) { - eprintln!("Failed to copy build script to destination: {}", e); - return Err(false); - } + if let Err(e) = fs::create_dir_all(&dest_dir) { panic!("Failed to create destination directory: {}", e) } + let dest_path = &dest_dir.join("build-script.md"); + fs::remove_file(dest_path).ok(); + if let Err(e) = fs::hard_link(pkg_md_path, dest_path) { panic!("Failed to copy build script to destination: {}", e) } fs::write(src_dir.join("aeropkg.build-script"), &build_script).unwrap(); + + let save_source_flag = full_env.get("save_source").map_or(false, |v| v == "true"); + if !save_source_flag { + if let Err(e) = fs::remove_dir_all(&src_dir) { panic!("Failed to remove source directory: {}", e) } + } + + hook(repo, pkgname); + let link_flag = full_env.get("disable").map_or(true, |v| v != "true"); if !link_flag { let _ = fs::File::create(crate::commands::get_aeropkg_base().join(repo).join(pkgname).join("disabled")); } - link(&repo, &pkgname).expect("Failed link package"); - - let save_source_flag = full_env.get("save_source").map_or(false, |v| v == "true"); - if !save_source_flag { - if let Err(e) = fs::remove_dir_all(&src_dir) { - eprintln!("Failed to remove source directory: {}", e); - return Err(false); - } - } - - hook(&repo, &pkgname); - Ok(()) + link(repo, pkgname) } fn hook(repo: &String, pkgname: &String) { - let pkg_dir = crate::commands::get_aeropkg_base().join(&repo).join(&pkgname); + let pkg_dir = crate::commands::get_aeropkg_base().join(repo).join(pkgname); let lib_dir = &pkg_dir.join("lib"); let lib64_dir = &pkg_dir.join("lib64"); let lib32_dir = &pkg_dir.join("lib32"); diff --git a/src/commands/run/config.rs b/src/commands/run/config.rs index 4fbc34d..84a43ed 100644 --- a/src/commands/run/config.rs +++ b/src/commands/run/config.rs @@ -3,23 +3,18 @@ use crate::utils::parser::{self, env::get_install_env}; use crate::utils::shell::{run_install_script,run_install_script_hook}; -pub fn config( - repo: &String, - pkgname: &String -) -> Result<(), bool> { - let src_dir = &crate::commands::get_aeropkg_base().join("src").join(&pkgname); - let pkg_md_path = &crate::commands::get_var_path().join(format!("{}/{}.md", &repo, &pkgname)); +pub fn config(repo: &String, pkgname: &String) { + let src_dir = &crate::commands::get_aeropkg_base().join("src").join(pkgname); + let pkg_md_path = &crate::commands::get_aeropkg_var().join(format!("{}/{}.md", repo, pkgname)); let config_script = match parser::get_config_script(pkg_md_path) { Ok(script) => script, - Err(_) => { return Ok(()) } + Err(_) => { return } }; let full_env = get_install_env(repo, pkgname, pkg_md_path, "config"); - run_install_script(&config_script, src_dir, &full_env)?; - run_install_script_hook(repo, "config", &full_env)?; + run_install_script(&config_script, src_dir, &full_env); + run_install_script_hook(repo, "config", &full_env); - link(&repo, &pkgname).expect("Failed link package"); - - Ok(()) + link(repo, pkgname) } diff --git a/src/commands/run/custom.rs b/src/commands/run/custom.rs index 635cd4d..9fca199 100644 --- a/src/commands/run/custom.rs +++ b/src/commands/run/custom.rs @@ -2,14 +2,11 @@ use crate::utils::parser::{self, env::get_custom_env}; use crate::utils::shell::run_install_script; -pub fn custom(scriptname: &String, repo: &String, pkgname: &String) -> Result<(), bool> { +pub fn custom(scriptname: &String, repo: &String, pkgname: &String) { let src_dir = &crate::commands::get_aeropkg_base().join("src").join(&pkgname); - let pkg_md_path = &crate::commands::get_var_path().join(format!("{}/{}.md", &repo, &pkgname)); + let pkg_md_path = &crate::commands::get_aeropkg_var().join(format!("{}/{}.md", repo, pkgname)); - let config_script = parser::get_custom_script(pkg_md_path, scriptname); - - let env = get_custom_env(repo, pkgname, pkg_md_path); - run_install_script(&config_script, src_dir, &env)?; - - Ok(()) + let config_script = &parser::get_custom_script(pkg_md_path, scriptname); + let env = &get_custom_env(repo, pkgname, pkg_md_path); + run_install_script(config_script, src_dir, env) } diff --git a/src/commands/run/download.rs b/src/commands/run/download.rs index 2eef77d..2c05572 100644 --- a/src/commands/run/download.rs +++ b/src/commands/run/download.rs @@ -5,35 +5,81 @@ use std::process::{Command, Stdio}; use crate::utils::parser::{self, env::get_install_env}; use crate::utils::shell::run_install_script_hook; -pub fn download(repo: &String, pkgname: &String) -> Result<(), bool> { - let pkg_md_path = &crate::commands::get_var_path().join(format!("{}/{}.md", &repo, &pkgname)); - if !pkg_md_path.exists() { upload_from_repo(&repo, &pkgname, &pkg_md_path)? } +pub fn download(repo: &String, pkgname: &String) { + let pkg_md_path = &crate::commands::get_aeropkg_var().join(format!("{}/{}.md", repo, pkgname)); + if !pkg_md_path.exists() { upload_from_repo(repo, pkgname, pkg_md_path) } let full_env = get_install_env(repo, pkgname, pkg_md_path, "download"); let url = match parser::pkginfo::get_url(pkg_md_path) { Ok(url) => url, Err(e) => { - eprintln!("Failed to parse URL: {}", e); - return Err(false); + panic!("Failed to parse URL: {}", e) } }; let src = crate::commands::get_aeropkg_base().join("src").join(pkgname); if src.exists() { let src_url = fs::read_to_string(src.join("aeropkg.download-url")).unwrap_or("".to_string()); - if url == src_url { - return Ok(()) - } else { - fs::remove_dir_all(&src).unwrap(); + if url == src_url { return } + else { + fs::remove_dir_all(&src).unwrap() } } + if url.ends_with(".git") || url.starts_with("git://") { + let git_status = Command::new("git") + .arg("clone") + .arg(&url) + .arg(&src) + .status(); - if !url.ends_with(".git") { + if git_status.is_err() || !git_status.unwrap().success() { + panic!("Failed to clone git repository from URL: {}", url) + } + } + else if url.is_empty() { return } + else if url.ends_with(".zip") { if let Err(e) = fs::create_dir_all(&src) { - eprintln!("Failed to create directory {}: {}", &src.display(), e); - return Err(false); + panic!("Failed to create directory {}: {}", &src.display(), e) + } + + let zip_path = src.join("archive.zip"); + let wget_status = Command::new("wget") + .arg("-O") + .arg(&zip_path) + .arg("-q") + .arg("--show-progress") + .arg(&url) + .envs(&full_env) + .status(); + + if wget_status.is_err() || !wget_status.unwrap().success() { + panic!("Failed to download zip archive from URL: {}", url) + } + + let output_flag = format!("-o{}", src.display()); + let sevenz_status = Command::new("7z") + .arg("x") + .arg(&zip_path) + .arg(output_flag) + .arg("-y") + .arg("-bd") + .arg("-bso0") + .arg("-bse0") + .arg("-bsp0") + .envs(&full_env) + .status(); + + if sevenz_status.is_err() || !sevenz_status.unwrap().success() { + panic!("Failed to extract zip archive from URL: {}", url) + } + + fs::remove_file(&zip_path).ok(); + } + else { + if let Err(e) = fs::create_dir_all(&src) { + panic!("Failed to create directory {}: {}", &src.display(), e) } let compress_flag = if url.ends_with(".bz2") { "--bzip2" @@ -50,8 +96,7 @@ pub fn download(repo: &String, pkgname: &String) -> Result<(), bool> { } else if url.ends_with(".gz") { "--gzip" } else { - eprintln!("Unsupported compression format for URL: {}", url); - return Err(false); + panic!("Unsupported compression format for URL: {}", url) }; let wget_output = Command::new("wget") @@ -65,10 +110,7 @@ pub fn download(repo: &String, pkgname: &String) -> Result<(), bool> { let tar_input = match wget_output { Ok(child) => child.stdout.unwrap(), - Err(e) => { - eprintln!("Failed to execute wget: {}", e); - return Err(false); - } + Err(e) => { panic!("Failed to execute wget: {}", e) } }; let tar_status = Command::new("tar") @@ -81,8 +123,7 @@ pub fn download(repo: &String, pkgname: &String) -> Result<(), bool> { .status(); if tar_status.is_err() || !tar_status.unwrap().success() { - eprintln!("Failed to extract archive from URL: {}", url); - return Err(false); + panic!("Failed to extract archive from URL: {}", url) } let entries = fs::read_dir(&src).unwrap(); @@ -100,29 +141,16 @@ pub fn download(repo: &String, pkgname: &String) -> Result<(), bool> { fs::rename(entry.path(), dest).unwrap(); } - fs::remove_dir(single_dir).unwrap(); - } - } else { - let git_status = Command::new("git") - .arg("clone") - .arg(&url) - .arg(&src) - .status(); - - if git_status.is_err() || !git_status.unwrap().success() { - eprintln!("Failed to clone git repository from URL: {}", url); - return Err(false); + fs::remove_dir(single_dir).unwrap() } } fs::write(src.join("aeropkg.download-url"), &url).unwrap(); - run_install_script_hook(repo, "download", &full_env)?; - - Ok(()) + run_install_script_hook(repo, "download", &full_env) } -fn upload_from_repo(repo: &String, pkgname: &String, pkg_md_path: &Path) -> Result<(), bool> { +fn upload_from_repo(repo: &String, pkgname: &String, pkg_md_path: &Path) { let repo_addr = parser::repoinfo::get_repo_addr(repo); let rsync_command = format!( "rsync --include='{}.md' --exclude='*' {} {}", @@ -137,13 +165,9 @@ fn upload_from_repo(repo: &String, pkgname: &String, pkg_md_path: &Path) -> Resu .expect("Failed to execute rsync"); if !rsync_output.status.success() { - eprintln!("broken repo: {}", repo); - return Err(false); + panic!("broken repo: {}", repo) } if !pkg_md_path.exists() { - eprintln!("not found {} in {} repo", pkgname, repo); - return Err(true); + panic!("not found {} in {} repo", pkgname, repo) } - - Ok(()) } diff --git a/src/commands/run/patch.rs b/src/commands/run/patch.rs index 3217a2c..4145af3 100644 --- a/src/commands/run/patch.rs +++ b/src/commands/run/patch.rs @@ -4,29 +4,22 @@ use crate::utils::parser::{self, env::get_install_env}; use crate::utils::shell::{run_install_script,run_install_script_hook}; use super::download::download; -pub fn patch( - repo: &String, - pkgname: &String, -) -> Result<(), bool> { - let src_dir = &crate::commands::get_aeropkg_base().join("src").join(&pkgname); - let pkg_md_path = &crate::commands::get_var_path().join(format!("{}/{}.md", &repo, &pkgname)); +pub fn patch(repo: &String, pkgname: &String) { + let src_dir = &crate::commands::get_aeropkg_base().join("src").join(pkgname); + let pkg_md_path = &crate::commands::get_aeropkg_var().join(format!("{}/{}.md", repo, pkgname)); let patch_script = &parser::get_patch_script(pkg_md_path).unwrap_or("".to_string()); if src_dir.join("aeropkg.applied-patch").exists() { let src_patch = &fs::read_to_string(src_dir.join("aeropkg.applied-patch")).unwrap_or("".to_string()); - if patch_script == src_patch { - return Ok(()) - } else { + if patch_script == src_patch { return } + else if src_patch != "" { fs::remove_dir_all(src_dir).unwrap(); - download(&repo, &pkgname)?; + download(repo, pkgname) } } - if patch_script == "" { return Ok(()) } let full_env = get_install_env(repo, pkgname, pkg_md_path, "patch"); - run_install_script(patch_script, src_dir, &full_env)?; - run_install_script_hook(repo, "patch", &full_env)?; - fs::write(src_dir.join("aeropkg.applied-patch"), &patch_script).unwrap(); - - Ok(()) + run_install_script(patch_script, src_dir, &full_env); + run_install_script_hook(repo, "patch", &full_env); + fs::write(src_dir.join("aeropkg.applied-patch"), &patch_script).unwrap() } diff --git a/src/commands/run/run.rs b/src/commands/run/run.rs index b99f7d7..35e367b 100644 --- a/src/commands/run/run.rs +++ b/src/commands/run/run.rs @@ -2,13 +2,13 @@ use super::download::download; use super::patch::patch; use super::build::build; use super::config::config; +use super::custom::custom; -pub fn run(script: &String, repo: &String, pkgname: &String) -> Result<(), bool> { - if script == "download" { download(&repo, &pkgname)?; return Ok(()) } - if script == "patch" { patch(&repo, &pkgname)?; return Ok(()) } - if script == "build" { build(&repo, &pkgname)?; return Ok(()) } - if script == "config" { config(&repo, &pkgname)?; return Ok(()) } - - Ok(()) +pub fn run(script: &String, repo: &String, pkgname: &String) { + if script == "download" { download(repo, pkgname) } + else if script == "patch" { patch(repo, pkgname) } + else if script == "build" { build(repo, pkgname) } + else if script == "config" { config(repo, pkgname) } + else { custom(script, repo, pkgname) } } diff --git a/src/commands/trim.rs b/src/commands/trim.rs index 38e7580..2fe7043 100644 --- a/src/commands/trim.rs +++ b/src/commands/trim.rs @@ -4,23 +4,30 @@ use std::os::unix::fs::MetadataExt; use glob::Pattern; +pub fn trim_handler(repo: &String, trim_date: i64) { + let etc_path = super::get_aeropkg_etc(); + let cfg_path = etc_path.join("aeropkg.md"); + let rules = &crate::utils::parser::get_trim_rules(&cfg_path).unwrap(); + let pkg_dir = &super::get_aeropkg_base().join(repo); -fn trim(repo: &String, path: &Path, trim_date: i64, rules: &String) -> Result<(), std::io::Error> { - let metadata = fs::symlink_metadata(path)?; + trim(repo, pkg_dir, trim_date, rules) +} + +fn trim(repo: &String, path: &Path, trim_date: i64, rules: &String) { + let metadata = fs::symlink_metadata(path).unwrap(); if metadata.is_dir() { if rules_check(repo, path, rules) { - for entry in fs::read_dir(path)? { - let entry = entry?; - let entry_path = entry.path(); - trim(repo, &entry_path, trim_date, rules)?; + for entry in fs::read_dir(path).unwrap() { + let entry_path = &entry.unwrap().path(); + trim(repo, entry_path, trim_date, rules) } } } else if metadata.is_file() { if rules_check(repo, path, rules) { let atime = metadata.atime(); if atime < trim_date { - fs::remove_file(path)?; + if let Err(e) = fs::remove_file(path) { panic!("Failed to remove file: {}", e) } } } } else if metadata.file_type().is_symlink() { @@ -28,26 +35,12 @@ fn trim(repo: &String, path: &Path, trim_date: i64, rules: &String) -> Result<( let symlink_path = if symlink_value.is_relative() { path.parent().unwrap().join(&symlink_value) } else { symlink_value }; if !symlink_path.exists() { println!("remove symlink: {} {}", path.display(), symlink_path.display()); - fs::remove_file(path)?; + fs::remove_file(path).unwrap(); } } } - - Ok(()) } -pub fn trim_handler(repo: &String, trim_date: i64) { - let etc_path = super::get_etc_path(); - let cfg_path = etc_path.join("aeropkg.md"); - - let rules = crate::utils::parser::get_trim_rules(&cfg_path).unwrap(); - - let pkg_dir = super::get_aeropkg_base().join(repo); - - trim(repo, &pkg_dir, trim_date, &rules).unwrap(); -} - - fn rules_check(repo: &String, path: &Path, rules: &String) -> bool { let mut confirm = true; @@ -60,16 +53,16 @@ fn rules_check(repo: &String, path: &Path, rules: &String) -> bool { } let wildcard_string = if rule.starts_with('/') { - rule.to_string() + &rule.to_string() } else { - super::get_aeropkg_base().join(repo).join(rule).to_string_lossy().into_owned() + &super::get_aeropkg_base().join(repo).join(rule).to_string_lossy().into_owned() }; let path_str = path.to_str().unwrap_or(""); - if let Ok(pattern) = Pattern::new(&wildcard_string) { + if let Ok(pattern) = Pattern::new(wildcard_string) { if pattern.matches(path_str) { - confirm = !invert; + confirm = !invert } } } diff --git a/src/main.rs b/src/main.rs index 33b73bc..04a00ce 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,14 @@ mod commands; mod utils; fn main() { + #[cfg(not(debug_assertions))] + { + std::panic::set_hook(Box::new(|info| { + eprintln!("{}", info); + std::process::exit(1); + })); + } + for (key, value) in utils::parser::env::get_global_env() { unsafe { std::env::set_var(key, value) } } diff --git a/src/utils/command_handler/delete.rs b/src/utils/command_handler/delete.rs index b816e9d..f9dc8b7 100644 --- a/src/utils/command_handler/delete.rs +++ b/src/utils/command_handler/delete.rs @@ -1,36 +1,57 @@ use crate::commands; +use crate::utils::parser::pkginfo; + pub fn delete(matches: &clap::ArgMatches) { - let repo = matches.get_one::("repo").unwrap(); - let pkgname = matches.get_one::("pkgname").unwrap(); + let pkg_names: Vec<&str> = matches + .get_many::("pkgname") + .expect("At least one package name is required") + .map(|s| s.as_str()) + .collect(); + + let repo = matches.get_one::("repo").map(|s| s.as_str()); let recursive = matches.get_flag("recursive"); - if recursive { - commands::delete::delete_recursive(repo, pkgname); - } else { - commands::delete::delete(repo, pkgname); + + for pkgname in pkg_names { + let resolved_repo = if let Some(explicit_repo) = repo { + &explicit_repo.to_string() + } else { + &pkginfo::get_priority_repo_installed(&pkgname.to_string()) + }; + + if recursive { + commands::delete::delete_recursive(resolved_repo, &pkgname.to_string()) + } else { + commands::delete::delete(resolved_repo, &pkgname.to_string()) + } } } - pub fn command() -> clap::Command { clap::Command::new("delete") - .about("Delete a package from a repository") + .about("Delete package") .arg( clap::Arg::new("repo") - .help("Repository name") - .required(true), + .long("repo") + .short('r') + .help("Specify the repository to delete the package(s) from (applies to all packages)") + .value_name("REPO") + .num_args(1) ) .arg( clap::Arg::new("pkgname") - .help("Package name") - .required(true), + .help("Name(s) of the package(s) to delete") + .required(true) + .value_name("PKGNAME") + .action(clap::ArgAction::Append) ) .arg( clap::Arg::new("recursive") .short('R') .long("recursive") .help("Recursively delete the package") - .action(clap::ArgAction::SetTrue), + .action(clap::ArgAction::SetTrue) ) + } diff --git a/src/utils/command_handler/disable.rs b/src/utils/command_handler/disable.rs index 206cabf..9d0abf2 100644 --- a/src/utils/command_handler/disable.rs +++ b/src/utils/command_handler/disable.rs @@ -1,29 +1,45 @@ use crate::commands; +use crate::utils::parser::pkginfo; + pub fn disable(matches: &clap::ArgMatches) { - let repo = matches.get_one::("repo").unwrap(); - let pkgname = matches.get_one::("pkgname").unwrap(); + let pkg_names: Vec<&str> = matches + .get_many::("pkgname") + .expect("At least one package name is required") + .map(|s| s.as_str()) + .collect(); - match commands::disable::disable(&repo, &pkgname) { - Ok(_) => println!("disable completed successfully."), - Err(e) => eprintln!("Error during disable: {}", e), + let repo = matches.get_one::("repo").map(|s| s.as_str()); + + for pkgname in pkg_names { + let resolved_repo = if let Some(explicit_repo) = repo { + &explicit_repo.to_string() + } else { + &pkginfo::get_priority_repo(&pkgname.to_string()) + }; + + commands::disable::disable(resolved_repo, &pkgname.to_string()); } } - pub fn command() -> clap::Command { clap::Command::new("disable") .about("Disable package") .arg( clap::Arg::new("repo") - .help("Repository name") - .required(true) - .index(1), + .long("repo") + .short('r') + .help("Specify the repository to install the package(s) from (applies to all packages)") + .value_name("REPO") + .num_args(1) ) .arg( clap::Arg::new("pkgname") - .help("Package name") + .help("Name(s) of the package(s) to install") .required(true) - .index(2), + .value_name("PKGNAME") + .action(clap::ArgAction::Append) ) } + + diff --git a/src/utils/command_handler/enable.rs b/src/utils/command_handler/enable.rs index 4176e28..2ff1557 100644 --- a/src/utils/command_handler/enable.rs +++ b/src/utils/command_handler/enable.rs @@ -1,29 +1,43 @@ use crate::commands; +use crate::utils::parser::pkginfo; + pub fn enable(matches: &clap::ArgMatches) { - let repo = matches.get_one::("repo").unwrap(); - let pkgname = matches.get_one::("pkgname").unwrap(); + let pkg_names: Vec<&str> = matches + .get_many::("pkgname") + .expect("At least one package name is required") + .map(|s| s.as_str()) + .collect(); - match commands::enable::enable(&repo, &pkgname) { - Ok(_) => println!("enable completed successfully."), - Err(e) => eprintln!("Error during enable: {}", e), + let repo = matches.get_one::("repo").map(|s| s.as_str()); + + for pkgname in pkg_names { + let resolved_repo = if let Some(explicit_repo) = repo { + &explicit_repo.to_string() + } else { + &pkginfo::get_priority_repo(&pkgname.to_string()) + }; + + commands::enable::enable(resolved_repo, &pkgname.to_string()); } } - pub fn command() -> clap::Command { clap::Command::new("enable") .about("Enable package") .arg( clap::Arg::new("repo") - .help("Repository name") - .required(true) - .index(1), + .long("repo") + .short('r') + .help("Specify the repository to install the package(s) from (applies to all packages)") + .value_name("REPO") + .num_args(1) ) .arg( clap::Arg::new("pkgname") - .help("Package name") + .help("Name(s) of the package(s) to install") .required(true) - .index(2), + .value_name("PKGNAME") + .action(clap::ArgAction::Append) ) } diff --git a/src/utils/command_handler/install.rs b/src/utils/command_handler/install.rs index d50365f..54bba77 100644 --- a/src/utils/command_handler/install.rs +++ b/src/utils/command_handler/install.rs @@ -1,33 +1,42 @@ use crate::commands; use crate::utils::parser::pkginfo; - pub fn install(matches: &clap::ArgMatches) { - let args: Vec<&String> = matches.get_many::("args").unwrap().collect(); + let pkg_names: Vec<&str> = matches + .get_many::("pkgname") + .expect("At least one package name is required") + .map(|s| s.as_str()) + .collect(); - match args.len() { - 1 => { - let pkgname = args[0]; - commands::install::install(&pkginfo::get_priority_repo(pkgname.to_string()), &pkgname.to_string()); - } - 2 => { - let repo = args[0]; - let pkgname = args[1]; - if let Err(_) = commands::install::install(repo, pkgname) { std::process::exit(1) } - } - _ => unreachable!(), + let repo = matches.get_one::("repo").map(|s| s.as_str()); + + for pkgname in pkg_names { + let resolved_repo = if let Some(explicit_repo) = repo { + &explicit_repo.to_string() + } else { + &pkginfo::get_priority_repo(&pkgname.to_string()) + }; + + commands::install::install(resolved_repo, &pkgname.to_string()); } } - pub fn command() -> clap::Command { clap::Command::new("install") - .about("Install a package") + .about("Install one or more packages") .arg( - clap::Arg::new("args") - .help("Repository and package name (optional repo)") + clap::Arg::new("repo") + .long("repo") + .short('r') + .help("Specify the repository to install the package(s) from (applies to all packages)") + .value_name("REPO") + .num_args(1) + ) + .arg( + clap::Arg::new("pkgname") + .help("Name(s) of the package(s) to install") .required(true) - .num_args(1..=2) - .value_names(["repo", "pkgname"]), + .value_name("PKGNAME") + .action(clap::ArgAction::Append) ) } diff --git a/src/utils/command_handler/link.rs b/src/utils/command_handler/link.rs index 11558eb..0d57fa5 100644 --- a/src/utils/command_handler/link.rs +++ b/src/utils/command_handler/link.rs @@ -1,29 +1,43 @@ use crate::commands; +use crate::utils::parser::pkginfo; + pub fn link(matches: &clap::ArgMatches) { - let repo = matches.get_one::("repo").unwrap(); - let pkgname = matches.get_one::("pkgname").unwrap(); + let pkg_names: Vec<&str> = matches + .get_many::("pkgname") + .expect("At least one package name is required") + .map(|s| s.as_str()) + .collect(); - match commands::link::link(&repo, &pkgname) { - Ok(_) => println!("link completed successfully."), - Err(e) => eprintln!("Error during link: {}", e), + let repo = matches.get_one::("repo").map(|s| s.as_str()); + + for pkgname in pkg_names { + let resolved_repo = if let Some(explicit_repo) = repo { + &explicit_repo.to_string() + } else { + &pkginfo::get_priority_repo_installed(&pkgname.to_string()) + }; + + commands::link::link(resolved_repo, &pkgname.to_string()); } } - pub fn command() -> clap::Command { clap::Command::new("link") - .about("Create package links and mount overlays") - .arg( - clap::Arg::new("repo") - .help("Repository name") - .required(true) - .index(1), - ) - .arg( - clap::Arg::new("pkgname") - .help("Package name") - .required(true) - .index(2), - ) + .about("Create package links and mount overlays") + .arg( + clap::Arg::new("repo") + .long("repo") + .short('r') + .help("Specify the repository to install the package(s) from (applies to all packages)") + .value_name("REPO") + .num_args(1) + ) + .arg( + clap::Arg::new("pkgname") + .help("Name(s) of the package(s) to install") + .required(true) + .value_name("PKGNAME") + .action(clap::ArgAction::Append) + ) } diff --git a/src/utils/command_handler/run.rs b/src/utils/command_handler/run.rs index 6303e37..885628d 100644 --- a/src/utils/command_handler/run.rs +++ b/src/utils/command_handler/run.rs @@ -1,43 +1,53 @@ use crate::commands; use crate::utils::parser::pkginfo; -// pkg run