aboutsummaryrefslogtreecommitdiff
path: root/docker/bin
diff options
context:
space:
mode:
authorGravatar Jonas Gunz <himself@jonasgunz.de> 2023-07-16 19:01:54 +0200
committerGravatar Jonas Gunz <himself@jonasgunz.de> 2023-07-16 19:01:54 +0200
commitd75adf324cb1badb832b7c65bf9ffbaafe115bc1 (patch)
treee0a029035c7f8267e477e571f29f1e887cafb893 /docker/bin
parent7f698caa7cacdd1c8b2744cfa2cf49e05c66aed9 (diff)
downloadaurbuilder-d75adf324cb1badb832b7c65bf9ffbaafe115bc1.tar.gz
move docker dir
Diffstat (limited to 'docker/bin')
-rwxr-xr-xdocker/bin/buildpackage.sh29
-rwxr-xr-xdocker/bin/getpackage.py159
2 files changed, 0 insertions, 188 deletions
diff --git a/docker/bin/buildpackage.sh b/docker/bin/buildpackage.sh
deleted file mode 100755
index a1dd8c3..0000000
--- a/docker/bin/buildpackage.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-echo "BUILDING: $PACKAGE_NAME"
-echo "PACKAGER: $PACKAGER"
-
-INTERMED_DEST="/pkgdest"
-
-cd /workdir || exit 1
-
-while read -r NAME BASE VER _; do
- echo "$NAME $VER for $ARCH"
- OUTNAME="$NAME-$VER-$ARCH.pkg"
-
- # Only build when needed
- if [ ! "$FORCE_REBUILD" = "yes" ] && compgen -G "/pkgout/${OUTNAME}*"; then
- echo "$NAME $VER ($ARCH) is already built. Skipping."
- continue
- fi
-
- sudo --user=aurbuilder \
- git clone "https://aur.archlinux.org/$BASE.git" "$BASE"
- cd "$BASE" || exit 1
-
- sudo -u aurbuilder CARCH="$ARCH" PACKAGER="$PACKAGER" PKGDEST="$INTERMED_DEST" \
- makepkg --force --syncdeps --noconfirm --install
-
- cp --no-preserve=ownership "$INTERMED_DEST/"*.pkg.tar.zst /pkgout
- #test -n "$CHOWN" && sudo chown "$CHOWN" "/pkgout/${OUTNAME}"*
-done <<< "$(getpackage.py "$PACKAGE_NAME")"
diff --git a/docker/bin/getpackage.py b/docker/bin/getpackage.py
deleted file mode 100755
index 0091dd6..0000000
--- a/docker/bin/getpackage.py
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/usr/bin/env python3
-# Create a list of package names required to build supplied AUR package.
-# packages present in the official repos will be ignored.
-
-# relevant docs:
-# AUR API:
-# https://wiki.archlinux.org/title/Aurweb_RPC_interface
-# Package API:
-# https://wiki.archlinux.org/title/Official_repositories_web_interface
-
-import os
-import sys
-import requests
-import json
-
-#from packaging import version
-#version.parse
-
-def eprint(*args, **kwargs):
- print(*args, file=sys.stderr, **kwargs)
-
-
-# TODO we should actually use version limits instead
-def sanitize_name(_name):
- _name = _name.replace('<','=')
- _name = _name.replace('>','=')
-
- return _name.split('=')[0]
-
-
-# TODO: Don't just take the first one. prioritize maybe Votes, version, git, bin, ...
-def aur_search_package(_name):
- _name = sanitize_name(_name)
-
- data = requests.get(f'https://aur.archlinux.org/rpc/?v=5&type=search&by=name&arg={_name}').json()
-
- for r in data['results']:
- p = aur_get_package(r['Name'])
- if p is None:
- continue
-
- if 'Provides' in p:
- for prov in p['Provides']:
- if sanitize_name(prov) == _name:
- return p
-
- return None
-
-
-def aur_get_package(_name):
- _name = sanitize_name(_name)
-
- data = requests.get(f'https://aur.archlinux.org/rpc/?v=5&type=info&arg={_name}').json()
-
- if len(data['results']) != 1:
- return aur_search_package(_name)
-
- return data['results'][0]
-
-
-def repo_search_package(_name):
- _name = sanitize_name(_name)
-
- data = requests.get(f'https://archlinux.org/packages/search/json/?q={_name}').json()
- for r in data['results']:
- p = repo_get_package(r['pkgname'], False)
- if p is None:
- continue
-
- if 'provides' in p:
- for prov in p['provides']:
- if sanitize_name(prov) == _name:
- return p
-
- return None
-
-
-def repo_get_package(_name, _search=True):
- _name = sanitize_name(_name)
-
- data = requests.get(f'https://archlinux.org/packages/search/json/?name={_name}').json()
-
- if len(data['results']) != 1:
- if _search:
- return repo_search_package(_name)
- else:
- return None
-
- return data['results'][0]
-
-
-def build_aur_dependencies(_pkgname):
- _pkgname = sanitize_name(_pkgname)
-
- ret = []
-
- maybe_deps = aur_get_package(_pkgname)
- if maybe_deps is None:
- eprint(f'WARNING: {_pkgname} Was not found in AUR!')
- return []
- elif 'Depends' not in maybe_deps:
- return []
-
- deps = maybe_deps['Depends']
-
- for dep in deps:
- # if package exists in official repo
- if repo_get_package(dep) is not None:
- continue
-
- # detect depency cycles
- if dep in ret:
- continue
-
- ret.append(dep)
- ret.insert(0,dep)
- ret = build_aur_dependencies(dep) + ret
-
- return ret
-
-if len(sys.argv) <= 1:
- eprint('CRITICAL: No package name provided.')
- exit(1)
-
-PKG=sys.argv[1]
-
-# name: version
-TO_BUILD={}
-
-maybe_base_pkg_info = aur_get_package(PKG)
-if maybe_base_pkg_info is None:
- eprint(f'CRITICAL: Package {PKG} not found in AUR')
- exit(1)
-base_pkg_info = maybe_base_pkg_info
-
-aur_deps = build_aur_dependencies(PKG)
-
-# We rely on the rigth order here.
-# The dependency must be before the package that depends on it,
-# otherwise makepkg will fail
-for dep in aur_deps:
- pkg = aur_get_package(dep)
-
- if pkg is None:
- eprint(f'WARNING: Dependency {dep} Unmet!')
- continue
-
- TO_BUILD[pkg['Name']] = {
- 'version':pkg['Version'],
- 'base':pkg['PackageBase']
- }
-
-TO_BUILD[base_pkg_info['Name']] = {
- 'version':base_pkg_info['Version'],
- 'base':base_pkg_info['PackageBase']
- }
-
-for e in TO_BUILD:
- print(f'{e}\t{TO_BUILD[e]["base"]}\t{TO_BUILD[e]["version"]}')