blob: 5ebda46361f30a903c7b2178832c1bc748dfca9e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
--- arch-nspawn.in 2016-05-09 18:37:11.684488405 -0400
+++ arch-nspawn.ugly 2016-05-11 01:33:29.914317415 -0300
@@ -1,4 +1,6 @@
#!/bin/bash
+# License: GNU GPLv2
+#
# 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.
@@ -14,6 +16,8 @@
working_dir=''
+files=()
+
usage() {
echo "Usage: ${0##*/} [options] working-dir [systemd-nspawn arguments]"
echo "A wrapper around systemd-nspawn. Provides support for pacman."
@@ -22,17 +26,21 @@
echo ' -C <file> Location of a pacman config file'
echo ' -M <file> Location of a makepkg config file'
echo ' -c <dir> Set pacman cache'
+ echo ' -f <file> Copy file from the host to the chroot'
+ echo ' -s Do not run setarch'
echo ' -h This message'
exit 1
}
orig_argv=("$@")
-while getopts 'hC:M:c:' arg; do
+while getopts 'hC:M:c:f:s' arg; do
case "$arg" in
C) pac_conf="$OPTARG" ;;
M) makepkg_conf="$OPTARG" ;;
c) cache_dir="$OPTARG" ;;
+ f) files+=("$OPTARG") ;;
+ s) nosetarch=1 ;;
h|?) usage ;;
*) error "invalid argument '%s'" "$arg"; usage ;;
esac
@@ -78,6 +86,12 @@
[[ -n $pac_conf ]] && cp $pac_conf "$working_dir/etc/pacman.conf"
[[ -n $makepkg_conf ]] && cp $makepkg_conf "$working_dir/etc/makepkg.conf"
+ local file
+ for file in "${files[@]}"; do
+ mkdir -p "$(dirname "$working_dir$file")"
+ cp -T "$file" "$working_dir$file"
+ done
+
sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${cache_dirs[@]})|g" -i "$working_dir/etc/pacman.conf"
}
# }}}
@@ -92,11 +106,15 @@
fi
build_mount_args
+cache_dirs+=('/repo/')
copy_hostconf
+if [[ -z $nosetarch ]]; then
eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf")
+export _setarch=${CARCH:+setarch "$CARCH"}
+fi
-exec ${CARCH:+setarch "$CARCH"} systemd-nspawn -q \
+exec $_setarch systemd-nspawn -q \
-D "$working_dir" \
--register=no \
"${mount_args[@]}" \
|