summaryrefslogtreecommitdiff
path: root/contrib/cirrus/packer/fedora_setup.sh
blob: fcef7360b4bf38fdaa0a85cef70c6f4f22bbb44b (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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/bin/bash

# This script is called by packer on the subject fedora VM, to setup the podman
# build/test environment.  It's not intended to be used outside of this context.

set -e

# Load in library (copied by packer, before this script was run)
source /tmp/libpod/$SCRIPT_BASE/lib.sh

req_env_var SCRIPT_BASE PACKER_BUILDER_NAME GOSRC FEDORA_BASE_IMAGE OS_RELEASE_ID OS_RELEASE_VER

install_ooe

if [[ $OS_RELEASE_VER -le 31 ]]; then
    warn "Switching io scheduler to 'deadline' to avoid RHBZ 1767539"
    warn "aka https://bugzilla.kernel.org/show_bug.cgi?id=205447"
    echo "mq-deadline" | sudo tee /sys/block/sda/queue/scheduler > /dev/null
    sudo cat /sys/block/sda/queue/scheduler
fi

export GOPATH="$(mktemp -d)"
trap "sudo rm -rf $GOPATH" EXIT

$BIGTO ooe.sh sudo dnf update -y

# Do not enable update-stesting on the previous Fedora release
if [[ "$FEDORA_BASE_IMAGE" =~ "${OS_RELEASE_ID}-cloud-base-${OS_RELEASE_VER}" ]]; then
    warn "Enabling updates-testing repository for image based on $FEDORA_BASE_IMAGE"
    $LILTO ooe.sh sudo dnf install -y 'dnf-command(config-manager)'
    $LILTO ooe.sh sudo dnf config-manager --set-enabled updates-testing
else
    warn "NOT enabling updates-testing repository for image based on $PRIOR_FEDORA_BASE_IMAGE"
fi

REMOVE_PACKAGES=()
INSTALL_PACKAGES=(\
    autoconf
    automake
    bash-completion
    bats
    bridge-utils
    btrfs-progs-devel
    buildah
    bzip2
    conmon
    container-selinux
    containernetworking-plugins
    containers-common
    criu
    device-mapper-devel
    dnsmasq
    emacs-nox
    file
    findutils
    fuse3
    fuse3-devel
    gcc
    git
    glib2-devel
    glibc-static
    gnupg
    go-md2man
    golang
    gpgme-devel
    iproute
    iptables
    jq
    libassuan-devel
    libcap-devel
    libmsi1
    libnet
    libnet-devel
    libnl3-devel
    libseccomp
    libseccomp-devel
    libselinux-devel
    libtool
    libvarlink-util
    lsof
    make
    msitools
    nmap-ncat
    ostree-devel
    pandoc
    podman
    procps-ng
    protobuf
    protobuf-c
    protobuf-c-devel
    protobuf-devel
    python
    python3-dateutil
    python3-psutil
    python3-pytoml
    rsync
    selinux-policy-devel
    skopeo
    skopeo-containers
    slirp4netns
    unzip
    vim
    wget
    which
    xz
    zip
)

case "$OS_RELEASE_VER" in
    30)
        INSTALL_PACKAGES+=(\
            atomic-registries
            golang-github-cpuguy83-go-md2man
            python2-future
            runc
        )
        REMOVE_PACKAGES+=(crun)
        ;;
    31)
        INSTALL_PACKAGES+=(crun)
        REMOVE_PACKAGES+=(runc)
        ;;
    32)
        INSTALL_PACKAGES+=(crun)
        REMOVE_PACKAGES+=(runc)
        ;;
    *)
        bad_os_id_ver ;;
esac

echo "Installing general build/test dependencies for Fedora '$OS_RELEASE_VER'"
$BIGTO ooe.sh sudo dnf install -y ${INSTALL_PACKAGES[@]}

[[ "${#REMOVE_PACKAGES[@]}" -eq "0" ]] || \
    $LILTO ooe.sh sudo dnf erase -y ${REMOVE_PACKAGES[@]}

echo "Enabling cgroup management from containers"
ooe.sh sudo setsebool container_manage_cgroup true

ooe.sh sudo /tmp/libpod/hack/install_catatonit.sh

# Ensure there are no disruptive periodic services enabled by default in image
systemd_banish

rh_finalize

echo "SUCCESS!"