Skip to content

Commit 9133f73

Browse files
Change deps CMake install prefix to use only PREFIX (#193)
* Change CMake install prefix to use only PREFIX * Make DESTDIR visible for install processes * clean up other DESTDIR uses * Handle RHEL lib64 consistently * Exporting for subprocesses * install deps within rpm build stage * export already happens in setenv * allow base lib dir --------- Co-authored-by: Brian Sipos <brian.sipos@jhuapl.edu>
1 parent 6f9266f commit 9133f73

7 files changed

Lines changed: 48 additions & 43 deletions

File tree

.github/workflows/packages.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ jobs:
8989
run: |
9090
dnf config-manager --set-enabled crb
9191
dnf install -y epel-release
92-
- uses: actions/download-artifact@v4
92+
- uses: actions/download-artifact@v8
9393
with:
9494
name: bsl-rpm
9595
- name: Install

bsl.spec

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,16 @@ from the API with Doxygen.
5757
%prep
5858
%setup -q
5959

60-
./build.sh deps
60+
61+
%build
62+
# non-package dependencies into ./testroot
63+
DESTDIR=${PWD}/testroot ./build.sh deps
6164

6265
%cmake -DCMAKE_PREFIX_PATH=${PWD}/testroot/usr \
6366
-DPROJECT_VERSION=%{version} \
6467
-DBUILD_UNITTEST=YES -DTEST_MEMCHECK=NO -DBUILD_COVERAGE=NO \
65-
-DBUILD_DOCS_MAN=YES %{?with_apidoc:-DBUILD_DOCS_API=YES}
68+
-DBUILD_DOCS_MAN=YES -DBUILD_DOCS_API=%{?with_apidoc:YES}%{!?with_apidoc:NO}
6669

67-
68-
%build
6970
%cmake_build
7071
%cmake_build --target docs-man
7172
%if %{with apidoc}

build.sh

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@
2727
set -e
2828
set -o pipefail
2929

30-
source setenv.sh
3130
export SELFDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
31+
32+
source ${SELFDIR}/setenv.sh
3233
BUILDDIR=${SELFDIR}/build/default
3334

3435
function usage {
@@ -51,15 +52,15 @@ function usage {
5152
}
5253

5354
function cmd_check_format {
54-
./resources/check_format.sh
55+
exec ./resources/check_format.sh
5556
}
5657

5758
function cmd_apply_format {
58-
./resources/apply_format.sh
59+
exec ./resources/apply_format.sh
5960
}
6061

6162
function cmd_apply_license {
62-
./resources/apply_license.sh
63+
exec ./resources/apply_license.sh
6364
}
6465

6566
function cmd_check {
@@ -90,7 +91,7 @@ function cmd_coverage_summary {
9091
}
9192

9293
function cmd_deps {
93-
./resources/deps.sh
94+
exec ./resources/deps.sh
9495
}
9596

9697
function cmd_docs {
@@ -108,13 +109,20 @@ function cmd_lint {
108109

109110
function cmd_prep {
110111
shift
111-
./resources/prep.sh "$@"
112+
exec ./resources/prep.sh "$@"
112113
}
113114

114115
function cmd_rpm_build {
115116
if ! git describe 2>/dev/null >/dev/null
116117
then
117118
git config --global --add safe.directory ${PWD}
119+
for NAME in ${PWD}/deps/*
120+
do
121+
if [[ -d ${NAME} ]]
122+
then
123+
git config --global --add safe.directory ${NAME}
124+
fi
125+
done
118126
fi
119127
tito build -o build/default/pkg --test --srpm
120128
tito build -o build/default/pkg --test --rpm
@@ -157,17 +165,8 @@ function cmd_rpm_container {
157165
}
158166

159167
function cmd_run {
160-
# testroot installed files
161-
DESTDIR=${DESTDIR:-${SELFDIR}/testroot}
162-
PREFIX=${PREFIX:-/usr}
163-
164-
if [ -n "${DESTDIR}" -o -n "${PREFIX}" ]
165-
then
166-
export LD_LIBRARY_PATH=${DESTDIR}${PREFIX}/lib:${DESTDIR}${PREFIX}/lib64
167-
export PATH=${PATH}:${DESTDIR}${PREFIX}/bin
168-
fi
169-
170168
shift
169+
# Environment is already set by setenv.sh
171170
exec $@
172171
}
173172

pkg/rpmbuild.Containerfile

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
FROM quay.io/centos/centos:stream9
22

33
RUN dnf config-manager --set-enabled crb
4-
RUN --mount=type=cache,target=/var/cache/yum dnf install -y epel-release
5-
# Dependencies for library, test executables, bsl-mock-bpa, and apidoc HTML
6-
RUN --mount=type=cache,target=/var/cache/yum dnf install -y \
7-
rsync cmake git ninja-build gcc ruby \
8-
openssl-devel jansson-devel \
9-
doxygen graphviz plantuml texlive-bibtex \
10-
asciidoctor \
11-
rpm-build rpmlint
4+
RUN --mount=type=cache,target=/var/cache/yum \
5+
dnf install -y epel-release
6+
# Dependencies for general RPM building
7+
RUN --mount=type=cache,target=/var/cache/yum \
8+
dnf install -y git rsync tito rpm-build rpmlint
129

13-
RUN mkdir -p /usr/local/src/bsl
10+
COPY bsl.spec /usr/local/src/bsl/
1411
WORKDIR /usr/local/src/bsl
15-
CMD ["sh", "-c", "./build.sh rpm-prep && ./build.sh rpm-build && ./build.sh rpm-check"]
12+
RUN --mount=type=cache,target=/var/cache/yum \
13+
dnf builddep -y bsl.spec
14+
15+
# Container will mount to /usr/local/src/bsl
16+
CMD ["sh", "-c", "./build.sh rpm-build && ./build.sh rpm-check"]

resources/deps.sh

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@ then
3333
fi
3434
cd $SELFDIR
3535

36-
# SELFDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
37-
source ${SELFDIR}/setenv.sh
38-
3936
DEPSDIR=${DEPSDIR:-${SELFDIR}/deps}
4037
BUILDDIR=${BUILDDIR:-${SELFDIR}/deps/build}
4138
echo "Building in ${BUILDDIR}"
@@ -52,7 +49,7 @@ then
5249
cmake -S . -B ${BUILDDIR}/QCBOR \
5350
-DCMAKE_BUILD_TYPE=Debug \
5451
-DBUILD_SHARED_LIBS=ON \
55-
-DCMAKE_INSTALL_PREFIX=${DESTDIR}${PREFIX}
52+
-DCMAKE_INSTALL_PREFIX=${PREFIX}
5653
cmake --build ${BUILDDIR}/QCBOR
5754
cmake --install ${BUILDDIR}/QCBOR
5855
rm -rf ${BUILDDIR}/QCBOR
@@ -83,7 +80,7 @@ then
8380
cmake -S . -B ${BUILDDIR}/unity \
8481
-DCMAKE_BUILD_TYPE=Debug \
8582
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
86-
-DCMAKE_INSTALL_PREFIX=${DESTDIR}${PREFIX}
83+
-DCMAKE_INSTALL_PREFIX=${PREFIX}
8784
cmake --build ${BUILDDIR}/unity
8885
cmake --install ${BUILDDIR}/unity
8986
rm -rf ${BUILDDIR}/unity

resources/prep.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,11 @@ then
3131
echo "SELFDIR not defined"
3232
exit 1
3333
fi
34-
3534
cd $SELFDIR
36-
source ${SELFDIR}/setenv.sh
3735

3836
cmake -S . -B ${SELFDIR}/build/default \
3937
-DCMAKE_PREFIX_PATH=${DESTDIR}${PREFIX} \
40-
-DCMAKE_INSTALL_PREFIX=${DESTDIR}${PREFIX} \
38+
-DCMAKE_INSTALL_PREFIX=${PREFIX} \
4139
-DCMAKE_BUILD_TYPE=Debug \
4240
-G Ninja \
4341
"$@"

setenv.sh

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,20 @@
2121
##
2222

2323
SELFDIR=$(realpath $(dirname "${BASH_SOURCE[0]}"))
24-
DESTDIR=${DESTDIR:-${SELFDIR}/testroot}
25-
PREFIX=${PREFIX:-/usr}
2624

27-
if [ -n "${DESTDIR}" -o -n "${PREFIX}" ]
25+
export DESTDIR=${DESTDIR:-${SELFDIR}/testroot}
26+
export PREFIX=${PREFIX:-/usr}
27+
28+
if [[ -n "${DESTDIR}" || -n "${PREFIX}" ]]
2829
then
29-
export LD_LIBRARY_PATH=${DESTDIR}${PREFIX}/lib
30+
if which dpkg-architecture >/dev/null 2>/dev/null
31+
then
32+
# Debian or Ubuntu
33+
LD_LIBRARY_PATH=${DESTDIR}${PREFIX}/lib:${DESTDIR}${PREFIX}/lib/$(dpkg-architecture -q DEB_BUILD_MULTIARCH)
34+
else
35+
# Fedora or RHEL
36+
LD_LIBRARY_PATH=${DESTDIR}${PREFIX}/lib:${DESTDIR}${PREFIX}/lib64
37+
fi
38+
export LD_LIBRARY_PATH
3039
export PATH=${PATH}:${DESTDIR}${PREFIX}/bin
3140
fi

0 commit comments

Comments
 (0)