forked from artix/artools
		
	Compare commits
	
		
			22 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 08b73032a2 | |||
| 46431619f2 | |||
| 12d2159c12 | |||
| 3865ceab58 | |||
| 890e631e1b | |||
| 273e928905 | |||
| f5c328f8e5 | |||
| 4089151791 | |||
| 211579f9d7 | |||
| 2a85209e1e | |||
| 40d691bc85 | |||
| d9da64eb51 | |||
| 5902f987cc | |||
| bfa888251e | |||
| 0ecfa1a0f6 | |||
| e60180ebdb | |||
| 20b65d06c8 | |||
| c7728c2e5b | |||
| a0ca1ab3a4 | |||
| 911a0fff36 | |||
| f80c51e8d3 | |||
| 1e948b3ef5 | 
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
VERSION=0.16
 | 
			
		||||
VERSION=0.17
 | 
			
		||||
 | 
			
		||||
CHROOT_VERSION=0.10
 | 
			
		||||
 | 
			
		||||
@@ -90,7 +90,7 @@ LN_DEPLOYPKG = \
 | 
			
		||||
	deploypkg-gnome-wobble
 | 
			
		||||
 | 
			
		||||
PKG_LIBS = \
 | 
			
		||||
	$(wildcard lib/pkg/*)
 | 
			
		||||
	$(wildcard lib/pkg/*.sh)
 | 
			
		||||
 | 
			
		||||
PKG_UTIL = lib/util-pkg.sh
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ artools
 | 
			
		||||
- pkg:
 | 
			
		||||
  * namcap
 | 
			
		||||
  * git-subrepo
 | 
			
		||||
  * jshon
 | 
			
		||||
  * jq
 | 
			
		||||
 | 
			
		||||
- iso:
 | 
			
		||||
  * dosfstools
 | 
			
		||||
 
 | 
			
		||||
@@ -147,7 +147,7 @@ elif [[ $(cat "$working_dir/.artools") != ${CHROOTVERSION} ]]; then
 | 
			
		||||
    die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
sync_host_localtime
 | 
			
		||||
#sync_host_localtime
 | 
			
		||||
 | 
			
		||||
chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -17,32 +17,38 @@
 | 
			
		||||
prepare_artools
 | 
			
		||||
 | 
			
		||||
patch_pkg(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    local pkgpath="$1"
 | 
			
		||||
    local pkg=${pkgpath%/*}
 | 
			
		||||
    pkg=${pkg##*/}
 | 
			
		||||
    case $pkg in
 | 
			
		||||
        glibc)
 | 
			
		||||
            msg2 "Patching %s" "$pkg"
 | 
			
		||||
            sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
 | 
			
		||||
                -e '/nscd.service/d' \
 | 
			
		||||
                -i $pkg/trunk/PKGBUILD
 | 
			
		||||
                -i $pkgpath/PKGBUILD
 | 
			
		||||
        ;;
 | 
			
		||||
        linux|linux-lts)
 | 
			
		||||
            sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkg/trunk/PKGBUILD
 | 
			
		||||
            msg2 "Patching %s" "$pkg"
 | 
			
		||||
            sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i $pkgpath/PKGBUILD
 | 
			
		||||
            sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
 | 
			
		||||
                -i $pkg/trunk/config
 | 
			
		||||
                -i $pkgpath/config
 | 
			
		||||
        ;;
 | 
			
		||||
        bash)
 | 
			
		||||
            msg2 "Patching %s" "$pkg"
 | 
			
		||||
            sed -e 's|system.bash_logout)|system.bash_logout artix.bashrc)|' \
 | 
			
		||||
            -e "s|etc/bash.|etc/bash/|g" \
 | 
			
		||||
            -e 's|"$pkgdir/etc/skel/.bash_logout"|"$pkgdir/etc/skel/.bash_logout"\n  install -Dm644 artix.bashrc $pkgdir/etc/bash/bashrc.d/artix.bashrc|' \
 | 
			
		||||
            -i $pkg/trunk/PKGBUILD
 | 
			
		||||
            cd $pkg/trunk
 | 
			
		||||
            -i $pkgpath/PKGBUILD
 | 
			
		||||
            cd $pkgpath
 | 
			
		||||
                patch -Np 1 -i ${DATADIR}/patches/artix-bash.patch
 | 
			
		||||
                updpkgsums
 | 
			
		||||
            cd ../..
 | 
			
		||||
        ;;
 | 
			
		||||
        gstreamer|gst-plugins-*|licenses)
 | 
			
		||||
            msg2 "Patching %s" "$pkg"
 | 
			
		||||
            sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
 | 
			
		||||
                -e 's|(Arch Linux)|(Artix Linux)|' \
 | 
			
		||||
                -i $pkg/trunk/PKGBUILD
 | 
			
		||||
                -i $pkgpath/PKGBUILD
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
@@ -84,7 +90,7 @@ sync_pkg(){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_deps(){
 | 
			
		||||
    local src="$1" repo="$2"
 | 
			
		||||
    local src="$1"
 | 
			
		||||
 | 
			
		||||
    . $src/PKGBUILD 2>/dev/null
 | 
			
		||||
 | 
			
		||||
@@ -92,7 +98,6 @@ show_deps(){
 | 
			
		||||
 | 
			
		||||
    local archver=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
    msg2 "repo: %s" "$repo"
 | 
			
		||||
    [[ -n ${pkgbase} ]] && msg2 "pkgbase: %s" "${pkgbase}"
 | 
			
		||||
    msg2 "pkgname: %s" "${pkgname[*]}"
 | 
			
		||||
    [[ -n $pkgdesc ]] && msg2 "pkgdesc: %s" "${pkgdesc}"
 | 
			
		||||
@@ -111,6 +116,9 @@ subrepo_new(){
 | 
			
		||||
 | 
			
		||||
    cd ${TREE_DIR_ARTIX}/$group
 | 
			
		||||
 | 
			
		||||
    msg2 "team: %s" "$team"
 | 
			
		||||
    msg2 "group: %s" "$group"
 | 
			
		||||
 | 
			
		||||
    local org=$(get_pkg_org "${PACKAGE}")
 | 
			
		||||
 | 
			
		||||
    create_repo "${PACKAGE}" "$org"
 | 
			
		||||
@@ -124,66 +132,118 @@ subrepo_new(){
 | 
			
		||||
    commit_jenkins_files "${PACKAGE}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
from_arch(){
 | 
			
		||||
    local src= dest=
 | 
			
		||||
get_group_packages(){
 | 
			
		||||
    local pkglist="${SYSCONFDIR}/pkglist.d/$1.list"
 | 
			
		||||
 | 
			
		||||
    local _space="s| ||g" _clean=':a;N;$!ba;s/\n/ /g' _com_rm="s|#.*||g"
 | 
			
		||||
 | 
			
		||||
    local pkgs=($(sed "$_com_rm" "$pkglist" | sed "$_space" | sed "$_clean"))
 | 
			
		||||
 | 
			
		||||
    local cases=
 | 
			
		||||
    for p in ${pkgs[@]};do
 | 
			
		||||
        cases=${cases:-}${cases:+|}${p}
 | 
			
		||||
    done
 | 
			
		||||
    echo $cases
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_group(){
 | 
			
		||||
    local pkg="$1" fallback="${2##*/}" tree=
 | 
			
		||||
    eval "case $pkg in
 | 
			
		||||
        $(get_group_packages kernel)) tree=packages-kernel ;;
 | 
			
		||||
        $(get_group_packages net)) tree=packages-net ;;
 | 
			
		||||
        $(get_group_packages gfx)) tree=packages-gfx ;;
 | 
			
		||||
        $(get_group_packages python)) tree=packages-python ;;
 | 
			
		||||
        $(get_group_packages perl)) tree=packages-perl ;;
 | 
			
		||||
        $(get_group_packages ruby)) tree=packages-ruby ;;
 | 
			
		||||
        $(get_group_packages openrc)) tree=packages-openrc ;;
 | 
			
		||||
        $(get_group_packages runit)) tree=packages-runit ;;
 | 
			
		||||
        $(get_group_packages s6)) tree=packages-s6 ;;
 | 
			
		||||
        $(get_group_packages media)) tree=packages-media ;;
 | 
			
		||||
        $(get_group_packages xorg)) tree=packages-xorg ;;
 | 
			
		||||
        $(get_group_packages qt5)) tree=packages-qt5 ;;
 | 
			
		||||
        $(get_group_packages gtk)) tree=packages-gtk ;;
 | 
			
		||||
        $(get_group_packages java)) tree=packages-java ;;
 | 
			
		||||
        $(get_group_packages haskell)) tree=packages-haskell ;;
 | 
			
		||||
        $(get_group_packages devel)) tree=packages-devel ;;
 | 
			
		||||
        $(get_group_packages lxqt)) tree=packages-lxqt ;;
 | 
			
		||||
        $(get_group_packages cinnamon)) tree=packages-cinnamon ;;
 | 
			
		||||
        $(get_group_packages kde)) tree=packages-kde ;;
 | 
			
		||||
        $(get_group_packages gnome)) tree=packages-gnome ;;
 | 
			
		||||
        $(get_group_packages mate)) tree=packages-mate ;;
 | 
			
		||||
        $(get_group_packages xfce)) tree=packages-xfce ;;
 | 
			
		||||
        $(get_group_packages wm)) tree=packages-wm ;;
 | 
			
		||||
        *) tree=$fallback ;;
 | 
			
		||||
    esac"
 | 
			
		||||
    echo $tree
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_team(){
 | 
			
		||||
    local repo="$1" team=
 | 
			
		||||
    case $repo in
 | 
			
		||||
        *testing*|*staging*)
 | 
			
		||||
            set_arch_repos false false false
 | 
			
		||||
            team=$(find_repo "$srcpath")
 | 
			
		||||
            team=${team%-*}
 | 
			
		||||
        ;;
 | 
			
		||||
        *) team=${repo%-*} ;;
 | 
			
		||||
    esac
 | 
			
		||||
    echo $team
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
from_arch(){
 | 
			
		||||
    cd ${TREE_DIR_ARTIX}
 | 
			
		||||
 | 
			
		||||
    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
			
		||||
    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    local srcpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
			
		||||
    [[ -z $srcpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
 | 
			
		||||
    local package=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
 | 
			
		||||
    local repo=$(find_repo "$package" "${staging}" "${unstable}")
 | 
			
		||||
    local repo=$(find_repo "$srcpath")
 | 
			
		||||
 | 
			
		||||
    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}")
 | 
			
		||||
    local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
 | 
			
		||||
    msg "repo: %s" "$repo"
 | 
			
		||||
    artixpath=$artixpath/trunk
 | 
			
		||||
 | 
			
		||||
    dest=${TREE_DIR_ARTIX}/$tree_dir/${PACKAGE}/trunk
 | 
			
		||||
    show_deps "$archpath"
 | 
			
		||||
 | 
			
		||||
    msg "tree: %s" "$tree_dir"
 | 
			
		||||
    show_deps "$src" "$repo"
 | 
			
		||||
    if [[ -f $artixpath/PKGBUILD ]];then
 | 
			
		||||
 | 
			
		||||
    if [[ -d $dest ]];then
 | 
			
		||||
 | 
			
		||||
        cd ${TREE_DIR_ARTIX}/$git_tree_artix
 | 
			
		||||
 | 
			
		||||
        . $dest/PKGBUILD 2>/dev/null
 | 
			
		||||
        . $artixpath/PKGBUILD 2>/dev/null
 | 
			
		||||
        local artixver=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
        msg2 "Artix Version: %s" "$artixver"
 | 
			
		||||
    else
 | 
			
		||||
        subrepo_new "$tree_dir" "$git_tree_arch"
 | 
			
		||||
        artixpath=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
 | 
			
		||||
        subrepo_new "${group}" "$(get_team $repo)"
 | 
			
		||||
    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"
 | 
			
		||||
    patch_pkg "${PACKAGE}"
 | 
			
		||||
    sync_pkg "$archpath" "$artixpath"
 | 
			
		||||
    patch_pkg "$artixpath"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
view_build(){
 | 
			
		||||
    local src=
 | 
			
		||||
    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
			
		||||
    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
 | 
			
		||||
    local pkg_path=${TREE_DIR_ARCH}/$git_tree_arch/${PACKAGE}
 | 
			
		||||
    local repo=$(find_repo "$pkg_path" "${staging}" "${unstable}")
 | 
			
		||||
 | 
			
		||||
    src=$pkg_path/repos/$repo
 | 
			
		||||
 | 
			
		||||
    show_deps "$src" "$repo"
 | 
			
		||||
    local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
			
		||||
    [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    local repo=$(find_repo "${archpath}")
 | 
			
		||||
    archpath=$archpath/repos/$repo
 | 
			
		||||
    msg2 "repo: %s" "$repo"
 | 
			
		||||
    show_deps "$archpath"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_tree(){
 | 
			
		||||
    local git_tree_arch=$(find_tree "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
			
		||||
    [[ -z $git_tree_arch ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    local git_tree_artix=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
			
		||||
    local tree_dir=$(get_artix_tree "${PACKAGE}" "$git_tree_artix" "$git_tree_arch")
 | 
			
		||||
    msg "tree_dir: %s" "$tree_dir"
 | 
			
		||||
    [[ -z $git_tree_artix ]] && msg2 "exists: %s" "no"
 | 
			
		||||
    [[ -n $git_tree_artix ]] && msg2 "exists: %s" "yes"
 | 
			
		||||
    local archpath=$(find_pkg "${TREE_DIR_ARCH}" "${PACKAGE}")
 | 
			
		||||
    [[ -z $archpath ]] && die "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" ${PACKAGE})
 | 
			
		||||
    local group=${artixpath%/*}
 | 
			
		||||
    msg "group: %s" "${group##*/}"
 | 
			
		||||
 | 
			
		||||
    [[ -z $artixpath ]] && msg2 "exists: %s" "no"
 | 
			
		||||
    [[ -n $artixpath ]] && msg2 "exists: %s" "yes"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sync_repos(){
 | 
			
		||||
@@ -199,39 +259,42 @@ sync_repos(){
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 | 
			
		||||
testing=true
 | 
			
		||||
staging=true
 | 
			
		||||
unstable=false
 | 
			
		||||
 | 
			
		||||
sync=false
 | 
			
		||||
sync_arch=true
 | 
			
		||||
sync_artix=true
 | 
			
		||||
import=false
 | 
			
		||||
view=false
 | 
			
		||||
createnew=false
 | 
			
		||||
conf=false
 | 
			
		||||
unstable=false
 | 
			
		||||
staging=true
 | 
			
		||||
sync_group=false
 | 
			
		||||
check=false
 | 
			
		||||
 | 
			
		||||
PACKAGE=''
 | 
			
		||||
 | 
			
		||||
TEAM=${TREE_NAMES_ARTIX[0]}
 | 
			
		||||
TEAM='community'
 | 
			
		||||
GROUP=${TREE_NAMES_ARTIX[0]}
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options]"
 | 
			
		||||
    echo '    -p <pkg>      Package name'
 | 
			
		||||
    echo '    -t <team>     Team name (only with -n)'
 | 
			
		||||
    echo '                  Possible values: core,extra,community,multilib'
 | 
			
		||||
    echo "                  [default: ${TEAM}]"
 | 
			
		||||
    echo '    -g <group>    Group name, the superrepo (only with -n or -s)'
 | 
			
		||||
    echo "                  [default: ${GROUP}]"
 | 
			
		||||
    echo "    -s            Clone or pull repos"
 | 
			
		||||
    echo "    -z            Don't clone or pull arch repos"
 | 
			
		||||
    echo "    -y            Don't clone or pull artix repos"
 | 
			
		||||
    echo "    -a            Don't clone or pull arch repos"
 | 
			
		||||
    echo "    -b            Don't clone or pull artix repos"
 | 
			
		||||
    echo '    -i            Import a package from arch repos'
 | 
			
		||||
    echo '    -n            Make new remote subrepo and clone it'
 | 
			
		||||
    echo '    -u            Include kde & gnome unstable (only with -i)'
 | 
			
		||||
    echo '    -w            Exclude staging (only with -i)'
 | 
			
		||||
    echo '    -v            Check if a package is in the artix tree(s)'
 | 
			
		||||
    echo '    -c            View package depends'
 | 
			
		||||
    echo '    -x            Exclude testing (only with -i)'
 | 
			
		||||
    echo '    -y            Exclude staging (only with -i)'
 | 
			
		||||
    echo '    -z            Include kde & gnome unstable (only with -i)'
 | 
			
		||||
    echo '    -h            This help'
 | 
			
		||||
    echo ''
 | 
			
		||||
    echo ''
 | 
			
		||||
@@ -240,7 +303,7 @@ usage() {
 | 
			
		||||
 | 
			
		||||
orig_argv=("$0" "$@")
 | 
			
		||||
 | 
			
		||||
opts='p:t:g:uwsinzycvh'
 | 
			
		||||
opts='p:t:g:sinabcvxyzh'
 | 
			
		||||
 | 
			
		||||
while getopts "${opts}" arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
@@ -248,14 +311,15 @@ while getopts "${opts}" arg; do
 | 
			
		||||
        t) TEAM="$OPTARG" ;;
 | 
			
		||||
        g) GROUP="$OPTARG"; sync_group=true ;;
 | 
			
		||||
        s) sync=true ;;
 | 
			
		||||
        z) sync_arch=false ;;
 | 
			
		||||
        y) sync_artix=false ;;
 | 
			
		||||
        a) sync_arch=false ;;
 | 
			
		||||
        b) sync_artix=false ;;
 | 
			
		||||
        i) import=true ;;
 | 
			
		||||
        n) createnew=true ;;
 | 
			
		||||
        w) staging=false ;;
 | 
			
		||||
        u) unstable=true ;;
 | 
			
		||||
        c) check=true ;;
 | 
			
		||||
        v) view=true ;;
 | 
			
		||||
        x) testing=false ;;
 | 
			
		||||
        y) staging=false ;;
 | 
			
		||||
        z) unstable=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
