Старт репозитория

This commit is contained in:
2025-11-24 00:03:59 +03:00
commit 94bdf84633
10 changed files with 1288 additions and 0 deletions

18
LICENSE Normal file
View File

@@ -0,0 +1,18 @@
// This file was originally part of the project "LURE - Linux User REpository", created by Elara Musayelyan.
// It has been modified as part of "ALR - Any Linux Repository" by the ALR Authors.
//
// ALR - Any Linux Repository
// Copyright (C) 2025 The ALR Authors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.

19
README.md Normal file
View File

@@ -0,0 +1,19 @@
# ALR-repo
Репозиторий для [ALR](https://gitea.plemya-x.ru/Plemya-x/ALR)
ALR - это независимая от дистрибутива система сборки для Linux, аналогичная AUR.
В настоящее время он находится в альфа-состоянии и может быть нестабильным.
## Установка ALR
```bash
curl -fsSL https://gitea.plemya-x.ru/Plemya-x/ALR/raw/branch/master/scripts/install.sh | bash
```
## Добавление этого репозитория
```bash
alr repo add alr-RG https://gitea.plemya-x.ru/Plemya-x/alr-RG.git
```
## Соцсети
Сайт - https://alr.plemya-x.ru/
Telegram - https://t.me/plemyakh

4
alr-repo.toml Normal file
View File

@@ -0,0 +1,4 @@
[repo]
minVersion = "v0.0.28"
url = "https://gitea.plemya-x.ru/Plemya-x/alr-RG.git"
ref = "master"

118
lib32-libdrm/alr.sh Normal file
View File

@@ -0,0 +1,118 @@
name='lib32-libdrm'
version='2.4.128'
release='3'
desc='32-bit userspace library for kernel DRM services'
desc_ru='32-битная библиотека пользовательского пространства для служб DRM ядра'
homepage='https://dri.freedesktop.org/'
maintainer='Evgeniy Khramov <xpamych@yandex.ru>'
maintainer_ru='Евгений Храмов <xpamych@yandex.ru>'
license='MIT'
architectures=('amd64')
min_alr_version='v0.0.14'
# Runtime dependencies
deps=(
'libpciaccess.i686'
'libdrm'
)
deps_redos=(
'libpciaccess(x86-32)'
'libdrm'
)
# Build dependencies
build_deps=(
'meson'
'ninja-build'
'gcc'
'libpciaccess-devel.i686'
'systemd-devel.i686'
'python3'
)
build_deps_redos=("${build_deps[@]}")
# Provides 32-bit libdrm
provides=(
'libdrm.i686'
'libdrm(x86-32)'
'libdrm.so.2'
'libdrm_amdgpu.so.1'
'libdrm_intel.so.1'
'libdrm_nouveau.so.2'
'libdrm_radeon.so.1'
'libdrm-devel.i686'
'libdrm-devel(x86-32)'
)
conflicts=(
'libdrm.i686 < 2.4.128'
'libdrm(x86-32) < 2.4.128'
'libdrm-devel.i686 < 2.4.128'
'libdrm-devel(x86-32) < 2.4.128'
)
_pkgver="${version}"
sources=("https://dri.freedesktop.org/libdrm/libdrm-${_pkgver}.tar.xz")
checksums=('SKIP')
prepare() {
cd "$srcdir/libdrm-${_pkgver}"
echo "==> Preparing libdrm ${version} (32-bit)..."
}
build() {
cd "$srcdir/libdrm-${_pkgver}"
export CFLAGS="-m32 -O2 -g1"
export CXXFLAGS="-m32 -O2 -g1"
export LDFLAGS="-m32"
export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig"
echo "==> Configuring libdrm (32-bit) with Meson..."
meson setup builddir \
--prefix=/usr \
--libdir=lib \
--buildtype=release \
-Dudev=true \
-Dvalgrind=disabled \
-Dcairo-tests=disabled \
-Dintel=enabled \
-Dradeon=enabled \
-Damdgpu=enabled \
-Dnouveau=enabled \
-Dvmwgfx=enabled \
-Domap=disabled \
-Dexynos=disabled \
-Dfreedreno=disabled \
-Dtegra=disabled \
-Dvc4=disabled \
-Detnaviv=disabled \
-Dinstall-test-programs=false
echo "==> Building libdrm (32-bit)..."
meson compile -C builddir -j$(nproc)
}
package() {
cd "$srcdir/libdrm-${_pkgver}"
echo "==> Installing libdrm (32-bit)..."
DESTDIR="$pkgdir" meson install -C builddir --no-rebuild
# Remove headers and pkg-config files (use from 64-bit libdrm+default)
rm -rf "$pkgdir/usr/include"
rm -rf "$pkgdir/usr/share"
# Install license
install -Dm644 README.rst "$pkgdir/usr/share/licenses/$name/README.rst"
echo "==> libdrm ${version} (32-bit) installed"
}
files() {
# Find all installed files
find "$pkgdir" -type f -o -type l | sed "s|^$pkgdir||" | sort
}

151
lib32-llvm18/alr.sh Normal file
View File

@@ -0,0 +1,151 @@
name='lib32-llvm18'
version='18.1.8'
release='12'
desc='32-bit LLVM libraries for Mesa'
desc_ru='32-битные библиотеки LLVM для Mesa'
homepage='https://llvm.org/'
maintainer='Evgeniy Khramov <xpamych@yandex.ru>'
maintainer_ru='Евгений Храмов <xpamych@yandex.ru>'
license='Apache-2.0 WITH LLVM-exception'
architectures=('amd64')
min_alr_version='v0.0.14'
# Runtime dependencies
deps=()
deps_redos=()
# Build dependencies
build_deps=(
'cmake'
'ninja-build'
'gcc'
'gcc-c++'
'python3'
'python3-devel'
'zlib-devel(x86-32)'
'libzstd-devel(x86-32)'
'libxml2-devel(x86-32)'
'ncurses-devel(x86-32)'
'libedit-devel(x86-32)'
'libffi-devel(x86-32)'
'glibc-devel(x86-32)'
)
build_deps_redos=("${build_deps[@]}")
# Provides 32-bit LLVM libraries and replaces system LLVM 17
provides=(
'lib32-llvm18'
'llvm18-libs(x86-32)'
'llvm18-devel(x86-32)'
'llvm-libs(x86-32)'
)
conflicts=(
'llvm18-libs(x86-32) < 18.1.8'
)
_pkgver="${version}"
sources=("https://github.com/llvm/llvm-project/releases/download/llvmorg-${_pkgver}/llvm-project-${_pkgver}.src.tar.xz")
checksums=('SKIP')
prepare() {
cd "$srcdir/llvm-project-${_pkgver}.src"
echo "==> Preparing LLVM ${version} (32-bit)..."
}
build() {
cd "$srcdir/llvm-project-${_pkgver}.src/llvm"
export CFLAGS="-m32 -O2 -g1"
export CXXFLAGS="-m32 -O2 -g1"
export LDFLAGS="-m32"
export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig"
echo "==> Configuring LLVM (32-bit) with CMake..."
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_C_FLAGS="-m32" \
-DCMAKE_CXX_FLAGS="-m32" \
-DLLVM_LIBDIR_SUFFIX="" \
-DLLVM_TARGET_ARCH=i686 \
-DLLVM_DEFAULT_TARGET_TRIPLE=i686-redsoft-linux-gnu \
-DLLVM_TARGETS_TO_BUILD="X86;AMDGPU" \
-DLLVM_ENABLE_PROJECTS="" \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_BUILD_TOOLS=ON \
-DLLVM_BUILD_UTILS=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_DOCS=OFF \
-DLLVM_ENABLE_DOXYGEN=OFF \
-DLLVM_ENABLE_SPHINX=OFF \
-DLLVM_ENABLE_BINDINGS=OFF \
-DLLVM_ENABLE_TERMINFO=ON \
-DLLVM_ENABLE_ZLIB=ON \
-DLLVM_ENABLE_ZSTD=ON \
-DLLVM_ENABLE_LIBXML2=ON \
-DBUILD_SHARED_LIBS=OFF
echo "==> Building LLVM (32-bit) - this may take 30-60 minutes..."
cmake --build build -j$(nproc)
}
package() {
cd "$srcdir/llvm-project-${_pkgver}.src/llvm"
echo "==> Installing LLVM (32-bit) libraries..."
DESTDIR="$pkgdir" cmake --install build
# Manually install llvm-config as llvm-config-18-32
mkdir -p "$pkgdir/usr/bin"
if [ -f "build/bin/llvm-config" ]; then
install -m755 build/bin/llvm-config "$pkgdir/usr/bin/llvm-config-18-32"
else
echo "ERROR: llvm-config not found in build/bin/"
exit 1
fi
# Remove all other binaries that might have been installed
find "$pkgdir/usr/bin" -type f ! -name "llvm-config-18-32" -delete 2>/dev/null || true
# Remove man pages and documentation
rm -rf "$pkgdir/usr/share/man"
rm -rf "$pkgdir/usr/share/opt-viewer"
rm -rf "$pkgdir/usr/share/doc"
# Libraries should already be in /usr/lib due to CMAKE_INSTALL_LIBDIR=lib
# But check if any ended up in lib64 and move them
if [ -d "$pkgdir/usr/lib64" ]; then
mkdir -p "$pkgdir/usr/lib"
mv "$pkgdir/usr/lib64"/* "$pkgdir/usr/lib/" 2>/dev/null || true
rmdir "$pkgdir/usr/lib64"
fi
# Remove static libraries to save space and avoid conflicts
echo "==> Removing static libraries..."
find "$pkgdir/usr/lib" -name "*.a" -delete
# Remove cmake files that might conflict
rm -rf "$pkgdir/usr/lib/cmake"
# Remove includes to avoid conflicts - Mesa will use system headers
rm -rf "$pkgdir/usr/include"
# Install license
install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$name/LICENSE.TXT"
echo "==> LLVM ${version} (32-bit) installed: libraries in /usr/lib, llvm-config-18-32 in /usr/bin"
}
files() {
# Find all installed files
find "$pkgdir" -type f -o -type l | sed "s|^$pkgdir||" | sort
}

103
lib32-lm_sensors/alr.sh Normal file
View File

@@ -0,0 +1,103 @@
name='lib32-lm_sensors'
version='3.6.0'
release='4'
desc='32-bit hardware monitoring library'
desc_ru='32-битная библиотека мониторинга оборудования'
homepage='https://github.com/lm-sensors/lm-sensors'
maintainer='Evgeniy Khramov <xpamych@yandex.ru>'
maintainer_ru='Евгений Храмов <xpamych@yandex.ru>'
license='GPL-2.0-or-later AND LGPL-2.1-or-later'
architectures=('amd64')
min_alr_version='v0.0.14'
# Runtime dependencies
deps=(
'lm_sensors'
)
deps_redos=(
'lm_sensors'
)
# Build dependencies
build_deps=(
'gcc'
'make'
'bison'
'flex'
'glibc-devel.i686'
)
build_deps_redos=("${build_deps[@]}")
# Provides 32-bit lm_sensors libraries
provides=(
'lm_sensors-libs.i686'
'lm_sensors-libs(x86-32)'
'libsensors.so.5'
)
conflicts=(
'lm_sensors-libs.i686 < 3.6.0'
)
_pkgver="${version}"
sources=("https://github.com/lm-sensors/lm-sensors/archive/V${_pkgver//./-}.tar.gz")
checksums=('SKIP')
prepare() {
cd "$srcdir/lm-sensors-${_pkgver//./-}"
echo "==> Preparing lm_sensors ${version} (32-bit)..."
}
build() {
cd "$srcdir/lm-sensors-${_pkgver//./-}"
export CFLAGS="-m32 -O2 -g1"
export CXXFLAGS="-m32 -O2 -g1"
export LDFLAGS="-m32"
echo "==> Building lm_sensors (32-bit)..."
make PREFIX=/usr \
LIBDIR=/usr/lib \
MANDIR=/usr/share/man \
BUILD_STATIC_LIB=0 \
-j$(nproc) \
lib/libsensors.so
}
package() {
cd "$srcdir/lm-sensors-${_pkgver//./-}"
echo "==> Installing lm_sensors (32-bit) libraries..."
# Install library using make install (only libraries)
mkdir -p "$pkgdir/usr/lib"
make PREFIX="$pkgdir/usr" \
LIBDIR="$pkgdir/usr/lib" \
BUILD_STATIC_LIB=0 \
install-lib
# Remove pkg-config file (conflicts with 64-bit version)
rm -f "$pkgdir/usr/lib/pkgconfig/libsensors.pc"
rmdir "$pkgdir/usr/lib/pkgconfig" 2>/dev/null || true
# Install license
install -Dm644 COPYING "$pkgdir/usr/share/licenses/$name/COPYING"
install -Dm644 COPYING.LGPL "$pkgdir/usr/share/licenses/$name/COPYING.LGPL"
echo "==> lm_sensors ${version} (32-bit) installed"
}
files() {
# Find all installed files
if [ -d ./usr/lib ]; then
find ./usr/lib -type f -printf '%p\n'
find ./usr/lib -type l -printf '%p\n'
fi
if [ -d ./usr/share/licenses ]; then
find ./usr/share/licenses -type f -printf '%p\n'
fi
}

256
lib32-mesa/alr.sh Normal file
View File

@@ -0,0 +1,256 @@
name='lib32-mesa'
version='25.2.6'
release='15'
epoch='1'
desc='Open-source OpenGL and Vulkan drivers (32-bit) with AMD RDNA 4 support for gaming'
desc_ru='OpenGL и Vulkan драйверы (32-бит) с открытым исходным кодом с поддержкой AMD RDNA 4 для игр'
homepage='https://www.mesa3d.org/'
maintainer='Evgeniy Khramov <xpamych@yandex.ru>'
maintainer_ru='Евгений Храмов <xpamych@yandex.ru>'
architectures=('amd64')
license=('MIT' 'BSD-3-Clause' 'SGI-B-2.0')
provides=(
'mesa-dri-drivers(x86-32)'
'mesa-vulkan-drivers(x86-32)'
'mesa-va-drivers(x86-32)'
'mesa-vdpau-drivers(x86-32)'
'mesa-libgbm(x86-32)'
'mesa-libEGL(x86-32)'
'mesa-libGL(x86-32)'
'mesa-libGLES(x86-32)'
'lib32-mesa'
'lib32-mesa-dri-drivers'
'lib32-mesa-vulkan-drivers'
'lib32-mesa-va-drivers'
'lib32-mesa-vdpau-drivers'
'lib32-mesa-libgbm'
'lib32-mesa-libEGL'
'lib32-mesa-libGL'
'lib32-mesa-libGLES'
'lib32-vulkan-radeon'
'lib32-libva-mesa-driver'
'lib32-opengl-driver'
'lib32-vulkan-driver'
'libGLESv1_CM.so.1'
'libGLESv2.so.2'
)
conflicts=(
'mesa-dri-drivers(x86-32) < 25.2.6'
'mesa-vulkan-drivers(x86-32) < 25.2.6'
'mesa-va-drivers(x86-32) < 25.2.6'
'mesa-vdpau-drivers(x86-32) < 25.2.6'
'mesa-libgbm(x86-32) < 25.2.6'
'mesa-libEGL(x86-32) < 25.2.6'
'mesa-libGL(x86-32) < 25.2.6'
'mesa-libGLES(x86-32) < 25.2.6'
)
# 32-битные зависимости
deps=(
'expat(x86-32)'
'libdrm(x86-32)'
'libelf(x86-32)'
'libglvnd(x86-32)'
'libx11(x86-32)'
'libxcb(x86-32)'
'libxext(x86-32)'
'libxshmfence(x86-32)'
'libxxf86vm(x86-32)'
'libwayland-client(x86-32)'
'libwayland-server(x86-32)'
'zlib(x86-32)'
'libzstd(x86-32)'
'vulkan-icd-loader(x86-32)'
)
# Зависимости для RedOS (32-бит)
deps_redos=(
'expat(x86-32)'
'lib32-libdrm'
'elfutils-libelf(x86-32)'
'libglvnd(x86-32)'
'libglvnd-gles(x86-32)'
'libX11(x86-32)'
'libxcb(x86-32)'
'libXext(x86-32)'
'libxshmfence(x86-32)'
'libXxf86vm(x86-32)'
'libwayland-client(x86-32)'
'libwayland-server(x86-32)'
'zlib(x86-32)'
'libzstd(x86-32)'
'vulkan-loader(x86-32)'
'lib32-llvm18'
'lib32-lm_sensors'
)
# Зависимости для сборки (в основном 64-бит tools + 32-бит libs)
build_deps=(
'gcc'
'clang'
'meson'
'ninja-build'
'cmake'
'python3'
'python3-mako'
'python3-packaging'
'python3-pyyaml'
'bison'
'flex'
'llvm18'
'llvm18-devel'
'clang-devel'
'rust'
'rust-bindgen-devel'
'cbindgen'
'glslang-devel'
'spirv-tools-devel'
'glibc-devel(x86-32)'
'lib32-libdrm'
'libxcb-devel(x86-32)'
'libX11-devel(x86-32)'
'libXext-devel(x86-32)'
'libXxf86vm-devel(x86-32)'
'libXfixes-devel(x86-32)'
'libXdamage-devel(x86-32)'
'libxshmfence-devel(x86-32)'
'libXrandr-devel(x86-32)'
'elfutils-libelf-devel(x86-32)'
'libglvnd-devel(x86-64)'
'wayland-devel(x86-32)'
'wayland-protocols-devel'
'libva-devel(x86-64)'
'libvdpau-devel(x86-64)'
'expat-devel(x86-32)'
'libxml2-devel(x86-32)'
'libzstd-devel(x86-32)'
'lm_sensors-devel'
'lib32-lm_sensors'
'systemd-devel(x86-32)'
'libpng-devel(x86-32)'
'vulkan-headers'
'vulkan-loader-devel(x86-32)'
'lib32-llvm18'
)
build_deps_redos=("${build_deps[@]}")
_pkgver="${version}"
sources=("https://archive.mesa3d.org/mesa-${_pkgver}.tar.xz")
checksums=('361c97e8afa5fe20141c5362c5b489040751e12861c186a16c621a2fb182fc42')
prepare() {
cd "$srcdir/mesa-${_pkgver}"
# Установка версии для правильной идентификации
echo "${version}-alr${epoch}.${release}" > VERSION
# Create llvm-config-i386.h for 32-bit LLVM support
echo "==> Creating llvm-config-i386.h for 32-bit LLVM 18..."
sudo cp /usr/lib64/llvm18/include/llvm/Config/llvm-config-x86_64.h /usr/lib64/llvm18/include/llvm/Config/llvm-config-i386.h
sudo sed -i 's/x86_64-redsoft-linux-gnu/i686-redsoft-linux-gnu/g' /usr/lib64/llvm18/include/llvm/Config/llvm-config-i386.h
# Create meson cross-file for 32-bit compilation
cat > "$srcdir/lib32-cross.ini" <<EOF
[binaries]
c = ['gcc', '-m32']
cpp = ['g++', '-m32']
ar = 'gcc-ar'
strip = 'strip'
pkg-config = 'pkg-config'
[built-in options]
c_args = ['-m32']
c_link_args = ['-m32']
cpp_args = ['-m32']
cpp_link_args = ['-m32']
[host_machine]
system = 'linux'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'
EOF
echo "==> Preparing Mesa ${version} (32-bit) with LLVM for AMD RDNA 4 gaming support..."
}
build() {
cd "$srcdir/mesa-${_pkgver}"
# Set environment for 32-bit build
export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig"
export LLVM_CONFIG="/usr/bin/llvm-config-18-32"
# 32-bit CFLAGS/CXXFLAGS with LLVM 18 headers
export CFLAGS="-m32 -O2 -g1 -I/usr/lib64/llvm18/include"
export CXXFLAGS="-m32 -O2 -g1 -I/usr/lib64/llvm18/include"
export LDFLAGS="-m32"
echo "==> Configuring Mesa (32-bit) with Meson..."
meson setup builddir \
--cross-file="$srcdir/lib32-cross.ini" \
--prefix=/usr \
--libdir=lib \
--buildtype=release \
-Db_ndebug=true \
-Dc_args="-I/usr/lib64/llvm18/include" \
-Dcpp_args="-I/usr/lib64/llvm18/include" \
-Dplatforms=x11,wayland \
-Dgallium-drivers=r300,r600,radeonsi,llvmpipe,softpipe,zink \
-Dvulkan-drivers=amd,swrast \
-Dvideo-codecs=all \
-Dgallium-extra-hud=true \
-Dgallium-rusticl=false \
-Dgallium-va=enabled \
-Dgallium-vdpau=enabled \
-Dgbm=enabled \
-Dgles1=disabled \
-Dgles2=enabled \
-Dglvnd=enabled \
-Dglx=dri \
-Degl=enabled \
-Dllvm=enabled \
-Dlmsensors=enabled \
-Dvalgrind=disabled \
-Dvulkan-layers=device-select,overlay \
-Dintel-rt=disabled \
-Dlibunwind=disabled \
-Dmicrosoft-clc=disabled
echo "==> Building Mesa (32-bit) - this may take 15-30 minutes..."
meson compile -C builddir -j$(($(nproc) - 1))
}
package() {
cd "$srcdir/mesa-${_pkgver}"
echo "==> Installing Mesa (32-bit)..."
DESTDIR="$pkgdir" meson install -C builddir --no-rebuild
# Install license
install -Dm644 docs/license.rst "$pkgdir/usr/share/licenses/$name/LICENSE"
# Remove files that conflict with 64-bit mesa
rm -rf "$pkgdir/usr/include"
rm -rf "$pkgdir/usr/share/drirc.d"
rm -rf "$pkgdir/usr/share/vulkan"
rm -rf "$pkgdir/usr/share/glvnd"
rm -rf "$pkgdir/usr/lib/pkgconfig"
rm -f "$pkgdir/usr/bin"/*
echo "==> Mesa ${version} (32-bit) installed with LLVM and AMD RDNA 4 gaming support"
}
files() {
# Find all installed 32-bit library files
if [ -d ./usr/lib ]; then
find ./usr/lib -type f -printf '%p\n'
find ./usr/lib -type l -printf '%p\n'
fi
if [ -d ./usr/share/licenses ]; then
find ./usr/share/licenses -type f -printf '%p\n'
fi
}

110
libdrm/alr.sh Normal file
View File

@@ -0,0 +1,110 @@
name='libdrm'
version='2.4.128'
release='2'
desc='Userspace library for kernel DRM services'
desc_ru='Библиотека пользовательского пространства для служб DRM ядра'
homepage='https://dri.freedesktop.org/'
maintainer='Evgeniy Khramov <xpamych@yandex.ru>'
maintainer_ru='Евгений Храмов <xpamych@yandex.ru>'
license='MIT'
architectures=('amd64')
min_alr_version='v0.0.14'
# Runtime dependencies
deps=(
'libpciaccess'
)
deps_redos=(
'libpciaccess'
)
# Build dependencies
build_deps=(
'meson'
'ninja-build'
'gcc'
'libpciaccess-devel'
'systemd-devel'
'python3'
)
build_deps_redos=("${build_deps[@]}")
# Provides - заменяет системную libdrm
provides=(
'libdrm'
'libdrm(x86-64)'
'libdrm.so.2()(64bit)'
'libdrm_amdgpu.so.1()(64bit)'
'libdrm_intel.so.1()(64bit)'
'libdrm_nouveau.so.2()(64bit)'
'libdrm_radeon.so.1()(64bit)'
'libdrm-devel'
'libdrm-devel(x86-64)'
'pkgconfig(libdrm)'
'pkgconfig(libdrm_amdgpu)'
'pkgconfig(libdrm_intel)'
'pkgconfig(libdrm_nouveau)'
'pkgconfig(libdrm_radeon)'
)
conflicts=(
'libdrm(x86-64) < 2.4.128'
'libdrm-devel(x86-64) < 2.4.128'
)
_pkgver="${version}"
sources=("https://dri.freedesktop.org/libdrm/libdrm-${_pkgver}.tar.xz")
checksums=('SKIP')
prepare() {
cd "$srcdir/libdrm-${_pkgver}"
echo "==> Preparing libdrm ${version}..."
}
build() {
cd "$srcdir/libdrm-${_pkgver}"
echo "==> Configuring libdrm with Meson..."
meson setup builddir \
--prefix=/usr \
--libdir=lib64 \
--buildtype=release \
-Dudev=true \
-Dvalgrind=disabled \
-Dcairo-tests=disabled \
-Dintel=enabled \
-Dradeon=enabled \
-Damdgpu=enabled \
-Dnouveau=enabled \
-Dvmwgfx=enabled \
-Domap=disabled \
-Dexynos=disabled \
-Dfreedreno=disabled \
-Dtegra=disabled \
-Dvc4=disabled \
-Detnaviv=disabled \
-Dinstall-test-programs=false
echo "==> Building libdrm..."
meson compile -C builddir -j$(nproc)
}
package() {
cd "$srcdir/libdrm-${_pkgver}"
echo "==> Installing libdrm..."
DESTDIR="$pkgdir" meson install -C builddir --no-rebuild
# Install license
install -Dm644 README.rst "$pkgdir/usr/share/licenses/$name/README.rst"
echo "==> libdrm ${version} installed"
}
files() {
# Find all installed files
find "$pkgdir" -type f -o -type l | sed "s|^$pkgdir||" | sort
}

236
mesa/alr.sh Normal file
View File

@@ -0,0 +1,236 @@
name='mesa'
version='25.2.6'
release='6'
epoch='1'
desc='Open-source OpenGL and Vulkan drivers with AMD RDNA 4 (RX 9070 XT) support'
desc_ru='OpenGL и Vulkan драйверы с открытым исходным кодом с поддержкой AMD RDNA 4 (RX 9070 XT)'
homepage='https://www.mesa3d.org/'
maintainer='Evgeniy Khramov <xpamych@yandex.ru>'
maintainer_ru='Евгений Храмов <xpamych@yandex.ru>'
architectures=('amd64')
license=('MIT' 'BSD-3-Clause' 'SGI-B-2.0')
provides=(
'mesa'
'mesa-dri-drivers'
'mesa-dri-drivers(x86-64)'
'mesa-vulkan-drivers'
'mesa-vulkan-drivers(x86-64)'
'mesa-va-drivers'
'mesa-va-drivers(x86-64)'
'mesa-vdpau-drivers'
'mesa-vdpau-drivers(x86-64)'
'mesa-libgbm'
'mesa-libgbm(x86-64)'
'mesa-libEGL'
'mesa-libEGL(x86-64)'
'mesa-libGL'
'mesa-libGL(x86-64)'
'mesa-libGLES'
'mesa-libGLES(x86-64)'
'vulkan-radeon'
'libva-mesa-driver'
'opengl-driver'
'vulkan-driver'
'libdril_dri.so()(64bit)'
'libEGL_mesa.so.0()(64bit)'
'libGLX_mesa.so.0()(64bit)'
'libVkLayer_MESA_device_select.so()(64bit)'
'libvulkan_lvp.so()(64bit)'
'libvulkan_radeon.so()(64bit)'
'libgbm.so.1()(64bit)'
'libGLESv1_CM.so.1()(64bit)'
'libGLESv2.so.2()(64bit)'
)
conflicts=(
'mesa(x86-64) < 25.2.6'
'mesa-dri-drivers(x86-64) < 25.2.6'
'mesa-vulkan-drivers(x86-64) < 25.2.6'
'mesa-va-drivers(x86-64) < 25.2.6'
'mesa-vdpau-drivers(x86-64) < 25.2.6'
'mesa-libgbm(x86-64) < 25.2.6'
'mesa-libEGL(x86-64) < 25.2.6'
'mesa-libGL(x86-64) < 25.2.6'
'mesa-libGLES(x86-64) < 25.2.6'
)
# Базовые зависимости
deps=(
'expat'
'libdrm'
'libelf'
'libglvnd'
'libx11'
'libxcb'
'libxext'
'libxshmfence'
'libxxf86vm'
'llvm18-libs'
'lm_sensors'
'libwayland-client'
'libwayland-server'
'zlib'
'zstd'
'vulkan-icd-loader'
)
# Зависимости для RedOS
deps_redos=(
'expat'
'libdrm'
'elfutils-libelf'
'libglvnd'
'libglvnd-gles'
'libX11'
'libxcb'
'libXext'
'libxshmfence'
'libXxf86vm'
'llvm18-libs'
'lm_sensors-libs'
'libwayland-client'
'libwayland-server'
'zlib'
'zstd'
'vulkan-loader'
)
# Зависимости для сборки
build_deps=(
'gcc'
'clang'
'meson'
'ninja-build'
'cmake'
'python3'
'python3-mako'
'python3-packaging'
'python3-pyyaml'
'bison'
'flex'
'llvm18'
'llvm18-devel'
'clang-devel'
'rust'
'rust-bindgen-devel'
'cbindgen'
'glslang-devel'
'spirv-tools-devel'
'libdrm-devel'
'libxcb-devel'
'libX11-devel'
'libXext-devel'
'libXxf86vm-devel'
'libXfixes-devel'
'libXdamage-devel'
'libxshmfence-devel'
'libXrandr-devel'
'elfutils-libelf-devel'
'libglvnd-devel'
'wayland-devel'
'wayland-protocols-devel'
'libva-devel'
'libvdpau-devel'
'expat-devel'
'libxml2-devel'
'libzstd-devel'
'lm_sensors-devel'
'systemd-devel'
'libpng-devel'
'vulkan-headers'
'vulkan-loader-devel'
)
build_deps_redos=("${build_deps[@]}")
_pkgver="${version}"
sources=("https://archive.mesa3d.org/mesa-${_pkgver}.tar.xz")
checksums=('361c97e8afa5fe20141c5362c5b489040751e12861c186a16c621a2fb182fc42')
prepare() {
cd "$srcdir/mesa-${_pkgver}"
# Установка версии для правильной идентификации
echo "${version}-alr${epoch}.${release}" > VERSION
echo "==> Preparing Mesa ${version} for AMD RDNA 4 (RX 9070 XT) support..."
}
build() {
cd "$srcdir/mesa-${_pkgver}"
# Set LLVM 18 paths
export LLVM_CONFIG="/usr/bin/llvm-config-18"
echo "==> Configuring Mesa with Meson..."
meson setup builddir \
--prefix=/usr \
--libdir=lib64 \
--buildtype=release \
-Db_ndebug=true \
-Dplatforms=x11,wayland \
-Dgallium-drivers=r300,r600,radeonsi,llvmpipe,softpipe,zink \
-Dvulkan-drivers=amd,swrast \
-Dvideo-codecs=all \
-Dgallium-extra-hud=true \
-Dgallium-rusticl=false \
-Dgallium-va=enabled \
-Dgallium-vdpau=enabled \
-Dgbm=enabled \
-Dgles1=disabled \
-Dgles2=enabled \
-Dglvnd=enabled \
-Dglx=dri \
-Degl=enabled \
-Dllvm=enabled \
-Dlmsensors=enabled \
-Dvalgrind=disabled \
-Dvulkan-layers=device-select,overlay \
-Dintel-rt=disabled \
-Dlibunwind=disabled \
-Dmicrosoft-clc=disabled
echo "==> Building Mesa (this may take 15-30 minutes)..."
meson compile -C builddir -j$(($(nproc) - 1))
}
package() {
cd "$srcdir/mesa-${_pkgver}"
echo "==> Installing Mesa..."
DESTDIR="$pkgdir" meson install -C builddir --no-rebuild
# Install license
install -Dm644 docs/license.rst "$pkgdir/usr/share/licenses/$name/LICENSE"
echo "==> Mesa ${_pkgver} installed with AMD RDNA 4 support"
}
files() {
# Find all installed files
if [ -d ./usr/lib64 ]; then
find ./usr/lib64 -type f -printf '%p\n'
find ./usr/lib64 -type l -printf '%p\n'
fi
if [ -d ./usr/lib ]; then
find ./usr/lib -type f -printf '%p\n'
find ./usr/lib -type l -printf '%p\n'
fi
if [ -d ./usr/include ]; then
find ./usr/include -type f -printf '%p\n'
fi
if [ -d ./usr/share ]; then
find ./usr/share -type f -printf '%p\n'
fi
if [ -d ./usr/bin ]; then
find ./usr/bin -type f -printf '%p\n'
fi
if [ -d ./etc ]; then
find ./etc -type f -printf '%p\n'
fi
}

273
validate-alr.sh Normal file
View File

@@ -0,0 +1,273 @@
#!/bin/bash
# Валидатор для alr.sh файлов в репозитории ALR
# Проверяет синтаксис и структуру пакетов
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Глобальные счетчики
declare -g errors=0
declare -g warnings=0
# Функция для вывода ошибок
error() {
echo -e "${RED}[ERROR]${NC} $1"
((errors++))
}
# Функция для вывода предупреждений
warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
((warnings++))
}
# Функция для вывода успешных проверок
success() {
echo -e "${GREEN}[OK]${NC} $1"
}
# Проверка одного alr.sh файла
check_alr_file() {
local file="$1"
local pkg_dir=$(dirname "$file")
local pkg_name=$(basename "$pkg_dir")
echo "Проверка пакета: $pkg_name"
# 1. Проверка синтаксиса bash
if ! bash -n "$file" 2>/dev/null; then
error "$pkg_name: синтаксические ошибки в alr.sh"
return 1
fi
# Загружаем файл в изолированной среде для проверки
{
# Определяем заглушки для функций ALR
srcdir="/tmp/alr-validate-src"
pkgdir="/tmp/alr-validate-pkg"
scriptdir="$pkg_dir"
# Заглушки для функций установки
install() { :; }
install-desktop() { :; }
install-license() { :; }
# Загружаем файл
source "$file" 2>/dev/null || {
error "$pkg_name: не удалось загрузить alr.sh"
return 1
}
# 2. Проверка обязательных полей
local required_fields=(name version release desc maintainer)
for field in "${required_fields[@]}"; do
if [[ -z "${!field}" ]]; then
error "$pkg_name: отсутствует обязательное поле '$field'"
fi
done
# 3. Проверка формата версии
# Поддерживаемые форматы:
# - стандартный: 1.2.3, 1.0.0-alpha1
# - git версии: git
# - release префикс: release-1.2.3
# - версии с r префиксом: r20250906.ff1bee31
if [[ ! "$version" =~ ^([0-9]+(\.[0-9]+)*([a-zA-Z0-9._-]+)?|git|release-[0-9]+(\.[0-9]+)*([a-zA-Z0-9._-]+)?|r[0-9]{8}\.[a-z0-9]+)$ ]]; then
# Не выводим предупреждения для git пакетов
if [[ ! "$pkg_name" =~ -git$ ]]; then
warning "$pkg_name: необычный формат версии '$version'"
fi
fi
# 4. Проверка формата release
if [[ ! "$release" =~ ^[0-9]+$ ]]; then
error "$pkg_name: release должен быть числом, получено '$release'"
fi
# 5. Проверка наличия функций
# Определяем тип пакета: мульти-пакет если name объявлен как массив с несколькими элементами
# Проверяем, объявлен ли name как массив в исходном файле
local is_multipackage=false
if grep -q "^name=(" "$file"; then
# Если в файле есть name=( значит это массив
if [[ "${#name[@]}" -gt 1 ]]; then
is_multipackage=true
fi
fi
if [[ "$is_multipackage" == true ]]; then
# Мульти-пакет - проверяем функции с префиксами
for subpkg in "${name[@]}"; do
# Проверяем наличие meta функции
if ! declare -F "meta_${subpkg}" >/dev/null 2>&1; then
warning "$pkg_name: отсутствует функция meta_${subpkg}()"
fi
# Проверяем наличие package функции
if ! declare -F "package_${subpkg}" >/dev/null 2>&1; then
warning "$pkg_name: отсутствует функция package_${subpkg}()"
fi
# Проверяем наличие files функции
if ! declare -F "files_${subpkg}" >/dev/null 2>&1; then
error "$pkg_name: отсутствует функция files_${subpkg}()"
fi
done
else
# Обычный (моно)пакет - проверяем обычные функции
# Проверяем наличие функции package() или build()
if ! declare -F package >/dev/null 2>&1; then
if ! declare -F build >/dev/null 2>&1; then
warning "$pkg_name: отсутствуют функции package() и build()"
fi
fi
# Проверяем наличие функции files()
if ! declare -F files >/dev/null 2>&1; then
error "$pkg_name: отсутствует функция files()"
fi
fi
# 6. Проверка архитектур
if [[ -n "${architectures[*]}" ]]; then
for arch in "${architectures[@]}"; do
if [[ ! "$arch" =~ ^(amd64|arm64|arm6|386|riscv64|aarch64|all)$ ]]; then
warning "$pkg_name: неизвестная архитектура '$arch'"
fi
done
fi
# 7. Проверка источников и контрольных сумм
if [[ -n "${sources[*]}" ]]; then
if [[ -z "${checksums[*]}" ]]; then
warning "$pkg_name: sources определены, но checksums отсутствуют"
elif [[ "${#sources[@]}" -ne "${#checksums[@]}" ]]; then
if [[ "${checksums[0]}" != "SKIP" ]]; then
error "$pkg_name: количество sources (${#sources[@]}) не совпадает с checksums (${#checksums[@]})"
fi
fi
fi
# 8. Проверка, что функции не вызывают явные ошибки
# Создаем временные директории для тестирования
mkdir -p "$srcdir" "$pkgdir"
# Пробуем выполнить функции в dry-run режиме
if declare -F build >/dev/null 2>&1; then
# Переопределяем команды, которые могут быть опасными
curl() { echo "curl $*" >/dev/null; }
wget() { echo "wget $*" >/dev/null; }
git() { echo "git $*" >/dev/null; }
make() { echo "make $*" >/dev/null; }
cmake() { echo "cmake $*" >/dev/null; }
pip() { echo "pip $*" >/dev/null; }
npm() { echo "npm $*" >/dev/null; }
cargo() { echo "cargo $*" >/dev/null; }
tar() { echo "tar $*" >/dev/null; }
unzip() { echo "unzip $*" >/dev/null; }
cd() { builtin cd "$@" 2>/dev/null || :; }
export -f curl wget git make cmake pip npm cargo tar unzip cd
# Пробуем выполнить build в режиме проверки синтаксиса
if ! bash -c "source '$file' && declare -f build | bash -n" 2>/dev/null; then
warning "$pkg_name: синтаксические ошибки в функции build()"
fi
fi
if declare -F package >/dev/null 2>&1; then
if ! bash -c "source '$file' && declare -f package | bash -n" 2>/dev/null; then
warning "$pkg_name: синтаксические ошибки в функции package()"
fi
fi
if declare -F files >/dev/null 2>&1; then
if ! bash -c "source '$file' && declare -f files | bash -n" 2>/dev/null; then
warning "$pkg_name: синтаксические ошибки в функции files()"
fi
fi
# Очистка
rm -rf "$srcdir" "$pkgdir" 2>/dev/null || true
} 2>/dev/null || true
}
# Главная функция
main() {
local check_all=false
local files_to_check=()
# Парсим аргументы
while [[ $# -gt 0 ]]; do
case "$1" in
--all)
check_all=true
shift
;;
*)
files_to_check+=("$1")
shift
;;
esac
done
# Если указан флаг --all, проверяем все alr.sh файлы
if [[ "$check_all" == true ]]; then
echo "Проверка всех alr.sh файлов в репозитории..."
while IFS= read -r file; do
check_alr_file "$file"
echo "---"
done < <(find . -name "alr.sh" -type f | grep -v "^\./\." | sort)
else
# Проверяем только указанные файлы или измененные в git
if [[ ${#files_to_check[@]} -eq 0 ]]; then
# Получаем список измененных alr.sh файлов из git
while IFS= read -r file; do
if [[ -f "$file" ]] && [[ "$(basename "$file")" == "alr.sh" ]]; then
files_to_check+=("$file")
fi
done < <(git diff --cached --name-only)
fi
if [[ ${#files_to_check[@]} -eq 0 ]]; then
echo "Нет alr.sh файлов для проверки"
exit 0
fi
for file in "${files_to_check[@]}"; do
if [[ -f "$file" ]]; then
check_alr_file "$file"
echo "---"
fi
done
fi
# Итоговая статистика
echo ""
if [[ $errors -gt 0 ]]; then
echo -e "${RED}Найдено ошибок: $errors${NC}"
fi
if [[ $warnings -gt 0 ]]; then
echo -e "${YELLOW}Найдено предупреждений: $warnings${NC}"
fi
if [[ $errors -gt 0 ]]; then
echo -e "${RED}Проверка не пройдена!${NC}"
exit 1
elif [[ $warnings -gt 0 ]]; then
echo -e "${YELLOW}Проверка пройдена с предупреждениями${NC}"
exit 0
else
echo -e "${GREEN}Все проверки пройдены успешно!${NC}"
exit 0
fi
}
main "$@"