Compare commits

...

23 Commits

Author SHA1 Message Date
9da1ae8e31 jenkins: fix printf arg 2022-05-03 17:20:10 +02:00
52ecf8d463 update default trees used 2022-05-01 12:01:23 +02:00
38fa79e10b update conf 2022-04-28 13:18:53 +02:00
a53fb9e839 artools/0.27 (#62)
* refactoring
* drop echo

Reviewed-on: artix/artools#62
2022-04-25 17:35:02 +02:00
1d85f8000c buildiso: write defaultBundle map for s6 cal 2022-04-12 16:54:05 +02:00
21c44dba79 checkrepo: update pkg filter 2022-04-11 16:10:57 +02:00
f4e3abae46 buildiso: clean up s6 sv handling 2022-04-11 02:06:20 +02:00
a7cef500ad s6 (#61)
Reviewed-on: artix/artools#61
Co-authored-by: artoo <artoo@artixlinux.org>
Co-committed-by: artoo <artoo@artixlinux.org>
2022-04-10 20:44:11 +02:00
f7c29d1c98 makepkg.conf: drop -fvar-tracking-assignments flag 2022-02-14 17:42:36 +01:00
f1b2af947b s6: remove s6-rc-bundle-update usage
This is deprecated, so we should remove it from the buildiso script.
Instead, files are touched in the defaults/contents.d directory and the
database is reloaded.
2022-02-08 14:58:31 +01:00
5637ba0f8f pkg1yaml: yaml sequence debug pkgs 2022-02-01 20:02:29 +01:00
a383531e5d pkg2yaml: don't include debug packages for pkgnames 2022-01-30 18:58:31 +01:00
6b4acbdd94 comparepkg: fix upg cmp 2021-12-25 15:23:20 +01:00
b7fd0a4e41 enable lto, upd conf 2021-12-23 19:07:38 +01:00
b734357ea9 checkrepo: refactoring 2021-11-29 22:58:49 +01:00
74d44873e7 checkrepo: add obsolete pkg check 2021-11-29 16:41:49 +01:00
91e038c3f5 don't find arch vcs repos 2021-11-28 13:59:20 +01:00
8548a584f3 restore arch vcs repo detect 2021-11-28 13:57:07 +01:00
38fb213e13 pkg tools: remove old layout support 2021-11-26 19:04:17 +01:00
fade611ae7 checkrepo: fix check_db() and speed it up 2021-11-26 10:55:11 +01:00
8cdb68ce6a fix call to artools-chroot when artools-pkg is not installed 2021-11-08 16:21:23 -03:00
7d949afeb7 Merge pull request 'add initial support for dinit' (#59) from konimex/artools:master into master
Reviewed-on: artix/artools#59
2021-11-05 16:36:30 +01:00
6f037f6faf add initial support for dinit 2021-10-27 17:02:50 +07:00
38 changed files with 702 additions and 438 deletions

View File

@@ -1,4 +1,4 @@
V=0.26 V=0.27
TOOLS = artools TOOLS = artools
PREFIX ?= /usr PREFIX ?= /usr
@@ -40,7 +40,8 @@ PKG_BIN = \
bin/pkg/batchpkg \ bin/pkg/batchpkg \
bin/pkg/signpkg \ bin/pkg/signpkg \
bin/pkg/checkrepo \ bin/pkg/checkrepo \
bin/pkg/gitearepo bin/pkg/gitearepo \
bin/pkg/tidyarch
LN_COMMITPKG = \ LN_COMMITPKG = \
extrapkg \ extrapkg \

View File

@@ -35,7 +35,7 @@ chroot_part_umount() {
detect(){ detect(){
local detected local detected
detected="$(os-prober | tr ' ' '_' | paste -s -d ' ')" detected="$(os-prober | tr ' ' '_' | paste -s -d ' ')"
echo "${detected}" printf "%s\n" "${detected}"
} }
# $1: os-prober array # $1: os-prober array
@@ -44,7 +44,7 @@ get_os_name(){
str="${str#*:}" str="${str#*:}"
str="${str#*:}" str="${str#*:}"
str="${str%:*}" str="${str%:*}"
echo "$str" printf "%s\n" "$str"
} }
mount_os(){ mount_os(){
@@ -106,16 +106,16 @@ select_os(){
automount=false automount=false
usage() { usage() {
echo "usage: ${0##*/} -a [or] ${0##*/} chroot-dir [command]" printf 'usage: %s -a [or] %s chroot-dir [command]\n' "${0##*/}" "${0##*/}"
echo ' -a Automount detected linux system' printf ' -a Automount detected linux system\n'
echo ' -h Print this help message' printf ' -h Print this help message\n'
echo '' printf '\n'
echo " If 'command' is unspecified, ${0##*/} will launch /bin/sh." printf " If 'command' is unspecified, %s will launch /bin/sh.\n" "${0##*/}"
echo '' printf '\n'
echo " If 'automount' is true, ${0##*/} will launch /bin/bash" printf " If 'automount' is true, %s will launch /bin/bash\n" "${0##*/}"
echo " and ${chrootdir}." printf ' and %s\n' "${chrootdir}"
echo '' printf '\n'
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -125,7 +125,6 @@ while getopts ${opts} arg; do
case "${arg}" in case "${arg}" in
a) automount=true ;; a) automount=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument ${arg}"; usage 1 ;;
esac esac
done done
shift $(( OPTIND - 1 )) shift $(( OPTIND - 1 ))

View File

@@ -55,19 +55,19 @@ copymirrorlist=1
pacmode=-Sy pacmode=-Sy
usage() { usage() {
echo "usage: ${0##*/} [options] root [packages...]" printf "usage: %s [options] root [packages...]\n" "${0##*/}"
echo " -C <config> Use an alternate config file for pacman" printf " -C <config> Use an alternate config file for pacman\n"
echo " -c Use the package cache on the host, rather than the target" printf " -c Use the package cache on the host, rather than the target\n"
echo " -G Avoid copying the host's pacman keyring to the target" printf " -G Avoid copying the host's pacman keyring to the target\n"
echo " -i Avoid auto-confirmation of package selections" printf " -i Avoid auto-confirmation of package selections\n"
echo " -M Avoid copying the host's mirrorlist to the target" printf " -M Avoid copying the host's mirrorlist to the target\n"
echo ' -U Use pacman -U to install packages' printf ' -U Use pacman -U to install packages\n'
echo " -h Print this help message" printf " -h Print this help message\n"
echo '' printf '\n'
echo ' basestrap installs packages to the specified new root directory.' printf ' basestrap installs packages to the specified new root directory.\n'
echo ' If no packages are given, basestrap defaults to the "base" group.' printf ' If no packages are given, basestrap defaults to the "base" group.\n'
echo '' printf '\n'
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -81,8 +81,7 @@ while getopts ${opts} arg; do
G) copykeyring=0 ;; G) copykeyring=0 ;;
M) copymirrorlist=0 ;; M) copymirrorlist=0 ;;
U) pacmode=-U ;; U) pacmode=-U ;;
:) echo "invalid argument ${arg}:$OPTARG"; usage 1;; h|?) usage 0 ;;
?) usage 0 ;;
esac esac
done done
shift $(( OPTIND - 1 )) shift $(( OPTIND - 1 ))

View File