@@ -266,6 +330,8 @@ shift $(($OPTIND - 1))
 | 
			
		||||
prepare_dir "${TREE_DIR_ARTIX}"
 | 
			
		||||
prepare_dir "${TREE_DIR_ARCH}"
 | 
			
		||||
 | 
			
		||||
set_arch_repos "$testing" "$staging" "$unstable"
 | 
			
		||||
 | 
			
		||||
${sync} && sync_repos
 | 
			
		||||
 | 
			
		||||
${view} && view_build
 | 
			
		||||
 
 | 
			
		||||
@@ -32,15 +32,30 @@ prepare_commit(){
 | 
			
		||||
    [[ ! -d repos/$dest ]] && mkdir repos/$dest
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
commit_pkg(){
 | 
			
		||||
    local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
			
		||||
    if [[ -n ${git_tree} ]];then
 | 
			
		||||
check_team(){
 | 
			
		||||
    if [[ ${REPO_SRC} == "core" && ${REPO_DEST} == "extra" ]] || \
 | 
			
		||||
        [[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "core" ]] || \
 | 
			
		||||
        [[ ${REPO_SRC} == "extra" && ${REPO_DEST} == "community" ]] || \
 | 
			
		||||
        [[ ${REPO_SRC} == "community" && ${REPO_DEST} == "extra" ]] ;then
 | 
			
		||||
 | 
			
		||||
        cd ${TREE_DIR_ARTIX}/${git_tree}
 | 
			
		||||
        local org=$(get_pkg_org "${PACKAGE}")
 | 
			
		||||
        add_repo_to_team "${PACKAGE}" "$org" "${REPO_DEST}"
 | 
			
		||||
        remove_repo_from_team "${PACKAGE}" "$org" "${REPO_SRC}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
commit_pkg(){
 | 
			
		||||
    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
			
		||||
 | 
			
		||||
    if [[ -n ${artixpath} ]];then
 | 
			
		||||
 | 
			
		||||
        local group=${artixpath%/*}
 | 
			
		||||
 | 
			
		||||
        cd ${group}
 | 
			
		||||
 | 
			
		||||
        local head=$(get_local_head)
 | 
			
		||||
 | 
			
		||||
        cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
 | 
			
		||||
        cd ${artixpath}
 | 
			
		||||
 | 
			
		||||
        local pkgbuild=$(get_path "${REPO_SRC}")
 | 
			
		||||
 | 
			
		||||
@@ -67,19 +82,18 @@ commit_pkg(){
 | 
			
		||||
            commit_msg="[${REPO_SRC}] '${PACKAGE}-$version' ${action}"
 | 
			
		||||
            msg "Action: %s" "$commit_msg"
 | 
			
		||||
            git add .
 | 
			
		||||
 | 
			
		||||
        fi
 | 
			
		||||
        git commit -m "$commit_msg"
 | 
			
		||||
 | 
			
		||||
        cd ${TREE_DIR_ARTIX}/${git_tree}
 | 
			
		||||
        cd ${group}
 | 
			
		||||
 | 
			
		||||
        ${push} && pull_tree "${git_tree}" "$head"
 | 
			
		||||
        ${push} && pull_tree "${group##*/}" "$head"
 | 
			
		||||
 | 
			
		||||
#         subrepo_pull "${PACKAGE}"
 | 
			
		||||
        subrepo_push "${PACKAGE}"
 | 
			
		||||
        subrepo_clean "${PACKAGE}"
 | 
			
		||||
 | 
			
		||||
        ${push} && push_tree "${git_tree}"
 | 
			
		||||
        ${push} && push_tree "${group##*/}"
 | 
			
		||||
 | 
			
		||||
        git prune
 | 
			
		||||
    else
 | 
			
		||||
@@ -87,15 +101,17 @@ commit_pkg(){
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
symlink_commit_pkg(){
 | 
			
		||||
    local git_tree=$(find_tree "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
			
		||||
    if [[ -n ${git_tree} ]];then
 | 
			
		||||
repo_commit_pkg(){
 | 
			
		||||
    local artixpath=$(find_pkg "${TREE_DIR_ARTIX}" "${PACKAGE}")
 | 
			
		||||
    if [[ -n ${artixpath} ]];then
 | 
			
		||||
 | 
			
		||||
        cd ${TREE_DIR_ARTIX}/${git_tree}
 | 
			
		||||
        local group=${artixpath%/*}
 | 
			
		||||
 | 
			
		||||
        cd ${group}
 | 
			
		||||
 | 
			
		||||
        local head=$(get_local_head)
 | 
			
		||||
 | 
			
		||||
        cd ${TREE_DIR_ARTIX}/${git_tree}/${PACKAGE}
 | 
			
		||||
        cd ${artixpath}
 | 
			
		||||
 | 
			
		||||
        local pkgbuild=$(get_path "${REPO_SRC}")
 | 
			
		||||
 | 
			
		||||
@@ -127,22 +143,36 @@ symlink_commit_pkg(){
 | 
			
		||||
        git add .
 | 
			
		||||
        git commit -m "$commit_msg"
 | 
			
		||||
 | 
			
		||||
        cd ${TREE_DIR_ARTIX}/${git_tree}
 | 
			
		||||
        cd ${group}
 | 
			
		||||
 | 
			
		||||
        ${push} && pull_tree "${git_tree}" "$head"
 | 
			
		||||
        ${push} && pull_tree "${group##*/}" "$head"
 | 
			
		||||
 | 
			
		||||
#         subrepo_pull "${PACKAGE}"
 | 
			
		||||
        subrepo_push "${PACKAGE}"
 | 
			
		||||
        subrepo_clean "${PACKAGE}"
 | 
			
		||||
 | 
			
		||||
        ${push} && push_tree "${git_tree}"
 | 
			
		||||
        ${push} && push_tree "${group##*/}"
 | 
			
		||||
 | 
			
		||||
        git prune
 | 
			
		||||
 | 
			
		||||
        check_team
 | 
			
		||||
    else
 | 
			
		||||
        error "Package '%s' does not exist!" "${PACKAGE}"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
is_valid_repo(){
 | 
			
		||||
    local src="$1" cases=
 | 
			
		||||
    set_arch_repos true true true
 | 
			
		||||
    for r in ${ARCH_REPOS[@]};do
 | 
			
		||||
        cases=${cases:-}${cases:+|}${r}
 | 
			
		||||
    done
 | 
			
		||||
    eval "case $src in
 | 
			
		||||
        ${cases}|trunk) return 0 ;;
 | 
			
		||||
        *) return 1 ;;
 | 
			
		||||
    esac"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 | 
			
		||||
REPO_SRC='trunk'
 | 
			
		||||
@@ -186,7 +216,7 @@ if $(is_valid_repo "${REPO_SRC}");then
 | 
			
		||||
    if [[ "${cmd}" == 'commitpkg' ]];then
 | 
			
		||||
        commit_pkg
 | 
			
		||||
    else
 | 
			
		||||
        symlink_commit_pkg
 | 
			
		||||
        repo_commit_pkg
 | 
			
		||||
    fi
 | 
			
		||||
else
 | 
			
		||||
    error "source repository '%s' is not valid!" "${REPO_SRC}"
 | 
			
		||||
 
 | 
			
		||||
@@ -16,116 +16,126 @@
 | 
			
		||||
 | 
			
		||||
prepare_artools
 | 
			
		||||
 | 
			
		||||
compare(){
 | 
			
		||||
    local pkgpath="$1" group="$2"
 | 
			
		||||
get_import_path(){
 | 
			
		||||
    local pkg="$1" import_path=
 | 
			
		||||
 | 
			
		||||
    for tree in ${TREE_NAMES_ARCH[@]};do
 | 
			
		||||
        [[ -d ${TREE_DIR_ARCH}/$tree/$pkg/repos ]] && import_path=${TREE_DIR_ARCH}/$tree/$pkg
 | 
			
		||||
    done
 | 
			
		||||
    echo $import_path
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
compare_m(){
 | 
			
		||||
    local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
 | 
			
		||||
 | 
			
		||||
    local result=$(vercmp "$artixver" "$archver")
 | 
			
		||||
    if [[ $artixrepo == *testing* ]] || [[ $artixrepo == *staging* ]]; then
 | 
			
		||||
        if [[ "$archrepo" == "$artixrepo"  ]]; then
 | 
			
		||||
            msg_row "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
        else
 | 
			
		||||
            msg_row_notify "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
            if [[ -n "$archrepo" ]]; then
 | 
			
		||||
                printf "%s\n" "${archrepo%-*}:${artixrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
			
		||||
            fi
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
compare_u(){
 | 
			
		||||
    local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
 | 
			
		||||
 | 
			
		||||
    local result=$(vercmp "$artixver" "$archver")
 | 
			
		||||
    if [ $result -eq -1 ];then
 | 
			
		||||
        msg_row_upgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
        printf "%s\n" "${archrepo%-*}:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
compare_d(){
 | 
			
		||||
    local artixver="$1" artixrepo="$2" archver="$3" archrepo="$4"
 | 
			
		||||
 | 
			
		||||
    local result=$(vercmp "$artixver" "$archver")
 | 
			
		||||
    if [ $result -eq 1 ];then
 | 
			
		||||
        if [[ -n "$archver" ]] && [[ -n "$archrepo" ]];then
 | 
			
		||||
            msg_row_downgrade "${table}" "${archrepo%-*}" "${artixrepo%-*}" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pre_compare(){
 | 
			
		||||
    local func="$1" pkgpath="$2"
 | 
			
		||||
    local group="${pkgpath%/*}"
 | 
			
		||||
    group=${group##*/}
 | 
			
		||||
    local pkg=${pkgpath##*/}
 | 
			
		||||
    local artixrepo=$(find_repo "$pkgpath" "${staging}" "${unstable}")
 | 
			
		||||
    local artixshow=${artixrepo%-*}
 | 
			
		||||
    local artixrepo=$(find_repo "$pkgpath")
 | 
			
		||||
    local pkgbuild=$pkgpath/repos/$artixrepo/PKGBUILD
 | 
			
		||||
 | 
			
		||||
    if [[ -f $pkgbuild ]];then
 | 
			
		||||
 | 
			
		||||
        . $pkgbuild 2>/dev/null
 | 
			
		||||
        local artixver=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
        local archpath=$(get_import_path $pkg)
 | 
			
		||||
 | 
			
		||||
        local archrepo=$(find_repo "$archpath" "${staging}" "${unstable}")
 | 
			
		||||
 | 
			
		||||
        local archshow=${archrepo%-*}
 | 
			
		||||
        local archrepo=$(find_repo "${archpath}")
 | 
			
		||||
        pkgbuild=$archpath/repos/$archrepo/PKGBUILD
 | 
			
		||||
 | 
			
		||||
        if [[ -f $pkgbuild ]];then
 | 
			
		||||
        if [[ -f "$pkgbuild" ]];then
 | 
			
		||||
            . $pkgbuild 2>/dev/null
 | 
			
		||||
            local archver=$(get_full_version)
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        local result=$(vercmp "$artixver" "$archver")
 | 
			
		||||
        "$func" "$artixver" "$artixrepo" "$archver" "$archrepo"
 | 
			
		||||
 | 
			
		||||
        local repomatch=false
 | 
			
		||||
        [[ "$archrepo" == "$artixrepo" ]] && repomatch=true
 | 
			
		||||
 | 
			
		||||
        if ${move};then
 | 
			
		||||
 | 
			
		||||
            if [ $result -gt -1 ];then
 | 
			
		||||
                case $artixrepo in
 | 
			
		||||
                    *testing*|*staging*)
 | 
			
		||||
                        if $repomatch;then
 | 
			
		||||
                            msg_row "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
                        else
 | 
			
		||||
                            msg_row_notify "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
 | 
			
		||||
                            if [[ -n "$archshow" ]]; then
 | 
			
		||||
                                printf "%s\n" "$archshow:$artixshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
			
		||||
                            fi
 | 
			
		||||
                        fi
 | 
			
		||||
                    ;;
 | 
			
		||||
                esac
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
        elif ${upgrades};then
 | 
			
		||||
 | 
			
		||||
            if [ $result -eq -1 ];then
 | 
			
		||||
                msg_row_upgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
 | 
			
		||||
                printf "%s\n" "$archshow:$pkg" >> ${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
        elif ${downgrades};then
 | 
			
		||||
 | 
			
		||||
            if [ $result -eq 1 ];then
 | 
			
		||||
                if [[ -n $archver ]] && [[ -n $archrepo ]];then
 | 
			
		||||
                    msg_row_downgrade "${table}" "$archshow" "$artixshow" "$pkg" "$archver" "$artixver" "${group#*-}"
 | 
			
		||||
                fi
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
        fi
 | 
			
		||||
        unset pkgver epoch pkgrel artixver archver pkgbuild archpath
 | 
			
		||||
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
is_db_entry() {
 | 
			
		||||
    local pkgname="$1" repo="$(arch2artix $2)"
 | 
			
		||||
    if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
 | 
			
		||||
        return 0
 | 
			
		||||
    fi
 | 
			
		||||
    return 1
 | 
			
		||||
compare_upgrades(){
 | 
			
		||||
    local pkgpath="${1%/*}"
 | 
			
		||||
    pre_compare compare_u "$pkgpath"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_db(){
 | 
			
		||||
    local pkgpath="$1"
 | 
			
		||||
    local pkg=${pkgpath##*/}
 | 
			
		||||
    local sarch=(any ${ARCH})
 | 
			
		||||
    local arch_repos=$(arch_repos "${staging}" "${unstable}")
 | 
			
		||||
compare_downgrades(){
 | 
			
		||||
    local pkgpath="${1%/*}"
 | 
			
		||||
    pre_compare compare_d "$pkgpath"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    for repo in ${arch_repos[@]};do
 | 
			
		||||
compare_move(){
 | 
			
		||||
    local pkgpath="${1%/*}"
 | 
			
		||||
    pre_compare compare_m "$pkgpath"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
        for a in ${sarch[@]};do
 | 
			
		||||
 | 
			
		||||
            local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
 | 
			
		||||
 | 
			
		||||
            if [[ -f $pkgbuild ]];then
 | 
			
		||||
 | 
			
		||||
                . $pkgbuild 2>/dev/null
 | 
			
		||||
                local artixver=$(get_full_version)
 | 
			
		||||
                local is_entry=false
 | 
			
		||||
 | 
			
		||||
                for name in ${pkgname[@]};do
 | 
			
		||||
 | 
			
		||||
                    if is_db_entry "$name-$artixver" "$repo";then
 | 
			
		||||
                        is_entry=true
 | 
			
		||||
                    fi
 | 
			
		||||
                    if ! $is_entry; then
 | 
			
		||||
                        msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry"
 | 
			
		||||
                    fi
 | 
			
		||||
                done
 | 
			
		||||
                unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
 | 
			
		||||
            fi
 | 
			
		||||
tree_loop(){
 | 
			
		||||
    local func="$1"
 | 
			
		||||
    for tree in ${TREE_NAMES_ARTIX[@]};do
 | 
			
		||||
        local pkgs=$(find ${TREE_DIR_ARTIX}/$tree -name trunk)
 | 
			
		||||
        for package in ${pkgs[@]}; do
 | 
			
		||||
            "$func" "$package"
 | 
			
		||||
        done
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_compare_header(){
 | 
			
		||||
    msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_upgrades_table(){
 | 
			
		||||
    show_compare_header
 | 
			
		||||
    [[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]] && rm ${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
			
		||||
    tree_loop compare_upgrades
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_downgrades_table(){
 | 
			
		||||
    show_compare_header
 | 
			
		||||
    tree_loop compare_downgrades
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_move_table(){
 | 
			
		||||
    show_compare_header
 | 
			
		||||
    [[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]] && rm ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
			
		||||
    tree_loop compare_move
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update_db_cache(){
 | 
			
		||||
    msg "Updating database cache"
 | 
			
		||||
    for repo in "${searchrepos[@]}"; do
 | 
			
		||||
@@ -148,80 +158,125 @@ query_db() {
 | 
			
		||||
                read -r match
 | 
			
		||||
                pkg=${pkg#${db}}
 | 
			
		||||
                pkg="${pkg%/*}"
 | 
			
		||||
 | 
			
		||||
                msg_row "${tableQ}" "${repo}" "${pkg}" "${match}"
 | 
			
		||||
            done < <(grep -rZ "${library}" "${db}") | sort -u
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_version_table(){
 | 
			
		||||
show_lib_table() {
 | 
			
		||||
    ${sync} && update_db_cache
 | 
			
		||||
    msg_table_header "${tableQ}" "Repo" "Package" "Library"
 | 
			
		||||
    query_db
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    if ${check};then
 | 
			
		||||
        ${sync} && update_db_cache
 | 
			
		||||
        msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
 | 
			
		||||
    elif ${query};then
 | 
			
		||||
        ${sync} && update_db_cache
 | 
			
		||||
        msg_table_header "${tableQ}" "Repo" "Package" "Library"
 | 
			
		||||
        query_db
 | 
			
		||||
    else
 | 
			
		||||
        msg_table_header "${table}" "Arch Repo" "Artix Repo" "Package" "Arch version" "Artix version" "Group"
 | 
			
		||||
is_db_entry() {
 | 
			
		||||
    local pkgname="$1" repo="${REPOS[$2]}"
 | 
			
		||||
 | 
			
		||||
    if [[ -d ${db_cache_dir}/${LINKSDBEXT}/${ARCH}/$repo/$pkgname ]];then
 | 
			
		||||
        return 0
 | 
			
		||||
    fi
 | 
			
		||||
    return 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    if ${move} && [[ -f ${TREE_DIR_ARTIX}/pkg_moves.list ]]; then
 | 
			
		||||
        rm ${TREE_DIR_ARTIX}/pkg_moves.list
 | 
			
		||||
    elif ${upgrades} && [[ -f ${TREE_DIR_ARTIX}/pkg_upgrades.list ]]; then
 | 
			
		||||
        rm ${TREE_DIR_ARTIX}/pkg_upgrades.list
 | 
			
		||||
    fi
 | 
			
		||||
check_db(){
 | 
			
		||||
    local pkgpath="${1%/*}"
 | 
			
		||||
    local pkg=${pkgpath##*/}
 | 
			
		||||
    local sarch=(any ${ARCH})
 | 
			
		||||
 | 
			
		||||
    for tree in ${TREE_NAMES_ARTIX[@]};do
 | 
			
		||||
        local git=$(find ${TREE_DIR_ARTIX}/$tree/ -mindepth 1 -maxdepth 1 -type d)
 | 
			
		||||
        for package in ${git[@]}; do
 | 
			
		||||
            if ${check};then
 | 
			
		||||
                check_db "$package"
 | 
			
		||||
            else
 | 
			
		||||
                compare "$package" "$tree"
 | 
			
		||||
    for repo in ${ARCH_REPOS[@]};do
 | 
			
		||||
        for a in ${sarch[@]};do
 | 
			
		||||
 | 
			
		||||
            local pkgbuild=$pkgpath/repos/$repo-$a/PKGBUILD
 | 
			
		||||
 | 
			
		||||
            if [[ -f $pkgbuild ]];then
 | 
			
		||||
 | 
			
		||||
                . $pkgbuild 2>/dev/null
 | 
			
		||||
                local artixver=$(get_full_version)
 | 
			
		||||
 | 
			
		||||
                local is_entry=false
 | 
			
		||||
 | 
			
		||||
                for name in ${pkgname[@]};do
 | 
			
		||||
 | 
			
		||||
                    if is_db_entry "$name-$artixver" "$repo";then
 | 
			
		||||
                        is_entry=true
 | 
			
		||||
                    fi
 | 
			
		||||
                    if ! $is_entry;then
 | 
			
		||||
                        msg_row "${tableU}" "$repo" "$name" "$artixver" "$is_entry"
 | 
			
		||||
                    fi
 | 
			
		||||
                done
 | 
			
		||||
                unset artixver is_entry pkgbuild pkgver epoch pkgname pkgbase
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
show_db_table(){
 | 
			
		||||
    ${sync} && update_db_cache
 | 
			
		||||
    msg_table_header "${tableU}" "Repo" "Package" "Version" "Database"
 | 
			
		||||
    tree_loop check_db
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
db_cache_dir="${XDG_CACHE_HOME:-$USER_HOME/.cache}/artools"
 | 
			
		||||
 | 
			
		||||
load_makepkg_config
 | 
			
		||||
 | 
			
		||||
unstable=false
 | 
			
		||||
testing=true
 | 
			
		||||
staging=true
 | 
			
		||||
unstable=false
 | 
			
		||||
 | 
			
		||||
upgrades=false
 | 
			
		||||
downgrades=false
 | 
			
		||||
move=false
 | 
			
		||||
check=false
 | 
			
		||||
sync=false
 | 
			
		||||
query=false
 | 
			
		||||
 | 
			
		||||
artix_repos=(
 | 
			
		||||
    'goblins' 'gremlins' 'system' 'world'
 | 
			
		||||
    'galaxy-goblins' 'galaxy-gremlins' 'galaxy'
 | 
			
		||||
    'lib32-goblins' 'lib32-gremlins' 'lib32'
 | 
			
		||||
    'gnome-wobble' 'kde-wobble'
 | 
			
		||||
)
 | 
			
		||||
sync=false
 | 
			
		||||
check=false
 | 
			
		||||
query=false
 | 
			
		||||
 | 
			
		||||
readonly table="%-18s %-18s %-25s %-27s %-27s %-10s"
 | 
			
		||||
readonly tableU="%-20s %-35s %-30s %-10s"
 | 
			
		||||
readonly tableQ="%-20s %-45s %s"
 | 
			
		||||
 | 
			
		||||
searchrepos=(${artix_repos[@]})
 | 
			
		||||
declare -A REPOS=(
 | 
			
		||||
    [core]=system
 | 
			
		||||
    [extra]=world
 | 
			
		||||
    [community]=galaxy
 | 
			
		||||
    [multilib]=lib32
 | 
			
		||||
    [testing]=gremlins
 | 
			
		||||
    [staging]=goblins
 | 
			
		||||
    [community-testing]=galaxy-gremlins
 | 
			
		||||
    [community-staging]=galaxy-goblins
 | 
			
		||||
    [multilib-testing]=lib32-gremlins
 | 
			
		||||
    [multilib-staging]=lib32-goblins
 | 
			
		||||
    [kde-unstable]=kde-wobble
 | 
			
		||||
    [gnome-unstable]=gnome-wobble
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
searchrepos=(
 | 
			
		||||
    ${REPOS[kde-unstable]}
 | 
			
		||||
    ${REPOS[gnome-unstable]}
 | 
			
		||||
    ${REPOS[staging]}
 | 
			
		||||
    ${REPOS[testing]}
 | 
			
		||||
    ${REPOS[core]}
 | 
			
		||||
    ${REPOS[extra]}
 | 
			
		||||
    ${REPOS[community-staging]}
 | 
			
		||||
    ${REPOS[community-testing]}
 | 
			
		||||
    ${REPOS[community]}
 | 
			
		||||
    ${REPOS[multilib-staging]}
 | 
			
		||||
    ${REPOS[multilib-testing]}
 | 
			
		||||
    ${REPOS[multilib]}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: ${0##*/} [options] (with -q [libname])"
 | 
			
		||||
    echo '    -u            Show upgrade packages'
 | 
			
		||||
    echo '    -d            Show downgrade packages'
 | 
			
		||||
    echo '    -m            Show packages to move'
 | 
			
		||||
    echo "    -x            Don't inlcude staging packages"
 | 
			
		||||
    echo '    -y            Include unstable kde and gnome'
 | 
			
		||||
    echo '    -c            Check repos'
 | 
			
		||||
    echo "    -x            Don't inlcude testing packages"
 | 
			
		||||
    echo "    -y            Don't inlcude staging packages"
 | 
			
		||||
    echo '    -z            Include unstable kde and gnome'
 | 
			
		||||
    echo "    -s            Sync repo databases"
 | 
			
		||||
    echo '    -c            Check repos'
 | 
			
		||||
    echo "    -q            Query repo databases for so libs"
 | 
			
		||||
    echo '    -r <repo>     Repo name to query'
 | 
			
		||||
    echo '                  [default: all]'
 | 
			
		||||
@@ -233,19 +288,20 @@ usage() {
 | 
			
		||||
 | 
			
		||||
orig_argv=("$0" "$@")
 | 
			
		||||
 | 
			
		||||
opts='r:qcsudmxyh'
 | 
			
		||||
opts='r:qcsudmxyzh'
 | 
			
		||||
 | 
			
		||||
while getopts "${opts}" arg; do
 | 
			
		||||
    case "${arg}" in
 | 
			
		||||
        u) upgrades=true ;;
 | 
			
		||||
        d) downgrades=true ;;
 | 
			
		||||
        m) move=true ;;
 | 
			
		||||
        x) staging=false ;;
 | 
			
		||||
        y) unstable=true ;;
 | 
			
		||||
        c) check=true ;;
 | 
			
		||||
        s) sync=true ;;
 | 
			
		||||
        c) check=true ;;
 | 
			
		||||
        q) query=true ;;
 | 
			
		||||
        r) searchrepos=("$OPTARG") ;;
 | 
			
		||||
        x) testing=false ;;
 | 
			
		||||
        y) staging=false ;;
 | 
			
		||||
        z) unstable=true ;;
 | 
			
		||||
        h|?) usage 0 ;;
 | 
			
		||||
        *) echo "invalid argument '${arg}'"; usage 1 ;;
 | 
			
		||||
    esac
 | 
			
		||||
@@ -255,4 +311,14 @@ shift $(($OPTIND - 1))
 | 
			
		||||
 | 
			
		||||
library="$1"; shift
 | 
			
		||||
 | 
			
		||||
show_version_table
 | 
			
		||||
set_arch_repos "$testing" "$staging" "$unstable"
 | 
			
		||||
 | 
			
		||||
${move} && show_move_table
 | 
			
		||||
 | 
			
		||||
${upgrades} && show_upgrades_table
 | 
			
		||||
 | 
			
		||||
${downgrades} && show_downgrades_table
 | 
			
		||||
 | 
			
		||||
${check} && show_db_table
 | 
			
		||||
 | 
			
		||||
${query} && show_lib_table
 | 
			
		||||
 
 | 
			
		||||
@@ -19,9 +19,10 @@ prepare_artools
 | 
			
		||||
find_cached_pkgfile() {
 | 
			
		||||
    local searchdirs=("$PKGDEST" "$PWD") results=()
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    local search=${pkg%.*}
 | 
			
		||||
    for dir in "${searchdirs[@]}"; do
 | 
			
		||||
        [[ -d $dir ]] || continue
 | 
			
		||||
        results+=$(find "$dir" -type f -name "$pkg")
 | 
			
		||||
        results+=$(find "$dir" -type f -name "$search.*" ! -path '*.sig' ! -path '*.log')
 | 
			
		||||
    done
 | 
			
		||||
    case ${#results[*]} in
 | 
			
		||||
        0)
 | 
			
		||||
 
 | 
			
		||||
@@ -377,11 +377,7 @@ if chroot-run \
 | 
			
		||||
    "$copydir" \
 | 
			
		||||
    /chrootbuild "${makepkg_args[@]}"
 | 
			
		||||
then
 | 
			
		||||
    pkgnames=()
 | 
			
		||||
    for pkgfile in "$copydir"/pkgdest/*; do
 | 
			
		||||
        pkgfile=${pkgfile##*/};
 | 
			
		||||
        pkgnames+=("${pkgfile%-*-*-*}");
 | 
			
		||||
    done
 | 
			
		||||
    mapfile -t pkgnames < <(sudo -u "$makepkg_user" bash -c 'source PKGBUILD; printf "%s\n" "${pkgname[@]}"')
 | 
			
		||||
    move_products
 | 
			
		||||
else
 | 
			
		||||
    (( ret += 1 ))
 | 
			
		||||
@@ -398,27 +394,28 @@ if (( ret != 0 )); then
 | 
			
		||||
else
 | 
			
		||||
    if (( run_checkpkg )); then
 | 
			
		||||
        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
 | 
			
		||||
        remotepkgs=($(pacman -Sddp --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"))
 | 
			
		||||
        if (( $? )); then
 | 
			
		||||
        mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \
 | 
			
		||||
            --dbpath "$copydir"/var/lib/pacman \
 | 
			
		||||
            -Sddp "${pkgnames[@]}")
 | 
			
		||||
 | 
			
		||||
        if ! wait $!; then
 | 
			
		||||
            warning "Skipped checkpkg due to missing repo packages"
 | 
			
		||||
            exit 0
 | 
			
		||||
        fi
 | 
			
		||||
        # download package files if any non-local location exists
 | 
			
		||||
        for remotepkg in "${remotepkgs[@]}"; do
 | 
			
		||||
            [[ $remotepkg == file://* ]] && continue
 | 
			
		||||
            msg2 "Downloading current versions"
 | 
			
		||||
            pacman --noconfirm -Swdd --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"
 | 
			
		||||
            break
 | 
			
		||||
            if [[ $remotepkg != file://* ]]; then
 | 
			
		||||
                msg2 "Downloading current versions"
 | 
			
		||||
                chroot-run "$copydir" pacman --noconfirm -Swdd "${pkgnames[@]}"
 | 
			
		||||
                mapfile -t remotepkgs < <(pacman --config "$copydir"/etc/pacman.conf \
 | 
			
		||||
                    --dbpath "$copydir"/var/lib/pacman \
 | 
			
		||||
                    -Sddp "${pkgnames[@]}")
 | 
			
		||||
                break
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
        msg2 "Checking packages"
 | 
			
		||||
        sudo -u "$makepkg_user" checkpkg --rmdir --warn
 | 
			
		||||
        sudo -u "$makepkg_user" checkpkg --rmdir --warn "${remotepkgs[@]/#file:\/\//}"
 | 
			
		||||
    fi
 | 
			
		||||
    true
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,8 @@
 | 
			
		||||
#         packages
 | 
			
		||||
#         community
 | 
			
		||||
#         packages-kernel
 | 
			
		||||
#         packages-net
 | 
			
		||||
#         packages-gfx
 | 
			
		||||
#         packages-openrc
 | 
			
		||||
#         packages-runit
 | 
			
		||||
#         packages-s6
 | 
			
		||||
@@ -32,6 +34,7 @@
 | 
			
		||||
#         packages-mate
 | 
			
		||||
#         packages-kde
 | 
			
		||||
#         packages-xfce
 | 
			
		||||
#         packages-wm
 | 
			
		||||
# )
 | 
			
		||||
 | 
			
		||||
# HOST_TREE_ARCH=git://git.archlinux.org/svntogit
 | 
			
		||||
 
 | 
			
		||||
@@ -132,7 +132,7 @@ DBGSRCDIR="/usr/src/debug"
 | 
			
		||||
COMPRESSGZ=(gzip -c -f -n)
 | 
			
		||||
COMPRESSBZ2=(bzip2 -c -f)
 | 
			
		||||
COMPRESSXZ=(xz -c -z -)
 | 
			
		||||
COMPRESSZST=(zstd -c -z -q -)
 | 
			
		||||
COMPRESSZST=(zstd -c -T0 --ultra -20 -)
 | 
			
		||||
COMPRESSLRZ=(lrzip -q)
 | 
			
		||||
COMPRESSLZO=(lzop -q)
 | 
			
		||||
COMPRESSZ=(compress -c -f)
 | 
			
		||||
@@ -143,7 +143,7 @@ COMPRESSLZ=(lzip -c -f)
 | 
			
		||||
# EXTENSION DEFAULTS
 | 
			
		||||
#########################################################################
 | 
			
		||||
#
 | 
			
		||||
PKGEXT='.pkg.tar.xz'
 | 
			
		||||
PKGEXT='.pkg.tar.zst'
 | 
			
		||||
SRCEXT='.src.tar.gz'
 | 
			
		||||
 | 
			
		||||
# vim: set ft=sh ts=2 sw=2 et:
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,12 @@ add_svc_s6(){
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
    chroot $mnt s6-rc-bundle -c /etc/s6/rc/compiled add $rlvl $valid
 | 
			
		||||
 | 
			
		||||
    # rebuild s6-linux-init binaries
 | 
			
		||||
    chroot $mnt rm -r /etc/s6/current
 | 
			
		||||
    chroot $mnt s6-linux-init-maker -1 -N -f /etc/s6/skel -G "/usr/bin/agetty -L -8 tty1 115200" -c /etc/s6/current /etc/s6/current
 | 
			
		||||
    chroot $mnt mv /etc/s6/current/bin/init /etc/s6/current/bin/s6-init
 | 
			
		||||
    chroot $mnt cp -a /etc/s6/current/bin /usr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
set_xdm(){
 | 
			
		||||
@@ -143,10 +149,10 @@ write_unpackfs() {
 | 
			
		||||
    local yaml=$(write_yaml_header)
 | 
			
		||||
    yaml+=$(write_yaml_map 0 'unpack')
 | 
			
		||||
#     if ${persist}; then
 | 
			
		||||
#         yaml+=$(write_yaml_seq_map 2 'source' '"/run/bootmnt/LiveOS/rootfs.img"')
 | 
			
		||||
#         yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"')
 | 
			
		||||
#         yaml+=$(write_yaml_map 4 'sourcefs' '"ext4"')
 | 
			
		||||
#     else
 | 
			
		||||
    yaml+=$(write_yaml_seq_map 2 'source' '"/run/bootmnt/LiveOS/rootfs.img"')
 | 
			
		||||
    yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"')
 | 
			
		||||
    yaml+=$(write_yaml_map 4 'sourcefs' '"squashfs"')
 | 
			
		||||
#     fi
 | 
			
		||||
    yaml+=$(write_yaml_map 4 'destination' '""')
 | 
			
		||||
 
 | 
			
		||||
@@ -130,12 +130,15 @@ configure_grub(){
 | 
			
		||||
 | 
			
		||||
prepare_grub(){
 | 
			
		||||
    local platform=i386-pc img='core.img' prefix=/boot/grub
 | 
			
		||||
    local lib=$1/usr/lib/grub theme=$2/usr/share/grub
 | 
			
		||||
    local lib="$1"/usr/lib/grub
 | 
			
		||||
    local theme="$1"/usr/share/grub
 | 
			
		||||
    local livecfg="$2"/usr/share/grub
 | 
			
		||||
    local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    prepare_dir ${grub}/${platform}
 | 
			
		||||
 | 
			
		||||
    cp ${theme}/cfg/*.cfg ${grub}
 | 
			
		||||
    cp ${livecfg}/cfg/*.cfg ${grub}
 | 
			
		||||
 | 
			
		||||
    cp ${lib}/${platform}/* ${grub}/${platform}
 | 
			
		||||
 | 
			
		||||
@@ -158,8 +161,9 @@ prepare_grub(){
 | 
			
		||||
    grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660
 | 
			
		||||
 | 
			
		||||
    prepare_dir ${grub}/themes
 | 
			
		||||
    cp -r ${theme}/themes/artix ${grub}/themes/
 | 
			
		||||
    cp -r ${theme}/{locales,tz} ${grub}
 | 
			
		||||
 | 
			
		||||
    cp -r ${theme}/themes/artix ${grub}/themes
 | 
			
		||||
    cp -r ${livecfg}/{locales,tz} ${grub}
 | 
			
		||||
 | 
			
		||||
    if [[ -f /usr/share/grub/unicode.pf2 ]];then
 | 
			
		||||
        msg2 "Copying %s ..." "unicode.pf2"
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ error_function() {
 | 
			
		||||
        error "A failure occurred in %s()." "$func"
 | 
			
		||||
        plain "Aborting..."
 | 
			
		||||
    fi
 | 
			
		||||
    umount_overlay
 | 
			
		||||
    umount_overlayfs
 | 
			
		||||
    umount_img
 | 
			
		||||
    exit 2
 | 
			
		||||
}
 | 
			
		||||
@@ -41,7 +41,7 @@ run_safe() {
 | 
			
		||||
trap_exit() {
 | 
			
		||||
    local sig=$1; shift
 | 
			
		||||
    error "$@"
 | 
			
		||||
    umount_overlay
 | 
			
		||||
    umount_overlayfs
 | 
			
		||||
    trap -- "$sig"
 | 
			
		||||
    kill "-$sig" "$$"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										185
									
								
								lib/pkg/git.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								lib/pkg/git.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,185 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2018-19 artoo@artixlinux.org
 | 
			
		||||
# Copyright (C) 2018 Artix Linux Developers
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation; version 2 of the License.
 | 
			
		||||
#
 | 
			
		||||
# This program is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
get_local_head(){
 | 
			
		||||
    echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_remote_head(){
 | 
			
		||||
    echo $(git ls-remote origin -h refs/heads/master | cut -f1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
clone_tree(){
 | 
			
		||||
    local timer=$(get_timer) url="$1" tree="$2" os="${3:-$(get_osname)}"
 | 
			
		||||
 | 
			
		||||
    msg "Cloning %s (%s) ..." "$tree" "$os"
 | 
			
		||||
 | 
			
		||||
    git clone $url/$tree.git
 | 
			
		||||
    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
has_changes(){
 | 
			
		||||
    local head_l="$1" head_r="$2"
 | 
			
		||||
    if [[ "$head_l" == "$head_r" ]]; then
 | 
			
		||||
        msg2 "remote changes: no"
 | 
			
		||||
        return 1
 | 
			
		||||
    else
 | 
			
		||||
        msg2 "remote changes: yes"
 | 
			
		||||
        return 0
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pull_tree(){
 | 
			
		||||
    local tree="$1" local_head="$2" os="${3:-$(get_osname)}"
 | 
			
		||||
    local remote_head=$(get_remote_head)
 | 
			
		||||
 | 
			
		||||
    msg "Checking (%s) (%s)" "${tree}" "$os"
 | 
			
		||||
    if has_changes "${local_head}" "${remote_head}";then
 | 
			
		||||
        git pull origin master
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
push_tree(){
 | 
			
		||||
    local tree="$1"
 | 
			
		||||
    msg "Update (%s)" "${tree}"
 | 
			
		||||
    git push origin master
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_jenkinsfile(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    local jenkins=$pkg/Jenkinsfile
 | 
			
		||||
 | 
			
		||||
    echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins
 | 
			
		||||
    echo '' >> $jenkins
 | 
			
		||||
    echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins
 | 
			
		||||
    echo '' >> $jenkins
 | 
			
		||||
 | 
			
		||||
    git add $jenkins
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_agentyaml(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    local agent=$pkg/.artixlinux/agent.yaml label='master'
 | 
			
		||||
    [[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux
 | 
			
		||||
 | 
			
		||||
    echo '%YAML 1.2' > $agent
 | 
			
		||||
    echo '---' >> $agent
 | 
			
		||||
    echo '' >> $agent
 | 
			
		||||
    echo "label: $label" >> $agent
 | 
			
		||||
    echo '' >> $agent
 | 
			
		||||
 | 
			
		||||
    git add $agent
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
commit_jenkins_files(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
 | 
			
		||||
    write_jenkinsfile "$pkg"
 | 
			
		||||
    write_agentyaml "$pkg"
 | 
			
		||||
 | 
			
		||||
    git commit -m "initial commit"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
config_tree(){
 | 
			
		||||
    local tree="$1"
 | 
			
		||||
    cd $tree
 | 
			
		||||
        git config --bool pull.rebase true
 | 
			
		||||
        git config commit.gpgsign true
 | 
			
		||||
        if [[ -n "${GPGKEY}" ]];then
 | 
			
		||||
            git config user.signingkey "${GPGKEY}"
 | 
			
		||||
        else
 | 
			
		||||
            warning "No GPGKEY configured in makepkg.conf!"
 | 
			
		||||
        fi
 | 
			
		||||
    cd ..
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# write_gitignore() {
 | 
			
		||||
#     local pkg="$1"
 | 
			
		||||
#     local gitignore=$pkg/.gitignore
 | 
			
		||||
#     echo '# ---> ArchLinuxPackages' > $gitignore
 | 
			
		||||
#     echo '*.tar' >> $gitignore
 | 
			
		||||
#     echo '*.tar.*' >> $gitignore
 | 
			
		||||
#     echo '*.jar' >> $gitignore
 | 
			
		||||
#     echo '*.exe' >> $gitignore
 | 
			
		||||
#     echo '*.msi' >> $gitignore
 | 
			
		||||
#     echo '*.zip' >> $gitignore
 | 
			
		||||
#     echo '*.tgz' >> $gitignore
 | 
			
		||||
#     echo '*.log' >> $gitignore
 | 
			
		||||
#     echo '*.log.*' >> $gitignore
 | 
			
		||||
#     echo '*.sig' >> $gitignore
 | 
			
		||||
#     echo '' >> $gitignore
 | 
			
		||||
#     echo 'pkg/' >> $gitignore
 | 
			
		||||
#     echo 'src/' >> $gitignore
 | 
			
		||||
#     echo '' >> $gitignore
 | 
			
		||||
#     echo '# ---> Archives' >> $gitignore
 | 
			
		||||
#     echo '*.7z' >> $gitignore
 | 
			
		||||
#     echo '*.rar' >> $gitignore
 | 
			
		||||
#     echo '*.gz' >> $gitignore
 | 
			
		||||
#     echo '*.bzip' >> $gitignore
 | 
			
		||||
#     echo '*.bz2' >> $gitignore
 | 
			
		||||
#     echo '*.xz' >> $gitignore
 | 
			
		||||
#     echo '*.lzma' >> $gitignore
 | 
			
		||||
#     echo '*.cab' >> $gitignore
 | 
			
		||||
#     echo '' >> $gitignore
 | 
			
		||||
#     echo '# ---> systemd' >> $gitignore
 | 
			
		||||
#     echo '*.service' >> $gitignore
 | 
			
		||||
#     echo '*.socket' >> $gitignore
 | 
			
		||||
#     echo '*.timer' >> $gitignore
 | 
			
		||||
#     echo '' >> $gitignore
 | 
			
		||||
#     echo '# ---> snap' >> $gitignore
 | 
			
		||||
#     echo '*.snap' >> $gitignore
 | 
			
		||||
#     echo '' >> $gitignore
 | 
			
		||||
#
 | 
			
		||||
#     git add $gitignore
 | 
			
		||||
# }
 | 
			
		||||
#
 | 
			
		||||
# write_readme(){
 | 
			
		||||
#     local pkg="$1"
 | 
			
		||||
#     local readme=$pkg/README.md
 | 
			
		||||
#
 | 
			
		||||
#     echo "# $pkg" > $readme
 | 
			
		||||
#     echo '' >> $readme
 | 
			
		||||
#
 | 
			
		||||
#     git add $readme
 | 
			
		||||
# }
 | 
			
		||||
#
 | 
			
		||||
# subrepo_new2(){
 | 
			
		||||
#     local group="${1:-$GROUP}" team="${2:-$TEAM}"
 | 
			
		||||
#     local dest=${TREE_DIR_ARTIX}/$group/${PACKAGE}/trunk
 | 
			
		||||
#
 | 
			
		||||
#     cd ${TREE_DIR_ARTIX}/$group
 | 
			
		||||
#
 | 
			
		||||
#     local org=$(get_pkg_org "${PACKAGE}")
 | 
			
		||||
#
 | 
			
		||||
#     prepare_dir "$dest"
 | 
			
		||||
#
 | 
			
		||||
#     subrepo_init "${PACKAGE}" "$org"
 | 
			
		||||
#
 | 
			
		||||
#     commit_jenkins_files2 "${PACKAGE}"
 | 
			
		||||
#
 | 
			
		||||
#     subrepo_push "${PACKAGE}"
 | 
			
		||||
#
 | 
			
		||||
#     add_repo_to_team "${PACKAGE}" "$org" "$team"
 | 
			
		||||
# }
 | 
			
		||||
#
 | 
			
		||||
# commit_jenkins_files2(){
 | 
			
		||||
#     local pkg="$1"
 | 
			
		||||
#
 | 
			
		||||
#     write_jenkinsfile "$pkg"
 | 
			
		||||
#     write_agentyaml "$pkg"
 | 
			
		||||
#     write_readme "$pkg"
 | 
			
		||||
#     write_gitignore "$pkg"
 | 
			
		||||
#
 | 
			
		||||
#     git commit -m "initial commit"
 | 
			
		||||
# }
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
create_repo(){
 | 
			
		||||
create_repo() {
 | 
			
		||||
    local pkg="$1" org="$2"
 | 
			
		||||
    local gitname=$(get_compliant_name "$pkg")
 | 
			
		||||
    local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
 | 
			
		||||
@@ -27,33 +27,16 @@ create_repo(){
 | 
			
		||||
    echo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
delete_repo(){
 | 
			
		||||
    local pkg="$1" org="$2"
 | 
			
		||||
    local gitname=$(get_compliant_name "$pkg")
 | 
			
		||||
 | 
			
		||||
    msg2 "Delete package repo [%s] in org (%s)" "${pkg}" "${org}"
 | 
			
		||||
 | 
			
		||||
    curl -s -X DELETE "${GIT_URL}/api/v1/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
load_team_id(){
 | 
			
		||||
    local org="$1" team="$2" id=0
 | 
			
		||||
 | 
			
		||||
    local ids=($(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams?access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json" | jshon -a -e id))
 | 
			
		||||
 | 
			
		||||
    case $team in
 | 
			
		||||
        packages) id="${ids[2]}" ;;
 | 
			
		||||
        community) id="${ids[1]}" ;;
 | 
			
		||||
    esac
 | 
			
		||||
 | 
			
		||||
get_team_id() {
 | 
			
		||||
    local org="$1" team="$2"
 | 
			
		||||
    local id=$(curl -s -X GET "${GIT_URL}/api/v1/orgs/$org/teams/search?q=$team&access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json" | jq '.data[] .id')
 | 
			
		||||
    echo $id
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_repo_to_team(){
 | 
			
		||||
add_repo_to_team() {
 | 
			
		||||
    local pkg="$1" org="$2" team="$3"
 | 
			
		||||
    local id=$(load_team_id "$org" "$team")
 | 
			
		||||
    local id=$(get_team_id "$org" "$team")
 | 
			
		||||
    local gitname=$(get_compliant_name "$pkg")
 | 
			
		||||
 | 
			
		||||
    msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$team"
 | 
			
		||||
@@ -61,3 +44,14 @@ add_repo_to_team(){
 | 
			
		||||
    curl -s -X PUT "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
remove_repo_from_team() {
 | 
			
		||||
    local pkg="$1" org="$2" team="$3"
 | 
			
		||||
    local id=$(get_team_id "$org" "$team")
 | 
			
		||||
    local gitname=$(get_compliant_name "$pkg")
 | 
			
		||||
 | 
			
		||||
    msg2 "Removing package repo [%s] from team (%s)" "$gitname" "$team"
 | 
			
		||||
 | 
			
		||||
    curl -s -X DELETE "${GIT_URL}/api/v1/teams/$id/repos/$org/$gitname?access_token=${GIT_TOKEN}" \
 | 
			
		||||
        -H  "accept: application/json"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -12,14 +12,6 @@
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
get_local_head(){
 | 
			
		||||
    echo $(git log --pretty=%H ...refs/heads/master^ | head -n 1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_remote_head(){
 | 
			
		||||
    echo $(git ls-remote origin -h refs/heads/master | cut -f1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_pkg_org(){
 | 
			
		||||
    local pkg="$1" org= sub=
 | 
			
		||||
    case ${pkg} in
 | 
			
		||||
@@ -31,111 +23,34 @@ get_pkg_org(){
 | 
			
		||||
    echo $org
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
subrepo_init() {
 | 
			
		||||
    local pkg="$1" org="$2"
 | 
			
		||||
    local gitname=$(get_compliant_name "$pkg")
 | 
			
		||||
    msg2 "Subrepo init (%s)" "$pkg"
 | 
			
		||||
    git subrepo init "$pkg" -r gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
subrepo_push(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    msg2 "Push (%s)" "$pkg"
 | 
			
		||||
    msg2 "Subrepo push (%s)" "$pkg"
 | 
			
		||||
    git subrepo push "$pkg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
subrepo_clean(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    msg2 "Clean (%s)" "$pkg"
 | 
			
		||||
    msg2 "Subrepo clean (%s)" "$pkg"
 | 
			
		||||
    git subrepo clean "$pkg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
subrepo_pull(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    msg2 "Pull (%s)" "$pkg"
 | 
			
		||||
    msg2 "Subrepo pull (%s)" "$pkg"
 | 
			
		||||
    git subrepo pull "$pkg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
subrepo_clone(){
 | 
			
		||||
    local pkg="$1" org="$2"
 | 
			
		||||
    local gitname=$(get_compliant_name "$pkg")
 | 
			
		||||
    msg2 "Clone [%s] from (%s)" "$pkg" "$org/$gitname"
 | 
			
		||||
    msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$gitname"
 | 
			
		||||
    git subrepo clone gitea@"${GIT_DOMAIN}":"$org"/"$gitname".git "$pkg"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
clone_tree(){
 | 
			
		||||
    local timer=$(get_timer) url="$1" tree="$2" os="${3:-$(get_osname)}"
 | 
			
		||||
 | 
			
		||||
    msg "Cloning %s (%s) ..." "$tree" "$os"
 | 
			
		||||
 | 
			
		||||
    git clone $url/$tree.git
 | 
			
		||||
    show_elapsed_time "${FUNCNAME}" "${timer}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
has_changes(){
 | 
			
		||||
    local head_l="$1" head_r="$2"
 | 
			
		||||
    if [[ "$head_l" == "$head_r" ]]; then
 | 
			
		||||
        msg2 "remote changes: no"
 | 
			
		||||
        return 1
 | 
			
		||||
    else
 | 
			
		||||
        msg2 "remote changes: yes"
 | 
			
		||||
        return 0
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pull_tree(){
 | 
			
		||||
    local tree="$1" local_head="$2" os="${3:-$(get_osname)}"
 | 
			
		||||
    local remote_head=$(get_remote_head)
 | 
			
		||||
 | 
			
		||||
    msg "Checking %s (%s)" "${tree}" "$os"
 | 
			
		||||
    if has_changes "${local_head}" "${remote_head}";then
 | 
			
		||||
        git pull origin master
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
push_tree(){
 | 
			
		||||
    local tree="$1"
 | 
			
		||||
    msg "Update (%s)" "${tree}"
 | 
			
		||||
    git push origin master
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_jenkinsfile(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    local jenkins=$pkg/Jenkinsfile
 | 
			
		||||
 | 
			
		||||
    echo "@Library('artix-ci') import org.artixlinux.RepoPackage" > $jenkins
 | 
			
		||||
    echo '' >> $jenkins
 | 
			
		||||
    echo 'PackagePipeline(new RepoPackage(this))' >> $jenkins
 | 
			
		||||
    echo '' >> $jenkins
 | 
			
		||||
 | 
			
		||||
    git add $jenkins
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
write_agentyaml(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
    local agent=$pkg/.artixlinux/agent.yaml label='master'
 | 
			
		||||
    [[ -d $pkg/.artixlinux ]] || mkdir $pkg/.artixlinux
 | 
			
		||||
 | 
			
		||||
    echo '%YAML 1.2' > $agent
 | 
			
		||||
    echo '---' >> $agent
 | 
			
		||||
    echo '' >> $agent
 | 
			
		||||
    echo "label: $label" >> $agent
 | 
			
		||||
    echo '' >> $agent
 | 
			
		||||
 | 
			
		||||
    git add $agent
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
commit_jenkins_files(){
 | 
			
		||||
    local pkg="$1"
 | 
			
		||||
 | 
			
		||||
    write_jenkinsfile "$pkg"
 | 
			
		||||
    write_agentyaml "$pkg"
 | 
			
		||||
 | 
			
		||||
    git commit -m "add jenkinsfile & .artixlinux/agent.yaml"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
config_tree(){
 | 
			
		||||
    local tree="$1"
 | 
			
		||||
    cd $tree
 | 
			
		||||
        git config --bool pull.rebase true
 | 
			
		||||
        git config commit.gpgsign true
 | 
			
		||||
        if [[ -n "${GPGKEY}" ]];then
 | 
			
		||||
            git config user.signingkey "${GPGKEY}"
 | 
			
		||||
        else
 | 
			
		||||
            warning "No GPGKEY configured in makepkg.conf!"
 | 
			
		||||
        fi
 | 
			
		||||
    cd ..
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										107
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							
							
						
						
									
										107
									
								
								lib/pkg/util.sh
									
									
									
									
									
								
							@@ -22,111 +22,28 @@ get_compliant_name(){
 | 
			
		||||
    echo $gitname
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
arch2artix(){
 | 
			
		||||
    local repo="$1" artix=none
 | 
			
		||||
    case "$repo" in
 | 
			
		||||
        core) artix=system ;;
 | 
			
		||||
        extra) artix=world ;;
 | 
			
		||||
        community) artix=galaxy ;;
 | 
			
		||||
        multilib) artix=lib32 ;;
 | 
			
		||||
        staging) artix=goblins ;;
 | 
			
		||||
        testing) artix=gremlins ;;
 | 
			
		||||
        community-staging) artix=galaxy-goblins ;;
 | 
			
		||||
        community-testing) artix=galaxy-gremlins ;;
 | 
			
		||||
        multilib-staging) artix=lib32-goblins ;;
 | 
			
		||||
        multilib-testing) artix=lib32-gremlins ;;
 | 
			
		||||
        kde-unstable) artix=kde-wobble ;;
 | 
			
		||||
        gnome-unstable) artix=gnome-wobble ;;
 | 
			
		||||
    esac
 | 
			
		||||
    echo $artix
 | 
			
		||||
}
 | 
			
		||||
set_arch_repos(){
 | 
			
		||||
    local x="$1" y="$2" z="$3"
 | 
			
		||||
    ARCH_REPOS=(core extra community multilib)
 | 
			
		||||
 | 
			
		||||
find_tree(){
 | 
			
		||||
    local tree="$1" pkg="$2"
 | 
			
		||||
    local result=$(find $tree -mindepth 2 -maxdepth 2 -type d -name "$pkg")
 | 
			
		||||
    result=${result%/*}
 | 
			
		||||
    echo ${result##*/}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
arch_repos(){
 | 
			
		||||
    local stag="$1" unst="$2"
 | 
			
		||||
    local repos=(core extra testing community community-testing multilib multilib-testing)
 | 
			
		||||
 | 
			
		||||
    $stag && repos+=(staging community-staging multilib-staging)
 | 
			
		||||
    $unst && repos+=(gnome-unstable kde-unstable)
 | 
			
		||||
 | 
			
		||||
    echo ${repos[@]}
 | 
			
		||||
    $x && ARCH_REPOS+=(testing community-testing multilib-testing)
 | 
			
		||||
    $y && ARCH_REPOS+=(staging community-staging multilib-staging)
 | 
			
		||||
    $z && ARCH_REPOS+=(gnome-unstable kde-unstable)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
find_repo(){
 | 
			
		||||
    local pkg="$1" stag="$2" unst="$3" repo=
 | 
			
		||||
 | 
			
		||||
    for r in $(arch_repos "$stag" "$unst");do
 | 
			
		||||
    local pkg="$1" repo=
 | 
			
		||||
    for r in ${ARCH_REPOS[@]};do
 | 
			
		||||
        [[ -f $pkg/repos/$r-${ARCH}/PKGBUILD ]] && repo=$r-${ARCH}
 | 
			
		||||
        [[ -f $pkg/repos/$r-any/PKGBUILD ]] && repo=$r-any
 | 
			
		||||
    done
 | 
			
		||||
    echo $repo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
is_valid_repo(){
 | 
			
		||||
    local src="$1" cases=
 | 
			
		||||
    for r in $(arch_repos true true);do
 | 
			
		||||
        cases=${cases:-}${cases:+|}${r}
 | 
			
		||||
    done
 | 
			
		||||
    eval "case $src in
 | 
			
		||||
        ${cases}|trunk) return 0 ;;
 | 
			
		||||
        *) return 1 ;;
 | 
			
		||||
    esac"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
find_pkg(){
 | 
			
		||||
    local searchdir="$1" pkg="$2"
 | 
			
		||||
    local result=$(find $searchdir -mindepth 2 -maxdepth 2 -type d -name "$pkg")
 | 
			
		||||
    echo $result
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pkgver_equal() {
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +41,8 @@ load_pkg_config(){
 | 
			
		||||
            packages
 | 
			
		||||
            community
 | 
			
		||||
            packages-kernel
 | 
			
		||||
            packages-net
 | 
			
		||||
            packages-gfx
 | 
			
		||||
            packages-openrc
 | 
			
		||||
            packages-runit
 | 
			
		||||
            packages-s6
 | 
			
		||||
@@ -58,6 +60,7 @@ load_pkg_config(){
 | 
			
		||||
            packages-mate
 | 
			
		||||
            packages-kde
 | 
			
		||||
            packages-xfce
 | 
			
		||||
            packages-wm
 | 
			
		||||
#             packages-haskell
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user