Compare commits

...

10 Commits

Author SHA1 Message Date
473a5ce6aa artixpkg: add basic token check 2023-06-26 18:57:56 +02:00
f511f7c0e9 merge branch 'admin' 2023-06-26 16:15:00 +02:00
bbca425bf8 artixpkg: fix migration of non compliant pkgbase names 2023-06-26 15:58:36 +02:00
10fe40eccb artixpkg: make maintainer flags consistent 2023-06-26 15:33:16 +02:00
6ce9a5b751 artixpkg: fix repo args (#79)
Co-authored-by: Artoo <artoo@artixlinux.org>
Reviewed-on: #79
2023-06-26 15:10:30 +02:00
108dcf620a migrate-ci (#78)
Co-authored-by: Artoo <artoo@artixlinux.org>
Reviewed-on: #78
2023-06-25 17:16:55 +02:00
7fc2909a29 Merge pull request 'Add other kernels to patch_pkgbase()' (#77) from Qontinuum/artools:master into master
Reviewed-on: #77
2023-06-25 17:16:22 +02:00
Qontinuum
f248c20401 Add other kernels to patch_pkgbase() 2023-06-24 14:56:24 +02:00
1516ef432e artixpkg repo: show git status if changes 2023-06-23 00:13:57 +02:00
cc3bd8049c artixpkg (#76)
Co-authored-by: Artoo <artoo@artixlinux.org>
Reviewed-on: #76
2023-06-22 23:03:49 +02:00
16 changed files with 265 additions and 76 deletions

55
src/lib/pkg/admin.sh Normal file
View 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
}

View File

@@ -0,0 +1,66 @@
#!/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+=("$@")
if [[ -n ${GIT_TOKEN} ]]; then
for pkgbase in "${pkgbases[@]}"; do
transfer_repo "${pkgbase}" "${waste_org}"
done
fi
}

View File

@@ -4,24 +4,15 @@
#{{{ gitea api #{{{ gitea api
get_compliant() { get_compliant_name() {
local name=$1 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/([a-zA-Z0-9]+)\+([a-zA-Z]+)/\1-\2/g' \
| sed -E 's/\+/plus/g' \ | sed -E 's/\+/plus/g' \
| sed -E 's/[^a-zA-Z0-9_\-\.]/-/g' \ | sed -E 's/[^a-zA-Z0-9_\-\.]/-/g' \
| sed -E 's/[_\-]{2,}/-/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() { api_put() {
curl -s -X PUT "$@" curl -s -X PUT "$@"
} }
@@ -107,23 +98,6 @@ list_all_repos() {
-H "accept: application/json" -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() { list_topics() {
local url local url
local pkgbase="$1" local pkgbase="$1"

View File

@@ -19,6 +19,8 @@ readonly ARTIX_DB=(
readonly REPO_DB='.artixlinux/pkgbase.yaml' readonly REPO_DB='.artixlinux/pkgbase.yaml'
readonly REPO_CI='.artixlinux/Jenkinsfile'
yaml_array() { yaml_array() {
local array local array
@@ -135,13 +137,14 @@ update_yaml_base() {
local name local name
local pkgnames local pkgnames
local arches local arches
local pkgbase
name="${pkgbase:-${pkgname}}" pkgbase="${pkgbase:-${pkgname}}"
version="$(get_full_version)" version="$(get_full_version)"
pkgnames=$(yaml_array "${pkgname[@]}") pkgnames=$(yaml_array "${pkgname[@]}")
arches=$(yaml_array "${arch[@]}") arches=$(yaml_array "${arch[@]}")
name="${name}" version="${version}" pkgnames="${pkgnames}" arches="${arches}" \ name="${pkgbase}" version="${version}" pkgnames="${pkgnames}" arches="${arches}" \
yq -P 'with( yq -P 'with(
.pkgbase; .pkgbase;
.name = env(name) | .name = env(name) |

View File

@@ -29,7 +29,7 @@ update_gitignore() {
migrate_to_yaml() { migrate_to_yaml() {
if [[ -f trunk/PKGBUILD ]]; then if [[ -f trunk/PKGBUILD ]]; then
cp -r trunk/* ./
stat_busy "Migrating ${pkgbase} to new layout" stat_busy "Migrating ${pkgbase} to new layout"
create_repo_db create_repo_db
stat_done stat_done
@@ -63,9 +63,27 @@ migrate_to_yaml() {
.version = env(version) | .version = env(version) |
.packages = env(pkgs) )' \ .packages = env(pkgs) )' \
-i "${REPO_DB}" -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 done
git rm -r x86_64 git rm -r x86_64
fi fi
cp -r trunk/* ./
git rm -r trunk git rm -r trunk
if [[ -f .artixlinux/agent.yaml ]]; then if [[ -f .artixlinux/agent.yaml ]]; then
git rm .artixlinux/agent.yaml git rm .artixlinux/agent.yaml
@@ -73,6 +91,11 @@ migrate_to_yaml() {
if [[ -f .gitignore ]]; then if [[ -f .gitignore ]]; then
update_gitignore update_gitignore
fi fi
if [[ -f Jenkinsfile ]]; then
git mv Jenkinsfile "${REPO_CI}"
fi
git add . git add .
git commit -m "migrate to new layout" git commit -m "migrate to new layout"
fi fi

View File

@@ -14,15 +14,13 @@ set -e
commit_ci(){ commit_ci(){
local ci=Jenkinsfile printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "${REPO_CI}"
printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "${ci}"
{ {
printf '\n' printf '\n'
printf 'PackagePipeline(new RepoPackage(this))\n' printf 'PackagePipeline(new RepoPackage(this))\n'
} >> "${ci}" } >> "${REPO_CI}"
git add "${ci}" git add "${REPO_CI}"
git commit -m "initial ci commit" git commit -m "initial ci commit"
} }
@@ -32,7 +30,7 @@ artixpkg_git_config_usage() {
Usage: ${COMMAND} [OPTIONS] [PKGBASE]... Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
OPTIONS OPTIONS
-t, --topic Set the maintainer topic via gitea api -m, --maintainer Set the maintainer topic via gitea api
-u, --upstream Add upstream arch remote -u, --upstream Add upstream arch remote
--protocol https Configure remote url to use https --protocol https Configure remote url to use https
-j, --jobs N Run up to N jobs in parallel (default: $(nproc)) -j, --jobs N Run up to N jobs in parallel (default: $(nproc))
@@ -117,7 +115,7 @@ artixpkg_git_config() {
artixpkg_git_config_usage artixpkg_git_config_usage
exit 0 exit 0
;; ;;
-t|--topic) -m|--maintainer)
SET_TOPIC=1 SET_TOPIC=1
shift shift
;; ;;
@@ -266,7 +264,12 @@ artixpkg_git_config() {
migrate_to_yaml 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 ..." msg "Adding ci support ..."
commit_ci commit_ci
fi fi

View File

@@ -92,6 +92,7 @@ artixpkg_git_create() {
for pkgbase in "${pkgbases[@]}"; do for pkgbase in "${pkgbases[@]}"; do
local gitname local gitname
gitname=$(get_compliant_name "${pkgbase}") gitname=$(get_compliant_name "${pkgbase}")
if [[ -n ${GIT_TOKEN} ]]; then
if ! create_repo "${gitname}" >/dev/null; then if ! create_repo "${gitname}" >/dev/null; then
die "failed to create project: ${pkgbase}" die "failed to create project: ${pkgbase}"
fi fi
@@ -99,6 +100,7 @@ artixpkg_git_create() {
warning "failed to assign team: ${TEAM}" warning "failed to assign team: ${TEAM}"
fi fi
msg_success "Successfully created ${pkgbase}" msg_success "Successfully created ${pkgbase}"
fi
if (( clone )); then if (( clone )); then
artixpkg_git_clone "${pkgbase}" artixpkg_git_clone "${pkgbase}"
elif (( config )); then elif (( config )); then

View File

@@ -69,6 +69,7 @@ artixpkg_repo_add() {
done done
DEST="$1" DEST="$1"
shift
pkgbases+=("$@") pkgbases+=("$@")
if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then

View File

@@ -22,7 +22,7 @@ patch_pkgbase(){
-e '/nscd.service/d' \ -e '/nscd.service/d' \
-i "${pkgbuild}" -i "${pkgbuild}"
;; ;;
linux|linux-lts) linux|linux-lts|linux-zen|linux-hardened|linux-rt|linux-rt-lts)
msg "Patching %s" "${name}" msg "Patching %s" "${name}"
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i "${pkgbuild}" sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i "${pkgbuild}"
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \ sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
@@ -65,7 +65,7 @@ artixpkg_repo_import() {
local TAG local TAG
local rsync_args=() local rsync_args=()
rsync_args+=(-aWxvci --progress --delete-before --no-R --no-implied-dirs) 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 while (( $# )); do
case $1 in case $1 in

View File

@@ -56,6 +56,7 @@ artixpkg_repo_remove() {
done done
DEST="$1" DEST="$1"
shift
pkgbases=("$@") pkgbases=("$@")
if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then if ! in_array "${DEST}" "${ARTIX_DB[@]}"; then

View File

@@ -12,10 +12,11 @@ has_changeset(){
git fetch origin &>/dev/null git fetch origin &>/dev/null
if [[ $(git rev-parse HEAD) != $(git rev-parse @{u}) ]]; then if [[ $(git rev-parse HEAD) != $(git rev-parse @{u}) ]]; then
msg2 "remote changes: yes" msg2 "changes: yes"
git status -sb
return 0 return 0
fi fi
msg2 "remote changes: no" msg2 "changes: no"
return 1 return 1
} }

View 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
}

View File

@@ -22,6 +22,7 @@ usage() {
COMMANDS COMMANDS
repo Pacman database modification for packge update, move etc repo Pacman database modification for packge update, move etc
git Manage Git packaging repositories and their configuration git Manage Git packaging repositories and their configuration
version Show artixpkg version information
OPTIONS OPTIONS
-h, --help Show this help text -h, --help Show this help text
@@ -67,6 +68,22 @@ while (( $# )); do
artixpkg_git "$@" artixpkg_git "$@"
exit 0 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" die "invalid command: %s" "$1"
;; ;;