Compare commits

..

12 Commits
0.23.1 ... 0.24

Author SHA1 Message Date
2c3578a850 gitea (#51)
Reviewed-on: artix/artools#51
Co-authored-by: artoo <artoo@artixlinux.org>
Co-committed-by: artoo <artoo@artixlinux.org>
2021-05-15 20:51:00 +02:00
2dcb55cef4 gitea-api (#50)
Reviewed-on: artix/artools#50
Co-authored-by: artoo <artoo@artixlinux.org>
Co-committed-by: artoo <artoo@artixlinux.org>
2021-05-15 16:41:18 +02:00
81d890cead default to gz for repo databases 2021-05-15 00:57:33 +02:00
33685e164d commitpkg: revert git add package only 2021-05-06 19:08:17 +02:00
f419683149 proto: update 2021-05-06 18:58:13 +02:00
54f31daccb comparepkg: adjust to artix.list 2021-05-06 17:40:07 +02:00
be0cfb636e Makefile: install proto pkgbuilds 2021-05-06 17:22:26 +02:00
4108a038fa rename suite66 2021-05-06 17:22:02 +02:00
4634c78520 commitpkg: only git add the pkg dir 2021-05-06 17:11:58 +02:00
a9409d3837 update proto pkgbuiild 2021-05-06 17:11:27 +02:00
02c3a079a2 comparepkg: sort pkgs; write artix pkg moves 2021-05-06 16:19:30 +02:00
72993117fa add proto pkgbuild 2021-05-05 17:34:47 +02:00
15 changed files with 342 additions and 97 deletions

View File

@@ -1,4 +1,4 @@
VERSION=0.23
VERSION=0.24
TOOLS = artools
PREFIX ?= /usr
@@ -38,7 +38,8 @@ PKG_BIN = \
bin/pkg/find-libdeps \
bin/pkg/batchpkg \
bin/pkg/signpkg \
bin/pkg/checkrepo
bin/pkg/checkrepo \
bin/pkg/gitearepo
LN_COMMITPKG = \
extrapkg \
@@ -87,6 +88,9 @@ PKG_DATA = \
data/pacman/makepkg.conf \
data/valid-names.conf
PROTO = \
$(wildcard data/proto/*.proto)
PATCHES = \
$(wildcard data/patches/*.patch)
@@ -160,6 +164,9 @@ install_pkg:
install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
install $(FILEMODE) $(PATCHES) $(DESTDIR)$(DATADIR)/$(TOOLS)/patches
install $(DIRMODE) $(DESTDIR)$(DATADIR)/$(TOOLS)/proto
install $(FILEMODE) $(PROTO) $(DESTDIR)$(DATADIR)/$(TOOLS)/proto
install_cpio:
+make CPIODIR=$(CPIODIR) DESTDIR=$(DESTDIR) -C initcpio install

View File

@@ -18,17 +18,13 @@ artools
##### Runtime:
- base:
* openssh
* rsync
* haveged
* os-prober
* gnupg
* pacman
- pkg:
* namcap
* git-subrepo
* jq
* rsync
- iso:
* dosfstools

View File

@@ -15,54 +15,34 @@
m4_include(lib/util-base.sh)
m4_include(lib/util-pkg.sh)
m4_include(lib/base/message.sh)
m4_include(lib/pkg/common.sh)
m4_include(lib/pkg/git.sh)
m4_include(lib/pkg/repo.sh)
m4_include(lib/pkg/jenkins.sh)
#{{{ new git repo
get_compliant_name(){
local gitname="$1"
case "$gitname" in
*+) gitname=${gitname//+/plus} ;;
*+*) gitname=${gitname//+/-} ;;
esac
echo "$gitname"
}
subrepo_clone(){
local pkg="$1" org="$2" gitname
gitname=$(get_compliant_name "$pkg")
msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$gitname"
git subrepo clone "${GIT_SSH}":"$org"/"$gitname".git "$pkg"
}
local pkg="$1"
local org="$2"
local name="$3"
create_repo() {
local pkg="$1" org="$2" gitname
gitname=$(get_compliant_name "$pkg")
local json="{ \"auto_init\": true, \"name\":\"$gitname\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
msg2 "Create package repo [%s] in org (%s)" "${pkg}" "${org}"
curl -s -X POST "${GIT_URL}/api/v1/org/$org/repos?access_token=${GIT_TOKEN}" \
-H "accept: application/json" \
-H "content-type: application/json" \
-d "$json"
echo
msg2 "Subrepo clone [%s] from (%s)" "$pkg" "$org/$name"
git subrepo clone "${GIT_SSH}":"$org"/"$name".git "$pkg"
}
subrepo_new(){
cd "${TREE_DIR_ARTIX}/${group}" || return
local org
local org gitname
org=$(get_pkg_org "${package}")
gitname=$(get_compliant_name "${package}")
create_repo "${package}" "$org"
gitearepo -cr "$gitname"
add_repo_to_team "${package}" "$org" "${team}"
add_team_to_repo "$gitname" "$org" "${team}"
subrepo_clone "${package}" "$org"
subrepo_clone "${package}" "$org" "$gitname"
mkdir -p "${TREE_DIR_ARTIX}/${group}/${package}/trunk"

View File

@@ -15,6 +15,7 @@
m4_include(lib/util-base.sh)
m4_include(lib/util-pkg.sh)
m4_include(lib/base/message.sh)
m4_include(lib/pkg/common.sh)
m4_include(lib/pkg/git.sh)
m4_include(lib/pkg/repo.sh)
@@ -93,10 +94,11 @@ check_team(){
[[ "${repo_src}" == "${valid_names[2]}" \
&& "${repo_dest}" == "${valid_names[1]}" ]] ;then
local org
local org gitname
org=$(get_pkg_org "${package}")
add_repo_to_team "${package}" "$org" "${repo_dest}"
remove_repo_from_team "${package}" "$org" "${repo_src}"
gitname=$(get_compliant_name "${package}")
add_team_to_repo "$gitname" "${org}" "${repo_dest}"
remove_team_from_repo "$gitname" "${org}" "${repo_src}"
fi
}

View File

@@ -40,7 +40,11 @@ compare_m(){
msg_row_yellow "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
else
msg_row_green "${table}" "${a}" "${b}" "$pkg" "$archver" "$artixver" "${group#*-}"
[[ -n "$archrepo" ]] && write_list "${a}:${b}:$pkg" pkg_moves
if [[ -n "$archrepo" ]]; then
write_list "${a}:${b}:$pkg" pkg_moves
else
write_list "@repo@:${b}:$pkg" artix
fi
fi
;;
esac
@@ -142,6 +146,7 @@ show_downgrades_table(){
show_move_table(){
show_compare_header
remove_list pkg_moves
remove_list artix
tree_loop compare_move
}

89
bin/pkg/gitearepo.in Normal file
View File

@@ -0,0 +1,89 @@
#!/bin/bash
#
# Copyright (C) 2018-21 artoo@artixlinux.org
# Copyright (C) 2021 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.
m4_include(lib/util-base.sh)
m4_include(lib/util-pkg.sh)
m4_include(lib/base/message.sh)
m4_include(lib/pkg/common.sh)
#{{{ functions
create_repo() {
local name="$1"
local org="$2"
local json url
json="{ \"auto_init\": true, \"name\":\"$name\", \"gitignores\":\"ArchLinuxPackages\", \"readme\": \"Default\" }"
url="${GIT_URL}/api/v1/org/$org/repos?access_token=${GIT_TOKEN}"
msg2 "Create package repo [%s] in org (%s)" "$name" "$org"
api_post "$url" -H "accept: application/json" \
-H "content-type: application/json" \
-d "$json"
}
transfer_repo() {
local name="$1"
local old_owner="$2"
local new_owner="landfill" json url
local json url
json="{ \"new_owner\": \"$new_owner\", \"team_ids\": []}"
url="${GIT_URL}/api/v1/repos/$old_owner/$name/transfer?access_token=${GIT_TOKEN}"
msg2 "Transfer package repo [%s] in org (%s)" "$name" "$new_owner"
api_post "$url" -H "accept: application/json" \
-H "Content-Type: application/json" \
-d "$json"
}
#}}}
usage() {
echo "Usage: ${0##*/} [options]"
echo ' -r <repo> Repo name'
echo ' -c Create git repo'
echo ' -t Transfer git repo to landfill org'
echo ' -h This help'
echo ''
echo ''
exit "$1"
}
create=false
transfer=false
opts='r:cth'
while getopts "${opts}" arg; do
case "${arg}" in
r) repo="$OPTARG" ;;
c) create=true ;;
t) transfer=true ;;
h|?) usage 0 ;;
*) echo "invalid argument '${arg}'"; usage 1 ;;
esac
done
shift $(( OPTIND - 1 ))
org=$(get_pkg_org "${repo}")
${create} && create_repo "${repo}" "${org}"
${transfer} && transfer_repo "${repo}" "${org}"

