Compare commits

..

27 Commits

Author SHA1 Message Date
d5ba8ed404 buildiso: readd lock files 2019-08-12 11:11:04 +02:00
daf4c8283e buildiso: use basestrap instead of mkchroot 2019-08-12 11:00:13 +02:00
7b65c27025 mkchroot: remove locale backups 2019-08-12 10:59:43 +02:00
433a747da9 data: update artools 2019-08-12 00:31:31 +02:00
015c4f0658 buildiso: remove obsolete mount param 2019-08-12 00:07:23 +02:00
b1dd485ec0 initcpio: remove desktopfs from artix and pxe hook 2019-08-11 23:28:04 +02:00
316514698e buildiso: remove desktopfs support 2019-08-11 23:27:32 +02:00
614d6e19c8 mkchroot: rm left over arg 2019-08-11 23:00:13 +02:00
9c650134c4 buildiso: fix mkchroot_args 2019-08-11 22:17:10 +02:00
b849cadbae comparepkg: table adjustments 2019-08-11 22:00:13 +02:00
f1067bcd60 readd checkpkg, finddeps, find-libdeps 2019-08-11 20:14:04 +02:00
3942dde012 buildtree: support -sg <group> 2019-08-11 19:02:59 +02:00
30a6c61f52 arch-patches (#14) 2019-08-11 17:59:07 +02:00
d8195e2288 add media list 2019-08-10 15:29:00 +02:00
bfe9130cfb comparepkg: show group 2019-08-09 18:08:41 +02:00
8873a71824 subrepo.sh: clean up get_pkg_org() 2019-08-09 09:45:30 +02:00
bb86a05f2f support packages-devel 2019-08-08 22:42:55 +02:00
bd611c1af2 Merge branch 'artools-0.14' of artix/artools into master 2019-08-08 22:36:01 +02:00
f4e8f703ea load pkglist from /etc/artools/pkglist.d 2019-08-08 18:42:27 +02:00
aa83bc79bb rm pkglists 2019-08-08 18:15:15 +02:00
1bb9687ece add nemo packages to the cinnamon list 2019-08-01 10:44:45 -04:00
48ced03735 start 0.14 2019-07-31 21:15:22 +02:00
0437e66091 update artools.conf 2019-07-31 21:14:47 +02:00
9af6d02dea update pkglists; add more lists and make code dynamicly generate all cases 2019-07-31 19:13:07 +02:00
685992cca3 commitpkg: fix sourcing from input repo 2019-06-25 17:11:20 +02:00
816e13895f commitpkg: get proper version from repo folder instead of trunk 2019-06-24 16:59:27 +02:00
6a3f48f181 buildtree: readd switches to control arch import source 2019-06-17 19:06:59 +02:00
30 changed files with 590 additions and 572 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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,7 +111,6 @@ 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
for cache_dir in ${cache_dirs[@]:1}; do for cache_dir in ${cache_dirs[@]:1}; do
@@ -109,7 +124,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 +150,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}" "$@"

View File

@@ -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

View File

@@ -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

View File

