summaryrefslogtreecommitdiff
path: root/db-import
diff options
context:
space:
mode:
authorLuke Shumaker <LukeShu@sbcglobal.net>2013-12-09 03:20:17 -0500
committerLuke Shumaker <LukeShu@sbcglobal.net>2013-12-31 14:20:35 -0500
commit8b6653a2c6c7e55f2c312735a31e0f42d7260bbd (patch)
tree94824122cb57d9cb78a2c0a1df49b8e1bf5958f5 /db-import
parentbcfc6c88a6e23ac15f08b37d55cf1f5378b4120e (diff)
clean up db-import
Diffstat (limited to 'db-import')
-rwxr-xr-xdb-import45
1 files changed, 20 insertions, 25 deletions
diff --git a/db-import b/db-import
index 79dcfd5..a8a073d 100755
--- a/db-import
+++ b/db-import
@@ -1,9 +1,10 @@
-#!/bin/bash -euE
+#!/bin/bash
+set -euE
# Imports Arch-like repos, running them through a blacklist
# License: GPLv3
-. "$(dirname "$(readlink -e "$0")")/config"
-. "$(dirname "$(readlink -e "$0")")/db-import.conf"
+. "$(dirname "$(readlink -e "$0")")/config" # for: FTP_BASE DBEXT
+. "$(dirname "$(readlink -e "$0")")/db-import.conf" # for: IMPORTDIR IMPORTS
. "$(librelib messages)"
. "$(librelib blacklist)"
@@ -17,17 +18,18 @@
# 1. "${IMPORTDIR}/cache/${name}/dbs/" # Download the pacman databases
# 2. "${IMPORTDIR}/cache/${name}/abs/" # Download the ABS tree
# 3. "${IMPORTDIR}/clean/${name}/dbs/" # Run the pacman DBs through the blacklist
-# 4. Download all the package files mentioned in "clean/${name/dbs/"
-# 5. "${STAGING}-importer-${tag}" Copy all the package files we just downloaded to here
-# 6. Run db-update on "${STAGING}-importer-${tag}"
+# 4. "${IMPORTDIR}/clean/${name}/pkgs/" # Download the pkg files mentioned in "clean/${name}/dbs/"
+# 5. "${IMPORTDIR}/staging/${tag}" # Copy all the package files we just downloaded to here
+# 6. Run `db-update on` with STAGING="${IMPORTDIR}/staging/${tag}"
+# generic arguments to pass to rsync, borrowed from `abs`
SYNCARGS='-mrtvlH --no-motd --no-p --no-o --no-g'
main() {
blacklist-update
local importStr
- for importStr in "${imports[@]}"; do
+ for importStr in "${IMPORTS[@]}"; do
local importAry=($importStr)
local name=${importAry[0]}
local pkgmirror=${importAry[1]}
@@ -39,6 +41,7 @@ main() {
fetch_abs "$name" "$absmirror" "${tags[@]}"
msg "Filtering blacklisted packages from remote package source: %s" "$name"
clean_dbs "$name" "${tags[@]}"
+ fetch_pkgs "$name" "${tags[@]}"
msg "Publishing changes from remote package source: %s" "$name"
publish "$name" "${tags[@]}"
done
@@ -66,8 +69,7 @@ fetch_abs() {
local absmirror=$2
local tags=("${@:3}")
- local _HOME=$HOME
-
+ local fake_home
local absroot
# Sync the ABS tree from $absmirror
@@ -79,8 +81,8 @@ fetch_abs() {
mkdir -p -- "$absroot"
# Configure `abs` for this mirror
- export HOME="${IMPORTDIR}/homes/${name}/${arch}"
- mkdir -p -- "$HOME"
+ fake_home="${IMPORTDIR}/homes/${name}/${arch}"
+ mkdir -p -- "$fake_home"
{
printf "ABSROOT='%s'\n" "$absroot"
printf "SYNCSERVER='%s'\n" "$absmirror"
@@ -88,13 +90,11 @@ fetch_abs() {
printf 'REPOS=(\n'
list_repos "$arch" "${tags[@]}"
printf ')\n'
- } > ~/.abs.conf
+ } > "${fake_home}/.abs.conf"
# Run `abs`
- abs
+ HOME=$fake_home abs
done
-
- export HOME=$_HOME
}
clean_dbs() {
@@ -111,7 +111,7 @@ clean_dbs() {
local clean="${IMPORTDIR}/clean/$name/dbs/$(db_file "$tag")"
install -Dm644 "$cache" "$clean"
- repo-remove "$clean" $(blacklist-cat|blacklist-get-pkg)
+ blacklist-cat | blacklist-get-pkg | xargs -d '\n' repo-remove "$clean"
done
}
@@ -196,17 +196,12 @@ publish_tag() {
return 1
fi
- local _STAGING=$STAGING
- export STAGING="$STAGING-importer-$tag"
-
- mkdir -p -- "${STAGING}/${repo}"
- cp -a -- "${files[@]}" "${STAGING}/${repo}/"
- db-update
+ mkdir -p -- "${IMPORTDIR}/staging/${tag}/${repo}"
+ cp -al -- "${files[@]}" "${IMPORTDIR}/staging/${tag}/${repo}/"
+ STAGING="${IMPORTDIR}/staging/${tag}" db-update
# XXX: db-remove wants pkgbase, not pkgname
- db-remove "$repo" "$arch" $(list_removed_pkgs "$name" "$tag")
-
- STAGING=$_STAGING
+ list_removed_pkgs "$name" "$tag" | xargs -d '\n' db-remove "$repo" "$arch"
}
################################################################################