diff --git a/Readme.md b/Readme.md
index a6e9443..a1b188b 100644
--- a/Readme.md
+++ b/Readme.md
@@ -1,27 +1,123 @@
-## 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) — нейроинтегрированной экосистемой для автоматизации работы и мышления.**
+
+Архитектура минималистична, модульна и создана для максимальной нейроинтеграции.
+**Вместо ручной настройки — вы просто говорите промт:**
+> «Отключи анимацию переключения окон» → система сама находит нужные файлы и применяет изменения.
+
+Нейроинтеграция превращает минимализм из ограничения в преимущество:
+- ✅ **Лёгкость, скорость и контроль** — как в минималистичных дистрибутивах
+- ✅ **Простота настройки** — как в «умных» универсальных системах
+- ❌ Нет сложных конфигов, которые нужно искать/настраивать часами
+- ❌ Нет тяжёлых слоёв абстракции, замедляющих систему
+
+Вы получаете систему, которая **адаптируется под вас**, а не заставляет вас подстраиваться под неё — без потери производительности и прозрачности.
+
+
+
+## 📊 Текущее состояние
+
+✅ **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///`, а общее пространство репозитория вынесено в `/pkg//{bin,lib,include,share}/` — это лишает систему конфликтов.
+- **Изолированные конфигурации** — каждый пакет хранит свои конфиги в `/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