Старт репозитория
This commit is contained in:
18
LICENSE
Normal file
18
LICENSE
Normal 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
19
README.md
Normal 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
4
alr-repo.toml
Normal 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
118
lib32-libdrm/alr.sh
Normal 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
151
lib32-llvm18/alr.sh
Normal 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
103
lib32-lm_sensors/alr.sh
Normal 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
256
lib32-mesa/alr.sh
Normal 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
110
libdrm/alr.sh
Normal 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
236
mesa/alr.sh
Normal 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
273
validate-alr.sh
Normal 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 "$@"
|
||||
Reference in New Issue
Block a user