Thu Feb 8 12:59:28 2018 UTC ()
Fix an inconsistency for package database directory.

The pkgdb variable generated for pbulk.conf is ${PREFIX}/var/db/pkg but
bootstrap generates by default PKG_DBDIR=${PREFIX}/pkgdb.
This fix add a common PKGDBDIR variable used for both pbulk.conf and
bootstrapkit.


(triaxx)
diff -r1.6 -r1.7 pkgsrc/mk/pbulk/pbulk.sh

cvs diff -r1.6 -r1.7 pkgsrc/mk/pbulk/pbulk.sh (switch to unified diff)

--- pkgsrc/mk/pbulk/pbulk.sh 2017/08/27 18:18:57 1.6
+++ pkgsrc/mk/pbulk/pbulk.sh 2018/02/08 12:59:28 1.7
@@ -1,200 +1,206 @@ @@ -1,200 +1,206 @@
1#!/bin/sh 1#!/bin/sh
2# $NetBSD: pbulk.sh,v 1.6 2017/08/27 18:18:57 sevan Exp $ 2# $NetBSD: pbulk.sh,v 1.7 2018/02/08 12:59:28 triaxx Exp $
3set -e 3set -e
4 4
5usage="usage: ${0##*/} [-lun] [-c mk.conf.fragment] [-d nodes]" 5usage="usage: ${0##*/} [-lun] [-c mk.conf.fragment] [-d nodes]"
6 6
7while getopts lunc:d: opt; do 7while getopts lunc:d: opt; do
8 case $opt in 8 case $opt in
9 l) limited=yes;; 9 l) limited=yes;;
10 u) unprivileged=yes;; 10 u) unprivileged=yes;;
11 n) native=yes;; 11 n) native=yes;;
12 c) mk_fragment="${OPTARG}";; 12 c) mk_fragment="${OPTARG}";;
13 d) nodes="${OPTARG}";; 13 d) nodes="${OPTARG}";;
14 \?) echo "$usage" 1>&2; exit 1;; 14 \?) echo "$usage" 1>&2; exit 1;;
15 esac 15 esac
16done 16done
17shift $(expr $OPTIND - 1) 17shift $(expr $OPTIND - 1)
18if [ $# != 0 ]; then echo "$usage" 1>&2; exit 1; fi 18if [ $# != 0 ]; then echo "$usage" 1>&2; exit 1; fi
19 19
20: ${TMPDIR:=/tmp} 20: ${TMPDIR:=/tmp}
21 21
22## settings for unprivileged build: 22## settings for unprivileged build:
23if [ -n "$unprivileged" ]; then 23if [ -n "$unprivileged" ]; then
24: ${PBULKPREFIX:=${HOME}/pbulk} 24: ${PBULKPREFIX:=${HOME}/pbulk}
25: ${PKGSRCDIR:=${HOME}/pkgsrc} 25: ${PKGSRCDIR:=${HOME}/pkgsrc}
26: ${PREFIX:=${HOME}/pkg} 26: ${PREFIX:=${HOME}/pkg}
27: ${PACKAGES:=${HOME}/packages} 27: ${PACKAGES:=${HOME}/packages}
28: ${BULKLOG:=${HOME}/bulklog} 28: ${BULKLOG:=${HOME}/bulklog}
29fi 29fi
30 30
31## 31##
32: ${PBULKPREFIX:=/usr/pbulk} 32: ${PBULKPREFIX:=/usr/pbulk}
33: ${PBULKWORK:=${TMPDIR}/work-pbulk} 33: ${PBULKWORK:=${TMPDIR}/work-pbulk}
34 34
35: ${PACKAGES:=/mnt/packages} 35: ${PACKAGES:=/mnt/packages}
36: ${BULKLOG:=/mnt/bulklog} 36: ${BULKLOG:=/mnt/bulklog}
37 37
38# almost constant: 38# almost constant:
39: ${PKGSRCDIR:=/usr/pkgsrc} 39: ${PKGSRCDIR:=/usr/pkgsrc}
40 40
 41# setting pkgdb directory:
 42if [ -n "$unprivileged" -o -n "${PREFIX}" ]; then
 43: ${PKGDBDIR:=${PREFIX}/var/db/pkg}
 44fi
 45
41# Do it early since adding it after it fails is problematic: 46# Do it early since adding it after it fails is problematic:
42if [ ! -n "$unprivileged" ]; then 47if [ ! -n "$unprivileged" ]; then
43case "$(uname)" in 48case "$(uname)" in
44NetBSD) 49NetBSD)
45if ! id pbulk; then user add -m -g users pbulk; fi 50if ! id pbulk; then user add -m -g users pbulk; fi
46;; 51;;
47FreeBSD) 52FreeBSD)
48if ! id pbulk; then 53if ! id pbulk; then
49 if ! pw groupshow users; then pw groupadd users; fi 54 if ! pw groupshow users; then pw groupadd users; fi
50 pw useradd pbulk -m -g users 55 pw useradd pbulk -m -g users
51fi 56fi
52;; 57;;
53*) 58*)
54if ! id pbulk; then echo "user \"pbulk\" is absent"; exit 1; fi 59if ! id pbulk; then echo "user \"pbulk\" is absent"; exit 1; fi
55;; 60;;
56esac 61esac
57fi 62fi
58 63
59# Deploying pbulk packages: 64# Deploying pbulk packages:
60# - bootstrapping 65# - bootstrapping
61cat >${TMPDIR}/pbulk.mk <<EOF 66cat >${TMPDIR}/pbulk.mk <<EOF
62PKG_DEVELOPER= yes 67PKG_DEVELOPER= yes
63EOF 68EOF
64 69
65${PKGSRCDIR}/bootstrap/bootstrap \ 70${PKGSRCDIR}/bootstrap/bootstrap \
66 ${unprivileged:+--unprivileged} \ 71 ${unprivileged:+--unprivileged} \
67 --mk-fragment=${TMPDIR}/pbulk.mk \ 72 --mk-fragment=${TMPDIR}/pbulk.mk \
68 --prefix=${PBULKPREFIX} \ 73 --prefix=${PBULKPREFIX} \
69 --workdir=${PBULKWORK} 74 --workdir=${PBULKWORK}
70rm -rf ${PBULKWORK} 75rm -rf ${PBULKWORK}
71rm -f ${TMPDIR}/pbulk.mk 76rm -f ${TMPDIR}/pbulk.mk
72 77
73# - installing pbulk 78# - installing pbulk
74(cd ${PKGSRCDIR}/pkgtools/pbulk && PACKAGES=${TMPDIR}/packages-pbulk WRKOBJDIR=${TMPDIR}/obj-pbulk ${PBULKPREFIX}/bin/bmake install) 79(cd ${PKGSRCDIR}/pkgtools/pbulk && PACKAGES=${TMPDIR}/packages-pbulk WRKOBJDIR=${TMPDIR}/obj-pbulk ${PBULKPREFIX}/bin/bmake install)
75rm -rf ${TMPDIR}/obj-pbulk 80rm -rf ${TMPDIR}/obj-pbulk
76rm -rf ${TMPDIR}/packages-pbulk 81rm -rf ${TMPDIR}/packages-pbulk
77 82
78## cleaning after all this: 83## cleaning after all this:
79# rm -rf ${PBULKPREFIX} 84# rm -rf ${PBULKPREFIX}
80 85
81cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF 86cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF
82# 87#
83# Overriding default settings: 88# Overriding default settings:
84master_mode=no 89master_mode=no
85bootstrapkit=${PACKAGES}/bootstrap.tar.gz 90bootstrapkit=${PACKAGES}/bootstrap.tar.gz
86bulklog=${BULKLOG} 91bulklog=${BULKLOG}
87packages=${PACKAGES} 92packages=${PACKAGES}
88mail=: 93mail=:
89rsync=: 94rsync=:
90EOF 95EOF
91# base_url needs to be adjusted, although the pbulk code should 96# base_url needs to be adjusted, although the pbulk code should
92# not need to know it at all, maybe except for generating the 97# not need to know it at all, maybe except for generating the
93# mail that the report has been completed. 98# mail that the report has been completed.
94 99
95# Speed scan phase up for repeated runs: 100# Speed scan phase up for repeated runs:
96cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF 101cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF
97reuse_scan_results=yes 102reuse_scan_results=yes
98EOF 103EOF
99 104
100# Quotes around "EOF" are important below 105# Quotes around "EOF" are important below
101# (they prevent variable expansion in here-document): 106# (they prevent variable expansion in here-document):
102cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<"EOF" 107cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<"EOF"
103# Don't forget to recompute dependent settings: 108# Don't forget to recompute dependent settings:
104loc=${bulklog}/meta 109loc=${bulklog}/meta
105EOF 110EOF
106 111
107if [ -n "$limited" ]; then 112if [ -n "$limited" ]; then
108cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF 113cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF
109# Limited list build overrides: 114# Limited list build overrides:
110limited_list=${PBULKPREFIX}/etc/pbulk.list 115limited_list=${PBULKPREFIX}/etc/pbulk.list
111EOF 116EOF
112 117
113# generate minimal list 118# generate minimal list
114cat > ${PBULKPREFIX}/etc/pbulk.list <<EOF 119cat > ${PBULKPREFIX}/etc/pbulk.list <<EOF
115pkgtools/digest 120pkgtools/digest
116EOF 121EOF
117fi 122fi
118 123
119if [ -n "$unprivileged" ]; then 124if [ -n "$unprivileged" ]; then
120# Unprivileged bulk build: 125# Unprivileged bulk build:
121cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF 126cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF
122# Unprivileged bulk build overrides: 127# Unprivileged bulk build overrides:
123unprivileged_user=$(id -un) 128unprivileged_user=$(id -un)
124pkgsrc=${PKGSRCDIR} 129pkgsrc=${PKGSRCDIR}
125prefix=${PREFIX} 130prefix=${PREFIX}
126varbase=${PREFIX}/var 131varbase=${PREFIX}/var
127pkgdb=${PREFIX}/var/db/pkg 132pkgdb=${PKGDBDIR}
128EOF 133EOF
129elif [ -n "${PREFIX}" ]; then 134elif [ -n "${PREFIX}" ]; then
130# Non-default prefix: 135# Non-default prefix:
131cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF 136cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF
132# Non-default prefix overrides: 137# Non-default prefix overrides:
133prefix=${PREFIX} 138prefix=${PREFIX}
134varbase=${PREFIX}/var 139varbase=${PREFIX}/var
135pkgdb=${PREFIX}/var/db/pkg 140pkgdb=${PKGDBDIR}
136EOF 141EOF
137fi 142fi
138 143
139# Quotes around "EOF" are important below 144# Quotes around "EOF" are important below
140# (they prevent variable expansion in here-document): 145# (they prevent variable expansion in here-document):
141cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<"EOF" 146cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<"EOF"
142# Don't forget to recompute dependent settings: 147# Don't forget to recompute dependent settings:
143make=${prefix}/bin/bmake 148make=${prefix}/bin/bmake
144EOF 149EOF
145 150
146if [ -n "$native" ]; then 151if [ -n "$native" ]; then
147# Native bulk build (native make, no bootstrap kit needed): 152# Native bulk build (native make, no bootstrap kit needed):
148cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF 153cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF
149# Native bulk build overrides: 154# Native bulk build overrides:
150make=/usr/bin/make 155make=/usr/bin/make
151bootstrapkit= 156bootstrapkit=
152EOF 157EOF
153fi 158fi
154 159
155# Distributed bulk build: 160# Distributed bulk build:
156if [ -n "$nodes" ]; then 161if [ -n "$nodes" ]; then
157master_node="${nodes%% *}" 162master_node="${nodes%% *}"
158slave_nodes="${nodes#* }" 163slave_nodes="${nodes#* }"
159cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF 164cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF
160# Distributed bulk build overrides: 165# Distributed bulk build overrides:
161master_mode=yes 166master_mode=yes
162master_ip="${master_node}" 167master_ip="${master_node}"
163scan_clients="${slave_nodes}" 168scan_clients="${slave_nodes}"
164build_clients="${slave_nodes}" 169build_clients="${slave_nodes}"
165EOF 170EOF
166cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<"EOF" 171cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<"EOF"
167# Recompute dependent settings: 172# Recompute dependent settings:
168master_port_scan=${master_ip}:2001 173master_port_scan=${master_ip}:2001
169master_port_build=${master_ip}:2002 174master_port_build=${master_ip}:2002
170EOF 175EOF
171fi 176fi
172 177
173cat ${PBULKPREFIX}/etc/pbulk.conf ${PBULKPREFIX}/etc/pbulk.conf.over > ${PBULKPREFIX}/etc/pbulk.conf.new 178cat ${PBULKPREFIX}/etc/pbulk.conf ${PBULKPREFIX}/etc/pbulk.conf.over > ${PBULKPREFIX}/etc/pbulk.conf.new
174cp ${PBULKPREFIX}/etc/pbulk.conf ${PBULKPREFIX}/etc/pbulk.conf.bak 179cp ${PBULKPREFIX}/etc/pbulk.conf ${PBULKPREFIX}/etc/pbulk.conf.bak
175mv ${PBULKPREFIX}/etc/pbulk.conf.new ${PBULKPREFIX}/etc/pbulk.conf 180mv ${PBULKPREFIX}/etc/pbulk.conf.new ${PBULKPREFIX}/etc/pbulk.conf
176 181
177# Bootstrapping 182# Bootstrapping
178if [ -n "$native" ]; then 183if [ -n "$native" ]; then
179if [ -n "$mk_fragment" ]; then cat "$mk_fragment" > /etc/mk.conf; fi 184if [ -n "$mk_fragment" ]; then cat "$mk_fragment" > /etc/mk.conf; fi
180else 185else
181# Ensure that the directory for bootstrap kit exists: 186# Ensure that the directory for bootstrap kit exists:
182mkdir -p ${PACKAGES} 187mkdir -p ${PACKAGES}
183 188
184# Creating the bootstrap kit 189# Creating the bootstrap kit
185${PKGSRCDIR}/bootstrap/bootstrap \ 190${PKGSRCDIR}/bootstrap/bootstrap \
186 ${unprivileged:+--unprivileged} \ 191 ${unprivileged:+--unprivileged} \
187 ${PREFIX:+--prefix=${PREFIX}} \ 192 ${PREFIX:+--prefix=${PREFIX}} \
188 ${mk_fragment:+--mk-fragment="$mk_fragment"} \ 193 ${mk_fragment:+--mk-fragment="$mk_fragment"} \
189 --workdir=${TMPDIR}/work \ 194 --workdir=${TMPDIR}/work \
 195 ${PKGDBDIR:+--pkgdbdir=${PKGDBDIR}} \
190 --gzip-binary-kit=${PACKAGES}/bootstrap.tar.gz 196 --gzip-binary-kit=${PACKAGES}/bootstrap.tar.gz
191rm -rf ${TMPDIR}/work 197rm -rf ${TMPDIR}/work
192rm -f ${TMPDIR}/mk.conf.inc 198rm -f ${TMPDIR}/mk.conf.inc
193fi 199fi
194# Keep "packages" in pbulk.conf and "PACKAGES" in mk.conf fragment in sync. 200# Keep "packages" in pbulk.conf and "PACKAGES" in mk.conf fragment in sync.
195 201
196# Final preparations: 202# Final preparations:
197mkdir -p ${PACKAGES} 203mkdir -p ${PACKAGES}
198 204
199# Let's start: 205# Let's start:
200#PACKAGES=${PACKAGES} WRKOBJDIR=${TMPDIR} ${PBULKPREFIX}/bin/bulkbuild 206#PACKAGES=${PACKAGES} WRKOBJDIR=${TMPDIR} ${PBULKPREFIX}/bin/bulkbuild