OILS / test / gentoo.sh View on Github | oilshell.org

83 lines, 41 significant
1#!/usr/bin/env bash
2#
3# Test building the tarball on Gentoo. Adapted from test/alpine.sh.
4#
5# https://wiki.gentoo.org/wiki/Chroot
6#
7# Usage:
8# test/gentoo.sh <function name>
9
10set -o nounset
11set -o pipefail
12set -o errexit
13
14# 188 MB -- big!
15# TODO: These are http-only, and need to be verified!
16readonly ROOTFS_URL='http://distfiles.gentoo.org/releases/amd64/autobuilds/20180116T214503Z/stage3-amd64-20180116T214503Z.tar.xz'
17readonly CHROOT_DIR=_chroot/gentoo
18
19readonly PORTAGE_URL='http://distfiles.gentoo.org/snapshots/portage-20180202.tar.xz'
20
21download() {
22 wget --no-clobber --directory _tmp $ROOTFS_URL
23 wget --no-clobber --directory _tmp $PORTAGE_URL
24}
25
26_extract() {
27 local dest=${1:-$CHROOT_DIR}
28
29 local tarball=_tmp/$(basename $ROOTFS_URL)
30
31 mkdir -p $dest
32 # Must be run as root
33 tar --extract --xz --directory $dest < $tarball
34}
35extract() { sudo $0 _extract "$@"; }
36
37_extract-portage() {
38 local dest=${1:-$CHROOT_DIR}
39 local portage_dest=$dest/usr
40
41 local tarball=_tmp/$(basename $PORTAGE_URL)
42
43 # Must be run as root
44 tar --extract --xz --directory $portage_dest < $tarball
45}
46extract-portage() { sudo $0 _extract-portage "$@"; }
47
48# Copied from the wiki page.
49_mount-dirs() {
50 mount --rbind /dev $CHROOT_DIR/dev
51 mount --make-rslave $CHROOT_DIR/dev
52 mount -t proc /proc $CHROOT_DIR/proc
53 mount --rbind /sys $CHROOT_DIR/sys
54 mount --make-rslave $CHROOT_DIR/sys
55 mount --rbind /tmp $CHROOT_DIR/tmp
56}
57mount-dirs() { sudo $0 _mount-dirs "$@"; }
58
59_setup-portage() {
60 cp -v $CHROOT_DIR/usr/share/portage/config/make.conf.example $CHROOT_DIR/etc/portage
61}
62setup-portage() { sudo $0 _setup-portage "$@"; }
63
64# From alpine:
65
66# Don't need chmod-chroot, I guess the tarball handles it.
67#
68# test/alpine.sh setup-dns _chroot/gentoo
69# test/alpine.sh copy-tar _chroot/gentoo
70# test/alpine.sh enter-chroot _chroot/gentoo
71
72# emerge --sync -- Ran it manually
73
74add-oil-build-deps() {
75 local chroot_dir=${1:-$CHROOT_DIR}
76 sudo chroot $chroot_dir /bin/sh <<EOF
77apk update
78apk add bash make gcc musl-dev
79EOF
80}
81
82
83"$@"