-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathmanjarobuild.in
More file actions
90 lines (75 loc) · 2.17 KB
/
manjarobuild.in
File metadata and controls
90 lines (75 loc) · 2.17 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash
m4_include(lib/common.sh)
base_packages=(base-devel)
makechrootpkg_args=(-c -n)
cmd="${0##*/}"
tag="${cmd%-build}"
repo=${tag%-*}
arch=${tag##*-}
pacman_conf_arch='default'
branch="${repo}"
if [ "$arch" == 'multilib' ]; then
pacman_conf_arch='multilib'
arch='x86_64'
repo="${repo}-multilib"
base_packages+=(multilib-devel)
fi
chroots='/var/lib/manjarobuild'
clean_first=false
usage() {
echo "Usage: $cmd [options] -- [makechrootpkg args]"
echo ' -h This help'
echo ' -c Recreate the chroot before building'
echo ' -r <dir> Create chroots in this directory'
echo ''
echo "Default makechrootpkg args: ${makechrootpkg_args[*]}"
echo ''
exit 1
}
while getopts 'hcr:' arg; do
case "${arg}" in
c) clean_first=true ;;
r) chroots="$OPTARG" ;;
*) usage ;;
esac
done
# Pass all arguments after -- right to makepkg
makechrootpkg_args+=("${@:$OPTIND}")
if (( EUID )); then
die 'This script must be run as root.'
fi
if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then
msg "Creating chroot for [${repo}] (${arch})..."
for copy in "${chroots}/${repo}-${arch}"/*; do
[[ -d $copy ]] || continue
msg2 "Deleting chroot copy '$(basename "${copy}")'..."
exec 9>"$copydir.lock"
if ! flock -n 9; then
stat_busy "Locking chroot copy '$copy'"
flock 9
stat_done
fi
if [[ "$(stat -f -c %T "${copy}")" == btrfs ]]; then
{ type -P btrfs && btrfs subvolume delete "${copy}"; } &>/dev/null
fi
rm -rf --one-file-system "${copy}"
done
exec 9>&-
rm -rf --one-file-system "${chroots}/${repo}-${arch}"
mkdir -p "${chroots}/${repo}-${arch}"
setarch "${arch}" mkmanjaroroot \
-C "@pkgdatadir@/pacman-${pacman_conf_arch}.conf" \
-M "@pkgdatadir@/makepkg-${arch}.conf" \
-b "${branch}" \
"${chroots}/${repo}-${arch}/root" \
"${base_packages[@]}" || abort
else
setarch ${arch} mkmanjaroroot \
-u \
-C "@pkgdatadir@/pacman-${pacman_conf_arch}.conf" \
-M "@pkgdatadir@/makepkg-${arch}.conf" \
-b "${branch}" \
"${chroots}/${repo}-${arch}/root" || abort
fi
msg "Building in chroot for [${repo}] (${arch})..."
exec setarch "${arch}" makechrootpkg "${makechrootpkg_args[@]}" -r "${chroots}/${repo}-${arch}" -b "${branch}"