Compare commits
	
		
			37 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a3e6b17c5f | |||
| 21a37f6b00 | |||
| 80416b76d5 | |||
| 2113ffe4c6 | |||
| 438473c878 | |||
| 86c5c2f47b | |||
| d333c245c0 | |||
| 4a650f00d7 | |||
| 08b73032a2 | |||
| 1a250c2167 | |||
| 46431619f2 | |||
| 12d2159c12 | |||
| 3865ceab58 | |||
| 890e631e1b | |||
| 273e928905 | |||
| f5c328f8e5 | |||
| 4089151791 | |||
| 211579f9d7 | |||
| 2a85209e1e | |||
| 40d691bc85 | |||
| d9da64eb51 | |||
| 5902f987cc | |||
| bfa888251e | |||
| 0ecfa1a0f6 | |||
| e60180ebdb | |||
| 20b65d06c8 | |||
| c7728c2e5b | |||
| a0ca1ab3a4 | |||
| 911a0fff36 | |||
| f80c51e8d3 | |||
| 1e948b3ef5 | |||
| bf0a9bc7fc | |||
| a4a690951c | |||
| e05765269e | |||
| 3df364189b | |||
| 974df38738 | |||
| 7b831d8867 | 
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| VERSION=0.16 | ||||
| VERSION=0.18 | ||||
|  | ||||
| CHROOT_VERSION=0.10 | ||||
|  | ||||
| @@ -14,7 +14,6 @@ BASE_CONF = \ | ||||
| 	data/conf/artools-base.conf | ||||
|  | ||||
| BASE_BIN = \ | ||||
| 	bin/base/signfile \ | ||||
| 	bin/base/chroot-run \ | ||||
| 	bin/base/mkchroot \ | ||||
| 	bin/base/basestrap \ | ||||
| @@ -45,7 +44,8 @@ PKG_BIN = \ | ||||
| 	bin/pkg/checkpkg \ | ||||
| 	bin/pkg/finddeps \ | ||||
| 	bin/pkg/find-libdeps \ | ||||
| 	bin/pkg/batchpkg | ||||
| 	bin/pkg/batchpkg \ | ||||
| 	bin/pkg/signpkg | ||||
|  | ||||
| LN_COMMITPKG = \ | ||||
| 	extrapkg \ | ||||
| @@ -90,7 +90,7 @@ LN_DEPLOYPKG = \ | ||||
| 	deploypkg-gnome-wobble | ||||
|  | ||||
| PKG_LIBS = \ | ||||
| 	$(wildcard lib/pkg/*) | ||||
| 	$(wildcard lib/pkg/*.sh) | ||||
|  | ||||
| PKG_UTIL = lib/util-pkg.sh | ||||
|  | ||||
|   | ||||
| @@ -28,7 +28,7 @@ artools | ||||
| - pkg: | ||||
|   * namcap | ||||
|   * git-subrepo | ||||
|   * jshon | ||||
|   * jq | ||||
|  | ||||
| - iso: | ||||
|   * dosfstools | ||||
|   | ||||
| @@ -46,6 +46,7 @@ newroot=/mnt | ||||
| hostcache=0 | ||||
| copykeyring=1 | ||||
| copymirrorlist=1 | ||||
| pacmode=-Sy | ||||
|  | ||||
| usage() { | ||||
|     echo "usage: ${0##*/} [options] root [packages...]" | ||||
| @@ -54,6 +55,7 @@ usage() { | ||||
|     echo " -G               Avoid copying the host's pacman keyring to the target" | ||||
|     echo " -i               Avoid auto-confirmation of package selections" | ||||
|     echo " -M               Avoid copying the host's mirrorlist to the target" | ||||
|     echo ' -U               Use pacman -U to install packages' | ||||
|     echo " -h               Print this help message" | ||||
|     echo '' | ||||
|     echo ' basestrap installs packages to the specified new root directory.' | ||||
| @@ -65,7 +67,7 @@ usage() { | ||||
|  | ||||
| orig_argv=("$0" "$@") | ||||
|  | ||||
| opts=':C:cGiM' | ||||
| opts=':C:cGiMU' | ||||
|  | ||||
| while getopts ${opts} arg; do | ||||
|     case "${arg}" in | ||||
| @@ -74,6 +76,7 @@ while getopts ${opts} arg; do | ||||
|         i) interactive=1 ;; | ||||
|         G) copykeyring=0 ;; | ||||
|         M) copymirrorlist=0 ;; | ||||
|         U) pacmode=-U ;; | ||||
|         :) echo "invalid argument ${arg}:$OPTARG"; usage 1;; | ||||
|         ?) usage 0 ;; | ||||
|     esac | ||||
| @@ -109,7 +112,7 @@ if (( copykeyring ));then | ||||
| fi | ||||
|  | ||||
| msg2 'Installing packages to %s' "$newroot" | ||||
| if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then | ||||
| if ! unshare --fork --pid pacman -r "$newroot" $pacmode "${pacman_args[@]}"; then | ||||
|     die 'Failed to install packages to new root' | ||||
| fi | ||||
|  | ||||
|   | ||||
| @@ -86,15 +86,13 @@ done | ||||
|  | ||||
| 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 | ||||
|         --repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1#') | ||||
|     for line in "${lines[@]}"; do | ||||
|         if [[ $line = file://* ]]; then | ||||
|             line=${line#file://} | ||||
|             in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line") | ||||
|         fi | ||||
|     done | ||||
| done < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list) | ||||
|  | ||||
| copy_hostconf () { | ||||
| @@ -149,7 +147,7 @@ elif [[ $(cat "$working_dir/.artools") != ${CHROOTVERSION} ]]; then | ||||
|     die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}" | ||||
| fi | ||||
|  | ||||
| sync_host_localtime | ||||
| #sync_host_localtime | ||||
|  | ||||
| chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}" | ||||
|  | ||||
|   | ||||
| @@ -15,6 +15,7 @@ | ||||
| . @libdir@/artools/util-base.sh | ||||
|  | ||||
| working_dir='' | ||||
| umode='' | ||||
|  | ||||
| files=() | ||||
| chroot_args=() | ||||
| @@ -22,6 +23,7 @@ chroot_args=() | ||||
| usage() { | ||||
|     echo "Usage: ${0##*/} [options] working-dir package-list..." | ||||
|     echo ' options:' | ||||
|     echo '    -U            Use pacman -U to install packages' | ||||
|     echo '    -C <file>     Location of a pacman config file' | ||||
|     echo '    -M <file>     Location of a makepkg config file' | ||||
|     echo '    -c <dir>      Set pacman cache' | ||||
| @@ -33,10 +35,11 @@ usage() { | ||||
|  | ||||
| orig_argv=("$0" "$@") | ||||
|  | ||||
| opts='hC:M:c:f:s' | ||||
| opts='hUC:M:c:f:s' | ||||
|  | ||||
| while getopts ${opts} arg; do | ||||
|     case "${arg}" in | ||||
|         U) umode=U ;; | ||||
|         C) pacman_conf="$OPTARG" ;; | ||||
|         M) makepkg_conf="$OPTARG" ;; | ||||
|         c) cache_dir="$OPTARG" ;; | ||||
| @@ -45,8 +48,10 @@ while getopts ${opts} arg; do | ||||
|         h|?) usage ;; | ||||
|         *) error "invalid argument '%s'" "$arg"; usage ;; | ||||
|     esac | ||||
|     chroot_args+=("-$arg") | ||||
|     [[ -v OPTARG ]] && chroot_args+=("$OPTARG") | ||||
|     if [[ $arg != U ]]; then | ||||
|         chroot_args+=("-$arg") | ||||
|         [[ -v OPTARG ]] && chroot_args+=("$OPTARG") | ||||
|     fi | ||||
| done | ||||
| shift $(($OPTIND - 1)) | ||||
|  | ||||
| @@ -88,7 +93,7 @@ for f in "${files[@]}"; do | ||||
|     cp "$f" "$working_dir$f" | ||||
| done | ||||
|  | ||||
| basestrap -Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \ | ||||
| basestrap -${umode}Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \ | ||||
|     ${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages' | ||||
|  | ||||
| printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen" | ||||
|   | ||||
| @@ -1,32 +0,0 @@ | ||||
| #!/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 | ||||
|  | ||||
| load_makepkg_config | ||||
|  | ||||
| file_to_sign="$1" | ||||
|  | ||||
| if [ ! -e "$1" ]; then | ||||
|     error "%s does not exist!" "$file_to_sign" | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| if [[ -n "${BUILDBOT_GPGP}" ]]; then | ||||
|     msg2 "Signing [%s]" "${file_to_sign##*/}" | ||||
|     gpg --batch --passphrase "${BUILDBOT_GPGP}" --detach-sign "$file_to_sign" | ||||
| else | ||||
|     msg2 "Signing [%s] with key %s" "${file_to_sign##*/}" "${GPGKEY}..." | ||||
|     gpg --detach-sign --use-agent -u "${GPGKEY}" "$file_to_sign" | ||||
| fi | ||||
| @@ -14,6 +14,8 @@ | ||||
|  | ||||
| . @libdir@/artools/util-iso.sh | ||||
|  | ||||
| prepare_artools | ||||
|  | ||||
| gen_iso_fn(){ | ||||
|     local vars=("artix") name | ||||
|     vars+=("${PROFILE}") | ||||
| @@ -50,6 +52,8 @@ prepare_build(){ | ||||
|     basestrap_args+=(-C ${pacman_conf}) | ||||
|     work_dir=${CHROOTS_ISO}/${PROFILE}/artix | ||||
|  | ||||
|     prepare_dir "${ISO_POOL}" | ||||
|  | ||||
|     iso_dir="${ISO_POOL}/${PROFILE}" | ||||
|  | ||||
|     iso_root=${CHROOTS_ISO}/${PROFILE}/iso | ||||
| @@ -75,6 +79,44 @@ display_settings(){ | ||||
|     show_profile | ||||
| } | ||||
|  | ||||
| mk_squash(){ | ||||
|     local timer=$(get_timer) | ||||
|     make_sfs "${work_dir}/rootfs" | ||||
|     [[ -d "${work_dir}/livefs" ]] && make_sfs "${work_dir}/livefs" | ||||
|     show_elapsed_time "${FUNCNAME}" "${timer}" | ||||
| } | ||||
|  | ||||
| mk_iso(){ | ||||
|     touch "${iso_root}/.artix" | ||||
|     msg "Making bootable image" | ||||
|     # Sanity checks | ||||
|     [[ ! -d "${iso_root}" ]] && return 1 | ||||
|     if [[ -f "${iso_dir}/${iso_file}" ]]; then | ||||
|         msg2 "Removing existing bootable image..." | ||||
|         rm -rf "${iso_dir}/${iso_file}" | ||||
|     fi | ||||
|     assemble_iso | ||||
|     chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}" | ||||
| } | ||||
|  | ||||
| mk_boot(){ | ||||
|     local timer=$(get_timer) | ||||
|     run_safe "make_bootfs" | ||||
|     run_safe "make_grub" | ||||
|     show_elapsed_time "${FUNCNAME}" "${timer}" | ||||
| } | ||||
|  | ||||
| mk_chroots(){ | ||||
|     local timer=$(get_timer) | ||||
|     load_pkgs "${ROOT_LIST}" "${INITSYS}" | ||||
|     run_safe "make_rootfs" | ||||
|     if [[ -n ${LIVE_LIST} ]]; then | ||||
|         load_pkgs "${LIVE_LIST}" "${INITSYS}" | ||||
|         run_safe "make_livefs" | ||||
|     fi | ||||
|     show_elapsed_time "${FUNCNAME}" "${timer}" | ||||
| } | ||||
|  | ||||
| build(){ | ||||
|     msg "Start building [%s]" "${PROFILE}" | ||||
|     if ${clean_first};then | ||||
| @@ -95,29 +137,45 @@ build(){ | ||||
|         rm -rf --one-file-system "${iso_root}" | ||||
|     fi | ||||
|  | ||||
|     if ${iso_only}; then | ||||
|         [[ ! -d ${work_dir} ]] && die "Create images: %s -p %s -x" "${cmd}" "${PROFILE}" | ||||
|         compress_images | ||||
|         exit 1 | ||||
|     fi | ||||
|     if ${images_only}; then | ||||
|         prepare_images | ||||
|         warning "Continue compress: %s -p %s -zc ..." "${cmd}" "${PROFILE}" | ||||
|         exit 1 | ||||
|     else | ||||
|         prepare_images | ||||
|         compress_images | ||||
|     fi | ||||
|     case true in | ||||
|         ${chroot_only}) | ||||
|             mk_chroots | ||||
|             warning "Continue squash: %s -p %s -sc ..." "${cmd}" "${PROFILE}" | ||||
|             exit 1 | ||||
|         ;; | ||||
|         ${boot_only}) | ||||
|             mk_boot | ||||
|             warning "Continue iso: %s -p %s -zc ..." "${cmd}" "${PROFILE}" | ||||
|             exit 1 | ||||
|         ;; | ||||
|         ${squash_only}) | ||||
|             mk_squash | ||||
|             warning "Continue boot: %s -p %s -bc ..." "${cmd}" "${PROFILE}" | ||||
|             exit 1 | ||||
|         ;; | ||||
|         ${iso_only}) | ||||
|             [[ ! -d ${work_dir} ]] && die "Create chroot: %s -p %s -x" "${cmd}" "${PROFILE}" | ||||
|             mk_iso | ||||
|         ;; | ||||
|         *) | ||||
|             mk_chroots | ||||
|             mk_boot | ||||
|             mk_squash | ||||
|             mk_iso | ||||
|         ;; | ||||
|     esac | ||||
|     msg "Finished building [%s]" "${PROFILE}" | ||||
|     show_elapsed_time "${FUNCNAME}" "${timer_start}" | ||||
| } | ||||
|  | ||||
| clean_first=true | ||||
| pretend=false | ||||
| images_only=false | ||||
| chroot_only=false | ||||
| iso_only=false | ||||
| persist=false | ||||
| use_dracut=false | ||||
| squash_only=false | ||||
| boot_only=false | ||||
|  | ||||
| basestrap_args=(-GMc) | ||||
| cmd=${0##*/} | ||||
| @@ -137,7 +195,9 @@ usage() { | ||||
|     echo "                       [default: ${GPG_KEY}]" | ||||
|     echo '    -m                 Set SquashFS image mode to persistence' | ||||
|     echo '    -c                 Disable clean work dir' | ||||
|     echo '    -x                 Build images only' | ||||
|     echo '    -x                 Build chroot only' | ||||
|     echo '    -s                 Squash chroot only' | ||||
|     echo '    -b                 Generate iso boot only' | ||||
|     echo '    -z                 Generate iso only' | ||||
|     echo '                       Requires pre built images (-x)' | ||||
|     echo '    -d                 Use dracut instead of mkinitcpio for iso initramfs' | ||||
| @@ -150,7 +210,7 @@ usage() { | ||||
|  | ||||
| orig_argv=("$0" "$@") | ||||
|  | ||||
| opts='p:r:t:i:g:czxmdqh' | ||||
| opts='p:r:t:i:g:czsbxmdqh' | ||||
|  | ||||
| while getopts "${opts}" arg; do | ||||
|     case "${arg}" in | ||||
| @@ -160,8 +220,10 @@ while getopts "${opts}" arg; do | ||||
|         i) INITSYS="$OPTARG" ;; | ||||
|         g) GPG_KEY="$OPTARG" ;; | ||||
|         c) clean_first=false ;; | ||||
|         x) images_only=true ;; | ||||
|         x) chroot_only=true ;; | ||||
|         z) iso_only=true ;; | ||||
|         s) squash_only=true ;; | ||||
|         b) boot_only=true ;; | ||||
|         m) persist=true ;; | ||||
|         d) use_dracut=true ;; | ||||
|         q) pretend=true ;; | ||||
|   | ||||
| @@ -14,6 +14,8 @@ | ||||
|  | ||||
| . @libdir@/artools/util-iso.sh | ||||
|  | ||||
| prepare_artools | ||||
|  | ||||
| connect(){ | ||||
|     echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}" | ||||
| } | ||||
|   | ||||
| @@ -14,6 +14,8 @@ | ||||
|  | ||||
| . /usr/lib/artools/util-pkg.sh | ||||
|  | ||||
| prepare_artools | ||||
|  | ||||
| batch_move() { | ||||
|     local name="${1:-pkg_moves}" | ||||
|     local pkglist=${TREE_DIR_ARTIX}/$name.list | ||||
|   | ||||
| @@ -14,6 +14,8 @@ | ||||
|  | ||||
| . @libdir@/artools/util-pkg.sh | ||||
|  | ||||
| prepare_artools | ||||
|  | ||||
| create_first=false | ||||
| rebuild=false | ||||
| no_check=false | ||||
| @@ -28,6 +30,7 @@ base_devel=('base-devel') | ||||
| usage() { | ||||
|     echo "Usage: ${0##*/} [options] -- [mkchrootpkg_args]" | ||||
|     echo "    -r <dir>           Create chroots in this directory" | ||||
|     echo "    -d <dir>           Destination repo chroot" | ||||
|     echo '    -c                 Recreate the chroot before building' | ||||
|     echo '    -m                 Major rebuild' | ||||
|     echo '    -N                 Disable check() function' | ||||
| @@ -41,11 +44,12 @@ usage() { | ||||
|  | ||||
| orig_argv=("$0" "$@") | ||||
|  | ||||
| opts='hcCNmr:' | ||||
| opts='hcCNmr:d:' | ||||
|  | ||||
| while getopts "${opts}" arg; do | ||||
|     case "${arg}" in | ||||
|         r) CHROOTS_PKG="$OPTARG" ;; | ||||
|         d) repo="$OPTARG" ;; | ||||
|         c) create_first=true ;; | ||||
|         m) rebuild=true ;; | ||||
|         C) is_checkpkg=true; mkchrootpkg_args+=(-C) ;; | ||||
| @@ -90,7 +94,7 @@ if ${create_first} || [[ ! -d "${CHROOTS_PKG}/${repo}-${ARCH}" ]];then | ||||
|     lock_close 9 | ||||
|  | ||||
|     rm -rf --one-file-system "${CHROOTS_PKG}/${repo}-${ARCH}" | ||||
|     mkdir -p "${CHROOTS_PKG}/${repo}-${ARCH}" | ||||
|     (umask 0022; mkdir -p "${CHROOTS_PKG}/${repo}-${ARCH}") | ||||
|     setarch "${ARCH}" mkchroot \ | ||||
|         -C "${pacman_conf}" \ | ||||
|         -M "${makepkg_conf}" \ | ||||
|   | ||||
| @@ -14,33 +14,41 @@ | ||||
|  | ||||
| . @libdir@/artools/util-pkg.sh | ||||
|  | ||||
| prepare_artools | ||||
|  | ||||
| patch_pkg(){ | ||||
|     local pkg="$1" | ||||
|     local pkgpath="$1" | ||||
|     local pkg=${pkgpath%/*} | ||||
|     pkg=${pkg##*/} | ||||
|     case $pkg in | ||||
|         glibc) | ||||
|             msg2 "Patching %s" "$pkg" | ||||
|             sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \ | ||||
|                 -e '/nscd.service/d' \ | ||||
|                 -i $pkg/trunk/PKGBUILD | ||||
|                 -i $pkgpath/PKGBUILD | ||||
|         ;; | ||||
|         linux|linux-lts) | ||||
|             sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkg/trunk/PKGBUILD | ||||
|             msg2 "Patching %s" "$pkg" | ||||
|             sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkgpath/PKGBUILD | ||||
|             sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \ | ||||
|                 -i $pkg/trunk/config | ||||
|                 -i $pkgpath/config | ||||
|         ;; | ||||
|         bash) | ||||
|             msg2 "Patching %s" "$pkg" | ||||
|             sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \ | ||||
|             -e "s|etc/bash.|etc/bash/|g" \ | ||||
|             -e 's|"$pkgdir/etc/skel/.bash_logout"|"$pkgdir/etc/skel/.bash_logout"\n  install -Dm644 artix.bashrc $pkgdir/etc/bash/bashrc.d/artix.bashrc|' \ | ||||
|             -i $pkg/trunk/PKGBUILD | ||||
|             cd $pkg/trunk | ||||
|             -i $pkgpath/PKGBUILD | ||||
|             cd $pkgpath | ||||
|                 patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch | ||||
|                 updpkgsums | ||||
|             cd ../.. | ||||
|         ;; | ||||
|         gstreamer|gst-plugins-*|licenses) | ||||
|             msg2 "Patching %s" "$pkg" | ||||
|             sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \ | ||||
|                 -e 's|(Arch Linux)|(Artix Linux)|' \ | ||||
|                 -i $pkg/trunk/PKGBUILD | ||||
|                 -i $pkgpath/PKGBUILD | ||||
|         ;; | ||||
|     esac | ||||
| } | ||||
| @@ -77,12 +85,12 @@ pull_tree_artix(){ | ||||
| sync_pkg(){ | ||||
|     local rsync_args=(-aWxvci --progress --delete-before --no-R --no-implied-dirs) | ||||
|     local src="$1" dest="$2" | ||||
|  | ||||
|     msg "Sync from Arch [%s] to Artix [%s]" "${src##*archlinux/}" "${dest##*artixlinux/}" | ||||
|     rsync "${rsync_args[@]}" $src/ $dest/ | ||||
| } | ||||
|  | ||||
| show_deps(){ | ||||
|     local src="$1" repo="$2" | ||||
|     local src="$1" | ||||
|  | ||||
|     . $src/PKGBUILD 2>/dev/null | ||||
|  | ||||
| @@ -90,7 +98,6 @@ show_deps(){ | ||||
|  | ||||
|     local archver=$(get_full_version) | ||||
|  | ||||
|     msg2 "repo: %s" "$repo" | ||||
|     [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}" | ||||
|     msg2 "pkgname: %s" "${pkgname[*]}" | ||||
|     [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}" | ||||
| @@ -104,84 +111,65 @@ show_deps(){ | ||||
| } | ||||
|  | ||||
| subrepo_new(){ | ||||
|     local group="${1:-$GROUP}" team="${2:-$TEAM}" | ||||
|     local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk | ||||
|  | ||||
|     cd ${TREE_DIR_ARTIX}/$group | ||||
|     cd ${TREE_DIR_ARTIX}/${GROUP} | ||||
|  | ||||
|     local org=$(get_pkg_org "${PACKAGE}") | ||||
|  | ||||
|     create_repo "${PACKAGE}" "$org" | ||||
|  | ||||
|     add_repo_to_team "${PACKAGE}" "$org" "$team" | ||||
|     add_repo_to_team "${PACKAGE}" "$org" "${TEAM}" | ||||
|  | ||||
|     subrepo_clone "${PACKAGE}" "$org" | ||||
|  | ||||
|     prepare_dir "$dest" | ||||
|     prepare_dir "${TREE_DIR_ARTIX}/${GROUP}/${PACKAGE}/trunk" | ||||
|  | ||||
|     commit_jenkins_files "${PACKAGE}" | ||||
| } | ||||
|  | ||||
| from_arch(){ | ||||
|     local src= dest= | ||||
|  | ||||
|     cd ${TREE_DIR_ARTIX} | ||||
|  | ||||
|     local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||
|     [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||
|     local srcpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||
|     [[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||
|  | ||||
|     local package=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE} | ||||
|     local repo=$(find_repo "$package" "${staging}" "${unstable}") | ||||
|     local repo=$(find_repo "$srcpath") | ||||
|     msg "repo: %s" "$repo" | ||||
|  | ||||
|     src=$package/repos/$repo | ||||
|     local archpath=$srcpath/repos/$repo | ||||
|     local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||
|  | ||||
|     local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||
|     local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch") | ||||
|     show_deps "$archpath" | ||||
|  | ||||
|     dest=${TREE_DIR_ARTIX}/$tree_dir/${PACKAGE}/trunk | ||||
|     if [[ -f "$artixpath"/.gitrepo ]]; then | ||||
|         artixpath="$artixpath"/trunk | ||||
|  | ||||
|     msg "tree: %s" "$tree_dir" | ||||
|     show_deps "$src" "$repo" | ||||
|  | ||||
|     if [[ -d $dest ]];then | ||||
|  | ||||
|         cd ${TREE_DIR_ARTIX}/$git_tree_artix | ||||
|  | ||||
|         . $dest/PKGBUILD 2>/dev/null | ||||
|         local artixver=$(get_full_version) | ||||
|  | ||||
|         msg2 "Artix Version: %s" "$artixver" | ||||
|         if [[ -d "$artixpath" ]];then | ||||
|             sync_pkg "$archpath" "$artixpath" | ||||
|             patch_pkg "$artixpath" | ||||
|         fi | ||||
|     else | ||||
|         subrepo_new "$tree_dir" "$git_tree_arch" | ||||
|         die "Package '%s' does not exist!" "${PACKAGE}" | ||||
|     fi | ||||
|  | ||||
|     msg "Sync (%s) from [%s] to [%s]" "${PACKAGE}" "$git_tree_arch" "$tree_dir" | ||||
|  | ||||
|     sync_pkg "$src" "$dest" | ||||
|     patch_pkg "${PACKAGE}" | ||||
| } | ||||
|  | ||||
| view_build(){ | ||||
|     local src= | ||||
|     local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||
|     [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||
|  | ||||
|     local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE} | ||||
|     local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}") | ||||
|  | ||||
|     src=$pkg_path/repos/$repo | ||||
|  | ||||
|     show_deps "$src" "$repo" | ||||
|     local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||
|     [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||
|     local repo=$(find_repo "${archpath}") | ||||
|     archpath=$archpath/repos/$repo | ||||
|     msg2 "repo: %s" "$repo" | ||||
|     show_deps "$archpath" | ||||
| } | ||||
|  | ||||
| check_tree(){ | ||||
|     local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||
|     [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||
|     local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||
|     local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch") | ||||
|     msg "tree_dir: %s" "$tree_dir" | ||||
|     [[ -z $git_tree_artix ]] && msg2 "exists: %s" "no" | ||||
|     [[ -n $git_tree_artix ]] && msg2 "exists: %s" "yes" | ||||
|     local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||
|     [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||
|     local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||
|     local group=${artixpath%/*} | ||||
|     msg "group: %s" "${group##*/}" | ||||
|  | ||||
|     [[ -z $artixpath ]] && msg2 "exists: %s" "no" | ||||
|     [[ -n $artixpath ]] && msg2 "exists: %s" "yes" | ||||
| } | ||||
|  | ||||
| sync_repos(){ | ||||
| @@ -197,39 +185,42 @@ sync_repos(){ | ||||
|  | ||||
| load_makepkg_config | ||||
|  | ||||
| testing=true | ||||
| staging=true | ||||
| unstable=false | ||||
|  | ||||
| sync=false | ||||
| sync_arch=true | ||||
| sync_artix=true | ||||
| import=false | ||||
| view=false | ||||
| createnew=false | ||||
| conf=false | ||||
| unstable=false | ||||
| staging=true | ||||
| sync_group=false | ||||
| check=false | ||||
|  | ||||
| PACKAGE='' | ||||
|  | ||||
| TEAM=${TREE_NAMES_ARTIX[0]} | ||||
| TEAM='community' | ||||
| GROUP=${TREE_NAMES_ARTIX[0]} | ||||
|  | ||||
| usage() { | ||||
|     echo "Usage: ${0##*/} [options]" | ||||
|     echo '    -p <pkg>      Package name' | ||||
|     echo '    -t <team>     Team name (only with -n)' | ||||
|     echo '                  Possible values: core,extra,community,multilib' | ||||
|     echo "                  [default: ${TEAM}]" | ||||
|     echo '    -g <group>    Group name, the superrepo (only with -n or -s)' | ||||
|     echo "                  [default: ${GROUP}]" | ||||
|     echo "    -s            Clone or pull repos" | ||||
|     echo "    -z            Don't clone or pull arch repos" | ||||
|     echo "    -y            Don't clone or pull artix repos" | ||||
|     echo "    -a            Don't clone or pull arch repos" | ||||
|     echo "    -b            Don't clone or pull artix repos" | ||||
|     echo '    -i            Import a package from arch repos' | ||||
|     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 '    -n            New remote subrepo and clone it' | ||||
|     echo '    -v            Check if a package is in the artix tree(s)' | ||||
|     echo '    -c            View package depends' | ||||
|     echo '    -x            Exclude testing (only with -i)' | ||||
|     echo '    -y            Exclude staging (only with -i)' | ||||
|     echo '    -z            Include kde & gnome unstable (only with -i)' | ||||
|     echo '    -h            This help' | ||||
|     echo '' | ||||
|     echo '' | ||||
| @@ -238,7 +229,7 @@ usage() { | ||||
|  | ||||
| orig_argv=("$0" "$@") | ||||
|  | ||||
| opts='p:t:g:uwsinzycvh' | ||||
| opts='p:t:g:sinabcvxyzh' | ||||
|  | ||||
| while getopts "${opts}" arg; do | ||||
|     case "${arg}" in | ||||
| @@ -246,14 +237,15 @@ while getopts "${opts}" arg; do | ||||
|         t) TEAM="$OPTARG" ;; | ||||
|         g) GROUP="$OPTARG"; sync_group=true ;; | ||||
|         s) sync=true ;; | ||||
|         z) sync_arch=false ;; | ||||
|         y) sync_artix=false ;; | ||||
|         a) sync_arch=false ;; | ||||
|         b) sync_artix=false ;; | ||||
|         i) import=true ;; | ||||
|         n) createnew=true ;; | ||||
|         w) staging=false ;; | ||||
|         u) unstable=true ;; | ||||
|         c) check=true ;; | ||||
|         v) view=true ;; | ||||
|         x) testing=false ;; | ||||
|         y) staging=false ;; | ||||
|         z) unstable=true ;; | ||||
|         h|?) usage 0 ;; | ||||
|         *) echo "invalid argument '${arg}'"; usage 1 ;; | ||||
|     esac | ||||
| @@ -264,6 +256,8 @@ shift $(($OPTIND - 1)) | ||||
| prepare_dir "${TREE_DIR_ARTIX}" | ||||
| prepare_dir "${TREE_DIR_ARCH}" | ||||
|  | ||||
| set_arch_repos "$testing" "$staging" "$unstable" | ||||
|  | ||||
| ${sync} && sync_repos | ||||
|  | ||||
| ${view} && view_build | ||||
|   | ||||
| @@ -18,6 +18,68 @@ shopt -s extglob | ||||
|  | ||||
| load_makepkg_config | ||||
|  | ||||
| pkgver_equal() { | ||||
|     if [[ $1 = *-* && $2 = *-* ]]; then | ||||
|         # if both versions have a pkgrel, then they must be an exact match | ||||
|         [[ $1 = "$2" ]] | ||||
|     else | ||||
|         # otherwise, trim any pkgrel and compare the bare version. | ||||
|         [[ ${1%%-*} = "${2%%-*}" ]] | ||||
|     fi | ||||
| } | ||||
|  | ||||
| find_cached_package() { | ||||
|     local searchdirs=("$PKGDEST" "$PWD") results=() | ||||
|     local targetname=$1 targetver=$2 targetarch=$3 | ||||
|     local dir pkg pkgbasename name ver rel arch r results | ||||
|  | ||||
|     for dir in "${searchdirs[@]}"; do | ||||
|         [[ -d $dir ]] || continue | ||||
|  | ||||
|         for pkg in "$dir"/*.pkg.tar?(.!(sig|*.*)); do | ||||
|             [[ -f $pkg ]] || continue | ||||
|  | ||||
|             # avoid adding duplicates of the same inode | ||||
|             for r in "${results[@]}"; do | ||||
|                 [[ $r -ef $pkg ]] && continue 2 | ||||
|             done | ||||
|  | ||||
|             # split apart package filename into parts | ||||
|             pkgbasename=${pkg##*/} | ||||
|             pkgbasename=${pkgbasename%.pkg.tar*} | ||||
|  | ||||
|             arch=${pkgbasename##*-} | ||||
|             pkgbasename=${pkgbasename%-"$arch"} | ||||
|  | ||||
|             rel=${pkgbasename##*-} | ||||
|             pkgbasename=${pkgbasename%-"$rel"} | ||||
|  | ||||
|             ver=${pkgbasename##*-} | ||||
|             name=${pkgbasename%-"$ver"} | ||||
|  | ||||
|             if [[ $targetname = "$name" && $targetarch = "$arch" ]] && | ||||
|                 pkgver_equal "$targetver" "$ver-$rel"; then | ||||
|                 results+=("$pkg") | ||||
|             fi | ||||
|         done | ||||
|     done | ||||
|  | ||||
|     case ${#results[*]} in | ||||
|         0) | ||||
|             return 1 | ||||
|         ;; | ||||
|         1) | ||||
|             printf '%s\n' "${results[0]}" | ||||
|             return 0 | ||||
|         ;; | ||||
|         *) | ||||
|             error 'Multiple packages found:' | ||||
|             printf '\t%s\n' "${results[@]}" >&2 | ||||
|             return 1 | ||||
|         ;; | ||||
|     esac | ||||
| } | ||||
|  | ||||
| usage() { | ||||
|     cat <<- _EOF_ | ||||
|         Usage: ${BASH_SOURCE[0]##*/} [OPTIONS] | ||||
|   | ||||
| @@ -14,6 +14,8 @@ | ||||
|  | ||||
| . @libdir@/artools/util-pkg.sh | ||||
|  | ||||
| prepare_artools | ||||
|  | ||||
| get_path(){ | ||||
|     local repo="$1" pkg=trunk/PKGBUILD | ||||
|     if [[ $repo != trunk ]]; then | ||||
| @@ -30,15 +32,30 @@ prepare_commit(){ | ||||
|     [[ ! -d repos/$dest ]] && mkdir repos/$dest | ||||
| } | ||||
|  | ||||
| commit_pkg(){ | ||||
|     local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||
|     if [[ -n ${git_tree} ]];then | ||||
| check_team(){ | ||||
|     if [[ ${REPO_SRC} == "core" && ${REPO_DEST} == "extra" ]] || \ | ||||
|         [[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "core" ]] || \ | ||||
|         [[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "community" ]] || \ | ||||
|         [[ ${REPO_SRC} == "community" && ${REPO_DEST} == "extra" ]] ;then | ||||
|  | ||||
|         cd ${TREE_DIR_ARTIX}/${git_tree} | ||||
|         local org=$(get_pkg_org "${PACKAGE}") | ||||
|         add_repo_to_team "${PACKAGE}" "$org" "${REPO_DEST}" | ||||
|         remove_repo_from_team "${PACKAGE}" "$org" "${REPO_SRC}" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| commit_pkg(){ | ||||
|     local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||
|  | ||||
|     if [[ -n ${artixpath} ]];then | ||||
|  | ||||
|         local group=${artixpath%/*} | ||||
|  | ||||
|         cd ${group} | ||||
|  | ||||
|         local head=$(get_local_head) | ||||
|  | ||||
|         cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE} | ||||
|         cd ${artixpath} | ||||
|  | ||||
|         local pkgbuild=$(get_path "${REPO_SRC}") | ||||
|  | ||||
| @@ -65,19 +82,18 @@ commit_pkg(){ | ||||
|             commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}" | ||||
|             msg "Action: %s" "$commit_msg" | ||||
|             git add . | ||||
|  | ||||
|         fi | ||||
|         git commit -m "$commit_msg" | ||||
|  | ||||
|         cd ${TREE_DIR_ARTIX}/${git_tree} | ||||
|         cd ${group} | ||||
|  | ||||
|         ${push} && pull_tree "${git_tree}" "$head" | ||||
|         ${push} && pull_tree "${group##*/}" "$head" | ||||
|  | ||||
| #         subrepo_pull "${PACKAGE}" | ||||
|         subrepo_push "${PACKAGE}" | ||||
|         subrepo_clean "${PACKAGE}" | ||||
|  | ||||
|         ${push} && push_tree "${git_tree}" | ||||
|         ${push} && push_tree "${group##*/}" | ||||
|  | ||||
|         git prune | ||||
|     else | ||||
| @@ -85,15 +101,17 @@ commit_pkg(){ | ||||
|     fi | ||||
| } | ||||
|  | ||||
| symlink_commit_pkg(){ | ||||
|     local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||
|     if [[ -n ${git_tree} ]];then | ||||
| repo_commit_pkg(){ | ||||
|     local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||
|     if [[ -n ${artixpath} ]];then | ||||
|  | ||||
|         cd ${TREE_DIR_ARTIX}/${git_tree} | ||||
|         local group=${artixpath%/*} | ||||
|  | ||||
|         cd ${group} | ||||
|  | ||||
|         local head=$(get_local_head) | ||||
|  | ||||
|         cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE} | ||||
|         cd ${artixpath} | ||||
|  | ||||
|         local pkgbuild=$(get_path "${REPO_SRC}") | ||||
|  | ||||
| @@ -125,22 +143,36 @@ symlink_commit_pkg(){ | ||||
|         git add . | ||||
|         git commit -m "$commit_msg" | ||||
|  | ||||
|         cd ${TREE_DIR_ARTIX}/${git_tree} | ||||
|         cd ${group} | ||||
|  | ||||
|         ${push} && pull_tree "${git_tree}" "$head" | ||||
|         ${push} && pull_tree "${group##*/}" "$head" | ||||
|  | ||||
| #         subrepo_pull "${PACKAGE}" | ||||
|         subrepo_push "${PACKAGE}" | ||||
|         subrepo_clean "${PACKAGE}" | ||||
|  | ||||
|         ${push} && push_tree "${git_tree}" | ||||
|         ${push} && push_tree "${group##*/}" | ||||
|  | ||||
|         git prune | ||||
|  | ||||
|         check_team | ||||
|     else | ||||
|         error "Package '%s' does not exist!" "${PACKAGE}" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| is_valid_repo(){ | ||||
|     local src="$1" cases= | ||||
|     set_arch_repos true true true | ||||
|     for r in ${ARCH_REPOS[@]};do | ||||
|         cases=${cases:-}${cases:+|}${r} | ||||
|     done | ||||
|     eval "case $src in | ||||
|         ${cases}|trunk) return 0 ;; | ||||
|         *) return 1 ;; | ||||
|     esac" | ||||
| } | ||||
|  | ||||
| load_makepkg_config | ||||
|  | ||||
| REPO_SRC='trunk' | ||||
| @@ -184,7 +216,7 @@ if $(is_valid_repo "${REPO_SRC}");then | ||||
|     if [[ "${cmd}" == 'commitpkg' ]];then | ||||
|         commit_pkg | ||||
|     else | ||||
|         symlink_commit_pkg | ||||
|         repo_commit_pkg | ||||
|     fi | ||||
| else | ||||
|     error "source repository '%s' is not valid!" "${REPO_SRC}" | ||||
|   | ||||
| @@ -14,116 +14,128 @@ | ||||
|  | ||||
| . @libdir@/artools/util-pkg.sh | ||||
|  | ||||
| compare(){ | ||||
|     local pkgpath="$1" group="$2" | ||||
| prepare_artools | ||||
|  | ||||
| get_import_path(){ | ||||
|     local pkg="$1" import_path= | ||||
|  | ||||
|     for tree in ${TREE_NAMES_ARCH[@]};do | ||||
|         [[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg | ||||
|     done | ||||
|     echo $import_path | ||||
| } | ||||
|  | ||||
| compare_m(){ | ||||
|     local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4" | ||||
|  | ||||
|     local result=$(vercmp "$artixver" "$archver") | ||||
|     if [[ $artixrepo == *testing* ]] || [[ $artixrepo == *staging* ]]; then | ||||
|         if [[ "$archrepo" == "$artixrepo"  ]]; then | ||||
|             msg_row "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}" | ||||
|         else | ||||
|             msg_row_notify "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}" | ||||
|             if [[ -n "$archrepo" ]]; then | ||||
|                 printf "%s\n" "${archrepo%-*}:${artixrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list | ||||
|             fi | ||||
|         fi | ||||
|  | ||||
|     fi | ||||
| } | ||||
|  | ||||
| compare_u(){ | ||||
|     local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4" | ||||
|  | ||||
|     local result=$(vercmp "$artixver" "$archver") | ||||
|     if [ $result -eq -1 ];then | ||||
|         msg_row_upgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}" | ||||
|         printf "%s\n" "${archrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list | ||||
|     fi | ||||
| } | ||||
|  | ||||
| compare_d(){ | ||||
|     local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4" | ||||
|  | ||||
|     local result=$(vercmp "$artixver" "$archver") | ||||
|     if [ $result -eq 1 ];then | ||||
|         if [[ -n "$archver" ]] && [[ -n "$archrepo" ]];then | ||||
|             msg_row_downgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}" | ||||
|         fi | ||||
|     fi | ||||
| } | ||||
|  | ||||
| pre_compare(){ | ||||
|     local func="$1" pkgpath="$2" | ||||
|     local group="${pkgpath%/*}" | ||||
|     group=${group##*/} | ||||
|     local pkg=${pkgpath##*/} | ||||
|     local artixrepo=$(find_repo "$pkgpath" "${staging}" "${unstable}") | ||||
|     local artixshow=${artixrepo%-*} | ||||
|     local artixrepo=$(find_repo "$pkgpath") | ||||
|     local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD | ||||
|  | ||||
|     if [[ -f $pkgbuild ]];then | ||||
|  | ||||
|         . $pkgbuild 2>/dev/null | ||||
|         local artixver=$(get_full_version) | ||||
|  | ||||
|         local archpath=$(get_import_path $pkg) | ||||
|  | ||||
|         local archrepo=$(find_repo "$archpath" "${staging}" "${unstable}") | ||||
|  | ||||
|         local archshow=${archrepo%-*} | ||||
|         local archrepo=$(find_repo "${archpath}") | ||||
|         pkgbuild=$archpath/repos/$archrepo/PKGBUILD | ||||
|  | ||||
|         if [[ -f $pkgbuild ]];then | ||||
|         if [[ -f "$pkgbuild" ]];then | ||||
|             . $pkgbuild 2>/dev/null | ||||
|             local archver=$(get_full_version) | ||||
|         fi | ||||
|  | ||||
|         local result=$(vercmp "$artixver" "$archver") | ||||
|         "$func" "$artixver" "$artixrepo" "$archver" "$archrepo" | ||||
|  | ||||
|         local repomatch=false | ||||
|         [[ "$archrepo" == "$artixrepo" ]] && repomatch=true | ||||
|  | ||||
|         if ${move};then | ||||
|  | ||||
|             if [ $result -gt -1 ];then | ||||
|                 case $artixrepo in | ||||
|                     *testing*|*staging*) | ||||
|                         if $repomatch;then | ||||
|                             msg_row "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}" | ||||
|                         else | ||||
|                             msg_row_notify "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}" | ||||
|  | ||||
|                             if [[ -n "$archshow" ]]; then | ||||
|                                 printf "%s\n" "$archshow:$artixshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list | ||||
|                             fi | ||||
|                         fi | ||||
|                     ;; | ||||
|                 esac | ||||
|             fi | ||||
|  | ||||
|         elif ${upgrades};then | ||||
|  | ||||
|             if [ $result -eq -1 ];then | ||||
|                 msg_row_upgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}" | ||||
|  | ||||
|                 printf "%s\n" "$archshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list | ||||
|             fi | ||||
|  | ||||
|         elif ${downgrades};then | ||||
|  | ||||
|             if [ $result -eq 1 ];then | ||||
|                 if [[ -n $archver ]] && [[ -n $archrepo ]];then | ||||
|                     msg_row_downgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}" | ||||
|                 fi | ||||
|             fi | ||||
|  | ||||
|         fi | ||||
|         unset pkgver epoch pkgrel artixver archver pkgbuild archpath | ||||
|  | ||||
|     fi | ||||
| } | ||||
|  | ||||
| is_db_entry() { | ||||
|     local pkgname="$1" repo="$(arch2artix $2)" | ||||
|     if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then | ||||
|         return 0 | ||||
|     fi | ||||
|     return 1 | ||||
| compare_upgrades(){ | ||||
|     local pkgpath="${1%/*}" | ||||
|     pre_compare compare_u "$pkgpath" | ||||
| } | ||||
|  | ||||
| check_db(){ | ||||
|     local pkgpath="$1" | ||||
|     local pkg=${pkgpath##*/} | ||||
|     local sarch=(any ${ARCH}) | ||||
|     local arch_repos=$(arch_repos "${staging}" "${unstable}") | ||||
| compare_downgrades(){ | ||||
|     local pkgpath="${1%/*}" | ||||
|     pre_compare compare_d "$pkgpath" | ||||
| } | ||||
|  | ||||
|     for repo in ${arch_repos[@]};do | ||||
| compare_move(){ | ||||
|     local pkgpath="${1%/*}" | ||||
|     pre_compare compare_m "$pkgpath" | ||||
| } | ||||
|  | ||||
|         for a in ${sarch[@]};do | ||||
|  | ||||
|             local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD | ||||
|  | ||||
|             if [[ -f $pkgbuild ]];then | ||||
|  | ||||
|                 . $pkgbuild 2>/dev/null | ||||
|                 local artixver=$(get_full_version) | ||||
|                 local is_entry=false | ||||
|  | ||||
|                 for name in ${pkgname[@]};do | ||||
|  | ||||
|                     if is_db_entry "$name-$artixver" "$repo";then | ||||
|                         is_entry=true | ||||
|                     fi | ||||
|                     if ! $is_entry; then | ||||
|                         msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry" | ||||
|                     fi | ||||
|                 done | ||||
|                 unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase | ||||
|             fi | ||||
| tree_loop(){ | ||||
|     local func="$1" | ||||
|     for tree in ${TREE_NAMES_ARTIX[@]};do | ||||
|         local pkgs=$(find ${TREE_DIR_ARTIX}/$tree -name trunk) | ||||
|         for package in ${pkgs[@]}; do | ||||
|             "$func" "$package" | ||||
|         done | ||||
|     done | ||||
| } | ||||
|  | ||||
| show_compare_header(){ | ||||
|     msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group" | ||||
| } | ||||
|  | ||||
| show_upgrades_table(){ | ||||
|     show_compare_header | ||||
|     [[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]] && rm ${TREE_DIR_ARTIX}/pkg_upgrades.list | ||||
|     tree_loop compare_upgrades | ||||
| } | ||||
|  | ||||
| show_downgrades_table(){ | ||||
|     show_compare_header | ||||
|     tree_loop compare_downgrades | ||||
| } | ||||
|  | ||||
| show_move_table(){ | ||||
|     show_compare_header | ||||
|     [[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]] && rm ${TREE_DIR_ARTIX}/pkg_moves.list | ||||
|     tree_loop compare_move | ||||
| } | ||||
|  | ||||
| update_db_cache(){ | ||||
|     msg "Updating database cache" | ||||
|     for repo in "${searchrepos[@]}"; do | ||||
| @@ -146,80 +158,125 @@ query_db() { | ||||
|                 read -r match | ||||
|                 pkg=${pkg#${db}} | ||||
|                 pkg="${pkg%/*}" | ||||
|  | ||||
|                 msg_row "${tableQ}" "${repo}" "${pkg}" "${match}" | ||||
|             done < <(grep -rZ "${library}" "${db}") | sort -u | ||||
|         fi | ||||
|     done | ||||
|     exit 0 | ||||
| } | ||||
|  | ||||
| show_version_table(){ | ||||
| show_lib_table() { | ||||
|     ${sync} && update_db_cache | ||||
|     msg_table_header "${tableQ}" "Repo" "Package" "Library" | ||||
|     query_db | ||||
| } | ||||
|  | ||||
|     if ${check};then | ||||
|         ${sync} && update_db_cache | ||||
|         msg_table_header "${tableU}" "Repo" "Package" "Version" "Database" | ||||
|     elif ${query};then | ||||
|         ${sync} && update_db_cache | ||||
|         msg_table_header "${tableQ}" "Repo" "Package" "Library" | ||||
|         query_db | ||||
|     else | ||||
|         msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group" | ||||
| is_db_entry() { | ||||
|     local pkgname="$1" repo="${REPOS[$2]}" | ||||
|  | ||||
|     if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then | ||||
|         return 0 | ||||
|     fi | ||||
|     return 1 | ||||
| } | ||||
|  | ||||
|     if ${move} && [[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]]; then | ||||
|         rm ${TREE_DIR_ARTIX}/pkg_moves.list | ||||
|     elif ${upgrades} && [[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]]; then | ||||
|         rm ${TREE_DIR_ARTIX}/pkg_upgrades.list | ||||
|     fi | ||||
| check_db(){ | ||||
|     local pkgpath="${1%/*}" | ||||
|     local pkg=${pkgpath##*/} | ||||
|     local sarch=(any ${ARCH}) | ||||
|  | ||||
|     for tree in ${TREE_NAMES_ARTIX[@]};do | ||||
|         local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d) | ||||
|         for package in ${git[@]}; do | ||||
|             if ${check};then | ||||
|                 check_db "$package" | ||||
|             else | ||||
|                 compare "$package" "$tree" | ||||
|     for repo in ${ARCH_REPOS[@]};do | ||||
|         for a in ${sarch[@]};do | ||||
|  | ||||
|             local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD | ||||
|  | ||||
|             if [[ -f $pkgbuild ]];then | ||||
|  | ||||
|                 . $pkgbuild 2>/dev/null | ||||
|                 local artixver=$(get_full_version) | ||||
|  | ||||
|                 local is_entry=false | ||||
|  | ||||
|                 for name in ${pkgname[@]};do | ||||
|  | ||||
|                     if is_db_entry "$name-$artixver" "$repo";then | ||||
|                         is_entry=true | ||||
|                     fi | ||||
|                     if ! $is_entry;then | ||||
|                         msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry" | ||||
|                     fi | ||||
|                 done | ||||
|                 unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase | ||||
|             fi | ||||
|         done | ||||
|     done | ||||
| } | ||||
|  | ||||
| show_db_table(){ | ||||
|     ${sync} && update_db_cache | ||||
|     msg_table_header "${tableU}" "Repo" "Package" "Version" "Database" | ||||
|     tree_loop check_db | ||||
| } | ||||
|  | ||||
| db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools" | ||||
|  | ||||
| load_makepkg_config | ||||
|  | ||||
| unstable=false | ||||
| testing=true | ||||
| staging=true | ||||
| unstable=false | ||||
|  | ||||
| upgrades=false | ||||
| downgrades=false | ||||
| move=false | ||||
| check=false | ||||
| sync=false | ||||
| query=false | ||||
|  | ||||
| artix_repos=( | ||||
|     'goblins' 'gremlins' 'system' 'world' | ||||
|     'galaxy-goblins' 'galaxy-gremlins' 'galaxy' | ||||
|     'lib32-goblins' 'lib32-gremlins' 'lib32' | ||||
|     'gnome-wobble' 'kde-wobble' | ||||
| ) | ||||
| sync=false | ||||
| check=false | ||||
| query=false | ||||
|  | ||||
| readonly table="%-18s %-18s %-25s %-27s %-27s %-10s" | ||||
| readonly tableU="%-20s %-35s %-30s %-10s" | ||||
| readonly tableQ="%-20s %-45s %s" | ||||
|  | ||||
| searchrepos=(${artix_repos[@]}) | ||||
| declare -A REPOS=( | ||||
|     [core]=system | ||||
|     [extra]=world | ||||
|     [community]=galaxy | ||||
|     [multilib]=lib32 | ||||
|     [testing]=gremlins | ||||
|     [staging]=goblins | ||||
|     [community-testing]=galaxy-gremlins | ||||
|     [community-staging]=galaxy-goblins | ||||
|     [multilib-testing]=lib32-gremlins | ||||
|     [multilib-staging]=lib32-goblins | ||||
|     [kde-unstable]=kde-wobble | ||||
|     [gnome-unstable]=gnome-wobble | ||||
| ) | ||||
|  | ||||
| searchrepos=( | ||||
|     ${REPOS[kde-unstable]} | ||||
|     ${REPOS[gnome-unstable]} | ||||
|     ${REPOS[staging]} | ||||
|     ${REPOS[testing]} | ||||
|     ${REPOS[core]} | ||||
|     ${REPOS[extra]} | ||||
|     ${REPOS[community-staging]} | ||||
|     ${REPOS[community-testing]} | ||||
|     ${REPOS[community]} | ||||
|     ${REPOS[multilib-staging]} | ||||
|     ${REPOS[multilib-testing]} | ||||
|     ${REPOS[multilib]} | ||||
| ) | ||||
|  | ||||
| usage() { | ||||
|     echo "Usage: ${0##*/} [options] (with -q [libname])" | ||||
|     echo '    -u            Show upgrade packages' | ||||
|     echo '    -d            Show downgrade packages' | ||||
|     echo '    -m            Show packages to move' | ||||
|     echo "    -x            Don't inlcude staging packages" | ||||
|     echo '    -y            Include unstable kde and gnome' | ||||
|     echo '    -c            Check repos' | ||||
|     echo "    -x            Don't inlcude testing packages" | ||||
|     echo "    -y            Don't inlcude staging packages" | ||||
|     echo '    -z            Include unstable kde and gnome' | ||||
|     echo "    -s            Sync repo databases" | ||||
|     echo '    -c            Check repos' | ||||
|     echo "    -q            Query repo databases for so libs" | ||||
|     echo '    -r <repo>     Repo name to query' | ||||
|     echo '                  [default: all]' | ||||
| @@ -231,19 +288,20 @@ usage() { | ||||
|  | ||||
| orig_argv=("$0" "$@") | ||||
|  | ||||
| opts='r:qcsudmxyh' | ||||
| opts='r:qcsudmxyzh' | ||||
|  | ||||
| while getopts "${opts}" arg; do | ||||
|     case "${arg}" in | ||||
|         u) upgrades=true ;; | ||||
|         d) downgrades=true ;; | ||||
|         m) move=true ;; | ||||
|         x) staging=false ;; | ||||
|         y) unstable=true ;; | ||||
|         c) check=true ;; | ||||
|         s) sync=true ;; | ||||
|         c) check=true ;; | ||||
|         q) query=true ;; | ||||
|         r) searchrepos=("$OPTARG") ;; | ||||
|         x) testing=false ;; | ||||
|         y) staging=false ;; | ||||
|         z) unstable=true ;; | ||||
|         h|?) usage 0 ;; | ||||
|         *) echo "invalid argument '${arg}'"; usage 1 ;; | ||||
|     esac | ||||
| @@ -253,4 +311,14 @@ shift $(($OPTIND - 1)) | ||||
|  | ||||
| library="$1"; shift | ||||
|  | ||||
| show_version_table | ||||
| set_arch_repos "$testing" "$staging" "$unstable" | ||||
|  | ||||
| ${move} && show_move_table | ||||
|  | ||||
| ${upgrades} && show_upgrades_table | ||||
|  | ||||
| ${downgrades} && show_downgrades_table | ||||
|  | ||||
| ${check} && show_db_table | ||||
|  | ||||
| ${query} && show_lib_table | ||||
|   | ||||
| @@ -14,34 +14,13 @@ | ||||
|  | ||||
| . @libdir@/artools/util-pkg.sh | ||||
|  | ||||
| find_cached_pkgfile() { | ||||
|     local searchdirs=("$PKGDEST" "$PWD") results=() | ||||
|     local pkg="$1" | ||||
|     for dir in "${searchdirs[@]}"; do | ||||
|         [[ -d $dir ]] || continue | ||||
|         results+=$(find "$dir" -type f -name "$pkg") | ||||
|     done | ||||
|     case ${#results[*]} in | ||||
|         0) | ||||
|             return 1 | ||||
|         ;; | ||||
|         1) | ||||
|             printf '%s\n' "${results[0]}" | ||||
|             return 0 | ||||
|         ;; | ||||
|         *) | ||||
|             error 'Multiple packages found:' | ||||
|             printf '\t%s\n' "${results[@]}" >&2 | ||||
|             return 1 | ||||
|         ;; | ||||
|     esac | ||||
| } | ||||
| prepare_artools | ||||
|  | ||||
| get_pkgbasename(){ | ||||
|     local pkg="$1" | ||||
|     local pkgbasename name ver rel arch | ||||
|  | ||||
|     pkgbasename=${pkg%.pkg.tar.?z} | ||||
|     pkgbasename=${pkg%.pkg.tar*} | ||||
|     arch=${pkgbasename##*-} | ||||
|     pkgbasename=${pkgbasename%-"$arch"} | ||||
|  | ||||
| @@ -54,86 +33,41 @@ get_pkgbasename(){ | ||||
|     echo $name | ||||
| } | ||||
|  | ||||
| update_repo2(){ | ||||
|     local repo="$1" | ||||
|     local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=() | ||||
|  | ||||
|     for name in ${passfiles[@]}; do | ||||
|         if pkgfile=$(find_cached_pkgfile "$name");then | ||||
|             info "Found: %s" "$name" | ||||
|             if ${add_pkg};then | ||||
|                 local action='add' | ||||
|                 packages+=("$name") | ||||
|                 if ${sign_pkg};then | ||||
|                     [[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig | ||||
|                     signfile ${pkgfile} | ||||
|                 fi | ||||
|                 ln -sf ${pkgfile}{,.sig} $repo_path/ | ||||
|             elif ${del_pkg};then | ||||
|                 local action='remove' | ||||
|                 packages+=("$(get_pkgbasename "$name")") | ||||
|                 [[ -e $repo_path/$name ]] && rm $repo_path/$name | ||||
|                 [[ -e $repo_path/$name.sig ]] && rm $repo_path/$name.sig | ||||
|             fi | ||||
|         fi | ||||
|     done | ||||
|     cd $repo_path | ||||
|     if [[ -n $action ]]; then | ||||
|         repo-$action -R $repo.${PKGDBEXT} ${packages[@]} | ||||
|         ${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]} | ||||
|     fi | ||||
|  | ||||
|     return 0 | ||||
| add(){ | ||||
|     packages+=("$pkg.$ext") | ||||
|     action='add' | ||||
|     ln -sf "${pkgfile}"{,.sig} "$repo_path"/ | ||||
| } | ||||
|  | ||||
| update_repo(){ | ||||
|     local repo="$1" pkgfile ver | ||||
|     local repo_path=${REPOS_ROOT}/$repo/os/${ARCH} packages=() | ||||
| remove(){ | ||||
|     local to_remove=$(get_pkgbasename "$pkg.$ext") | ||||
|     packages+=("$to_remove") | ||||
|     action='remove' | ||||
|     rm "$repo_path"/"$to_remove"*pkg.tar* | ||||
| } | ||||
|  | ||||
|     . PKGBUILD | ||||
|  | ||||
|     local pkgsearch=(${pkgname[@]}) | ||||
|     if check_option "debug" "y"; then | ||||
|         pkgbase=${pkgbase:-${pkgname[@]}} | ||||
|         pkgsearch+=("${pkgbase}-debug") | ||||
|     fi | ||||
|  | ||||
|     for name in ${pkgsearch[@]}; do | ||||
|         pkgarch=$(get_pkg_arch "$name") | ||||
|         ver=$(get_full_version) | ||||
|         if pkgfile=$(find_cached_package "$name" "$ver" "$pkgarch");then | ||||
|             local pkg=${pkgfile##*/} | ||||
|             info "Found: %s" "$pkg" | ||||
|             if ${add_pkg};then | ||||
|                 local action='add' | ||||
|                 packages+=("$pkg") | ||||
|                 if ${sign_pkg};then | ||||
|                     [[ -e ${pkgfile}.sig ]] && rm ${pkgfile}.sig | ||||
|                     signfile ${pkgfile} | ||||
|                 fi | ||||
|                 ln -sf ${pkgfile}{,.sig} $repo_path/ | ||||
|             elif ${del_pkg};then | ||||
|                 local action='remove' | ||||
|                 packages+=("$name") | ||||
|                 [[ -e $repo_path/$pkg ]] && rm $repo_path/$pkg | ||||
|                 [[ -e $repo_path/$pkg.sig ]] && rm $repo_path/$pkg.sig | ||||
| repo_action(){ | ||||
|     local packages=() action= func="$1" | ||||
|     for pkgname in ${passfiles[@]}; do | ||||
|         pkg=${pkgname%.*} | ||||
|         for ext in zst xz;do | ||||
|             if pkgfile=$(find_cached_pkgfile "$pkg.$ext");then | ||||
|                 msg "Found: %s" "${pkgfile}" | ||||
|                 "$func" | ||||
|             fi | ||||
|         fi | ||||
|         done | ||||
|     done | ||||
|     cd $repo_path | ||||
|     if [[ -n $action ]]; then | ||||
|         repo-$action -R $repo.${PKGDBEXT} ${packages[@]} | ||||
|         ${linksdb} && links-$action $repo.${LINKSDBEXT} ${packages[@]} | ||||
|     if [[ -n "$action" ]]; then | ||||
|         repo-"$action" -R "${dest_repo}"."${PKGDBEXT}" "${packages[@]}" | ||||
|         ${linksdb} && links-"$action" "${dest_repo}"."${LINKSDBEXT}" "${packages[@]}" | ||||
|     fi | ||||
|  | ||||
|     return 0 | ||||
| } | ||||
|  | ||||
| load_makepkg_config | ||||
|  | ||||
| add_pkg=false | ||||
| del_pkg=false | ||||
| sign_pkg=false | ||||
| rm_pkg=false | ||||
| linksdb=false | ||||
|  | ||||
| cmd=${0##*/} | ||||
| @@ -141,24 +75,24 @@ dest_repo=${cmd#*-} | ||||
|  | ||||
| usage() { | ||||
|     echo "Usage: ${cmd} [options]" | ||||
|     echo '    -d <dest>          Destination repository' | ||||
|     echo '    -a                 Add package(s) to repository' | ||||
|     echo '    -r                 Remove package(s) from repository' | ||||
|     echo '    -l                 Use links db' | ||||
|     echo '    -s                 Sign package(s)' | ||||
|     echo '    -h                 This help' | ||||
|     echo '' | ||||
|     echo '' | ||||
|     exit $1 | ||||
| } | ||||
|  | ||||
| opts='arlsh' | ||||
| opts='arlhd:' | ||||
|  | ||||
| while getopts "${opts}" arg; do | ||||
|     case "${arg}" in | ||||
|         a) add_pkg=true; del_pkg=false ;; | ||||
|         r) del_pkg=true; add_pkg=false ;; | ||||
|         d) dest_repo="$OPTARG" ;; | ||||
|         a) add_pkg=true; rm_pkg=false ;; | ||||
|         r) rm_pkg=true; add_pkg=false ;; | ||||
|         l) linksdb=true ;; | ||||
|         s) sign_pkg=true ;; | ||||
|         h|?) usage 0 ;; | ||||
|         *) echo "invalid argument '${arg}'"; usage 1 ;; | ||||
|     esac | ||||
| @@ -170,8 +104,13 @@ passfiles="$@" | ||||
|  | ||||
| prepare_dir "${REPOS_ROOT}" | ||||
|  | ||||
| repo_path=${REPOS_ROOT}/${dest_repo}/os/${ARCH} | ||||
|  | ||||
| if [[ -n ${passfiles[@]} ]]; then | ||||
|     update_repo2 "${dest_repo}" | ||||
| else | ||||
|     update_repo "${dest_repo}" | ||||
|     if ${add_pkg}; then | ||||
|         repo_action add | ||||
|     fi | ||||
|     if ${rm_pkg}; then | ||||
|         repo_action remove | ||||
|     fi | ||||
| fi | ||||
|   | ||||
| @@ -12,7 +12,6 @@ | ||||
| # 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 | ||||
|   | ||||
| @@ -377,11 +377,7 @@ if chroot-run \ | ||||
|     "$copydir" \ | ||||
|     /chrootbuild "${makepkg_args[@]}" | ||||
| then | ||||
|     pkgnames=() | ||||
|     for pkgfile in "$copydir"/pkgdest/*; do | ||||
|         pkgfile=${pkgfile##*/}; | ||||
|         pkgnames+=("${pkgfile%-*-*-*}"); | ||||
|     done | ||||
|     mapfile -t pkgnames < <(sudo -u "$makepkg_user" bash -c 'source PKGBUILD; printf "%s\n" "${pkgname[@]}"') | ||||
|     move_products | ||||
| else | ||||
|     (( ret += 1 )) | ||||
| @@ -398,13 +394,28 @@ if (( ret != 0 )); then | ||||
| else | ||||
|     if (( run_checkpkg )); then | ||||
|         msg "Running checkpkg" | ||||
|         msg2 "Downloading current versions" | ||||
|         if pacman --noconfirm -Swdd --logfile /dev/null "${pkgnames[@]}"; then | ||||
|             msg2 "Checking packages" | ||||
|             sudo -u "$makepkg_user" checkpkg --rmdir --warn | ||||
|         else | ||||
|             warning "Skipped checkpkg due to missing packages" | ||||
|  | ||||
|         mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \ | ||||
|             --dbpath "$copydir"/var/lib/pacman \ | ||||
|             -Sddp "${pkgnames[@]}") | ||||
|  | ||||
|         if ! wait $!; then | ||||
|             warning "Skipped checkpkg due to missing repo packages" | ||||
|             exit 0 | ||||
|         fi | ||||
|         # download package files if any non-local location exists | ||||
|         for remotepkg in "${remotepkgs[@]}"; do | ||||
|             if [[ $remotepkg != file://* ]]; then | ||||
|                 msg2 "Downloading current versions" | ||||
|                 chroot-run "$copydir" pacman --noconfirm -Swdd "${pkgnames[@]}" | ||||
|                 mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \ | ||||
|                     --dbpath "$copydir"/var/lib/pacman \ | ||||
|                     -Sddp "${pkgnames[@]}") | ||||
|                 break | ||||
|             fi | ||||
|         done | ||||
|         msg2 "Checking packages" | ||||
|         sudo -u "$makepkg_user" checkpkg --rmdir --warn "${remotepkgs[@]/#file:\/\//}" | ||||
|     fi | ||||
|     true | ||||
| fi | ||||
|   | ||||
							
								
								
									
										46
									
								
								bin/pkg/signpkg.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								bin/pkg/signpkg.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| #!/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-pkg.sh | ||||
|  | ||||
| prepare_artools | ||||
|  | ||||
| load_makepkg_config | ||||
|  | ||||
| passfiles="$@" | ||||
|  | ||||
| sign_pkg(){ | ||||
|     local file_to_sign="$1" | ||||
|  | ||||
|     if [ ! -e "$file_to_sign" ]; then | ||||
|         error "%s does not exist!" "$file_to_sign" | ||||
|         exit 1 | ||||
|     fi | ||||
|  | ||||
|     if [[ -n "${BUILDBOT_GPGP}" ]]; then | ||||
|         msg2 "Signing [%s]" "${file_to_sign##*/}" | ||||
|         gpg --batch --passphrase "${BUILDBOT_GPGP}" --detach-sign "$file_to_sign" | ||||
|     else | ||||
|         msg2 "Signing [%s] with key %s" "${file_to_sign##*/}" "${GPGKEY}..." | ||||
|         gpg --detach-sign --use-agent -u "${GPGKEY}" "$file_to_sign" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| for pkg in ${passfiles[@]}; do | ||||
|     if pkgfile=$(find_cached_pkgfile "$pkg");then | ||||
|         msg "Found: %s" "${pkgfile}" | ||||
|         [[ -e "${pkgfile}".sig ]] && rm "${pkgfile}".sig | ||||
|         sign_pkg "${pkgfile}" | ||||
|     fi | ||||
| done | ||||
| @@ -14,6 +14,8 @@ | ||||
| #         packages | ||||
| #         community | ||||
| #         packages-kernel | ||||
| #         packages-net | ||||
| #         packages-gfx | ||||
| #         packages-openrc | ||||
| #         packages-runit | ||||
| #         packages-s6 | ||||
| @@ -32,6 +34,7 @@ | ||||
| #         packages-mate | ||||
| #         packages-kde | ||||
| #         packages-xfce | ||||
| #         packages-wm | ||||
| # ) | ||||
|  | ||||
| # HOST_TREE_ARCH=git://git.archlinux.org/svntogit | ||||
|   | ||||
| @@ -132,7 +132,7 @@ DBGSRCDIR="/usr/src/debug" | ||||
| COMPRESSGZ=(gzip -c -f -n) | ||||
| COMPRESSBZ2=(bzip2 -c -f) | ||||
| COMPRESSXZ=(xz -c -z -) | ||||
| COMPRESSZST=(zstd -c -z -q -) | ||||
| COMPRESSZST=(zstd -c -T0 --ultra -20 -) | ||||
| COMPRESSLRZ=(lrzip -q) | ||||
| COMPRESSLZO=(lzop -q) | ||||
| COMPRESSZ=(compress -c -f) | ||||
| @@ -143,7 +143,7 @@ COMPRESSLZ=(lzip -c -f) | ||||
| # EXTENSION DEFAULTS | ||||
| ######################################################################### | ||||
| # | ||||
| PKGEXT='.pkg.tar.xz' | ||||
| PKGEXT='.pkg.tar.zst' | ||||
| SRCEXT='.src.tar.gz' | ||||
|  | ||||
| # vim: set ft=sh ts=2 sw=2 et: | ||||
|   | ||||
| @@ -146,7 +146,7 @@ run_hook() { | ||||
|  | ||||
|     lower_dir='' | ||||
|     live_root="/run/artix" | ||||
|     bootmnt="/run/bootmnt" | ||||
|     bootmnt="${live_root}/bootmnt" | ||||
|     overlay_root="${live_root}/overlay_root" | ||||
|     cow="${live_root}/cowspace" | ||||
|     cp2ram="${live_root}/copytoram" | ||||
|   | ||||
| @@ -15,7 +15,7 @@ | ||||
| # export LC_MESSAGES=C | ||||
| export LANG=C | ||||
|  | ||||
| if [[ -t 2 ]]; then | ||||
| if [[ -t 2 && "$TERM" != dumb ]]; then | ||||
|     colorize | ||||
| else | ||||
|     declare -gr ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW='' | ||||
|   | ||||
| @@ -36,12 +36,20 @@ add_svc_runit(){ | ||||
| add_svc_s6(){ | ||||
|     local mnt="$1" names="$2" valid="" rlvl="${3:-default}" | ||||
|     for svc in $names; do | ||||
|         if [[ -d $mnt/etc/s6/sv/$svc ]]; then | ||||
|         error=false | ||||
|         chroot $mnt s6-rc-db -c /etc/s6/rc/compiled type $svc &> /dev/null || error=true | ||||
|         if [ $? == 0 ] && [[ $error == false ]]; then | ||||
|             msg2 "Setting %s ..." "$svc" | ||||
|             valid=${valid:-}${valid:+' '}${svc} | ||||
|         fi | ||||
|     done | ||||
|     chroot $mnt s6-rc-bundle -c /etc/s6/rc/compiled add $rlvl $valid | ||||
|  | ||||
|     # rebuild s6-linux-init binaries | ||||
|     chroot $mnt rm -r /etc/s6/current | ||||
|     chroot $mnt s6-linux-init-maker -1 -N -f /etc/s6/skel -G "/usr/bin/agetty -L -8 tty1 115200" -c /etc/s6/current /etc/s6/current | ||||
|     chroot $mnt mv /etc/s6/current/bin/init /etc/s6/current/bin/s6-init | ||||
|     chroot $mnt cp -a /etc/s6/current/bin /usr | ||||
| } | ||||
|  | ||||
| set_xdm(){ | ||||
| @@ -143,10 +151,10 @@ write_unpackfs() { | ||||
|     local yaml=$(write_yaml_header) | ||||
|     yaml+=$(write_yaml_map 0 'unpack') | ||||
| #     if ${persist}; then | ||||
| #         yaml+=$(write_yaml_seq_map 2 'source' '"/run/bootmnt/LiveOS/rootfs.img"') | ||||
| #         yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"') | ||||
| #         yaml+=$(write_yaml_map 4 'sourcefs' '"ext4"') | ||||
| #     else | ||||
|     yaml+=$(write_yaml_seq_map 2 'source' '"/run/bootmnt/LiveOS/rootfs.img"') | ||||
|     yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"') | ||||
|     yaml+=$(write_yaml_map 4 'sourcefs' '"squashfs"') | ||||
| #     fi | ||||
|     yaml+=$(write_yaml_map 4 'destination' '""') | ||||
| @@ -167,7 +175,7 @@ configure_calamares(){ | ||||
|     fi | ||||
| } | ||||
|  | ||||
| configure_image(){ | ||||
| configure_chroot(){ | ||||
|     local fs="$1" | ||||
|     msg "Configuring [%s]" "${fs##*/}" | ||||
|     configure_hosts "$fs" | ||||
| @@ -179,3 +187,40 @@ configure_image(){ | ||||
|     write_live_session_conf > "$fs/etc/artools/live.conf" | ||||
|     msg "Done configuring [%s]" "${fs##*/}" | ||||
| } | ||||
|  | ||||
| clean_up_chroot(){ | ||||
|     local path mnt="$1" | ||||
|     msg2 "Cleaning [%s]" "${mnt##*/}" | ||||
|  | ||||
|     path=$mnt/boot | ||||
|     if [[ -d "$path" ]]; then | ||||
|         find "$path" -name 'initramfs*.img' -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/lib/pacman/sync | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/cache/pacman/pkg | ||||
|     if [[ -d $path ]]; then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/log | ||||
|     if [[ -d $path ]]; then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/tmp | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -mindepth 1 -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/tmp | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -mindepth 1 -delete &> /dev/null | ||||
|     fi | ||||
|     find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete | ||||
|     if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then | ||||
|         rm $mnt/boot/grub/grub.cfg | ||||
|     fi | ||||
|     if [[ -f "$mnt/etc/machine-id" ]]; then | ||||
|         rm $mnt/etc/machine-id | ||||
|     fi | ||||
| } | ||||
|   | ||||
| @@ -130,12 +130,15 @@ configure_grub(){ | ||||
|  | ||||
| prepare_grub(){ | ||||
|     local platform=i386-pc img='core.img' prefix=/boot/grub | ||||
|     local lib=$1/usr/lib/grub theme=$2/usr/share/grub | ||||
|     local lib="$1"/usr/lib/grub | ||||
|     local theme="$1"/usr/share/grub | ||||
|     local livecfg="$2"/usr/share/grub | ||||
|     local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot | ||||
|  | ||||
|  | ||||
|     prepare_dir ${grub}/${platform} | ||||
|  | ||||
|     cp ${theme}/cfg/*.cfg ${grub} | ||||
|     cp ${livecfg}/cfg/*.cfg ${grub} | ||||
|  | ||||
|     cp ${lib}/${platform}/* ${grub}/${platform} | ||||
|  | ||||
| @@ -158,8 +161,9 @@ prepare_grub(){ | ||||
|     grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660 | ||||
|  | ||||
|     prepare_dir ${grub}/themes | ||||
|     cp -r ${theme}/themes/artix ${grub}/themes/ | ||||
|     cp -r ${theme}/{locales,tz} ${grub} | ||||
|  | ||||
|     cp -r ${theme}/themes/artix ${grub}/themes | ||||
|     cp -r ${livecfg}/{locales,tz} ${grub} | ||||
|  | ||||
|     if [[ -f /usr/share/grub/unicode.pf2 ]];then | ||||
|         msg2 "Copying %s ..." "unicode.pf2" | ||||
|   | ||||
| @@ -72,7 +72,6 @@ make_sfs() { | ||||
|         error "The path %s does not exist" "${sfs_in}" | ||||
|         retrun 1 | ||||
|     fi | ||||
|     local timer=$(get_timer) | ||||
|  | ||||
|     mkdir -p ${iso_root}${live_dir} | ||||
|  | ||||
| @@ -108,7 +107,6 @@ make_sfs() { | ||||
|         fi | ||||
|         ${persist} && rm -r "${work_dir}/embed" | ||||
|     fi | ||||
|     show_elapsed_time "${FUNCNAME}" "${timer_start}" | ||||
| } | ||||
|  | ||||
| get_disturl(){ | ||||
| @@ -146,19 +144,3 @@ assemble_iso(){ | ||||
|         ${iso_root}/ | ||||
| } | ||||
|  | ||||
| make_iso() { | ||||
|     msg "Start [Build ISO]" | ||||
|     touch "${iso_root}/.artix" | ||||
|     make_sfs "${work_dir}/rootfs" | ||||
|     [[ -d "${work_dir}/livefs" ]] && make_sfs "${work_dir}/livefs" | ||||
|  | ||||
|     msg "Making bootable image" | ||||
|     # Sanity checks | ||||
|     [[ ! -d "${iso_root}" ]] && return 1 | ||||
|     if [[ -f "${iso_dir}/${iso_file}" ]]; then | ||||
|         msg2 "Removing existing bootable image..." | ||||
|         rm -rf "${iso_dir}/${iso_file}" | ||||
|     fi | ||||
|     assemble_iso | ||||
|     msg "Done [Build ISO]" | ||||
| } | ||||
|   | ||||
| @@ -37,7 +37,7 @@ track_fs() { | ||||
|     mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}") | ||||
| } | ||||
|  | ||||
| mount_overlay(){ | ||||
| mount_overlayfs(){ | ||||
|     FS_ACTIVE_MOUNTS=() | ||||
|     local lower= upper="$1" work="$2" | ||||
|     mkdir -p "${mnt_dir}/work" | ||||
| @@ -52,7 +52,7 @@ mount_overlay(){ | ||||
|     track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper" | ||||
| } | ||||
|  | ||||
| umount_overlay(){ | ||||
| umount_overlayfs(){ | ||||
|     if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then | ||||
|         info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}" | ||||
|         umount "${FS_ACTIVE_MOUNTS[@]}" | ||||
|   | ||||
| @@ -19,7 +19,7 @@ error_function() { | ||||
|         error "A failure occurred in %s()." "$func" | ||||
|         plain "Aborting..." | ||||
|     fi | ||||
|     umount_overlay | ||||
|     umount_overlayfs | ||||
|     umount_img | ||||
|     exit 2 | ||||
| } | ||||
| @@ -41,7 +41,7 @@ run_safe() { | ||||
| trap_exit() { | ||||
|     local sig=$1; shift | ||||
|     error "$@" | ||||
|     umount_overlay | ||||
|     umount_overlayfs | ||||
|     trap -- "$sig" | ||||
|     kill "-$sig" "$$" | ||||
| } | ||||
| @@ -62,43 +62,6 @@ copy_overlay(){ | ||||
|     fi | ||||
| } | ||||
|  | ||||
| clean_up_image(){ | ||||
|     local path mnt="$1" | ||||
|     msg2 "Cleaning [%s]" "${mnt##*/}" | ||||
|  | ||||
|     path=$mnt/boot | ||||
|     if [[ -d "$path" ]]; then | ||||
|         find "$path" -name 'initramfs*.img' -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/lib/pacman/sync | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/cache/pacman/pkg | ||||
|     if [[ -d $path ]]; then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/log | ||||
|     if [[ -d $path ]]; then | ||||
|         find "$path" -type f -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/var/tmp | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -mindepth 1 -delete &> /dev/null | ||||
|     fi | ||||
|     path=$mnt/tmp | ||||
|     if [[ -d $path ]];then | ||||
|         find "$path" -mindepth 1 -delete &> /dev/null | ||||
|     fi | ||||
|     find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete | ||||
|     if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then | ||||
|         rm $mnt/boot/grub/grub.cfg | ||||
|     fi | ||||
|     if [[ -f "$mnt/etc/machine-id" ]]; then | ||||
|         rm $mnt/etc/machine-id | ||||
|     fi | ||||
| } | ||||
|  | ||||
| make_rootfs() { | ||||
|     if [[ ! -e ${work_dir}/rootfs.lock ]]; then | ||||
|         msg "Prepare [Base installation] (rootfs)" | ||||
| @@ -110,9 +73,9 @@ make_rootfs() { | ||||
|  | ||||
|         copy_overlay "${ROOT_OVERLAY}" "${rootfs}" | ||||
|  | ||||
|         [[ -z ${LIVE_LIST} ]] && configure_image "${rootfs}" | ||||
|         [[ -z ${LIVE_LIST} ]] && configure_chroot "${rootfs}" | ||||
|  | ||||
|         clean_up_image "${rootfs}" | ||||
|         clean_up_chroot "${rootfs}" | ||||
|  | ||||
|         : > ${work_dir}/rootfs.lock | ||||
|  | ||||
| @@ -127,17 +90,17 @@ make_livefs() { | ||||
|  | ||||
|         prepare_dir "${livefs}" | ||||
|  | ||||
|         mount_overlay "${livefs}" "${work_dir}" | ||||
|         mount_overlayfs "${livefs}" "${work_dir}" | ||||
|  | ||||
|         basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}" | ||||
|  | ||||
|         copy_overlay "${LIVE_OVERLAY}" "${livefs}" | ||||
|  | ||||
|         configure_image "${livefs}" | ||||
|         configure_chroot "${livefs}" | ||||
|  | ||||
|         umount_overlay | ||||
|         umount_overlayfs | ||||
|  | ||||
|         clean_up_image "${livefs}" | ||||
|         clean_up_chroot "${livefs}" | ||||
|  | ||||
|         : > ${work_dir}/livefs.lock | ||||
|  | ||||
| @@ -155,7 +118,7 @@ make_bootfs() { | ||||
|  | ||||
|         local bootfs="${work_dir}/bootfs" | ||||
|  | ||||
|         mount_overlay "${bootfs}" "${work_dir}" | ||||
|         mount_overlayfs "${bootfs}" "${work_dir}" | ||||
|  | ||||
|         if ${use_dracut}; then | ||||
|             prepare_initramfs_dracut "${bootfs}" | ||||
| @@ -163,7 +126,7 @@ make_bootfs() { | ||||
|             prepare_initramfs "${bootfs}" | ||||
|         fi | ||||
|  | ||||
|         umount_overlay | ||||
|         umount_overlayfs | ||||
|  | ||||
|         rm -R ${bootfs} | ||||
|         : > ${work_dir}/bootfs.lock | ||||
| @@ -190,24 +153,3 @@ make_grub(){ | ||||
|         msg "Done [/iso/boot/grub]" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| compress_images(){ | ||||
|     local timer=$(get_timer) | ||||
|     run_safe "make_iso" | ||||
|     chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}" | ||||
|     show_elapsed_time "${FUNCNAME}" "${timer}" | ||||
| } | ||||
|  | ||||
| prepare_images(){ | ||||
|     local timer=$(get_timer) | ||||
|     load_pkgs "${ROOT_LIST}" "${INITSYS}" | ||||
|     run_safe "make_rootfs" | ||||
|     if [[ -n ${LIVE_LIST} ]]; then | ||||
|         load_pkgs "${LIVE_LIST}" "${INITSYS}" | ||||
|         run_safe "make_livefs" | ||||
|     fi | ||||
|     run_safe "make_bootfs" | ||||
|     run_safe "make_grub" | ||||
|  | ||||
|     show_elapsed_time "${FUNCNAME}" "${timer}" | ||||
| } | ||||
|   | ||||
							
								
								
									
										185
									
								
								lib/pkg/git.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								lib/pkg/git.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,185 @@ | ||||
| #!/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. | ||||
|  | ||||
| get_local_head(){ | ||||
|     echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1) | ||||
| } | ||||
|  | ||||
| get_remote_head(){ | ||||
|     echo $(git ls-remote origin -h refs/heads/master | cut -f1) | ||||
| } | ||||
|  | ||||
| clone_tree(){ | ||||
|     local timer=$(get_timer) url="$1" tree="$2" os="${3:-$(get_osname)}" | ||||
|  | ||||
|     msg "Cloning %s (%s) ..." "$tree" "$os" | ||||
|  | ||||
|     git clone $url/$tree.git | ||||
|     show_elapsed_time "${FUNCNAME}" "${timer}" | ||||
| } | ||||
|  | ||||
| has_changes(){ | ||||
|     local head_l="$1" head_r="$2" | ||||
|     if [[ "$head_l" == "$head_r" ]]; then | ||||
|         msg2 "remote changes: no" | ||||
|         return 1 | ||||
|     else | ||||
|         msg2 "remote changes: yes" | ||||
|         return 0 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| pull_tree(){ | ||||
|     local tree="$1" local_head="$2" os="${3:-$(get_osname)}" | ||||
|     local remote_head=$(get_remote_head) | ||||
|  | ||||
|     msg "Checking (%s) (%s)" "${tree}" "$os" | ||||
|     if has_changes "${local_head}" "${remote_head}";then | ||||
|         git pull origin master | ||||
|     fi | ||||
| } | ||||
|  | ||||
| push_tree(){ | ||||
|     local tree="$1" | ||||
|     msg "Update (%s)" "${tree}" | ||||
|     git push origin master | ||||
| } | ||||
|  | ||||
| write_jenkinsfile(){ | ||||
|     local pkg="$1" | ||||
|     local jenkins=$pkg/Jenkinsfile | ||||
|  | ||||
|     echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins | ||||
|     echo '' >> $jenkins | ||||
|     echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins | ||||
|     echo '' >> $jenkins | ||||
|  | ||||
|     git add $jenkins | ||||
| } | ||||
|  | ||||
| write_agentyaml(){ | ||||
|     local pkg="$1" | ||||
|     local agent=$pkg/.artixlinux/agent.yaml label='master' | ||||
|     [[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux | ||||
|  | ||||
|     echo '%YAML 1.2' > $agent | ||||
|     echo '---' >> $agent | ||||
|     echo '' >> $agent | ||||
|     echo "label: $label" >> $agent | ||||
|     echo '' >> $agent | ||||
|  | ||||
|     git add $agent | ||||
| } | ||||
|  | ||||
| commit_jenkins_files(){ | ||||
|     local pkg="$1" | ||||
|  | ||||
|     write_jenkinsfile "$pkg" | ||||
|     write_agentyaml "$pkg" | ||||
|  | ||||
|     git commit -m "initial commit" | ||||
| } | ||||
|  | ||||
| config_tree(){ | ||||
|     local tree="$1" | ||||
|     cd $tree | ||||
|         git config --bool pull.rebase true | ||||
|         git config commit.gpgsign true | ||||
|         if [[ -n "${GPGKEY}" ]];then | ||||
|             git config user.signingkey "${GPGKEY}" | ||||
|         else | ||||
|             warning "No GPGKEY configured in makepkg.conf!" | ||||
|         fi | ||||
|     cd .. | ||||
| } | ||||
|  | ||||
| # write_gitignore() { | ||||
| #     local pkg="$1" | ||||
| #     local gitignore=$pkg/.gitignore | ||||
| #     echo '# ---> ArchLinuxPackages' > $gitignore | ||||
| #     echo '*.tar' >> $gitignore | ||||
| #     echo '*.tar.*' >> $gitignore | ||||
| #     echo '*.jar' >> $gitignore | ||||
| #     echo '*.exe' >> $gitignore | ||||
| #     echo '*.msi' >> $gitignore | ||||
| #     echo '*.zip' >> $gitignore | ||||
| #     echo '*.tgz' >> $gitignore | ||||
| #     echo '*.log' >> $gitignore | ||||
| #     echo '*.log.*' >> $gitignore | ||||
| #     echo '*.sig' >> $gitignore | ||||
| #     echo '' >> $gitignore | ||||
| #     echo 'pkg/' >> $gitignore | ||||
| #     echo 'src/' >> $gitignore | ||||
| #     echo '' >> $gitignore | ||||
| #     echo '# ---> Archives' >> $gitignore | ||||
| #     echo '*.7z' >> $gitignore | ||||
| #     echo '*.rar' >> $gitignore | ||||
| #     echo '*.gz' >> $gitignore | ||||
| #     echo '*.bzip' >> $gitignore | ||||
| #     echo '*.bz2' >> $gitignore | ||||
| #     echo '*.xz' >> $gitignore | ||||
| #     echo '*.lzma' >> $gitignore | ||||
| #     echo '*.cab' >> $gitignore | ||||
| #     echo '' >> $gitignore | ||||
| #     echo '# ---> systemd' >> $gitignore | ||||
| #     echo '*.service' >> $gitignore | ||||
| #     echo '*.socket' >> $gitignore | ||||
| #     echo '*.timer' >> $gitignore | ||||
| #     echo '' >> $gitignore | ||||
| #     echo '# ---> snap' >> $gitignore | ||||
| #     echo '*.snap' >> $gitignore | ||||
| #     echo '' >> $gitignore | ||||
| # | ||||
| #     git add $gitignore | ||||
| # } | ||||
| # | ||||
| # write_readme(){ | ||||
| #     local pkg="$1" | ||||
| #     local readme=$pkg/README.md | ||||
| # | ||||
| #     echo "# $pkg" > $readme | ||||
| #     echo '' >> $readme | ||||
| # | ||||
| #     git add $readme | ||||
| # } | ||||
| # | ||||
| # subrepo_new2(){ | ||||
| #     local group="${1:-$GROUP}" team="${2:-$TEAM}" | ||||
| #     local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk | ||||
| # | ||||
| #     cd ${TREE_DIR_ARTIX}/$group | ||||
| # | ||||
| #     local org=$(get_pkg_org "${PACKAGE}") | ||||
| # | ||||
| #     prepare_dir "$dest" | ||||
| # | ||||
| #     subrepo_init "${PACKAGE}" "$org" | ||||
| # | ||||
| #     commit_jenkins_files2 "${PACKAGE}" | ||||
| # | ||||
| #     subrepo_push "${PACKAGE}" | ||||
| # | ||||
| #     add_repo_to_team "${PACKAGE}" "$org" "$team" | ||||
| # } | ||||
| # | ||||
| # commit_jenkins_files2(){ | ||||
| #     local pkg="$1" | ||||
| # | ||||
| #     write_jenkinsfile "$pkg" | ||||
| #     write_agentyaml "$pkg" | ||||
| #     write_readme "$pkg" | ||||
| #     write_gitignore "$pkg" | ||||
| # | ||||
| #     git commit -m "initial commit" | ||||
| # } | ||||
| @@ -12,7 +12,7 @@ | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
|  | ||||
| create_repo(){ | ||||
| create_repo() { | ||||
|     local pkg="$1" org="$2" | ||||
|     local gitname=$(get_compliant_name "$pkg") | ||||
|     local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }" | ||||
| @@ -27,33 +27,16 @@ create_repo(){ | ||||
|     echo | ||||
| } | ||||
|  | ||||
| delete_repo(){ | ||||
|     local pkg="$1" org="$2" | ||||
|     local gitname=$(get_compliant_name "$pkg") | ||||
|  | ||||
|     msg2 "Delete package repo [%s] in org (%s)" "${pkg}" "${org}" | ||||
|  | ||||
|     curl -s -X DELETE "${GIT_URL}/api/v1/repos/$org/$gitname?access_token=${GIT_TOKEN}" \ | ||||
|         -H  "accept: application/json" | ||||
| } | ||||
|  | ||||
| load_team_id(){ | ||||
|     local org="$1" team="$2" id=0 | ||||
|  | ||||
|     local ids=($(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams?access_token=${GIT_TOKEN}" \ | ||||
|         -H  "accept: application/json" | jshon -a -e id)) | ||||
|  | ||||
|     case $team in | ||||
|         packages) id="${ids[2]}" ;; | ||||
|         community) id="${ids[1]}" ;; | ||||
|     esac | ||||
|  | ||||
| get_team_id() { | ||||
|     local org="$1" team="$2" | ||||
|     local id=$(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams/search?q=$team&access_token=${GIT_TOKEN}" \ | ||||
|         -H  "accept: application/json" | jq '.data[] .id') | ||||
|     echo $id | ||||
| } | ||||
|  | ||||
| add_repo_to_team(){ | ||||
| add_repo_to_team() { | ||||
|     local pkg="$1" org="$2" team="$3" | ||||
|     local id=$(load_team_id "$org" "$team") | ||||
|     local id=$(get_team_id "$org" "$team") | ||||
|     local gitname=$(get_compliant_name "$pkg") | ||||
|  | ||||
|     msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team" | ||||
| @@ -61,3 +44,14 @@ add_repo_to_team(){ | ||||
|     curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \ | ||||
|         -H  "accept: application/json" | ||||
| } | ||||
|  | ||||
| remove_repo_from_team() { | ||||
|     local pkg="$1" org="$2" team="$3" | ||||
|     local id=$(get_team_id "$org" "$team") | ||||
|     local gitname=$(get_compliant_name "$pkg") | ||||
|  | ||||
|     msg2 "Removing package repo [%s] from team (%s)" "$gitname" "$team" | ||||
|  | ||||
|     curl -s -X DELETE "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \ | ||||
|         -H  "accept: application/json" | ||||
| } | ||||
|   | ||||
| @@ -12,14 +12,6 @@ | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
|  | ||||
| get_local_head(){ | ||||
|     echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1) | ||||
| } | ||||
|  | ||||
| get_remote_head(){ | ||||
|     echo $(git ls-remote origin -h refs/heads/master | cut -f1) | ||||
| } | ||||
|  | ||||
| get_pkg_org(){ | ||||
|     local pkg="$1" org= sub= | ||||
|     case ${pkg} in | ||||
| @@ -31,111 +23,34 @@ get_pkg_org(){ | ||||
|     echo $org | ||||
| } | ||||
|  | ||||
| subrepo_init() { | ||||
|     local pkg="$1" org="$2" | ||||
|     local gitname=$(get_compliant_name "$pkg") | ||||
|     msg2 "Subrepo init (%s)" "$pkg" | ||||
|     git subrepo init "$pkg" -r gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git | ||||
| } | ||||
|  | ||||
| subrepo_push(){ | ||||
|     local pkg="$1" | ||||
|     msg2 "Push (%s)" "$pkg" | ||||
|     git subrepo push "$pkg" | ||||
|     msg2 "Subrepo push (%s)" "$pkg" | ||||
|     git subrepo push "$pkg" || die "%s push failed" "$pkg" | ||||
| } | ||||
|  | ||||
| subrepo_clean(){ | ||||
|     local pkg="$1" | ||||
|     msg2 "Clean (%s)" "$pkg" | ||||
|     msg2 "Subrepo clean (%s)" "$pkg" | ||||
|     git subrepo clean "$pkg" | ||||
| } | ||||
|  | ||||
| subrepo_pull(){ | ||||
|     local pkg="$1" | ||||
|     msg2 "Pull (%s)" "$pkg" | ||||
|     msg2 "Subrepo pull (%s)" "$pkg" | ||||
|     git subrepo pull "$pkg" | ||||
| } | ||||
|  | ||||
| subrepo_clone(){ | ||||
|     local pkg="$1" org="$2" | ||||
|     local gitname=$(get_compliant_name "$pkg") | ||||
|     msg2 "Clone [%s] from (%s)" "$pkg" "$org/$gitname" | ||||
|     msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$gitname" | ||||
|     git subrepo clone gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git "$pkg" | ||||
| } | ||||
|  | ||||
| clone_tree(){ | ||||
|     local timer=$(get_timer) url="$1" tree="$2" os="${3:-$(get_osname)}" | ||||
|  | ||||
|     msg "Cloning %s (%s) ..." "$tree" "$os" | ||||
|  | ||||
|     git clone $url/$tree.git | ||||
|     show_elapsed_time "${FUNCNAME}" "${timer}" | ||||
| } | ||||
|  | ||||
| has_changes(){ | ||||
|     local head_l="$1" head_r="$2" | ||||
|     if [[ "$head_l" == "$head_r" ]]; then | ||||
|         msg2 "remote changes: no" | ||||
|         return 1 | ||||
|     else | ||||
|         msg2 "remote changes: yes" | ||||
|         return 0 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| pull_tree(){ | ||||
|     local tree="$1" local_head="$2" os="${3:-$(get_osname)}" | ||||
|     local remote_head=$(get_remote_head) | ||||
|  | ||||
|     msg "Checking %s (%s)" "${tree}" "$os" | ||||
|     if has_changes "${local_head}" "${remote_head}";then | ||||
|         git pull origin master | ||||
|     fi | ||||
| } | ||||
|  | ||||
| push_tree(){ | ||||
|     local tree="$1" | ||||
|     msg "Update (%s)" "${tree}" | ||||
|     git push origin master | ||||
| } | ||||
|  | ||||
| write_jenkinsfile(){ | ||||
|     local pkg="$1" | ||||
|     local jenkins=$pkg/Jenkinsfile | ||||
|  | ||||
|     echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins | ||||
|     echo '' >> $jenkins | ||||
|     echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins | ||||
|     echo '' >> $jenkins | ||||
|  | ||||
|     git add $jenkins | ||||
| } | ||||
|  | ||||
| write_agentyaml(){ | ||||
|     local pkg="$1" | ||||
|     local agent=$pkg/.artixlinux/agent.yaml label='master' | ||||
|     [[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux | ||||
|  | ||||
|     echo '%YAML 1.2' > $agent | ||||
|     echo '---' >> $agent | ||||
|     echo '' >> $agent | ||||
|     echo "label: $label" >> $agent | ||||
|     echo '' >> $agent | ||||
|  | ||||
|     git add $agent | ||||
| } | ||||
|  | ||||
| commit_jenkins_files(){ | ||||
|     local pkg="$1" | ||||
|  | ||||
|     write_jenkinsfile "$pkg" | ||||
|     write_agentyaml "$pkg" | ||||
|  | ||||
|     git commit -m "add jenkinsfile & .artixlinux/agent.yaml" | ||||
| } | ||||
|  | ||||
| config_tree(){ | ||||
|     local tree="$1" | ||||
|     cd $tree | ||||
|         git config --bool pull.rebase true | ||||
|         git config commit.gpgsign true | ||||
|         if [[ -n "${GPGKEY}" ]];then | ||||
|             git config user.signingkey "${GPGKEY}" | ||||
|         else | ||||
|             warning "No GPGKEY configured in makepkg.conf!" | ||||
|         fi | ||||
|     cd .. | ||||
| } | ||||
|   | ||||
							
								
								
									
										160
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							
							
						
						
									
										160
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							| @@ -12,167 +12,47 @@ | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU General Public License for more details. | ||||
|  | ||||
| shopt -s extglob | ||||
|  | ||||
| get_compliant_name(){ | ||||
|     local gitname="$1" | ||||
|     case $gitname in | ||||
|     case "$gitname" in | ||||
|         *+) gitname=${gitname//+/plus} | ||||
|     esac | ||||
|     echo $gitname | ||||
|     echo "$gitname" | ||||
| } | ||||
|  | ||||
| arch2artix(){ | ||||
|     local repo="$1" artix=none | ||||
|     case "$repo" in | ||||
|         core) artix=system ;; | ||||
|         extra) artix=world ;; | ||||
|         community) artix=galaxy ;; | ||||
|         multilib) artix=lib32 ;; | ||||
|         staging) artix=goblins ;; | ||||
|         testing) artix=gremlins ;; | ||||
|         community-staging) artix=galaxy-goblins ;; | ||||
|         community-testing) artix=galaxy-gremlins ;; | ||||
|         multilib-staging) artix=lib32-goblins ;; | ||||
|         multilib-testing) artix=lib32-gremlins ;; | ||||
|         kde-unstable) artix=kde-wobble ;; | ||||
|         gnome-unstable) artix=gnome-wobble ;; | ||||
|     esac | ||||
|     echo $artix | ||||
| } | ||||
| set_arch_repos(){ | ||||
|     local x="$1" y="$2" z="$3" | ||||
|     ARCH_REPOS=(core extra community multilib) | ||||
|  | ||||
| find_tree(){ | ||||
|     local tree="$1" pkg="$2" | ||||
|     local result=$(find $tree -mindepth 2 -maxdepth 2 -type d -name "$pkg") | ||||
|     result=${result%/*} | ||||
|     echo ${result##*/} | ||||
| } | ||||
|  | ||||
| arch_repos(){ | ||||
|     local stag="$1" unst="$2" | ||||
|     local repos=(core extra testing community community-testing multilib multilib-testing) | ||||
|  | ||||
|     $stag && repos+=(staging community-staging multilib-staging) | ||||
|     $unst && repos+=(gnome-unstable kde-unstable) | ||||
|  | ||||
|     echo ${repos[@]} | ||||
|     $x && ARCH_REPOS+=(testing community-testing multilib-testing) | ||||
|     $y && ARCH_REPOS+=(staging community-staging multilib-staging) | ||||
|     $z && ARCH_REPOS+=(gnome-unstable kde-unstable) | ||||
| } | ||||
|  | ||||
| find_repo(){ | ||||
|     local pkg="$1" stag="$2" unst="$3" repo= | ||||
|  | ||||
|     for r in $(arch_repos "$stag" "$unst");do | ||||
|     local pkg="$1" repo= | ||||
|     for r in ${ARCH_REPOS[@]};do | ||||
|         [[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH} | ||||
|         [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any | ||||
|     done | ||||
|     echo $repo | ||||
| } | ||||
|  | ||||
| is_valid_repo(){ | ||||
|     local src="$1" cases= | ||||
|     for r in $(arch_repos true true);do | ||||
|         cases=${cases:-}${cases:+|}${r} | ||||
|     done | ||||
|     eval "case $src in | ||||
|         ${cases}|trunk) return 0 ;; | ||||
|         *) return 1 ;; | ||||
|     esac" | ||||
| find_pkg(){ | ||||
|     local searchdir="$1" pkg="$2" | ||||
|     local result=$(find "$searchdir" -mindepth 2 -maxdepth 2 -type d -name "$pkg") | ||||
|     echo "$result" | ||||
| } | ||||
|  | ||||
| get_cases(){ | ||||
|     local pkglist="${SYSCONFDIR}/pkglist.d/$1.list" | ||||
|  | ||||
|     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 cases= | ||||
|     for p in ${pkgs[@]};do | ||||
|         cases=${cases:-}${cases:+|}${p} | ||||
|     done | ||||
|     echo $cases | ||||
| } | ||||
|  | ||||
| get_artix_tree(){ | ||||
|     local pkg="$1" artix_tree="${2:-$3}" tree | ||||
|     eval "case $pkg in | ||||
|         $(get_cases kernel)) tree=packages-kernel ;; | ||||
|         $(get_cases python)) tree=packages-python ;; | ||||
|         $(get_cases perl)) tree=packages-perl ;; | ||||
|         $(get_cases ruby)) tree=packages-ruby ;; | ||||
|         $(get_cases openrc)) tree=packages-openrc ;; | ||||
|         $(get_cases runit)) tree=packages-runit ;; | ||||
|         $(get_cases s6)) tree=packages-s6 ;; | ||||
|         $(get_cases media)) tree=packages-media ;; | ||||
|         $(get_cases xorg)) tree=packages-xorg ;; | ||||
|         $(get_cases qt5)) tree=packages-qt5 ;; | ||||
|         $(get_cases gtk)) tree=packages-gtk ;; | ||||
|         $(get_cases java)) tree=packages-java ;; | ||||
|         $(get_cases haskell)) tree=packages-haskell ;; | ||||
|         $(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 ;; | ||||
|         $(get_cases xfce)) tree=packages-xfce ;; | ||||
|         *) tree=$artix_tree | ||||
|     esac" | ||||
|     echo $tree | ||||
| } | ||||
|  | ||||
| get_import_path(){ | ||||
|     local pkg="$1" import_path= | ||||
|     for tree in ${TREE_NAMES_ARCH[@]};do | ||||
|         [[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg | ||||
|     done | ||||
|     echo $import_path | ||||
| } | ||||
|  | ||||
| pkgver_equal() { | ||||
|     if [[ $1 = *-* && $2 = *-* ]]; then | ||||
|         # if both versions have a pkgrel, then they must be an exact match | ||||
|         [[ $1 = "$2" ]] | ||||
|     else | ||||
|         # otherwise, trim any pkgrel and compare the bare version. | ||||
|         [[ ${1%%-*} = "${2%%-*}" ]] | ||||
|     fi | ||||
| } | ||||
|  | ||||
| find_cached_package() { | ||||
| find_cached_pkgfile() { | ||||
|     local searchdirs=("$PKGDEST" "$PWD") results=() | ||||
|     local targetname=$1 targetver=$2 targetarch=$3 | ||||
|     local dir pkg pkgbasename name ver rel arch r results | ||||
|  | ||||
|     local pkg="$1" | ||||
|     for dir in "${searchdirs[@]}"; do | ||||
|         [[ -d $dir ]] || continue | ||||
|  | ||||
|         for pkg in "$dir"/*.pkg.tar.?z; do | ||||
|             [[ -f $pkg ]] || continue | ||||
|  | ||||
|             # avoid adding duplicates of the same inode | ||||
|             for r in "${results[@]}"; do | ||||
|                 [[ $r -ef $pkg ]] && continue 2 | ||||
|             done | ||||
|  | ||||
|             # split apart package filename into parts | ||||
|             pkgbasename=${pkg##*/} | ||||
|             pkgbasename=${pkgbasename%.pkg.tar.?z} | ||||
|  | ||||
|             arch=${pkgbasename##*-} | ||||
|             pkgbasename=${pkgbasename%-"$arch"} | ||||
|  | ||||
|             rel=${pkgbasename##*-} | ||||
|             pkgbasename=${pkgbasename%-"$rel"} | ||||
|  | ||||
|             ver=${pkgbasename##*-} | ||||
|             name=${pkgbasename%-"$ver"} | ||||
|  | ||||
|             if [[ $targetname = "$name" && $targetarch = "$arch" ]] && | ||||
|                 pkgver_equal "$targetver" "$ver-$rel"; then | ||||
|                 results+=("$pkg") | ||||
|             fi | ||||
|         done | ||||
|         [[ -d "$dir" ]] || continue | ||||
|         [[ -e "$dir/$pkg" ]] && results+=("$dir/$pkg") | ||||
|     done | ||||
|  | ||||
|     case ${#results[*]} in | ||||
|         0) | ||||
|             return 1 | ||||
|   | ||||
| @@ -34,7 +34,10 @@ for baselib in ${LIBDIR}/base/*.sh; do | ||||
|     . $baselib | ||||
| done | ||||
|  | ||||
| prepare_dir "${USER_CONF_DIR}" | ||||
| prepare_artools(){ | ||||
|     prepare_dir "${WORKSPACE_DIR}" | ||||
|     prepare_dir "${USER_CONF_DIR}" | ||||
| } | ||||
|  | ||||
| load_base_config(){ | ||||
|  | ||||
| @@ -50,8 +53,6 @@ load_base_config(){ | ||||
|  | ||||
|     WORKSPACE_DIR=${WORKSPACE_DIR:-"/home/${OWNER}/artools-workspace"} | ||||
|  | ||||
|     prepare_dir "${WORKSPACE_DIR}" | ||||
|  | ||||
|     return 0 | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -30,8 +30,6 @@ load_iso_config(){ | ||||
|  | ||||
|     ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"} | ||||
|  | ||||
|     prepare_dir "${ISO_POOL}" | ||||
|  | ||||
|     PROFILE='base' | ||||
|  | ||||
|     ISO_VERSION=${ISO_VERSION:-"$(date +%Y%m%d)"} | ||||
|   | ||||
| @@ -41,6 +41,8 @@ load_pkg_config(){ | ||||
|             packages | ||||
|             community | ||||
|             packages-kernel | ||||
|             packages-net | ||||
|             packages-gfx | ||||
|             packages-openrc | ||||
|             packages-runit | ||||
|             packages-s6 | ||||
| @@ -58,6 +60,7 @@ load_pkg_config(){ | ||||
|             packages-mate | ||||
|             packages-kde | ||||
|             packages-xfce | ||||
|             packages-wm | ||||
| #             packages-haskell | ||||
|     ) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user