@@ -33,7 +33,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}"
@@ -104,7 +104,7 @@ iso_only=false
log=false log=false
persist=false persist=false
mkchroot_args=() basestrap_args=()
cmd=${0##*/} cmd=${0##*/}
REPOSITORY=${cmd##*-} REPOSITORY=${cmd##*-}

View File

@@ -94,7 +94,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

View File

@@ -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}
@@ -78,7 +79,7 @@ from_arch(){
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg" [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg"
local package=${TREE_DIR_ARCH}/$git_tree_arch/$pkg local package=${TREE_DIR_ARCH}/$git_tree_arch/$pkg
local repo=$(find_repo "$package") local repo=$(find_repo "$package" "${staging}" "${unstable}")
src=$package/repos/$repo src=$package/repos/$repo
@@ -114,7 +115,7 @@ view_build(){
[[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg" [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "$pkg"
local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/$pkg local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/$pkg
local repo=$(find_repo "$pkg_path") local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}")
src=$pkg_path/repos/$repo src=$pkg_path/repos/$repo
@@ -123,7 +124,13 @@ view_build(){
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
} }
load_user_info load_user_info
@@ -139,6 +146,9 @@ import=false
view=false view=false
createnew=false createnew=false
conf=false conf=false
unstable=false
staging=true
sync_group=false
PACKAGE='' PACKAGE=''
@@ -150,13 +160,15 @@ 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"
echo " -y Don't clone or pull artix repos" echo " -y Don't clone or pull artix repos"
echo ' -i Import a package from arch repos' echo ' -i Import a package from arch repos'
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 ' -w Exclude staging (only with -i)'
echo ' -v View package depends' echo ' -v View package depends'
echo ' -h This help' echo ' -h This help'
echo '' echo ''
@@ -166,18 +178,20 @@ usage() {
orig_argv=("$0" "$@") orig_argv=("$0" "$@")
opts='p:t:g:sinzyvh' opts='p:t:g:uwsinzyvh'
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 ;;
i) import=true ;; i) import=true ;;
n) createnew=true ;; n) createnew=true ;;
w) staging=false ;;
u) unstable=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 ;;

98
bin/pkg/checkpkg.in Normal file
View 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 "$_pkgname")
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

View File

