Compare commits
	
		
			28 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d5ba8ed404 | |||
| daf4c8283e | |||
| 7b65c27025 | |||
| 433a747da9 | |||
| 015c4f0658 | |||
| b1dd485ec0 | |||
| 316514698e | |||
| 614d6e19c8 | |||
| 9c650134c4 | |||
| b849cadbae | |||
| f1067bcd60 | |||
| 3942dde012 | |||
| 30a6c61f52 | |||
| d8195e2288 | |||
| bfe9130cfb | |||
| 8873a71824 | |||
| bb86a05f2f | |||
| bd611c1af2 | |||
| f4e8f703ea | |||
| aa83bc79bb | |||
| 1bb9687ece | |||
| 48ced03735 | |||
| 0437e66091 | |||
| 9af6d02dea | |||
| 685992cca3 | |||
| 816e13895f | |||
| 6a3f48f181 | |||
| b4d9195c03 | 
							
								
								
									
										16
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| VERSION=0.13 | VERSION=0.14 | ||||||
|  |  | ||||||
| CHROOT_VERSION=0.9 | CHROOT_VERSION=0.10 | ||||||
|  |  | ||||||
| TOOLS = artools | TOOLS = artools | ||||||
| PREFIX ?= /usr | PREFIX ?= /usr | ||||||
| @@ -38,7 +38,10 @@ PKG_BIN = \ | |||||||
| 	bin/pkg/pkg2yaml \ | 	bin/pkg/pkg2yaml \ | ||||||
| 	bin/pkg/buildtree \ | 	bin/pkg/buildtree \ | ||||||
| 	bin/pkg/lddd \ | 	bin/pkg/lddd \ | ||||||
| 	bin/pkg/links-add | 	bin/pkg/links-add \ | ||||||
|  | 	bin/pkg/checkpkg \ | ||||||
|  | 	bin/pkg/finddeps \ | ||||||
|  | 	bin/pkg/find-libdeps | ||||||
|  |  | ||||||
| LN_COMMITPKG = \ | LN_COMMITPKG = \ | ||||||
| 	extrapkg \ | 	extrapkg \ | ||||||
| @@ -85,9 +88,6 @@ LN_DEPLOYPKG = \ | |||||||
| PKG_LIBS = \ | PKG_LIBS = \ | ||||||
| 	$(wildcard lib/pkg/*) | 	$(wildcard lib/pkg/*) | ||||||
|  |  | ||||||
| PKG_LISTS = \ |  | ||||||
| 	$(wildcard data/pkglists/*.list) |  | ||||||
|  |  | ||||||
| PKG_UTIL = lib/util-pkg.sh | PKG_UTIL = lib/util-pkg.sh | ||||||
|  |  | ||||||
| PKG_DATA = \ | PKG_DATA = \ | ||||||
| @@ -167,6 +167,8 @@ install_pkg: | |||||||
| 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | 	install $(DIRMODE) $(DESTDIR)$(BINDIR) | ||||||
| 	install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR) | 	install $(MODE) $(PKG_BIN) $(DESTDIR)$(BINDIR) | ||||||
|  |  | ||||||
|  | 	$(LN) find-libdeps $(DESTDIR)$(BINDIR)/find-libprovides | ||||||
|  |  | ||||||
| 	$(LN) links-add $(DESTDIR)$(BINDIR)/links-remove | 	$(LN) links-add $(DESTDIR)$(BINDIR)/links-remove | ||||||
|  |  | ||||||
| 	for l in $(LN_COMMITPKG); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done | 	for l in $(LN_COMMITPKG); do $(LN) commitpkg $(DESTDIR)$(BINDIR)/$$l; done | ||||||
| @@ -183,8 +185,6 @@ install_pkg: | |||||||
| 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches | 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches | ||||||
| 	install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches | 	install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches | ||||||
|  |  | ||||||
| 	install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists |  | ||||||
| 	install $(FILEMODE) $(PKG_LISTS) $(DESTDIR)$(DATADIR)/$(TOOLS)/pkglists |  | ||||||
| install_cpio: | install_cpio: | ||||||
| 	+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install | 	+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install | ||||||
|  |  | ||||||
|   | |||||||
| @@ -36,18 +36,16 @@ copy_keyring(){ | |||||||
|  |  | ||||||
| create_min_fs(){ | create_min_fs(){ | ||||||
|     msg "Creating install root at %s" "$1" |     msg "Creating install root at %s" "$1" | ||||||
|     mkdir -m 0755 -p $1/var/{cache/pacman/pkg,lib/pacman,log} $1/{dev,etc} |     mkdir -m 0755 -p $1/var/{cache/pacman/pkg,lib/pacman,log} $1/{dev,run,etc/pacman.d} | ||||||
|     mkdir -m 1777 -p $1/{tmp,run} |     mkdir -m 1777 -p $1/tmp | ||||||
|     mkdir -m 0555 -p $1/{sys,proc} |     mkdir -m 0555 -p $1/{sys,proc} | ||||||
| } | } | ||||||
|  |  | ||||||
| newroot=/mnt | newroot=/mnt | ||||||
|  |  | ||||||
| hostcache=false | hostcache=0 | ||||||
| copykeyring=true | copykeyring=1 | ||||||
| copymirrorlist=true | copymirrorlist=1 | ||||||
| directory=false |  | ||||||
| interactive=false |  | ||||||
|  |  | ||||||
| usage() { | usage() { | ||||||
|     echo "usage: ${0##*/} [options] root [packages...]" |     echo "usage: ${0##*/} [options] root [packages...]" | ||||||
| @@ -72,10 +70,10 @@ opts=':C:cGiM' | |||||||
| while getopts ${opts} arg; do | while getopts ${opts} arg; do | ||||||
|     case "${arg}" in |     case "${arg}" in | ||||||
|         C) pacman_conf=$OPTARG ;; |         C) pacman_conf=$OPTARG ;; | ||||||
|         c) hostcache=true ;; |         c) hostcache=1 ;; | ||||||
|         i) interactive=true ;; |         i) interactive=1 ;; | ||||||
|         G) copykeyring=false ;; |         G) copykeyring=0 ;; | ||||||
|         M) copymirrorlist=false ;; |         M) copymirrorlist=0 ;; | ||||||
|         :) echo "invalid argument ${arg}:$OPTARG"; usage 1;; |         :) echo "invalid argument ${arg}:$OPTARG"; usage 1;; | ||||||
|         ?) usage 0 ;; |         ?) usage 0 ;; | ||||||
|     esac |     esac | ||||||
| @@ -88,9 +86,13 @@ check_root | |||||||
| newroot=$1; shift | newroot=$1; shift | ||||||
| pacman_args=("${@:-base}") | pacman_args=("${@:-base}") | ||||||
|  |  | ||||||
| ${hostcache} || pacman_args+=(--cachedir="$newroot/var/cache/pacman/pkg") | if (( ! hostcache ));then | ||||||
|  |     pacman_args+=(--cachedir="$newroot/var/cache/pacman/pkg") | ||||||
|  | fi | ||||||
|  |  | ||||||
| ${interactive} || pacman_args+=(--noconfirm) | if (( ! interactive )); then | ||||||
|  |     pacman_args+=(--noconfirm) | ||||||
|  | fi | ||||||
|  |  | ||||||
| [[ -n $pacman_conf ]] && pacman_args+=(--config="$pacman_conf") | [[ -n $pacman_conf ]] && pacman_args+=(--config="$pacman_conf") | ||||||
|  |  | ||||||
| @@ -102,15 +104,16 @@ create_min_fs "$newroot" | |||||||
| # mount API filesystems | # mount API filesystems | ||||||
| chroot_api_mount "$newroot" || die "failed to setup API filesystems in new root" | chroot_api_mount "$newroot" || die "failed to setup API filesystems in new root" | ||||||
|  |  | ||||||
|  | if (( copykeyring ));then | ||||||
|  |     copy_keyring "$newroot" | ||||||
|  | fi | ||||||
|  |  | ||||||
| msg2 'Installing packages to %s' "$newroot" | msg2 'Installing packages to %s' "$newroot" | ||||||
| if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then | if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then | ||||||
|     die 'Failed to install packages to new root' |     die 'Failed to install packages to new root' | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if ${copykeyring};then |  | ||||||
|     copy_keyring "$newroot" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if ${copymirrorlist};then | if (( copymirrorlist ));then | ||||||
|     copy_mirrorlist "$newroot" |     copy_mirrorlist "$newroot" | ||||||
| fi | fi | ||||||
|   | |||||||
| @@ -16,9 +16,12 @@ chroot_version=0.9 | |||||||
|  |  | ||||||
| . @libdir@/artools/util-base.sh | . @libdir@/artools/util-base.sh | ||||||
|  |  | ||||||
|  | # umask might have been changed in /etc/profile | ||||||
|  | # ensure that sane default is set again | ||||||
|  | umask 0022 | ||||||
|  |  | ||||||
| working_dir='' | working_dir='' | ||||||
| files=() | files=() | ||||||
| nosetarch=false |  | ||||||
|  |  | ||||||
| usage() { | usage() { | ||||||
|     echo "Usage: ${0##*/} [options] working-dir [run arguments]" |     echo "Usage: ${0##*/} [options] working-dir [run arguments]" | ||||||
| @@ -45,9 +48,9 @@ while getopts ${opts} arg; do | |||||||
|     case "${arg}" in |     case "${arg}" in | ||||||
|         C) pacman_conf="$OPTARG" ;; |         C) pacman_conf="$OPTARG" ;; | ||||||
|         M) makepkg_conf="$OPTARG" ;; |         M) makepkg_conf="$OPTARG" ;; | ||||||
|         c) cache_dir="$OPTARG" ;; |         c) cache_dirs+=("$OPTARG") ;; | ||||||
|         f) files+=("$OPTARG") ;; |         f) files+=("$OPTARG") ;; | ||||||
|         s) nosetarch=true ;; |         s) nosetarch=1 ;; | ||||||
|         r) bindmounts_ro=("$OPTARG") ;; |         r) bindmounts_ro=("$OPTARG") ;; | ||||||
|         w) bindmounts_rw=("$OPTARG") ;; |         w) bindmounts_rw=("$OPTARG") ;; | ||||||
|         h|?) usage ;; |         h|?) usage ;; | ||||||
| @@ -65,17 +68,30 @@ 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" | ||||||
|  |  | ||||||
| @@ -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 | ||||||
| @@ -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}" "$@" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -215,7 +215,7 @@ done | |||||||
|         [[ $device = *'\040(deleted)' ]] && continue |         [[ $device = *'\040(deleted)' ]] && continue | ||||||
|  |  | ||||||
|         if [[ $type = file ]]; then |         if [[ $type = file ]]; then | ||||||
|             printf '%-20s' "$device" |             printf '%-20s' "${device#${root%/}}" | ||||||
|         elif [[ $device = /dev/dm-+([0-9]) ]]; then |         elif [[ $device = /dev/dm-+([0-9]) ]]; then | ||||||
|             # device mapper doesn't allow characters we need to worry |             # device mapper doesn't allow characters we need to worry | ||||||
|             # about being mangled, and it does the escaping of dashes |             # about being mangled, and it does the escaping of dashes | ||||||
|   | |||||||
| @@ -15,11 +15,9 @@ | |||||||
| . @libdir@/artools/util-base.sh | . @libdir@/artools/util-base.sh | ||||||
|  |  | ||||||
| working_dir='' | working_dir='' | ||||||
| files=() |  | ||||||
|  |  | ||||||
| nosetarch=false | files=() | ||||||
| copy_mirrorlist=true | chroot_args=() | ||||||
| basestrap_args=(-Gc) |  | ||||||
|  |  | ||||||
| usage() { | usage() { | ||||||
|     echo "Usage: ${0##*/} [options] working-dir package-list..." |     echo "Usage: ${0##*/} [options] working-dir package-list..." | ||||||
| @@ -28,7 +26,6 @@ usage() { | |||||||
|     echo '    -M <file>     Location of a makepkg config file' |     echo '    -M <file>     Location of a makepkg config file' | ||||||
|     echo '    -c <dir>      Set pacman cache' |     echo '    -c <dir>      Set pacman cache' | ||||||
|     echo '    -f <file>     Copy file from the host to the chroot' |     echo '    -f <file>     Copy file from the host to the chroot' | ||||||
|     echo '    -m            Do not copy mirrorlist to the chroot' |  | ||||||
|     echo '    -s            Do not run setarch' |     echo '    -s            Do not run setarch' | ||||||
|     echo '    -h            This message' |     echo '    -h            This message' | ||||||
|     exit 1 |     exit 1 | ||||||
| @@ -36,7 +33,7 @@ usage() { | |||||||
|  |  | ||||||
| orig_argv=("$0" "$@") | orig_argv=("$0" "$@") | ||||||
|  |  | ||||||
| opts='hC:M:c:f:sm' | opts='hC:M:c:f:s' | ||||||
|  |  | ||||||
| while getopts ${opts} arg; do | while getopts ${opts} arg; do | ||||||
|     case "${arg}" in |     case "${arg}" in | ||||||
| @@ -44,11 +41,12 @@ while getopts ${opts} arg; do | |||||||
|         M) makepkg_conf="$OPTARG" ;; |         M) makepkg_conf="$OPTARG" ;; | ||||||
|         c) cache_dir="$OPTARG" ;; |         c) cache_dir="$OPTARG" ;; | ||||||
|         f) files+=("$OPTARG") ;; |         f) files+=("$OPTARG") ;; | ||||||
|         s) nosetarch=true ;; |         s) nosetarch=1 ;; | ||||||
|         m) copy_mirrorlist=false; basestrap_args+=(-M) ;; |  | ||||||
|         h|?) usage ;; |         h|?) usage ;; | ||||||
|         *) error "invalid argument '%s'" "$arg"; usage ;; |         *) error "invalid argument '%s'" "$arg"; usage ;; | ||||||
|     esac |     esac | ||||||
|  |     chroot_args+=("-$arg") | ||||||
|  |     [[ -v OPTARG ]] && chroot_args+=("$OPTARG") | ||||||
| done | done | ||||||
| shift $(($OPTIND - 1)) | shift $(($OPTIND - 1)) | ||||||
|  |  | ||||||
| @@ -61,10 +59,10 @@ shift 1 | |||||||
|  |  | ||||||
| [[ -z $working_dir ]] && die 'Please specify a working directory.' | [[ -z $working_dir ]] && die 'Please specify a working directory.' | ||||||
|  |  | ||||||
| if [[ -z $cache_dir ]]; then | pacconf_cmd=$(command -v pacman-conf || command -v pacconf) | ||||||
|     cache_dirs=($(pacman -v $cache_conf 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g')) |  | ||||||
| else | if (( ${#cache_dirs[@]} == 0 )); then | ||||||
|     cache_dirs=(${cache_dir}) | 	mapfile -t cache_dirs < <($pacconf_cmd CacheDir) | ||||||
| fi | fi | ||||||
|  |  | ||||||
| umask 0022 | umask 0022 | ||||||
| @@ -90,26 +88,15 @@ for f in "${files[@]}"; do | |||||||
|     cp "$f" "$working_dir$f" |     cp "$f" "$working_dir$f" | ||||||
| done | done | ||||||
|  |  | ||||||
| _env=() | basestrap -Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \ | ||||||
| while read -r varname; do |     ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages' | ||||||
|     _env+=("$varname=${!varname}") |  | ||||||
| done < <(declare -x | sed -r 's/^declare -x ([^=]*)=.*/\1/' | grep -i '_proxy$') |  | ||||||
| env -i "${_env[@]}" \ |  | ||||||
| basestrap "${basestrap_args[@]}" ${pacman_conf:+-C "$pacman_conf"} "$working_dir" ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages' |  | ||||||
|  |  | ||||||
| echo "${CHROOTVERSION}" > "$working_dir/.artools" |  | ||||||
|  |  | ||||||
| if [[ ! -f "$working_dir/etc/locale.gen.orig" ]];then |  | ||||||
|     mv "$working_dir/etc/locale.gen" "$working_dir/etc/locale.gen.orig" |  | ||||||
| fi |  | ||||||
| printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen" | printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen" | ||||||
| echo 'LANG=en_US.UTF-8' > "$working_dir/etc/locale.conf" | echo 'LANG=en_US.UTF-8' > "$working_dir/etc/locale.conf" | ||||||
|  | echo "${CHROOTVERSION}" > "$working_dir/.artools" | ||||||
|  |  | ||||||
| dbus-uuidgen --ensure="$working_dir"/etc/machine-id | dbus-uuidgen --ensure="$working_dir"/etc/machine-id | ||||||
|  |  | ||||||
| chroot_args=(${pacman_conf:+-C "$pacman_conf"} ${makepkg_conf:+-M "$makepkg_conf"} ${cache_dir:+-c "$cache_dir"}) |  | ||||||
| ${nosetarch} && chroot_args+=(${nosetarch:+-s}) |  | ||||||
|  |  | ||||||
| exec chroot-run \ | exec chroot-run \ | ||||||
|     "${chroot_args[@]}" \ |     "${chroot_args[@]}" \ | ||||||
|     "$working_dir" locale-gen |     "$working_dir" locale-gen | ||||||
|   | |||||||
| @@ -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##*-} | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -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
									
								
							
							
						
						
									
										98
									
								
								bin/pkg/checkpkg.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,98 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # | ||||||
|  | # Copyright (C) 2018-19 artoo@artixlinux.org | ||||||
|  | # Copyright (C) 2018 Artix Linux Developers | ||||||
|  | # | ||||||
|  | # This program is free software; you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation; version 2 of the License. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  |  | ||||||
|  | . @libdir@/artools/util-base.sh | ||||||
|  | . @libdir@/artools/util-pkg.sh | ||||||
|  |  | ||||||
|  | shopt -s extglob | ||||||
|  |  | ||||||
|  | if [[ -r '/etc/makepkg.conf' ]]; then | ||||||
|  | 	source '/etc/makepkg.conf' | ||||||
|  | else | ||||||
|  | 	die '/etc/makepkg.conf not found!' | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | load_user_info | ||||||
|  |  | ||||||
|  | load_vars "${USERCONFDIR}/pacman/makepkg.conf" || load_vars "$USER_HOME/.makepkg.conf" | ||||||
|  | load_vars /etc/makepkg.conf | ||||||
|  |  | ||||||
|  | if [[ ! -f PKGBUILD ]]; then | ||||||
|  |     die 'This must be run in the directory of a built package.' | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | . ./PKGBUILD | ||||||
|  | if [[ $arch == 'any' ]]; then | ||||||
|  |     CARCH='any' | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | STARTDIR=$(pwd) | ||||||
|  | TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX) | ||||||
|  |  | ||||||
|  | for _pkgname in "${pkgname[@]}"; do | ||||||
|  |     comparepkg=$_pkgname | ||||||
|  |     pkgurl= | ||||||
|  |     target_pkgver=$(get_full_version "$_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 | ||||||
| @@ -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 . | ||||||
|   | |||||||
| @@ -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
									
								
							
							
						
						
									
										100
									
								
								bin/pkg/find-libdeps.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # | ||||||
|  | # Copyright (C) 2018-19 artoo@artixlinux.org | ||||||
|  | # Copyright (C) 2018 Artix Linux Developers | ||||||
|  | # | ||||||
|  | # This program is free software; you can redistribute it and/or modify | ||||||
|  | # it under the terms of the GNU General Public License as published by | ||||||
|  | # the Free Software Foundation; version 2 of the License. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  |  | ||||||
|  | . @libdir@/artools/util-base.sh | ||||||
|  | . @libdir@/artools/util-pkg.sh | ||||||
|  |  | ||||||
|  | set -e | ||||||
|  | shopt -s extglob | ||||||
|  |  | ||||||
|  | IGNORE_INTERNAL=0 | ||||||
|  |  | ||||||
|  | if [[ $1 = "--ignore-internal" ]]; then | ||||||
|  |     IGNORE_INTERNAL=1 | ||||||
|  |     shift | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | script_mode=${BASH_SOURCE[0]##*/find-lib} | ||||||
|  |  | ||||||
|  | case $script_mode in | ||||||
|  |     deps|provides) true;; | ||||||
|  |     *) die "Unknown mode %s" "$script_mode" ;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | if [[ -z $1 ]]; then | ||||||
|  |     echo "${0##*/} [options] <package file|extracted package dir>" | ||||||
|  |     echo "Options:" | ||||||
|  |     echo "    --ignore-internal      ignore internal libraries" | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [[ -d $1 ]]; then | ||||||
|  |     pushd "$1" >/dev/null | ||||||
|  | else | ||||||
|  |     setup_workdir | ||||||
|  |  | ||||||
|  |     case ${script_mode} in | ||||||
|  |         deps) bsdtar -C "$WORKDIR" -xf "$1";; | ||||||
|  |         provides) bsdtar -C "$WORKDIR" -xf "$1" --include="*.so*";; | ||||||
|  |     esac | ||||||
|  |  | ||||||
|  |     pushd "$WORKDIR" >/dev/null | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | process_sofile() { | ||||||
|  |     # extract the library name: libfoo.so | ||||||
|  |     soname="${sofile%.so?(+(.+([0-9])))}".so | ||||||
|  |     # extract the major version: 1 | ||||||
|  |     soversion="${sofile##*\.so\.}" | ||||||
|  |     if [[ "$soversion" = "$sofile" ]] && ((IGNORE_INTERNAL)); then | ||||||
|  |         return | ||||||
|  |     fi | ||||||
|  |     if ! in_array "${soname}=${soversion}-${soarch}" "${soobjects[@]}"; then | ||||||
|  |         # libfoo.so=1-64 | ||||||
|  |         echo "${soname}=${soversion}-${soarch}" | ||||||
|  |         soobjects+=("${soname}=${soversion}-${soarch}") | ||||||
|  |     fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | case $script_mode in | ||||||
|  |     deps) find_args=(-perm -u+x);; | ||||||
|  |     provides) find_args=(-name '*.so*');; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | find . -type f "${find_args[@]}" | while read -r filename; do | ||||||
|  |     if [[ $script_mode = "provides" ]]; then | ||||||
|  |         # ignore if we don't have a shared object | ||||||
|  |         if ! LC_ALL=C readelf -h "$filename" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then | ||||||
|  |             continue | ||||||
|  |         fi | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     # get architecture of the file; if soarch is empty it's not an ELF binary | ||||||
|  |     soarch=$(LC_ALL=C readelf -h "$filename" 2>/dev/null | sed -n 's/.*Class.*ELF\(32\|64\)/\1/p') | ||||||
|  |     [[ -n $soarch ]] || continue | ||||||
|  |  | ||||||
|  |     if [[ $script_mode = "provides" ]]; then | ||||||
|  |         # get the string binaries link to: libfoo.so.1.2 -> libfoo.so.1 | ||||||
|  |         sofile=$(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -n 's/.*Library soname: \[\(.*\)\].*/\1/p') | ||||||
|  |         [[ -z $sofile ]] && sofile="${filename##*/}" | ||||||
|  |         process_sofile | ||||||
|  |     elif [[ $script_mode = "deps" ]]; then | ||||||
|  |         # process all libraries needed by the binary | ||||||
|  |         for sofile in $(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Shared library: \[(.*)\].*/\1/p'); do | ||||||
|  |             process_sofile | ||||||
|  |         done | ||||||
|  |     fi | ||||||
|  | done | ||||||
|  |  | ||||||
|  | popd >/dev/null | ||||||
							
								
								
									
										49
									
								
								bin/pkg/finddeps.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								bin/pkg/finddeps.in
									
									
									
									
									
										Normal 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 | ||||||
| @@ -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,41 +293,19 @@ 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=() |  | ||||||
|     bindmounts_rw=() |  | ||||||
|  |  | ||||||
|     copy=$USER |  | ||||||
|     [[ -n ${SUDO_USER:-} ]] && copy=$SUDO_USER |  | ||||||
|     [[ -z "$copy" || $copy = root ]] && copy=copy |  | ||||||
|     src_owner=${SUDO_USER:-$USER} |  | ||||||
|  |  | ||||||
|     local opts='hcur:I:l:nTD:d:U:' |  | ||||||
|  |  | ||||||
| while getopts "${opts}" arg; do | while getopts "${opts}" arg; do | ||||||
|     case "$arg" in |     case "$arg" in | ||||||
|             c) clean_first=true ;; |         c) clean_first=1 ;; | ||||||
|         D) bindmounts_ro+=("$OPTARG") ;; |         D) bindmounts_ro+=("$OPTARG") ;; | ||||||
|         d) bindmounts_rw+=("$OPTARG") ;; |         d) bindmounts_rw+=("$OPTARG") ;; | ||||||
|             u) update_first=true ;; |         u) update_first=1 ;; | ||||||
|         r) passeddir="$OPTARG" ;; |         r) passeddir="$OPTARG" ;; | ||||||
|         I) install_pkgs+=("$OPTARG") ;; |         I) install_pkgs+=("$OPTARG") ;; | ||||||
|         l) copy="$OPTARG" ;; |         l) copy="$OPTARG" ;; | ||||||
|             n) run_namcap=true; makepkg_args+=(--install) ;; |         n) run_namcap=1; makepkg_args+=(--install) ;; | ||||||
|             T) temp_chroot=true; copy+="-$$" ;; |         T) temp_chroot=1; copy+="-$$" ;; | ||||||
|         U) makepkg_user="$OPTARG" ;; |         U) makepkg_user="$OPTARG" ;; | ||||||
|         h|*) usage ;; |         h|*) usage ;; | ||||||
|     esac |     esac | ||||||
| @@ -356,12 +332,12 @@ main() { | |||||||
| makepkg_args+=("${@:$OPTIND}") | makepkg_args+=("${@:$OPTIND}") | ||||||
|  |  | ||||||
| # See if -R or -e was passed to makepkg | # See if -R or -e was passed to makepkg | ||||||
|     for arg in "${makepkg_args[@]}"; do | for arg in "${@:$OPTIND}"; do | ||||||
|     case ${arg%%=*} in |     case ${arg%%=*} in | ||||||
|             --repackage|--noextract) keepbuilddir=true; break ;; |         --skip*|--holdver) verifysource_args+=("$arg") ;; | ||||||
|             --repackage|--noextract) keepbuilddir=true; break ;; |         --repackage|--noextract) keepbuilddir=1 ;; | ||||||
|         --*) ;; |         --*) ;; | ||||||
|             -*R*|-*e*) keepbuilddir=true; break ;; |         -*R*|-*e*) keepbuilddir=1 ;; | ||||||
|     esac |     esac | ||||||
| done | done | ||||||
|  |  | ||||||
| @@ -381,23 +357,23 @@ main() { | |||||||
| # Lock the chroot we want to use. We'll keep this lock until we exit. | # Lock the chroot we want to use. We'll keep this lock until we exit. | ||||||
| lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy" | lock 9 "$copydir.lock" "Locking chroot copy [%s]" "$copy" | ||||||
|  |  | ||||||
|     if [[ ! -d $copydir ]] || $clean_first; then | if [[ ! -d $copydir ]] || (( clean_first )); then | ||||||
|     sync_chroot "$chrootdir/root" "$copydir" "$copy" |     sync_chroot "$chrootdir/root" "$copydir" "$copy" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| bindmounts_rw+=("${PWD}:/startdir" "${SRCDEST}:/srcdest") | bindmounts_rw+=("${PWD}:/startdir" "${SRCDEST}:/srcdest") | ||||||
|  |  | ||||||
|     $update_first && chroot-run \ | (( update_first )) && chroot-run \ | ||||||
|         -r "${bindmounts_ro[*]}" \ |         -r "${bindmounts_ro[*]}" \ | ||||||
|         -w "${bindmounts_rw[*]}" \ |         -w "${bindmounts_rw[*]}" \ | ||||||
|         "$copydir" \ |         "$copydir" \ | ||||||
|             pacman -Syu --noconfirm |         pacman -Syuu --noconfirm | ||||||
|  |  | ||||||
| if [[ -n ${install_pkgs[*]:-} ]]; then | if [[ -n ${install_pkgs[*]:-} ]]; then | ||||||
|         install_packages "$copydir" "${install_pkgs[@]}" |     install_packages | ||||||
|     ret=$? |     ret=$? | ||||||
|         # If there is no PKGBUILD we have done |     # If there is no PKGBUILD we are done | ||||||
|         [[ -f PKGBUILD ]] || return $ret |     [[ -f PKGBUILD ]] || exit $ret | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if [[ "$(id -u "$makepkg_user")" == 0 ]]; then | if [[ "$(id -u "$makepkg_user")" == 0 ]]; then | ||||||
| @@ -405,9 +381,9 @@ main() { | |||||||
|     exit 1 |     exit 1 | ||||||
| fi | fi | ||||||
|  |  | ||||||
|     download_sources "$copydir" "$makepkg_user" | download_sources | ||||||
|  |  | ||||||
|     prepare_chroot "$copydir" "$USER_HOME" "$keepbuilddir" "$run_namcap" | prepare_chroot | ||||||
|  |  | ||||||
| if chroot-run \ | if chroot-run \ | ||||||
|     -r "${bindmounts_ro[*]}" \ |     -r "${bindmounts_ro[*]}" \ | ||||||
| @@ -415,15 +391,15 @@ main() { | |||||||
|     "$copydir" \ |     "$copydir" \ | ||||||
|     /chrootbuild "${makepkg_args[@]}" |     /chrootbuild "${makepkg_args[@]}" | ||||||
| then | then | ||||||
|         move_products "$copydir" "$src_owner" |     move_products | ||||||
| else | else | ||||||
|     (( ret += 1 )) |     (( ret += 1 )) | ||||||
| fi | fi | ||||||
|  |  | ||||||
|     $temp_chroot && delete_chroot "$copydir" "$copy" | (( temp_chroot )) && delete_chroot "$copydir" "$copy" | ||||||
|  |  | ||||||
| if (( ret != 0 )); then | if (( ret != 0 )); then | ||||||
|         if $temp_chroot; then |     if (( temp_chroot )); then | ||||||
|         die "Build failed" |         die "Build failed" | ||||||
|     else |     else | ||||||
|         die "Build failed, check %s/build" "$copydir" |         die "Build failed, check %s/build" "$copydir" | ||||||
| @@ -431,6 +407,4 @@ main() { | |||||||
| else | else | ||||||
|     true |     true | ||||||
| fi | fi | ||||||
| } |  | ||||||
|  |  | ||||||
| main "$@" |  | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ | |||||||
| # gitea user access token | # gitea user access token | ||||||
| # GIT_TOKEN='' | # GIT_TOKEN='' | ||||||
|  |  | ||||||
| # HOST_TREE_ARTIX='gitea@gitea.artixlinux.org:artix' | # HOST_TREE_ARTIX='gitea@gitea.artixlinux.org:artixlinux' | ||||||
|  |  | ||||||
| # TREE_DIR_ARTIX=${WORKSPACE_DIR}/artixlinux | # TREE_DIR_ARTIX=${WORKSPACE_DIR}/artixlinux | ||||||
|  |  | ||||||
| @@ -25,19 +25,25 @@ | |||||||
| #         packages-kernel | #         packages-kernel | ||||||
| #         packages-openrc | #         packages-openrc | ||||||
| #         packages-runit | #         packages-runit | ||||||
|  | #         packages-media | ||||||
| #         packages-xorg | #         packages-xorg | ||||||
| #         packages-python | #         packages-python | ||||||
| #         packages-perl | #         packages-perl | ||||||
| #         packages-qt5 | #         packages-qt5 | ||||||
|  | #         packages-devel | ||||||
| #         packages-ruby | #         packages-ruby | ||||||
|  | #         packages-gtk | ||||||
|  | #         packages-gnome | ||||||
|  | #         packages-cinnamon | ||||||
|  | #         packages-lxqt | ||||||
|  | #         packages-mate | ||||||
|  | #         packages-kde | ||||||
| # ) | # ) | ||||||
|  |  | ||||||
| # HOST_TREE_ARCH=git://git.archlinux.org/svntogit | # HOST_TREE_ARCH=git://git.archlinux.org/svntogit | ||||||
|  |  | ||||||
| # TREE_DIR_ARCH=${WORKSPACE_DIR}/archlinux | # TREE_DIR_ARCH=${WORKSPACE_DIR}/archlinux | ||||||
|  |  | ||||||
| # TREE_NAMES_ARCH=(packages community) |  | ||||||
|  |  | ||||||
| # default repos root | # default repos root | ||||||
| # REPOS_ROOT=${WORKSPACE_DIR}/repos | # REPOS_ROOT=${WORKSPACE_DIR}/repos | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,63 +0,0 @@ | |||||||
| accountsservice |  | ||||||
| cairo |  | ||||||
| colord |  | ||||||
| cppunit |  | ||||||
| dbus |  | ||||||
| dbus-glib |  | ||||||
| dbus-python |  | ||||||
| desktop-file-utils |  | ||||||
| fontconfig |  | ||||||
| geoclue2 |  | ||||||
| glu |  | ||||||
| gst-plugins-bad |  | ||||||
| gst-plugins-base |  | ||||||
| gst-plugins-good |  | ||||||
| gst-plugins-ugly |  | ||||||
| gstreamer |  | ||||||
| harfbuzz |  | ||||||
| hicolor-icon-theme |  | ||||||
| libatasmart |  | ||||||
| libbsd |  | ||||||
| libdrm |  | ||||||
| libevdev |  | ||||||
| libinput |  | ||||||
| libmbim |  | ||||||
| libnice |  | ||||||
| libqmi |  | ||||||
| libvdpau |  | ||||||
| libxcb |  | ||||||
| libxft |  | ||||||
| libxi |  | ||||||
| media-player-info |  | ||||||
| mesa |  | ||||||
| modemmanager |  | ||||||
| networkmanager |  | ||||||
| orc |  | ||||||
| p11-kit |  | ||||||
| polkit |  | ||||||
| poppler |  | ||||||
| poppler-data |  | ||||||
| pulseaudio |  | ||||||
| pyxdg |  | ||||||
| r |  | ||||||
| sdl |  | ||||||
| shared-mime-info |  | ||||||
| sound-theme-freedesktop |  | ||||||
| startup-notification |  | ||||||
| systemdcompat |  | ||||||
| telepathy-glib |  | ||||||
| ttf-dejavu |  | ||||||
| udisks2 |  | ||||||
| upower |  | ||||||
| wayland |  | ||||||
| wayland-protocols |  | ||||||
| webrtc-audio-processing |  | ||||||
| xcb-proto |  | ||||||
| xcb-util |  | ||||||
| xcb-util-cursor |  | ||||||
| xcb-util-image |  | ||||||
| xcb-util-keysyms |  | ||||||
| xcb-util-renderutil |  | ||||||
| xcb-util-wm |  | ||||||
| xdg-user-dirs |  | ||||||
| xdg-utils |  | ||||||
| @@ -1,63 +0,0 @@ | |||||||
| adwaita-icon-theme |  | ||||||
| atk |  | ||||||
| at-spi2-atk |  | ||||||
| at-spi2-core |  | ||||||
| babl |  | ||||||
| cantarell-fonts |  | ||||||
| cogl |  | ||||||
| dconf |  | ||||||
| flatpak |  | ||||||
| gamin |  | ||||||
| gcab |  | ||||||
| gconf |  | ||||||
| gcr |  | ||||||
| gdk-pixbuf2 |  | ||||||
| gegl02 |  | ||||||
| git |  | ||||||
| glade |  | ||||||
| glib2 |  | ||||||
| glib-networking |  | ||||||
| gnome-common |  | ||||||
| gnome-keyring |  | ||||||
| gobject-introspection |  | ||||||
| gsettings-desktop-schemas |  | ||||||
| gssdp |  | ||||||
| gtk2 |  | ||||||
| gtk3 |  | ||||||
| gtk-doc |  | ||||||
| gtksourceview3 |  | ||||||
| gupnp |  | ||||||
| gupnp-igd |  | ||||||
| gvfs |  | ||||||
| json-glib |  | ||||||
| libcloudproviders |  | ||||||
| libcroco |  | ||||||
| libgee |  | ||||||
| libglade |  | ||||||
| libgnome-keyring |  | ||||||
| libgudev |  | ||||||
| libnotify |  | ||||||
| librsvg |  | ||||||
| libsecret |  | ||||||
| libsoup |  | ||||||
| libxml2 |  | ||||||
| libxslt |  | ||||||
| meld |  | ||||||
| mobile-broadband-provider-info |  | ||||||
| modemmanager |  | ||||||
| networkmanager |  | ||||||
| network-manager-applet |  | ||||||
| orca |  | ||||||
| ostree |  | ||||||
| pango |  | ||||||
| pyatspi |  | ||||||
| pygobject |  | ||||||
| pygobject2 |  | ||||||
| pygtk |  | ||||||
| rest |  | ||||||
| ttf-bitstream-vera |  | ||||||
| vala |  | ||||||
| vte |  | ||||||
| vte3 |  | ||||||
| yelp-tools |  | ||||||
| yelp-xsl |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| phonon-gstreamer |  | ||||||
| polkit-qt |  | ||||||
| extra-cmake-modules |  | ||||||
| phonon |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| linux |  | ||||||
| nvidia |  | ||||||
| nvidia-utils |  | ||||||
| acpi_call |  | ||||||
| bbswitch |  | ||||||
| broadcom-wl |  | ||||||
| tp_smapi |  | ||||||
| r8168 |  | ||||||
| virtualbox-modules-artix |  | ||||||
| linux-lts |  | ||||||
| nvidia-lts |  | ||||||
| acpi_call-lts |  | ||||||
| bbswitch-lts |  | ||||||
| broadcom-wl-lts |  | ||||||
| tp_smapi-lts |  | ||||||
| r8168-lts |  | ||||||
| linux-firmware |  | ||||||
| @@ -1,31 +0,0 @@ | |||||||
| lxqt-about |  | ||||||
| lxqt-admin |  | ||||||
| lxqt-config |  | ||||||
| lxqt-globalkeys |  | ||||||
| lxqt-notificationd |  | ||||||
| lxqt-openssh-askpass |  | ||||||
| lxqt-panel |  | ||||||
| lxqt-policykit |  | ||||||
| lxqt-powermanagement |  | ||||||
| lxqt-qtplugin |  | ||||||
| lxqt-runner |  | ||||||
| lxqt-session |  | ||||||
| lxqt-sudo |  | ||||||
| lxqt-themes |  | ||||||
| lxqt-build-tools |  | ||||||
|  |  | ||||||
| compton-conf |  | ||||||
| lximage-qt |  | ||||||
| obconf-qt |  | ||||||
| openbox |  | ||||||
| pcmanfm-qt |  | ||||||
| qterminal |  | ||||||
| liblxqt |  | ||||||
| libqtxdg |  | ||||||
| lxmenu-data |  | ||||||
| libfm-qt |  | ||||||
| libfm |  | ||||||
| qtermwidget |  | ||||||
| libsysstat |  | ||||||
| libstatgrab |  | ||||||
| qps |  | ||||||
| @@ -1,37 +0,0 @@ | |||||||
| libdmx |  | ||||||
| libfontenc |  | ||||||
| libice |  | ||||||
| libpciaccess |  | ||||||
| libsm |  | ||||||
| libx11 |  | ||||||
| libxau |  | ||||||
| libxaw |  | ||||||
| libxcomposite |  | ||||||
| libxcursor |  | ||||||
| libxdamage |  | ||||||
| libxdmcp |  | ||||||
| libxext |  | ||||||
| libxfixes |  | ||||||
| libxfont2 |  | ||||||
| libxi|libxft |  | ||||||
| libxinerama |  | ||||||
| libxkbfile |  | ||||||
| libxkbui |  | ||||||
| libxmu |  | ||||||
| libxpm |  | ||||||
| libxrandr |  | ||||||
| libxrender |  | ||||||
| libxres |  | ||||||
| libxshmfence |  | ||||||
| libxss |  | ||||||
| libxt |  | ||||||
| libxtst |  | ||||||
| libxv |  | ||||||
| libxvmc |  | ||||||
| libxxf86vm |  | ||||||
| pixman |  | ||||||
| xbitmaps |  | ||||||
| xkeyboard-config |  | ||||||
| xorgproto |  | ||||||
| xterm |  | ||||||
| xtrans |  | ||||||
| @@ -162,7 +162,7 @@ artix_mount_handler() { | |||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     if [[ "${checksum}" == "y" ]]; then |     if [[ "${checksum}" == "y" ]]; then | ||||||
|         for fs in rootfs desktopfs livefs;do |         for fs in rootfs livefs;do | ||||||
|             if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then |             if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then | ||||||
|                 if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sha512" ]]; then |                 if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sha512" ]]; then | ||||||
|                     msg -n ":: Self-test requested, please wait..." |                     msg -n ":: Self-test requested, please wait..." | ||||||
| @@ -182,7 +182,7 @@ artix_mount_handler() { | |||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     if [[ "${verify}" == "y" ]]; then |     if [[ "${verify}" == "y" ]]; then | ||||||
|         for fs in rootfs desktopfs livefs;do |         for fs in rootfs livefs;do | ||||||
|             if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then |             if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs" ]]; then | ||||||
|                 if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs.sig" ]]; then |                 if [[ -f "/run/artix/bootmnt/${artixbasedir}/${arch}/${fs}.sfs.sig" ]]; then | ||||||
|                     msg -n ":: Signature verification requested, please wait..." |                     msg -n ":: Signature verification requested, please wait..." | ||||||
| @@ -225,7 +225,7 @@ artix_mount_handler() { | |||||||
|     local dest_sfs="/run/artix/sfs" dest_img="/run/artix/img" |     local dest_sfs="/run/artix/sfs" dest_img="/run/artix/img" | ||||||
|     local lower_dir |     local lower_dir | ||||||
|  |  | ||||||
|     for sfs in livefs desktopfs rootfs;do |     for sfs in livefs rootfs;do | ||||||
|         if [[ -f "${src}/${sfs}.sfs" ]]; then |         if [[ -f "${src}/${sfs}.sfs" ]]; then | ||||||
|             _mnt_sfs "${src}/${sfs}.sfs" "${dest_sfs}/${sfs}" |             _mnt_sfs "${src}/${sfs}.sfs" "${dest_sfs}/${sfs}" | ||||||
|             if [[ -f "${dest_sfs}/${sfs}/${sfs}.img" ]]; then |             if [[ -f "${dest_sfs}/${sfs}/${sfs}.img" ]]; then | ||||||
|   | |||||||
| @@ -40,7 +40,7 @@ artix_pxe_http_mount_handler () { | |||||||
|  |  | ||||||
|     local _src=${artix_http_srv}${artixbasedir}/${arch} |     local _src=${artix_http_srv}${artixbasedir}/${arch} | ||||||
|  |  | ||||||
|     for sfs in livefs desktopfs rootfs;do |     for sfs in livefs rootfs;do | ||||||
|         if [[ ! -z "$( curl -s --head "${_src}/${sfs}.sfs" | grep "OK" )" ]]; then |         if [[ ! -z "$( curl -s --head "${_src}/${sfs}.sfs" | grep "OK" )" ]]; then | ||||||
|             _curl_get "${_src}/${sfs}.sfs" "/${arch}" |             _curl_get "${_src}/${sfs}.sfs" "/${arch}" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ load_vars() { | |||||||
|     [[ -f $1 ]] || return 1 |     [[ -f $1 ]] || return 1 | ||||||
|  |  | ||||||
|     for var in {SRC,SRCPKG,PKG,LOG}DEST MAKEFLAGS PACKAGER CARCH GPGKEY; do |     for var in {SRC,SRCPKG,PKG,LOG}DEST MAKEFLAGS PACKAGER CARCH GPGKEY; do | ||||||
|         [[ -z ${!var:-} ]] && eval "$(grep -a "^${var}=" "$1")" |         [[ -z ${!var:-} ]] && eval "$(source "$1"; printf "%s='%s'" "$var" "${!var}")" | ||||||
|     done |     done | ||||||
|  |  | ||||||
|     return 0 |     return 0 | ||||||
| @@ -85,10 +85,14 @@ init_artools_pkg(){ | |||||||
|             packages-python |             packages-python | ||||||
|             packages-perl |             packages-perl | ||||||
|             packages-qt5 |             packages-qt5 | ||||||
|  |             packages-devel | ||||||
|             packages-ruby |             packages-ruby | ||||||
| #         packages-desktop |             packages-gtk | ||||||
| #         packages-kde |             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"} | ||||||
|   | |||||||
| @@ -153,9 +153,9 @@ 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 | ||||||
|  |         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 | ||||||
|         [[ -z ${DESKTOP_LIST} ]] && write_unpackfs_conf > "$mods"/unpackfs.conf |  | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -39,21 +39,12 @@ track_fs() { | |||||||
|  |  | ||||||
| mount_overlay(){ | mount_overlay(){ | ||||||
|     FS_ACTIVE_MOUNTS=() |     FS_ACTIVE_MOUNTS=() | ||||||
|     local lower= upper="$1" work="$2" pkglist="$3" |     local lower= upper="$1" work="$2" | ||||||
|     local fs=${upper##*/} |  | ||||||
|     local rootfs="$work/rootfs" desktopfs="$work/desktopfs" livefs="$work/livefs" |  | ||||||
|     mkdir -p "${mnt_dir}/work" |     mkdir -p "${mnt_dir}/work" | ||||||
|     mkdir -p "$upper" |     mkdir -p "$upper" | ||||||
|     case $fs in |     case $upper in | ||||||
|         desktopfs) lower="$rootfs" ;; |         */livefs) lower="$work/rootfs" ;; | ||||||
|         livefs) |         */bootfs) lower="$work/livefs":"$work/rootfs" ;; | ||||||
|             lower="$rootfs" |  | ||||||
|             [[ -f $pkglist ]] && lower="$desktopfs":"$rootfs" |  | ||||||
|         ;; |  | ||||||
|         bootfs) |  | ||||||
|             lower="$livefs":"$rootfs" |  | ||||||
|             [[ -f $pkglist ]] && lower="$livefs":"$desktopfs":"$rootfs" |  | ||||||
|         ;; |  | ||||||
|     esac |     esac | ||||||
|     track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper" |     track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper" | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,9 +23,6 @@ init_profile(){ | |||||||
|     [[ -f "$profdir/$prof/Packages-Root" ]] && ROOT_LIST="$profdir/$prof/Packages-Root" |     [[ -f "$profdir/$prof/Packages-Root" ]] && ROOT_LIST="$profdir/$prof/Packages-Root" | ||||||
|     [[ -d "$profdir/$prof/root-overlay" ]] && ROOT_OVERLAY="$profdir/$prof/root-overlay" |     [[ -d "$profdir/$prof/root-overlay" ]] && ROOT_OVERLAY="$profdir/$prof/root-overlay" | ||||||
|  |  | ||||||
|     [[ -f "$profdir/$prof/Packages-Desktop" ]] && DESKTOP_LIST="$profdir/$prof/Packages-Desktop" |  | ||||||
|     [[ -d "$profdir/$prof/desktop-overlay" ]] && DESKTOP_OVERLAY="$profdir/$prof/desktop-overlay" |  | ||||||
|  |  | ||||||
|     [[ -f "$profdir/$prof/Packages-Live" ]] && LIVE_LIST="$profdir/$prof/Packages-Live" |     [[ -f "$profdir/$prof/Packages-Live" ]] && LIVE_LIST="$profdir/$prof/Packages-Live" | ||||||
|     [[ -d "$profdir/$prof/live-overlay" ]] && LIVE_OVERLAY="$profdir/$prof/live-overlay" |     [[ -d "$profdir/$prof/live-overlay" ]] && LIVE_OVERLAY="$profdir/$prof/live-overlay" | ||||||
| } | } | ||||||
|   | |||||||
| @@ -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" | ||||||
|   | |||||||
| @@ -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(){ | ||||||
|   | |||||||
| @@ -127,7 +127,8 @@ is_valid_repo(){ | |||||||
| } | } | ||||||
|  |  | ||||||
| get_cases(){ | get_cases(){ | ||||||
|     local pkglist="${DATADIR}/pkglists/$1.list" |     local pkglist="${SYSCONFDIR}/pkglist.d/$1.list" | ||||||
|  |  | ||||||
|     local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g" |     local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g" | ||||||
|  |  | ||||||
|     local pkgs=($(sed "$_com_rm" "$pkglist" | sed "$_space" | sed "$_clean")) |     local pkgs=($(sed "$_com_rm" "$pkglist" | sed "$_space" | sed "$_clean")) | ||||||
| @@ -143,22 +144,24 @@ get_artix_tree(){ | |||||||
|     local pkg="$1" artix_tree="${2:-$3}" tree |     local pkg="$1" artix_tree="${2:-$3}" tree | ||||||
|     eval "case $pkg in |     eval "case $pkg in | ||||||
|         $(get_cases kernel)) tree=packages-kernel ;; |         $(get_cases kernel)) tree=packages-kernel ;; | ||||||
|         python-*|python2-*) tree=packages-python ;; |         $(get_cases python)) tree=packages-python ;; | ||||||
|         perl-*) tree=packages-perl ;; |         $(get_cases perl)) tree=packages-perl ;; | ||||||
|         ruby-*) tree=packages-ruby ;; |         $(get_cases ruby)) tree=packages-ruby ;; | ||||||
|         xorg*|xf86*|$(get_cases xorg)) tree=packages-xorg ;; |         $(get_cases openrc)) tree=packages-openrc ;; | ||||||
|         *-openrc) tree=packages-openrc ;; |         $(get_cases runit)) tree=packages-runit ;; | ||||||
|         *-runit) tree=packages-runit ;; |         $(get_cases media)) tree=packages-media ;; | ||||||
|         qt5-*) tree=packages-qt5 ;; |         $(get_cases xorg)) tree=packages-xorg ;; | ||||||
|         lxqt*|$(get_cases lxqt)) tree=packages-lxqt ;; |         $(get_cases qt5)) tree=packages-qt5 ;; | ||||||
|  |         $(get_cases gtk)) tree=packages-gtk ;; | ||||||
|  |         $(get_cases devel)) tree=packages-devel ;; | ||||||
|  |         $(get_cases lxqt)) tree=packages-lxqt ;; | ||||||
|  |         $(get_cases cinnamon)) tree=packages-cinnamon ;; | ||||||
|  |         $(get_cases kde)) tree=packages-kde ;; | ||||||
|  |         $(get_cases gnome)) tree=packages-gnome ;; | ||||||
|  |         $(get_cases mate)) tree=packages-mate ;; | ||||||
|         *) tree=$artix_tree |         *) tree=$artix_tree | ||||||
|     esac" |     esac" | ||||||
|     echo $tree |     echo $tree | ||||||
|  |  | ||||||
| #         $(get_cases freedesktop)) tree=packages-desktop ;; |  | ||||||
| #         $(get_cases kde)) tree=packages-kde ;; |  | ||||||
| #         $(get_cases gnome)) tree=packages-gnome ;; |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
| get_import_path(){ | get_import_path(){ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user