Compare commits
	
		
			22 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 08b73032a2 | |||
| 46431619f2 | |||
| 12d2159c12 | |||
| 3865ceab58 | |||
| 890e631e1b | |||
| 273e928905 | |||
| f5c328f8e5 | |||
| 4089151791 | |||
| 211579f9d7 | |||
| 2a85209e1e | |||
| 40d691bc85 | |||
| d9da64eb51 | |||
| 5902f987cc | |||
| bfa888251e | |||
| 0ecfa1a0f6 | |||
| e60180ebdb | |||
| 20b65d06c8 | |||
| c7728c2e5b | |||
| a0ca1ab3a4 | |||
| 911a0fff36 | |||
| f80c51e8d3 | |||
| 1e948b3ef5 | 
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| VERSION=0.16 | VERSION=0.17 | ||||||
|  |  | ||||||
| CHROOT_VERSION=0.10 | CHROOT_VERSION=0.10 | ||||||
|  |  | ||||||
| @@ -90,7 +90,7 @@ LN_DEPLOYPKG = \ | |||||||
| 	deploypkg-gnome-wobble | 	deploypkg-gnome-wobble | ||||||
|  |  | ||||||
| PKG_LIBS = \ | PKG_LIBS = \ | ||||||
| 	$(wildcard lib/pkg/*) | 	$(wildcard lib/pkg/*.sh) | ||||||
|  |  | ||||||
| PKG_UTIL = lib/util-pkg.sh | PKG_UTIL = lib/util-pkg.sh | ||||||
|  |  | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ artools | |||||||
| - pkg: | - pkg: | ||||||
|   * namcap |   * namcap | ||||||
|   * git-subrepo |   * git-subrepo | ||||||
|   * jshon |   * jq | ||||||
|  |  | ||||||
| - iso: | - iso: | ||||||
|   * dosfstools |   * dosfstools | ||||||
|   | |||||||
| @@ -147,7 +147,7 @@ elif [[ $(cat "$working_dir/.artools") != ${CHROOTVERSION} ]]; then | |||||||
|     die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}" |     die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| sync_host_localtime | #sync_host_localtime | ||||||
|  |  | ||||||
| chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}" | chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -17,32 +17,38 @@ | |||||||
| prepare_artools | prepare_artools | ||||||
|  |  | ||||||
| patch_pkg(){ | patch_pkg(){ | ||||||
|     local pkg="$1" |     local pkgpath="$1" | ||||||
|  |     local pkg=${pkgpath%/*} | ||||||
|  |     pkg=${pkg##*/} | ||||||
|     case $pkg in |     case $pkg in | ||||||
|         glibc) |         glibc) | ||||||
|  |             msg2 "Patching %s" "$pkg" | ||||||
|             sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \ |             sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \ | ||||||
|                 -e '/nscd.service/d' \ |                 -e '/nscd.service/d' \ | ||||||
|                 -i $pkg/trunk/PKGBUILD |                 -i $pkgpath/PKGBUILD | ||||||
|         ;; |         ;; | ||||||
|         linux|linux-lts) |         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"|' \ |             sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \ | ||||||
|                 -i $pkg/trunk/config |                 -i $pkgpath/config | ||||||
|         ;; |         ;; | ||||||
|         bash) |         bash) | ||||||
|  |             msg2 "Patching %s" "$pkg" | ||||||
|             sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \ |             sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \ | ||||||
|             -e "s|etc/bash.|etc/bash/|g" \ |             -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|' \ |             -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 |             -i $pkgpath/PKGBUILD | ||||||
|             cd $pkg/trunk |             cd $pkgpath | ||||||
|                 patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch |                 patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch | ||||||
|                 updpkgsums |                 updpkgsums | ||||||
|             cd ../.. |             cd ../.. | ||||||
|         ;; |         ;; | ||||||
|         gstreamer|gst-plugins-*|licenses) |         gstreamer|gst-plugins-*|licenses) | ||||||
|  |             msg2 "Patching %s" "$pkg" | ||||||
|             sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \ |             sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \ | ||||||
|                 -e 's|(Arch Linux)|(Artix Linux)|' \ |                 -e 's|(Arch Linux)|(Artix Linux)|' \ | ||||||
|                 -i $pkg/trunk/PKGBUILD |                 -i $pkgpath/PKGBUILD | ||||||
|         ;; |         ;; | ||||||
|     esac |     esac | ||||||
| } | } | ||||||
| @@ -84,7 +90,7 @@ sync_pkg(){ | |||||||
| } | } | ||||||
|  |  | ||||||
| show_deps(){ | show_deps(){ | ||||||
|     local src="$1" repo="$2" |     local src="$1" | ||||||
|  |  | ||||||
|     . $src/PKGBUILD 2>/dev/null |     . $src/PKGBUILD 2>/dev/null | ||||||
|  |  | ||||||
| @@ -92,7 +98,6 @@ show_deps(){ | |||||||
|  |  | ||||||
|     local archver=$(get_full_version) |     local archver=$(get_full_version) | ||||||
|  |  | ||||||
|     msg2 "repo: %s" "$repo" |  | ||||||
|     [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}" |     [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}" | ||||||
|     msg2 "pkgname: %s" "${pkgname[*]}" |     msg2 "pkgname: %s" "${pkgname[*]}" | ||||||
|     [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}" |     [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}" | ||||||
| @@ -111,6 +116,9 @@ subrepo_new(){ | |||||||
|  |  | ||||||
|     cd ${TREE_DIR_ARTIX}/$group |     cd ${TREE_DIR_ARTIX}/$group | ||||||
|  |  | ||||||
|  |     msg2 "team: %s" "$team" | ||||||
|  |     msg2 "group: %s" "$group" | ||||||
|  |  | ||||||
|     local org=$(get_pkg_org "${PACKAGE}") |     local org=$(get_pkg_org "${PACKAGE}") | ||||||
|  |  | ||||||
|     create_repo "${PACKAGE}" "$org" |     create_repo "${PACKAGE}" "$org" | ||||||
| @@ -124,66 +132,118 @@ subrepo_new(){ | |||||||
|     commit_jenkins_files "${PACKAGE}" |     commit_jenkins_files "${PACKAGE}" | ||||||
| } | } | ||||||
|  |  | ||||||
| from_arch(){ | get_group_packages(){ | ||||||
|     local src= dest= |     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_group(){ | ||||||
|  |     local pkg="$1" fallback="${2##*/}" tree= | ||||||
|  |     eval "case $pkg in | ||||||
|  |         $(get_group_packages kernel)) tree=packages-kernel ;; | ||||||
|  |         $(get_group_packages net)) tree=packages-net ;; | ||||||
|  |         $(get_group_packages gfx)) tree=packages-gfx ;; | ||||||
|  |         $(get_group_packages python)) tree=packages-python ;; | ||||||
|  |         $(get_group_packages perl)) tree=packages-perl ;; | ||||||
|  |         $(get_group_packages ruby)) tree=packages-ruby ;; | ||||||
|  |         $(get_group_packages openrc)) tree=packages-openrc ;; | ||||||
|  |         $(get_group_packages runit)) tree=packages-runit ;; | ||||||
|  |         $(get_group_packages s6)) tree=packages-s6 ;; | ||||||
|  |         $(get_group_packages media)) tree=packages-media ;; | ||||||
|  |         $(get_group_packages xorg)) tree=packages-xorg ;; | ||||||
|  |         $(get_group_packages qt5)) tree=packages-qt5 ;; | ||||||
|  |         $(get_group_packages gtk)) tree=packages-gtk ;; | ||||||
|  |         $(get_group_packages java)) tree=packages-java ;; | ||||||
|  |         $(get_group_packages haskell)) tree=packages-haskell ;; | ||||||
|  |         $(get_group_packages devel)) tree=packages-devel ;; | ||||||
|  |         $(get_group_packages lxqt)) tree=packages-lxqt ;; | ||||||
|  |         $(get_group_packages cinnamon)) tree=packages-cinnamon ;; | ||||||
|  |         $(get_group_packages kde)) tree=packages-kde ;; | ||||||
|  |         $(get_group_packages gnome)) tree=packages-gnome ;; | ||||||
|  |         $(get_group_packages mate)) tree=packages-mate ;; | ||||||
|  |         $(get_group_packages xfce)) tree=packages-xfce ;; | ||||||
|  |         $(get_group_packages wm)) tree=packages-wm ;; | ||||||
|  |         *) tree=$fallback ;; | ||||||
|  |     esac" | ||||||
|  |     echo $tree | ||||||
|  | } | ||||||
|  |  | ||||||
|  | get_team(){ | ||||||
|  |     local repo="$1" team= | ||||||
|  |     case $repo in | ||||||
|  |         *testing*|*staging*) | ||||||
|  |             set_arch_repos false false false | ||||||
|  |             team=$(find_repo "$srcpath") | ||||||
|  |             team=${team%-*} | ||||||
|  |         ;; | ||||||
|  |         *) team=${repo%-*} ;; | ||||||
|  |     esac | ||||||
|  |     echo $team | ||||||
|  | } | ||||||
|  |  | ||||||
|  | from_arch(){ | ||||||
|     cd ${TREE_DIR_ARTIX} |     cd ${TREE_DIR_ARTIX} | ||||||
|  |  | ||||||
|     local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}") |     local srcpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||||
|     [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}" |     [[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||||
|  |  | ||||||
|     local package=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE} |     local repo=$(find_repo "$srcpath") | ||||||
|     local repo=$(find_repo "$package" "${staging}" "${unstable}") |  | ||||||
|  |  | ||||||
|     src=$package/repos/$repo |     archpath=$srcpath/repos/$repo | ||||||
|  |     local artixpath=$(find_pkg ${TREE_DIR_ARTIX} ${PACKAGE}) | ||||||
|  |     local tree=${srcpath%/*} | ||||||
|  |     local tree=${tree##*/} | ||||||
|  |     local group=$(get_group "${PACKAGE}" "$tree") | ||||||
|  |  | ||||||
|     local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") |     msg "repo: %s" "$repo" | ||||||
|     local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch") |     artixpath=$artixpath/trunk | ||||||
|  |  | ||||||
|     dest=${TREE_DIR_ARTIX}/$tree_dir/${PACKAGE}/trunk |     show_deps "$archpath" | ||||||
|  |  | ||||||
|     msg "tree: %s" "$tree_dir" |     if [[ -f $artixpath/PKGBUILD ]];then | ||||||
|     show_deps "$src" "$repo" |  | ||||||
|  |  | ||||||
|     if [[ -d $dest ]];then |         . $artixpath/PKGBUILD 2>/dev/null | ||||||
|  |  | ||||||
|         cd ${TREE_DIR_ARTIX}/$git_tree_artix |  | ||||||
|  |  | ||||||
|         . $dest/PKGBUILD 2>/dev/null |  | ||||||
|         local artixver=$(get_full_version) |         local artixver=$(get_full_version) | ||||||
|  |  | ||||||
|         msg2 "Artix Version: %s" "$artixver" |         msg2 "Artix Version: %s" "$artixver" | ||||||
|     else |     else | ||||||
|         subrepo_new "$tree_dir" "$git_tree_arch" |         artixpath=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk | ||||||
|  |         subrepo_new "${group}" "$(get_team $repo)" | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     msg "Sync (%s) from [%s] to [%s]" "${PACKAGE}" "$git_tree_arch" "$tree_dir" |     msg "Sync (%s) from Arch [%s] to Artix [%s]" "${PACKAGE}" "${archpath##*archlinux/}" "${artixpath##*artixlinux/}" | ||||||
|  |  | ||||||
|     sync_pkg "$src" "$dest" |     sync_pkg "$archpath" "$artixpath" | ||||||
|     patch_pkg "${PACKAGE}" |     patch_pkg "$artixpath" | ||||||
| } | } | ||||||
|  |  | ||||||
| view_build(){ | view_build(){ | ||||||
|     local src= |     local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||||
|     local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}") |     [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||||
|     [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}" |     local repo=$(find_repo "${archpath}") | ||||||
|  |     archpath=$archpath/repos/$repo | ||||||
|     local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE} |     msg2 "repo: %s" "$repo" | ||||||
|     local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}") |     show_deps "$archpath" | ||||||
|  |  | ||||||
|     src=$pkg_path/repos/$repo |  | ||||||
|  |  | ||||||
|     show_deps "$src" "$repo" |  | ||||||
| } | } | ||||||
|  |  | ||||||
| check_tree(){ | check_tree(){ | ||||||
|     local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}") |     local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}") | ||||||
|     [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}" |     [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}" | ||||||
|     local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") |     local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" ${PACKAGE}) | ||||||
|     local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch") |     local group=${artixpath%/*} | ||||||
|     msg "tree_dir: %s" "$tree_dir" |     msg "group: %s" "${group##*/}" | ||||||
|     [[ -z $git_tree_artix ]] && msg2 "exists: %s" "no" |  | ||||||
|     [[ -n $git_tree_artix ]] && msg2 "exists: %s" "yes" |     [[ -z $artixpath ]] && msg2 "exists: %s" "no" | ||||||
|  |     [[ -n $artixpath ]] && msg2 "exists: %s" "yes" | ||||||
| } | } | ||||||
|  |  | ||||||
| sync_repos(){ | sync_repos(){ | ||||||
| @@ -199,39 +259,42 @@ sync_repos(){ | |||||||
|  |  | ||||||
| load_makepkg_config | load_makepkg_config | ||||||
|  |  | ||||||
|  | testing=true | ||||||
|  | staging=true | ||||||
|  | unstable=false | ||||||
|  |  | ||||||
| sync=false | sync=false | ||||||
| sync_arch=true | sync_arch=true | ||||||
| sync_artix=true | sync_artix=true | ||||||
| import=false | import=false | ||||||
| view=false | view=false | ||||||
| createnew=false | createnew=false | ||||||
| conf=false |  | ||||||
| unstable=false |  | ||||||
| staging=true |  | ||||||
| sync_group=false | sync_group=false | ||||||
| check=false | check=false | ||||||
|  |  | ||||||
| PACKAGE='' | PACKAGE='' | ||||||
|  |  | ||||||
| TEAM=${TREE_NAMES_ARTIX[0]} | TEAM='community' | ||||||
| GROUP=${TREE_NAMES_ARTIX[0]} | GROUP=${TREE_NAMES_ARTIX[0]} | ||||||
|  |  | ||||||
| usage() { | usage() { | ||||||
|     echo "Usage: ${0##*/} [options]" |     echo "Usage: ${0##*/} [options]" | ||||||
|     echo '    -p <pkg>      Package name' |     echo '    -p <pkg>      Package name' | ||||||
|     echo '    -t <team>     Team name (only with -n)' |     echo '    -t <team>     Team name (only with -n)' | ||||||
|  |     echo '                  Possible values: core,extra,community,multilib' | ||||||
|     echo "                  [default: ${TEAM}]" |     echo "                  [default: ${TEAM}]" | ||||||
|     echo '    -g <group>    Group name, the superrepo (only with -n or -s)' |     echo '    -g <group>    Group name, the superrepo (only with -n or -s)' | ||||||
|     echo "                  [default: ${GROUP}]" |     echo "                  [default: ${GROUP}]" | ||||||
|     echo "    -s            Clone or pull repos" |     echo "    -s            Clone or pull repos" | ||||||
|     echo "    -z            Don't clone or pull arch repos" |     echo "    -a            Don't clone or pull arch repos" | ||||||
|     echo "    -y            Don't clone or pull artix repos" |     echo "    -b            Don't clone or pull artix repos" | ||||||
|     echo '    -i            Import a package from arch repos' |     echo '    -i            Import a package from arch repos' | ||||||
|     echo '    -n            Make new remote subrepo and clone it' |     echo '    -n            Make new remote subrepo and clone it' | ||||||
|     echo '    -u            Include kde & gnome unstable (only with -i)' |  | ||||||
|     echo '    -w            Exclude staging (only with -i)' |  | ||||||
|     echo '    -v            Check if a package is in the artix tree(s)' |     echo '    -v            Check if a package is in the artix tree(s)' | ||||||
|     echo '    -c            View package depends' |     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 '    -h            This help' | ||||||
|     echo '' |     echo '' | ||||||
|     echo '' |     echo '' | ||||||
| @@ -240,7 +303,7 @@ usage() { | |||||||
|  |  | ||||||
| orig_argv=("$0" "$@") | orig_argv=("$0" "$@") | ||||||
|  |  | ||||||
| opts='p:t:g:uwsinzycvh' | opts='p:t:g:sinabcvxyzh' | ||||||
|  |  | ||||||
| while getopts "${opts}" arg; do | while getopts "${opts}" arg; do | ||||||
|     case "${arg}" in |     case "${arg}" in | ||||||
| @@ -248,14 +311,15 @@ while getopts "${opts}" arg; do | |||||||
|         t) TEAM="$OPTARG" ;; |         t) TEAM="$OPTARG" ;; | ||||||
|         g) GROUP="$OPTARG"; sync_group=true ;; |         g) GROUP="$OPTARG"; sync_group=true ;; | ||||||
|         s) sync=true ;; |         s) sync=true ;; | ||||||
|         z) sync_arch=false ;; |         a) sync_arch=false ;; | ||||||
|         y) sync_artix=false ;; |         b) sync_artix=false ;; | ||||||
|         i) import=true ;; |         i) import=true ;; | ||||||
|         n) createnew=true ;; |         n) createnew=true ;; | ||||||
|         w) staging=false ;; |  | ||||||
|         u) unstable=true ;; |  | ||||||
|         c) check=true ;; |         c) check=true ;; | ||||||
|         v) view=true ;; |         v) view=true ;; | ||||||
|  |         x) testing=false ;; | ||||||
|  |         y) staging=false ;; | ||||||
|  |         z) unstable=true ;; | ||||||
|         h|?) usage 0 ;; |         h|?) usage 0 ;; | ||||||
|         *) echo "invalid argument '${arg}'"; usage 1 ;; |         *) echo "invalid argument '${arg}'"; usage 1 ;; | ||||||
|     esac |     esac | ||||||
| @@ -266,6 +330,8 @@ shift $(($OPTIND - 1)) | |||||||
| prepare_dir "${TREE_DIR_ARTIX}" | prepare_dir "${TREE_DIR_ARTIX}" | ||||||
| prepare_dir "${TREE_DIR_ARCH}" | prepare_dir "${TREE_DIR_ARCH}" | ||||||
|  |  | ||||||
|  | set_arch_repos "$testing" "$staging" "$unstable" | ||||||
|  |  | ||||||
| ${sync} && sync_repos | ${sync} && sync_repos | ||||||
|  |  | ||||||
| ${view} && view_build | ${view} && view_build | ||||||
|   | |||||||
| @@ -32,15 +32,30 @@ prepare_commit(){ | |||||||
|     [[ ! -d repos/$dest ]] && mkdir repos/$dest |     [[ ! -d repos/$dest ]] && mkdir repos/$dest | ||||||
| } | } | ||||||
|  |  | ||||||
| commit_pkg(){ | check_team(){ | ||||||
|     local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") |     if [[ ${REPO_SRC} == "core" && ${REPO_DEST} == "extra" ]] || \ | ||||||
|     if [[ -n ${git_tree} ]];then |         [[ ${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) |         local head=$(get_local_head) | ||||||
|  |  | ||||||
|         cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE} |         cd ${artixpath} | ||||||
|  |  | ||||||
|         local pkgbuild=$(get_path "${REPO_SRC}") |         local pkgbuild=$(get_path "${REPO_SRC}") | ||||||
|  |  | ||||||
| @@ -67,19 +82,18 @@ commit_pkg(){ | |||||||
|             commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}" |             commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}" | ||||||
|             msg "Action: %s" "$commit_msg" |             msg "Action: %s" "$commit_msg" | ||||||
|             git add . |             git add . | ||||||
|  |  | ||||||
|         fi |         fi | ||||||
|         git commit -m "$commit_msg" |         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_pull "${PACKAGE}" | ||||||
|         subrepo_push "${PACKAGE}" |         subrepo_push "${PACKAGE}" | ||||||
|         subrepo_clean "${PACKAGE}" |         subrepo_clean "${PACKAGE}" | ||||||
|  |  | ||||||
|         ${push} && push_tree "${git_tree}" |         ${push} && push_tree "${group##*/}" | ||||||
|  |  | ||||||
|         git prune |         git prune | ||||||
|     else |     else | ||||||
| @@ -87,15 +101,17 @@ commit_pkg(){ | |||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| symlink_commit_pkg(){ | repo_commit_pkg(){ | ||||||
|     local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}") |     local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}") | ||||||
|     if [[ -n ${git_tree} ]];then |     if [[ -n ${artixpath} ]];then | ||||||
|  |  | ||||||
|         cd ${TREE_DIR_ARTIX}/${git_tree} |         local group=${artixpath%/*} | ||||||
|  |  | ||||||
|  |         cd ${group} | ||||||
|  |  | ||||||
|         local head=$(get_local_head) |         local head=$(get_local_head) | ||||||
|  |  | ||||||
|         cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE} |         cd ${artixpath} | ||||||
|  |  | ||||||
|         local pkgbuild=$(get_path "${REPO_SRC}") |         local pkgbuild=$(get_path "${REPO_SRC}") | ||||||
|  |  | ||||||
| @@ -127,22 +143,36 @@ symlink_commit_pkg(){ | |||||||
|         git add . |         git add . | ||||||
|         git commit -m "$commit_msg" |         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_pull "${PACKAGE}" | ||||||
|         subrepo_push "${PACKAGE}" |         subrepo_push "${PACKAGE}" | ||||||
|         subrepo_clean "${PACKAGE}" |         subrepo_clean "${PACKAGE}" | ||||||
|  |  | ||||||
|         ${push} && push_tree "${git_tree}" |         ${push} && push_tree "${group##*/}" | ||||||
|  |  | ||||||
|         git prune |         git prune | ||||||
|  |  | ||||||
|  |         check_team | ||||||
|     else |     else | ||||||
|         error "Package '%s' does not exist!" "${PACKAGE}" |         error "Package '%s' does not exist!" "${PACKAGE}" | ||||||
|     fi |     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 | load_makepkg_config | ||||||
|  |  | ||||||
| REPO_SRC='trunk' | REPO_SRC='trunk' | ||||||
| @@ -186,7 +216,7 @@ if $(is_valid_repo "${REPO_SRC}");then | |||||||
|     if [[ "${cmd}" == 'commitpkg' ]];then |     if [[ "${cmd}" == 'commitpkg' ]];then | ||||||
|         commit_pkg |         commit_pkg | ||||||
|     else |     else | ||||||
|         symlink_commit_pkg |         repo_commit_pkg | ||||||
|     fi |     fi | ||||||
| else | else | ||||||
|     error "source repository '%s' is not valid!" "${REPO_SRC}" |     error "source repository '%s' is not valid!" "${REPO_SRC}" | ||||||
|   | |||||||
| @@ -16,116 +16,126 @@ | |||||||
|  |  | ||||||
| prepare_artools | prepare_artools | ||||||
|  |  | ||||||
| compare(){ | get_import_path(){ | ||||||
|     local pkgpath="$1" group="$2" |     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 pkg=${pkgpath##*/} | ||||||
|     local artixrepo=$(find_repo "$pkgpath" "${staging}" "${unstable}") |     local artixrepo=$(find_repo "$pkgpath") | ||||||
|     local artixshow=${artixrepo%-*} |  | ||||||
|     local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD |     local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD | ||||||
|  |  | ||||||
|     if [[ -f $pkgbuild ]];then |     if [[ -f $pkgbuild ]];then | ||||||
|  |  | ||||||
|         . $pkgbuild 2>/dev/null |         . $pkgbuild 2>/dev/null | ||||||
|         local artixver=$(get_full_version) |         local artixver=$(get_full_version) | ||||||
|  |  | ||||||
|         local archpath=$(get_import_path $pkg) |         local archpath=$(get_import_path $pkg) | ||||||
|  |         local archrepo=$(find_repo "${archpath}") | ||||||
|         local archrepo=$(find_repo "$archpath" "${staging}" "${unstable}") |  | ||||||
|  |  | ||||||
|         local archshow=${archrepo%-*} |  | ||||||
|         pkgbuild=$archpath/repos/$archrepo/PKGBUILD |         pkgbuild=$archpath/repos/$archrepo/PKGBUILD | ||||||
|  |  | ||||||
|         if [[ -f $pkgbuild ]];then |         if [[ -f "$pkgbuild" ]];then | ||||||
|             . $pkgbuild 2>/dev/null |             . $pkgbuild 2>/dev/null | ||||||
|             local archver=$(get_full_version) |             local archver=$(get_full_version) | ||||||
|         fi |         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 |         unset pkgver epoch pkgrel artixver archver pkgbuild archpath | ||||||
|  |  | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
|  |  | ||||||
| is_db_entry() { | compare_upgrades(){ | ||||||
|     local pkgname="$1" repo="$(arch2artix $2)" |     local pkgpath="${1%/*}" | ||||||
|     if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then |     pre_compare compare_u "$pkgpath" | ||||||
|         return 0 |  | ||||||
|     fi |  | ||||||
|     return 1 |  | ||||||
| } | } | ||||||
|  |  | ||||||
| check_db(){ | compare_downgrades(){ | ||||||
|     local pkgpath="$1" |     local pkgpath="${1%/*}" | ||||||
|     local pkg=${pkgpath##*/} |     pre_compare compare_d "$pkgpath" | ||||||
|     local sarch=(any ${ARCH}) | } | ||||||
|     local arch_repos=$(arch_repos "${staging}" "${unstable}") |  | ||||||
|  |  | ||||||
|     for repo in ${arch_repos[@]};do | compare_move(){ | ||||||
|  |     local pkgpath="${1%/*}" | ||||||
|  |     pre_compare compare_m "$pkgpath" | ||||||
|  | } | ||||||
|  |  | ||||||
|         for a in ${sarch[@]};do | tree_loop(){ | ||||||
|  |     local func="$1" | ||||||
|             local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD |     for tree in ${TREE_NAMES_ARTIX[@]};do | ||||||
|  |         local pkgs=$(find ${TREE_DIR_ARTIX}/$tree -name trunk) | ||||||
|             if [[ -f $pkgbuild ]];then |         for package in ${pkgs[@]}; do | ||||||
|  |             "$func" "$package" | ||||||
|                 . $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 | ||||||
|     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(){ | update_db_cache(){ | ||||||
|     msg "Updating database cache" |     msg "Updating database cache" | ||||||
|     for repo in "${searchrepos[@]}"; do |     for repo in "${searchrepos[@]}"; do | ||||||
| @@ -148,80 +158,125 @@ query_db() { | |||||||
|                 read -r match |                 read -r match | ||||||
|                 pkg=${pkg#${db}} |                 pkg=${pkg#${db}} | ||||||
|                 pkg="${pkg%/*}" |                 pkg="${pkg%/*}" | ||||||
|  |  | ||||||
|                 msg_row "${tableQ}" "${repo}" "${pkg}" "${match}" |                 msg_row "${tableQ}" "${repo}" "${pkg}" "${match}" | ||||||
|             done < <(grep -rZ "${library}" "${db}") | sort -u |             done < <(grep -rZ "${library}" "${db}") | sort -u | ||||||
|         fi |         fi | ||||||
|     done |     done | ||||||
|     exit 0 |  | ||||||
| } | } | ||||||
|  |  | ||||||
| show_version_table(){ | show_lib_table() { | ||||||
|  |     ${sync} && update_db_cache | ||||||
|  |     msg_table_header "${tableQ}" "Repo" "Package" "Library" | ||||||
|  |     query_db | ||||||
|  | } | ||||||
|  |  | ||||||
|     if ${check};then | is_db_entry() { | ||||||
|         ${sync} && update_db_cache |     local pkgname="$1" repo="${REPOS[$2]}" | ||||||
|         msg_table_header "${tableU}" "Repo" "Package" "Version" "Database" |  | ||||||
|     elif ${query};then |     if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then | ||||||
|         ${sync} && update_db_cache |         return 0 | ||||||
|         msg_table_header "${tableQ}" "Repo" "Package" "Library" |  | ||||||
|         query_db |  | ||||||
|     else |  | ||||||
|         msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group" |  | ||||||
|     fi |     fi | ||||||
|  |     return 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|     if ${move} && [[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]]; then | check_db(){ | ||||||
|         rm ${TREE_DIR_ARTIX}/pkg_moves.list |     local pkgpath="${1%/*}" | ||||||
|     elif ${upgrades} && [[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]]; then |     local pkg=${pkgpath##*/} | ||||||
|         rm ${TREE_DIR_ARTIX}/pkg_upgrades.list |     local sarch=(any ${ARCH}) | ||||||
|     fi |  | ||||||
|  |  | ||||||
|     for tree in ${TREE_NAMES_ARTIX[@]};do |     for repo in ${ARCH_REPOS[@]};do | ||||||
|         local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d) |         for a in ${sarch[@]};do | ||||||
|         for package in ${git[@]}; do |  | ||||||
|             if ${check};then |             local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD | ||||||
|                 check_db "$package" |  | ||||||
|             else |             if [[ -f $pkgbuild ]];then | ||||||
|                 compare "$package" "$tree" |  | ||||||
|  |                 . $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 |             fi | ||||||
|         done |         done | ||||||
|     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" | db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools" | ||||||
|  |  | ||||||
| load_makepkg_config | load_makepkg_config | ||||||
|  |  | ||||||
| unstable=false | testing=true | ||||||
| staging=true | staging=true | ||||||
|  | unstable=false | ||||||
|  |  | ||||||
| upgrades=false | upgrades=false | ||||||
| downgrades=false | downgrades=false | ||||||
| move=false | move=false | ||||||
| check=false |  | ||||||
| sync=false |  | ||||||
| query=false |  | ||||||
|  |  | ||||||
| artix_repos=( | sync=false | ||||||
|     'goblins' 'gremlins' 'system' 'world' | check=false | ||||||
|     'galaxy-goblins' 'galaxy-gremlins' 'galaxy' | query=false | ||||||
|     'lib32-goblins' 'lib32-gremlins' 'lib32' |  | ||||||
|     'gnome-wobble' 'kde-wobble' |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| readonly table="%-18s %-18s %-25s %-27s %-27s %-10s" | readonly table="%-18s %-18s %-25s %-27s %-27s %-10s" | ||||||
| readonly tableU="%-20s %-35s %-30s %-10s" | readonly tableU="%-20s %-35s %-30s %-10s" | ||||||
| readonly tableQ="%-20s %-45s %s" | 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() { | usage() { | ||||||
|     echo "Usage: ${0##*/} [options] (with -q [libname])" |     echo "Usage: ${0##*/} [options] (with -q [libname])" | ||||||
|     echo '    -u            Show upgrade packages' |     echo '    -u            Show upgrade packages' | ||||||
|     echo '    -d            Show downgrade packages' |     echo '    -d            Show downgrade packages' | ||||||
|     echo '    -m            Show packages to move' |     echo '    -m            Show packages to move' | ||||||
|     echo "    -x            Don't inlcude staging packages" |     echo "    -x            Don't inlcude testing packages" | ||||||
|     echo '    -y            Include unstable kde and gnome' |     echo "    -y            Don't inlcude staging packages" | ||||||
|     echo '    -c            Check repos' |     echo '    -z            Include unstable kde and gnome' | ||||||
|     echo "    -s            Sync repo databases" |     echo "    -s            Sync repo databases" | ||||||
|  |     echo '    -c            Check repos' | ||||||
|     echo "    -q            Query repo databases for so libs" |     echo "    -q            Query repo databases for so libs" | ||||||
|     echo '    -r <repo>     Repo name to query' |     echo '    -r <repo>     Repo name to query' | ||||||
|     echo '                  [default: all]' |     echo '                  [default: all]' | ||||||
| @@ -233,19 +288,20 @@ usage() { | |||||||
|  |  | ||||||
| orig_argv=("$0" "$@") | orig_argv=("$0" "$@") | ||||||
|  |  | ||||||
| opts='r:qcsudmxyh' | opts='r:qcsudmxyzh' | ||||||
|  |  | ||||||
| while getopts "${opts}" arg; do | while getopts "${opts}" arg; do | ||||||
|     case "${arg}" in |     case "${arg}" in | ||||||
|         u) upgrades=true ;; |         u) upgrades=true ;; | ||||||
|         d) downgrades=true ;; |         d) downgrades=true ;; | ||||||
|         m) move=true ;; |         m) move=true ;; | ||||||
|         x) staging=false ;; |  | ||||||
|         y) unstable=true ;; |  | ||||||
|         c) check=true ;; |  | ||||||
|         s) sync=true ;; |         s) sync=true ;; | ||||||
|  |         c) check=true ;; | ||||||
|         q) query=true ;; |         q) query=true ;; | ||||||
|         r) searchrepos=("$OPTARG") ;; |         r) searchrepos=("$OPTARG") ;; | ||||||
|  |         x) testing=false ;; | ||||||
|  |         y) staging=false ;; | ||||||
|  |         z) unstable=true ;; | ||||||
|         h|?) usage 0 ;; |         h|?) usage 0 ;; | ||||||
|         *) echo "invalid argument '${arg}'"; usage 1 ;; |         *) echo "invalid argument '${arg}'"; usage 1 ;; | ||||||
|     esac |     esac | ||||||
| @@ -255,4 +311,14 @@ shift $(($OPTIND - 1)) | |||||||
|  |  | ||||||
| library="$1"; shift | 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 | ||||||
|   | |||||||
| @@ -19,9 +19,10 @@ prepare_artools | |||||||
| find_cached_pkgfile() { | find_cached_pkgfile() { | ||||||
|     local searchdirs=("$PKGDEST" "$PWD") results=() |     local searchdirs=("$PKGDEST" "$PWD") results=() | ||||||
|     local pkg="$1" |     local pkg="$1" | ||||||
|  |     local search=${pkg%.*} | ||||||
|     for dir in "${searchdirs[@]}"; do |     for dir in "${searchdirs[@]}"; do | ||||||
|         [[ -d $dir ]] || continue |         [[ -d $dir ]] || continue | ||||||
|         results+=$(find "$dir" -type f -name "$pkg") |         results+=$(find "$dir" -type f -name "$search.*" ! -path '*.sig' ! -path '*.log') | ||||||
|     done |     done | ||||||
|     case ${#results[*]} in |     case ${#results[*]} in | ||||||
|         0) |         0) | ||||||
|   | |||||||
| @@ -377,11 +377,7 @@ if chroot-run \ | |||||||
|     "$copydir" \ |     "$copydir" \ | ||||||
|     /chrootbuild "${makepkg_args[@]}" |     /chrootbuild "${makepkg_args[@]}" | ||||||
| then | then | ||||||
|     pkgnames=() |     mapfile -t pkgnames < <(sudo -u "$makepkg_user" bash -c 'source PKGBUILD; printf "%s\n" "${pkgname[@]}"') | ||||||
|     for pkgfile in "$copydir"/pkgdest/*; do |  | ||||||
|         pkgfile=${pkgfile##*/}; |  | ||||||
|         pkgnames+=("${pkgfile%-*-*-*}"); |  | ||||||
|     done |  | ||||||
|     move_products |     move_products | ||||||
| else | else | ||||||
|     (( ret += 1 )) |     (( ret += 1 )) | ||||||
| @@ -398,27 +394,28 @@ if (( ret != 0 )); then | |||||||
| else | else | ||||||
|     if (( run_checkpkg )); then |     if (( run_checkpkg )); then | ||||||
|         msg "Running checkpkg" |         msg "Running checkpkg" | ||||||
|         # sync off-site databases for up-to-date queries |  | ||||||
|         trap 'rm -rf $dbpath; cleanup' EXIT INT TERM QUIT |  | ||||||
|         dbpath=$(mktemp -d --tmpdir makechrootpkg-database.XXXXXXXXXX) |  | ||||||
|         mkdir -p "$dbpath" |  | ||||||
|         pacman -Sy --dbpath "$dbpath" --logfile /dev/null |  | ||||||
|  |  | ||||||
|         # query current package locations |         mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \ | ||||||
|         remotepkgs=($(pacman -Sddp --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}")) |             --dbpath "$copydir"/var/lib/pacman \ | ||||||
|         if (( $? )); then |             -Sddp "${pkgnames[@]}") | ||||||
|  |  | ||||||
|  |         if ! wait $!; then | ||||||
|             warning "Skipped checkpkg due to missing repo packages" |             warning "Skipped checkpkg due to missing repo packages" | ||||||
|             exit 0 |             exit 0 | ||||||
|         fi |         fi | ||||||
|         # download package files if any non-local location exists |         # download package files if any non-local location exists | ||||||
|         for remotepkg in "${remotepkgs[@]}"; do |         for remotepkg in "${remotepkgs[@]}"; do | ||||||
|             [[ $remotepkg == file://* ]] && continue |             if [[ $remotepkg != file://* ]]; then | ||||||
|             msg2 "Downloading current versions" |                 msg2 "Downloading current versions" | ||||||
|             pacman --noconfirm -Swdd --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}" |                 chroot-run "$copydir" pacman --noconfirm -Swdd "${pkgnames[@]}" | ||||||
|             break |                 mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \ | ||||||
|  |                     --dbpath "$copydir"/var/lib/pacman \ | ||||||
|  |                     -Sddp "${pkgnames[@]}") | ||||||
|  |                 break | ||||||
|  |             fi | ||||||
|         done |         done | ||||||
|         msg2 "Checking packages" |         msg2 "Checking packages" | ||||||
|         sudo -u "$makepkg_user" checkpkg --rmdir --warn |         sudo -u "$makepkg_user" checkpkg --rmdir --warn "${remotepkgs[@]/#file:\/\//}" | ||||||
|     fi |     fi | ||||||
|     true |     true | ||||||
| fi | fi | ||||||
|   | |||||||
| @@ -14,6 +14,8 @@ | |||||||
| #         packages | #         packages | ||||||
| #         community | #         community | ||||||
| #         packages-kernel | #         packages-kernel | ||||||
|  | #         packages-net | ||||||
|  | #         packages-gfx | ||||||
| #         packages-openrc | #         packages-openrc | ||||||
| #         packages-runit | #         packages-runit | ||||||
| #         packages-s6 | #         packages-s6 | ||||||
| @@ -32,6 +34,7 @@ | |||||||
| #         packages-mate | #         packages-mate | ||||||
| #         packages-kde | #         packages-kde | ||||||
| #         packages-xfce | #         packages-xfce | ||||||
|  | #         packages-wm | ||||||
| # ) | # ) | ||||||
|  |  | ||||||
| # HOST_TREE_ARCH=git://git.archlinux.org/svntogit | # HOST_TREE_ARCH=git://git.archlinux.org/svntogit | ||||||
|   | |||||||
| @@ -132,7 +132,7 @@ DBGSRCDIR="/usr/src/debug" | |||||||
| COMPRESSGZ=(gzip -c -f -n) | COMPRESSGZ=(gzip -c -f -n) | ||||||
| COMPRESSBZ2=(bzip2 -c -f) | COMPRESSBZ2=(bzip2 -c -f) | ||||||
| COMPRESSXZ=(xz -c -z -) | COMPRESSXZ=(xz -c -z -) | ||||||
| COMPRESSZST=(zstd -c -z -q -) | COMPRESSZST=(zstd -c -T0 --ultra -20 -) | ||||||
| COMPRESSLRZ=(lrzip -q) | COMPRESSLRZ=(lrzip -q) | ||||||
| COMPRESSLZO=(lzop -q) | COMPRESSLZO=(lzop -q) | ||||||
| COMPRESSZ=(compress -c -f) | COMPRESSZ=(compress -c -f) | ||||||
| @@ -143,7 +143,7 @@ COMPRESSLZ=(lzip -c -f) | |||||||
| # EXTENSION DEFAULTS | # EXTENSION DEFAULTS | ||||||
| ######################################################################### | ######################################################################### | ||||||
| # | # | ||||||
| PKGEXT='.pkg.tar.xz' | PKGEXT='.pkg.tar.zst' | ||||||
| SRCEXT='.src.tar.gz' | SRCEXT='.src.tar.gz' | ||||||
|  |  | ||||||
| # vim: set ft=sh ts=2 sw=2 et: | # vim: set ft=sh ts=2 sw=2 et: | ||||||
|   | |||||||
| @@ -42,6 +42,12 @@ add_svc_s6(){ | |||||||
|         fi |         fi | ||||||
|     done |     done | ||||||
|     chroot $mnt s6-rc-bundle -c /etc/s6/rc/compiled add $rlvl $valid |     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(){ | set_xdm(){ | ||||||
| @@ -143,10 +149,10 @@ write_unpackfs() { | |||||||
|     local yaml=$(write_yaml_header) |     local yaml=$(write_yaml_header) | ||||||
|     yaml+=$(write_yaml_map 0 'unpack') |     yaml+=$(write_yaml_map 0 'unpack') | ||||||
| #     if ${persist}; then | #     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"') | #         yaml+=$(write_yaml_map 4 'sourcefs' '"ext4"') | ||||||
| #     else | #     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"') |     yaml+=$(write_yaml_map 4 'sourcefs' '"squashfs"') | ||||||
| #     fi | #     fi | ||||||
|     yaml+=$(write_yaml_map 4 'destination' '""') |     yaml+=$(write_yaml_map 4 'destination' '""') | ||||||
|   | |||||||
| @@ -130,12 +130,15 @@ configure_grub(){ | |||||||
|  |  | ||||||
| prepare_grub(){ | prepare_grub(){ | ||||||
|     local platform=i386-pc img='core.img' prefix=/boot/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 |     local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot | ||||||
|  |  | ||||||
|  |  | ||||||
|     prepare_dir ${grub}/${platform} |     prepare_dir ${grub}/${platform} | ||||||
|  |  | ||||||
|     cp ${theme}/cfg/*.cfg ${grub} |     cp ${livecfg}/cfg/*.cfg ${grub} | ||||||
|  |  | ||||||
|     cp ${lib}/${platform}/* ${grub}/${platform} |     cp ${lib}/${platform}/* ${grub}/${platform} | ||||||
|  |  | ||||||
| @@ -158,8 +161,9 @@ prepare_grub(){ | |||||||
|     grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660 |     grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660 | ||||||
|  |  | ||||||
|     prepare_dir ${grub}/themes |     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 |     if [[ -f /usr/share/grub/unicode.pf2 ]];then | ||||||
|         msg2 "Copying %s ..." "unicode.pf2" |         msg2 "Copying %s ..." "unicode.pf2" | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ error_function() { | |||||||
|         error "A failure occurred in %s()." "$func" |         error "A failure occurred in %s()." "$func" | ||||||
|         plain "Aborting..." |         plain "Aborting..." | ||||||
|     fi |     fi | ||||||
|     umount_overlay |     umount_overlayfs | ||||||
|     umount_img |     umount_img | ||||||
|     exit 2 |     exit 2 | ||||||
| } | } | ||||||
| @@ -41,7 +41,7 @@ run_safe() { | |||||||
| trap_exit() { | trap_exit() { | ||||||
|     local sig=$1; shift |     local sig=$1; shift | ||||||
|     error "$@" |     error "$@" | ||||||
|     umount_overlay |     umount_overlayfs | ||||||
|     trap -- "$sig" |     trap -- "$sig" | ||||||
|     kill "-$sig" "$$" |     kill "-$sig" "$$" | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										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 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
| # GNU General Public License for more details. | # GNU General Public License for more details. | ||||||
|  |  | ||||||
| create_repo(){ | create_repo() { | ||||||
|     local pkg="$1" org="$2" |     local pkg="$1" org="$2" | ||||||
|     local gitname=$(get_compliant_name "$pkg") |     local gitname=$(get_compliant_name "$pkg") | ||||||
|     local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }" |     local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }" | ||||||
| @@ -27,33 +27,16 @@ create_repo(){ | |||||||
|     echo |     echo | ||||||
| } | } | ||||||
|  |  | ||||||
| delete_repo(){ | get_team_id() { | ||||||
|     local pkg="$1" org="$2" |     local org="$1" team="$2" | ||||||
|     local gitname=$(get_compliant_name "$pkg") |     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') | ||||||
|     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 |  | ||||||
|  |  | ||||||
|     echo $id |     echo $id | ||||||
| } | } | ||||||
|  |  | ||||||
| add_repo_to_team(){ | add_repo_to_team() { | ||||||
|     local pkg="$1" org="$2" team="$3" |     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") |     local gitname=$(get_compliant_name "$pkg") | ||||||
|  |  | ||||||
|     msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team" |     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}" \ |     curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \ | ||||||
|         -H  "accept: application/json" |         -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 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
| # GNU General Public License for more details. | # 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(){ | get_pkg_org(){ | ||||||
|     local pkg="$1" org= sub= |     local pkg="$1" org= sub= | ||||||
|     case ${pkg} in |     case ${pkg} in | ||||||
| @@ -31,111 +23,34 @@ get_pkg_org(){ | |||||||
|     echo $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(){ | subrepo_push(){ | ||||||
|     local pkg="$1" |     local pkg="$1" | ||||||
|     msg2 "Push (%s)" "$pkg" |     msg2 "Subrepo push (%s)" "$pkg" | ||||||
|     git subrepo push "$pkg" |     git subrepo push "$pkg" | ||||||
| } | } | ||||||
|  |  | ||||||
| subrepo_clean(){ | subrepo_clean(){ | ||||||
|     local pkg="$1" |     local pkg="$1" | ||||||
|     msg2 "Clean (%s)" "$pkg" |     msg2 "Subrepo clean (%s)" "$pkg" | ||||||
|     git subrepo clean "$pkg" |     git subrepo clean "$pkg" | ||||||
| } | } | ||||||
|  |  | ||||||
| subrepo_pull(){ | subrepo_pull(){ | ||||||
|     local pkg="$1" |     local pkg="$1" | ||||||
|     msg2 "Pull (%s)" "$pkg" |     msg2 "Subrepo pull (%s)" "$pkg" | ||||||
|     git subrepo pull "$pkg" |     git subrepo pull "$pkg" | ||||||
| } | } | ||||||
|  |  | ||||||
| subrepo_clone(){ | subrepo_clone(){ | ||||||
|     local pkg="$1" org="$2" |     local pkg="$1" org="$2" | ||||||
|     local gitname=$(get_compliant_name "$pkg") |     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" |     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 .. |  | ||||||
| } |  | ||||||
|   | |||||||
							
								
								
									
										107
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							
							
						
						
									
										107
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							| @@ -22,111 +22,28 @@ get_compliant_name(){ | |||||||
|     echo $gitname |     echo $gitname | ||||||
| } | } | ||||||
|  |  | ||||||
| arch2artix(){ | set_arch_repos(){ | ||||||
|     local repo="$1" artix=none |     local x="$1" y="$2" z="$3" | ||||||
|     case "$repo" in |     ARCH_REPOS=(core extra community multilib) | ||||||
|         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 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| find_tree(){ |     $x && ARCH_REPOS+=(testing community-testing multilib-testing) | ||||||
|     local tree="$1" pkg="$2" |     $y && ARCH_REPOS+=(staging community-staging multilib-staging) | ||||||
|     local result=$(find $tree -mindepth 2 -maxdepth 2 -type d -name "$pkg") |     $z && ARCH_REPOS+=(gnome-unstable kde-unstable) | ||||||
|     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[@]} |  | ||||||
| } | } | ||||||
|  |  | ||||||
| find_repo(){ | find_repo(){ | ||||||
|     local pkg="$1" stag="$2" unst="$3" repo= |     local pkg="$1" repo= | ||||||
|  |     for r in ${ARCH_REPOS[@]};do | ||||||
|     for r in $(arch_repos "$stag" "$unst");do |  | ||||||
|         [[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH} |         [[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH} | ||||||
|         [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any |         [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any | ||||||
|     done |     done | ||||||
|     echo $repo |     echo $repo | ||||||
| } | } | ||||||
|  |  | ||||||
| is_valid_repo(){ | find_pkg(){ | ||||||
|     local src="$1" cases= |     local searchdir="$1" pkg="$2" | ||||||
|     for r in $(arch_repos true true);do |     local result=$(find $searchdir -mindepth 2 -maxdepth 2 -type d -name "$pkg") | ||||||
|         cases=${cases:-}${cases:+|}${r} |     echo $result | ||||||
|     done |  | ||||||
|     eval "case $src in |  | ||||||
|         ${cases}|trunk) return 0 ;; |  | ||||||
|         *) return 1 ;; |  | ||||||
|     esac" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| 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() { | pkgver_equal() { | ||||||
|   | |||||||
| @@ -41,6 +41,8 @@ load_pkg_config(){ | |||||||
|             packages |             packages | ||||||
|             community |             community | ||||||
|             packages-kernel |             packages-kernel | ||||||
|  |             packages-net | ||||||
|  |             packages-gfx | ||||||
|             packages-openrc |             packages-openrc | ||||||
|             packages-runit |             packages-runit | ||||||
|             packages-s6 |             packages-s6 | ||||||
| @@ -58,6 +60,7 @@ load_pkg_config(){ | |||||||
|             packages-mate |             packages-mate | ||||||
|             packages-kde |             packages-kde | ||||||
|             packages-xfce |             packages-xfce | ||||||
|  |             packages-wm | ||||||
| #             packages-haskell | #             packages-haskell | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user