View File

@@ -0,0 +1,38 @@
# Maintainer: Your Name <youremail@domain.com>
pkgname=NAME-openrc
pkgver=VERSION
pkgrel=1
epoch=
pkgdesc="Openrc NAME init script"
arch=('any')
url="https://gitea.artixlinux.org/artixlinux/packages-openrc"
license=('GPL2')
groups=()
depends=("openrc" "NAME")
makedepends=()
checkdepends=()
optdepends=()
provides=("init-NAME")
conflicts=("init-NAME")
replaces=()
backup=()
options=()
install=
changelog=
source=(NAME.{confd,initd})
sha256sums=()
_inst_openrc() {
local sv="$1"
if [ -f "${srcdir}/$sv".confd ]; then
install -Dm644 "${srcdir}/$sv".confd "${pkgdir}"/etc/conf.d/"$sv"
fi
if [ -f "${srcdir}/$sv".initd ]; then
install -Dm755 "${srcdir}/$sv".initd "${pkgdir}"/etc/init.d/"$sv"
fi
}
package() {
_inst_openrc "NAME"
}

View File

@@ -0,0 +1,41 @@
# Maintainer: Your Name <youremail@domain.com>
pkgname=NAME-runit
pkgver=VERSION
pkgrel=1
epoch=
pkgdesc="Runit NAME init script"
arch=('any')
url="https://gitea.artixlinux.org/artixlinux/packages-runit"
license=('GPL2')
groups=()
depends=("runit" "NAME")
makedepends=()
checkdepends=()
optdepends=()
provides=("init-NAME")
conflicts=("init-NAME")
replaces=()
backup=()
options=()
install=
changelog=
source=(NAME.{run,finish,check})
sha256sums=()
_inst_runit() {
local sv="$1"
if [ -f "${srcdir}/$sv".conf ]; then
install -Dm644 "${srcdir}/$sv".conf "${pkgdir}"/etc/runit/sv/"$sv"/conf
fi
for f in run finish check; do
if [ -f "${srcdir}/$sv.$f" ]; then
install -Dm755 "${srcdir}/$sv.$f" "${pkgdir}"/etc/runit/sv/"$sv/$f"
fi
done
}
package() {
_inst_runit "NAME"
}

