Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
473a5ce6aa
|
|||
f511f7c0e9
|
|||
bbca425bf8
|
|||
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
|
||||||
|
}
|
66
src/lib/pkg/admin/transfer.sh
Normal file
66
src/lib/pkg/admin/transfer.sh
Normal 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
|
||||||
|
}
|
@@ -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"
|
||||||
|
@@ -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) |
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
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"
|
||||||
;;
|
;;
|
||||||
|
Reference in New Issue
Block a user