Init
This commit is contained in:
commit
f49d58b540
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
built_packages/
|
||||
clone/
|
136
clone.sh
Executable file
136
clone.sh
Executable file
@ -0,0 +1,136 @@
|
||||
#!/bin/bash
|
||||
#set -x
|
||||
|
||||
### Color Codes
|
||||
|
||||
RED="\e[31m"
|
||||
GREEN="\e[32m"
|
||||
ENDCOLOR="\e[0m"
|
||||
|
||||
#find . -not -name "packages.txt" -not -name "clone.sh" -not -name "." -exec rm -rfv {} \;
|
||||
working_directory=$(pwd)
|
||||
mkdir $working_directory/built_packages/
|
||||
mkdir $working_directory/clone/
|
||||
function statisfy_dependencies() {
|
||||
for line in "$@"; do
|
||||
cd $working_directory/clone
|
||||
# clone all the packages first
|
||||
echo "Attempting to clone $line..."
|
||||
if ! [ -d $line ]; then
|
||||
timeout 10s git clone https://gitlab.archlinux.org/archlinux/packaging/packages/$line.git
|
||||
cd $working_directory/clone/$line
|
||||
git switch main
|
||||
#git branch -a
|
||||
else
|
||||
cd $working_directory/clone/$line
|
||||
# git pull
|
||||
# git switch main
|
||||
fi
|
||||
done
|
||||
|
||||
cd $working_directory
|
||||
}
|
||||
function containsElement () {
|
||||
local e match="$1"
|
||||
shift
|
||||
for e in "$@"; do
|
||||
[[ "$e" == "$match" ]] && return 0; done
|
||||
return 1
|
||||
}
|
||||
|
||||
readarray first_pass < packages.txt
|
||||
echo $first_pass
|
||||
statisfy_dependencies ${first_pass[@]}
|
||||
depends_array=()
|
||||
makedepends_array=()
|
||||
conflicts_array=()
|
||||
while read line; do
|
||||
# Check each PKGBUILD's dependencies.
|
||||
cd $working_directory/clone/$line
|
||||
# grab depends array
|
||||
# eval $(source PKGBUILD; echo depends=$depends; echo makedepends=$makedepends; echo conflicts=$conflicts)
|
||||
|
||||
# cache the output of makepkg to a file, since makepkg is slow at parsing the srcinfo data
|
||||
if [[ ! -f $working_directory/clone/$line/.SRCINFO ]]; then
|
||||
makepkg_output=$(makepkg --printsrcinfo )
|
||||
echo $makepkg_output | tee $working_directory/clone/$line/.SRCINFO
|
||||
else
|
||||
makepkg_output=$(cat $working_directory/clone/$line/.SRCINFO)
|
||||
fi
|
||||
#echo "$makepkg_output"
|
||||
depends=$(echo "$makepkg_output" | grep -w "depends" | sed "s/depends = //g" | xargs)
|
||||
makedepends=$(echo "$makepkg_output" | grep -w "makedepends" | sed "s/makedepends = //g" | xargs)
|
||||
conflicts=$(echo "$makepkg_output" | grep -w "conflicts" | sed "s/conflicts = //g" | xargs)
|
||||
# if we don't have the dependency, we need build it too
|
||||
echo "depends for $line: ${depends[@]}"
|
||||
for depends_element in ${depends[@]}; do
|
||||
containsElement "$depends_element" "${depends_array[@]}"
|
||||
if [[ $? == 1 ]]; then
|
||||
echo "Adding ${depends_element}..."
|
||||
depends_array+=("$depends_element")
|
||||
fi
|
||||
done
|
||||
for depends_element in ${makedepends[@]}; do
|
||||
containsElement "$depends_element" "${depends_array[@]}"
|
||||
if [[ $? == 1 ]]; then
|
||||
echo "Adding ${depends_element}..."
|
||||
depends_array+=("$depends_element")
|
||||
makedepends_array+=("$depends_element")
|
||||
fi
|
||||
done
|
||||
for conflicts_element in ${conflicts[@]}; do
|
||||
containsElement "$conflicts_element" "${conflicts_array[@]}"
|
||||
if [[ $? == 1 ]]; then
|
||||
echo -e "Conflicting elements for $line: ${RED} ${conflicts_element}${ENDCOLOR} ..."
|
||||
conflicts_array+=("${conflicts_element}")
|
||||
fi
|
||||
done
|
||||
|
||||
done < packages.txt
|
||||
cd $working_directory
|
||||
# Remove these dependencies, they are already taken care of, anyway :P
|
||||
#delete=(gcc-libs glibc appstream-qt futuresql-qt6 cron clang=16.0.6 boost-libs kcachegrind-common kquickimageeditor libkmahjongg marble-common libcolord corrosion flatpak colord cronie kwrite plasma-workspace kgamma5 kdesdk-kioslaves zeroconf-ioslave kalendar)
|
||||
delete=(clang=17.0.6 llvm-libs appstream-qt gcc-libs futuresql-qt6 boost-libs util-linux-libs systemd-libs packagekit-qt6 polkit-qt6 sh mesa-utils mesa-utils libpipewire)
|
||||
for target in "${delete[@]}"; do
|
||||
for i in "${!depends_array[@]}"; do
|
||||
if [[ ${depends_array[i]} = $target ]]; then
|
||||
unset 'depends_array[i]'
|
||||
fi
|
||||
done
|
||||
done
|
||||
echo ${depends_array[@]}
|
||||
statisfy_dependencies ${depends_array[@]}
|
||||
cd $working_directory/clone
|
||||
echo -e "Conflicts detected: ${RED} ${conflicts_array[@]} ${ENDCOLOR}"
|
||||
#read -p "Press Enter to continue..." </dev/tty
|
||||
|
||||
function are_all_pkgs_built() {
|
||||
for package in "$working_directory"/clone/*; do
|
||||
if [ -f "$package"/*.pkg.* ]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
COUNTER = 0
|
||||
while are_all_pkgs_built; do
|
||||
COUNTER = 0
|
||||
for i in "$working_directory"/clone/*; do
|
||||
if [ ! -f "${working_directory}/built_packages/${i##*/}"*.pkg.* ]; then #Skip-built packages
|
||||
echo "Attempting to build ${i##*/} ($COUNTER out of $(echo $working_directory/clone/* | wc | awk '{print $2}'))"
|
||||
cd "$i"
|
||||
eval "$(source PKGBUILD; echo makedepends="$makedepends")"
|
||||
makepkg -ACcsi --noconfirm --nocheck --skipinteg
|
||||
cp -v *.pkg.* "$working_directory"/built_packages/
|
||||
else
|
||||
echo "It appears that ${i##*/} is already built, skipping..."
|
||||
fi
|
||||
COUNTER=$((COUNTER+1))
|
||||
done
|
||||
done
|
||||
|
||||
#paru --sudoloop --useask -B *
|
||||
#paru --sudoloop --mode repo --clonedir $working_directory/clone -B *
|
||||
#for i in *; do
|
||||
|
||||
#done
|
269
packages.txt
Normal file
269
packages.txt
Normal file
@ -0,0 +1,269 @@
|
||||
kcrash
|
||||
kdeclarative
|
||||
kglobalaccel
|
||||
kidletime
|
||||
kio
|
||||
kirigami
|
||||
kpackage
|
||||
ksvg
|
||||
kxmlgui
|
||||
libplasma
|
||||
kmime
|
||||
kcoreaddons
|
||||
ki18n
|
||||
bluedevil
|
||||
breeze
|
||||
breeze-gtk
|
||||
breeze-plymouth
|
||||
discover
|
||||
drkonqi
|
||||
flatpak-kcm
|
||||
kactivitymanagerd
|
||||
kde-cli-tools
|
||||
kde-gtk-config
|
||||
kdecoration
|
||||
kdeplasma-addons
|
||||
kgamma
|
||||
khotkeys
|
||||
kinfocenter
|
||||
kmenuedit
|
||||
kpipewire
|
||||
kscreen
|
||||
kscreenlocker
|
||||
ksshaskpass
|
||||
ksystemstats
|
||||
kwallet-pam
|
||||
kwayland-integration
|
||||
kwin
|
||||
kwrited
|
||||
layer-shell-qt
|
||||
libkscreen
|
||||
libksysguard
|
||||
milou
|
||||
oxygen
|
||||
oxygen-sounds
|
||||
plasma-browser-integration
|
||||
plasma-desktop
|
||||
plasma-disks
|
||||
plasma-firewall
|
||||
plasma-integration
|
||||
plasma-nm
|
||||
plasma-pa
|
||||
plasma-sdk
|
||||
plasma-systemmonitor
|
||||
plasma-thunderbolt
|
||||
plasma-vault
|
||||
plasma-welcome
|
||||
plasma-workspace
|
||||
plasma-workspace-wallpapers
|
||||
plymouth-kcm
|
||||
polkit-kde-agent
|
||||
powerdevil
|
||||
sddm-kcm
|
||||
systemsettings
|
||||
xdg-desktop-portal-kde
|
||||
akonadi-calendar-tools
|
||||
akonadi-import-wizard
|
||||
akonadiconsole
|
||||
akregator
|
||||
alligator
|
||||
angelfish
|
||||
arianna
|
||||
ark
|
||||
artikulate
|
||||
audiocd-kio
|
||||
audiotube
|
||||
blinken
|
||||
bomber
|
||||
bovo
|
||||
cantor
|
||||
cervisia
|
||||
colord-kde
|
||||
dolphin
|
||||
dolphin-plugins
|
||||
dragon
|
||||
elisa
|
||||
falkon
|
||||
ffmpegthumbs
|
||||
filelight
|
||||
ghostwriter
|
||||
granatier
|
||||
grantlee-editor
|
||||
gwenview
|
||||
itinerary
|
||||
juk
|
||||
k3b
|
||||
kaddressbook
|
||||
kajongg
|
||||
kalarm
|
||||
kalgebra
|
||||
kalk
|
||||
kalzium
|
||||
kamera
|
||||
kamoso
|
||||
kanagram
|
||||
kapman
|
||||
kapptemplate
|
||||
kasts
|
||||
kate
|
||||
katomic
|
||||
kbackup
|
||||
kblackbox
|
||||
kblocks
|
||||
kbounce
|
||||
kbreakout
|
||||
kbruch
|
||||
kcachegrind
|
||||
kcalc
|
||||
kcharselect
|
||||
kclock
|
||||
kcolorchooser
|
||||
kde-dev-scripts
|
||||
kde-dev-utils
|
||||
kde-inotify-survey
|
||||
kdebugsettings
|
||||
kdeconnect
|
||||
kdegraphics-thumbnailers
|
||||
kdenetwork-filesharing
|
||||
kdenlive
|
||||
kdepim-addons
|
||||
kdesdk-kio
|
||||
kdesdk-thumbnailers
|
||||
kdevelop
|
||||
kdevelop-php
|
||||
kdevelop-python
|
||||
kdf
|
||||
kdialog
|
||||
kdiamond
|
||||
keditbookmarks
|
||||
keysmith
|
||||
kfind
|
||||
kfourinline
|
||||
kgeography
|
||||
kget
|
||||
kgoldrunner
|
||||
kgpg
|
||||
khangman
|
||||
khelpcenter
|
||||
kig
|
||||
kigo
|
||||
killbots
|
||||
kimagemapeditor
|
||||
kio-admin
|
||||
kio-extras
|
||||
kio-gdrive
|
||||
kio-zeroconf
|
||||
kirigami-gallery
|
||||
kiriki
|
||||
kiten
|
||||
kjournald
|
||||
kjumpingcube
|
||||
kleopatra
|
||||
klettres
|
||||
klickety
|
||||
klines
|
||||
kmag
|
||||
kmahjongg
|
||||
kmail
|
||||
kmail-account-wizard
|
||||
kmines
|
||||
kmix
|
||||
kmousetool
|
||||
kmouth
|
||||
kmplot
|
||||
knavalbattle
|
||||
knetwalk
|
||||
knights
|
||||
knotes
|
||||
koko
|
||||
kolf
|
||||
kollision
|
||||
kolourpaint
|
||||
kompare
|
||||
kongress
|
||||
konqueror
|
||||
konquest
|
||||
konsole
|
||||
kontact
|
||||
kontrast
|
||||
konversation
|
||||
kopete
|
||||
korganizer
|
||||
kpat
|
||||
krdc
|
||||
krecorder
|
||||
kreversi
|
||||
krfb
|
||||
kruler
|
||||
kshisen
|
||||
ksirk
|
||||
ksnakeduel
|
||||
kspaceduel
|
||||
ksquares
|
||||
ksudoku
|
||||
ksystemlog
|
||||
kteatime
|
||||
ktimer
|
||||
ktorrent
|
||||
ktouch
|
||||
ktrip
|
||||
ktuberling
|
||||
kturtle
|
||||
kubrick
|
||||
kwalletmanager
|
||||
kwave
|
||||
kweather
|
||||
kwordquiz
|
||||
lokalize
|
||||
lskat
|
||||
marble
|
||||
markdownpart
|
||||
mbox-importer
|
||||
merkuro
|
||||
minuet
|
||||
neochat
|
||||
okular
|
||||
palapeli
|
||||
parley
|
||||
partitionmanager
|
||||
picmi
|
||||
pim-data-exporter
|
||||
pim-sieve-editor
|
||||
plasmatube
|
||||
poxml
|
||||
print-manager
|
||||
rocs
|
||||
signon-kwallet-extension
|
||||
skanlite
|
||||
skanpage
|
||||
skladnik
|
||||
spectacle
|
||||
step
|
||||
svgpart
|
||||
sweeper
|
||||
telly-skout
|
||||
tokodon
|
||||
umbrello
|
||||
yakuake
|
||||
zanshin
|
||||
qt6-base
|
||||
svt-av1
|
||||
vmaf
|
||||
qt6-multimedia
|
||||
karchive
|
||||
kwindowsystem
|
||||
kconfigwidgets
|
||||
kitemviews
|
||||
knotifications
|
||||
kwidgetsaddons
|
||||
kcodecs
|
||||
kconfig
|
||||
kcontacts
|
||||
kdbusaddons
|
||||
kio
|
||||
kitemmodels
|
||||
kxmlgui
|
||||
ktextwidgets
|
||||
kcmutils
|
||||
kparts
|
||||
kdoctools
|
Loading…
Reference in New Issue
Block a user