View File

@@ -0,0 +1,39 @@
# Maintainer: Your Name <youremail@domain.com>
pkgname=NAME-s6
pkgver=VERSION
pkgrel=1
epoch=
pkgdesc="S6 NAME init script"
arch=('any')
url="https://gitea.artixlinux.org/artixlinux/packages-s6"
license=('GPL2')
groups=()
depends=("s6-base" "NAME")
makedepends=()
checkdepends=()
optdepends=()
provides=("init-NAME")
conflicts=("init-NAME")
replaces=()
backup=()
options=()
install=
changelog=
source=(NAME.{dependencies,down,up,type})
sha256sums=()
_inst_s6(){
local sv="$1"
for f in dependencies down type up; do
if [ -f "${srcdir}/$sv.$f" ]; then
install -Dm644 "${srcdir}/$sv.$f" "${pkgdir}"/etc/s6/sv/"$sv/$f"
fi
done
}
package() {
_inst_s6 "NAME"
}

View File

@@ -0,0 +1,34 @@
# Maintainer: Your Name <youremail@domain.com>
pkgname=NAME-66
pkgver=VERSION
pkgrel=1
epoch=
pkgdesc="Suite66 NAME init script"
arch=('any')
url="https://gitea.artixlinux.org/artixlinux/packages-66"
license=('GPL2')
groups=()
depends=("suite66-base" "NAME")
makedepends=()
checkdepends=()
optdepends=()
provides=("init-NAME")
conflicts=("init-NAME")
replaces=()
backup=()
options=()
install=
changelog=
source=(NAME)
sha256sums=()
_inst_66() {
local sv="$1"
install -Dm644 "$sv" -t "${pkgdir}"/etc/66/service
}
package() {
_inst_66 "NAME"
}