@@ -45,18 +45,18 @@ files=()
mount_args=("-B:/etc/hosts:/etc/hosts") mount_args=("-B:/etc/hosts:/etc/hosts")
usage() { usage() {
echo "Usage: ${0##*/} [options] working-dir [run arguments]" printf "Usage: %s [options] working-dir [run arguments]\n" "${0##*/}"
echo "A wrapper around chroot. Provides support for pacman." printf "A wrapper around chroot. Provides support for pacman.\n"
echo printf '\n'
echo ' options:' printf ' options:\n'
echo ' -C <file> Location of a pacman config file' printf ' -C <file> Location of a pacman config file\n'
echo ' -M <file> Location of a makepkg config file' printf ' -M <file> Location of a makepkg config file\n'
echo ' -c <dir> Set pacman cache' printf ' -c <dir> Set pacman cache\n'
echo ' -f <file> Copy file from the host to the chroot' printf ' -f <file> Copy file from the host to the chroot\n'
echo ' -s Do not run setarch' printf ' -s Do not run setarch\n'
echo ' -b <list> Bind mountargs' printf ' -b <list> Bind mountargs\n'
echo ' List format [mntarg1:src1:dest1 ... mntargN:srcN:destN]' printf ' List format [mntarg1:src1:dest1 ... mntargN:srcN:destN]\n'
echo ' -h This message' printf ' -h This message\n'
exit 1 exit 1
} }
@@ -71,7 +71,6 @@ while getopts ${opts} arg; do
s) nosetarch=1 ;; s) nosetarch=1 ;;
b) bindmounts+=("$OPTARG"); mount_args+=(${bindmounts[@]}) ;; b) bindmounts+=("$OPTARG"); mount_args+=(${bindmounts[@]}) ;;
h|?) usage ;; h|?) usage ;;
*) error "invalid argument '$arg'"; usage ;;
esac esac
done done
shift $(( OPTIND - 1 )) shift $(( OPTIND - 1 ))
@@ -85,26 +84,24 @@ shift 1
[[ -z $working_dir ]] && die 'Please specify a working directory.' [[ -z $working_dir ]] && die 'Please specify a working directory.'
pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
if (( ${#cache_dirs[@]} == 0 )); then if (( ${#cache_dirs[@]} == 0 )); then
mapfile -t cache_dirs < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" CacheDir) mapfile -t cache_dirs < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" CacheDir)
fi fi
# shellcheck disable=2016 # shellcheck disable=2016
host_mirrors=($("$pacconf_cmd" --repo world Server 2> /dev/null | sed -r 's#(.*/)world/os/.*#\1$repo/os/$arch#')) host_mirrors=($(pacman-conf --repo world Server 2> /dev/null | sed -r 's#(.*/)world/os/.*#\1$repo/os/$arch#'))
for host_mirror in "${host_mirrors[@]}"; do for host_mirror in "${host_mirrors[@]}"; do
if [[ $host_mirror == *file://* ]]; then if [[ $host_mirror == *file://* ]]; then
# shellcheck disable=2016 # shellcheck disable=2016
host_mirror=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g') host_mirror=$(printf "%s\n" "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
in_array "$host_mirror" "${cache_dirs[@]}" || cache_dirs+=("$host_mirror") in_array "$host_mirror" "${cache_dirs[@]}" || cache_dirs+=("$host_mirror")
fi fi
done done
while read -r line; do while read -r line; do
# shellcheck disable=2016 # shellcheck disable=2016
mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \ mapfile -t lines < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
--repo "$line" Server | sed -r 's#(.*/)[^/]+/os/.+#\1#') --repo "$line" Server | sed -r 's#(.*/)[^/]+/os/.+#\1#')
for line in "${lines[@]}"; do for line in "${lines[@]}"; do
if [[ $line = file://* ]]; then if [[ $line = file://* ]]; then
@@ -112,7 +109,7 @@ while read -r line; do
in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line") in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
fi fi
done done
done < <("$pacconf_cmd" --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list) done < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
copy_hostconf () { copy_hostconf () {
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 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

View File

@@ -23,15 +23,15 @@ files=()
chroot_args=() chroot_args=()
usage() { usage() {
echo "Usage: ${0##*/} [options] working-dir package-list..." printf "Usage: %s [options] working-dir package-list...\n" "${0##*/}"
echo ' options:' printf ' options:\n'
echo ' -U Use pacman -U to install packages' printf ' -U Use pacman -U to install packages\n'
echo ' -C <file> Location of a pacman config file' printf ' -C <file> Location of a pacman config file\n'
echo ' -M <file> Location of a makepkg config file' printf ' -M <file> Location of a makepkg config file\n'
echo ' -c <dir> Set pacman cache' printf ' -c <dir> Set pacman cache\n'
echo ' -f <file> Copy file from the host to the chroot' printf ' -f <file> Copy file from the host to the chroot\n'
echo ' -s Do not run setarch' printf ' -s Do not run setarch\n'
echo ' -h This message' printf ' -h This message\n'
exit 1 exit 1
} }
@@ -46,7 +46,6 @@ while getopts ${opts} arg; do
f) files+=("$OPTARG") ;; f) files+=("$OPTARG") ;;
s) nosetarch=1 ;; s) nosetarch=1 ;;
h|?) usage ;; h|?) usage ;;
*) error "invalid argument '%s'" "$arg"; usage ;;
esac esac
if [[ $arg != U ]]; then if [[ $arg != U ]]; then
chroot_args+=("-$arg") chroot_args+=("-$arg")
@@ -64,10 +63,8 @@ shift 1
[[ -z $working_dir ]] && die 'Please specify a working directory.' [[ -z $working_dir ]] && die 'Please specify a working directory.'
pacconf_cmd=$(command -v pacman-conf || command -v pacconf)
if (( ${#cache_dirs[@]} == 0 )); then if (( ${#cache_dirs[@]} == 0 )); then
mapfile -t cache_dirs < <($pacconf_cmd CacheDir) mapfile -t cache_dirs < <(pacman-conf CacheDir)
fi fi
umask 0022 umask 0022
@@ -97,9 +94,9 @@ basestrap -${umode}Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \
"${cache_dirs[@]/#/--cachedir=}" "$@" || die 'Failed to install all packages' "${cache_dirs[@]/#/--cachedir=}" "$@" || die 'Failed to install all packages'
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" printf 'LANG=en_US.UTF-8\n' > "$working_dir/etc/locale.conf"
# echo 'KEYMAP=en' > "$working_dir/etc/vconsole.conf" # printf 'KEYMAP=en\n' > "$working_dir/etc/vconsole.conf"
echo "${CHROOTVERSION}" > "$working_dir/.artools" printf "%s\n" "${CHROOTVERSION}" > "$working_dir/.artools"
dbus-uuidgen --ensure="$working_dir"/etc/machine-id dbus-uuidgen --ensure="$working_dir"/etc/machine-id

View File

@@ -181,7 +181,7 @@ gen_iso_fn(){
for n in "${vars[@]}"; do for n in "${vars[@]}"; do
name=${name:-}${name:+-}${n} name=${name:-}${name:+-}${n}
done done
echo "$name" printf "%s\n" "$name"
} }
prepare_build(){ prepare_build(){
@@ -325,28 +325,28 @@ chroots_iso="${CHROOTS_DIR}/buildiso"
arch=$(uname -m) arch=$(uname -m)
usage() { usage() {
echo "Usage: ${cmd} [options]" printf 'Usage: %s [options]\n' "${cmd}"
echo " -p <profile> Profile [default: ${profile}]" printf ' -p <profile> Profile [default: %s]\n' "${profile}"
echo ' -r <dir> Chroots directory' printf ' -r <dir> Chroots directory\n'
echo " [default: ${chroots_iso}]" printf ' [default: %s]\n' "${chroots_iso}"
echo ' -t <dir> Target directory' printf ' -t <dir> Target directory\n'
echo " [default: ${ISO_POOL}]" printf ' [default: %s]\n' "${ISO_POOL}"
echo ' -i <name> Init system to use' printf ' -i <name> Init system to use\n'
echo " [default: ${INITSYS}]" printf ' [default: %s]\n' "${INITSYS}"
echo ' -g <key> The gpg key for img signing' printf ' -g <key> The gpg key for img signing\n'
echo " [default: none]" printf ' [default: none]\n'
echo ' -m Set SquashFS image mode to persistence' printf ' -m Set SquashFS image mode to persistence\n'
echo ' -c Disable clean work dir' printf ' -c Disable clean work dir\n'
echo ' -x Build chroot only' printf ' -x Build chroot only\n'
echo ' -s Squash chroot only' printf ' -s Squash chroot only\n'
echo ' -b Generate iso boot only' printf ' -b Generate iso boot only\n'
echo ' -z Generate iso only' printf ' -z Generate iso only\n'
echo ' Requires pre built images (-x)' printf ' Requires pre built images (-x)\n'
echo ' -d Use dracut instead of mkinitcpio for iso initramfs' printf ' -d Use dracut instead of mkinitcpio for iso initramfs\n'
echo ' -q Query settings and pretend build' printf ' -q Query settings and pretend build\n'
echo ' -h This help' printf ' -h This help\n'
echo '' printf '\n'
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -368,7 +368,6 @@ while getopts "${opts}" arg; do
d) use_dracut=true ;; d) use_dracut=true ;;
q) pretend=true ;; q) pretend=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
done done

View File

@@ -76,13 +76,13 @@ batch_update() {
#}}} #}}}
usage() { usage() {
echo "Usage: ${0##*/} [optional listname]" printf 'Usage: %s [optional listname]\n' "${0##*/}"
echo ' -r Run generated commands' printf ' -r Run generated commands\n'
echo ' -c Create subrepos from list' printf ' -c Create subrepos from list\n'
echo ' -u Update subrepos from list' printf ' -u Update subrepos from list\n'
echo ' -h This help' printf ' -h This help\n'
echo '' printf '\n'
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -98,7 +98,6 @@ while getopts "${opts}" arg; do
c) create=true ;; c) create=true ;;
u) update=true ;; u) update=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
done done

View File

@@ -29,17 +29,17 @@ chroots_pkg="${CHROOTS_DIR}/buildpkg"
arch=$(uname -m) arch=$(uname -m)
usage() { usage() {
echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]" printf 'Usage: %s [options] -- [mkchrootpkg_args]\n' "${0##*/}"
echo " -r <dir> Create chroots in this directory" printf ' -r <dir> Create chroots in this directory\n'
echo " -d <dir> Destination repo chroot" printf ' -d <dir> Destination repo chroot\n'
echo ' -c Recreate the chroot before building' printf ' -c Recreate the chroot before building\n'
echo ' -m Major rebuild' printf ' -m Major rebuild\n'
echo ' -N Disable check() function' printf ' -N Disable check() function\n'
echo ' -C Run checkpkg after built' printf ' -C Run checkpkg after built\n'
echo ' -h This help' printf ' -h This help\n'
echo '' printf '\n'
echo "Default mkchrootpkg_args args: ${mkchrootpkg_args[*]}" printf 'Default mkchrootpkg_args args: %s\n' "${mkchrootpkg_args[*]}"
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -54,7 +54,6 @@ while getopts "${opts}" arg; do
C) mkchrootpkg_args+=(-C) ;; C) mkchrootpkg_args+=(-C) ;;
N) mkchrootpkg_args+=(-N) ;; N) mkchrootpkg_args+=(-N) ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '%s'" "${arg}"; usage 1 ;;
esac esac
done done

View File

