mirror of
https://gitlab.archlinux.org/archlinux/devtools.git
synced 2025-09-14 18:36:18 +02:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
73d61f43c7 | ||
![]() |
afc93f3430 | ||
![]() |
9ab0d94578 | ||
![]() |
5e8cb67603 | ||
![]() |
65365f1853 | ||
![]() |
06a681ca3d | ||
![]() |
b763788b16 | ||
![]() |
c2d9a0e7b1 | ||
![]() |
ee4edefa2f | ||
![]() |
a8b64995ee | ||
![]() |
2c9855fe6b | ||
![]() |
4d4ffb5d8f | ||
![]() |
2d79191c97 |
19
archbuild.in
19
archbuild.in
@@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
m4_include(lib/common.sh)
|
m4_include(lib/common.sh)
|
||||||
|
|
||||||
# FIXME: temporary added curl until pacman 4.0 moves to [core]
|
base_packages=(base base-devel sudo)
|
||||||
base_packages=(base base-devel sudo curl)
|
|
||||||
|
|
||||||
cmd="${0##*/}"
|
cmd="${0##*/}"
|
||||||
if [[ "${cmd%%-*}" == 'multilib' ]]; then
|
if [[ "${cmd%%-*}" == 'multilib' ]]; then
|
||||||
@@ -53,27 +52,13 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then
|
|||||||
done
|
done
|
||||||
exec 9>&-
|
exec 9>&-
|
||||||
|
|
||||||
# FIXME: temporary workaround until pacman 4.0 moves to [core]
|
|
||||||
if pacman -V | grep -q 'v4.' && ( [[ "$repo" == 'extra' || "$repo" == 'multilib' ]] ); then
|
|
||||||
pacman_conf=$(mktemp)
|
|
||||||
cp "@pkgdatadir@/pacman-${repo}.conf" "${pacman_conf}"
|
|
||||||
sed -r 's/^#(SigLevel = Never)/\1/' -i "${pacman_conf}"
|
|
||||||
else
|
|
||||||
pacman_conf="@pkgdatadir@/pacman-${repo}.conf"
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -rf "${chroots}/${repo}-${arch}"
|
rm -rf "${chroots}/${repo}-${arch}"
|
||||||
mkdir -p "${chroots}/${repo}-${arch}"
|
mkdir -p "${chroots}/${repo}-${arch}"
|
||||||
setarch "${arch}" mkarchroot \
|
setarch "${arch}" mkarchroot \
|
||||||
-C "${pacman_conf}" \
|
-C "@pkgdatadir@/pacman-${repo}.conf" \
|
||||||
-M "@pkgdatadir@/makepkg-${arch}.conf" \
|
-M "@pkgdatadir@/makepkg-${arch}.conf" \
|
||||||
"${chroots}/${repo}-${arch}/root" \
|
"${chroots}/${repo}-${arch}/root" \
|
||||||
"${base_packages[@]}"
|
"${base_packages[@]}"
|
||||||
|
|
||||||
# FIXME: temporary workaround until pacman 4.0 moves to [core]
|
|
||||||
if pacman -V | grep -q 'v4.' && ( [[ "$repo" == 'extra' || "$repo" == 'multilib' ]] ); then
|
|
||||||
cp "@pkgdatadir@/pacman-${repo}.conf" "${chroots}/${repo}-${arch}/root/etc/pacman.conf"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
setarch ${arch} mkarchroot \
|
setarch ${arch} mkarchroot \
|
||||||
-u \
|
-u \
|
||||||
|
@@ -1,13 +1,32 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
m4_include(lib/common.sh)
|
m4_include(lib/common.sh)
|
||||||
|
m4_include(lib/valid-tags.sh)
|
||||||
|
|
||||||
if [[ -z $1 ]]; then
|
# parse command line options
|
||||||
echo 'Usage: archrelease <repo>...'
|
FORCE=
|
||||||
|
while getopts ':f' flag; do
|
||||||
|
case $flag in
|
||||||
|
f) FORCE=1 ;;
|
||||||
|
:) die "Option requires an argument -- '$OPTARG'" ;;
|
||||||
|
\?) die "Invalid option -- '$OPTARG'" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(( OPTIND - 1 ))
|
||||||
|
|
||||||
|
if ! (( $# )); then
|
||||||
|
echo 'Usage: archrelease [-f] <repo>...'
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO: validate repo is really repo-arch
|
# validate repo is really repo-arch
|
||||||
|
if [[ -z $FORCE ]]; then
|
||||||
|
for tag in "$@"; do
|
||||||
|
if ! in_array "$tag" "${_tags[@]}"; then
|
||||||
|
die 'archrelease: Invalid tag: "'$tag'" (use -f to force release)'
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ ! -f PKGBUILD ]]; then
|
if [[ ! -f PKGBUILD ]]; then
|
||||||
die 'archrelease: PKGBUILD not found'
|
die 'archrelease: PKGBUILD not found'
|
||||||
|
51
commitpkg.in
51
commitpkg.in
@@ -3,13 +3,19 @@
|
|||||||
m4_include(lib/common.sh)
|
m4_include(lib/common.sh)
|
||||||
|
|
||||||
getpkgfile() {
|
getpkgfile() {
|
||||||
if [[ ${#} -ne 1 ]]; then
|
case $# in
|
||||||
die 'No canonical package found!'
|
0)
|
||||||
elif [[ ! -f $1 ]]; then
|
error 'No canonical package found!'
|
||||||
die "Package ${1} not found!"
|
return 1
|
||||||
fi
|
;;
|
||||||
|
[!1])
|
||||||
|
error 'Failed to canonicalize package name -- multiple packages found:'
|
||||||
|
msg2 '%s' "$@"
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
echo ${1}
|
echo "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Source makepkg.conf; fail if it is not found
|
# Source makepkg.conf; fail if it is not found
|
||||||
@@ -127,36 +133,27 @@ for _arch in ${arch[@]}; do
|
|||||||
|
|
||||||
for _pkgname in ${pkgname[@]}; do
|
for _pkgname in ${pkgname[@]}; do
|
||||||
fullver=$(get_full_version $_pkgname)
|
fullver=$(get_full_version $_pkgname)
|
||||||
pkgfile=$(getpkgfile "$_pkgname-$fullver-${_arch}".pkg.tar.?z 2>/dev/null)
|
|
||||||
pkgdestfile=$(getpkgfile "$PKGDEST/$_pkgname-$fullver-${_arch}".pkg.tar.?z 2>/dev/null)
|
|
||||||
|
|
||||||
if [[ -f $pkgfile ]]; then
|
if ! pkgfile=$(shopt -s nullglob;
|
||||||
pkgfile="./$pkgfile"
|
getpkgfile "${PKGDEST+$PKGDEST/}$_pkgname-$fullver-${_arch}".pkg.tar.?z); then
|
||||||
elif [[ -f $pkgdestfile ]]; then
|
warning "Skipping $_pkgname-$fullver-$_arch: failed to locate package file"
|
||||||
pkgfile="$pkgdestfile"
|
|
||||||
else
|
|
||||||
warning "Could not find ${pkgfile}. Skipping ${_arch}"
|
|
||||||
skip_arches+=($_arch)
|
skip_arches+=($_arch)
|
||||||
continue 2
|
continue 2
|
||||||
fi
|
fi
|
||||||
uploads+=("$pkgfile")
|
uploads+=("$pkgfile")
|
||||||
|
|
||||||
sigfile="${pkgfile}.sig"
|
sigfile="${pkgfile}.sig"
|
||||||
if [[ $SIGNPKG == 'y' && ! -f $sigfile ]]; then
|
if [[ ! -f $sigfile ]]; then
|
||||||
msg "Signing package ${pkgfile}..."
|
msg "Signing package ${pkgfile}..."
|
||||||
if [[ -n $GPGKEY ]]; then
|
if [[ -n $GPGKEY ]]; then
|
||||||
SIGNWITHKEY="-u ${GPGKEY}"
|
SIGNWITHKEY="-u ${GPGKEY}"
|
||||||
fi
|
fi
|
||||||
gpg --detach-sign --use-agent ${SIGNWITHKEY} "${pkgfile}" || die
|
gpg --detach-sign --use-agent ${SIGNWITHKEY} "${pkgfile}" || die
|
||||||
fi
|
fi
|
||||||
if [[ -f $sigfile ]]; then
|
if ! gpg --verify "$sigfile" >/dev/null 2>&1; then
|
||||||
if ! gpg --verify "$sigfile" >/dev/null 2>&1; then
|
die "Signature ${pkgfile}.sig is incorrect!"
|
||||||
die "Signature ${pkgfile}.sig is incorrect!"
|
|
||||||
fi
|
|
||||||
uploads+=("$sigfile")
|
|
||||||
else
|
|
||||||
die "Signature ${pkgfile}.sig was not found"
|
|
||||||
fi
|
fi
|
||||||
|
uploads+=("$sigfile")
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -167,6 +164,16 @@ for _arch in ${arch[@]}; do
|
|||||||
done
|
done
|
||||||
archrelease "${commit_arches[@]/#/$repo-}" || die
|
archrelease "${commit_arches[@]/#/$repo-}" || die
|
||||||
|
|
||||||
|
new_uploads=()
|
||||||
|
|
||||||
|
# convert to absolute paths so rsync can work with colons (epoch)
|
||||||
|
while read -r -d '' upload; do
|
||||||
|
new_uploads+=("$upload")
|
||||||
|
done < <(realpath -z "${uploads[@]}")
|
||||||
|
|
||||||
|
uploads=("${new_uploads[@]}")
|
||||||
|
unset new_uploads
|
||||||
|
|
||||||
if [[ ${#uploads[*]} -gt 0 ]]; then
|
if [[ ${#uploads[*]} -gt 0 ]]; then
|
||||||
msg 'Uploading all package and signature files'
|
msg 'Uploading all package and signature files'
|
||||||
rsync "${rsyncopts[@]}" "${uploads[@]}" "$server:staging/$repo/" || die
|
rsync "${rsyncopts[@]}" "${uploads[@]}" "$server:staging/$repo/" || die
|
||||||
|
@@ -73,7 +73,7 @@ find . -type f $find_args | while read filename; do
|
|||||||
if [[ $script_mode = "provides" ]]; then
|
if [[ $script_mode = "provides" ]]; then
|
||||||
# get the string binaries link to: libfoo.so.1.2 -> libfoo.so.1
|
# get the string binaries link to: libfoo.so.1.2 -> libfoo.so.1
|
||||||
sofile=$(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -n 's/.*Library soname: \[\(.*\)\].*/\1/p')
|
sofile=$(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -n 's/.*Library soname: \[\(.*\)\].*/\1/p')
|
||||||
[[ -z $sofile" ]] && sofile="${filename##*/}"
|
[[ -z $sofile ]] && sofile="${filename##*/}"
|
||||||
process_sofile
|
process_sofile
|
||||||
elif [[ $script_mode = "deps" ]]; then
|
elif [[ $script_mode = "deps" ]]; then
|
||||||
# process all libraries needed by the binary
|
# process all libraries needed by the binary
|
||||||
|
20
lib/valid-tags.sh
Normal file
20
lib/valid-tags.sh
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
_arch=(
|
||||||
|
i686
|
||||||
|
x86_64
|
||||||
|
any
|
||||||
|
)
|
||||||
|
|
||||||
|
_tags=(
|
||||||
|
core-i686 core-x86_64 core-any
|
||||||
|
extra-i686 extra-x86_64 extra-any
|
||||||
|
multilib-x86_64
|
||||||
|
staging-i686 staging-x86_64 staging-any
|
||||||
|
testing-i686 testing-x86_64 testing-any
|
||||||
|
multilib-testing-x86_64
|
||||||
|
multilib-staging-x86_64
|
||||||
|
community-i686 community-x86_64 community-any
|
||||||
|
community-staging-i686 community-staging-x86_64 community-staging-any
|
||||||
|
community-testing-i686 community-testing-x86_64 community-testing-any
|
||||||
|
kde-unstable-i686 kde-unstable-x86_64 kde-unstable-any
|
||||||
|
gnome-unstable-i686 gnome-unstable-x86_64 gnome-unstable-any
|
||||||
|
)
|
@@ -20,6 +20,7 @@ install_pkg=
|
|||||||
add_to_db=false
|
add_to_db=false
|
||||||
run_namcap=false
|
run_namcap=false
|
||||||
chrootdir=
|
chrootdir=
|
||||||
|
passeddir=
|
||||||
|
|
||||||
default_copy=$USER
|
default_copy=$USER
|
||||||
[[ -n $SUDO_USER ]] && default_copy=$SUDO_USER
|
[[ -n $SUDO_USER ]] && default_copy=$SUDO_USER
|
||||||
@@ -52,8 +53,8 @@ usage() {
|
|||||||
echo '-I <pkg> Install a package into the working copy of the chroot'
|
echo '-I <pkg> Install a package into the working copy of the chroot'
|
||||||
echo '-l <copy> The directory to use as the working copy of the chroot'
|
echo '-l <copy> The directory to use as the working copy of the chroot'
|
||||||
echo ' Useful for maintaining multiple copies.'
|
echo ' Useful for maintaining multiple copies.'
|
||||||
echo '-n Run namcap on the package'
|
|
||||||
echo " Default: $default_copy"
|
echo " Default: $default_copy"
|
||||||
|
echo '-n Run namcap on the package'
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,7 +64,7 @@ while getopts 'hcudr:I:l:n' arg; do
|
|||||||
c) clean_first=true ;;
|
c) clean_first=true ;;
|
||||||
u) update_first=true ;;
|
u) update_first=true ;;
|
||||||
d) add_to_db=true ;;
|
d) add_to_db=true ;;
|
||||||
r) chrootdir="$OPTARG" ;;
|
r) passeddir="$OPTARG" ;;
|
||||||
I) install_pkg="$OPTARG" ;;
|
I) install_pkg="$OPTARG" ;;
|
||||||
l) copy="$OPTARG" ;;
|
l) copy="$OPTARG" ;;
|
||||||
n) run_namcap=true ;;
|
n) run_namcap=true ;;
|
||||||
@@ -72,7 +73,7 @@ while getopts 'hcudr:I:l:n' arg; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Canonicalize chrootdir, getting rid of trailing /
|
# Canonicalize chrootdir, getting rid of trailing /
|
||||||
chrootdir=$(readlink -e "$chrootdir")
|
chrootdir=$(readlink -e "$passeddir")
|
||||||
|
|
||||||
if [[ ${copy:0:1} = / ]]; then
|
if [[ ${copy:0:1} = / ]]; then
|
||||||
copydir=$copy
|
copydir=$copy
|
||||||
@@ -101,7 +102,7 @@ if [[ ! -f PKGBUILD && -z $install_pkg ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! -d $chrootdir ]]; then
|
if [[ ! -d $chrootdir ]]; then
|
||||||
die "No chroot dir defined, or invalid path '$chrootdir'"
|
die "No chroot dir defined, or invalid path '$passeddir'"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! -d $chrootdir/root ]]; then
|
if [[ ! -d $chrootdir/root ]]; then
|
||||||
|
@@ -47,8 +47,8 @@ Architecture = auto
|
|||||||
# the following line. This will treat any key imported into pacman's keyring as
|
# the following line. This will treat any key imported into pacman's keyring as
|
||||||
# trusted.
|
# trusted.
|
||||||
#SigLevel = Optional TrustAll
|
#SigLevel = Optional TrustAll
|
||||||
# Disable signature checks for now
|
# For now, off by default unless you read the above.
|
||||||
#SigLevel = Never
|
SigLevel = Never
|
||||||
|
|
||||||
#
|
#
|
||||||
# REPOSITORIES
|
# REPOSITORIES
|
||||||
|
@@ -47,7 +47,7 @@ Architecture = auto
|
|||||||
# the following line. This will treat any key imported into pacman's keyring as
|
# the following line. This will treat any key imported into pacman's keyring as
|
||||||
# trusted.
|
# trusted.
|
||||||
#SigLevel = Optional TrustAll
|
#SigLevel = Optional TrustAll
|
||||||
# Disable signature checks for now
|
# For now, off by default unless you read the above.
|
||||||
SigLevel = Never
|
SigLevel = Never
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -47,7 +47,7 @@ Architecture = auto
|
|||||||
# the following line. This will treat any key imported into pacman's keyring as
|
# the following line. This will treat any key imported into pacman's keyring as
|
||||||
# trusted.
|
# trusted.
|
||||||
#SigLevel = Optional TrustAll
|
#SigLevel = Optional TrustAll
|
||||||
# Disable signature checks for now
|
# For now, off by default unless you read the above.
|
||||||
SigLevel = Never
|
SigLevel = Never
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -47,7 +47,7 @@ Architecture = auto
|
|||||||
# the following line. This will treat any key imported into pacman's keyring as
|
# the following line. This will treat any key imported into pacman's keyring as
|
||||||
# trusted.
|
# trusted.
|
||||||
#SigLevel = Optional TrustAll
|
#SigLevel = Optional TrustAll
|
||||||
# Disable signature checks for now
|
# For now, off by default unless you read the above.
|
||||||
SigLevel = Never
|
SigLevel = Never
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -47,7 +47,7 @@ Architecture = auto
|
|||||||
# the following line. This will treat any key imported into pacman's keyring as
|
# the following line. This will treat any key imported into pacman's keyring as
|
||||||
# trusted.
|
# trusted.
|
||||||
#SigLevel = Optional TrustAll
|
#SigLevel = Optional TrustAll
|
||||||
# Disable signature checks for now
|
# For now, off by default unless you read the above.
|
||||||
SigLevel = Never
|
SigLevel = Never
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -47,8 +47,8 @@ Architecture = auto
|
|||||||
# the following line. This will treat any key imported into pacman's keyring as
|
# the following line. This will treat any key imported into pacman's keyring as
|
||||||
# trusted.
|
# trusted.
|
||||||
#SigLevel = Optional TrustAll
|
#SigLevel = Optional TrustAll
|
||||||
# Disable signature checks for now
|
# For now, off by default unless you read the above.
|
||||||
#SigLevel = Never
|
SigLevel = Never
|
||||||
|
|
||||||
#
|
#
|
||||||
# REPOSITORIES
|
# REPOSITORIES
|
||||||
|
@@ -47,7 +47,7 @@ Architecture = auto
|
|||||||
# the following line. This will treat any key imported into pacman's keyring as
|
# the following line. This will treat any key imported into pacman's keyring as
|
||||||
# trusted.
|
# trusted.
|
||||||
#SigLevel = Optional TrustAll
|
#SigLevel = Optional TrustAll
|
||||||
# Disable signature checks for now
|
# For now, off by default unless you read the above.
|
||||||
SigLevel = Never
|
SigLevel = Never
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -47,7 +47,7 @@ Architecture = auto
|
|||||||
# the following line. This will treat any key imported into pacman's keyring as
|
# the following line. This will treat any key imported into pacman's keyring as
|
||||||
# trusted.
|
# trusted.
|
||||||
#SigLevel = Optional TrustAll
|
#SigLevel = Optional TrustAll
|
||||||
# Disable signature checks for now
|
# For now, off by default unless you read the above.
|
||||||
SigLevel = Never
|
SigLevel = Never
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -1,21 +1,6 @@
|
|||||||
#compdef archbuild archco archrelease archrm commitpkg finddeps makechrootpkg mkarchroot rebuildpkgs extrapkg=commitpkg corepkg=commitpkg testingpkg=commitpkg stagingpkg=commitpkg communitypkg=commitpkg community-testingpkg=commitpkg community-stagingpkg=commitpkg multilibpkg=commitpkg multilib-testingpkg=commitpkg extra-i686-build=archbuild extra-x86_64-build=archbuild testing-i686-build=archbuild testing-x86_64-build=archbuild staging-i686-build=archbuild staging-x86_64-build=archbuild multilib-build=archbuild multilib-testing-build=archbuild multilib-staging-build=archbuild kde-unstable-i686-build=archbuild kde-unstable-x86_64-build=archbuild gnome-unstable-i686-build=archbuild gnome-unstable-x86_64-build=archbuild communityco=archco
|
#compdef archbuild archco archrelease archrm commitpkg finddeps makechrootpkg mkarchroot rebuildpkgs extrapkg=commitpkg corepkg=commitpkg testingpkg=commitpkg stagingpkg=commitpkg communitypkg=commitpkg community-testingpkg=commitpkg community-stagingpkg=commitpkg multilibpkg=commitpkg multilib-testingpkg=commitpkg extra-i686-build=archbuild extra-x86_64-build=archbuild testing-i686-build=archbuild testing-x86_64-build=archbuild staging-i686-build=archbuild staging-x86_64-build=archbuild multilib-build=archbuild multilib-testing-build=archbuild multilib-staging-build=archbuild kde-unstable-i686-build=archbuild kde-unstable-x86_64-build=archbuild gnome-unstable-i686-build=archbuild gnome-unstable-x86_64-build=archbuild communityco=archco
|
||||||
|
|
||||||
_arch=(i686 x86_64 any)
|
m4_include(lib/valid-tags.sh)
|
||||||
|
|
||||||
_tags=(
|
|
||||||
core-i686 core-x86_64 core-any
|
|
||||||
extra-i686 extra-x86_64 extra-any
|
|
||||||
multilib-i686 multilib-x86_64 multilib-any
|
|
||||||
staging-i686 staging-x86_64 staging-any
|
|
||||||
testing-i686 testing-x86_64 testing-any
|
|
||||||
multilib-testing-i686 multilib-testing-x86_64 multilib-testing-any
|
|
||||||
multilib-staging-i686 multilib-staging-x86_64 multilib-staging-any
|
|
||||||
community-i686 community-x86_64 community-any
|
|
||||||
community-staging-i686 community-staging-x86_64 community-staging-any
|
|
||||||
community-testing-i686 community-testing-x86_64 community-testing-any
|
|
||||||
kde-unstable-i686 kde-unstable-x86_64 kde-unstable-any
|
|
||||||
gnome-unstable-i686 gnome-unstable-x86_64 gnome-unstable-any
|
|
||||||
)
|
|
||||||
|
|
||||||
_archbuild_args=(
|
_archbuild_args=(
|
||||||
'-c[Recreate the chroot before building]'
|
'-c[Recreate the chroot before building]'
|
||||||
|
Reference in New Issue
Block a user