summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xarchPackagesUpdate1160
1 files changed, 559 insertions, 601 deletions
diff --git a/archPackagesUpdate b/archPackagesUpdate
index 50ed1bfc5..c5a182706 100755
--- a/archPackagesUpdate
+++ b/archPackagesUpdate
@@ -6,10 +6,6 @@ trap 'rm -rf --one-file-system "${tmpDir}"' EXIT
pkgDir='/srv/http/vhosts/eckner.net/archlinuxewe/os'
pkgDir32='/mnt/mirror.archlinux32.org/x86_64/releng'
pkgSrcDir="$(dirname $(readlink -f -n "$0"))"
-[ "$(uname -n)" == "rechenknecht" ] && \
- [ "${pkgSrcDir}" == "${HOME}" ] && \
- aufRechenknecht=true || \
- aufRechenknecht=false
export SRCDEST="${HOME}/packageSources"
export PACKAGER='Erich Eckner <arch at eckner dot net>'
key='5FDCA472AB93292BC678FD59255A76DB9A12601A'
@@ -28,13 +24,6 @@ log=''
logFile='-'
printOnly=false
-if ${aufRechenknecht}; then
- submoduleDir="${pkgSrcDir}/submodules"
- pkgSrcDir="${pkgSrcDir}/archPackages"
-else
- submoduleDir='/dev/null'
-fi
-
# print help screen
usage()
{
@@ -236,14 +225,8 @@ done
cd "${tmpDir}"
-# update $0
-if ${updateMe} && ${aufRechenknecht} && [ -e "$(basename "$0")" ] && ! diff -q "$(basename "$0")" "$0" &> /dev/null; then
- cp "$(basename "$0")" "$0"
- exec "$0" "${args[@]}"
-fi
-
# clean unsigned packages
-if ${cleanUnsigned} && ${aufRechenknecht}; then
+if ${cleanUnsigned}; then
ssh archlinuxewe@eckner.net "$(
printf '
rmPaket() {
@@ -300,654 +283,629 @@ if [ -f '.gitmodules' ]; then
>&2 printf ' done.\n'
fi
-if ${aufRechenknecht}; then
+# check packages
+if ${checkSanity}; then
- if ${force}; then
- available_packages=''
- else
- available_packages=$(
- {
- curl -Ss 'https://arch.eckner.net/os/' \
- | sed '
- s@^.*<a href="\([^/"]\+\)/">\1/</a>.*$@\1@
- /^\.\.$/d
- /^any$/d
- t
- d
- ' \
- | while read -r arch; do
- curl -Ss 'https://arch.eckner.net/os/'"${arch}"'/archlinuxewe.db.tar.gz' \
- | tar -Oxzf - \
- | sed -n '
- /^%FILENAME%$/ {
- N
- s@^%FILENAME%\n@archlinuxewe/'"${arch}"'/@
- T
- p
- }
- '
- done
- curl -Ss 'https://mirror.archlinux32.org/x86_64/releng/releng.db.tar.gz' \
+ err=false
+
+ namcap */PKGBUILD || err=true
+
+ for paket in *; do
+ [ -r "${paket}/PKGBUILD" ] || continue
+
+ if ! grep -q "^# Maintainer\s*:\s\+Erich Eckner\s\+<arch at eckner dot net>\$" "${paket}/PKGBUILD" || \
+ grep "^# Maintainer\s*:" "${paket}/PKGBUILD" | \
+ grep -vq "^# Maintainer\s*:\s\+Erich Eckner\s\+<arch at eckner dot net>\$"; then
+ >&2 echo "${paket}/PKGBUILD hat falsche(n) Maintainer"
+ if grep -qxF '[submodule "'"${paket}"'"]' '.gitmodules'; then
+ continue
+ fi
+ err=true
+ fi
+
+ done
+ if ${err}; then
+ exit 1
+ fi
+
+fi
+
+if ${force}; then
+ available_packages=''
+else
+ available_packages=$(
+ {
+ curl -Ss 'https://arch.eckner.net/os/' \
+ | sed '
+ s@^.*<a href="\([^/"]\+\)/">\1/</a>.*$@\1@
+ /^\.\.$/d
+ /^any$/d
+ t
+ d
+ ' \
+ | while read -r arch; do
+ curl -Ss 'https://arch.eckner.net/os/'"${arch}"'/archlinuxewe.db.tar.gz' \
| tar -Oxzf - \
- | sed '
+ | sed -n '
/^%FILENAME%$/ {
N
- s@^%FILENAME%\n@releng/x86_64/@
- t
+ s@^%FILENAME%\n@archlinuxewe/'"${arch}"'/@
+ T
+ p
}
- d
'
- } \
+ done
+ curl -Ss 'https://mirror.archlinux32.org/x86_64/releng/releng.db.tar.gz' \
+ | tar -Oxzf - \
| sed '
- s@^\([^/]\+/\)[^/]\+\(/[^/]\+-any\.pkg\.tar\.\(xz\|zst\)\)$@\0\n\1any\2@
- ' \
- | sort -u
- )
- fi
+ /^%FILENAME%$/ {
+ N
+ s@^%FILENAME%\n@releng/x86_64/@
+ t
+ }
+ d
+ '
+ } \
+ | sed '
+ s@^\([^/]\+/\)[^/]\+\(/[^/]\+-any\.pkg\.tar\.\(xz\|zst\)\)$@\0\n\1any\2@
+ ' \
+ | sort -u
+ )
+fi
# collect packages
- for paket in $( \
- echo */PKGBUILD | \
- sed "s|/PKGBUILD||g" \
- ); do
- [ -d "${paket}" ] || continue
- [ ${#onlyPackages[@]} -eq 0 ] && consider=true || consider=false
- for ((i=0; i<${#onlyPackages[@]}; i++)); do
- [[ "${paket}" == "${onlyPackages[${i}]%:*}" ]] && consider=true
- done
- ${consider} || continue
-
- unset epoch
- unset pkgname
- unset arch
- . "${paket}/PKGBUILD"
- if grep -q '#\s*repo:\s*releng\s*\(#.*\)\?$' "${paket}/PKGBUILD"; then
- repo='releng'
- else
- repo='archlinuxewe'
- fi
-
- missing_archs=$(
- for pkgnam in "${pkgname[@]}"; do
-
- archs=$(
- declare -f package_${pkgnam} | \
- sed -n '
- s/^\s*arch=(\(.\+\));$/\1/
- T
- s/["'"'"']//g
- y/ /\n/
- p
- ' | \
- grep -xF 'any' || \
- printf '%s\n' "${arch[@]}"
- )
-
- for singleArch in ${archs}; do
-
- [ "${singleArch}" == "x86_64" ] || \
- [ "${singleArch}" == "pentium4" ] || \
- [ "${singleArch}" == "i486" ] || \
- [ "${singleArch}" == "i686" ] || \
- [ "${singleArch}" == "armv6h" ] || \
- [ "${singleArch}" == "armv7h" ] || \
- [ "${singleArch}" == "aarch64" ] || \
- [ "${singleArch}" == "any" ] || \
- continue
-
- pkgFile="${pkgnam}-${epoch:+${epoch}:}${pkgver}-${pkgrel}-${singleArch}.pkg.tar.zst"
- if ! printf '%s\n' "${available_packages}" \
- | grep -qxF "${repo}/${singleArch}/${pkgFile}"; then
- printf '%s\n' "${singleArch}"
- fi
+for paket in $( \
+ echo */PKGBUILD | \
+ sed "s|/PKGBUILD||g" \
+ ); do
+ [ -d "${paket}" ] || continue
+ [ ${#onlyPackages[@]} -eq 0 ] && consider=true || consider=false
+ for ((i=0; i<${#onlyPackages[@]}; i++)); do
+ [[ "${paket}" == "${onlyPackages[${i}]%:*}" ]] && consider=true
+ done
+ ${consider} || continue
+
+ unset epoch
+ unset pkgname
+ unset arch
+ . "${paket}/PKGBUILD"
+ if grep -q '#\s*repo:\s*releng\s*\(#.*\)\?$' "${paket}/PKGBUILD"; then
+ repo='releng'
+ else
+ repo='archlinuxewe'
+ fi
- done
+ missing_archs=$(
+ for pkgnam in "${pkgname[@]}"; do
- done | \
- sort -u
- )
- if [ ${#onlyArchs[@]} -ne 0 ]; then
- missing_archs=$(
- printf '%s\n' "${missing_archs}" | \
- grep -xF "$(printf '%s\n' "${onlyArchs[@]}")"
+ archs=$(
+ declare -f package_${pkgnam} | \
+ sed -n '
+ s/^\s*arch=(\(.\+\));$/\1/
+ T
+ s/["'"'"']//g
+ y/ /\n/
+ p
+ ' | \
+ grep -xF 'any' || \
+ printf '%s\n' "${arch[@]}"
)
- fi
- if [ ${#onlyPackages[@]} -ne 0 ]; then
- unset tmpOnlyArchs
- for ((i=0; i<${#onlyPackages[@]}; i++)); do
- [[ "${paket}" == "${onlyPackages[${i}]%:*}" ]] || continue
- [ -z "${onlyPackages[${i}]%%*:*}" ] || continue
- tmpOnlyArchs[${#tmpOnlyArchs[@]}]="${onlyPackages[${i}]##*:}"
- done
- if [ ${#tmpOnlyArchs[@]} -ne 0 ]; then
- missing_archs=$(
- printf '%s\n' "${missing_archs}" | \
- grep -xF "$(printf '%s\n' "${tmpOnlyArchs[@]}")"
- )
- fi
- fi
- if [ -n "${missing_archs}" ]; then
- for singleArch in ${missing_archs}; do
- if ! printf '%s\n' "${arch[@]}" | \
- grep -qxF "${singleArch}"; then
+ for singleArch in ${archs}; do
+
+ [ "${singleArch}" == "x86_64" ] || \
+ [ "${singleArch}" == "pentium4" ] || \
+ [ "${singleArch}" == "i486" ] || \
+ [ "${singleArch}" == "i686" ] || \
+ [ "${singleArch}" == "armv6h" ] || \
+ [ "${singleArch}" == "armv7h" ] || \
+ [ "${singleArch}" == "aarch64" ] || \
+ [ "${singleArch}" == "any" ] || \
continue
+
+ pkgFile="${pkgnam}-${epoch:+${epoch}:}${pkgver}-${pkgrel}-${singleArch}.pkg.tar.zst"
+ if ! printf '%s\n' "${available_packages}" \
+ | grep -qxF "${repo}/${singleArch}/${pkgFile}"; then
+ printf '%s\n' "${singleArch}"
fi
- pakete[${#pakete[@]}]="${paket}"
- pakete_teile_und_archs[${#pakete_teile_und_archs[@]}]=$(
- for pn in "${pkgname[@]}"; do
- printf '%s:%s\n' \
- "$(
- declare -f package_${pn} | \
- sed -n '
- s/^\s*arch=(\(.\+\));$/\1/
- T
- s/["'"'"']//g
- y/ /\n/
- p
- ' | \
- grep -xF 'any' || \
- printf '%s' "${singleArch}"
- )" \
- "${pn}" \
- | if [ "${singleArch}" != 'any' ] \
- && [ "${singleArch}" != 'x86_64' ]; then
- sed '/^any:/d'
- else
- cat
- fi
- done
- )
- archs[${#archs[@]}]="${singleArch}"
- verss[${#verss[@]}]="${epoch:+${epoch}:}${pkgver}-${pkgrel}"
- if [ "${repo}" != 'archlinuxewe' ]; then
- repos[${#repos[@]}]="${repo} archlinuxewe"
- else
- repos[${#repos[@]}]="${repo}"
- fi
+
done
- fi
- done
-# only print packages to be built?
- if ${printOnly}; then
- printf '%d scheduled builds:\n' "${#pakete[@]}"
- for ((i=0; i<${#pakete[@]}; i++)); do
- echo " ${pakete[${i}]} ${verss[${i}]} ${archs[${i}]}"
- printf ' %s\n' ${pakete_teile_und_archs[${i}]}
+ done | \
+ sort -u
+ )
+ if [ ${#onlyArchs[@]} -ne 0 ]; then
+ missing_archs=$(
+ printf '%s\n' "${missing_archs}" | \
+ grep -xF "$(printf '%s\n' "${onlyArchs[@]}")"
+ )
+ fi
+ if [ ${#onlyPackages[@]} -ne 0 ]; then
+ unset tmpOnlyArchs
+ for ((i=0; i<${#onlyPackages[@]}; i++)); do
+ [[ "${paket}" == "${onlyPackages[${i}]%:*}" ]] || continue
+ [ -z "${onlyPackages[${i}]%%*:*}" ] || continue
+ tmpOnlyArchs[${#tmpOnlyArchs[@]}]="${onlyPackages[${i}]##*:}"
done
- exit 0
+ if [ ${#tmpOnlyArchs[@]} -ne 0 ]; then
+ missing_archs=$(
+ printf '%s\n' "${missing_archs}" | \
+ grep -xF "$(printf '%s\n' "${tmpOnlyArchs[@]}")"
+ )
+ fi
fi
- maxErr=0
-
- # update git sources
- find "${SRCDEST}" -mindepth 2 -maxdepth 2 \( \
- -name 'HEAD' \
- -o -name '.git' \
- \) | \
- sed 's|/[^/]*$||' | \
- while read -r repo; do
- git -C "${repo}" fetch --all -p
- git -C "${repo}" fetch origin master:master
- done
- # update svn sources
- find "${SRCDEST}" -mindepth 2 -maxdepth 2 -name '.svn' | \
- sed 's|/[^/]*$||' | \
- while read -r repo; do
- svn update "${repo}"
+ if [ -n "${missing_archs}" ]; then
+ for singleArch in ${missing_archs}; do
+ if ! printf '%s\n' "${arch[@]}" | \
+ grep -qxF "${singleArch}"; then
+ continue
+ fi
+ pakete[${#pakete[@]}]="${paket}"
+ pakete_teile_und_archs[${#pakete_teile_und_archs[@]}]=$(
+ for pn in "${pkgname[@]}"; do
+ printf '%s:%s\n' \
+ "$(
+ declare -f package_${pn} | \
+ sed -n '
+ s/^\s*arch=(\(.\+\));$/\1/
+ T
+ s/["'"'"']//g
+ y/ /\n/
+ p
+ ' | \
+ grep -xF 'any' || \
+ printf '%s' "${singleArch}"
+ )" \
+ "${pn}" \
+ | if [ "${singleArch}" != 'any' ] \
+ && [ "${singleArch}" != 'x86_64' ]; then
+ sed '/^any:/d'
+ else
+ cat
+ fi
+ done
+ )
+ archs[${#archs[@]}]="${singleArch}"
+ verss[${#verss[@]}]="${epoch:+${epoch}:}${pkgver}-${pkgrel}"
+ if [ "${repo}" != 'archlinuxewe' ]; then
+ repos[${#repos[@]}]="${repo} archlinuxewe"
+ else
+ repos[${#repos[@]}]="${repo}"
+ fi
done
+ fi
+done
-# build packages
+# only print packages to be built?
+if ${printOnly}; then
+ printf '%d scheduled builds:\n' "${#pakete[@]}"
for ((i=0; i<${#pakete[@]}; i++)); do
- paket="${pakete[${i}]}"
- paket_teile_und_archs=(${pakete_teile_und_archs[${i}]})
- arch="${archs[${i}]}"
- vers="${verss[${i}]}"
- repo="${repos[${i}]}"
-
- cd "${tmpDir}/${paket}"
- rm -rf --one-file-system src pkg
+ echo " ${pakete[${i}]} ${verss[${i}]} ${archs[${i}]}"
+ printf ' %s\n' ${pakete_teile_und_archs[${i}]}
+ done
+ exit 0
+fi
- if ! grep -qwF _patch_PKGBUILD PKGBUILD; then
+maxErr=0
+
+# update git sources
+find "${SRCDEST}" -mindepth 2 -maxdepth 2 \( \
+ -name 'HEAD' \
+ -o -name '.git' \
+\) | \
+ sed 's|/[^/]*$||' | \
+ while read -r repo; do
+ git -C "${repo}" fetch --all -p
+ git -C "${repo}" fetch origin master:master
+ done
+# update svn sources
+find "${SRCDEST}" -mindepth 2 -maxdepth 2 -name '.svn' | \
+ sed 's|/[^/]*$||' | \
+ while read -r repo; do
+ svn update "${repo}"
+ done
- # add PKGBUILD-patches to the PKGBUILD
- if grep -q '^\s*pkgbase=' PKGBUILD; then
- (
- eval "$(
- sed -n '/^\s*pkgname=(/,/)/ p' PKGBUILD
- )"
- printf 'package_%s\n' "${pkgname[@]}"
- )
- else
- printf 'package\n'
- fi \
- | sponge \
- | while read -r function; do
- sed -i '
- /^'"${function}"'() {$/,/^}$/ {
- /^}$/ i _patch_PKGBUILD
- }
+# build packages
+for ((i=0; i<${#pakete[@]}; i++)); do
+ paket="${pakete[${i}]}"
+ paket_teile_und_archs=(${pakete_teile_und_archs[${i}]})
+ arch="${archs[${i}]}"
+ vers="${verss[${i}]}"
+ repo="${repos[${i}]}"
+
+ cd "${tmpDir}/${paket}"
+ rm -rf --one-file-system src pkg
+
+ if ! grep -qwF _patch_PKGBUILD PKGBUILD; then
+
+ # add PKGBUILD-patches to the PKGBUILD
+ if grep -q '^\s*pkgbase=' PKGBUILD; then
+ (
+ eval "$(
+ sed -n '/^\s*pkgname=(/,/)/ p' PKGBUILD
+ )"
+ printf 'package_%s\n' "${pkgname[@]}"
+ )
+ else
+ printf 'package\n'
+ fi \
+ | sponge \
+ | while read -r function; do
+ sed -i '
+ /^'"${function}"'() {$/,/^}$/ {
+ /^}$/ i _patch_PKGBUILD
+ }
+ ' PKGBUILD
+ done
+ {
+ echo '_patch_PKGBUILD() {'
+ ls -1 "${tmpDir}/"*".PKGBUILDpatch" \
+ | grep -vxF "$(
+ sed '
+ s,^# skip \(\S\+\)\(\s\|$\).*$,'"${tmpDir}"'/\1.PKGBUILDpatch,
+ t
+ d
' PKGBUILD
- done
- {
- echo '_patch_PKGBUILD() {'
- ls -1 "${tmpDir}/"*".PKGBUILDpatch" \
- | grep -vxF "$(
- sed '
- s,^# skip \(\S\+\)\(\s\|$\).*$,'"${tmpDir}"'/\1.PKGBUILDpatch,
- t
- d
- ' PKGBUILD
- )" \
- | xargs -r cat
- echo ':'
- echo '}'
- } \
- >> PKGBUILD
- fi
+ )" \
+ | xargs -r cat
+ echo ':'
+ echo '}'
+ } \
+ >> PKGBUILD
+ fi
- case "${arch}" in
- 'any'|'i486'|'i686'|'pentium4'|'x86_64')
- if [ -n "${cleanChroot}" ]; then
- build_mode='archbuild'
- elif sed -n '
- /^conflicts=(/ {
- :a
- /)/ ! {
- N
- $! ba
- }
+ case "${arch}" in
+ 'any'|'i486'|'i686'|'pentium4'|'x86_64')
+ if [ -n "${cleanChroot}" ]; then
+ build_mode='archbuild'
+ elif sed -n '
+ /^conflicts=(/ {
+ :a
+ /)/ ! {
+ N
+ $! ba
+ }
+ p
+ }
+ ' PKGBUILD \
+ | grep -qwF "$(
+ pacman -Qqg base-devel
+ pacman -Qi base \
+ | sed -n '
+ /^Depends On\s*:/,/^\S/ {
+ s/^Depends On\s*:/ /
+ /^\S/d
p
}
- ' PKGBUILD \
- | grep -qwF "$(
- pacman -Qqg base-devel
- pacman -Qi base \
- | sed -n '
- /^Depends On\s*:/,/^\S/ {
- s/^Depends On\s*:/ /
- /^\S/d
- p
- }
+ ' \
+ | tr ' ' '\n' \
+ | sort -u \
+ | grep -vxF ''
+ )"; then
+ build_mode='makechrootpkg'
+ else
+ build_mode='archbuild'
+ fi
+ if [ "${build_mode}" = 'archbuild' ]; then
+ archlinuxewe-${arch/any/x86_64}-build ${cleanChroot} -- -- ${log} ${checkMakepkg} --holdver
+ else
+ makechrootpkg -r "/var/lib/archbuild/archlinuxewe-${arch/any/x86_64}" -- ${log} ${checkMakepkg} --holdver -f
+ fi
+ err[${i}]=$?
+ if [ ${err[${i}]} -eq 0 ] && [ "${arch}" != 'x86_64' ] && [ "${arch}" != 'any' ]; then
+ {
+ printf '%s\n' \
+ "From: plasmapaule@gmail.com" \
+ "To: buildmaster@archlinux32.org" \
+ "Subject: $(uname -n) - report about installed ${arch} packages" \
+ ""
+ find . \
+ -mindepth 1 \
+ -maxdepth 1 \
+ -name '*.pkg.tar.zst' \
+ -exec bsdtar -Oxf {} .BUILDINFO \; \
+ | sed '
+ s@^installed = \(.*\)$@/var/cache/archbuild32/\1.pkg.tar.zst@
+ t
+ d
' \
- | tr ' ' '\n' \
- | sort -u \
- | grep -vxF ''
- )"; then
- build_mode='makechrootpkg'
- else
- build_mode='archbuild'
- fi
- if [ "${build_mode}" = 'archbuild' ]; then
- archlinuxewe-${arch/any/x86_64}-build ${cleanChroot} -- -- ${log} ${checkMakepkg} --holdver
- else
- makechrootpkg -r "/var/lib/archbuild/archlinuxewe-${arch/any/x86_64}" -- ${log} ${checkMakepkg} --holdver -f
- fi
- err[${i}]=$?
- if [ ${err[${i}]} -eq 0 ] && [ "${arch}" != 'x86_64' ] && [ "${arch}" != 'any' ]; then
- {
- printf '%s\n' \
- "From: plasmapaule@gmail.com" \
- "To: buildmaster@archlinux32.org" \
- "Subject: $(uname -n) - report about installed ${arch} packages" \
- ""
- find . \
- -mindepth 1 \
- -maxdepth 1 \
- -name '*.pkg.tar.zst' \
- -exec bsdtar -Oxf {} .BUILDINFO \; \
- | sed '
- s@^installed = \(.*\)$@/var/cache/archbuild32/\1.pkg.tar.zst@
- t
- d
- ' \
- | xargs -r sha512sum \
- 2>/dev/null \
- | sed '
- s@\s\+.*/@ @
- s/^/stabilize: /
- '
- } | \
- sendmailadvanced -t
- fi
- ;;
- 'armv6h'|'armv7h'|'aarch64')
- # armv6h & armv7h & aarch64 is built on the raspberry pis
- PKGEXT=".pkg.tar.zst" SRCPKGDEST="${tmpDir}" makepkg --allsource -f
+ | xargs -r sha512sum \
+ 2>/dev/null \
+ | sed '
+ s@\s\+.*/@ @
+ s/^/stabilize: /
+ '
+ } | \
+ sendmailadvanced -t
+ fi
+ ;;
+ 'armv6h'|'armv7h'|'aarch64')
+ # armv6h & armv7h & aarch64 is built on the raspberry pis
+ PKGEXT=".pkg.tar.zst" SRCPKGDEST="${tmpDir}" makepkg --allsource -f
+ err[${i}]=$?
+ if [ ${err[${i}]} -eq 0 ]; then
+ ssh makepkg@${arch}.builder "$(
+ printf 'set -e\n'
+ printf 'rm -rf --one-file-system build/*\n'
+ printf 'cd build\n'
+ printf 'tar -xzf -\n'
+ printf 'cd "%s"\n' "${paket}"
+ printf 'export %s="%s"\n' \
+ 'SRCDEST' '${HOME}/packageSources' \
+ 'PACKAGER' "${PACKAGER}"
+ printf 'archlinuxewe-%s-build %s -- -- -- %s >&2\n' \
+ "${arch}" \
+ "${cleanChroot}" \
+ "${log} ${checkMakepkg}"
+ printf 'tar -czf - *.pkg.tar'
+ [ -n "${log}" ] && \
+ printf ' *.pkg.tar-*.log'
+ printf '\n'
+ )" \
+ < "${tmpDir}/${paket}-${vers}.src.tar.gz" \
+ > "paket.tar.gz"
err[${i}]=$?
if [ ${err[${i}]} -eq 0 ]; then
- arch_num=$(
- printf '%s\n' "${arch}" \
- | tr -d '[a-z]'
- )
- ssh eckner.net -p $((
- (9375384 - 512375 * arch_num + 7625 * arch_num * arch_num) * 4 / 1653
- )) "$(
- printf 'set -e\n'
- printf 'rm -rf --one-file-system build/*\n'
- printf 'cd build\n'
- printf 'tar -xzf -\n'
- printf 'cd "%s"\n' "${paket}"
- printf 'export %s="%s"\n' \
- 'SRCDEST' '${HOME}/packageSources' \
- 'PACKAGER' "${PACKAGER}"
- printf 'archlinuxewe-%s-build %s -- -- -- %s >&2\n' \
- "${arch}" \
- "${cleanChroot}" \
- "${log} ${checkMakepkg}"
- printf 'tar -czf - *.pkg.tar'
- [ -n "${log}" ] && \
- printf ' *.pkg.tar-*.log'
- printf '\n'
- )" \
- < "${tmpDir}/${paket}-${vers}.src.tar.gz" \
- > "paket.tar.gz"
- err[${i}]=$?
- if [ ${err[${i}]} -eq 0 ]; then
- tar -xzvf paket.tar.gz \
- | sed '
- s/^.*\.pkg\.tar$/\0 \0.zst/
- t
- s/^\(.*\.pkg\.tar\)\(-.*\.log\)$/\0 \1.zst\2/
- t
- s/^.*$/unknown file "\0" in packages tar cannot be compressed/
- w /dev/stderr
- d
- ' \
- | while read -r file cfile; do
- zstd "${file}" -o "${cfile}"
- rm "${file}"
- done
- fi
+ tar -xzvf paket.tar.gz \
+ | sed '
+ s/^.*\.pkg\.tar$/\0 \0.zst/
+ t
+ s/^\(.*\.pkg\.tar\)\(-.*\.log\)$/\0 \1.zst\2/
+ t
+ s/^.*$/unknown file "\0" in packages tar cannot be compressed/
+ w /dev/stderr
+ d
+ ' \
+ | while read -r file cfile; do
+ zstd "${file}" -o "${cfile}"
+ rm "${file}"
+ done
fi
- ;;
- *)
- printf 'unbekannte Architektur "%s"\n' "${arch}"
- err[${i}]=128
- ;;
- esac
- for teil_und_arch in "${paket_teile_und_archs[@]}"; do
- if [ ${err[${i}]} -ne 0 ]; then
- break
fi
- teil="${teil_und_arch#*:}"
- teil_arch="${teil_und_arch%%:*}"
- namcap "${tmpDir}/${paket}/${teil}-${vers}-${teil_arch}.pkg.tar.zst" > \
- "${tmpDir}/namcap"
- err[${i}]=$?
- if [ -n "${log}" ]; then
- cat "${tmpDir}/namcap" > \
- "${tmpDir}/${paket}/${teil}-namcap-${arch}.log"
- fi
- if [ ${err[${i}]} -ne 0 ]; then
- sed 's/^/namcap: /' "${tmpDir}/namcap"
- break
- fi
- if grep "$(
- {
+ ;;
+ *)
+ printf 'unbekannte Architektur "%s"\n' "${arch}"
+ err[${i}]=128
+ ;;
+ esac
+ for teil_und_arch in "${paket_teile_und_archs[@]}"; do
+ if [ ${err[${i}]} -ne 0 ]; then
+ break
+ fi
+ teil="${teil_und_arch#*:}"
+ teil_arch="${teil_und_arch%%:*}"
+ namcap "${tmpDir}/${paket}/${teil}-${vers}-${teil_arch}.pkg.tar.zst" > \
+ "${tmpDir}/namcap"
+ err[${i}]=$?
+ if [ -n "${log}" ]; then
+ cat "${tmpDir}/namcap" > \
+ "${tmpDir}/${paket}/${teil}-namcap-${arch}.log"
+ fi
+ if [ ${err[${i}]} -ne 0 ]; then
+ sed 's/^/namcap: /' "${tmpDir}/namcap"
+ break
+ fi
+ if grep "$(
+ {
+ printf '%s\\|' \
+ "E: ELF file (.*) found in an ['\"]any['\"] package"
+ if ! grep -qF " ${teil} ist absichtlich nicht any ohne ELF Dateien" PKGBUILD \
+ && ! grep -qF " ist alles absichtlich nicht any ohne ELF Dateien" PKGBUILD; then
printf '%s\\|' \
- "E: ELF file (.*) found in an ['\"]any['\"] package"
- if ! grep -qF " ${teil} ist absichtlich nicht any ohne ELF Dateien" PKGBUILD \
- && ! grep -qF " ist alles absichtlich nicht any ohne ELF Dateien" PKGBUILD; then
- printf '%s\\|' \
- "W: No ELF files and not an ['\"]any['\"] package"
- fi
- } | \
- sed 's@\\|$@@'
- )" "${tmpDir}/namcap"; then
- err[${i}]=64
- fi
- done
- rm -f "${tmpDir}/namcap"
- if ${abortOnMakepkgError} && [ ${err[${i}]} -ne 0 ]; then
- cleanUp
- exit ${err[${i}]}
+ "W: No ELF files and not an ['\"]any['\"] package"
+ fi
+ } | \
+ sed 's@\\|$@@'
+ )" "${tmpDir}/namcap"; then
+ err[${i}]=64
fi
- [ ${err[${i}]} -gt ${maxErr} ] && maxErr=${err[${i}]}
+ done
+ rm -f "${tmpDir}/namcap"
+ if ${abortOnMakepkgError} && [ ${err[${i}]} -ne 0 ]; then
+ cleanUp
+ exit ${err[${i}]}
+ fi
+ [ ${err[${i}]} -gt ${maxErr} ] && maxErr=${err[${i}]}
- for teil_und_arch in "${paket_teile_und_archs[@]}"; do
- teil="${teil_und_arch#*:}"
- teil_arch="${teil_und_arch%%:*}"
- gpg --detach-sign -u "${key}" --no-armor ${teil}-${vers}-${teil_arch}.pkg.tar.zst
- done
+ for teil_und_arch in "${paket_teile_und_archs[@]}"; do
+ teil="${teil_und_arch#*:}"
+ teil_arch="${teil_und_arch%%:*}"
+ gpg --detach-sign -u "${key}" --no-armor ${teil}-${vers}-${teil_arch}.pkg.tar.zst
+ done
- if ${upload} && [ ${err[${i}]} -eq 0 ]; then
-
-# upload package and update db
- cd "${tmpDir}/${paket}"
- printf '%s\n' "${paket_teile_und_archs[@]%%:*}" | \
- sort -u | \
- while read -r arch; do
- if [ "${paket}" = 'pacman-static' ] && \
- [ "${arch}" = 'i686' ] && \
- false; then
- tar -OxJf "${paket_teile_und_archs[0]#*:}" usr/bin/pacman-static 2>/dev/null > /srv/arch-mirror/sources.archlinux32/sources/pacman-static
- gpg --detach-sign -u "${key}" --yes --no-armor /srv/arch-mirror/sources.archlinux32/sources/pacman-static
- fi
+ # upload package and update db
+ if ${upload} && [ ${err[${i}]} -eq 0 ]; then
- paket_teile=(
- $(
- printf '%s\n' "${paket_teile_und_archs[@]}" | \
- sed -n '
- s/^'"${arch}"'://
- T
- p
- '
- )
+ cd "${tmpDir}/${paket}"
+ printf '%s\n' "${paket_teile_und_archs[@]%%:*}" | \
+ sort -u | \
+ while read -r arch; do
+ if [ "${paket}" = 'pacman-static' ] && \
+ [ "${arch}" = 'i686' ] && \
+ false; then
+ tar -OxJf "${paket_teile_und_archs[0]#*:}" usr/bin/pacman-static 2>/dev/null > /srv/arch-mirror/sources.archlinux32/sources/pacman-static
+ gpg --detach-sign -u "${key}" --yes --no-armor /srv/arch-mirror/sources.archlinux32/sources/pacman-static
+ fi
+
+ paket_teile=(
+ $(
+ printf '%s\n' "${paket_teile_und_archs[@]}" | \
+ sed -n '
+ s/^'"${arch}"'://
+ T
+ p
+ '
)
- tar -cf - $(
- printf " %s-${vers}-${arch}.pkg.tar.zst" "${paket_teile[@]}"
- printf " %s-${vers}-${arch}.pkg.tar.zst.sig" "${paket_teile[@]}"
- ) | \
- ssh archlinuxewe@eckner.net "$(
+ )
+ tar -cf - $(
+ printf " %s-${vers}-${arch}.pkg.tar.zst" "${paket_teile[@]}"
+ printf " %s-${vers}-${arch}.pkg.tar.zst.sig" "${paket_teile[@]}"
+ ) | \
+ ssh archlinuxewe@eckner.net "$(
+
+ printf 'tmp_archive=$(mktemp)\n'
+ printf 'cat > "${tmp_archive}"\n'
+ printf 'trap "rm ${tmp_archive}" EXIT\n'
+
+ printf '
+ entferneAltePakete() {
+ altePakete=$(
+ ls -1 | \
+ grep "^$1-[^-]\+-[^-]\+-$2\.pkg\.tar\.\(xz\|zst\)\$"
+ )
+ if [ -n "${altePakete}" ]; then
+ if [ "$(basename "$(pwd)")" != "any" ]; then
+ if [ "$(basename "$(pwd)")" == "releng" ]; then
+ repo-remove releng.db.tar.gz "$1"
+ else
+ repo-remove %s -s -k 0x3CFB0AD8F60030F8 archlinuxewe.db.tar.gz "$1"' \
+ "${checkDbSig}"
+ printf '
+ fi
+ fi
+ for altesPaket in ${altePakete}; do
+ rm "${altesPaket}"
+ if [ -e "${altesPaket}.sig" ] || [ -h "${altesPaket}.sig" ]; then
+ rm "${altesPaket}.sig"
+ fi
+ done
+ fi
+ }'
- printf 'tmp_archive=$(mktemp)\n'
- printf 'cat > "${tmp_archive}"\n'
- printf 'trap "rm ${tmp_archive}" EXIT\n'
+ printf '
+ addPaket() {
+ if [ "$(basename "$(pwd)")" == "releng" ]; then
+ repo-add releng.db.tar.gz "$1"
+ else
+ repo-add %s -s -k 0x3CFB0AD8F60030F8 archlinuxewe.db.tar.gz "$1"
+ fi
+ }' \
+ "${checkDbSig}"
+ for r in ${repo}; do
+ if [ "${r}" = 'releng' ]; then
+ printf '
+ cd "%s"' \
+ "${pkgDir32}"
+ else
+ printf '
+ cd "%s/%s"' \
+ "${pkgDir}" "${arch}"
+ fi
printf '
- entferneAltePakete() {
- altePakete=$(
- ls -1 | \
- grep "^$1-[^-]\+-[^-]\+-$2\.pkg\.tar\.\(xz\|zst\)\$"
- )
- if [ -n "${altePakete}" ]; then
- if [ "$(basename "$(pwd)")" != "any" ]; then
- if [ "$(basename "$(pwd)")" == "releng" ]; then
- repo-remove releng.db.tar.gz "$1"
- else
- repo-remove %s -s -k 0x3CFB0AD8F60030F8 archlinuxewe.db.tar.gz "$1"' \
- "${checkDbSig}"
+ for teil in %s; do' \
+ "${paket_teile[*]}"
printf '
- fi
- fi
- for altesPaket in ${altePakete}; do
- rm "${altesPaket}"
- if [ -e "${altesPaket}.sig" ] || [ -h "${altesPaket}.sig" ]; then
- rm "${altesPaket}.sig"
- fi
- done
- fi
- }'
+ entferneAltePakete "${teil}" "%s"' \
+ "${arch}"
+ printf '
+ done'
printf '
- addPaket() {
- if [ "$(basename "$(pwd)")" == "releng" ]; then
- repo-add releng.db.tar.gz "$1"
- else
- repo-add %s -s -k 0x3CFB0AD8F60030F8 archlinuxewe.db.tar.gz "$1"
- fi
- }' \
- "${checkDbSig}"
-
- for r in ${repo}; do
- if [ "${r}" = 'releng' ]; then
- printf '
- cd "%s"' \
- "${pkgDir32}"
- else
- printf '
- cd "%s/%s"' \
- "${pkgDir}" "${arch}"
- fi
+ tar -xf "${tmp_archive}"
+ for teil in %s; do' \
+ "${paket_teile[*]}"
+
+ if [ "${arch}" == "any" ] && [ "${r}" != 'releng' ]; then
printf '
- for teil in %s; do' \
- "${paket_teile[*]}"
+ for lArch in $(ls ..); do
+ [ ! -d "../${lArch}" ] && continue
+ [ "${lArch}" == "any" ] && continue
+ cd "../${lArch}"
+
+ entferneAltePakete "${teil}" "any"'
printf '
- entferneAltePakete "${teil}" "%s"' \
- "${arch}"
+ ln -s "../any/${teil}-%s-%s.pkg.tar.zst" "${teil}-%s-%s.pkg.tar.zst"' \
+ "${vers}" "${arch}" "${vers}" "${arch}"
printf '
- done'
-
+ if [ -e "%s/any/${teil}-%s-%s.pkg.tar.zst.sig" ]' \
+ "${pkgDir}" "${vers}" "${arch}"
+ printf '; then
+ ln -s "../any/${teil}-%s-%s.pkg.tar.zst.sig" "${teil}-%s-%s.pkg.tar.zst.sig"' \
+ "${vers}" "${arch}" "${vers}" "${arch}"
printf '
- tar -xf "${tmp_archive}"
- for teil in %s; do' \
- "${paket_teile[*]}"
-
- if [ "${arch}" == "any" ] && [ "${r}" != 'releng' ]; then
- printf '
- for lArch in $(ls ..); do
- [ ! -d "../${lArch}" ] && continue
- [ "${lArch}" == "any" ] && continue
- cd "../${lArch}"
-
- entferneAltePakete "${teil}" "any"'
- printf '
- ln -s "../any/${teil}-%s-%s.pkg.tar.zst" "${teil}-%s-%s.pkg.tar.zst"' \
- "${vers}" "${arch}" "${vers}" "${arch}"
- printf '
- if [ -e "%s/any/${teil}-%s-%s.pkg.tar.zst.sig" ]' \
- "${pkgDir}" "${vers}" "${arch}"
- printf '; then
- ln -s "../any/${teil}-%s-%s.pkg.tar.zst.sig" "${teil}-%s-%s.pkg.tar.zst.sig"' \
- "${vers}" "${arch}" "${vers}" "${arch}"
- printf '
- fi
- addPaket "${teil}-%s-%s.pkg.tar.zst"' \
- "${vers}" "${arch}"
- printf '
- done'
- else
- printf '
+ fi
addPaket "${teil}-%s-%s.pkg.tar.zst"' \
- "${vers}" "${arch}"
- fi
+ "${vers}" "${arch}"
printf '
done'
- done
+ else
+ printf '
+ addPaket "${teil}-%s-%s.pkg.tar.zst"' \
+ "${vers}" "${arch}"
+ fi
printf '
- date +%%s > "%s/../lastupdate"' \
- "${pkgDir}"
- )"
- done
- fi
- done
+ done'
+ done
+ printf '
+ date +%%s > "%s/../lastupdate"' \
+ "${pkgDir}"
+ )"
+ done
+ fi
+done
# check db
- if ${upload}; then
- ssh archlinuxewe@eckner.net "$(
- printf '
- err=0
-
- for arch in %s/* %s' \
- "${pkgDir}" "${pkgDir32}"
- printf '; do
- [ ! -d "${arch}" ] && continue
- [ "${arch##*/}" == "any" ] && continue
-
- for paketFehler in $( \
- (
- if [ "$(basename "${arch}")" == 'releng' ]; then
- tar -Oxzf "${arch}/releng.db.tar.gz"
- else
- tar -Oxzf "${arch}/archlinuxewe.db.tar.gz"
- fi | \
- grep -A1 "^%%FILENAME%%\$" | \
- grep -v "^%%FILENAME%%\$" | \
- grep -v -- "^--\$"
- ls "${arch}" | \
- grep "^.*\.pkg\.tar\.\(xz\|zst\)\$"
- ) | \
- sort | \
- uniq -u
- ); do
+if ${upload}; then
+ ssh archlinuxewe@eckner.net "$(
+ printf '
+ err=0
- err=1
- if [ -e "${arch}/${paketFehler}" ]; then
- >&2 echo "FEHLER: Paket ${arch}/${paketFehler} ist nur im Verzeichnisbaum vorhanden."
+ for arch in %s/* %s' \
+ "${pkgDir}" "${pkgDir32}"
+ printf '; do
+ [ ! -d "${arch}" ] && continue
+ [ "${arch##*/}" == "any" ] && continue
+
+ for paketFehler in $( \
+ (
+ if [ "$(basename "${arch}")" == 'releng' ]; then
+ tar -Oxzf "${arch}/releng.db.tar.gz"
else
- >&2 echo "FEHLER: Paket ${arch}/${paketFehler} ist nur in der Datenbank vorhanden."
- fi
-
- done
-
- for signaturWarnungen in $( \
+ tar -Oxzf "${arch}/archlinuxewe.db.tar.gz"
+ fi | \
+ grep -A1 "^%%FILENAME%%\$" | \
+ grep -v "^%%FILENAME%%\$" | \
+ grep -v -- "^--\$"
ls "${arch}" | \
- grep "^.*\.pkg\.tar\.\(xz\|zst\)\(\.sig\)\?\$" | \
- sed "s|\.sig\$||" | \
- sort | \
- uniq -u
- ); do
-
- if [ -e "${arch}/${signaturWarnungen}" ]; then
- >&2 echo "WARNUNG: Paket ${arch}/${signaturWarnungen} hat keine Signatur."
- else
- err=1
- >&2 echo "FEHLER: Zur Signatur ${arch}/${signaturWarnungen}.sig gibt es kein Paket."
- fi
+ grep "^.*\.pkg\.tar\.\(xz\|zst\)\$"
+ ) | \
+ sort | \
+ uniq -u
+ ); do
- done
+ err=1
+ if [ -e "${arch}/${paketFehler}" ]; then
+ >&2 echo "FEHLER: Paket ${arch}/${paketFehler} ist nur im Verzeichnisbaum vorhanden."
+ else
+ >&2 echo "FEHLER: Paket ${arch}/${paketFehler} ist nur in der Datenbank vorhanden."
+ fi
done
- exit ${err}'
- )"
- fi
-
- cleanUp
- exit ${maxErr}
-
-else
-
- if ${checkSanity}; then
-
-# check packages
- err=false
-
- namcap */PKGBUILD || err=true
-
- for paket in *; do
- [ -r "${paket}/PKGBUILD" ] || continue
-
- if ! grep -q "^# Maintainer\s*:\s\+Erich Eckner\s\+<arch at eckner dot net>\$" "${paket}/PKGBUILD" || \
- grep "^# Maintainer\s*:" "${paket}/PKGBUILD" | \
- grep -vq "^# Maintainer\s*:\s\+Erich Eckner\s\+<arch at eckner dot net>\$"; then
- >&2 echo "${paket}/PKGBUILD hat falsche(n) Maintainer"
- if grep -qxF '[submodule "'"${paket}"'"]' '.gitmodules'; then
- continue
- fi
- err=true
- fi
-
- done
- if ${err}; then
- exit 1
- fi
+ for signaturWarnungen in $( \
+ ls "${arch}" | \
+ grep "^.*\.pkg\.tar\.\(xz\|zst\)\(\.sig\)\?\$" | \
+ sed "s|\.sig\$||" | \
+ sort | \
+ uniq -u
+ ); do
- fi
+ if [ -e "${arch}/${signaturWarnungen}" ]; then
+ >&2 echo "WARNUNG: Paket ${arch}/${signaturWarnungen} hat keine Signatur."
+ else
+ err=1
+ >&2 echo "FEHLER: Zur Signatur ${arch}/${signaturWarnungen}.sig gibt es kein Paket."
+ fi
- cd "${pkgSrcDir}"
- git push
- err=$?
- if [ ${err} -ne 0 ]; then
- exit ${err}
- fi
+ done
- ssh -p 22222 makepkg@141.35.51.219 "~/archPackagesUpdate" "${args[@]}"
- err=$?
- if [ ${err} -ne 0 ]; then
- exit ${err}
- fi
+ done
+ exit ${err}'
+ )"
fi
+
+cleanUp
+exit ${maxErr}