Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0e57df4360
|
||
|
|
da26e88147
|
+48
-19
@@ -309,34 +309,63 @@ jobs:
|
|||||||
echo " Checking for conflicting packages in packages.x86_64"
|
echo " Checking for conflicting packages in packages.x86_64"
|
||||||
echo "═══════════════════════════════════════════════════════════════"
|
echo "═══════════════════════════════════════════════════════════════"
|
||||||
|
|
||||||
# Sync databases first so pacman knows what exists
|
# Resolve against the repos mkarchiso sees, including [local-aur]
|
||||||
sudo pacman -Sy --noconfirm
|
# (localrepo/), so conflicts between pre-built AUR packages and
|
||||||
|
# anything else are caught here instead of in the ISO build.
|
||||||
|
# A fresh dbpath = empty local db, like pacstrap's target root:
|
||||||
|
# packages installed on the runner can neither mask a conflict
|
||||||
|
# nor cause a false one.
|
||||||
|
CONF=$(mktemp)
|
||||||
|
DB=$(mktemp -d)
|
||||||
|
ROOT=$(mktemp -d)
|
||||||
|
cp /etc/pacman.conf "$CONF"
|
||||||
|
printf '\n[local-aur]\nSigLevel = Optional TrustAll\nServer = file://%s/localrepo\n' \
|
||||||
|
"$PWD" >> "$CONF"
|
||||||
|
mkdir -p "$DB/sync"
|
||||||
|
cp -p /var/lib/pacman/sync/*.db "$DB/sync/"
|
||||||
|
pac() { pacman --config "$CONF" --dbpath "$DB" "$@"; }
|
||||||
|
pac -Sy --noconfirm
|
||||||
|
# From here on never download (set after -Sy, which needs to fetch
|
||||||
|
# the file:// local-aur db): the check only needs a prepared
|
||||||
|
# transaction
|
||||||
|
sed -i '/^\[options\]/a XferCommand = /usr/bin/false %u' "$CONF"
|
||||||
|
|
||||||
# Collect only packages that exist in the official repositories
|
# Packages built at ISO build time (build-end4-deps.sh) can't be
|
||||||
|
# resolved yet; everything else must be
|
||||||
|
mapfile -t AVAIL < <(pac -Slq | sort -u)
|
||||||
PKGS=()
|
PKGS=()
|
||||||
while IFS= read -r pkg; do
|
while IFS= read -r pkg; do
|
||||||
[[ -z "$pkg" || "$pkg" =~ ^# ]] && continue
|
[[ -z "$pkg" || "$pkg" =~ ^# ]] && continue
|
||||||
|
if printf '%s\n' "${AVAIL[@]}" | grep -qxF -- "$pkg"; then
|
||||||
# Check if the package exists in official repos
|
|
||||||
if pacman -Si "$pkg" >/dev/null 2>&1; then
|
|
||||||
PKGS+=("$pkg")
|
PKGS+=("$pkg")
|
||||||
else
|
else
|
||||||
echo "⚠️ Skipping AUR/missing package: $pkg"
|
echo "⚠️ Skipping unresolvable package: $pkg"
|
||||||
fi
|
fi
|
||||||
done < packages.x86_64
|
done < packages.x86_64
|
||||||
|
|
||||||
# Run conflict check only if we have official packages to test
|
# `pacman -Sp` skips conflict checks entirely, so run a real -S
|
||||||
|
# into an empty root. Conflicts and broken deps fail in "prepare",
|
||||||
|
# before any download; a clean list gets as far as the download,
|
||||||
|
# which the XferCommand above makes fail on purpose.
|
||||||
if [ ${#PKGS[@]} -eq 0 ]; then
|
if [ ${#PKGS[@]} -eq 0 ]; then
|
||||||
echo "✅ No official packages to check."
|
echo "✅ No resolvable packages to check."
|
||||||
elif CONFLICTS=$(pacman -Sp --needed "${PKGS[@]}" 2>&1); then
|
|
||||||
echo "✅ No package conflicts detected among official packages"
|
|
||||||
else
|
else
|
||||||
echo "------- Pacman Output -------"
|
OUT=$(pac -S --noconfirm --root "$ROOT" --cachedir "$ROOT" "${PKGS[@]}" 2>&1)
|
||||||
echo "$CONFLICTS"
|
if grep -q 'failed to prepare transaction' <<< "$OUT"; then
|
||||||
echo "-----------------------------"
|
echo "------- Pacman Output -------"
|
||||||
echo ""
|
grep -vE '^(http|file|ftp)' <<< "$OUT" | tail -40
|
||||||
echo "═══════════════════════════════════════════════════════════════"
|
echo "-----------------------------"
|
||||||
echo " ❌ Conflicting packages found — fix packages.x86_64"
|
echo ""
|
||||||
echo "═══════════════════════════════════════════════════════════════"
|
echo "═══════════════════════════════════════════════════════════════"
|
||||||
exit 1
|
echo " ❌ Conflicting/unresolvable packages — fix packages.x86_64"
|
||||||
|
echo "═══════════════════════════════════════════════════════════════"
|
||||||
|
exit 1
|
||||||
|
elif ! grep -q 'Proceed with installation' <<< "$OUT"; then
|
||||||
|
echo "------- Pacman Output -------"
|
||||||
|
tail -40 <<< "$OUT"
|
||||||
|
echo "-----------------------------"
|
||||||
|
echo "❌ pacman stopped before the conflict check completed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✅ No package conflicts detected (repos + local-aur)"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ AlvinArch/
|
|||||||
├── localrepo/
|
├── localrepo/
|
||||||
│ ├── build-end4-deps.sh # non-interactive AUR build (all deps)
|
│ ├── build-end4-deps.sh # non-interactive AUR build (all deps)
|
||||||
│ ├── end4-pkgbuilds/ # microtex-git, quickshell-git, bibata
|
│ ├── end4-pkgbuilds/ # microtex-git, quickshell-git, bibata
|
||||||
│ ├── illogical-impulse-quickshell-git-*.pkg.tar.zst
|
|
||||||
│ ├── illogical-impulse-bibata-modern-classic-bin-*.pkg.tar.zst
|
│ ├── illogical-impulse-bibata-modern-classic-bin-*.pkg.tar.zst
|
||||||
│ └── update.sh # existing, regenerates repo db
|
│ └── update.sh # existing, regenerates repo db
|
||||||
└── packages.x86_64 # 420 packages (65+ end-4 deps added)
|
└── packages.x86_64 # 420 packages (65+ end-4 deps added)
|
||||||
@@ -153,7 +152,7 @@ AlvinArch/
|
|||||||
│ ├── update.sh # Regenerates repo DB + syncs names to packages.x86_64
|
│ ├── update.sh # Regenerates repo DB + syncs names to packages.x86_64
|
||||||
│ ├── end4-pkgbuilds/ # PKGBUILDs: quickshell-git, microtex-git, bibata-modern-classic-bin
|
│ ├── end4-pkgbuilds/ # PKGBUILDs: quickshell-git, microtex-git, bibata-modern-classic-bin
|
||||||
│ ├── *.pkg.tar.zst # Pre-built packages (illogical-impulse-*, wallust, grub-customizer,
|
│ ├── *.pkg.tar.zst # Pre-built packages (illogical-impulse-*, wallust, grub-customizer,
|
||||||
│ │ # snapd, upscayl, meshy-git, pacserve, etc.)
|
│ │ # snapd, upscayl, eternalterminal, etc.)
|
||||||
│ └── local-aur.db{,.tar.gz} # Repo database files
|
│ └── local-aur.db{,.tar.gz} # Repo database files
|
||||||
├── efiboot/ # UEFI boot (systemd-boot)
|
├── efiboot/ # UEFI boot (systemd-boot)
|
||||||
│ └── loader/
|
│ └── loader/
|
||||||
@@ -286,7 +285,7 @@ Custom PKGBUILDs for end-4 metapackages:
|
|||||||
|
|
||||||
### Pre-built Packages
|
### Pre-built Packages
|
||||||
|
|
||||||
Packages like `illogical-impulse-quickshell-git`, `illogical-impulse-bibata-modern-classic-bin`, `wallust`, `grub-customizer`, `snapd`, `upscayl-bin`, `meshy-git`, `xwaylandvideobridge`, `pacserve`, etc.
|
Packages like `illogical-impulse-bibata-modern-classic-bin`, `wallust`, `grub-customizer`, `snapd`, `upscayl-bin`, `xwaylandvideobridge`, `eternalterminal`, etc.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+3
-3
@@ -386,6 +386,9 @@ vim
|
|||||||
virt-manager
|
virt-manager
|
||||||
virtualbox-guest-utils-nox
|
virtualbox-guest-utils-nox
|
||||||
vpnc
|
vpnc
|
||||||
|
vulkan-intel
|
||||||
|
vulkan-nouveau
|
||||||
|
vulkan-radeon
|
||||||
wallust
|
wallust
|
||||||
wayland-protocols
|
wayland-protocols
|
||||||
wine
|
wine
|
||||||
@@ -411,6 +414,3 @@ zen-browser-bin
|
|||||||
zram-generator
|
zram-generator
|
||||||
zsh
|
zsh
|
||||||
zsh-completions
|
zsh-completions
|
||||||
vulkan-radeon
|
|
||||||
vulkan-intel
|
|
||||||
vulkan-nouveau
|
|
||||||
|
|||||||
Reference in New Issue
Block a user