forked from artix/artools
Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
20bb1bb92a | |||
4b9a6b9314 | |||
10fe40eccb
|
|||
6ce9a5b751 | |||
108dcf620a | |||
7fc2909a29 | |||
![]() |
f248c20401 | ||
1516ef432e
|
|||
cc3bd8049c |
55
src/lib/pkg/admin.sh
Normal file
55
src/lib/pkg/admin.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/hint/bash
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
[[ -z ${ARTOOLS_INCLUDE_ADMIN_SH:-} ]] || return 0
|
||||
ARTOOLS_INCLUDE_ADMIN_SH=1
|
||||
|
||||
set -e
|
||||
|
||||
artixpkg_admin_usage() {
|
||||
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
|
||||
cat <<- _EOF_
|
||||
Usage: ${COMMAND} [COMMAND] [OPTIONS]
|
||||
|
||||
COMMANDS
|
||||
transfer Clone a package repository
|
||||
|
||||
OPTIONS
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} transfer libfoo libbar
|
||||
_EOF_
|
||||
}
|
||||
|
||||
artixpkg_admin() {
|
||||
if (( $# < 1 )); then
|
||||
artixpkg_admin_usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# option checking
|
||||
while (( $# )); do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
artixpkg_admin_usage
|
||||
exit 0
|
||||
;;
|
||||
transfer)
|
||||
_ARTOOLS_COMMAND+=" $1"
|
||||
shift
|
||||
# shellcheck source=src/lib/pkg/admin/transfer.sh
|
||||
source "${LIBDIR}"/pkg/admin/transfer.sh
|
||||
artixpkg_admin_transfer "$@"
|
||||
exit 0
|
||||
;;
|
||||
-*)
|
||||
die "invalid argument: %s" "$1"
|
||||
;;
|
||||
*)
|
||||
die "invalid command: %s" "$1"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
64
src/lib/pkg/admin/transfer.sh
Normal file
64
src/lib/pkg/admin/transfer.sh
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
[[ -z ${ARTOOLS_INCLUDE_ADMIN_TRANSFER_SH:-} ]] || return 0
|
||||
ARTOOLS_INCLUDE_ADMIN_TRANSFER_SH=1
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
artixpkg_admin_transfer_usage() {
|
||||
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
|
||||
cat <<- _EOF_
|
||||
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
|
||||
|
||||
OPTIONS
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} libfoo
|
||||
$ ${COMMAND} libfoo libbar
|
||||
_EOF_
|
||||
}
|
||||
|
||||
|
||||
|
||||
artixpkg_admin_transfer() {
|
||||
if (( $# < 1 )); then
|
||||
artixpkg_admin_transfer_usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# options
|
||||
local pkgbases=()
|
||||
local pkgbase
|
||||
local waste_org="landfill"
|
||||
|
||||
local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
|
||||
|
||||
while (( $# )); do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
artixpkg_admin_transfer_usage
|
||||
exit 0
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
die "invalid argument: %s" "$1"
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
pkgbases+=("$@")
|
||||
|
||||
for pkgbase in "${pkgbases[@]}"; do
|
||||
transfer_repo "${pkgbase}" "${waste_org}"
|
||||
done
|
||||
}
|
@@ -4,24 +4,15 @@
|
||||
|
||||
#{{{ gitea api
|
||||
|
||||
get_compliant() {
|
||||
get_compliant_name() {
|
||||
local name=$1
|
||||
printf "%s" "${name}" \
|
||||
printf "%s\n" "${name}" \
|
||||
| sed -E 's/([a-zA-Z0-9]+)\+([a-zA-Z]+)/\1-\2/g' \
|
||||
| sed -E 's/\+/plus/g' \
|
||||
| sed -E 's/[^a-zA-Z0-9_\-\.]/-/g' \
|
||||
| sed -E 's/[_\-]{2,}/-/g'
|
||||
}
|
||||
|
||||
get_compliant_name(){
|
||||
local gitname="$1"
|
||||
case "$gitname" in
|
||||
*+) gitname=${gitname//+/plus} ;;
|
||||
*+*) gitname=${gitname//+/-} ;;
|
||||
esac
|
||||
printf "%s\n" "$gitname"
|
||||
}
|
||||
|
||||
api_put() {
|
||||
curl -s -X PUT "$@"
|
||||
}
|
||||
@@ -107,23 +98,6 @@ list_all_repos() {
|
||||
-H "accept: application/json"
|
||||
}
|
||||
|
||||
replace_topic() {
|
||||
local url
|
||||
local repo="$1"
|
||||
local maintainer="$2"
|
||||
url="${GIT_HTTPS}/api/v1/repos/${GIT_ORG}/$repo/topics"
|
||||
|
||||
api_put "$url" \
|
||||
-H "accept: application/json" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Authorization: token ${GIT_TOKEN}" \
|
||||
-d "{
|
||||
\"topics\": [
|
||||
\"${maintainer}\"
|
||||
]
|
||||
}"
|
||||
}
|
||||
|
||||
list_topics() {
|
||||
local url
|
||||
local pkgbase="$1"
|
||||
|
@@ -19,6 +19,8 @@ readonly ARTIX_DB=(
|
||||
|
||||
readonly REPO_DB='.artixlinux/pkgbase.yaml'
|
||||
|
||||
readonly REPO_CI='.artixlinux/Jenkinsfile'
|
||||
|
||||
yaml_array() {
|
||||
local array
|
||||
|
||||
|
@@ -63,6 +63,22 @@ migrate_to_yaml() {
|
||||
.version = env(version) |
|
||||
.packages = env(pkgs) )' \
|
||||
-i "${REPO_DB}"
|
||||
|
||||
if [[ -n ${GIT_TOKEN} ]]; then
|
||||
local topic gitname
|
||||
gitname=$(get_compliant_name "${pkgbase}")
|
||||
|
||||
topic="${REPO_MAP[$r]}"
|
||||
if ! add_topic "${gitname}" "${topic}"; then
|
||||
warning "failed to add topic: ${topic}"
|
||||
fi
|
||||
|
||||
topic="${r}"
|
||||
if ! remove_topic "${gitname}" "${topic}"; then
|
||||
warning "failed to remove topic: ${topic}"
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
||||
git rm -r x86_64
|
||||
fi
|
||||
@@ -73,6 +89,11 @@ migrate_to_yaml() {
|
||||
if [[ -f .gitignore ]]; then
|
||||
update_gitignore
|
||||
fi
|
||||
|
||||
if [[ -f Jenkinsfile ]]; then
|
||||
git mv Jenkinsfile "${REPO_CI}"
|
||||
fi
|
||||
|
||||
git add .
|
||||
git commit -m "migrate to new layout"
|
||||
fi
|
||||
|
@@ -17,12 +17,12 @@ artixpkg_git_clone_usage() {
|
||||
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
|
||||
|
||||
OPTIONS
|
||||
-m, --maintainer=NAME Clone all packages of the named maintainer
|
||||
--protocol https Clone the repository over https
|
||||
-t, --topic=NAME Clone all packages of the named topic
|
||||
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
|
||||
--universe Clone all existing packages, useful for cache warming
|
||||
-h, --help Show this help text
|
||||
-m, --maintainer=NAME Clone all packages of the named maintainer
|
||||
--protocol https Clone the repository over https
|
||||
-t, --topic=NAME Clone all packages of the named topic
|
||||
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
|
||||
--universe Clone all existing packages, useful for cache warming
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} libfoo linux libbar
|
||||
|
@@ -14,15 +14,13 @@ set -e
|
||||
|
||||
|
||||
commit_ci(){
|
||||
local ci=Jenkinsfile
|
||||
|
||||
printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "${ci}"
|
||||
printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "${REPO_CI}"
|
||||
{
|
||||
printf '\n'
|
||||
printf 'PackagePipeline(new RepoPackage(this))\n'
|
||||
} >> "${ci}"
|
||||
} >> "${REPO_CI}"
|
||||
|
||||
git add "${ci}"
|
||||
git add "${REPO_CI}"
|
||||
git commit -m "initial ci commit"
|
||||
}
|
||||
|
||||
@@ -32,11 +30,11 @@ artixpkg_git_config_usage() {
|
||||
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
|
||||
|
||||
OPTIONS
|
||||
-t, --topic Set the maintainer topic via gitea api
|
||||
-u, --upstream Add upstream arch remote
|
||||
--protocol https Configure remote url to use https
|
||||
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
|
||||
-h, --help Show this help text
|
||||
-m, --maintainer Set the maintainer topic via gitea api
|
||||
-u, --upstream Add upstream arch remote
|
||||
--protocol https Configure remote url to use https
|
||||
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} -t libfoo
|
||||
@@ -117,7 +115,7 @@ artixpkg_git_config() {
|
||||
artixpkg_git_config_usage
|
||||
exit 0
|
||||
;;
|
||||
-t|--topic)
|
||||
-m|--maintainer)
|
||||
SET_TOPIC=1
|
||||
shift
|
||||
;;
|
||||
@@ -266,7 +264,12 @@ artixpkg_git_config() {
|
||||
|
||||
migrate_to_yaml
|
||||
|
||||
if [[ ! -f Jenkinsfile ]]; then
|
||||
if [[ -f Jenkinsfile ]]; then
|
||||
git mv Jenkinsfile "${REPO_CI}"
|
||||
git commit -m "move jenkinsfile"
|
||||
fi
|
||||
|
||||
if [[ ! -f ${REPO_CI} ]]; then
|
||||
msg "Adding ci support ..."
|
||||
commit_ci
|
||||
fi
|
||||
|
@@ -19,9 +19,9 @@ artixpkg_git_create_usage() {
|
||||
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
|
||||
|
||||
OPTIONS
|
||||
-c, --clone Clone the Git repository after creation
|
||||
-t, --team=NAME Assign team name [default: world]
|
||||
-h, --help Show this help text
|
||||
-c, --clone Clone the Git repository after creation
|
||||
-t, --team=NAME Assign team name [default: world]
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} libfoo
|
||||
|
@@ -17,11 +17,11 @@ artixpkg_git_pull_usage() {
|
||||
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
|
||||
|
||||
OPTIONS
|
||||
-m, --maintainer=NAME Pull all packages of the named maintainer
|
||||
-t, --topic=NAME Pull all packages of the named topic
|
||||
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
|
||||
--universe Pull all existing packages
|
||||
-h, --help Show this help text
|
||||
-m, --maintainer=NAME Pull all packages of the named maintainer
|
||||
-t, --topic=NAME Pull all packages of the named topic
|
||||
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
|
||||
--universe Pull all existing packages
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} libfoo linux libbar
|
||||
|
@@ -17,11 +17,11 @@ artixpkg_repo_usage() {
|
||||
Usage: ${COMMAND} [COMMAND] [OPTIONS]
|
||||
|
||||
COMMANDS
|
||||
add Add built pkgbase to repo
|
||||
move Move built pkgbase between repos
|
||||
remove Remove built pkgbase from repo
|
||||
import Import latest tag from arch upstream
|
||||
show Show the pkgbase's repo db
|
||||
add Add built pkgbase to repo
|
||||
move Move built pkgbase between repos
|
||||
remove Remove built pkgbase from repo
|
||||
import Import latest tag from arch upstream
|
||||
show Show the pkgbase's repo db
|
||||
|
||||
OPTIONS
|
||||
-h, --help Show this help text
|
||||
|
@@ -14,10 +14,10 @@ artixpkg_repo_add_usage() {
|
||||
Usage: ${COMMAND} [OPTIONS] [DEST_REPO] [PKGBASE]...
|
||||
|
||||
OPTIONS
|
||||
-p, --push Push pkgbase
|
||||
-r, --rebuild Triggers a rebuild
|
||||
-n, --nocheck Disable the check function
|
||||
-h, --help Show this help text
|
||||
-p, --push Push pkgbase
|
||||
-r, --rebuild Triggers a rebuild
|
||||
-n, --nocheck Disable the check function
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} world-gremlins libfoo
|
||||
@@ -69,6 +69,7 @@ artixpkg_repo_add() {
|
||||
done
|
||||
|
||||
DEST="$1"
|
||||
shift
|
||||
pkgbases+=("$@")
|
||||
|
||||
if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
|
||||
|
@@ -22,7 +22,7 @@ patch_pkgbase(){
|
||||
-e '/nscd.service/d' \
|
||||
-i "${pkgbuild}"
|
||||
;;
|
||||
linux|linux-lts)
|
||||
linux|linux-lts|linux-zen|linux-hardened|linux-rt|linux-rt-lts)
|
||||
msg "Patching %s" "${name}"
|
||||
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i "${pkgbuild}"
|
||||
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
|
||||
@@ -65,7 +65,7 @@ artixpkg_repo_import() {
|
||||
local TAG
|
||||
local rsync_args=()
|
||||
rsync_args+=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
|
||||
rsync_args+=(--exclude '.git' --exclude 'Jenkinsfile' --exclude '.gitignore' --exclude 'README.md')
|
||||
rsync_args+=(--exclude '.git' --exclude '.gitignore' --exclude 'README.md')
|
||||
|
||||
while (( $# )); do
|
||||
case $1 in
|
||||
|
@@ -56,6 +56,7 @@ artixpkg_repo_remove() {
|
||||
done
|
||||
|
||||
DEST="$1"
|
||||
shift
|
||||
pkgbases=("$@")
|
||||
|
||||
if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then
|
||||
|
@@ -12,10 +12,11 @@ has_changeset(){
|
||||
git fetch origin &>/dev/null
|
||||
|
||||
if [[ $(git rev-parse HEAD) != $(git rev-parse @{u}) ]]; then
|
||||
msg2 "remote changes: yes"
|
||||
msg2 "changes: yes"
|
||||
git status -sb
|
||||
return 0
|
||||
fi
|
||||
msg2 "remote changes: no"
|
||||
msg2 "changes: no"
|
||||
return 1
|
||||
}
|
||||
|
||||
|
43
src/lib/pkg/version/version.sh
Normal file
43
src/lib/pkg/version/version.sh
Normal file
@@ -0,0 +1,43 @@
|
||||
#!/hint/bash
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
[[ -z ${ARTOOLS_INCLUDE_VERSION_SH:-} ]] || return 0
|
||||
ARTOOLS_INCLUDE_VERSION_SH=1
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
artixpkg_version_usage() {
|
||||
COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
|
||||
cat <<- _EOF_
|
||||
Usage: ${COMMAND} [OPTIONS]
|
||||
|
||||
Shows the current version information of artixpkg
|
||||
|
||||
OPTIONS
|
||||
-h, --help Show this help text
|
||||
_EOF_
|
||||
}
|
||||
|
||||
artixpkg_version_print() {
|
||||
cat <<- _EOF_
|
||||
artixpkg @buildtoolver@
|
||||
_EOF_
|
||||
}
|
||||
|
||||
artixpkg_version() {
|
||||
while (( $# )); do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
artixpkg_version_usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
die "invalid argument: %s" "$1"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
artixpkg_version_print
|
||||
}
|
@@ -22,6 +22,7 @@ usage() {
|
||||
COMMANDS
|
||||
repo Pacman database modification for packge update, move etc
|
||||
git Manage Git packaging repositories and their configuration
|
||||
version Show artixpkg version information
|
||||
|
||||
OPTIONS
|
||||
-h, --help Show this help text
|
||||
@@ -67,6 +68,22 @@ while (( $# )); do
|
||||
artixpkg_git "$@"
|
||||
exit 0
|
||||
;;
|
||||
admin)
|
||||
_ARTOOLS_COMMAND+=" $1"
|
||||
shift
|
||||
# shellcheck source=src/lib/pkg/admin.sh
|
||||
source "${LIBDIR}"/pkg/admin.sh
|
||||
artixpkg_admin "$@"
|
||||
exit 0
|
||||
;;
|
||||
version|--version|-V)
|
||||
_ARTOOLS_COMMAND+=" $1"
|
||||
shift
|
||||
# shellcheck source=src/lib/pkg/version/version.sh
|
||||
source "${LIBDIR}"/pkg/version/version.sh
|
||||
artixpkg_version "$@"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
die "invalid command: %s" "$1"
|
||||
;;
|
||||
|
Reference in New Issue
Block a user