@@ -15,6 +15,22 @@
. @libdir@/artools/util-base.sh . @libdir@/artools/util-base.sh
. @libdir@/artools/util-pkg.sh . @libdir@/artools/util-pkg.sh
get_path(){
local repo="$1" pkg=trunk/PKGBUILD
if [[ $repo != trunk ]]; then
[[ -f repos/$repo-${ARCH}/PKGBUILD ]] && pkg=repos/$repo-${ARCH}/PKGBUILD
[[ -f repos/$repo-any/PKGBUILD ]] && pkg=repos/$repo-any/PKGBUILD
fi
echo $pkg
}
prepare_commit(){
local dest="$1"
[[ -d repos/$dest ]] && git rm -r repos/$dest
[[ ! -d repos ]] && mkdir repos
[[ ! -d repos/$dest ]] && mkdir repos/$dest
}
commit_pkg(){ commit_pkg(){
local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
if [[ -n ${git_tree} ]];then if [[ -n ${git_tree} ]];then
@@ -25,9 +41,13 @@ commit_pkg(){
cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE} cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
. trunk/PKGBUILD local pkgbuild=$(get_path "${REPO_SRC}")
. $pkgbuild
[[ $arch == 'any' ]] && CARCH=any [[ $arch == 'any' ]] && CARCH=any
local ver=$(get_full_version "${PACKAGE}")
local version=$(get_full_version)
local commit_msg="" local commit_msg=""
if ${remove};then if ${remove};then
@@ -36,14 +56,14 @@ commit_pkg(){
local pkg=${PACKAGE} local pkg=${PACKAGE}
git rm -r trunk git rm -r trunk
else else
local pkg="${PACKAGE}-$ver" local pkg="${PACKAGE}-$version"
git rm -r repos/"${REPO_SRC}-$CARCH" git rm -r repos/"${REPO_SRC}-$CARCH"
fi fi
commit_msg="[${REPO_SRC}] '$pkg' ${action}" commit_msg="[${REPO_SRC}] '$pkg' ${action}"
msg "Action: %s" "$commit_msg" msg "Action: %s" "$commit_msg"
else else
local action='modify' local action='modify'
commit_msg="[${REPO_SRC}] '${PACKAGE}-$ver' ${action}" commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}"
msg "Action: %s" "$commit_msg" msg "Action: %s" "$commit_msg"
git add . git add .
@@ -76,17 +96,18 @@ symlink_commit_pkg(){
cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE} cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
. trunk/PKGBUILD local pkgbuild=$(get_path "${REPO_SRC}")
. $pkgbuild
[[ $arch == 'any' ]] && CARCH=any [[ $arch == 'any' ]] && CARCH=any
local ver=$(get_full_version "${PACKAGE}")
local version=$(get_full_version)
if [[ ${REPO_SRC} == 'trunk' ]];then if [[ ${REPO_SRC} == 'trunk' ]];then
local action='add' local action='add'
local dest="${REPO_DEST}-$CARCH" local dest="${REPO_DEST}-$CARCH"
[[ -d repos/$dest ]] && git rm -r repos/$dest prepare_commit "$dest"
[[ ! -d repos ]] && mkdir repos
[[ ! -d repos/$dest ]] && mkdir repos/$dest
cp trunk/* repos/$dest/ cp trunk/* repos/$dest/
else else
@@ -94,14 +115,12 @@ symlink_commit_pkg(){
local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH" local src="${REPO_SRC}-$CARCH" dest="${REPO_DEST}-$CARCH"
[[ ! -f repos/$src/PKGBUILD ]] && die "%s does not exist!" "repos/$src/PKGBUILD" [[ ! -f repos/$src/PKGBUILD ]] && die "%s does not exist!" "repos/$src/PKGBUILD"
[[ -d repos/$dest ]] && git rm -r repos/$dest prepare_commit "$dest"
[[ ! -d repos ]] && mkdir repos
[[ ! -d repos/$dest ]] && mkdir repos/$dest
cp repos/$src/* repos/$dest/ cp repos/$src/* repos/$dest/
git rm -r repos/$src git rm -r repos/$src
fi fi
local commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$ver' ${action}" local commit_msg="[${REPO_SRC}] -> [${REPO_DEST}] '${PACKAGE}-$version' ${action}"
msg "Action: %s" "$commit_msg" msg "Action: %s" "$commit_msg"
git add . git add .

View File

@@ -16,7 +16,7 @@
. @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 "$package" "${staging}" "${unstable}")
local artixshow=${artixrepo%-*} local artixshow=${artixrepo%-*}
@@ -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
@@ -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() {

100
bin/pkg/find-libdeps.in Normal file
View 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

49
bin/pkg/finddeps.in Normal file
View File

@@ -0,0 +1,49 @@
#!/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" ]] && echo "$d (depends)"
done
for dep in "${makedepends[@]}"; do
# lose the version comparator, if any
depname=${dep%%[<>=]*}
[[ $depname = "$match" ]] && echo "$d (makedepends)"
done
for dep in "${optdepends[@]/:*}"; do
# lose the version comaparator, if any
depname=${dep%%[<>=]*}
[[ $depname = "$match" ]] && echo "$d (optdepends)"
done
fi
done

View File

@@ -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 "$@"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,4 +0,0 @@
phonon-gstreamer
polkit-qt
extra-cmake-modules
phonon

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}"

View File

@@ -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"}

View File

@@ -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

View File

@@ -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"
} }

View File

@@ -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"
} }

View File

@@ -96,12 +96,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 +108,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
@@ -143,9 +133,9 @@ clean_up_image(){
find "$path" -mindepth 1 -delete &> /dev/null find "$path" -mindepth 1 -delete &> /dev/null
fi fi
if [[ ${mnt##*/} == 'livefs' ]];then # if [[ ${mnt##*/} == 'livefs' ]];then
rm -rf "$mnt/etc/pacman.d/gnupg" # rm -rf "$mnt/etc/pacman.d/gnupg"
fi # 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
@@ -163,36 +153,19 @@ make_rootfs() {
prepare_dir "${rootfs}" prepare_dir "${rootfs}"
install_packages "${rootfs}" basestrap -GMc "${basestrap_args[@]}" "${rootfs}" "${packages[@]}"
echo "${CHROOTVERSION}" > "${rootfs}/.artools"
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 +173,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 -GMc "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
copy_overlay "${LIVE_OVERLAY}" "${livefs}" copy_overlay "${LIVE_OVERLAY}" "${livefs}"
@@ -212,6 +185,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 +202,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}"
@@ -267,10 +242,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"

View File

@@ -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(){

View File

@@ -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(){