OILS / regtest / debian-build.ysh View on Github | oils.pub

68 lines, 56 significant
1#!bin/ysh
2
3. regtest/debian-common.ysh
4
5proc create-package-layer(package) {
6 mkdir -p $DEBIAN_ROOT/package-overlays
7 var package_layer_dir = "$DEBIAN_ROOT/package-overlays/$package.overlay"
8 rm -rf $package_layer_dir
9 mkdir -v -p $package_layer_dir/{merged,work,layer}
10}
11
12proc remove-package-layer(package) {
13 var dir=DEBIAN_ROOT ++ '/package-overlays/' ++ package ++ '.overlay'
14 sudo umount $dir/merged || true
15 sudo rm -rf $dir
16}
17
18proc setup-package-layer(package, base) {
19 var package_dir = "$DEBIAN_ROOT/package-overlays/$package.overlay"
20 var lower_dir = ''
21 if(base === 'baseline') {
22 setvar lower_dir = CHROOT_DIR
23 } elif (base === 'osh-as-sh') {
24 setvar lower_dir=DEBIAN_ROOT ++ '/osh-as-sh.overlay/merged'
25 } else {
26 echo "Error: $base is not a valid option"
27 return 1
28 }
29 # -o index=off fixes this error: fsconfig() failed: Stale file handle
30 # See also https://oilshell.zulipchat.com/#narrow/channel/522730-distros/topic/setting.20up.20regtest.2Faports-setup.2Esh/with/544318771
31 sudo mount \
32 -t overlay \
33 $package-layer \
34 -o index=off \
35 -o "lowerdir=$lower_dir,upperdir=$package_dir/layer,workdir=$package_dir/work" \
36 $package_dir/merged
37}
38
39proc enter-package-layer(package, cmd) {
40 sudo chroot $DEBIAN_ROOT/package-overlays/$package.overlay/merged /bin/bash -l -c $cmd
41}
42
43proc build-package(package) {
44 var cd='cd /home/udu;'
45 enter-package-layer $package "apt-get update"
46 enter-package-layer $package "$cd apt-get source $package"
47 enter-package-layer $package "$cd cd $package-*; apt-get build-dep -y $package; dpkg-buildpackage -us -uc -b"
48}
49
50proc osh-package-build(package) {
51 try {
52 remove-package-layer $package
53 }
54 create-package-layer $package
55 setup-package-layer $package osh-as-sh
56 build-package $package
57}
58proc baseline-package-build(package) {
59 try {
60 remove-package-layer $package
61 }
62 create-package-layer $package
63 setup-package-layer $package baseline
64 build-package $package
65}
66
67
68runproc @ARGV