forked from artix/artools
Compare commits
34 Commits
Author | SHA1 | Date | |
---|---|---|---|
231d054ee9 | |||
2945493eb7 | |||
0f037f1106 | |||
6c4197e76d | |||
8ebdad278e | |||
2bacf6d19e | |||
6700e1a2e6 | |||
f874c8c399 | |||
1a5ea6c4ee | |||
486acaf47a | |||
d5ba8ed404 | |||
daf4c8283e | |||
7b65c27025 | |||
433a747da9 | |||
015c4f0658 | |||
b1dd485ec0 | |||
316514698e | |||
614d6e19c8 | |||
9c650134c4 | |||
b849cadbae | |||
f1067bcd60 | |||
3942dde012 | |||
30a6c61f52 | |||
d8195e2288 | |||
bfe9130cfb | |||
8873a71824 | |||
bb86a05f2f | |||
bd611c1af2 | |||
f4e8f703ea | |||
aa83bc79bb | |||
1bb9687ece
|
|||
48ced03735 | |||
0437e66091 | |||
9af6d02dea |
16
Makefile
16
Makefile
@@ -1,6 +1,6 @@
|
|||||||
VERSION=0.13
|
VERSION=0.14
|
||||||
|
|
||||||
CHROOT_VERSION=0.9
|
CHROOT_VERSION=0.10
|
||||||
|
|
||||||
TOOLS = artools
|
TOOLS = artools
|
||||||
PREFIX ?= /usr
|
PREFIX ?= /usr
|
||||||
@@ -38,7 +38,10 @@ PKG_BIN = \
|
|||||||
bin/pkg/pkg2yaml \
|
bin/pkg/pkg2yaml \
|
||||||
bin/pkg/buildtree \
|
bin/pkg/buildtree \
|
||||||
bin/pkg/lddd \
|
bin/pkg/lddd \
|
||||||
bin/pkg/links-add
|
bin/pkg/links-add \
|
||||||
|
bin/pkg/checkpkg \
|
||||||
|
bin/pkg/finddeps \
|
||||||
|
bin/pkg/find-libdeps
|
||||||
|
|
||||||
LN_COMMITPKG = \
|
LN_COMMITPKG = \
|
||||||
extrapkg \
|
extrapkg \
|
||||||
@@ -85,9 +88,6 @@ LN_DEPLOYPKG = \
|
|||||||
PKG_LIBS = \
|
PKG_LIBS = \
|
||||||
$(wildcard lib/pkg/*)
|
$(wildcard lib/pkg/*)
|
||||||
|
|
||||||
PKG_LISTS = \
|
|
||||||
$(wildcard data/pkglists/*.list)
|
|
||||||
|
|
||||||
PKG_UTIL = lib/util-pkg.sh
|
PKG_UTIL = lib/util-pkg.sh
|
||||||
|
|
||||||
PKG_DATA = \
|
PKG_DATA = \
|
||||||
@@ -167,6 +167,8 @@ install_pkg:
|
|||||||
install $(DIRMODE) $(DESTDIR)$(BINDIR)
|
install $(DIRMODE) $(DESTDIR)$(BINDIR)
|
||||||
install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR)
|
install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR)
|
||||||
|
|
||||||
|
$(LN) find-libdeps $(DESTDIR)$(BINDIR)/find-libprovides
|
||||||
|
|
||||||
$(LN) links-add $(DESTDIR)$(BINDIR)/links-remove
|
$(LN) links-add $(DESTDIR)$(BINDIR)/links-remove
|
||||||
|
|
||||||
for l in $(LN_COMMITPKG); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done
|
for l in $(LN_COMMITPKG); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done
|
||||||
@@ -183,8 +185,6 @@ install_pkg:
|
|||||||
install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
|
install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
|
||||||
install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
|
install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
|
||||||
|
|
||||||
install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists
|
|
||||||
install $(FILEMODE) $(PKG_LISTS) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists
|
|
||||||
install_cpio:
|
install_cpio:
|
||||||
+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install
|
+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install
|
||||||
|
|
||||||
|
@@ -36,18 +36,16 @@ copy_keyring(){
|
|||||||
|
|
||||||
create_min_fs(){
|
create_min_fs(){
|
||||||
msg "Creating install root at %s" "$1"
|
msg "Creating install root at %s" "$1"
|
||||||
mkdir -m 0755 -p $1/var/{cache/pacman/pkg,lib/pacman,log} $1/{dev,etc}
|
mkdir -m 0755 -p $1/var/{cache/pacman/pkg,lib/pacman,log} $1/{dev,run,etc/pacman.d}
|
||||||
mkdir -m 1777 -p $1/{tmp,run}
|
mkdir -m 1777 -p $1/tmp
|
||||||
mkdir -m 0555 -p $1/{sys,proc}
|
mkdir -m 0555 -p $1/{sys,proc}
|
||||||
}
|
}
|
||||||
|
|
||||||
newroot=/mnt
|
newroot=/mnt
|
||||||
|
|
||||||
hostcache=false
|
hostcache=0
|
||||||
copykeyring=true
|
copykeyring=1
|
||||||
copymirrorlist=true
|
copymirrorlist=1
|
||||||
directory=false
|
|
||||||
interactive=false
|
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "usage: ${0##*/} [options] root [packages...]"
|
echo "usage: ${0##*/} [options] root [packages...]"
|
||||||
@@ -72,10 +70,10 @@ opts=':C:cGiM'
|
|||||||
while getopts ${opts} arg; do
|
while getopts ${opts} arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
C) pacman_conf=$OPTARG ;;
|
C) pacman_conf=$OPTARG ;;
|
||||||
c) hostcache=true ;;
|
c) hostcache=1 ;;
|
||||||
i) interactive=true ;;
|
i) interactive=1 ;;
|
||||||
G) copykeyring=false ;;
|
G) copykeyring=0 ;;
|
||||||
M) copymirrorlist=false ;;
|
M) copymirrorlist=0 ;;
|
||||||
:) echo "invalid argument ${arg}:$OPTARG"; usage 1;;
|
:) echo "invalid argument ${arg}:$OPTARG"; usage 1;;
|
||||||
?) usage 0 ;;
|
?) usage 0 ;;
|
||||||
esac
|
esac
|
||||||
@@ -88,9 +86,13 @@ check_root
|
|||||||
newroot=$1; shift
|
newroot=$1; shift
|
||||||
pacman_args=("${@:-base}")
|
pacman_args=("${@:-base}")
|
||||||
|
|
||||||
${hostcache} || pacman_args+=(--cachedir="$newroot/var/cache/pacman/pkg")
|
if (( ! hostcache ));then
|
||||||
|
pacman_args+=(--cachedir="$newroot/var/cache/pacman/pkg")
|
||||||
|
fi
|
||||||
|
|
||||||
${interactive} || pacman_args+=(--noconfirm)
|
if (( ! interactive )); then
|
||||||
|
pacman_args+=(--noconfirm)
|
||||||
|
fi
|
||||||
|
|
||||||
[[ -n $pacman_conf ]] && pacman_args+=(--config="$pacman_conf")
|
[[ -n $pacman_conf ]] && pacman_args+=(--config="$pacman_conf")
|
||||||
|
|
||||||
@@ -102,15 +104,16 @@ create_min_fs "$newroot"
|
|||||||
# mount API filesystems
|
# mount API filesystems
|
||||||
chroot_api_mount "$newroot" || die "failed to setup API filesystems in new root"
|
chroot_api_mount "$newroot" || die "failed to setup API filesystems in new root"
|
||||||
|
|
||||||
|
if (( copykeyring ));then
|
||||||
|
copy_keyring "$newroot"
|
||||||
|
fi
|
||||||
|
|
||||||
msg2 'Installing packages to %s' "$newroot"
|
msg2 'Installing packages to %s' "$newroot"
|
||||||
if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then
|
if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then
|
||||||
die 'Failed to install packages to new root'
|
die 'Failed to install packages to new root'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ${copykeyring};then
|
|
||||||
copy_keyring "$newroot"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ${copymirrorlist};then
|
if (( copymirrorlist ));then
|
||||||
copy_mirrorlist "$newroot"
|
copy_mirrorlist "$newroot"
|
||||||
fi
|
fi
|
||||||
|
@@ -16,9 +16,12 @@ chroot_version=0.9
|
|||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
. @libdir@/artools/util-base.sh
|
||||||
|
|
||||||
|
# umask might have been changed in /etc/profile
|
||||||
|
# ensure that sane default is set again
|
||||||
|
umask 0022
|
||||||
|
|
||||||
working_dir=''
|
working_dir=''
|
||||||
files=()
|
files=()
|
||||||
nosetarch=false
|
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage: ${0##*/} [options] working-dir [run arguments]"
|
echo "Usage: ${0##*/} [options] working-dir [run arguments]"
|
||||||
@@ -45,9 +48,9 @@ while getopts ${opts} arg; do
|
|||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
C) pacman_conf="$OPTARG" ;;
|
C) pacman_conf="$OPTARG" ;;
|
||||||
M) makepkg_conf="$OPTARG" ;;
|
M) makepkg_conf="$OPTARG" ;;
|
||||||
c) cache_dir="$OPTARG" ;;
|
c) cache_dirs+=("$OPTARG") ;;
|
||||||
f) files+=("$OPTARG") ;;
|
f) files+=("$OPTARG") ;;
|
||||||
s) nosetarch=true ;;
|
s) nosetarch=1 ;;
|
||||||
r) bindmounts_ro=("$OPTARG") ;;
|
r) bindmounts_ro=("$OPTARG") ;;
|
||||||
w) bindmounts_rw=("$OPTARG") ;;
|
w) bindmounts_rw=("$OPTARG") ;;
|
||||||
h|?) usage ;;
|
h|?) usage ;;
|
||||||
@@ -65,20 +68,33 @@ shift 1
|
|||||||
|
|
||||||
[[ -z $working_dir ]] && die 'Please specify a working directory.'
|
[[ -z $working_dir ]] && die 'Please specify a working directory.'
|
||||||
|
|
||||||
if [[ -z $cache_dir ]]; then
|
pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
|
||||||
cache_dirs=($(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
|
|
||||||
else
|
if (( ${#cache_dirs[@]} == 0 )); then
|
||||||
cache_dirs=("$cache_dir")
|
mapfile -t cache_dirs < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" CacheDir)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
|
|
||||||
host_mirrors=($($pacconf_cmd --repo world Server 2> /dev/null | sed -r 's#(.*/)world/os/.*#\1$repo/os/$arch#'))
|
host_mirrors=($($pacconf_cmd --repo world Server 2> /dev/null | sed -r 's#(.*/)world/os/.*#\1$repo/os/$arch#'))
|
||||||
|
|
||||||
|
while read -r line; do
|
||||||
|
mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
|
||||||
|
--repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1$repo/os/$arch#')
|
||||||
|
if [[ ${lines[0]} != ${host_mirrors[0]} ]]; then
|
||||||
|
for line in "${lines[@]}"; do
|
||||||
|
if [[ $line = file://* ]]; then
|
||||||
|
line=${line#file://}
|
||||||
|
in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
|
||||||
|
|
||||||
copy_hostconf () {
|
copy_hostconf () {
|
||||||
cp -a /etc/pacman.d/gnupg "$1/etc/pacman.d"
|
unshare --fork --pid gpg --homedir "$working_dir"/etc/pacman.d/gnupg/ --no-permission-warning --quiet --batch --import --import-options import-local-sigs "$(pacman-conf GpgDir)"/pubring.gpg >/dev/null 2>&1
|
||||||
|
pacman-key --gpgdir "$working_dir"/etc/pacman.d/gnupg/ --import-trustdb "$(pacman-conf GpgDir)" >/dev/null 2>&1
|
||||||
|
|
||||||
printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist"
|
printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist"
|
||||||
|
|
||||||
[[ -n $pacman_conf ]] && cp $pacman_conf "$1/etc/pacman.conf"
|
[[ -n $pacman_conf ]] && cp $pacman_conf "$1/etc/pacman.conf"
|
||||||
|
|
||||||
[[ -n $makepkg_conf ]] && cp $makepkg_conf "$1/etc/makepkg.conf"
|
[[ -n $makepkg_conf ]] && cp $makepkg_conf "$1/etc/makepkg.conf"
|
||||||
@@ -95,8 +111,11 @@ copy_hostconf () {
|
|||||||
chroot_extra_mount() {
|
chroot_extra_mount() {
|
||||||
chroot_add_resolv_conf "$1"
|
chroot_add_resolv_conf "$1"
|
||||||
chroot_mount "/etc/hosts" "$1/etc/hosts" -B
|
chroot_mount "/etc/hosts" "$1/etc/hosts" -B
|
||||||
# chroot_mount_conditional "[[ -e $1/etc/machine-id ]]" "/etc/machine-id" "$1/etc/machine-id" -B
|
|
||||||
chroot_mount "${cache_dirs[0]}" "$1${cache_dirs[0]}" -B
|
chroot_mount "${cache_dirs[0]}" "$1${cache_dirs[0]}" -B
|
||||||
|
if [[ -e /etc/localtime ]];then
|
||||||
|
[[ -e $1/etc/localtime ]] || touch $1/etc/localtime
|
||||||
|
chroot_mount "/etc/localtime" "$1/etc/localtime" -B
|
||||||
|
fi
|
||||||
|
|
||||||
for cache_dir in ${cache_dirs[@]:1}; do
|
for cache_dir in ${cache_dirs[@]:1}; do
|
||||||
chroot_mount "$cache_dir" "$1${cache_dir}" -Br
|
chroot_mount "$cache_dir" "$1${cache_dir}" -Br
|
||||||
@@ -109,7 +128,7 @@ chroot_extra_mount() {
|
|||||||
for m in ${bindmounts_rw[@]}; do
|
for m in ${bindmounts_rw[@]}; do
|
||||||
chroot_mount "${m%%:*}" "$1${m##*:}" -B
|
chroot_mount "${m%%:*}" "$1${m##*:}" -B
|
||||||
done
|
done
|
||||||
|
|
||||||
for host_mirror in "${host_mirrors[@]}"; do
|
for host_mirror in "${host_mirrors[@]}"; do
|
||||||
if [[ $host_mirror == *file://* ]]; then
|
if [[ $host_mirror == *file://* ]]; then
|
||||||
host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
|
host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
|
||||||
@@ -135,7 +154,7 @@ copy_hostconf "${working_dir}"
|
|||||||
|
|
||||||
eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf")
|
eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf")
|
||||||
|
|
||||||
${nosetarch} && unset CARCH
|
[[ -z $nosetarch ]] || unset CARCH
|
||||||
|
|
||||||
${CARCH:+setarch "$CARCH"} chroot "${working_dir}" "$@"
|
${CARCH:+setarch "$CARCH"} chroot "${working_dir}" "$@"
|
||||||
|
|
||||||
|
@@ -215,7 +215,7 @@ done
|
|||||||
[[ $device = *'\040(deleted)' ]] && continue
|
[[ $device = *'\040(deleted)' ]] && continue
|
||||||
|
|
||||||
if [[ $type = file ]]; then
|
if [[ $type = file ]]; then
|
||||||
printf '%-20s' "$device"
|
printf '%-20s' "${device#${root%/}}"
|
||||||
elif [[ $device = /dev/dm-+([0-9]) ]]; then
|
elif [[ $device = /dev/dm-+([0-9]) ]]; then
|
||||||
# device mapper doesn't allow characters we need to worry
|
# device mapper doesn't allow characters we need to worry
|
||||||
# about being mangled, and it does the escaping of dashes
|
# about being mangled, and it does the escaping of dashes
|
||||||
|
@@ -15,11 +15,9 @@
|
|||||||
. @libdir@/artools/util-base.sh
|
. @libdir@/artools/util-base.sh
|
||||||
|
|
||||||
working_dir=''
|
working_dir=''
|
||||||
files=()
|
|
||||||
|
|
||||||
nosetarch=false
|
files=()
|
||||||
copy_mirrorlist=true
|
chroot_args=()
|
||||||
basestrap_args=(-Gc)
|
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage: ${0##*/} [options] working-dir package-list..."
|
echo "Usage: ${0##*/} [options] working-dir package-list..."
|
||||||
@@ -28,7 +26,6 @@ usage() {
|
|||||||
echo ' -M <file> Location of a makepkg config file'
|
echo ' -M <file> Location of a makepkg config file'
|
||||||
echo ' -c <dir> Set pacman cache'
|
echo ' -c <dir> Set pacman cache'
|
||||||
echo ' -f <file> Copy file from the host to the chroot'
|
echo ' -f <file> Copy file from the host to the chroot'
|
||||||
echo ' -m Do not copy mirrorlist to the chroot'
|
|
||||||
echo ' -s Do not run setarch'
|
echo ' -s Do not run setarch'
|
||||||
echo ' -h This message'
|
echo ' -h This message'
|
||||||
exit 1
|
exit 1
|
||||||
@@ -36,7 +33,7 @@ usage() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='hC:M:c:f:sm'
|
opts='hC:M:c:f:s'
|
||||||
|
|
||||||
while getopts ${opts} arg; do
|
while getopts ${opts} arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
@@ -44,11 +41,12 @@ while getopts ${opts} arg; do
|
|||||||
M) makepkg_conf="$OPTARG" ;;
|
M) makepkg_conf="$OPTARG" ;;
|
||||||
c) cache_dir="$OPTARG" ;;
|
c) cache_dir="$OPTARG" ;;
|
||||||
f) files+=("$OPTARG") ;;
|
f) files+=("$OPTARG") ;;
|
||||||
s) nosetarch=true ;;
|
s) nosetarch=1 ;;
|
||||||
m) copy_mirrorlist=false; basestrap_args+=(-M) ;;
|
|
||||||
h|?) usage ;;
|
h|?) usage ;;
|
||||||
*) error "invalid argument '%s'" "$arg"; usage ;;
|
*) error "invalid argument '%s'" "$arg"; usage ;;
|
||||||
esac
|
esac
|
||||||
|
chroot_args+=("-$arg")
|
||||||
|
[[ -v OPTARG ]] && chroot_args+=("$OPTARG")
|
||||||
done
|
done
|
||||||
shift $(($OPTIND - 1))
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
@@ -61,10 +59,10 @@ shift 1
|
|||||||
|
|
||||||
[[ -z $working_dir ]] && die 'Please specify a working directory.'
|
[[ -z $working_dir ]] && die 'Please specify a working directory.'
|
||||||
|
|
||||||
if [[ -z $cache_dir ]]; then
|
pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
|
||||||
cache_dirs=($(pacman -v $cache_conf 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
|
|
||||||
else
|
if (( ${#cache_dirs[@]} == 0 )); then
|
||||||
cache_dirs=(${cache_dir})
|
mapfile -t cache_dirs < <($pacconf_cmd CacheDir)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
umask 0022
|
umask 0022
|
||||||
@@ -90,26 +88,15 @@ for f in "${files[@]}"; do
|
|||||||
cp "$f" "$working_dir$f"
|
cp "$f" "$working_dir$f"
|
||||||
done
|
done
|
||||||
|
|
||||||
_env=()
|
basestrap -Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \
|
||||||
while read -r varname; do
|
${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages'
|
||||||
_env+=("$varname=${!varname}")
|
|
||||||
done < <(declare -x | sed -r 's/^declare -x ([^=]*)=.*/\1/' | grep -i '_proxy$')
|
|
||||||
env -i "${_env[@]}" \
|
|
||||||
basestrap "${basestrap_args[@]}" ${pacman_conf:+-C "$pacman_conf"} "$working_dir" ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages'
|
|
||||||
|
|
||||||
echo "${CHROOTVERSION}" > "$working_dir/.artools"
|
|
||||||
|
|
||||||
if [[ ! -f "$working_dir/etc/locale.gen.orig" ]];then
|
|
||||||
mv "$working_dir/etc/locale.gen" "$working_dir/etc/locale.gen.orig"
|
|
||||||
fi
|
|
||||||
printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
|
printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
|
||||||
echo 'LANG=en_US.UTF-8' > "$working_dir/etc/locale.conf"
|
echo 'LANG=en_US.UTF-8' > "$working_dir/etc/locale.conf"
|
||||||
|
echo "${CHROOTVERSION}" > "$working_dir/.artools"
|
||||||
|
|
||||||
dbus-uuidgen --ensure="$working_dir"/etc/machine-id
|
dbus-uuidgen --ensure="$working_dir"/etc/machine-id
|
||||||
|
|
||||||
chroot_args=(${pacman_conf:+-C "$pacman_conf"} ${makepkg_conf:+-M "$makepkg_conf"} ${cache_dir:+-c "$cache_dir"})
|
|
||||||
${nosetarch} && chroot_args+=(${nosetarch:+-s})
|
|
||||||
|
|
||||||
exec chroot-run \
|
exec chroot-run \
|
||||||
"${chroot_args[@]}" \
|
"${chroot_args[@]}" \
|
||||||
"$working_dir" locale-gen
|
"$working_dir" locale-gen
|
||||||
|
@@ -15,6 +15,21 @@
|
|||||||
. @libdir@/artools/util-base.sh
|
. @libdir@/artools/util-base.sh
|
||||||
. @libdir@/artools/util-iso.sh
|
. @libdir@/artools/util-iso.sh
|
||||||
|
|
||||||
|
gen_iso_fn(){
|
||||||
|
local vars=("artix") name
|
||||||
|
vars+=("${PROFILE}")
|
||||||
|
vars+=("${INITSYS}")
|
||||||
|
case "${REPOSITORY}" in
|
||||||
|
'gremlins'|'goblins') vars+=("${REPOSITORY}") ;;
|
||||||
|
esac
|
||||||
|
vars+=("${ISO_VERSION}")
|
||||||
|
vars+=("${ARCH}")
|
||||||
|
for n in ${vars[@]};do
|
||||||
|
name=${name:-}${name:+-}${n}
|
||||||
|
done
|
||||||
|
echo $name
|
||||||
|
}
|
||||||
|
|
||||||
prepare_build(){
|
prepare_build(){
|
||||||
timer_start=$(get_timer)
|
timer_start=$(get_timer)
|
||||||
|
|
||||||
@@ -33,7 +48,7 @@ prepare_build(){
|
|||||||
|
|
||||||
iso_label="ARTIX_$(date +%Y%m)"
|
iso_label="ARTIX_$(date +%Y%m)"
|
||||||
|
|
||||||
mkchroot_args+=(-C ${pacman_conf} -m)
|
basestrap_args+=(-C ${pacman_conf})
|
||||||
work_dir=${CHROOTS_ISO}/${PROFILE}/${ARCH}
|
work_dir=${CHROOTS_ISO}/${PROFILE}/${ARCH}
|
||||||
|
|
||||||
iso_dir="${ISO_POOL}/${PROFILE}"
|
iso_dir="${ISO_POOL}/${PROFILE}"
|
||||||
@@ -73,7 +88,9 @@ build(){
|
|||||||
lock_close 9
|
lock_close 9
|
||||||
|
|
||||||
rm -rf --one-file-system "${work_dir}"
|
rm -rf --one-file-system "${work_dir}"
|
||||||
clean_iso_root "${iso_root}"
|
|
||||||
|
msg "Deleting isoroot [%s] ..." "${iso_root##*/}"
|
||||||
|
rm -rf --one-file-system "${iso_root}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ${iso_only}; then
|
if ${iso_only}; then
|
||||||
@@ -101,10 +118,9 @@ clean_first=true
|
|||||||
pretend=false
|
pretend=false
|
||||||
images_only=false
|
images_only=false
|
||||||
iso_only=false
|
iso_only=false
|
||||||
log=false
|
|
||||||
persist=false
|
persist=false
|
||||||
|
|
||||||
mkchroot_args=()
|
basestrap_args=(-GMc)
|
||||||
cmd=${0##*/}
|
cmd=${0##*/}
|
||||||
|
|
||||||
REPOSITORY=${cmd##*-}
|
REPOSITORY=${cmd##*-}
|
||||||
@@ -125,7 +141,6 @@ usage() {
|
|||||||
echo ' -x Build images only'
|
echo ' -x Build images only'
|
||||||
echo ' -z Generate iso only'
|
echo ' -z Generate iso only'
|
||||||
echo ' Requires pre built images (-x)'
|
echo ' Requires pre built images (-x)'
|
||||||
echo ' -l Log to file'
|
|
||||||
echo ' -q Query settings and pretend build'
|
echo ' -q Query settings and pretend build'
|
||||||
echo ' -h This help'
|
echo ' -h This help'
|
||||||
echo ''
|
echo ''
|
||||||
@@ -135,7 +150,7 @@ usage() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='p:r:t:i:g:czxmlqh'
|
opts='p:r:t:i:g:czxmqh'
|
||||||
|
|
||||||
while getopts "${opts}" arg; do
|
while getopts "${opts}" arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
@@ -148,7 +163,6 @@ while getopts "${opts}" arg; do
|
|||||||
x) images_only=true ;;
|
x) images_only=true ;;
|
||||||
z) iso_only=true ;;
|
z) iso_only=true ;;
|
||||||
m) persist=true ;;
|
m) persist=true ;;
|
||||||
l) log=true ;;
|
|
||||||
q) pretend=true ;;
|
q) pretend=true ;;
|
||||||
h|?) usage 0 ;;
|
h|?) usage 0 ;;
|
||||||
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
||||||
|
@@ -20,6 +20,7 @@ load_user_info
|
|||||||
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
|
load_config "${USERCONFDIR}/artools/artools.conf" || load_config "${SYSCONFDIR}/artools.conf"
|
||||||
|
|
||||||
create_first=false
|
create_first=false
|
||||||
|
rebuild=false
|
||||||
|
|
||||||
mkchrootpkg_args=(-c -n)
|
mkchrootpkg_args=(-c -n)
|
||||||
|
|
||||||
@@ -27,22 +28,11 @@ cmd=${0##*/}
|
|||||||
repo=${cmd#*-}
|
repo=${cmd#*-}
|
||||||
base_devel=('base-devel')
|
base_devel=('base-devel')
|
||||||
|
|
||||||
case ${repo} in
|
|
||||||
system|world|galaxy) repo='default' ;;
|
|
||||||
lib32*) base_devel+=('multilib-devel') ;;
|
|
||||||
galaxy-gremlins|galaxy-goblins) repo=${repo#*-} ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
pacman_conf="${DATADIR}/pacman-${repo}.conf"
|
|
||||||
[[ -f ${USERCONFDIR}/artools/pacman-${repo}.conf ]] && pacman_conf="${USERCONFDIR}/artools/pacman-${repo}.conf"
|
|
||||||
|
|
||||||
makepkg_conf="${DATADIR}/makepkg.conf"
|
|
||||||
[[ -f ${USERCONFDIR}/artools/makepkg.conf ]] && makepkg_conf="${USERCONFDIR}/artools/makepkg.conf"
|
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]"
|
echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]"
|
||||||
echo " -r <dir> Create chroots in this directory"
|
echo " -r <dir> Create chroots in this directory"
|
||||||
echo ' -c Recreate the chroot before building'
|
echo ' -c Recreate the chroot before building'
|
||||||
|
echo ' -m Major rebuild'
|
||||||
echo ' -h This help'
|
echo ' -h This help'
|
||||||
echo ''
|
echo ''
|
||||||
echo "Default mkchrootpkg_args args: ${mkchrootpkg_args[*]}"
|
echo "Default mkchrootpkg_args args: ${mkchrootpkg_args[*]}"
|
||||||
@@ -52,17 +42,34 @@ usage() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='hcr:'
|
opts='hcmr:'
|
||||||
|
|
||||||
while getopts "${opts}" arg; do
|
while getopts "${opts}" arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
r) CHROOTS_PKG="$OPTARG" ;;
|
r) CHROOTS_PKG="$OPTARG" ;;
|
||||||
c) create_first=true ;;
|
c) create_first=true ;;
|
||||||
|
m) rebuild=true ;;
|
||||||
h|?) usage 0 ;;
|
h|?) usage 0 ;;
|
||||||
*) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
|
*) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if ${rebuild};then
|
||||||
|
repo='default'
|
||||||
|
else
|
||||||
|
case ${repo} in
|
||||||
|
system|world|galaxy) repo='default' ;;
|
||||||
|
lib32*) base_devel+=('multilib-devel') ;;
|
||||||
|
galaxy-gremlins|galaxy-goblins) repo=${repo#*-} ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
pacman_conf="${DATADIR}/pacman-${repo}.conf"
|
||||||
|
[[ -f ${USERCONFDIR}/artools/pacman-${repo}.conf ]] && pacman_conf="${USERCONFDIR}/artools/pacman-${repo}.conf"
|
||||||
|
|
||||||
|
makepkg_conf="${DATADIR}/makepkg.conf"
|
||||||
|
[[ -f ${USERCONFDIR}/artools/makepkg.conf ]] && makepkg_conf="${USERCONFDIR}/artools/makepkg.conf"
|
||||||
|
|
||||||
check_root SOURCE_DATE_EPOCH
|
check_root SOURCE_DATE_EPOCH
|
||||||
|
|
||||||
mkchrootpkg_args+=("${@:$OPTIND}")
|
mkchrootpkg_args+=("${@:$OPTIND}")
|
||||||
@@ -94,7 +101,7 @@ else
|
|||||||
-C "${pacman_conf}" \
|
-C "${pacman_conf}" \
|
||||||
-M "${makepkg_conf}" \
|
-M "${makepkg_conf}" \
|
||||||
"${CHROOTS_PKG}/${repo}-${ARCH}/root" \
|
"${CHROOTS_PKG}/${repo}-${ARCH}/root" \
|
||||||
pacman -Syu --noconfirm || abort
|
pacman -Syuu --noconfirm || abort
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Always build official packages reproducibly
|
# Always build official packages reproducibly
|
||||||
|
@@ -29,8 +29,9 @@ pull_tree_arch(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
pull_tree_artix(){
|
pull_tree_artix(){
|
||||||
|
local repos=("$1")
|
||||||
cd ${TREE_DIR_ARTIX}
|
cd ${TREE_DIR_ARTIX}
|
||||||
for tree in ${TREE_NAMES_ARTIX[@]};do
|
for tree in ${repos[@]};do
|
||||||
if [[ -d ${tree} ]];then
|
if [[ -d ${tree} ]];then
|
||||||
config_tree "${tree}"
|
config_tree "${tree}"
|
||||||
cd ${tree}
|
cd ${tree}
|
||||||
@@ -57,7 +58,7 @@ show_deps(){
|
|||||||
|
|
||||||
[[ $arch == 'any' ]] && CARCH=any
|
[[ $arch == 'any' ]] && CARCH=any
|
||||||
|
|
||||||
local archver=$(get_full_version $pkg)
|
local archver=$(get_full_version)
|
||||||
|
|
||||||
msg2 "repo: %s" "$repo"
|
msg2 "repo: %s" "$repo"
|
||||||
[[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
|
[[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
|
||||||
@@ -73,19 +74,22 @@ show_deps(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
from_arch(){
|
from_arch(){
|
||||||
local pkg="$1" src= dest=
|
local src= dest=
|
||||||
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "$pkg")
|
|
||||||
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg"
|
|
||||||
|
|
||||||
local package=${TREE_DIR_ARCH}/$git_tree_arch/$pkg
|
cd ${TREE_DIR_ARTIX}
|
||||||
|
|
||||||
|
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||||
|
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||||
|
|
||||||
|
local package=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
|
||||||
local repo=$(find_repo "$package" "${staging}" "${unstable}")
|
local repo=$(find_repo "$package" "${staging}" "${unstable}")
|
||||||
|
|
||||||
src=$package/repos/$repo
|
src=$package/repos/$repo
|
||||||
|
|
||||||
local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "$pkg")
|
local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||||
local tree_dir=$(get_artix_tree "$pkg" "$git_tree_artix" "$git_tree_arch")
|
local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
|
||||||
|
|
||||||
dest=${TREE_DIR_ARTIX}/$tree_dir/$pkg/trunk
|
dest=${TREE_DIR_ARTIX}/$tree_dir/${PACKAGE}/trunk
|
||||||
|
|
||||||
msg "tree: %s" "$tree_dir"
|
msg "tree: %s" "$tree_dir"
|
||||||
show_deps "$src" "$repo"
|
show_deps "$src" "$repo"
|
||||||
@@ -95,25 +99,25 @@ from_arch(){
|
|||||||
cd ${TREE_DIR_ARTIX}/$git_tree_artix
|
cd ${TREE_DIR_ARTIX}/$git_tree_artix
|
||||||
|
|
||||||
. $dest/PKGBUILD 2>/dev/null
|
. $dest/PKGBUILD 2>/dev/null
|
||||||
local artixver=$(get_full_version $pkg)
|
local artixver=$(get_full_version)
|
||||||
|
|
||||||
msg2 "Artix Version: %s" "$artixver"
|
msg2 "Artix Version: %s" "$artixver"
|
||||||
else
|
else
|
||||||
subrepo_new "$pkg" "$tree_dir" "$git_tree_arch"
|
subrepo_new "${PACKAGE}" "$tree_dir" "$git_tree_arch"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg "Sync (%s) from [%s] to [%s]" "$pkg" "$git_tree_arch" "$tree_dir"
|
msg "Sync (%s) from [%s] to [%s]" "${PACKAGE}" "$git_tree_arch" "$tree_dir"
|
||||||
|
|
||||||
sync_pkg "$src" "$dest"
|
sync_pkg "$src" "$dest"
|
||||||
patch_pkg "$pkg"
|
patch_pkg "${PACKAGE}"
|
||||||
}
|
}
|
||||||
|
|
||||||
view_build(){
|
view_build(){
|
||||||
local pkg="$1" src=
|
local src=
|
||||||
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "$pkg")
|
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||||
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg"
|
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||||
|
|
||||||
local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/$pkg
|
local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
|
||||||
local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}")
|
local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}")
|
||||||
|
|
||||||
src=$pkg_path/repos/$repo
|
src=$pkg_path/repos/$repo
|
||||||
@@ -121,9 +125,44 @@ view_build(){
|
|||||||
show_deps "$src" "$repo"
|
show_deps "$src" "$repo"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_tree(){
|
||||||
|
local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
|
||||||
|
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
|
||||||
|
local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
|
||||||
|
local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
|
||||||
|
msg "tree_dir: %s" "$tree_dir"
|
||||||
|
[[ -z $git_tree_artix ]] && msg2 "exists: %s" "no"
|
||||||
|
[[ -n $git_tree_artix ]] && msg2 "exists: %s" "yes"
|
||||||
|
}
|
||||||
|
|
||||||
sync_repos(){
|
sync_repos(){
|
||||||
${sync_arch} && pull_tree_arch
|
${sync_arch} && pull_tree_arch
|
||||||
${sync_artix} && pull_tree_artix
|
if ${sync_artix};then
|
||||||
|
if ${sync_group}; then
|
||||||
|
pull_tree_artix "${GROUP}"
|
||||||
|
else
|
||||||
|
pull_tree_artix "${TREE_NAMES_ARTIX[*]}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
subrepo_new(){
|
||||||
|
local dest=${TREE_DIR_ARTIX}/${GROUP}/${PACKAGE}/trunk
|
||||||
|
|
||||||
|
cd ${TREE_DIR_ARTIX}/${GROUP}
|
||||||
|
|
||||||
|
local org=$(get_pkg_org "${PACKAGE}")
|
||||||
|
|
||||||
|
create_repo "${PACKAGE}" "$org"
|
||||||
|
|
||||||
|
add_repo_to_team "${PACKAGE}" "$org" "${TEAM:-$GROUP}"
|
||||||
|
|
||||||
|
subrepo_clone "${PACKAGE}" "$org"
|
||||||
|
|
||||||
|
prepare_dir "$dest"
|
||||||
|
|
||||||
|
commit_jenkins_files "${PACKAGE}"
|
||||||
}
|
}
|
||||||
|
|
||||||
load_user_info
|
load_user_info
|
||||||
@@ -141,6 +180,8 @@ createnew=false
|
|||||||
conf=false
|
conf=false
|
||||||
unstable=false
|
unstable=false
|
||||||
staging=true
|
staging=true
|
||||||
|
sync_group=false
|
||||||
|
check=false
|
||||||
|
|
||||||
PACKAGE=''
|
PACKAGE=''
|
||||||
|
|
||||||
@@ -152,7 +193,7 @@ usage() {
|
|||||||
echo ' -p <pkg> Package name'
|
echo ' -p <pkg> Package name'
|
||||||
echo ' -t <team> Team name (only with -n)'
|
echo ' -t <team> Team name (only with -n)'
|
||||||
echo " [default: ${TEAM}]"
|
echo " [default: ${TEAM}]"
|
||||||
echo ' -g <group> Group name, the superrepo (only with -n)'
|
echo ' -g <group> Group name, the superrepo (only with -n or -s)'
|
||||||
echo " [default: ${GROUP}]"
|
echo " [default: ${GROUP}]"
|
||||||
echo " -s Clone or pull repos"
|
echo " -s Clone or pull repos"
|
||||||
echo " -z Don't clone or pull arch repos"
|
echo " -z Don't clone or pull arch repos"
|
||||||
@@ -161,7 +202,8 @@ usage() {
|
|||||||
echo ' -n Make new remote subrepo and clone it'
|
echo ' -n Make new remote subrepo and clone it'
|
||||||
echo ' -u Include kde & gnome unstable (only with -i)'
|
echo ' -u Include kde & gnome unstable (only with -i)'
|
||||||
echo ' -w Exclude staging (only with -i)'
|
echo ' -w Exclude staging (only with -i)'
|
||||||
echo ' -v View package depends'
|
echo ' -v Check if a package is in the artix tree(s)'
|
||||||
|
echo ' -c View package depends'
|
||||||
echo ' -h This help'
|
echo ' -h This help'
|
||||||
echo ''
|
echo ''
|
||||||
echo ''
|
echo ''
|
||||||
@@ -170,13 +212,13 @@ usage() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='p:t:g:uwsinzyvh'
|
opts='p:t:g:uwsinzycvh'
|
||||||
|
|
||||||
while getopts "${opts}" arg; do
|
while getopts "${opts}" arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
p) PACKAGE="$OPTARG" ;;
|
p) PACKAGE="$OPTARG" ;;
|
||||||
t) TEAM="$OPTARG" ;;
|
t) TEAM="$OPTARG" ;;
|
||||||
g) GROUP="$OPTARG" ;;
|
g) GROUP="$OPTARG"; sync_group=true ;;
|
||||||
s) sync=true ;;
|
s) sync=true ;;
|
||||||
z) sync_arch=false ;;
|
z) sync_arch=false ;;
|
||||||
y) sync_artix=false ;;
|
y) sync_artix=false ;;
|
||||||
@@ -184,6 +226,7 @@ while getopts "${opts}" arg; do
|
|||||||
n) createnew=true ;;
|
n) createnew=true ;;
|
||||||
w) staging=false ;;
|
w) staging=false ;;
|
||||||
u) unstable=true ;;
|
u) unstable=true ;;
|
||||||
|
c) check=true ;;
|
||||||
v) view=true ;;
|
v) view=true ;;
|
||||||
h|?) usage 0 ;;
|
h|?) usage 0 ;;
|
||||||
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
*) echo "invalid argument '${arg}'"; usage 1 ;;
|
||||||
@@ -197,8 +240,10 @@ prepare_dir "${TREE_DIR_ARCH}"
|
|||||||
|
|
||||||
${sync} && sync_repos
|
${sync} && sync_repos
|
||||||
|
|
||||||
${view} && view_build "${PACKAGE}"
|
${view} && view_build
|
||||||
|
|
||||||
${import} && from_arch "${PACKAGE}"
|
${check} && check_tree
|
||||||
|
|
||||||
${createnew} && subrepo_new "${PACKAGE}" "${GROUP}" "${TEAM}"
|
${import} && from_arch
|
||||||
|
|
||||||
|
${createnew} && subrepo_new
|
||||||
|
98
bin/pkg/checkpkg.in
Normal file
98
bin/pkg/checkpkg.in
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018-19 artoo@artixlinux.org
|
||||||
|
# Copyright (C) 2018 Artix Linux Developers
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
. @libdir@/artools/util-base.sh
|
||||||
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
|
shopt -s extglob
|
||||||
|
|
||||||
|
if [[ -r '/etc/makepkg.conf' ]]; then
|
||||||
|
source '/etc/makepkg.conf'
|
||||||
|
else
|
||||||
|
die '/etc/makepkg.conf not found!'
|
||||||
|
fi
|
||||||
|
|
||||||
|
load_user_info
|
||||||
|
|
||||||
|
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
|
||||||
|
load_vars /etc/makepkg.conf
|
||||||
|
|
||||||
|
if [[ ! -f PKGBUILD ]]; then
|
||||||
|
die 'This must be run in the directory of a built package.'
|
||||||
|
fi
|
||||||
|
|
||||||
|
. ./PKGBUILD
|
||||||
|
if [[ $arch == 'any' ]]; then
|
||||||
|
CARCH='any'
|
||||||
|
fi
|
||||||
|
|
||||||
|
STARTDIR=$(pwd)
|
||||||
|
TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
|
||||||
|
|
||||||
|
for _pkgname in "${pkgname[@]}"; do
|
||||||
|
comparepkg=$_pkgname
|
||||||
|
pkgurl=
|
||||||
|
target_pkgver=$(get_full_version)
|
||||||
|
if ! pkgfile=$(find_cached_package "$_pkgname" "$target_pkgver" "$CARCH"); then
|
||||||
|
die 'tarball not found for package: %s' "${_pkgname}-$target_pkgver"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -s "$pkgfile" "$TEMPDIR"
|
||||||
|
|
||||||
|
if (( $# )); then
|
||||||
|
case $1 in
|
||||||
|
/*|*/*)
|
||||||
|
pkgurl=file://$(readlink -m "$1") ;;
|
||||||
|
*.pkg.tar*)
|
||||||
|
pkgurl=$1 ;;
|
||||||
|
'')
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
comparepkg=$1 ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
[[ -n $pkgurl ]] || pkgurl=$(pacman -Spdd --print-format '%l' --noconfirm "$comparepkg") ||
|
||||||
|
die "Couldn't download previous package for %s." "$comparepkg"
|
||||||
|
|
||||||
|
oldpkg=${pkgurl##*/}
|
||||||
|
|
||||||
|
if [[ ${oldpkg} = "${pkgfile##*/}" ]]; then
|
||||||
|
die "The built package (%s) is the one in the repo right now!" "$_pkgname"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $pkgurl = file://* || ( $pkgurl = /* && -f $pkgurl ) ]]; then
|
||||||
|
ln -s "${pkgurl#file://}" "$TEMPDIR/$oldpkg"
|
||||||
|
elif [[ -f "$PKGDEST/$oldpkg" ]]; then
|
||||||
|
ln -s "$PKGDEST/$oldpkg" "$TEMPDIR/$oldpkg"
|
||||||
|
elif [[ -f "$STARTDIR/$oldpkg" ]]; then
|
||||||
|
ln -s "$STARTDIR/$oldpkg" "$TEMPDIR/$oldpkg"
|
||||||
|
else
|
||||||
|
curl -fsLC - --retry 3 --retry-delay 3 -o "$TEMPDIR/$oldpkg" "$pkgurl"
|
||||||
|
fi
|
||||||
|
|
||||||
|
bsdtar tf "$TEMPDIR/$oldpkg" | sort > "$TEMPDIR/filelist-$_pkgname-old"
|
||||||
|
bsdtar tf "$pkgfile" | sort > "$TEMPDIR/filelist-$_pkgname"
|
||||||
|
|
||||||
|
sdiff -s "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname"
|
||||||
|
|
||||||
|
find-libprovides "$TEMPDIR/$oldpkg" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname-old"
|
||||||
|
find-libprovides "$pkgfile" 2>/dev/null | sort > "$TEMPDIR/libraries-$_pkgname"
|
||||||
|
if ! diff_output="$(sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname")"; then
|
||||||
|
msg "Sonames differ in %s!" "$_pkgname"
|
||||||
|
echo "$diff_output"
|
||||||
|
else
|
||||||
|
msg "No soname differences for %s" "$_pkgname."
|
||||||
|
fi
|
||||||
|
done
|
@@ -16,16 +16,16 @@
|
|||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
compare(){
|
compare(){
|
||||||
local pkgpath="$1"
|
local pkgpath="$1" group="$2"
|
||||||
local pkg=${pkgpath##*/}
|
local pkg=${pkgpath##*/}
|
||||||
local artixrepo=$(find_repo "$package" "${staging}" "${unstable}")
|
local artixrepo=$(find_repo "$pkgpath" "${staging}" "${unstable}")
|
||||||
local artixshow=${artixrepo%-*}
|
local artixshow=${artixrepo%-*}
|
||||||
local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD
|
local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD
|
||||||
|
|
||||||
if [[ -f $pkgbuild ]];then
|
if [[ -f $pkgbuild ]];then
|
||||||
|
|
||||||
. $pkgbuild 2>/dev/null
|
. $pkgbuild 2>/dev/null
|
||||||
local artixver=$(get_full_version $pkg)
|
local artixver=$(get_full_version)
|
||||||
|
|
||||||
local archpath=$(get_import_path $pkg)
|
local archpath=$(get_import_path $pkg)
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ compare(){
|
|||||||
|
|
||||||
if [[ -f $pkgbuild ]];then
|
if [[ -f $pkgbuild ]];then
|
||||||
. $pkgbuild 2>/dev/null
|
. $pkgbuild 2>/dev/null
|
||||||
local archver=$(get_full_version $pkg)
|
local archver=$(get_full_version)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local result=$(vercmp "$artixver" "$archver")
|
local result=$(vercmp "$artixver" "$archver")
|
||||||
@@ -50,9 +50,9 @@ compare(){
|
|||||||
case $artixrepo in
|
case $artixrepo in
|
||||||
*testing*|*staging*)
|
*testing*|*staging*)
|
||||||
if $repomatch;then
|
if $repomatch;then
|
||||||
msg_row "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
|
msg_row "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
else
|
else
|
||||||
msg_row_notify "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
|
msg_row_notify "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -61,14 +61,14 @@ compare(){
|
|||||||
elif ${upgrades};then
|
elif ${upgrades};then
|
||||||
|
|
||||||
if [ $result -eq -1 ];then
|
if [ $result -eq -1 ];then
|
||||||
msg_row_upgrade "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
|
msg_row_upgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif ${downgrades};then
|
elif ${downgrades};then
|
||||||
|
|
||||||
if [ $result -eq 1 ];then
|
if [ $result -eq 1 ];then
|
||||||
if [[ -n $archver ]] && [[ -n $archrepo ]];then
|
if [[ -n $archver ]] && [[ -n $archrepo ]];then
|
||||||
msg_row_downgrade "%-20s %-20s %-25s %-30s %-30s" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver"
|
msg_row_downgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ check_db(){
|
|||||||
if [[ -f $pkgbuild ]];then
|
if [[ -f $pkgbuild ]];then
|
||||||
|
|
||||||
. $pkgbuild 2>/dev/null
|
. $pkgbuild 2>/dev/null
|
||||||
local artixver=$(get_full_version $pkg)
|
local artixver=$(get_full_version)
|
||||||
local is_entry=false
|
local is_entry=false
|
||||||
|
|
||||||
for name in ${pkgname[@]};do
|
for name in ${pkgname[@]};do
|
||||||
@@ -110,7 +110,7 @@ check_db(){
|
|||||||
is_entry=true
|
is_entry=true
|
||||||
fi
|
fi
|
||||||
if ! $is_entry; then
|
if ! $is_entry; then
|
||||||
msg_row "%-20s %-35s %-20s %-10s" "$repo" "$name" "$artixver" "$is_entry"
|
msg_row "${table2}" "$repo" "$name" "$artixver" "$is_entry"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
|
unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
|
||||||
@@ -133,7 +133,7 @@ update_db_cache(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
query_db() {
|
query_db() {
|
||||||
msg_table_header "%-20s %-45s %s" "Repo" "Package" "Library"
|
msg_table_header "${table3}" "Repo" "Package" "Library"
|
||||||
for repo in "${searchrepos[@]}"; do
|
for repo in "${searchrepos[@]}"; do
|
||||||
local prefix=
|
local prefix=
|
||||||
local db=${USERCACHEDIR}/${LINKSDBEXT}/${ARCH}/${repo}/
|
local db=${USERCACHEDIR}/${LINKSDBEXT}/${ARCH}/${repo}/
|
||||||
@@ -143,7 +143,7 @@ query_db() {
|
|||||||
pkg=${pkg#${db}}
|
pkg=${pkg#${db}}
|
||||||
pkg="${pkg%/*}"
|
pkg="${pkg%/*}"
|
||||||
|
|
||||||
msg_row "%-20s %-45s %s" "${repo}" "${pkg}" "${match}"
|
msg_row "${table3}" "${repo}" "${pkg}" "${match}"
|
||||||
done < <(grep -rZ "${library}" "${db}") | sort -u
|
done < <(grep -rZ "${library}" "${db}") | sort -u
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -154,12 +154,12 @@ show_version_table(){
|
|||||||
|
|
||||||
if ${check};then
|
if ${check};then
|
||||||
${sync} && update_db_cache
|
${sync} && update_db_cache
|
||||||
msg_table_header "%-20s %-35s %-20s %-10s" "Repo" "Package" "Version" "Database"
|
msg_table_header "${table2}" "Repo" "Package" "Version" "Database"
|
||||||
elif ${query};then
|
elif ${query};then
|
||||||
${sync} && update_db_cache
|
${sync} && update_db_cache
|
||||||
query_db
|
query_db
|
||||||
else
|
else
|
||||||
msg_table_header "%-20s %-20s %-25s %-30s %-30s" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version"
|
msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for tree in ${TREE_NAMES_ARTIX[@]};do
|
for tree in ${TREE_NAMES_ARTIX[@]};do
|
||||||
@@ -170,7 +170,7 @@ show_version_table(){
|
|||||||
if ${check};then
|
if ${check};then
|
||||||
check_db "$package"
|
check_db "$package"
|
||||||
else
|
else
|
||||||
compare "$package"
|
compare "$package" "$tree"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
@@ -198,6 +198,10 @@ artix_repos=(
|
|||||||
'gnome-wobble' 'kde-wobble'
|
'gnome-wobble' 'kde-wobble'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
|
||||||
|
readonly table2="%-20s %-35s %-30s %-10s"
|
||||||
|
readonly table3="%-20s %-45s %s"
|
||||||
|
|
||||||
searchrepos=(${artix_repos[@]})
|
searchrepos=(${artix_repos[@]})
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
|
@@ -15,6 +15,79 @@
|
|||||||
. @libdir@/artools/util-base.sh
|
. @libdir@/artools/util-base.sh
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
|
find_cached_pkgfile() {
|
||||||
|
local searchdirs=("$PKGDEST" "$PWD") results=()
|
||||||
|
local pkg="$1"
|
||||||
|
for dir in "${searchdirs[@]}"; do
|
||||||
|
[[ -d $dir ]] || continue
|
||||||
|
results+=$(find "$dir" -type f -name "$pkg")
|
||||||
|
done
|
||||||
|
case ${#results[*]} in
|
||||||
|
0)
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
printf '%s\n' "${results[0]}"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error 'Multiple packages found:'
|
||||||
|
printf '\t%s\n' "${results[@]}" >&2
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
get_pkgbasename(){
|
||||||
|
local pkg="$1"
|
||||||
|
local pkgbasename name ver rel arch
|
||||||
|
|
||||||
|
pkgbasename=${pkg%.pkg.tar.?z}
|
||||||
|
arch=${pkgbasename##*-}
|
||||||
|
pkgbasename=${pkgbasename%-"$arch"}
|
||||||
|
|
||||||
|
rel=${pkgbasename##*-}
|
||||||
|
pkgbasename=${pkgbasename%-"$rel"}
|
||||||
|
|
||||||
|
ver=${pkgbasename##*-}
|
||||||
|
|
||||||
|
name=${pkgbasename%-"$ver"}
|
||||||
|
echo $name
|
||||||
|
}
|
||||||
|
|
||||||
|
update_repo2(){
|
||||||
|
local repo="$1"
|
||||||
|
local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
|
||||||
|
|
||||||
|
for name in ${passfiles[@]}; do
|
||||||
|
if pkgfile=$(find_cached_pkgfile "$name");then
|
||||||
|
info "Found: %s" "$name"
|
||||||
|
if ${add_pkg};then
|
||||||
|
local action='add'
|
||||||
|
packages+=("$name")
|
||||||
|
# checkpkg "${pkgfile}" || return 2
|
||||||
|
if ${sign_pkg};then
|
||||||
|
[[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig
|
||||||
|
signfile ${pkgfile}
|
||||||
|
fi
|
||||||
|
ln -sf ${pkgfile}{,.sig} $repo_path/
|
||||||
|
elif ${del_pkg};then
|
||||||
|
local action='remove'
|
||||||
|
packages+=("$(get_pkgbasename "$name")")
|
||||||
|
[[ -e $repo_path/$name ]] && rm $repo_path/$name
|
||||||
|
[[ -e $repo_path/$name.sig ]] && rm $repo_path/$name.sig
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
cd $repo_path
|
||||||
|
if [[ -n $action ]]; then
|
||||||
|
repo-$action -R $repo.${PKGDBEXT} ${packages[@]}
|
||||||
|
${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
update_repo(){
|
update_repo(){
|
||||||
local repo="$1" pkgfile ver
|
local repo="$1" pkgfile ver
|
||||||
local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
|
local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=()
|
||||||
@@ -29,7 +102,7 @@ update_repo(){
|
|||||||
|
|
||||||
for name in ${pkgsearch[@]}; do
|
for name in ${pkgsearch[@]}; do
|
||||||
pkgarch=$(get_pkg_arch "$name")
|
pkgarch=$(get_pkg_arch "$name")
|
||||||
ver=$(get_full_version "$name")
|
ver=$(get_full_version)
|
||||||
if pkgfile=$(find_cached_package "$name" "$ver" "$pkgarch");then
|
if pkgfile=$(find_cached_package "$name" "$ver" "$pkgarch");then
|
||||||
local pkg=${pkgfile##*/}
|
local pkg=${pkgfile##*/}
|
||||||
info "Found: %s" "$pkg"
|
info "Found: %s" "$pkg"
|
||||||
@@ -100,6 +173,12 @@ done
|
|||||||
|
|
||||||
shift $(($OPTIND - 1))
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
|
passfiles="$@"
|
||||||
|
|
||||||
prepare_dir "${REPOS_ROOT}"
|
prepare_dir "${REPOS_ROOT}"
|
||||||
|
|
||||||
update_repo "${dest_repo}"
|
if [[ -n ${passfiles[@]} ]]; then
|
||||||
|
update_repo2 "${dest_repo}"
|
||||||
|
else
|
||||||
|
update_repo "${dest_repo}"
|
||||||
|
fi
|
||||||
|
100
bin/pkg/find-libdeps.in
Normal file
100
bin/pkg/find-libdeps.in
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018-19 artoo@artixlinux.org
|
||||||
|
# Copyright (C) 2018 Artix Linux Developers
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
. @libdir@/artools/util-base.sh
|
||||||
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
shopt -s extglob
|
||||||
|
|
||||||
|
IGNORE_INTERNAL=0
|
||||||
|
|
||||||
|
if [[ $1 = "--ignore-internal" ]]; then
|
||||||
|
IGNORE_INTERNAL=1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
script_mode=${BASH_SOURCE[0]##*/find-lib}
|
||||||
|
|
||||||
|
case $script_mode in
|
||||||
|
deps|provides) true;;
|
||||||
|
*) die "Unknown mode %s" "$script_mode" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ -z $1 ]]; then
|
||||||
|
echo "${0##*/} [options] <package file|extracted package dir>"
|
||||||
|
echo "Options:"
|
||||||
|
echo " --ignore-internal ignore internal libraries"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -d $1 ]]; then
|
||||||
|
pushd "$1" >/dev/null
|
||||||
|
else
|
||||||
|
setup_workdir
|
||||||
|
|
||||||
|
case ${script_mode} in
|
||||||
|
deps) bsdtar -C "$WORKDIR" -xf "$1";;
|
||||||
|
provides) bsdtar -C "$WORKDIR" -xf "$1" --include="*.so*";;
|
||||||
|
esac
|
||||||
|
|
||||||
|
pushd "$WORKDIR" >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
process_sofile() {
|
||||||
|
# extract the library name: libfoo.so
|
||||||
|
soname="${sofile%.so?(+(.+([0-9])))}".so
|
||||||
|
# extract the major version: 1
|
||||||
|
soversion="${sofile##*\.so\.}"
|
||||||
|
if [[ "$soversion" = "$sofile" ]] && ((IGNORE_INTERNAL)); then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
if ! in_array "${soname}=${soversion}-${soarch}" "${soobjects[@]}"; then
|
||||||
|
# libfoo.so=1-64
|
||||||
|
echo "${soname}=${soversion}-${soarch}"
|
||||||
|
soobjects+=("${soname}=${soversion}-${soarch}")
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case $script_mode in
|
||||||
|
deps) find_args=(-perm -u+x);;
|
||||||
|
provides) find_args=(-name '*.so*');;
|
||||||
|
esac
|
||||||
|
|
||||||
|
find . -type f "${find_args[@]}" | while read -r filename; do
|
||||||
|
if [[ $script_mode = "provides" ]]; then
|
||||||
|
# ignore if we don't have a shared object
|
||||||
|
if ! LC_ALL=C readelf -h "$filename" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# get architecture of the file; if soarch is empty it's not an ELF binary
|
||||||
|
soarch=$(LC_ALL=C readelf -h "$filename" 2>/dev/null | sed -n 's/.*Class.*ELF\(32\|64\)/\1/p')
|
||||||
|
[[ -n $soarch ]] || continue
|
||||||
|
|
||||||
|
if [[ $script_mode = "provides" ]]; then
|
||||||
|
# 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')
|
||||||
|
[[ -z $sofile ]] && sofile="${filename##*/}"
|
||||||
|
process_sofile
|
||||||
|
elif [[ $script_mode = "deps" ]]; then
|
||||||
|
# process all libraries needed by the binary
|
||||||
|
for sofile in $(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Shared library: \[(.*)\].*/\1/p'); do
|
||||||
|
process_sofile
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
popd >/dev/null
|
50
bin/pkg/finddeps.in
Normal file
50
bin/pkg/finddeps.in
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (C) 2018-19 artoo@artixlinux.org
|
||||||
|
# Copyright (C) 2018 Artix Linux Developers
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
. @libdir@/artools/util-base.sh
|
||||||
|
|
||||||
|
match=$1
|
||||||
|
|
||||||
|
if [[ -z $match ]]; then
|
||||||
|
echo 'Usage: finddeps <depname>'
|
||||||
|
echo ''
|
||||||
|
echo 'Find packages that depend on a given depname.'
|
||||||
|
echo 'Run this script from the top-level directory of your ABS tree.'
|
||||||
|
echo ''
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
find . -type d -print0 2>/dev/null| while read -r -d '' d; do
|
||||||
|
if [[ -f "$d/PKGBUILD" ]]; then
|
||||||
|
pkgname=() depends=() makedepends=() optdepends=()
|
||||||
|
# shellcheck source=PKGBUILD.proto
|
||||||
|
. "$d/PKGBUILD"
|
||||||
|
for dep in "${depends[@]}"; do
|
||||||
|
# lose the version comparator, if any
|
||||||
|
depname=${dep%%[<>=]*}
|
||||||
|
[[ $depname = "$match" ]] && msg "$d (depends)"
|
||||||
|
done
|
||||||
|
for dep in "${makedepends[@]}"; do
|
||||||
|
# lose the version comparator, if any
|
||||||
|
depname=${dep%%[<>=]*}
|
||||||
|
[[ $depname = "$match" ]] && msg "$d (makedepends)"
|
||||||
|
done
|
||||||
|
for dep in "${optdepends[@]/:*}"; do
|
||||||
|
# lose the version comaparator, if any
|
||||||
|
depname=${dep%%[<>=]*}
|
||||||
|
[[ $depname = "$match" ]] && msg "$d (optdepends)"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
@@ -16,6 +16,29 @@
|
|||||||
|
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
|
|
||||||
|
default_makepkg_args=(--syncdeps --noconfirm --log --holdver --skipinteg)
|
||||||
|
makepkg_args=("${default_makepkg_args[@]}")
|
||||||
|
verifysource_args=()
|
||||||
|
chrootdir=
|
||||||
|
passeddir=
|
||||||
|
makepkg_user=
|
||||||
|
declare -a install_pkgs
|
||||||
|
declare -i ret=0
|
||||||
|
|
||||||
|
keepbuilddir=0
|
||||||
|
update_first=0
|
||||||
|
clean_first=0
|
||||||
|
run_namcap=0
|
||||||
|
temp_chroot=0
|
||||||
|
|
||||||
|
bindmounts_ro=()
|
||||||
|
bindmounts_rw=()
|
||||||
|
|
||||||
|
copy=$USER
|
||||||
|
[[ -n ${SUDO_USER:-} ]] && copy=$SUDO_USER
|
||||||
|
[[ -z "$copy" || $copy = root ]] && copy=copy
|
||||||
|
src_owner=${SUDO_USER:-$USER}
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage: ${0##*/} [options] -r <chrootdir> [--] [makepkg args]"
|
echo "Usage: ${0##*/} [options] -r <chrootdir> [--] [makepkg args]"
|
||||||
echo ' Run this script in a PKGBUILD dir to build a package inside a'
|
echo ' Run this script in a PKGBUILD dir to build a package inside a'
|
||||||
@@ -118,11 +141,7 @@ delete_chroot() {
|
|||||||
stat_done
|
stat_done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Usage: install_packages $copydir $pkgs...
|
|
||||||
install_packages() {
|
install_packages() {
|
||||||
local copydir=$1
|
|
||||||
local install_pkgs=("${@:2}")
|
|
||||||
|
|
||||||
local -a pkgnames
|
local -a pkgnames
|
||||||
local ret
|
local ret
|
||||||
|
|
||||||
@@ -133,28 +152,19 @@ install_packages() {
|
|||||||
-r "${bindmounts_ro[@]}" \
|
-r "${bindmounts_ro[@]}" \
|
||||||
-r "${bindmounts_rw[@]}" \
|
-r "${bindmounts_rw[@]}" \
|
||||||
"$copydir" \
|
"$copydir" \
|
||||||
pacman -U --noconfirm -- "${pkgnames[@]/#//root/}"
|
bash -c 'yes y | pacman -U -- "$@"' -bash "${pkgnames[@]/#//root/}"
|
||||||
ret=$?
|
ret=$?
|
||||||
rm -- "${pkgnames[@]/#/$copydir/root/}"
|
rm -- "${pkgnames[@]/#/$copydir/root/}"
|
||||||
|
|
||||||
return $ret
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
# Usage: prepare_chroot $copydir $HOME $keepbuilddir $run_namcap
|
|
||||||
# Globals:
|
|
||||||
# - MAKEFLAGS
|
|
||||||
# - PACKAGER
|
|
||||||
prepare_chroot() {
|
prepare_chroot() {
|
||||||
local copydir=$1
|
(( keepbuilddir )) || rm -rf "$copydir/build"
|
||||||
local USER_HOME=$2
|
|
||||||
local keepbuilddir=$3
|
|
||||||
local run_namcap=$4
|
|
||||||
|
|
||||||
[[ $keepbuilddir = true ]] || rm -rf "$copydir/build"
|
|
||||||
|
|
||||||
local builduser_uid builduser_gid
|
local builduser_uid builduser_gid
|
||||||
builduser_uid="${SUDO_UID:-$UID}"
|
builduser_uid="$(id -u "$makepkg_user")"
|
||||||
builduser_gid="$(id -g "$builduser_uid")"
|
builduser_gid="$(id -g "$makepkg_user")"
|
||||||
local install="install -o $builduser_uid -g $builduser_gid"
|
local install="install -o $builduser_uid -g $builduser_gid"
|
||||||
local x
|
local x
|
||||||
|
|
||||||
@@ -189,7 +199,7 @@ EOF
|
|||||||
declare -p SOURCE_DATE_EPOCH 2>/dev/null || true
|
declare -p SOURCE_DATE_EPOCH 2>/dev/null || true
|
||||||
printf '_chrootbuild "$@" || exit\n'
|
printf '_chrootbuild "$@" || exit\n'
|
||||||
|
|
||||||
if [[ $run_namcap = true ]]; then
|
if (( run_namcap )); then
|
||||||
declare -f _chrootnamcap
|
declare -f _chrootnamcap
|
||||||
printf '_chrootnamcap || exit\n'
|
printf '_chrootnamcap || exit\n'
|
||||||
fi
|
fi
|
||||||
@@ -215,8 +225,14 @@ _chrootbuild() {
|
|||||||
sudo --preserve-env=SOURCE_DATE_EPOCH -iu builduser bash -c 'cd /startdir; makepkg "$@"' -bash "$@"
|
sudo --preserve-env=SOURCE_DATE_EPOCH -iu builduser bash -c 'cd /startdir; makepkg "$@"' -bash "$@"
|
||||||
ret=$?
|
ret=$?
|
||||||
case $ret in
|
case $ret in
|
||||||
0|14)
|
0)
|
||||||
return 0;;
|
return 0;;
|
||||||
|
14)
|
||||||
|
# whitelist "The package failed to install." but only if there are multiple split packages
|
||||||
|
# in which case they might be conflicting
|
||||||
|
local pkgfiles=(/pkgdest/*.pkg.tar.xz)
|
||||||
|
(( ${#pkgfiles[@]} > 1))
|
||||||
|
return $?;;
|
||||||
*)
|
*)
|
||||||
return $ret;;
|
return $ret;;
|
||||||
esac
|
esac
|
||||||
@@ -230,39 +246,21 @@ _chrootnamcap() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Usage: download_sources $copydir $makepkg_user
|
|
||||||
# Globals:
|
|
||||||
# - SRCDEST
|
|
||||||
download_sources() {
|
download_sources() {
|
||||||
local copydir=$1
|
|
||||||
local makepkg_user=$2
|
|
||||||
|
|
||||||
# local builddir
|
|
||||||
# builddir="$(mktemp -d)"
|
|
||||||
# chown "$makepkg_user:" "$builddir"
|
|
||||||
|
|
||||||
setup_workdir
|
setup_workdir
|
||||||
chown "$makepkg_user:" "$WORKDIR"
|
chown "$makepkg_user:" "$WORKDIR"
|
||||||
|
|
||||||
# Ensure sources are downloaded
|
# Ensure sources are downloaded
|
||||||
sudo -u "$makepkg_user" --preserve-env=GNUPGHOME \
|
sudo -u "$makepkg_user" --preserve-env=GNUPGHOME \
|
||||||
env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \
|
env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \
|
||||||
makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o ||
|
makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o "${verifysource_args[@]}" ||
|
||||||
die "Could not download sources."
|
die "Could not download sources."
|
||||||
|
|
||||||
# Clean up garbage from verifysource
|
# Clean up garbage from verifysource
|
||||||
# rm -rf "$builddir"
|
# rm -rf "$builddir"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Usage: move_products $copydir $owner
|
|
||||||
# Globals:
|
|
||||||
# - PKGDEST
|
|
||||||
# - LOGDEST
|
|
||||||
# - SRCPKGDEST
|
|
||||||
move_products() {
|
move_products() {
|
||||||
local copydir=$1
|
|
||||||
local src_owner=$2
|
|
||||||
|
|
||||||
local pkgfile
|
local pkgfile
|
||||||
for pkgfile in "$copydir"/pkgdest/*; do
|
for pkgfile in "$copydir"/pkgdest/*; do
|
||||||
chown "$src_owner" "$pkgfile"
|
chown "$src_owner" "$pkgfile"
|
||||||
@@ -295,142 +293,118 @@ move_products() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
main() {
|
opts='hcur:I:l:nTD:d:U:'
|
||||||
default_makepkg_args=(--syncdeps --noconfirm --log --holdver --skipinteg)
|
|
||||||
makepkg_args=("${default_makepkg_args[@]}")
|
|
||||||
keepbuilddir=false
|
|
||||||
update_first=false
|
|
||||||
clean_first=false
|
|
||||||
run_namcap=false
|
|
||||||
temp_chroot=false
|
|
||||||
chrootdir=
|
|
||||||
passeddir=
|
|
||||||
makepkg_user=
|
|
||||||
declare -a install_pkgs
|
|
||||||
declare -i ret=0
|
|
||||||
|
|
||||||
bindmounts_ro=()
|
while getopts "${opts}" arg; do
|
||||||
bindmounts_rw=()
|
case "$arg" in
|
||||||
|
c) clean_first=1 ;;
|
||||||
|
D) bindmounts_ro+=("$OPTARG") ;;
|
||||||
|
d) bindmounts_rw+=("$OPTARG") ;;
|
||||||
|
u) update_first=1 ;;
|
||||||
|
r) passeddir="$OPTARG" ;;
|
||||||
|
I) install_pkgs+=("$OPTARG") ;;
|
||||||
|
l) copy="$OPTARG" ;;
|
||||||
|
n) run_namcap=1; makepkg_args+=(--install) ;;
|
||||||
|
T) temp_chroot=1; copy+="-$$" ;;
|
||||||
|
U) makepkg_user="$OPTARG" ;;
|
||||||
|
h|*) usage ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
copy=$USER
|
[[ ! -f PKGBUILD && -z "${install_pkgs[*]}" ]] && die 'This must be run in a directory containing a PKGBUILD.'
|
||||||
[[ -n ${SUDO_USER:-} ]] && copy=$SUDO_USER
|
[[ -n $makepkg_user && -z $(id -u "$makepkg_user") ]] && die 'Invalid makepkg user.'
|
||||||
[[ -z "$copy" || $copy = root ]] && copy=copy
|
makepkg_user=${makepkg_user:-${SUDO_USER:-$USER}}
|
||||||
src_owner=${SUDO_USER:-$USER}
|
|
||||||
|
|
||||||
local opts='hcur:I:l:nTD:d:U:'
|
check_root SOURCE_DATE_EPOCH,GNUPGHOME,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER
|
||||||
|
|
||||||
while getopts "${opts}" arg; do
|
# Canonicalize chrootdir, getting rid of trailing /
|
||||||
case "$arg" in
|
chrootdir=$(readlink -e "$passeddir")
|
||||||
c) clean_first=true ;;
|
[[ ! -d $chrootdir ]] && die "No chroot dir defined, or invalid path '%s'" "$passeddir"
|
||||||
D) bindmounts_ro+=("$OPTARG") ;;
|
[[ ! -d $chrootdir/root ]] && die "Missing chroot dir root directory. Try using: mkchroot %s/root base-devel" "$chrootdir"
|
||||||
d) bindmounts_rw+=("$OPTARG") ;;
|
|
||||||
u) update_first=true ;;
|
|
||||||
r) passeddir="$OPTARG" ;;
|
|
||||||
I) install_pkgs+=("$OPTARG") ;;
|
|
||||||
l) copy="$OPTARG" ;;
|
|
||||||
n) run_namcap=true; makepkg_args+=(--install) ;;
|
|
||||||
T) temp_chroot=true; copy+="-$$" ;;
|
|
||||||
U) makepkg_user="$OPTARG" ;;
|
|
||||||
h|*) usage ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
[[ ! -f PKGBUILD && -z "${install_pkgs[*]}" ]] && die 'This must be run in a directory containing a PKGBUILD.'
|
if [[ ${copy:0:1} = / ]]; then
|
||||||
[[ -n $makepkg_user && -z $(id -u "$makepkg_user") ]] && die 'Invalid makepkg user.'
|
copydir=$copy
|
||||||
makepkg_user=${makepkg_user:-${SUDO_USER:-$USER}}
|
else
|
||||||
|
copydir="$chrootdir/$copy"
|
||||||
|
fi
|
||||||
|
|
||||||
check_root SOURCE_DATE_EPOCH,GNUPGHOME,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER
|
# Pass all arguments after -- right to makepkg
|
||||||
|
makepkg_args+=("${@:$OPTIND}")
|
||||||
|
|
||||||
# Canonicalize chrootdir, getting rid of trailing /
|
# See if -R or -e was passed to makepkg
|
||||||
chrootdir=$(readlink -e "$passeddir")
|
for arg in "${@:$OPTIND}"; do
|
||||||
[[ ! -d $chrootdir ]] && die "No chroot dir defined, or invalid path '%s'" "$passeddir"
|
case ${arg%%=*} in
|
||||||
[[ ! -d $chrootdir/root ]] && die "Missing chroot dir root directory. Try using: mkchroot %s/root base-devel" "$chrootdir"
|
--skip*|--holdver) verifysource_args+=("$arg") ;;
|
||||||
|
--repackage|--noextract) keepbuilddir=1 ;;
|
||||||
|
--*) ;;
|
||||||
|
-*R*|-*e*) keepbuilddir=1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
if [[ ${copy:0:1} = / ]]; then
|
load_user_info
|
||||||
copydir=$copy
|
|
||||||
else
|
|
||||||
copydir="$chrootdir/$copy"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Pass all arguments after -- right to makepkg
|
umask 0022
|
||||||
makepkg_args+=("${@:$OPTIND}")
|
|
||||||
|
|
||||||
# See if -R or -e was passed to makepkg
|
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
|
||||||
for arg in "${makepkg_args[@]}"; do
|
load_vars /etc/makepkg.conf
|
||||||
case ${arg%%=*} in
|
|
||||||
--repackage|--noextract) keepbuilddir=true; break ;;
|
|
||||||
--repackage|--noextract) keepbuilddir=true; break ;;
|
|
||||||
--*) ;;
|
|
||||||
-*R*|-*e*) keepbuilddir=true; break ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
load_user_info
|
# Use PKGBUILD directory if these don't exist
|
||||||
|
[[ -d $PKGDEST ]] || PKGDEST=$PWD
|
||||||
|
[[ -d $SRCDEST ]] || SRCDEST=$PWD
|
||||||
|
[[ -d $SRCPKGDEST ]] || SRCPKGDEST=$PWD
|
||||||
|
[[ -d $LOGDEST ]] || LOGDEST=$PWD
|
||||||
|
|
||||||
umask 0022
|
# Lock the chroot we want to use. We'll keep this lock until we exit.
|
||||||
|
lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy"
|
||||||
|
|
||||||
load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf"
|
if [[ ! -d $copydir ]] || (( clean_first )); then
|
||||||
load_vars /etc/makepkg.conf
|
sync_chroot "$chrootdir/root" "$copydir" "$copy"
|
||||||
|
fi
|
||||||
|
|
||||||
# Use PKGBUILD directory if these don't exist
|
bindmounts_rw+=("${PWD}:/startdir" "${SRCDEST}:/srcdest")
|
||||||
[[ -d $PKGDEST ]] || PKGDEST=$PWD
|
|
||||||
[[ -d $SRCDEST ]] || SRCDEST=$PWD
|
|
||||||
[[ -d $SRCPKGDEST ]] || SRCPKGDEST=$PWD
|
|
||||||
[[ -d $LOGDEST ]] || LOGDEST=$PWD
|
|
||||||
|
|
||||||
# Lock the chroot we want to use. We'll keep this lock until we exit.
|
(( update_first )) && chroot-run \
|
||||||
lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy"
|
|
||||||
|
|
||||||
if [[ ! -d $copydir ]] || $clean_first; then
|
|
||||||
sync_chroot "$chrootdir/root" "$copydir" "$copy"
|
|
||||||
fi
|
|
||||||
|
|
||||||
bindmounts_rw+=("${PWD}:/startdir" "${SRCDEST}:/srcdest")
|
|
||||||
|
|
||||||
$update_first && chroot-run \
|
|
||||||
-r "${bindmounts_ro[*]}" \
|
|
||||||
-w "${bindmounts_rw[*]}" \
|
|
||||||
"$copydir" \
|
|
||||||
pacman -Syu --noconfirm
|
|
||||||
|
|
||||||
if [[ -n ${install_pkgs[*]:-} ]]; then
|
|
||||||
install_packages "$copydir" "${install_pkgs[@]}"
|
|
||||||
ret=$?
|
|
||||||
# If there is no PKGBUILD we have done
|
|
||||||
[[ -f PKGBUILD ]] || return $ret
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$(id -u "$makepkg_user")" == 0 ]]; then
|
|
||||||
error "Running makepkg as root is not allowed."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
download_sources "$copydir" "$makepkg_user"
|
|
||||||
|
|
||||||
prepare_chroot "$copydir" "$USER_HOME" "$keepbuilddir" "$run_namcap"
|
|
||||||
|
|
||||||
if chroot-run \
|
|
||||||
-r "${bindmounts_ro[*]}" \
|
-r "${bindmounts_ro[*]}" \
|
||||||
-w "${bindmounts_rw[*]}" \
|
-w "${bindmounts_rw[*]}" \
|
||||||
"$copydir" \
|
"$copydir" \
|
||||||
/chrootbuild "${makepkg_args[@]}"
|
pacman -Syuu --noconfirm
|
||||||
then
|
|
||||||
move_products "$copydir" "$src_owner"
|
if [[ -n ${install_pkgs[*]:-} ]]; then
|
||||||
|
install_packages
|
||||||
|
ret=$?
|
||||||
|
# If there is no PKGBUILD we are done
|
||||||
|
[[ -f PKGBUILD ]] || exit $ret
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$(id -u "$makepkg_user")" == 0 ]]; then
|
||||||
|
error "Running makepkg as root is not allowed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
download_sources
|
||||||
|
|
||||||
|
prepare_chroot
|
||||||
|
|
||||||
|
if chroot-run \
|
||||||
|
-r "${bindmounts_ro[*]}" \
|
||||||
|
-w "${bindmounts_rw[*]}" \
|
||||||
|
"$copydir" \
|
||||||
|
/chrootbuild "${makepkg_args[@]}"
|
||||||
|
then
|
||||||
|
move_products
|
||||||
|
else
|
||||||
|
(( ret += 1 ))
|
||||||
|
fi
|
||||||
|
|
||||||
|
(( temp_chroot )) && delete_chroot "$copydir" "$copy"
|
||||||
|
|
||||||
|
if (( ret != 0 )); then
|
||||||
|
if (( temp_chroot )); then
|
||||||
|
die "Build failed"
|
||||||
else
|
else
|
||||||
(( ret += 1 ))
|
die "Build failed, check %s/build" "$copydir"
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
$temp_chroot && delete_chroot "$copydir" "$copy"
|
|
||||||
|
|
||||||
if (( ret != 0 )); then
|
|
||||||
if $temp_chroot; then
|
|
||||||
die "Build failed"
|
|
||||||
else
|
|
||||||
die "Build failed, check %s/build" "$copydir"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
# gitea user access token
|
# gitea user access token
|
||||||
# GIT_TOKEN=''
|
# GIT_TOKEN=''
|
||||||
|
|
||||||
# HOST_TREE_ARTIX='gitea@gitea.artixlinux.org:artix'
|
# HOST_TREE_ARTIX='gitea@gitea.artixlinux.org:artixlinux'
|
||||||
|
|
||||||
# TREE_DIR_ARTIX=${WORKSPACE_DIR}/artixlinux
|
# TREE_DIR_ARTIX=${WORKSPACE_DIR}/artixlinux
|
||||||
|
|
||||||
@@ -25,19 +25,25 @@
|
|||||||
# packages-kernel
|
# packages-kernel
|
||||||
# packages-openrc
|
# packages-openrc
|
||||||
# packages-runit
|
# packages-runit
|
||||||
|
# packages-media
|
||||||
# packages-xorg
|
# packages-xorg
|
||||||
# packages-python
|
# packages-python
|
||||||
# packages-perl
|
# packages-perl
|
||||||
# packages-qt5
|
# packages-qt5
|
||||||
|
# packages-devel
|
||||||
# packages-ruby
|
# packages-ruby
|
||||||
|
# packages-gtk
|
||||||
|
# packages-gnome
|
||||||
|
# packages-cinnamon
|
||||||
|
# packages-lxqt
|
||||||
|
# packages-mate
|
||||||
|
# packages-kde
|
||||||
# )
|
# )
|
||||||
|
|
||||||
# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
|
# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
|
||||||
|
|
||||||
# TREE_DIR_ARCH=${WORKSPACE_DIR}/archlinux
|
# TREE_DIR_ARCH=${WORKSPACE_DIR}/archlinux
|
||||||
|
|
||||||
# TREE_NAMES_ARCH=(packages community)
|
|
||||||
|
|
||||||
# default repos root
|
# default repos root
|
||||||
# REPOS_ROOT=${WORKSPACE_DIR}/repos
|
# REPOS_ROOT=${WORKSPACE_DIR}/repos
|
||||||
|
|
||||||
|
@@ -1,63 +0,0 @@
|
|||||||
accountsservice
|
|
||||||
cairo
|
|
||||||
colord
|
|
||||||
cppunit
|
|
||||||
dbus
|
|
||||||
dbus-glib
|
|
||||||
dbus-python
|
|
||||||
desktop-file-utils
|
|
||||||
fontconfig
|
|
||||||
geoclue2
|
|
||||||
glu
|
|
||||||
gst-plugins-bad
|
|
||||||
gst-plugins-base
|
|
||||||
gst-plugins-good
|
|
||||||
gst-plugins-ugly
|
|
||||||
gstreamer
|
|
||||||
harfbuzz
|
|
||||||
hicolor-icon-theme
|
|
||||||
libatasmart
|
|
||||||
libbsd
|
|
||||||
libdrm
|
|
||||||
libevdev
|
|
||||||
libinput
|
|
||||||
libmbim
|
|
||||||
libnice
|
|
||||||
libqmi
|
|
||||||
libvdpau
|
|
||||||
libxcb
|
|
||||||
libxft
|
|
||||||
libxi
|
|
||||||
media-player-info
|
|
||||||
mesa
|
|
||||||
modemmanager
|
|
||||||
networkmanager
|
|
||||||
orc
|
|
||||||
p11-kit
|
|
||||||
polkit
|
|
||||||
poppler
|
|
||||||
poppler-data
|
|
||||||
pulseaudio
|
|
||||||
pyxdg
|
|
||||||
r
|
|
||||||
sdl
|
|
||||||
shared-mime-info
|
|
||||||
sound-theme-freedesktop
|
|
||||||
startup-notification
|
|
||||||
systemdcompat
|
|
||||||
telepathy-glib
|
|
||||||
ttf-dejavu
|
|
||||||
udisks2
|
|
||||||
upower
|
|
||||||
wayland
|
|
||||||
wayland-protocols
|
|
||||||
webrtc-audio-processing
|
|
||||||
xcb-proto
|
|
||||||
xcb-util
|
|
||||||
xcb-util-cursor
|
|
||||||
xcb-util-image
|
|
||||||
xcb-util-keysyms
|
|
||||||
xcb-util-renderutil
|
|
||||||
xcb-util-wm
|
|
||||||
xdg-user-dirs
|
|
||||||
xdg-utils
|
|
@@ -1,63 +0,0 @@
|
|||||||
adwaita-icon-theme
|
|
||||||
atk
|
|
||||||
at-spi2-atk
|
|
||||||
at-spi2-core
|
|
||||||
babl
|
|
||||||
cantarell-fonts
|
|
||||||
cogl
|
|
||||||
dconf
|
|
||||||
flatpak
|
|
||||||
gamin
|
|
||||||
gcab
|
|
||||||
gconf
|
|
||||||
gcr
|
|
||||||
gdk-pixbuf2
|
|
||||||
gegl02
|
|
||||||
git
|
|
||||||
glade
|
|
||||||
glib2
|
|
||||||
glib-networking
|
|
||||||
gnome-common
|
|
||||||
gnome-keyring
|
|
||||||
gobject-introspection
|
|
||||||
gsettings-desktop-schemas
|
|
||||||
gssdp
|
|
||||||
gtk2
|
|
||||||
gtk3
|
|
||||||
gtk-doc
|
|
||||||
gtksourceview3
|
|
||||||
gupnp
|
|
||||||
gupnp-igd
|
|
||||||
gvfs
|
|
||||||
json-glib
|
|
||||||
libcloudproviders
|
|
||||||
libcroco
|
|
||||||
libgee
|
|
||||||
libglade
|
|
||||||
libgnome-keyring
|
|
||||||
libgudev
|
|
||||||
libnotify
|
|
||||||
librsvg
|
|
||||||
libsecret
|
|
||||||
libsoup
|
|
||||||
libxml2
|
|
||||||
libxslt
|
|
||||||
meld
|
|
||||||
mobile-broadband-provider-info
|
|
||||||
modemmanager
|
|
||||||
networkmanager
|
|
||||||
network-manager-applet
|
|
||||||
orca
|
|
||||||
ostree
|
|
||||||
pango
|
|
||||||
pyatspi
|
|
||||||
pygobject
|
|
||||||
pygobject2
|
|
||||||
pygtk
|
|
||||||
rest
|
|
||||||
ttf-bitstream-vera
|
|
||||||
vala
|
|
||||||
vte
|
|
||||||
vte3
|
|
||||||
yelp-tools
|
|
||||||
yelp-xsl
|
|
@@ -1,4 +0,0 @@
|
|||||||
phonon-gstreamer
|
|
||||||
polkit-qt
|
|
||||||
extra-cmake-modules
|
|
||||||
phonon
|
|
@@ -1,17 +0,0 @@
|
|||||||
linux
|
|
||||||
nvidia
|
|
||||||
nvidia-utils
|
|
||||||
acpi_call
|
|
||||||
bbswitch
|
|
||||||
broadcom-wl
|
|
||||||
tp_smapi
|
|
||||||
r8168
|
|
||||||
virtualbox-modules-artix
|
|
||||||
linux-lts
|
|
||||||
nvidia-lts
|
|
||||||
acpi_call-lts
|
|
||||||
bbswitch-lts
|
|
||||||
broadcom-wl-lts
|
|
||||||
tp_smapi-lts
|
|
||||||
r8168-lts
|
|
||||||
linux-firmware
|
|
@@ -1,31 +0,0 @@
|
|||||||
lxqt-about
|
|
||||||
lxqt-admin
|
|
||||||
lxqt-config
|
|
||||||
lxqt-globalkeys
|
|
||||||
lxqt-notificationd
|
|
||||||
lxqt-openssh-askpass
|
|
||||||
lxqt-panel
|
|
||||||
lxqt-policykit
|
|
||||||
lxqt-powermanagement
|
|
||||||
lxqt-qtplugin
|
|
||||||
lxqt-runner
|
|
||||||
lxqt-session
|
|
||||||
lxqt-sudo
|
|
||||||
lxqt-themes
|
|
||||||
lxqt-build-tools
|
|
||||||
|
|
||||||
compton-conf
|
|
||||||
lximage-qt
|
|
||||||
obconf-qt
|
|
||||||
openbox
|
|
||||||
pcmanfm-qt
|
|
||||||
qterminal
|
|
||||||
liblxqt
|
|
||||||
libqtxdg
|
|
||||||
lxmenu-data
|
|
||||||
libfm-qt
|
|
||||||
libfm
|
|
||||||
qtermwidget
|
|
||||||
libsysstat
|
|
||||||
libstatgrab
|
|
||||||
qps
|
|
@@ -1,37 +0,0 @@
|
|||||||
libdmx
|
|
||||||
libfontenc
|
|
||||||
libice
|
|
||||||
libpciaccess
|
|
||||||
libsm
|
|
||||||
libx11
|
|
||||||
libxau
|
|
||||||
libxaw
|
|
||||||
libxcomposite
|
|
||||||
libxcursor
|
|
||||||
libxdamage
|
|
||||||
libxdmcp
|
|
||||||
libxext
|
|
||||||
libxfixes
|
|
||||||
libxfont2
|
|
||||||
libxi|libxft
|
|
||||||
libxinerama
|
|
||||||
libxkbfile
|
|
||||||
libxkbui
|
|
||||||
libxmu
|
|
||||||
libxpm
|
|
||||||
libxrandr
|
|
||||||
libxrender
|
|
||||||
libxres
|
|
||||||
libxshmfence
|
|
||||||
libxss
|
|
||||||
libxt
|
|
||||||
libxtst
|
|
||||||
libxv
|
|
||||||
libxvmc
|
|
||||||
libxxf86vm
|
|
||||||
pixman
|
|
||||||
xbitmaps
|
|
||||||
xkeyboard-config
|
|
||||||
xorgproto
|
|
||||||
xterm
|
|
||||||
xtrans
|
|
@@ -162,7 +162,7 @@ artix_mount_handler() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${checksum}" == "y" ]]; then
|
if [[ "${checksum}" == "y" ]]; then
|
||||||
for fs in rootfs desktopfs livefs;do
|
for fs in rootfs livefs;do
|
||||||
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then
|
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then
|
||||||
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sha512" ]]; then
|
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sha512" ]]; then
|
||||||
msg -n ":: Self-test requested, please wait..."
|
msg -n ":: Self-test requested, please wait..."
|
||||||
@@ -182,7 +182,7 @@ artix_mount_handler() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${verify}" == "y" ]]; then
|
if [[ "${verify}" == "y" ]]; then
|
||||||
for fs in rootfs desktopfs livefs;do
|
for fs in rootfs livefs;do
|
||||||
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then
|
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then
|
||||||
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs.sig" ]]; then
|
if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs.sig" ]]; then
|
||||||
msg -n ":: Signature verification requested, please wait..."
|
msg -n ":: Signature verification requested, please wait..."
|
||||||
@@ -225,7 +225,7 @@ artix_mount_handler() {
|
|||||||
local dest_sfs="/run/artix/sfs" dest_img="/run/artix/img"
|
local dest_sfs="/run/artix/sfs" dest_img="/run/artix/img"
|
||||||
local lower_dir
|
local lower_dir
|
||||||
|
|
||||||
for sfs in livefs desktopfs rootfs;do
|
for sfs in livefs rootfs;do
|
||||||
if [[ -f "${src}/${sfs}.sfs" ]]; then
|
if [[ -f "${src}/${sfs}.sfs" ]]; then
|
||||||
_mnt_sfs "${src}/${sfs}.sfs" "${dest_sfs}/${sfs}"
|
_mnt_sfs "${src}/${sfs}.sfs" "${dest_sfs}/${sfs}"
|
||||||
if [[ -f "${dest_sfs}/${sfs}/${sfs}.img" ]]; then
|
if [[ -f "${dest_sfs}/${sfs}/${sfs}.img" ]]; then
|
||||||
|
@@ -40,7 +40,7 @@ artix_pxe_http_mount_handler () {
|
|||||||
|
|
||||||
local _src=${artix_http_srv}${artixbasedir}/${arch}
|
local _src=${artix_http_srv}${artixbasedir}/${arch}
|
||||||
|
|
||||||
for sfs in livefs desktopfs rootfs;do
|
for sfs in livefs rootfs;do
|
||||||
if [[ ! -z "$( curl -s --head "${_src}/${sfs}.sfs" | grep "OK" )" ]]; then
|
if [[ ! -z "$( curl -s --head "${_src}/${sfs}.sfs" | grep "OK" )" ]]; then
|
||||||
_curl_get "${_src}/${sfs}.sfs" "/${arch}"
|
_curl_get "${_src}/${sfs}.sfs" "/${arch}"
|
||||||
|
|
||||||
|
@@ -31,7 +31,7 @@ load_vars() {
|
|||||||
[[ -f $1 ]] || return 1
|
[[ -f $1 ]] || return 1
|
||||||
|
|
||||||
for var in {SRC,SRCPKG,PKG,LOG}DEST MAKEFLAGS PACKAGER CARCH GPGKEY; do
|
for var in {SRC,SRCPKG,PKG,LOG}DEST MAKEFLAGS PACKAGER CARCH GPGKEY; do
|
||||||
[[ -z ${!var:-} ]] && eval "$(grep -a "^${var}=" "$1")"
|
[[ -z ${!var:-} ]] && eval "$(source "$1"; printf "%s='%s'" "$var" "${!var}")"
|
||||||
done
|
done
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
@@ -76,19 +76,23 @@ init_artools_pkg(){
|
|||||||
|
|
||||||
[[ -z ${TREE_NAMES_ARTIX[@]} ]] && \
|
[[ -z ${TREE_NAMES_ARTIX[@]} ]] && \
|
||||||
TREE_NAMES_ARTIX=(
|
TREE_NAMES_ARTIX=(
|
||||||
packages
|
packages
|
||||||
community
|
community
|
||||||
packages-kernel
|
packages-kernel
|
||||||
packages-openrc
|
packages-openrc
|
||||||
packages-runit
|
packages-runit
|
||||||
packages-xorg
|
packages-xorg
|
||||||
packages-python
|
packages-python
|
||||||
packages-perl
|
packages-perl
|
||||||
packages-qt5
|
packages-qt5
|
||||||
packages-ruby
|
packages-devel
|
||||||
# packages-desktop
|
packages-ruby
|
||||||
# packages-kde
|
packages-gtk
|
||||||
# packages-gnome
|
packages-gnome
|
||||||
|
packages-cinnamon
|
||||||
|
packages-lxqt
|
||||||
|
packages-mate
|
||||||
|
packages-kde
|
||||||
)
|
)
|
||||||
|
|
||||||
HOST_TREE_ARTIX=${HOST_TREE_ARTIX:-"gitea@${GIT_DOMAIN}:artixlinux"}
|
HOST_TREE_ARTIX=${HOST_TREE_ARTIX:-"gitea@${GIT_DOMAIN}:artixlinux"}
|
||||||
@@ -155,15 +159,6 @@ load_config(){
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
user_own(){
|
|
||||||
local flag=$2
|
|
||||||
chown ${flag} "${OWNER}:$(id --group ${OWNER})" "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
user_run(){
|
|
||||||
su ${OWNER} -c "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
load_user_info(){
|
load_user_info(){
|
||||||
OWNER=${SUDO_USER:-$USER}
|
OWNER=${SUDO_USER:-$USER}
|
||||||
|
|
||||||
|
@@ -153,7 +153,7 @@ configure_calamares(){
|
|||||||
msg2 "Configuring Calamares"
|
msg2 "Configuring Calamares"
|
||||||
write_users_conf > "$mods"/users.conf
|
write_users_conf > "$mods"/users.conf
|
||||||
write_servicescfg_conf > "$mods"/services-"${INITSYS}".conf
|
write_servicescfg_conf > "$mods"/services-"${INITSYS}".conf
|
||||||
[[ -z ${DESKTOP_LIST} ]] && write_unpackfs_conf > "$mods"/unpackfs.conf
|
write_unpackfs_conf > "$mods"/unpackfs.conf
|
||||||
sed -e "s|openrc|${INITSYS}|" -i "$mods"/postcfg.conf
|
sed -e "s|openrc|${INITSYS}|" -i "$mods"/postcfg.conf
|
||||||
sed -e "s|services-openrc|services-${INITSYS}|" -i "$1"/etc/calamares/settings.conf
|
sed -e "s|services-openrc|services-${INITSYS}|" -i "$1"/etc/calamares/settings.conf
|
||||||
fi
|
fi
|
||||||
|
@@ -29,11 +29,11 @@ prepare_initramfs(){
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n ${GPG_KEY} ]]; then
|
if [[ -n ${GPG_KEY} ]]; then
|
||||||
user_run "gpg --export ${GPG_KEY} >${USERCONFDIR}/artools/gpgkey"
|
su ${OWNER} -c "gpg --export ${GPG_KEY} >/tmp/GPG_KEY"
|
||||||
exec 17<>${USERCONFDIR}/artools/GPG_KEY
|
exec 17<>/tmp/GPG_KEY
|
||||||
fi
|
fi
|
||||||
local _kernel=$(cat $mnt/usr/lib/modules/*/version)
|
local _kernel=$(cat $mnt/usr/lib/modules/*/version)
|
||||||
ARTIX_GNUPG_FD=${GPG_KEY:+17} chroot-run $mnt \
|
ARTIX_GNUPG_FD=${GPG_KEY:+17} artools-chroot $mnt \
|
||||||
/usr/bin/mkinitcpio -k ${_kernel} \
|
/usr/bin/mkinitcpio -k ${_kernel} \
|
||||||
-c /etc/mkinitcpio-artix.conf \
|
-c /etc/mkinitcpio-artix.conf \
|
||||||
-g /boot/initramfs.img
|
-g /boot/initramfs.img
|
||||||
@@ -41,8 +41,8 @@ prepare_initramfs(){
|
|||||||
if [[ -n ${GPG_KEY} ]]; then
|
if [[ -n ${GPG_KEY} ]]; then
|
||||||
exec 17<&-
|
exec 17<&-
|
||||||
fi
|
fi
|
||||||
if [[ -f ${USERCONFDIR}/artools/GPG_KEY ]]; then
|
if [[ -f /tmp/GPG_KEY ]]; then
|
||||||
rm ${USERCONFDIR}/artools/GPG_KEY
|
rm /tmp/GPG_KEY
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,8 +64,9 @@ configure_grub(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
prepare_grub(){
|
prepare_grub(){
|
||||||
local platform=i386-pc img='core.img' grub=$3/boot/grub efi=$3/efi/boot \
|
local platform=i386-pc img='core.img' prefix=/boot/grub
|
||||||
lib=$1/usr/lib/grub prefix=/boot/grub theme=$2/usr/share/grub
|
local lib=$1/usr/lib/grub theme=$2/usr/share/grub
|
||||||
|
local grub=$3/boot/grub efi=$3/efi/boot
|
||||||
|
|
||||||
prepare_dir ${grub}/${platform}
|
prepare_dir ${grub}/${platform}
|
||||||
|
|
||||||
|
@@ -12,33 +12,12 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
gen_iso_fn(){
|
|
||||||
local vars=("artix") name
|
|
||||||
vars+=("${PROFILE}")
|
|
||||||
vars+=("${INITSYS}")
|
|
||||||
case "${REPOSITORY}" in
|
|
||||||
'gremlins'|'goblins') vars+=("${REPOSITORY}") ;;
|
|
||||||
esac
|
|
||||||
vars+=("${ISO_VERSION}")
|
|
||||||
vars+=("${ARCH}")
|
|
||||||
for n in ${vars[@]};do
|
|
||||||
name=${name:-}${name:+-}${n}
|
|
||||||
done
|
|
||||||
echo $name
|
|
||||||
}
|
|
||||||
|
|
||||||
clean_iso_root(){
|
|
||||||
local dest="$1"
|
|
||||||
msg "Deleting isoroot [%s] ..." "${dest##*/}"
|
|
||||||
rm -rf --one-file-system "$dest"
|
|
||||||
}
|
|
||||||
|
|
||||||
make_sig () {
|
make_sig () {
|
||||||
local idir="$1" file="$2"
|
local idir="$1" file="$2"
|
||||||
msg2 "Creating signature file..."
|
msg2 "Creating signature file..."
|
||||||
cd "$idir"
|
cd "$idir"
|
||||||
user_own "$idir"
|
chown "${OWNER}:$(id --group ${OWNER})" "$idir"
|
||||||
user_run "gpg --detach-sign --default-key ${GPG_KEY} $file.sfs"
|
su ${OWNER} -c "gpg --detach-sign --default-key ${GPG_KEY} $file.sfs"
|
||||||
chown -R root "$idir"
|
chown -R root "$idir"
|
||||||
cd ${OLDPWD}
|
cd ${OLDPWD}
|
||||||
}
|
}
|
||||||
|
@@ -39,21 +39,12 @@ track_fs() {
|
|||||||
|
|
||||||
mount_overlay(){
|
mount_overlay(){
|
||||||
FS_ACTIVE_MOUNTS=()
|
FS_ACTIVE_MOUNTS=()
|
||||||
local lower= upper="$1" work="$2" pkglist="$3"
|
local lower= upper="$1" work="$2"
|
||||||
local fs=${upper##*/}
|
|
||||||
local rootfs="$work/rootfs" desktopfs="$work/desktopfs" livefs="$work/livefs"
|
|
||||||
mkdir -p "${mnt_dir}/work"
|
mkdir -p "${mnt_dir}/work"
|
||||||
mkdir -p "$upper"
|
mkdir -p "$upper"
|
||||||
case $fs in
|
case $upper in
|
||||||
desktopfs) lower="$rootfs" ;;
|
*/livefs) lower="$work/rootfs" ;;
|
||||||
livefs)
|
*/bootfs) lower="$work/livefs":"$work/rootfs" ;;
|
||||||
lower="$rootfs"
|
|
||||||
[[ -f $pkglist ]] && lower="$desktopfs":"$rootfs"
|
|
||||||
;;
|
|
||||||
bootfs)
|
|
||||||
lower="$livefs":"$rootfs"
|
|
||||||
[[ -f $pkglist ]] && lower="$livefs":"$desktopfs":"$rootfs"
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper"
|
track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper"
|
||||||
}
|
}
|
||||||
|
@@ -23,9 +23,6 @@ init_profile(){
|
|||||||
[[ -f "$profdir/$prof/Packages-Root" ]] && ROOT_LIST="$profdir/$prof/Packages-Root"
|
[[ -f "$profdir/$prof/Packages-Root" ]] && ROOT_LIST="$profdir/$prof/Packages-Root"
|
||||||
[[ -d "$profdir/$prof/root-overlay" ]] && ROOT_OVERLAY="$profdir/$prof/root-overlay"
|
[[ -d "$profdir/$prof/root-overlay" ]] && ROOT_OVERLAY="$profdir/$prof/root-overlay"
|
||||||
|
|
||||||
[[ -f "$profdir/$prof/Packages-Desktop" ]] && DESKTOP_LIST="$profdir/$prof/Packages-Desktop"
|
|
||||||
[[ -d "$profdir/$prof/desktop-overlay" ]] && DESKTOP_OVERLAY="$profdir/$prof/desktop-overlay"
|
|
||||||
|
|
||||||
[[ -f "$profdir/$prof/Packages-Live" ]] && LIVE_LIST="$profdir/$prof/Packages-Live"
|
[[ -f "$profdir/$prof/Packages-Live" ]] && LIVE_LIST="$profdir/$prof/Packages-Live"
|
||||||
[[ -d "$profdir/$prof/live-overlay" ]] && LIVE_OVERLAY="$profdir/$prof/live-overlay"
|
[[ -d "$profdir/$prof/live-overlay" ]] && LIVE_OVERLAY="$profdir/$prof/live-overlay"
|
||||||
}
|
}
|
||||||
|
@@ -27,20 +27,6 @@ error_function() {
|
|||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
|
|
||||||
# $1: function
|
|
||||||
run_log(){
|
|
||||||
local func="$1" log_dir='/var/log/artools'
|
|
||||||
[[ ! -d $log_dir ]] && mkdir -p $log_dir
|
|
||||||
local logfile=${log_dir}/$(gen_iso_fn).$func.log
|
|
||||||
logpipe=$(mktemp -u "/tmp/$func.pipe.XXXXXXXX")
|
|
||||||
mkfifo "$logpipe"
|
|
||||||
tee "$logfile" < "$logpipe" &
|
|
||||||
local teepid=$!
|
|
||||||
$func &> "$logpipe"
|
|
||||||
wait $teepid
|
|
||||||
rm "$logpipe"
|
|
||||||
}
|
|
||||||
|
|
||||||
run_safe() {
|
run_safe() {
|
||||||
local restoretrap func="$1"
|
local restoretrap func="$1"
|
||||||
set -e
|
set -e
|
||||||
@@ -48,11 +34,7 @@ run_safe() {
|
|||||||
restoretrap=$(trap -p ERR)
|
restoretrap=$(trap -p ERR)
|
||||||
trap 'error_function $func' ERR
|
trap 'error_function $func' ERR
|
||||||
|
|
||||||
if ${log};then
|
"$func"
|
||||||
run_log "$func"
|
|
||||||
else
|
|
||||||
"$func"
|
|
||||||
fi
|
|
||||||
|
|
||||||
eval $restoretrap
|
eval $restoretrap
|
||||||
set +E
|
set +E
|
||||||
@@ -96,12 +78,6 @@ make_iso() {
|
|||||||
msg "Done [Build ISO]"
|
msg "Done [Build ISO]"
|
||||||
}
|
}
|
||||||
|
|
||||||
install_packages(){
|
|
||||||
local fs="$1"
|
|
||||||
setarch "${ARCH}" mkchroot \
|
|
||||||
"${mkchroot_args[@]}" "${fs}" "${packages[@]}"
|
|
||||||
}
|
|
||||||
|
|
||||||
copy_overlay(){
|
copy_overlay(){
|
||||||
local src="$1" dest="$2"
|
local src="$1" dest="$2"
|
||||||
if [[ -e "$src" ]];then
|
if [[ -e "$src" ]];then
|
||||||
@@ -114,10 +90,6 @@ clean_up_image(){
|
|||||||
local path mnt="$1"
|
local path mnt="$1"
|
||||||
msg2 "Cleaning [%s]" "${mnt##*/}"
|
msg2 "Cleaning [%s]" "${mnt##*/}"
|
||||||
|
|
||||||
if [[ -f "$mnt/etc/locale.gen.orig" ]];then
|
|
||||||
mv "$mnt/etc/locale.gen.orig" "$mnt/etc/locale.gen"
|
|
||||||
rm "$mnt/etc/locale.conf"
|
|
||||||
fi
|
|
||||||
path=$mnt/boot
|
path=$mnt/boot
|
||||||
if [[ -d "$path" ]]; then
|
if [[ -d "$path" ]]; then
|
||||||
find "$path" -name 'initramfs*.img' -delete &> /dev/null
|
find "$path" -name 'initramfs*.img' -delete &> /dev/null
|
||||||
@@ -142,11 +114,6 @@ clean_up_image(){
|
|||||||
if [[ -d $path ]];then
|
if [[ -d $path ]];then
|
||||||
find "$path" -mindepth 1 -delete &> /dev/null
|
find "$path" -mindepth 1 -delete &> /dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ${mnt##*/} == 'livefs' ]];then
|
|
||||||
rm -rf "$mnt/etc/pacman.d/gnupg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
|
find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
|
||||||
if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
|
if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
|
||||||
rm $mnt/boot/grub/grub.cfg
|
rm $mnt/boot/grub/grub.cfg
|
||||||
@@ -163,36 +130,18 @@ make_rootfs() {
|
|||||||
|
|
||||||
prepare_dir "${rootfs}"
|
prepare_dir "${rootfs}"
|
||||||
|
|
||||||
install_packages "${rootfs}"
|
basestrap "${basestrap_args[@]}" "${rootfs}" "${packages[@]}"
|
||||||
|
|
||||||
copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
|
copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
|
||||||
|
|
||||||
clean_up_image "${rootfs}"
|
clean_up_image "${rootfs}"
|
||||||
|
|
||||||
|
: > ${work_dir}/rootfs.lock
|
||||||
|
|
||||||
msg "Done [Base installation] (rootfs)"
|
msg "Done [Base installation] (rootfs)"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
make_desktopfs() {
|
|
||||||
if [[ ! -e ${work_dir}/desktopfs.lock ]]; then
|
|
||||||
msg "Prepare [Desktop installation] (desktopfs)"
|
|
||||||
local desktopfs="${work_dir}/desktopfs"
|
|
||||||
|
|
||||||
prepare_dir "${desktopfs}"
|
|
||||||
|
|
||||||
mount_overlay "${desktopfs}" "${work_dir}"
|
|
||||||
|
|
||||||
install_packages "${desktopfs}"
|
|
||||||
|
|
||||||
copy_overlay "${DESKTOP_OVERLAY}" "${desktopfs}"
|
|
||||||
|
|
||||||
umount_overlay
|
|
||||||
clean_up_image "${desktopfs}"
|
|
||||||
|
|
||||||
msg "Done [Desktop installation] (desktopfs)"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
make_livefs() {
|
make_livefs() {
|
||||||
if [[ ! -e ${work_dir}/livefs.lock ]]; then
|
if [[ ! -e ${work_dir}/livefs.lock ]]; then
|
||||||
msg "Prepare [Live installation] (livefs)"
|
msg "Prepare [Live installation] (livefs)"
|
||||||
@@ -200,9 +149,9 @@ make_livefs() {
|
|||||||
|
|
||||||
prepare_dir "${livefs}"
|
prepare_dir "${livefs}"
|
||||||
|
|
||||||
mount_overlay "${livefs}" "${work_dir}" "${DESKTOP_LIST}"
|
mount_overlay "${livefs}" "${work_dir}"
|
||||||
|
|
||||||
install_packages "${livefs}"
|
basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
|
||||||
|
|
||||||
copy_overlay "${LIVE_OVERLAY}" "${livefs}"
|
copy_overlay "${LIVE_OVERLAY}" "${livefs}"
|
||||||
|
|
||||||
@@ -212,6 +161,8 @@ make_livefs() {
|
|||||||
|
|
||||||
clean_up_image "${livefs}"
|
clean_up_image "${livefs}"
|
||||||
|
|
||||||
|
: > ${work_dir}/livefs.lock
|
||||||
|
|
||||||
msg "Done [Live installation] (livefs)"
|
msg "Done [Live installation] (livefs)"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -227,7 +178,7 @@ make_bootfs() {
|
|||||||
|
|
||||||
local bootfs="${work_dir}/bootfs"
|
local bootfs="${work_dir}/bootfs"
|
||||||
|
|
||||||
mount_overlay "${bootfs}" "${work_dir}" "${DESKTOP_LIST}"
|
mount_overlay "${bootfs}" "${work_dir}"
|
||||||
|
|
||||||
prepare_initcpio "${bootfs}"
|
prepare_initcpio "${bootfs}"
|
||||||
prepare_initramfs "${bootfs}"
|
prepare_initramfs "${bootfs}"
|
||||||
@@ -259,7 +210,7 @@ make_grub(){
|
|||||||
compress_images(){
|
compress_images(){
|
||||||
local timer=$(get_timer)
|
local timer=$(get_timer)
|
||||||
run_safe "make_iso"
|
run_safe "make_iso"
|
||||||
user_own "${iso_dir}" "-R"
|
chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}"
|
||||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,10 +218,6 @@ prepare_images(){
|
|||||||
local timer=$(get_timer)
|
local timer=$(get_timer)
|
||||||
load_pkgs "${ROOT_LIST}" "${INITSYS}"
|
load_pkgs "${ROOT_LIST}" "${INITSYS}"
|
||||||
run_safe "make_rootfs"
|
run_safe "make_rootfs"
|
||||||
if [[ -f "${DESKTOP_LIST}" ]] ; then
|
|
||||||
load_pkgs "${DESKTOP_LIST}" "${INITSYS}"
|
|
||||||
run_safe "make_desktopfs"
|
|
||||||
fi
|
|
||||||
if [[ -f ${LIVE_LIST} ]]; then
|
if [[ -f ${LIVE_LIST} ]]; then
|
||||||
load_pkgs "${LIVE_LIST}" "${INITSYS}"
|
load_pkgs "${LIVE_LIST}" "${INITSYS}"
|
||||||
run_safe "make_livefs"
|
run_safe "make_livefs"
|
||||||
|
@@ -23,14 +23,12 @@ get_remote_head(){
|
|||||||
get_pkg_org(){
|
get_pkg_org(){
|
||||||
local pkg="$1" org= sub=
|
local pkg="$1" org= sub=
|
||||||
case ${pkg} in
|
case ${pkg} in
|
||||||
ruby-*) org=${pkg:0:6}; sub="${org:5}"; echo "packagesRuby" ;;
|
ruby-*) org="packagesRuby" ;;
|
||||||
perl-*) org=${pkg:0:6}; sub="${org:5}"; echo "packagesPerl" ;;
|
perl-*) org="packagesPerl" ;;
|
||||||
python-*) org=${pkg:0:8}; sub="${org:7}"; echo "packagesPython" ;;
|
python-*|python2-*) org="packagesPython" ;;
|
||||||
python2-*) org=${pkg:0:9}; sub="${org:8}"; echo "packagesPython" ;;
|
*) sub=${pkg:0:1}; org="packages${sub^^}" ;;
|
||||||
lib32*) org=${pkg:0:7}; sub="${org:6}"; echo "packagesL" ;; #"packages${sub^^}" ;;
|
|
||||||
# lib*) org=${pkg:0:4}; sub="${org:3}"; echo "packagesLib${sub^^}" ;;
|
|
||||||
*) org=${pkg:0:1}; echo "packages${org^^}" ;;
|
|
||||||
esac
|
esac
|
||||||
|
echo $org
|
||||||
}
|
}
|
||||||
|
|
||||||
subrepo_push(){
|
subrepo_push(){
|
||||||
@@ -141,22 +139,3 @@ config_tree(){
|
|||||||
fi
|
fi
|
||||||
cd ..
|
cd ..
|
||||||
}
|
}
|
||||||
|
|
||||||
subrepo_new(){
|
|
||||||
local pkg="$1" tree="$2" team="${3:-$2}"
|
|
||||||
local dest=${TREE_DIR_ARTIX}/$tree/$pkg/trunk
|
|
||||||
|
|
||||||
cd ${TREE_DIR_ARTIX}/$tree
|
|
||||||
|
|
||||||
local org=$(get_pkg_org "$pkg")
|
|
||||||
|
|
||||||
create_repo "$pkg" "$org"
|
|
||||||
|
|
||||||
add_repo_to_team "$pkg" "$org" "$team"
|
|
||||||
|
|
||||||
subrepo_clone "$pkg" "$org"
|
|
||||||
|
|
||||||
prepare_dir "$dest"
|
|
||||||
|
|
||||||
commit_jenkins_files "$pkg"
|
|
||||||
}
|
|
||||||
|
@@ -109,7 +109,7 @@ find_repo(){
|
|||||||
local pkg="$1" stag="$2" unst="$3" repo=
|
local pkg="$1" stag="$2" unst="$3" repo=
|
||||||
|
|
||||||
for r in $(arch_repos "$stag" "$unst");do
|
for r in $(arch_repos "$stag" "$unst");do
|
||||||
[[ -f $pkg/repos/$r-x86_64/PKGBUILD ]] && repo=$r-x86_64
|
[[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH}
|
||||||
[[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
|
[[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
|
||||||
done
|
done
|
||||||
echo $repo
|
echo $repo
|
||||||
@@ -127,7 +127,8 @@ is_valid_repo(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
get_cases(){
|
get_cases(){
|
||||||
local pkglist="${DATADIR}/pkglists/$1.list"
|
local pkglist="${SYSCONFDIR}/pkglist.d/$1.list"
|
||||||
|
|
||||||
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
|
local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
|
||||||
|
|
||||||
local pkgs=($(sed "$_com_rm" "$pkglist" | sed "$_space" | sed "$_clean"))
|
local pkgs=($(sed "$_com_rm" "$pkglist" | sed "$_space" | sed "$_clean"))
|
||||||
@@ -143,22 +144,24 @@ get_artix_tree(){
|
|||||||
local pkg="$1" artix_tree="${2:-$3}" tree
|
local pkg="$1" artix_tree="${2:-$3}" tree
|
||||||
eval "case $pkg in
|
eval "case $pkg in
|
||||||
$(get_cases kernel)) tree=packages-kernel ;;
|
$(get_cases kernel)) tree=packages-kernel ;;
|
||||||
python-*|python2-*) tree=packages-python ;;
|
$(get_cases python)) tree=packages-python ;;
|
||||||
perl-*) tree=packages-perl ;;
|
$(get_cases perl)) tree=packages-perl ;;
|
||||||
ruby-*) tree=packages-ruby ;;
|
$(get_cases ruby)) tree=packages-ruby ;;
|
||||||
xorg*|xf86*|$(get_cases xorg)) tree=packages-xorg ;;
|
$(get_cases openrc)) tree=packages-openrc ;;
|
||||||
*-openrc) tree=packages-openrc ;;
|
$(get_cases runit)) tree=packages-runit ;;
|
||||||
*-runit) tree=packages-runit ;;
|
$(get_cases media)) tree=packages-media ;;
|
||||||
qt5-*) tree=packages-qt5 ;;
|
$(get_cases xorg)) tree=packages-xorg ;;
|
||||||
lxqt*|$(get_cases lxqt)) tree=packages-lxqt ;;
|
$(get_cases qt5)) tree=packages-qt5 ;;
|
||||||
|
$(get_cases gtk)) tree=packages-gtk ;;
|
||||||
|
$(get_cases devel)) tree=packages-devel ;;
|
||||||
|
$(get_cases lxqt)) tree=packages-lxqt ;;
|
||||||
|
$(get_cases cinnamon)) tree=packages-cinnamon ;;
|
||||||
|
$(get_cases kde)) tree=packages-kde ;;
|
||||||
|
$(get_cases gnome)) tree=packages-gnome ;;
|
||||||
|
$(get_cases mate)) tree=packages-mate ;;
|
||||||
*) tree=$artix_tree
|
*) tree=$artix_tree
|
||||||
esac"
|
esac"
|
||||||
echo $tree
|
echo $tree
|
||||||
|
|
||||||
# $(get_cases freedesktop)) tree=packages-desktop ;;
|
|
||||||
# $(get_cases kde)) tree=packages-kde ;;
|
|
||||||
# $(get_cases gnome)) tree=packages-gnome ;;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get_import_path(){
|
get_import_path(){
|
||||||
|
Reference in New Issue
Block a user