forked from delphix/linux-pkg
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·132 lines (110 loc) · 4.5 KB
/
Copy pathsetup.sh
File metadata and controls
executable file
·132 lines (110 loc) · 4.5 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
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
#!/usr/bin/env bash
#
# Copyright 2018, 2020 Delphix
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
TOP="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
source "$TOP/lib/common.sh"
logmust check_running_system
logmust determine_default_git_branch
#
# Update the sources.list file to point to our internal package mirror. If no
# mirror url is passed in, then the latest mirror snapshot is used.
#
function configure_apt_sources() {
local package_mirror_url
local primary_url="$DELPHIX_PACKAGE_MIRROR_MAIN"
local secondary_url="$DELPHIX_PACKAGE_MIRROR_SECONDARY"
if [[ -z "$primary_url" ]] || [[ -z "$secondary_url" ]]; then
local latest_url="http://linux-package-mirror.delphix.com/"
if is_release_branch; then
package_mirror_url="${latest_url}${DEFAULT_GIT_BRANCH}"
else
latest_url+="${DEFAULT_GIT_BRANCH}/latest/"
package_mirror_url=$(curl -LfSs -o /dev/null -w '%{url_effective}' \
"$latest_url" || die "Could not curl $latest_url")
# Remove trailing slash, if present.
package_mirror_url="${package_mirror_url%/}"
fi
[[ -z "$primary_url" ]] && primary_url="${package_mirror_url}/ubuntu"
[[ -z "$secondary_url" ]] && secondary_url="${package_mirror_url}/ppas"
fi
#
# Store the package mirror in a file so that it can be added to a
# package build's metadata via store_build_info().
#
echo "$primary_url" >"$TOP/PACKAGE_MIRROR_URL_MAIN"
echo "$secondary_url" >"$TOP/PACKAGE_MIRROR_URL_SECONDARY"
#
# Remove other sources in sources.list.d if they are present.
#
[[ -d /etc/apt/sources.list.d ]] && (
logmust sudo rm -rf /etc/apt/sources.list.d ||
die "Could not remove /etc/apt/sources.list.d"
)
sudo bash -c "cat <<-EOF >/etc/apt/sources.list
deb ${primary_url} ${UBUNTU_DISTRIBUTION} main restricted universe multiverse
deb-src ${primary_url} ${UBUNTU_DISTRIBUTION} main restricted universe multiverse
deb ${primary_url} ${UBUNTU_DISTRIBUTION}-updates main restricted universe multiverse
deb-src ${primary_url} ${UBUNTU_DISTRIBUTION}-updates main restricted universe multiverse
deb ${primary_url} ${UBUNTU_DISTRIBUTION}-security main restricted universe multiverse
deb-src ${primary_url} ${UBUNTU_DISTRIBUTION}-security main restricted universe multiverse
deb ${primary_url} ${UBUNTU_DISTRIBUTION}-backports main restricted universe multiverse
deb-src ${primary_url} ${UBUNTU_DISTRIBUTION}-backports main restricted universe multiverse
deb ${secondary_url} ${UBUNTU_DISTRIBUTION} main multiverse universe
deb ${secondary_url} ${UBUNTU_DISTRIBUTION}-updates main multiverse universe
EOF" || die "/etc/apt/sources.list could not be updated"
logmust sudo apt-key add "$TOP/resources/delphix-secondary-mirror.key"
}
#
# Some packages require cause a spike in memory usage during the build, so
# we add a swap file to prevent the oom-killer from terminating the build.
#
function add_swap() {
local swapfile="/swapfile"
local size="4G"
if [[ ! -f "$swapfile" ]]; then
logmust sudo fallocate -l "$size" "$swapfile"
logmust sudo chmod 600 /swapfile
logmust sudo mkswap /swapfile
fi
if ! sudo swapon --show | grep -q "$swapfile"; then
logmust sudo swapon "$swapfile"
fi
}
logmust configure_apt_sources
logmust sudo apt-get update
#
# - debhelper is used to build most Debian packages. It is required by
# the dpkg_buildpackage_default() command.
# - devscripts provides dch, which is used to automatically generate and update
# changelog entries. It is required by the dpkg_buildpackage_default()
# command.
# - equivs is used by the mk-build-deps utility which is used to install
# build dependencies from a control file.
# - install_shfmt and shellcheck are needed for - make check - to be able to
# make sure style checks are fine.
# - jq is used to generate a JSON formatted metadata file by some packages.
#
logmust install_pkgs \
debhelper \
devscripts \
equivs \
shellcheck \
jq
logmust install_shfmt
logmust add_swap
logmust git config --global user.email "eng@delphix.com"
logmust git config --global user.name "Delphix Engineering"
logmust sudo touch /run/linux-pkg-setup