Skip to content

Commit b077ce4

Browse files
AlexhuszaghEmilgardis
authored andcommitted
Simplify FreeBSD package installs.
(cherry picked from commit 81c1e59)
1 parent 3ddad87 commit b077ce4

File tree

6 files changed

+72
-47
lines changed

6 files changed

+72
-47
lines changed

docker/Dockerfile.i686-unknown-freebsd

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ RUN /cmake.sh
1010
COPY xargo.sh /
1111
RUN /xargo.sh
1212

13+
RUN echo "export ARCH=i686" > /freebsd-arch.sh
1314
COPY freebsd-common.sh /
1415
COPY freebsd.sh /
15-
RUN /freebsd.sh i686
16+
RUN /freebsd.sh
1617

18+
COPY freebsd-install.sh /
1719
COPY freebsd-extras.sh /
18-
RUN /freebsd-extras.sh i686
20+
RUN /freebsd-extras.sh
1921

2022
ENV CARGO_TARGET_I686_UNKNOWN_FREEBSD_LINKER=i686-unknown-freebsd12-gcc \
2123
CC_i686_unknown_freebsd=i686-unknown-freebsd12-gcc \

docker/Dockerfile.x86_64-unknown-freebsd

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ RUN /cmake.sh
1010
COPY xargo.sh /
1111
RUN /xargo.sh
1212

13+
RUN echo "export ARCH=x86_64" > /freebsd-arch.sh
1314
COPY freebsd-common.sh /
1415
COPY freebsd.sh /
15-
RUN /freebsd.sh x86_64
16+
RUN /freebsd.sh
1617

18+
COPY freebsd-install.sh /
1719
COPY freebsd-extras.sh /
18-
RUN /freebsd-extras.sh x86_64
20+
RUN /freebsd-extras.sh
1921

2022
ENV CARGO_TARGET_X86_64_UNKNOWN_FREEBSD_LINKER=x86_64-unknown-freebsd12-gcc \
2123
CC_x86_64_unknown_freebsd=x86_64-unknown-freebsd12-gcc \

docker/freebsd-common.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
set -x
44
set -euo pipefail
55

6+
# shellcheck disable=SC1091
7+
. freebsd-arch.sh
8+
69
export BSD_ARCH=
710
case "${ARCH}" in
811
x86_64)

docker/freebsd-extras.sh

Lines changed: 4 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,55 +3,17 @@
33
set -x
44
set -euo pipefail
55

6-
export ARCH="${1}"
76
# shellcheck disable=SC1091
87
. lib.sh
98
# shellcheck disable=SC1091
109
. freebsd-common.sh
10+
# shellcheck disable=SC1091
11+
. freebsd-install.sh
1112

1213
main() {
13-
local pkg_source="https://pkg.freebsd.org/FreeBSD:${BSD_MAJOR}:${BSD_ARCH}/quarterly"
14-
install_packages curl jq xz-utils
15-
16-
local td
17-
td="$(mktemp -d)"
18-
19-
mkdir "${td}"/{openssl,sqlite,packagesite}
20-
21-
pushd "${td}"
22-
23-
curl --retry 3 -sSfL "${pkg_source}/packagesite.txz" -O
24-
tar -C "${td}/packagesite" -xJf packagesite.txz
25-
local openssl_ver
26-
local sqlite_ver
27-
openssl_ver=$(jq -c '. | select ( .name == "openssl" ) | .version' "${td}/packagesite/packagesite.yaml")
28-
sqlite_ver=$(jq -c '. | select ( .name == "sqlite3" ) | .version' "${td}/packagesite/packagesite.yaml")
29-
openssl_ver=${openssl_ver//'"'/}
30-
sqlite_ver=${sqlite_ver//'"'/}
31-
32-
local target="${ARCH}-unknown-freebsd${BSD_MAJOR}"
33-
34-
# Adding openssl lib
35-
curl --retry 3 -sSfL "${pkg_source}/All/openssl-${openssl_ver}.txz" -O
36-
tar -C "${td}/openssl" -xJf "openssl-${openssl_ver}.txz" /usr/local/lib /usr/local/include/
37-
38-
# Adding sqlite3
39-
curl --retry 3 -sSfL "${pkg_source}/All/sqlite3-${sqlite_ver}.txz" -O
40-
tar -C "${td}/sqlite" -xJf "sqlite3-${sqlite_ver}.txz" /usr/local/lib
41-
42-
# Copy the linked library
43-
local destdir="/usr/local/${target}"
44-
cp -r "${td}/openssl/usr/local/include" "${destdir}"
45-
cp "${td}/openssl/usr/local/lib"/lib{crypto,ssl}.a "${destdir}/lib"
46-
cp "${td}/openssl/usr/local/lib"/lib{crypto,ssl}.so* "${destdir}/lib"
47-
cp "${td}/sqlite/usr/local/lib"/libsqlite3.so* "${destdir}/lib"
48-
49-
purge_packages
50-
51-
# clean up
52-
popd
14+
setup_packagesite
15+
install_freebsd_package openssl sqlite3
5316

54-
rm -rf "${td}"
5517
rm "${0}"
5618
}
5719

docker/freebsd-install.sh

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#!/usr/bin/env bash
2+
3+
set -x
4+
set -euo pipefail
5+
6+
# shellcheck disable=SC1091
7+
. freebsd-common.sh
8+
9+
export PACKAGESITE=/opt/freebsd-packagesite/packagesite.yaml
10+
export PKG_SOURCE="https://pkg.freebsd.org/FreeBSD:${BSD_MAJOR}:${BSD_ARCH}/quarterly"
11+
export TARGET="${ARCH}-unknown-freebsd${BSD_MAJOR}"
12+
13+
setup_packagesite() {
14+
apt-get update && apt-get install --assume-yes --no-install-recommends \
15+
curl \
16+
jq \
17+
xz-utils
18+
19+
mkdir /opt/freebsd-packagesite
20+
curl --retry 3 -sSfL "${PKG_SOURCE}/packagesite.txz" -O
21+
tar -C /opt/freebsd-packagesite -xJf packagesite.txz
22+
23+
rm packagesite.txz
24+
}
25+
26+
install_freebsd_package() {
27+
local name
28+
local path
29+
local pkg
30+
local td
31+
local destdir="/usr/local/${TARGET}"
32+
33+
td="$(mktemp -d)"
34+
pushd "${td}"
35+
36+
for name in "${@}"; do
37+
path=$(jq -c '. | select ( .name == "'"${name}"'" ) | .repopath' "${PACKAGESITE}")
38+
if [[ -z "${path}" ]]; then
39+
echo "Unable to find package ${name}" >&2
40+
exit 1
41+
fi
42+
path=${path//'"'/}
43+
pkg=$(basename "${path}")
44+
45+
mkdir "${td}"/package
46+
curl --retry 3 -sSfL "${PKG_SOURCE}/${path}" -O
47+
tar -C "${td}/package" -xJf "${pkg}"
48+
cp -r "${td}/package/usr/local"/* "${destdir}"/
49+
50+
rm "${td:?}/${pkg}"
51+
rm -rf "${td:?}/package"
52+
done
53+
54+
# clean up
55+
popd
56+
rm -rf "${td:?}"
57+
}

docker/freebsd.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
set -x
44
set -euo pipefail
55

6-
export ARCH="${1}"
76
# shellcheck disable=SC1091
87
. freebsd-common.sh
98
# shellcheck disable=SC1091

0 commit comments

Comments
 (0)