@@ -23,15 +23,6 @@ m4_include(lib/pkg/jenkins.sh)
#{{{ new git repo #{{{ new git repo
subrepo_clone(){
local pkg="$1"
local org="$2"
local name="$3"
msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$name"
git subrepo clone "${GIT_SSH}":"$org"/"$name".git "$pkg"
}
subrepo_new(){ subrepo_new(){
cd "${TREE_DIR_ARTIX}/${group}" || return cd "${TREE_DIR_ARTIX}/${group}" || return
@@ -43,9 +34,10 @@ subrepo_new(){
add_team_to_repo "$gitname" "$org" "${team}" add_team_to_repo "$gitname" "$org" "${team}"
subrepo_clone "${package}" "$org" "$gitname" msg2 "Subrepo clone [%s] from (%s)" "${package}" "$org/$gitname"
git subrepo clone "${GIT_SSH}":"$org/$gitname".git "${package}"
mkdir -p "${TREE_DIR_ARTIX}/${group}/${package}/trunk" prepare_dir "${TREE_DIR_ARTIX}/${group}/${package}/trunk"
commit_jenkins_files "${package}" commit_jenkins_files "${package}"
} }
@@ -54,57 +46,54 @@ subrepo_new(){
#{{{ pull #{{{ pull
clone_tree(){ config_tree() {
local url="$1" tree="$2" os="${3:-Artix}" local dist="$1" vars="${2:-false}"
case "$dist" in
msg "Cloning %s (%s) ..." "$tree" "$os" Artix)
if "$vars"; then
git clone "$url/$tree".git dist_tree=("${ARTIX_TREE[@]}")
dist_url="${GIT_SSH}:artixlinux"
dist_dir=${TREE_DIR_ARTIX}
else
git config --bool pull.rebase true
git config commit.gpgsign true
if [[ -n "${GPGKEY}" ]];then
git config user.signingkey "${GPGKEY}"
else
warning "No GPGKEY configured in makepkg.conf!"
fi
fi
;;
Arch)
if "$vars"; then
dist_tree=("${ARCH_TREE[@]}")
dist_url="${HOST_TREE_ARCH}"
dist_dir=${TREE_DIR_ARCH}
else
git config --bool pull.rebase false
git config branch.master.mergeoptions --no-edit
fi
;;
esac
} }
pull_tree_arch(){ update_tree() {
cd "${TREE_DIR_ARCH}" || return local dist="${1:-Artix}"
for tree in "${ARCH_TREE[@]}";do config_tree "$dist" true
if [[ -d "${tree}" ]];then cd "$dist_dir" || return
( cd "${tree}" || return for tree in "${dist_tree[@]}"; do
pull_tree "${tree}" "$(get_local_head)" "Arch" if [[ -d "$tree" ]]; then
( cd "$tree" || return
config_tree "$dist"
msg "Checking (%s) (%s)" "$tree" "$dist"
pull_tree "$tree" "$(get_local_head)"
) )
else else
clone_tree "${HOST_TREE_ARCH}" "${tree}" "Arch" msg "Cloning (%s) (%s) ..." "$tree" "$dist"
fi git clone "$dist_url/$tree".git
done ( cd "$tree" || return
} config_tree "$dist"
config_tree(){
local tree="$1"
cd "$tree" || return
git config --bool pull.rebase true
git config commit.gpgsign true
if [[ -n "${GPGKEY}" ]];then
git config user.signingkey "${GPGKEY}"
else
warning "No GPGKEY configured in makepkg.conf!"
fi
cd ..
}
pull_tree_artix(){
local repos=()
if ${sync_group}; then
repos=("${group}")
else
repos=("${ARTIX_TREE[@]}")
fi
cd "${TREE_DIR_ARTIX}" || return
for tree in "${repos[@]}"; do
if [[ -d "${tree}" ]];then
config_tree "${tree}"
( cd "${tree}" || return
pull_tree "${tree}" "$(get_local_head)"
) )
else
clone_tree "${host_tree_artix}" "${tree}"
config_tree "${tree}"
fi fi
done done
} }
@@ -243,8 +232,8 @@ check_tree(){
} }
sync_repos(){ sync_repos(){
${sync_arch} && pull_tree_arch ${sync_arch} && update_tree "Arch"
${sync_artix} && pull_tree_artix ${sync_artix} && update_tree
} }
load_makepkg_config load_makepkg_config
@@ -261,7 +250,6 @@ sync_artix=true
import=false import=false
view=false view=false
createnew=false createnew=false
sync_group=false
check=false check=false
package='' package=''
@@ -269,29 +257,27 @@ package=''
team='community' team='community'
group="${ARTIX_TREE[0]}" group="${ARTIX_TREE[0]}"
host_tree_artix="${GIT_SSH}:artixlinux"
usage() { usage() {
echo "Usage: ${0##*/} [options]" printf "Usage: %s [options]\n" "${0##*/}"
echo ' -p <pkg> Package name' printf ' -p <pkg> Package name\n'
echo ' -t <team> Team name (only with -n)' printf ' -t <team> Team name (only with -n)\n'
echo ' Possible values: core,extra,community,multilib' printf ' Possible values: core,extra,community,multilib\n'
echo " [default: ${team}]" printf " [default: %s]\n" "${team}"
echo ' -g <group> Group name, the superrepo (only with -n or -s)' printf ' -g <group> Group name, the superrepo (only with -n)\n'
echo " [default: ${group}]" printf " [default: %s]\n" "${group}"
echo " -s Clone or pull repos" printf " -s Clone or pull repos\n"
echo " -a Don't clone or pull arch repos" printf " -a Don't clone or pull arch repos\n"
echo " -b Don't clone or pull artix repos" printf " -b Don't clone or pull artix repos\n"
echo ' -i Import a package from arch repos' printf ' -i Import a package from arch repos\n'
echo ' -n New remote subrepo and clone it' printf ' -n New remote subrepo and clone it\n'
echo ' -v Check if a package is in the artix tree(s)' printf ' -v Check if a package is in the artix tree(s)\n'
echo ' -c View package depends' printf ' -c View package depends\n'
echo ' -x Exclude testing (only with -i)' printf ' -x Exclude testing (only with -i)\n'
echo ' -y Exclude staging (only with -i)' printf ' -y Exclude staging (only with -i)\n'
echo ' -z Include kde & gnome unstable (only with -i)' printf ' -z Include kde & gnome unstable (only with -i)\n'
echo ' -h This help' printf ' -h This help\n'
echo '' printf '\n'
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -301,7 +287,7 @@ 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"; sync_group=true ;; g) group="$OPTARG" ;;
s) sync=true ;; s) sync=true ;;
a) sync_arch=false ;; a) sync_arch=false ;;
b) sync_artix=false ;; b) sync_artix=false ;;
@@ -313,7 +299,6 @@ while getopts "${opts}" arg; do
y) staging=false ;; y) staging=false ;;
z) unstable=true ;; z) unstable=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
done done

View File

@@ -197,7 +197,7 @@ for _pkgname in "${pkgname[@]}"; do
if ! diff_output="$(sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname")"; then if ! diff_output="$(sdiff -s "$TEMPDIR/libraries-$_pkgname-old" "$TEMPDIR/libraries-$_pkgname")"; then
message="Sonames differ in $_pkgname!" message="Sonames differ in $_pkgname!"
(( WARN )) && warning "$message" || msg "$message" (( WARN )) && warning "$message" || msg "$message"
echo "$diff_output" printf "%s\n" "$diff_output"
else else
msg "No soname differences for %s." "$_pkgname" msg "No soname differences for %s." "$_pkgname"
fi fi

View File

