| @@ -1,15 +1,15 @@ | | | @@ -1,15 +1,15 @@ |
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 $ |
3 | set -e | | 3 | set -e |
4 | | | 4 | |
5 | usage="usage: ${0##*/} [-lun] [-c mk.conf.fragment] [-d nodes]" | | 5 | usage="usage: ${0##*/} [-lun] [-c mk.conf.fragment] [-d nodes]" |
6 | | | 6 | |
7 | while getopts lunc:d: opt; do | | 7 | while 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 |
| @@ -28,26 +28,31 @@ if [ -n "$unprivileged" ]; then | | | @@ -28,26 +28,31 @@ if [ -n "$unprivileged" ]; then |
28 | : ${BULKLOG:=${HOME}/bulklog} | | 28 | : ${BULKLOG:=${HOME}/bulklog} |
29 | fi | | 29 | fi |
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: |
| | | 42 | if [ -n "$unprivileged" -o -n "${PREFIX}" ]; then |
| | | 43 | : ${PKGDBDIR:=${PREFIX}/var/db/pkg} |
| | | 44 | fi |
| | | 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: |
42 | if [ ! -n "$unprivileged" ]; then | | 47 | if [ ! -n "$unprivileged" ]; then |
43 | case "$(uname)" in | | 48 | case "$(uname)" in |
44 | NetBSD) | | 49 | NetBSD) |
45 | if ! id pbulk; then user add -m -g users pbulk; fi | | 50 | if ! id pbulk; then user add -m -g users pbulk; fi |
46 | ;; | | 51 | ;; |
47 | FreeBSD) | | 52 | FreeBSD) |
48 | if ! id pbulk; then | | 53 | if ! 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 |
51 | fi | | 56 | fi |
52 | ;; | | 57 | ;; |
53 | *) | | 58 | *) |
| @@ -114,35 +119,35 @@ EOF | | | @@ -114,35 +119,35 @@ EOF |
114 | cat > ${PBULKPREFIX}/etc/pbulk.list <<EOF | | 119 | cat > ${PBULKPREFIX}/etc/pbulk.list <<EOF |
115 | pkgtools/digest | | 120 | pkgtools/digest |
116 | EOF | | 121 | EOF |
117 | fi | | 122 | fi |
118 | | | 123 | |
119 | if [ -n "$unprivileged" ]; then | | 124 | if [ -n "$unprivileged" ]; then |
120 | # Unprivileged bulk build: | | 125 | # Unprivileged bulk build: |
121 | cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF | | 126 | cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF |
122 | # Unprivileged bulk build overrides: | | 127 | # Unprivileged bulk build overrides: |
123 | unprivileged_user=$(id -un) | | 128 | unprivileged_user=$(id -un) |
124 | pkgsrc=${PKGSRCDIR} | | 129 | pkgsrc=${PKGSRCDIR} |
125 | prefix=${PREFIX} | | 130 | prefix=${PREFIX} |
126 | varbase=${PREFIX}/var | | 131 | varbase=${PREFIX}/var |
127 | pkgdb=${PREFIX}/var/db/pkg | | 132 | pkgdb=${PKGDBDIR} |
128 | EOF | | 133 | EOF |
129 | elif [ -n "${PREFIX}" ]; then | | 134 | elif [ -n "${PREFIX}" ]; then |
130 | # Non-default prefix: | | 135 | # Non-default prefix: |
131 | cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF | | 136 | cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF |
132 | # Non-default prefix overrides: | | 137 | # Non-default prefix overrides: |
133 | prefix=${PREFIX} | | 138 | prefix=${PREFIX} |
134 | varbase=${PREFIX}/var | | 139 | varbase=${PREFIX}/var |
135 | pkgdb=${PREFIX}/var/db/pkg | | 140 | pkgdb=${PKGDBDIR} |
136 | EOF | | 141 | EOF |
137 | fi | | 142 | fi |
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): |
141 | cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<"EOF" | | 146 | cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<"EOF" |
142 | # Don't forget to recompute dependent settings: | | 147 | # Don't forget to recompute dependent settings: |
143 | make=${prefix}/bin/bmake | | 148 | make=${prefix}/bin/bmake |
144 | EOF | | 149 | EOF |
145 | | | 150 | |
146 | if [ -n "$native" ]; then | | 151 | if [ -n "$native" ]; then |
147 | # Native bulk build (native make, no bootstrap kit needed): | | 152 | # Native bulk build (native make, no bootstrap kit needed): |
148 | cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF | | 153 | cat >> ${PBULKPREFIX}/etc/pbulk.conf.over <<EOF |
| @@ -177,24 +182,25 @@ mv ${PBULKPREFIX}/etc/pbulk.conf.new ${P | | | @@ -177,24 +182,25 @@ mv ${PBULKPREFIX}/etc/pbulk.conf.new ${P |
177 | # Bootstrapping | | 182 | # Bootstrapping |
178 | if [ -n "$native" ]; then | | 183 | if [ -n "$native" ]; then |
179 | if [ -n "$mk_fragment" ]; then cat "$mk_fragment" > /etc/mk.conf; fi | | 184 | if [ -n "$mk_fragment" ]; then cat "$mk_fragment" > /etc/mk.conf; fi |
180 | else | | 185 | else |
181 | # Ensure that the directory for bootstrap kit exists: | | 186 | # Ensure that the directory for bootstrap kit exists: |
182 | mkdir -p ${PACKAGES} | | 187 | mkdir -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 |
191 | rm -rf ${TMPDIR}/work | | 197 | rm -rf ${TMPDIR}/work |
192 | rm -f ${TMPDIR}/mk.conf.inc | | 198 | rm -f ${TMPDIR}/mk.conf.inc |
193 | fi | | 199 | fi |
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: |
197 | mkdir -p ${PACKAGES} | | 203 | mkdir -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 |