| 1 | #!bin/ysh
|
| 2 |
|
| 3 | . regtest/debian-common.ysh
|
| 4 |
|
| 5 | proc 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 |
|
| 12 | proc 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 |
|
| 18 | proc 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 |
|
| 39 | proc enter-package-layer(package, cmd) {
|
| 40 | sudo chroot $DEBIAN_ROOT/package-overlays/$package.overlay/merged /bin/bash -l -c $cmd
|
| 41 | }
|
| 42 |
|
| 43 | proc 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 |
|
| 50 | proc 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 | }
|
| 58 | proc 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 |
|
| 68 | runproc @ARGV
|