@@ -18,19 +18,42 @@ m4_include(lib/base/message.sh)
m4_include(lib/pkg/repo.sh) m4_include(lib/pkg/repo.sh)
m4_include(lib/pkg/table.sh) m4_include(lib/pkg/table.sh)
#{{{ db libs
extract_db() {
local u="$1" cdir="$2"
rm -rf "$cdir"
mkdir -p "$cdir"
msg2 "%s" "${cdir##*/}"
curl -L -s "$u" | bsdtar -xf - -C "$cdir"
}
update_db_cache(){
msg "Updating database cache ..."
local cachedir url
for repo in "${searchrepos[@]}"; do
cachedir=${db_cache_dir}/linksdb/$repo
url=${REPOS_MIRROR}/$repo/os/${CARCH}/$repo.${linksdb_ext}
extract_db "$url" "$cachedir"
done
msg "Done"
}
#}}}
#{{{ sogrep #{{{ sogrep
query_db() { query_db() {
for repo in "${searchrepos[@]}"; do for repo in "${searchrepos[@]}"; do
local db local db
db=${db_cache_dir}/${linksdb_ext}/${CARCH}/${repo}/ db=${db_cache_dir}/linksdb/$repo/
if [[ -d ${db} ]]; then if [[ -d ${db} ]]; then
while read -rd '' pkg; do while read -rd '' pkg; do
read -r match read -r match
pkg=${pkg#${db}} pkg=${pkg#${db}}
pkg="${pkg%/*}" pkg="${pkg%/*}"
msg_row "${tableQ}" "${repo}" "${pkg}" "${match}" msg_row "${tableQ}" "$repo" "$pkg" "${match}"
done < <(grep -rZ "${library}" "${db}") | sort -u done < <(grep -rZ "$library" "$db") | sort -u
fi fi
done done
} }
@@ -41,7 +64,7 @@ query_db() {
is_db_entry() { is_db_entry() {
local pkgname="$1" repo="${REPOS[$2]}" entry local pkgname="$1" repo="${REPOS[$2]}" entry
entry=${db_cache_dir}/${linksdb_ext}/${CARCH}/$repo/$pkgname entry=${db_cache_dir}/linksdb/$repo/$pkgname
if [[ -d "$entry" ]];then if [[ -d "$entry" ]];then
return 0 return 0
@@ -50,26 +73,74 @@ is_db_entry() {
} }
check_db(){ check_db(){
local pkgpath="${1%/*}" local pkgpath="${1}"
for repo in "${!REPOS[@]}"; do for repo in "${!REPOS[@]}"; do
local pkgbuild artixver local pkgbuild artixver
[[ -f $pkgpath/$CARCH/$repo/PKGBUILD ]] && pkgbuild=$pkgpath/$CARCH/$repo/PKGBUILD if [[ -f $pkgpath/$repo/PKGBUILD ]]; then
[[ -f $pkgpath/repos/$repo-$CARCH/PKGBUILD ]] && pkgbuild=$pkgpath/repos/$repo-$CARCH/PKGBUILD pkgbuild=$pkgpath/$repo/PKGBUILD
[[ -f $pkgpath/repos/$repo-any/PKGBUILD ]] && pkgbuild=$pkgpath/repos/$repo-any/PKGBUILD
# shellcheck disable=1090 # shellcheck disable=1090
. "$pkgbuild" 2>/dev/null . "$pkgbuild" 2>/dev/null
artixver=$(get_full_version) artixver=$(get_full_version)
for name in "${pkgname[@]}"; do
if ! is_db_entry "$name-$artixver" "$repo"; then
msg_row_red "${tableU}" "$repo" "$name" "$artixver" "false"
else
${all_db} && msg_row "${tableU}" "$repo" "$name" "$artixver" "true"
fi
done
unset artixver pkgbuild pkgver epoch pkgname pkgbase
fi
done
}
for name in "${pkgname[@]}"; do #}}}
if ! is_db_entry "$name-$artixver" "$repo"; then
msg_row_red "${tableU}" "$repo" "$name" "$artixver" "false" # {{{ check obsolete
else
${all_db} && msg_row "${tableU}" "$repo" "$name" "$artixver" "true" show_obsolete_table() {
local arch_mirror='https://mirror.f4st.host/archlinux'
local arch_repo artix_repo artix_db arch_db url
arch_repo="${searchrepos[@]}"
artix_repo="${REPOS[$arch_repo]}"
artix_db="${db_cache_dir}/artixdb/${artix_repo}"
arch_db="${db_cache_dir}/archdb/${arch_repo}"
msg "Updating database cache ..."
url=${REPOS_MIRROR}/${artix_repo}/os/$CARCH/${artix_repo}.${db_ext}
extract_db "$url" "${artix_db}"
url=${arch_mirror}/${arch_repo}/os/$CARCH/${arch_repo}.${db_ext}
extract_db "$url" "${arch_db}"
msg "Done"
msg_table_header "${tableQ}" "Repo" "Package" "Obsolete"
for p in "${artix_db}"/*; do
local pkg rel
pkg=${p##*/}
rel=${pkg##*-}
rel=${rel%.*}
pkg=${pkg%-*}
local p="$pkg-$rel"
if [[ "$p" != *openrc* ]] && [[ "$p" != *runit* ]] \
&& [[ "$p" != *s6* ]] && [[ "$p" != *suite66* ]] \
&& [[ "$p" != *udev* ]] && [[ "$p" != *elogind* ]] \
&& [[ "$p" != *sysusers* ]] && [[ "$p" != *tmpfiles* ]] \
&& [[ "$p" != *execline* ]] && [[ "$p" != *skalibs* ]] \
&& [[ "$p" != *netifrc* ]] && [[ "$p" != *bootlogd* ]] \
&& [[ "$p" != *pam_rundir* ]] && [[ "$p" != *artools* ]] \
&& [[ "$p" != *archlinux* ]] && [[ "$p" != *iso-profiles* ]] \
&& [[ "$p" != *calamares* ]] && [[ "$p" != *iso-initcpio* ]] \
&& [[ "$p" != *dinit* ]] && [[ "$p" != *artix* ]] && [[ "$p" != *blocaled* ]]; then
if [[ ! -d "${arch_db}/$p" ]]; then
msg_row "${tableQ}" "${artix_repo}" "$p" "true"
fi fi
done fi
unset artixver pkgbuild pkgver epoch pkgname pkgbase
done done
} }
@@ -85,23 +156,10 @@ show_db_table(){
tree_loop check_db tree_loop check_db
} }
update_db_cache(){
msg "Updating database cache ..."
local cachedir url
for repo in "${searchrepos[@]}"; do
cachedir=${db_cache_dir}/${linksdb_ext}/${CARCH}/${repo}
rm -rf "$cachedir"
mkdir -p "$cachedir"
msg2 "%s" "$repo"
url=${REPOS_MIRROR}/${repo}/os/${CARCH}/${repo}.${linksdb_ext}
curl -L -s "$url" | bsdtar -xf - -C "$cachedir"
done
msg "Done"
}
db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools" db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
linksdb_ext="links.tar.${DBEXT}" linksdb_ext="links.tar.${DBEXT}"
db_ext="db.tar.${DBEXT}"
load_makepkg_config load_makepkg_config
@@ -109,9 +167,10 @@ sync=false
check=false check=false
query=false query=false
all_db=false all_db=false
obsolete=false
readonly tableU="%-20s %-35s %-30s %-10s" readonly tableU="%-20s %-35s %-30s %-10s"
readonly tableQ="%-20s %-45s %s" readonly tableQ="%-20s %-55s %s"
load_valid_names load_valid_names
@@ -150,20 +209,21 @@ searchrepos=(
#}}} #}}}
usage() { usage() {
echo "Usage: ${0##*/} [options] (with -q [libname])" printf "Usage: %s [options] (with -q [libname])\n" "${0##*/}"
echo ' -r <repo> Repo name to query' printf ' -r <repo> Repo name to query\n'
echo ' [default: all]' printf ' [default: all]\n'
echo " -s Sync repo databases" printf " -s Sync repo databases\n"
echo ' -c Check repos' printf ' -c Check repos\n'
echo ' -a Show repo db (-c)' printf ' -a Show repo db (-c)\n'
echo " -q Query repo databases for so libs" printf ' -o Check for obsolete packages\n'
echo ' -h This help' printf " -q Query repo databases for so libs\n"
echo '' printf ' -h This help\n'
echo '' printf '\n'
printf '\n'
exit "$1" exit "$1"
} }
opts='r:qcsah' opts='r:qcsaoh'
while getopts "${opts}" arg; do while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
@@ -172,8 +232,8 @@ while getopts "${opts}" arg; do
c) check=true ;; c) check=true ;;
a) all_db=true ;; a) all_db=true ;;
q) query=true ;; q) query=true ;;
o) obsolete=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
done done
@@ -186,3 +246,5 @@ ${sync} && update_db_cache
${check} && show_db_table ${check} && show_db_table
${query} && show_lib_table ${query} && show_lib_table
${obsolete} && show_obsolete_table

View File

@@ -46,33 +46,6 @@ subrepo_pull(){
git subrepo pull "$pkg" git subrepo pull "$pkg"
} }
prepare_commit(){
# create new layout, copy & remove repos
if [[ -d repos ]]; then
msg2 "Switching to new layout ..."
[[ ! -d "$CARCH" ]] && mkdir "$CARCH"
for r in repos/*; do
local name noarch
name=${r#*/}
noarch=${name%-*}
mkdir "$CARCH/${noarch}"
cp repos/"${name}"/* "$CARCH/${noarch}/"
git add "$CARCH/${noarch}"
done
git rm -r repos
git commit -m "switch to new repo layout"
msg2 "Done switch"
fi
if [[ $action == 'add' ]] || [[ $action == 'move' ]] ;then
[[ -d "$CARCH/${repo_dest}" ]] && git rm -r "$CARCH/${repo_dest}"
[[ ! -d "$CARCH" ]] && mkdir "$CARCH"
[[ ! -d "$CARCH/${repo_dest}" ]] && mkdir "$CARCH/${repo_dest}"
fi
}
check_rebuild(){ check_rebuild(){
if [[ -d "$CARCH"/"${valid_names[10]}" ]] \ if [[ -d "$CARCH"/"${valid_names[10]}" ]] \
&& [[ "${repo_dest}" == "${valid_names[7]}" ]]; then && [[ "${repo_dest}" == "${valid_names[7]}" ]]; then
@@ -104,21 +77,16 @@ check_team(){
path_config() { path_config() {
[[ "${repo_src}" != 'trunk' ]] && pkgbuild="$CARCH/${repo_src}"/PKGBUILD [[ "${repo_src}" != 'trunk' ]] && pkgbuild="$CARCH/${repo_src}"/PKGBUILD
if [[ ! -f "$pkgbuild" ]]; then
pkgbuild=repos/"${repo_src}-${CARCH}"/PKGBUILD
[[ -f repos/"${repo_src}"-any/PKGBUILD ]] && pkgbuild=repos/"${repo_src}"-any/PKGBUILD
fi
# shellcheck disable=1090 # shellcheck disable=1090
. "$pkgbuild" . "$pkgbuild"
} }
get_repo_commit_msg() { get_repo_commit_msg() {
echo "[${repo_src}] -> [${repo_dest}] '${package}-$(get_full_version)' ${action}" printf "[%s] -> [%s] '%s' %s\n" "${repo_src}" "${repo_dest}" "${package}-$(get_full_version)" "${action}"
} }
get_commit_msg() { get_commit_msg() {
echo "[${repo_src}] '${package}-$(get_full_version)' ${action}" printf "[%s] '%s' %s\n" "${repo_src}" "${package}-$(get_full_version)" "${action}"
} }
commit_pkg() { commit_pkg() {
@@ -130,7 +98,6 @@ commit_pkg() {
if [[ "${repo_src}" == 'trunk' ]];then if [[ "${repo_src}" == 'trunk' ]];then
git rm -r trunk git rm -r trunk
else else
prepare_commit
git rm -r "$CARCH/${repo_src}" git rm -r "$CARCH/${repo_src}"
fi fi
else else
@@ -144,11 +111,15 @@ commit_pkg() {
repo_commit_pkg() { repo_commit_pkg() {
local commit_msg local commit_msg
[[ -d "$CARCH/${repo_dest}" ]] && git rm -r "$CARCH/${repo_dest}"
[[ ! -d "$CARCH" ]] && mkdir "$CARCH"
[[ ! -d "$CARCH/${repo_dest}" ]] && mkdir "$CARCH/${repo_dest}"
if [[ "${repo_src}" == 'trunk' ]]; then if [[ "${repo_src}" == 'trunk' ]]; then
action='add' action='add'
commit_msg=$(get_repo_commit_msg) commit_msg=$(get_repo_commit_msg)
msg "Action: %s" "$commit_msg" msg "Action: %s" "$commit_msg"
prepare_commit
check_rebuild check_rebuild
cp trunk/* "$CARCH/${repo_dest}"/ cp trunk/* "$CARCH/${repo_dest}"/
else else
@@ -156,7 +127,6 @@ repo_commit_pkg() {
[[ ! -f $pkgbuild ]] && die "%s does not exist!" "$pkgbuild" [[ ! -f $pkgbuild ]] && die "%s does not exist!" "$pkgbuild"
commit_msg=$(get_repo_commit_msg) commit_msg=$(get_repo_commit_msg)
msg "Action: %s" "$commit_msg" msg "Action: %s" "$commit_msg"
prepare_commit
cp "$CARCH/${repo_src}"/* "$CARCH/${repo_dest}"/ cp "$CARCH/${repo_src}"/* "$CARCH/${repo_dest}"/
git rm -r "$CARCH/${repo_src}" git rm -r "$CARCH/${repo_src}"
fi fi
@@ -184,8 +154,11 @@ run(){
cd "${group}" || return cd "${group}" || return
${push} && pull_tree "${group##*/}" "$head" if ${push}; then
# subrepo_pull "${package}" msg "Checking (%s) (Artix)" "${group##*/}"
pull_tree "${group##*/}" "$head"
fi
subrepo_push "${package}" subrepo_push "${package}"
subrepo_clean "${package}" subrepo_clean "${package}"
@@ -227,14 +200,14 @@ cmd=${0##*/}
repo_dest=${cmd%pkg} repo_dest=${cmd%pkg}
usage() { usage() {
echo "Usage: ${0##*/} [options]" printf "Usage: %s [options]\n" "${0##*/}"
echo " -s <name> Source repository [default:${repo_src}]" printf " -s <name> Source repository [default: %s]\n" "${repo_src}"
echo ' -p <pkg> Package name' printf ' -p <pkg> Package name\n'
echo ' -r Delete from repo (commitpkg only)' printf ' -r Delete from repo (commitpkg only)\n'
echo ' -u Push' printf ' -u Push\n'
echo ' -h This help' printf ' -h This help\n'
echo '' printf '\n'
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -247,7 +220,6 @@ while getopts "${opts}" arg; do
r) remove=true ;; r) remove=true ;;
u) push=true ;; u) push=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
done done

