forked from artix/artools
		
	Compare commits
	
		
			16 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3865ceab58 | |||
| 890e631e1b | |||
| 273e928905 | |||
| f5c328f8e5 | |||
| 4089151791 | |||
| 211579f9d7 | |||
| 2a85209e1e | |||
| 40d691bc85 | |||
| d9da64eb51 | |||
| 5902f987cc | |||
| bfa888251e | |||
| 0ecfa1a0f6 | |||
| e60180ebdb | |||
| 20b65d06c8 | |||
| c7728c2e5b | |||
| a0ca1ab3a4 | 
							
								
								
									
										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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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,117 @@ 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 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 +258,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 +302,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 +310,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 +329,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() {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if ${check};then
 | 
					 | 
				
			||||||
        ${sync} && update_db_cache
 | 
					 | 
				
			||||||
        msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
 | 
					 | 
				
			||||||
    elif ${query};then
 | 
					 | 
				
			||||||
    ${sync} && update_db_cache
 | 
					    ${sync} && update_db_cache
 | 
				
			||||||
    msg_table_header "${tableQ}" "Repo" "Package" "Library"
 | 
					    msg_table_header "${tableQ}" "Repo" "Package" "Library"
 | 
				
			||||||
    query_db
 | 
					    query_db
 | 
				
			||||||
    else
 | 
					}
 | 
				
			||||||
        msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ${move} && [[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]]; then
 | 
					is_db_entry() {
 | 
				
			||||||
        rm ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
					    local pkgname="$1" repo="${REPOS[$2]}"
 | 
				
			||||||
    elif ${upgrades} && [[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]]; then
 | 
					 | 
				
			||||||
        rm ${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for tree in ${TREE_NAMES_ARTIX[@]};do
 | 
					    if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
 | 
				
			||||||
        local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d)
 | 
					        return 0
 | 
				
			||||||
        for package in ${git[@]}; do
 | 
					    fi
 | 
				
			||||||
            if ${check};then
 | 
					    return 1
 | 
				
			||||||
                check_db "$package"
 | 
					}
 | 
				
			||||||
            else
 | 
					
 | 
				
			||||||
                compare "$package" "$tree"
 | 
					check_db(){
 | 
				
			||||||
 | 
					    local pkgpath="${1%/*}"
 | 
				
			||||||
 | 
					    local pkg=${pkgpath##*/}
 | 
				
			||||||
 | 
					    local sarch=(any ${ARCH})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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
 | 
					            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')
 | 
				
			||||||
    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[@]}"
 | 
				
			||||||
 | 
					                mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \
 | 
				
			||||||
 | 
					                    --dbpath "$copydir"/var/lib/pacman \
 | 
				
			||||||
 | 
					                    -Sddp "${pkgnames[@]}")
 | 
				
			||||||
                break
 | 
					                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,7 @@
 | 
				
			|||||||
#         packages
 | 
					#         packages
 | 
				
			||||||
#         community
 | 
					#         community
 | 
				
			||||||
#         packages-kernel
 | 
					#         packages-kernel
 | 
				
			||||||
 | 
					#         packages-net
 | 
				
			||||||
#         packages-openrc
 | 
					#         packages-openrc
 | 
				
			||||||
#         packages-runit
 | 
					#         packages-runit
 | 
				
			||||||
#         packages-s6
 | 
					#         packages-s6
 | 
				
			||||||
@@ -32,6 +33,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(){
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										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,7 @@ load_pkg_config(){
 | 
				
			|||||||
            packages
 | 
					            packages
 | 
				
			||||||
            community
 | 
					            community
 | 
				
			||||||
            packages-kernel
 | 
					            packages-kernel
 | 
				
			||||||
 | 
					            packages-net
 | 
				
			||||||
            packages-openrc
 | 
					            packages-openrc
 | 
				
			||||||
            packages-runit
 | 
					            packages-runit
 | 
				
			||||||
            packages-s6
 | 
					            packages-s6
 | 
				
			||||||
@@ -58,6 +59,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