Compare commits
2
Commits
f06bfd1512
...
0e57df4360
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0e57df4360
|
||
|
|
da26e88147
|
+42
-13
@@ -309,34 +309,63 @@ jobs:
|
||||
echo " Checking for conflicting packages in packages.x86_64"
|
||||
echo "═══════════════════════════════════════════════════════════════"
|
||||
|
||||
# Sync databases first so pacman knows what exists
|
||||
sudo pacman -Sy --noconfirm
|
||||
# Resolve against the repos mkarchiso sees, including [local-aur]
|
||||
# (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=()
|
||||
while IFS= read -r pkg; do
|
||||
[[ -z "$pkg" || "$pkg" =~ ^# ]] && continue
|
||||
|
||||
# Check if the package exists in official repos
|
||||
if pacman -Si "$pkg" >/dev/null 2>&1; then
|
||||
if printf '%s\n' "${AVAIL[@]}" | grep -qxF -- "$pkg"; then
|
||||
PKGS+=("$pkg")
|
||||
else
|
||||
echo "⚠️ Skipping AUR/missing package: $pkg"
|
||||
echo "⚠️ Skipping unresolvable package: $pkg"
|
||||
fi
|
||||
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
|
||||
echo "✅ No official packages to check."
|
||||
elif CONFLICTS=$(pacman -Sp --needed "${PKGS[@]}" 2>&1); then
|
||||
echo "✅ No package conflicts detected among official packages"
|
||||
echo "✅ No resolvable packages to check."
|
||||
else
|
||||
OUT=$(pac -S --noconfirm --root "$ROOT" --cachedir "$ROOT" "${PKGS[@]}" 2>&1)
|
||||
if grep -q 'failed to prepare transaction' <<< "$OUT"; then
|
||||
echo "------- Pacman Output -------"
|
||||
echo "$CONFLICTS"
|
||||
grep -vE '^(http|file|ftp)' <<< "$OUT" | tail -40
|
||||
echo "-----------------------------"
|
||||
echo ""
|
||||
echo "═══════════════════════════════════════════════════════════════"
|
||||
echo " ❌ Conflicting packages found — fix packages.x86_64"
|
||||
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
|
||||
|
||||
@@ -21,7 +21,6 @@ AlvinArch/
|
||||
├── localrepo/
|
||||
│ ├── build-end4-deps.sh # non-interactive AUR build (all deps)
|
||||
│ ├── end4-pkgbuilds/ # microtex-git, quickshell-git, bibata
|
||||
│ ├── illogical-impulse-quickshell-git-*.pkg.tar.zst
|
||||
│ ├── illogical-impulse-bibata-modern-classic-bin-*.pkg.tar.zst
|
||||
│ └── update.sh # existing, regenerates repo db
|
||||
└── 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
|
||||
│ ├── end4-pkgbuilds/ # PKGBUILDs: quickshell-git, microtex-git, bibata-modern-classic-bin
|
||||
│ ├── *.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
|
||||
├── efiboot/ # UEFI boot (systemd-boot)
|
||||
│ └── loader/
|
||||
@@ -286,7 +285,7 @@ Custom PKGBUILDs for end-4 metapackages:
|
||||
|
||||
### 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
|
||||
virtualbox-guest-utils-nox
|
||||
vpnc
|
||||
vulkan-intel
|
||||
vulkan-nouveau
|
||||
vulkan-radeon
|
||||
wallust
|
||||
wayland-protocols
|
||||
wine
|
||||
@@ -411,6 +414,3 @@ zen-browser-bin
|
||||
zram-generator
|
||||
zsh
|
||||
zsh-completions
|
||||
vulkan-radeon
|
||||
vulkan-intel
|
||||
vulkan-nouveau
|
||||
|
||||
Reference in New Issue
Block a user