View File

@@ -52,6 +52,9 @@ compare_m(){
compare_u(){ compare_u(){
if [ "$result" -eq -1 ];then if [ "$result" -eq -1 ];then
# local arel=${archver##*-} brel=${artixver##*-}
# local reldiff
# reldiff=$(( $arel-${brel%.*} ))
msg_row_red "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}" msg_row_red "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
write_list "${a}:$pkg" pkg_upgrades write_list "${a}:$pkg" pkg_upgrades
fi fi
@@ -71,7 +74,7 @@ get_archpath(){
for tree in "${ARCH_TREE[@]}"; do for tree in "${ARCH_TREE[@]}"; do
[[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && archpath=${TREE_DIR_ARCH}/$tree/$pkg [[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && archpath=${TREE_DIR_ARCH}/$tree/$pkg
done done
echo "$archpath" printf "%s\n" "$archpath"
} }
pre_compare(){ pre_compare(){
@@ -165,16 +168,16 @@ move=false
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s" readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
usage() { usage() {
echo "Usage: ${0##*/} [options]" printf 'Usage: %s [options]\n' "${0##*/}"
echo ' -u Show upgrade packages' printf ' -u Show upgrade packages\n'
echo ' -d Show downgrade packages' printf ' -d Show downgrade packages\n'
echo ' -m Show packages to move' printf ' -m Show packages to move\n'
echo " -x Don't inlcude testing packages" printf ' -x Do not inlcude testing packages\n'
echo " -y Don't inlcude staging packages" printf ' -y Do not inlcude staging packages\n'
echo ' -z Include unstable kde and gnome' printf ' -z Include unstable kde and gnome\n'
echo ' -h This help' printf ' -h This help\n'
echo '' printf '\n'
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -189,7 +192,6 @@ while getopts "${opts}" arg; do
y) staging=false ;; y) staging=false ;;
z) unstable=true ;; z) unstable=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
done done

View File

@@ -61,14 +61,14 @@ cmd=${0##*/}
dest_repo=${cmd#*-} dest_repo=${cmd#*-}
usage() { usage() {
echo "Usage: ${cmd} [options]" printf "Usage: %s [options]\n" "${cmd}"
echo ' -d <dest> Destination repository' printf ' -d <dest> Destination repository\n'
echo ' -a Add package(s) to repository' printf ' -a Add package(s) to repository\n'
echo ' -r Remove package(s) from repository' printf ' -r Remove package(s) from repository\n'
echo ' -l Use links db' printf ' -l Use links db\n'
echo ' -h This help' printf ' -h This help\n'
echo '' printf '\n'
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -81,7 +81,6 @@ while getopts "${opts}" arg; do
r) rm_pkg=true; add_pkg=false ;; r) rm_pkg=true; add_pkg=false ;;
l) linksdb=true ;; l) linksdb=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
done done

View File

@@ -32,9 +32,9 @@ case $script_mode in
esac esac
if [[ -z $1 ]]; then if [[ -z $1 ]]; then
echo "${0##*/} [options] <package file|extracted package dir>" printf "%s [options] <package file|extracted package dir>\n" "${0##*/}"
echo "Options:" printf "Options:\n"
echo " --ignore-internal ignore internal libraries" printf " --ignore-internal ignore internal libraries\n"
exit 1 exit 1
fi fi
@@ -61,7 +61,7 @@ process_sofile() {
fi fi
if ! in_array "${soname}=${soversion}-${soarch}" "${soobjects[@]}"; then if ! in_array "${soname}=${soversion}-${soarch}" "${soobjects[@]}"; then
# libfoo.so=1-64 # libfoo.so=1-64
echo "${soname}=${soversion}-${soarch}" printf "%s\n" "${soname}=${soversion}-${soarch}"
soobjects+=("${soname}=${soversion}-${soarch}") soobjects+=("${soname}=${soversion}-${soarch}")
fi fi
} }

View File

@@ -17,11 +17,11 @@ m4_include(lib/base/message.sh)
match=$1 match=$1
if [[ -z $match ]]; then if [[ -z $match ]]; then
echo 'Usage: finddeps <depname>' printf 'Usage: finddeps <depname>\n'
echo '' printf '\n'
echo 'Find packages that depend on a given depname.' printf 'Find packages that depend on a given depname.\n'
echo 'Run this script from the top-level directory of your ABS tree.' printf 'Run this script from the top-level directory of your ABS tree.\n'
echo '' printf '\n'
exit 1 exit 1
fi fi

View File

@@ -55,13 +55,13 @@ transfer_repo() {
#}}} #}}}
usage() { usage() {
echo "Usage: ${0##*/} [options]" printf "Usage: %s [options]\n" "${0##*/}"
echo ' -r <repo> Repo name' printf ' -r <repo> Repo name\n'
echo ' -c Create git repo' printf ' -c Create git repo\n'
echo ' -t Transfer git repo to landfill org' printf ' -t Transfer git repo to landfill org\n'
echo ' -h This help' printf ' -h This help\n'
echo '' printf '\n'
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -76,7 +76,6 @@ while getopts "${opts}" arg; do
c) create=true ;; c) create=true ;;
t) transfer=true ;; t) transfer=true ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
done done

View File

@@ -40,7 +40,7 @@ for tree in $PATH $libdirs $extras; do
# Is an ELF binary. # Is an ELF binary.
if (( $(ldd "$i" 2>/dev/null | grep -c 'not found') != 0 )); then if (( $(ldd "$i" 2>/dev/null | grep -c 'not found') != 0 )); then
# Missing lib. # Missing lib.
echo "$i:" >> "$TEMPDIR/raw.txt" printf "%s\n" "$i:" >> "$TEMPDIR/raw.txt"
ldd "$i" 2>/dev/null | grep 'not found' >> "$TEMPDIR/raw.txt" ldd "$i" 2>/dev/null | grep 'not found' >> "$TEMPDIR/raw.txt"
fi fi
fi fi

View File

@@ -87,7 +87,7 @@ find_pkgentry() {
for pkgentry in "$tmpdir/${REPO_DB_NAME}/$pkgname"*; do for pkgentry in "$tmpdir/${REPO_DB_NAME}/$pkgname"*; do
name=${pkgentry##*/} name=${pkgentry##*/}
if [[ ${name%-*-*} = "$pkgname" ]]; then if [[ ${name%-*-*} = "$pkgname" ]]; then
echo "$pkgentry" printf "%s\n" "$pkgentry"
return 0 return 0
fi fi
done done
@@ -238,7 +238,7 @@ db_remove_entry() {
# remove entries in "links" database # remove entries in "links" database
local linksentry local linksentry
linksentry=$(echo "$pkgentry" | sed 's/\(.*\)\/db\//\1\/links\//') linksentry=$(printf "%s\n" "$pkgentry" | sed 's/\(.*\)\/db\//\1\/links\//')
rm -rf "$linksentry" rm -rf "$linksentry"
pkgentry=$(find_pkgentry "$pkgname") pkgentry=$(find_pkgentry "$pkgname")
@@ -258,7 +258,7 @@ prepare_repo_db() {
fi fi
# check lock file # check lock file
if ( set -o noclobber; echo "$$" > "$LOCKFILE") 2> /dev/null; then if ( set -o noclobber; printf "%s\n" "$$" > "$LOCKFILE") 2> /dev/null; then
CLEAN_LOCK=1 CLEAN_LOCK=1
else else
error "Failed to acquire lockfile: %s." "$LOCKFILE" error "Failed to acquire lockfile: %s." "$LOCKFILE"
@@ -399,7 +399,7 @@ trap_exit() {
# unhook all traps to avoid race conditions # unhook all traps to avoid race conditions
trap '' EXIT TERM HUP QUIT INT ERR trap '' EXIT TERM HUP QUIT INT ERR
echo printf '\n'
error "$@" error "$@"
clean_up 1 clean_up 1
} }

View File

@@ -44,43 +44,43 @@ copy=$USER
src_owner=${SUDO_USER:-$USER} src_owner=${SUDO_USER:-$USER}
usage() { usage() {
echo "Usage: ${0##*/} [options] -r <chrootdir> [--] [makepkg args]" printf 'Usage: %s [options] -r <chrootdir> [--] [makepkg args]\n' "${0##*/}"
echo ' Run this script in a PKGBUILD dir to build a package inside a' printf ' Run this script in a PKGBUILD dir to build a package inside a\n'
echo ' clean chroot. Arguments passed to this script after the' printf ' clean chroot. Arguments passed to this script after the\n'
echo ' end-of-options marker (--) will be passed to makepkg.' printf ' end-of-options marker (--) will be passed to makepkg.\n'
echo '' printf '\n'
echo ' The chroot dir consists of the following directories:' printf ' The chroot dir consists of the following directories:\n'
echo ' <chrootdir>/{root, copy} but only "root" is required' printf ' <chrootdir>/{root, copy} but only "root" is required\n'
echo ' by default. The working copy will be created as needed' printf ' by default. The working copy will be created as needed\n'
echo '' printf '\n'
echo 'The chroot "root" directory must be created via the following' printf "The chroot 'root' directory must be created via the following\n"
echo 'command:' printf 'command:\n'
echo ' mkchroot <chrootdir>/root base-devel' printf ' mkchroot <chrootdir>/root base-devel\n'
echo '' printf '\n'
echo 'This script reads {SRC,SRCPKG,PKG,LOG}DEST, MAKEFLAGS and PACKAGER' printf 'This script reads {SRC,SRCPKG,PKG,LOG}DEST, MAKEFLAGS and PACKAGER\n'
echo 'from makepkg.conf(5), if those variables are not part of the' printf 'from makepkg.conf(5), if those variables are not part of the\n'
echo 'environment.' printf 'environment.\n'
echo '' printf '\n'
echo "Default makepkg args: ${default_makepkg_args[*]}" printf 'Default makepkg args: %s\n' "${default_makepkg_args[*]}"
echo '' printf '\n'
echo 'Flags:' printf 'Flags:\n'
echo '-h This help' printf ' -h This help\n'
echo '-c Clean the chroot before building' printf ' -c Clean the chroot before building\n'
echo '-d <dir> Bind directory into build chroot as read-write' printf ' -d <dir> Bind directory into build chroot as read-write\n'
echo '-D <dir> Bind directory into build chroot as read-only' printf ' -D <dir> Bind directory into build chroot as read-only\n'
echo '-u Update the working copy of the chroot before building' printf ' -u Update the working copy of the chroot before building\n'
echo ' This is useful for rebuilds without dirtying the pristine' printf ' This is useful for rebuilds without dirtying the pristine\n'
echo ' chroot' printf ' chroot\n'
echo '-r <dir> The chroot dir to use' printf ' -r <dir> The chroot dir to use\n'
echo '-I <pkg> Install a package into the working copy of the chroot' printf ' -I <pkg> Install a package into the working copy of the chroot\n'
echo '-l <copy> The directory to use as the working copy of the chroot' printf ' -l <copy> The directory to use as the working copy of the chroot\n'
echo ' Useful for maintaining multiple copies' printf ' Useful for maintaining multiple copies\n'
echo " Default: $copy" printf ' Default: %s\n' "$copy"
echo '-n Run namcap on the package' printf ' -n Run namcap on the package\n'
echo '-C Run checkpkg on the package' printf ' -C Run checkpkg on the package\n'
echo '-N Disable check() function' printf ' -N Disable check() function\n'
echo '-T Build in a temporary directory' printf ' -T Build in a temporary directory\n'
echo '-U Run makepkg as a specified user' printf ' -U Run makepkg as a specified user\n'
exit 1 exit 1
} }
@@ -182,7 +182,7 @@ prepare_chroot() {
"MAKEFLAGS='${MAKEFLAGS:-}'" "PACKAGER='${PACKAGER:-}'" "MAKEFLAGS='${MAKEFLAGS:-}'" "PACKAGER='${PACKAGER:-}'"
do do
grep -q "^$x" "$copydir/etc/makepkg.conf" && continue grep -q "^$x" "$copydir/etc/makepkg.conf" && continue
echo "$x" >>"$copydir/etc/makepkg.conf" printf "%s\n" "$x" >>"$copydir/etc/makepkg.conf"
done done
cat > "$copydir/etc/sudoers.d/builduser-pacman" <<EOF cat > "$copydir/etc/sudoers.d/builduser-pacman" <<EOF
@@ -239,7 +239,7 @@ _chrootbuild() {
_chrootnamcap() { _chrootnamcap() {
pacman -S --needed --noconfirm namcap pacman -S --needed --noconfirm namcap
for pkgfile in /startdir/PKGBUILD /pkgdest/*; do for pkgfile in /startdir/PKGBUILD /pkgdest/*; do
echo "Checking ${pkgfile##*/}" printf "Checking %s\n" "${pkgfile##*/}"
sudo -u builduser namcap "$pkgfile" 2>&1 | tee "/logdest/${pkgfile##*/}-namcap.log" sudo -u builduser namcap "$pkgfile" 2>&1 | tee "/logdest/${pkgfile##*/}-namcap.log"
done done
} }
@@ -249,7 +249,7 @@ download_sources() {
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,SSH_AUTH_SOCK \
env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \ env SRCDEST="$SRCDEST" BUILDDIR="$WORKDIR" \
makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o "${verifysource_args[@]}" || makepkg --config="$copydir/etc/makepkg.conf" --verifysource -o "${verifysource_args[@]}" ||
die "Could not download sources." die "Could not download sources."

View File

@@ -17,6 +17,24 @@ m4_include(lib/base/yaml.sh)
#{{{ functions #{{{ functions
print_package_names() {
local version=$(get_full_version)
local architecture pkg
for pkg in ${pkgname[@]}; do
architecture=$(get_pkg_arch $pkg)
printf "%s/%s-%s-%s%s\n" "$PKGDEST" "$pkg" "$version" "$architecture" "$PKGEXT"
done
}
print_debug_package_names() {
local version=$(get_full_version)
local architecture
if check_option "debug" "y" && check_option "strip" "y"; then
architecture=$(get_pkg_arch)
printf "%s/%s-%s-%s-%s%s\n" "$PKGDEST" "$pkgbase" "debug" "$version" "$architecture" "$PKGEXT"
fi
}
srcyaml_write_attr(){ srcyaml_write_attr(){
local ident1="$1" ident2="$2" ident3="$3" local ident1="$1" ident2="$2" ident3="$3"
local attrname=$4 attrvalues=("${@:5}") local attrname=$4 attrvalues=("${@:5}")
@@ -108,13 +126,19 @@ yaml_write_fileinfo(){
pkgbase=${pkgbase:-$pkgname} pkgbase=${pkgbase:-$pkgname}
Yaml+=$(write_yaml_map 0 "version" "${version:-0}") Yaml+=$(write_yaml_map 0 "version" "${version:-0}")
Yaml+=$(write_empty_line) Yaml+=$(write_empty_line)
local pkgfile local pkgfile debug_pkg
pkgfile=$(print_all_package_names) pkgfile=$(print_package_names)
Yaml+=$(write_yaml_map 0 "files") Yaml+=$(write_yaml_map 0 "files")
for f in ${pkgfile}; do for f in ${pkgfile}; do
Yaml+=$(write_yaml_seq 2 "${f##*/}") Yaml+=$(write_yaml_seq 2 "${f##*/}")
done done
Yaml+=$(write_empty_line) Yaml+=$(write_empty_line)
debug_pkg=$(print_debug_package_names)
Yaml+=$(write_yaml_map 0 "debug")
for d in ${debug_pkg}; do
Yaml+=$(write_yaml_seq 2 "${d##*/}")
done
Yaml+=$(write_empty_line)
} }
write_srcyaml(){ write_srcyaml(){
@@ -122,16 +146,16 @@ write_srcyaml(){
yaml_write_global yaml_write_global
yaml_write_package yaml_write_package
yaml_write_fileinfo yaml_write_fileinfo
printf '%s' "${Yaml}" printf '%s\n' "${Yaml}"
} }
#}}} #}}}
usage() { usage() {
echo "Usage: ${0##*/} [options]" printf 'Usage: %s [options]\n' "${0##*/}"
echo " -d Don't include details" printf ' -d Do not include details\n'
echo ' -h This help' printf ' -h This help\n'
echo '' printf '\n'
exit "$1" exit "$1"
} }
@@ -143,7 +167,6 @@ while getopts "${opts}" arg; do
case "${arg}" in case "${arg}" in
d) details=false ;; d) details=false ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac esac
done done

202
bin/pkg/tidyarch.in Normal file
View File

@@ -0,0 +1,202 @@
#!/bin/bash
#
# Copyright (C) 2018-20 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.
m4_include(lib/util-base.sh)
m4_include(lib/util-pkg.sh)
m4_include(lib/base/message.sh)
m4_include(lib/pkg/repo.sh)
git_rm() {
local r="$1"
if ! "$run_f"; then
printf "git rm -r %s\n" "$r"
printf "git commit -m 'remove %s'\n" "${r##*/}"
else
git rm -r "$r"
git commit -m "remove ${r##*/}"
fi
}
compare_ver() {
local a="$1" b="$2" tree="$3" func="$4" va vb
# shellcheck disable=1090
source "$a"/PKGBUILD 2>/dev/null
va=$(get_full_version)
unset pkgver epoch pkgrel arch
# shellcheck disable=1090
source "$b"/PKGBUILD 2>/dev/null
vb=$(get_full_version)
unset pkgver epoch pkgrel arch
msg2 "a: %s b: %s" "$va" "$vb"
local ret
ret=$(vercmp "$va" "$vb")
msg2 "ret: %s" "$ret"
if [ "$ret" -gt 0 ]; then
git_rm "$b"
elif [ "$ret" -lt 0 ]; then
git_rm "$a"
else
case "$tree" in
"${ARCH_TREE[0]}") git_rm "$a" ;;
"${ARCH_TREE[1]}") git_rm "$b" ;;
esac
fi
}
check_duplicates() {
mapfile -t duplicates < <(find "${TREE_DIR_ARCH}" -mindepth 2 -maxdepth 2 -type d -not -path "*.git" -printf '%f\n' | sort | uniq -d)
for p in "${duplicates[@]}"; do
msg "%s" "$p"
local av bv a b
a="${TREE_DIR_ARCH}/${ARCH_TREE[0]}"
# shellcheck disable=1090
source "$a/$p"/trunk/PKGBUILD 2>/dev/null
av=$(get_full_version)
b="${TREE_DIR_ARCH}/${ARCH_TREE[1]}"
# shellcheck disable=1090
source "$b/$p"/trunk/PKGBUILD 2>/dev/null
bv=$(get_full_version)
msg2 "a: %s b: %s" "$av" "$bv"
ret=$(vercmp "$av" "$bv")
msg2 "ret: %s" "$ret"
if [ "$ret" -gt 0 ]; then
cd "$b"
msg2 "%s" "${b##*/}"
git_rm "$p"
elif [ "$ret" -lt 0 ]; then
cd "$a"
msg2 "%s" "${a##*/}"
git_rm "$p"
fi
done
}
# git config core.mergeoptions --no-edit
check_tree() {
for tree in "${ARCH_TREE[@]}"; do
cd "${TREE_DIR_ARCH}/$tree" || exit
mapfile -t pkgs < <(find . -mindepth 2 -maxdepth 2 -type d -name repos | sort)
for p in "${pkgs[@]}"; do
mapfile -t repos < <(find "$p" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort)
local repos_dir=$p
p=${p%/*}
p=${p##*/}
local size=${#repos[@]}
if (( "$size" > 1 )); then
if [[ "${repos[1]}" != "${valid_names[11]}"-* ]] || [[ "${repos[1]}" != "${valid_names[12]}"-* ]]; then
local a="$repos_dir/${repos[0]}" b="$repos_dir/${repos[1]}"
# repo mismatches
if [[ "${repos[0]}" == "${valid_names[2]}"-* ]] && [[ "${repos[1]}" == "${valid_names[1]}"-* ]]; then
msg "%s: %s" "$p" "${repos[*]}"
msg2 "%s" "$tree"
compare_ver "$a" "$b" "$tree"
elif [[ "${repos[0]}" == "${valid_names[2]}"-* ]] && [[ "${repos[1]}" == "${valid_names[7]}"-* ]]; then
msg "%s: %s" "$p" "${repos[*]}"
msg2 "%s" "$tree"
compare_ver "$a" "$b" "$tree"
elif [[ "${repos[0]}" == "${valid_names[2]}"-* ]] && [[ "${repos[1]}" == "${valid_names[4]}"-* ]]; then
msg "%s: %s" "$p" "${repos[*]}"
msg2 "%s" "$tree"
compare_ver "$a" "$b" "$tree"
elif [[ "${repos[0]}" == "${valid_names[0]}"-* ]] && [[ "${repos[1]}" == "${valid_names[1]}"-* ]]; then
msg "%s: %s" "$p" "${repos[*]}"
msg2 "%s" "$tree"
compare_ver "$a" "$b" "$tree"
elif [[ "${repos[0]}" == "${valid_names[2]}"-* ]] && [[ "${repos[1]}" == "${valid_names[0]}"-* ]]; then
msg "%s: %s" "$p" "${repos[*]}"
msg2 "%s" "$tree"
compare_ver "$a" "$b" "$tree"
elif [[ "${repos[0]}" == "${valid_names[3]}"-* ]] && [[ "${repos[1]}" == "${valid_names[7]}"-* ]]; then
msg "%s: %s" "$p" "${repos[*]}"
msg2 "%s" "$tree"
compare_ver "$a" "$b" "$tree"
elif [[ "${repos[0]}" == "${valid_names[3]}"-* ]] && [[ "${repos[1]}" == "${valid_names[4]}"-* ]]; then
msg "%s: %s" "$p" "${repos[*]}"
msg2 "%s" "$tree"
compare_ver "$a" "$b" "$tree"
fi
# same repo name but different arch
if [[ "${repos[0]}" == "${valid_names[0]}"-any ]] && [[ "${repos[1]}" == "${valid_names[0]}"-"$CARCH" ]]; then
msg "%s: %s" "$p" "${repos[*]}"
msg2 "%s" "$tree"
compare_ver "$a" "$b" "$tree"
elif [[ "${repos[0]}" == "${valid_names[1]}"-any ]] && [[ "${repos[1]}" == "${valid_names[1]}"-"$CARCH" ]]; then
msg "%s: %s" "$p" "${repos[*]}"
msg2 "%s" "$tree"
compare_ver "$a" "$b" "$tree"
elif [[ "${repos[0]}" == "${valid_names[2]}"-any ]] && [[ "${repos[1]}" == "${valid_names[2]}"-"$CARCH" ]]; then
msg "%s: %s" "$p" "${repos[*]}"
msg2 "%s" "$tree"
compare_ver "$a" "$b" "$tree"
fi
fi
fi
done
done
}
usage() {
printf 'Usage: %s\n' "${0##*/}"
printf ' -f Apply filter\n'
printf ' -r Run removal\n'
printf ' -d Check for duplicates\n'
printf ' -h This help\n'
printf '\n'
printf '\n'
exit "$1"
}
load_makepkg_config
load_valid_names
filter=false
dupl=false
run_f=false
opts='hrfd'
while getopts ${opts} arg; do
case "${arg}" in
f) filter=true ;;
r) run_f=true ;;
d) dupl=true ;;
h|?) usage 0 ;;
esac
done
shift $(( OPTIND - 1 ))
"$filter" && check_tree
"$dupl" && check_duplicates

View File

@@ -8,7 +8,7 @@
# the dist release; default: auto # the dist release; default: auto
# ISO_VERSION=$(date +%Y%m%d) # ISO_VERSION=$(date +%Y%m%d)
# possible values: openrc, runit, s6, suite66 # possible values: openrc, runit, s6, suite66, dinit
# INITSYS="openrc" # INITSYS="openrc"
# gpg key; leave empty or commented to skip img signing # gpg key; leave empty or commented to skip img signing

View File

@@ -15,15 +15,26 @@
# packages-runit # packages-runit
# packages-s6 # packages-s6
# packages-suite66 # packages-suite66
# packages-dinit
# packages-perl # packages-perl
# packages-java # packages-java
# packages-ruby # packages-ruby
# packages-kf5 # packages-gtk
# packages-qt5
# packages-qt6
# packages-xorg
# packages-plasma # packages-plasma
# packages-kde # kde-utils
# kde-devel
# kde-media
# kde-games
# kde-edu
# kde-net
# kde-pim
# packages-gnome # packages-gnome
# packages-cinnamon # packages-cinnamon
# packages-lxqt # packages-lxqt
# packages-lxde
# packages-mate # packages-mate
# packages-xfce # packages-xfce
# packages-wm # packages-wm
@@ -33,6 +44,8 @@
# packages-misc # packages-misc
# python-world # python-world
# python-galaxy # python-galaxy
# python-galaxy-groups
# python-misc
# packages-python # packages-python
# packages-lib32 # packages-lib32
# ) # )

View File

@@ -11,10 +11,10 @@
# #
#-- The download utilities that makepkg should use to acquire sources #-- The download utilities that makepkg should use to acquire sources
# Format: 'protocol::agent' # Format: 'protocol::agent'
DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u' DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
'ftp::/usr/bin/curl -gqfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u' 'ftp::/usr/bin/curl -qgfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
'http::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u' 'http::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
'https::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u' 'https::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o' 'rsync::/usr/bin/rsync --no-motd -z %u %o'
'scp::/usr/bin/scp -C %u %o') 'scp::/usr/bin/scp -C %u %o')
@@ -49,8 +49,8 @@ LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
#-- Make Flags: change this for DistCC/SMP systems #-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2" #MAKEFLAGS="-j2"
#-- Debugging flags #-- Debugging flags
DEBUG_CFLAGS="-g -fvar-tracking-assignments" DEBUG_CFLAGS="-g"
DEBUG_CXXFLAGS="-g -fvar-tracking-assignments" DEBUG_CXXFLAGS="-g"
#DEBUG_RUSTFLAGS="-C debuginfo=2" #DEBUG_RUSTFLAGS="-C debuginfo=2"
######################################################################### #########################################################################
@@ -93,7 +93,7 @@ BUILDENV=(!distcc color !ccache check !sign)
#-- debug: Add debugging flags as specified in DEBUG_* variables #-- debug: Add debugging flags as specified in DEBUG_* variables
#-- lto: Add compile flags for building with link time optimization #-- lto: Add compile flags for building with link time optimization
# #
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug !lto) OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)
#-- File integrity checks to use. Valid: md5, sha1, sha224, sha256, sha384, sha512, b2 #-- File integrity checks to use. Valid: md5, sha1, sha224, sha256, sha384, sha512, b2
INTEGRITY_CHECK=(sha256) INTEGRITY_CHECK=(sha256)

View File

@@ -3,11 +3,11 @@
#{{{ yaml #{{{ yaml
write_yaml_header(){ write_yaml_header(){
printf '%s' '---' printf '%s\n' '---'
} }
write_empty_line(){ write_empty_line(){
printf '\n%s\n' ' ' printf '\n'
} }
write_yaml_map(){ write_yaml_map(){

View File

@@ -13,7 +13,7 @@ write_services_conf(){
yaml+=$(write_yaml_seq 2 "$svc") yaml+=$(write_yaml_seq 2 "$svc")
done done
yaml+=$(write_empty_line) yaml+=$(write_empty_line)
printf '%s' "${yaml}" printf '%s\n' "${yaml}"
} }
write_services_openrc_conf(){ write_services_openrc_conf(){
@@ -29,6 +29,7 @@ write_services_runit_conf(){
write_services_s6_conf(){ write_services_s6_conf(){
local conf="$1"/services-s6.conf local conf="$1"/services-s6.conf
write_services_conf 'svDir' '/etc/s6/sv' 'dbDir' '/etc/s6/rc/compiled' > "$conf" write_services_conf 'svDir' '/etc/s6/sv' 'dbDir' '/etc/s6/rc/compiled' > "$conf"
printf '%s\n' "defaultBundle: default" >> "$conf"
} }
write_services_suite66_conf(){ write_services_suite66_conf(){
@@ -36,6 +37,11 @@ write_services_suite66_conf(){
write_services_conf 'svDir' '/etc/66/service' 'runsvDir' '/var/lib/66/system' > "$conf" write_services_conf 'svDir' '/etc/66/service' 'runsvDir' '/var/lib/66/system' > "$conf"
} }
write_services_dinit_conf(){
local conf="$1"/services-dinit.conf
write_services_conf 'initdDir' '/etc/dinit.d' 'runsvDir' '/etc/dinit.d/boot.d' > "$conf"
}
configure_calamares(){ configure_calamares(){
local mods="$1/etc/calamares/modules" local mods="$1/etc/calamares/modules"
if [[ -d "$mods" ]];then if [[ -d "$mods" ]];then

View File

@@ -10,7 +10,7 @@ prepare_initramfs_dracut(){
printf "%s\n" 'add_dracutmodules+=" dmsquash-live"' > "$mnt"/etc/dracut.conf.d/50-live.conf printf "%s\n" 'add_dracutmodules+=" dmsquash-live"' > "$mnt"/etc/dracut.conf.d/50-live.conf
msg "Starting build: %s" "${kver}" msg "Starting build: %s" "${kver}"
artools-chroot "$mnt" dracut -fqM /boot/initramfs.img "$kver" artix-chroot "$mnt" dracut -fqM /boot/initramfs.img "$kver"
msg "Image generation successful" msg "Image generation successful"
cp "$mnt"/boot/initramfs.img "${iso_root}"/boot/initramfs-"${arch}".img cp "$mnt"/boot/initramfs.img "${iso_root}"/boot/initramfs-"${arch}".img

View File

@@ -40,7 +40,7 @@ prepare_initramfs_mkinitcpio() {
export ARTIX_GNUPG_FD export ARTIX_GNUPG_FD
fi fi
artools-chroot "$mnt" mkinitcpio -k "$k" \ artix-chroot "$mnt" mkinitcpio -k "$k" \
-c /etc/"$mkinitcpio_conf" \ -c /etc/"$mkinitcpio_conf" \
-g /boot/initramfs.img -g /boot/initramfs.img

View File

@@ -5,13 +5,13 @@
get_disturl(){ get_disturl(){
# shellcheck disable=1091 # shellcheck disable=1091
. /usr/lib/os-release . /usr/lib/os-release
echo "${HOME_URL}" printf "%s\n" "${HOME_URL}"
} }
get_osname(){ get_osname(){
# shellcheck disable=1091 # shellcheck disable=1091
. /usr/lib/os-release . /usr/lib/os-release
echo "${NAME}" printf "%s\n" "${NAME}"
} }
assemble_iso(){ assemble_iso(){

View File

@@ -56,7 +56,8 @@ read_from_list() {
read_from_services() { read_from_services() {
for svc in "${SERVICES[@]}"; do for svc in "${SERVICES[@]}"; do
case "$svc" in case "$svc" in
sddm|gdm|lightdm|mdm|greetd|lxdm|xdm) packages+=("$svc-${INITSYS}") ;; sddm|gdm|lightdm|mdm|greetd|lxdm|xdm)
packages+=("$svc-${INITSYS}"); display_manager="$svc" ;;
NetworkManager) packages+=("networkmanager-${INITSYS}") ;; NetworkManager) packages+=("networkmanager-${INITSYS}") ;;
connmand) packages+=("connman-${INITSYS}") ;; connmand) packages+=("connman-${INITSYS}") ;;
cupsd) packages+=("cups-${INITSYS}") ;; cupsd) packages+=("cups-${INITSYS}") ;;

View File

@@ -23,24 +23,26 @@ add_svc_runit(){
} }
add_svc_s6(){ add_svc_s6(){
local mnt="$1" names="$2" rlvl="${3:-default}" error ret local mnt="$1" names="$2" rlvl="${3:-default}" dep
local db=/etc/s6/rc/compiled dep="$mnt"/etc/s6/sv/"$display_manager"-srv/dependencies.d
for svc in $names; do for svc in $names; do
error=false msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
chroot "$mnt" s6-rc-db -c "$db" type "$svc" &> /dev/null || error=true chroot "$mnt" s6-service add "$rlvl" "$svc"
ret="$?" if [[ "$svc" == "$display_manager" ]]; then
if [ $ret -eq 0 ] && [[ "$error" == false ]]; then if [[ -d "$dep" ]]; then
msg2 "Setting %s: [%s]" "${INITSYS}" "$svc" touch "$dep"/artix-live
chroot "$mnt" s6-rc-bundle-update -c "$db" add "$rlvl" "$svc" fi
fi fi
done done
local rlvl=/etc/s6/current chroot "$mnt" s6-db-reload -r
local src=/etc/s6/current skel=/etc/s6/skel getty='/usr/bin/agetty -L -8 tty7 115200'
# rebuild s6-linux-init binaries # rebuild s6-linux-init binaries
chroot "$mnt" rm -r "$rlvl" chroot "$mnt" rm -r "$src"
chroot "$mnt" s6-linux-init-maker -1 -N -f /etc/s6/skel -G "/usr/bin/agetty -L -8 tty7 115200" -c "$rlvl" "$rlvl" chroot "$mnt" s6-linux-init-maker -1 -N -f "$skel" -G "$getty" -c "$src" "$src"
chroot "$mnt" mv "$rlvl"/bin/init "$rlvl"/bin/s6-init chroot "$mnt" mv "$src"/bin/init "$src"/bin/s6-init
chroot "$mnt" cp -a "$rlvl"/bin /usr chroot "$mnt" cp -a "$src"/bin /usr
} }
add_svc_suite66(){ add_svc_suite66(){
@@ -53,4 +55,14 @@ add_svc_suite66(){
done done
} }
add_svc_dinit(){
local mnt="$1" names="$2"
for svc in $names; do
if [[ -d $mnt/etc/dinit.d/boot.d ]]; then
msg2 "Setting %s: [%s]" "${INITSYS}" "$svc"
chroot "$mnt" ln -s ../"$svc" /etc/dinit.d/boot.d/"$svc" &>/dev/null
fi
done
}
#}}} #}}}

View File

@@ -7,7 +7,7 @@ get_compliant_name(){
case "$gitname" in case "$gitname" in
*+) gitname=${gitname//+/plus} *+) gitname=${gitname//+/plus}
esac esac
echo "$gitname" printf "%s\n" "$gitname"
} }
get_pkg_org(){ get_pkg_org(){
@@ -18,7 +18,7 @@ get_pkg_org(){
python-*|python2-*) org="packagesPython" ;; python-*|python2-*) org="packagesPython" ;;
*) sub=${pkg:0:1}; org="packages${sub^^}" ;; *) sub=${pkg:0:1}; org="packages${sub^^}" ;;
esac esac
echo "$org" printf "%s\n" "$org"
} }
api_put() { api_put() {

View File

@@ -31,7 +31,7 @@ get_pkgbasename() {
rm_pkg=${rm_pkg%-*} rm_pkg=${rm_pkg%-*}
rm_pkg=${rm_pkg%-*} rm_pkg=${rm_pkg%-*}
rm_pkg=${rm_pkg%-*} rm_pkg=${rm_pkg%-*}
echo "$rm_pkg" printf "%s\n" "$rm_pkg"
} }
#}}} #}}}

View File

@@ -22,12 +22,9 @@ has_changeset(){
} }
pull_tree(){ pull_tree(){
local tree="$1" local_head="$2" os="${3:-Artix}" local tree="$1" lh="$2" rh
local remote_head rh=$(get_remote_head)
remote_head=$(get_remote_head) if has_changeset "${lh}" "${rh}";then
msg "Checking (%s) (%s)" "${tree}" "$os"
if has_changeset "${local_head}" "${remote_head}";then
git pull origin master git pull origin master
fi fi
} }

View File

@@ -6,11 +6,11 @@ write_jenkinsfile(){
local pkg="$1" local pkg="$1"
local jenkins=$pkg/Jenkinsfile local jenkins=$pkg/Jenkinsfile
echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > "$jenkins" printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "$jenkins"
{ {
echo '' printf '\n'
echo 'PackagePipeline(new RepoPackage(this))' printf 'PackagePipeline(new RepoPackage(this))\n'
echo '' printf '\n'
} >> "$jenkins" } >> "$jenkins"
git add "$jenkins" git add "$jenkins"
@@ -21,11 +21,11 @@ write_agentyaml(){
local agent="$pkg"/.artixlinux/agent.yaml label='master' local agent="$pkg"/.artixlinux/agent.yaml label='master'
[[ -d $pkg/.artixlinux ]] || mkdir "$pkg"/.artixlinux [[ -d $pkg/.artixlinux ]] || mkdir "$pkg"/.artixlinux
echo '---' > "$agent" printf '%s\n' '---' > "$agent"
{ {
echo '' printf '\n'
echo "label: $label" printf "label: %s\n" "$label"
echo '' printf '\n'
} >> "$agent" } >> "$agent"
git add "$agent" git add "$agent"
@@ -37,7 +37,7 @@ commit_jenkins_files(){
write_jenkinsfile "$pkg" write_jenkinsfile "$pkg"
write_agentyaml "$pkg" write_agentyaml "$pkg"
git commit -m "initial commit" git commit -m "initial ci commit"
} }
#}}} #}}}

View File

@@ -29,20 +29,20 @@ find_repo(){
[[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=repos/"$r"-any [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=repos/"$r"-any
[[ -f $pkg/$pkgarch/$r/PKGBUILD ]] && repo="$pkgarch/$r" [[ -f $pkg/$pkgarch/$r/PKGBUILD ]] && repo="$pkgarch/$r"
done done
echo "$repo" printf "%s\n" "$repo"
} }
find_pkg(){ find_pkg(){
local searchdir="$1" pkg="$2" result local searchdir="$1" pkg="$2" result
result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg") result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg")
echo "$result" printf "%s\n" "$result"
} }
tree_loop(){ tree_loop(){
local func="$1" pkgs local func="$1" pkgs
for tree in "${ARTIX_TREE[@]}"; do for tree in "${ARTIX_TREE[@]}"; do
pkgs=$(find "${TREE_DIR_ARTIX}/$tree" -name repos -o -name "$CARCH" | sort) mapfile -t pkgs < <(find "${TREE_DIR_ARTIX}/$tree" -name "$CARCH" | sort)
for _package in ${pkgs}; do for _package in "${pkgs[@]}"; do
"$func" "$_package" "$func" "$_package"
done done
done done

View File

@@ -23,19 +23,20 @@ load_pkg_config(){
ARTIX_TREE=( ARTIX_TREE=(
packages community packages community
packages-{gfx,gtk,media,net,qt5,xorg} packages-{llvm,gfx,media,net}
) )
local dev_tree=( local dev_tree=(
packages-{llvm,python,perl,java,ruby} packages-{python,perl,java,ruby,misc}
python-{world,galaxy} python-{world,galaxy,galaxy-groups,misc}
) )
local init_tree=(packages-{openrc,runit,s6,suite66}) local init_tree=(packages-{openrc,runit,s6,suite66,dinit})
local desktop_tree=( local desktop_tree=(
packages-{kf5,plasma,kde,qt6} packages-{xorg,gtk,qt5,qt6,kf5,plasma}
packages-{lxqt,gnome,cinnamon,mate,xfce,wm} kde-{utils,devel,net,pim,media,edu,games}
packages-{lxqt,gnome,cinnamon,mate,xfce,wm,lxde}
) )
[[ -z ${TREE_NAMES_ARTIX[*]} ]] && \ [[ -z ${TREE_NAMES_ARTIX[*]} ]] && \