mirror of
https://github.com/arcan1s/dotfiles.git
synced 2025-04-25 00:17:17 +00:00
92 lines
2.8 KiB
Bash
Executable File
92 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# variables
|
|
DBNAME="arcanisrepo"
|
|
PREPAREDIR="${HOME}/arch/prepare"
|
|
REPODIR="${HOME}/arch/repo"
|
|
ROOTDIR="${HOME}/arch/root"
|
|
STAGINGDIR="${HOME}/arch/staging/"
|
|
|
|
# functions
|
|
func_remove() {
|
|
DBPATH="$1"
|
|
PKGNAME="$2"
|
|
/usr/bin/repo-remove ${DBNAME}.db.tar.gz ${PKGNAME}
|
|
/usr/bin/repo-remove ${DBNAME}.files.tar.gz ${PKGNAME}
|
|
/usr/bin/rm -f ${PKGNAME}*
|
|
}
|
|
export -f func_remove
|
|
func_build() {
|
|
PREPARE="$1"
|
|
ROOT="$2"
|
|
if grep "arch=('any')" PKGBUILD -q; then
|
|
/usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}"
|
|
else
|
|
if grep "lib32" PKGBUILD -q; then
|
|
/usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}"
|
|
/usr/bin/sudo /usr/bin/multilib-staging-build -r "${ROOT}"
|
|
else
|
|
/usr/bin/sudo /usr/bin/staging-i686-build -r "${ROOT}"
|
|
/usr/bin/sudo /usr/bin/staging-x86_64-build -r "${ROOT}"
|
|
fi
|
|
fi
|
|
/usr/bin/cp *.pkg.tar.xz "${PREPARE}"
|
|
}
|
|
export -f func_build
|
|
|
|
# error checking
|
|
if [ ! -d "${PREPAREDIR}" ]; then
|
|
echo "Prepare directory does not exist"
|
|
exit 1
|
|
fi
|
|
if [ ! -d "${REPODIR}" ] || [ ! -d "${REPODIR}/i686" ] || [ ! -d "${REPODIR}/x86_64" ]; then
|
|
echo "Repository directory does not exist"
|
|
exit 1
|
|
fi
|
|
if [ ! -d "${STAGINGDIR}" ]; then
|
|
echo "Staging directory does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
# building
|
|
cd "${STAGINGDIR}"
|
|
/usr/bin/find -name 'PKGBUILD' -type f -execdir /usr/bin/bash -c "func_build "${PREPAREDIR}" "${ROOTDIR}"" \;
|
|
|
|
# signing
|
|
cd "${PREPAREDIR}"
|
|
for PACKAGE in $(/usr/bin/ls *.pkg.tar.xz); do
|
|
/usr/bin/gpg -b ${PACKAGE}
|
|
done
|
|
|
|
# creating packages list
|
|
i686_PACKAGES=$(/usr/bin/ls *.pkg.tar.xz | /usr/bin/grep "i686\|any")
|
|
x86_64_PACKAGES=$(/usr/bin/ls *.pkg.tar.xz | /usr/bin/grep "x86_64\|any")
|
|
echo "i686 packages: ${i686_PACKAGES}"
|
|
echo "x86_64 packages: ${x86_64_PACKAGES}"
|
|
|
|
# updating i686 repo
|
|
cd "${REPODIR}/i686"
|
|
for PACKAGE in ${i686_PACKAGES}; do
|
|
PKGNAME=$(echo ${PACKAGE} | /usr/bin/awk -F '-' '{for(i=1; i<=NF-3;i++) {printf("%s-", $i);}}' | /usr/bin/sed 's/.$//')
|
|
/usr/bin/find -name '${PKGNAME}*' -type f -exec /usr/bin/bash -c "func_remove "${DBNAME}" "${PKGNAME}"" \;
|
|
/usr/bin/cp "${PREPAREDIR}/${PACKAGE}"{,.sig} .
|
|
done
|
|
/usr/bin/repo-add --new ${DBNAME}.db.tar.gz *.pkg.tar.xz
|
|
/usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz *.pkg.tar.xz
|
|
|
|
# updating x86_64 repo
|
|
cd "${REPODIR}/x86_64"
|
|
for PACKAGE in ${x86_64_PACKAGES}; do
|
|
PKGNAME=$(echo ${PACKAGE} | /usr/bin/awk -F '-' '{for(i=1; i<=NF-3;i++) {printf("%s-", $i);}}' | /usr/bin/sed 's/.$//')
|
|
/usr/bin/find -name '${PKGNAME}*' -type f -exec /usr/bin/bash -c "func_remove "${DBNAME}" "${PKGNAME}"" \;
|
|
/usr/bin/cp "${PREPAREDIR}/${PACKAGE}"{,.sig} .
|
|
done
|
|
/usr/bin/repo-add --new ${DBNAME}.db.tar.gz *.pkg.tar.xz
|
|
/usr/bin/repo-add --new --files ${DBNAME}.files.tar.gz *.pkg.tar.xz
|
|
|
|
# clear
|
|
cd "${PREPAREDIR}"
|
|
/usr/bin/rm -rf *
|
|
cd "${STAGINGDIR}"
|
|
/usr/bin/rm -rf *
|