36
lib/pkg/common.sh Normal file
View File

@@ -0,0 +1,36 @@
#!/hint/bash
#{{{ common functions
get_compliant_name(){
local gitname="$1"
case "$gitname" in
*+) gitname=${gitname//+/plus}
esac
echo "$gitname"
}
get_pkg_org(){
local pkg="$1" org sub
case ${pkg} in
ruby-*) org="packagesRuby" ;;
perl-*) org="packagesPerl" ;;
python-*|python2-*) org="packagesPython" ;;
*) sub=${pkg:0:1}; org="packages${sub^^}" ;;
esac
echo "$org"
}
api_put() {
curl -s -X PUT "$@"
}
api_delete() {
curl -s -X DELETE "$@"
}
api_post() {
curl -s -X POST "$@"
}
#}}}

View File

@@ -2,59 +2,6 @@
#{{{ git
get_compliant_name(){
local gitname="$1"
case "$gitname" in
*+) gitname=${gitname//+/plus}
esac
echo "$gitname"
}
get_pkg_org(){
local pkg="$1" org sub
case ${pkg} in
ruby-*) org="packagesRuby" ;;
perl-*) org="packagesPerl" ;;
python-*|python2-*) org="packagesPython" ;;
*) sub=${pkg:0:1}; org="packages${sub^^}" ;;
esac
echo "$org"
}
get_team_id() {
local org="$1" team="$2"
local id
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() {
local pkg="$1" org="$2" team="$3"
local id
id=$(get_team_id "$org" "$team")
local gitname
gitname=$(get_compliant_name "$pkg")
msg2 "Adding package repo [%s] to team (%s)" "$gitname" "$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
id=$(get_team_id "$org" "$team")
local gitname
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"
}
get_local_head(){
git log --pretty=%H ...refs/heads/master^ | head -n 1
}

31
lib/pkg/gitea.sh Normal file
View File

@@ -0,0 +1,31 @@
#!/hint/bash
#{{{ gitea api
add_team_to_repo() {
local name="$1"
local org="$2"
local team="$3"
local url
url="${GIT_URL}/api/v1/repos/$org/$name/teams/$team?access_token=${GIT_TOKEN}"
msg2 "Adding team (%s) to package repo [%s]" "$team" "$name"
api_put "$url" -H "accept: application/json"
}
remove_team_from_repo() {
local name="$1"
local org="$2"
local team="$3"
local url
url="${GIT_URL}/api/v1/repos/$org/$name/teams/$team?access_token=${GIT_TOKEN}"
msg2 "Removing team (%s) from package repo [%s]" "$team" "$name"
api_delete "$url" -H "accept: application/json"
}
#}}}

View File

@@ -41,7 +41,7 @@ find_pkg(){
tree_loop(){
local func="$1" pkgs
for tree in "${ARTIX_TREE[@]}"; do
pkgs=$(find "${TREE_DIR_ARTIX}/$tree" -name repos -o -name "$CARCH")
pkgs=$(find "${TREE_DIR_ARTIX}/$tree" -name repos -o -name "$CARCH" | sort)
for _package in ${pkgs}; do
"$func" "$_package"
done

View File

@@ -61,7 +61,7 @@ load_pkg_config(){
HOST_TREE_ARCH=${HOST_TREE_ARCH:-'https://github.com/archlinux'}
DBEXT=${DBEXT:-'xz'}
DBEXT=${DBEXT:-'gz'}
return 0
}