Skip to content

Commit 9485252

Browse files
gionnalxgomz
andauthored
OPSEXP-2542 Fix build of arm64 RPMs (#96)
Co-authored-by: Alex Chapellon <alxgomz@gmail.com>
1 parent bbea8c9 commit 9485252

8 files changed

+27
-39
lines changed

.github/workflows/build.yml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
2929
build_rpms:
3030
name: Build ${{ matrix.base_image }} ${{ matrix.target_arch }}
31-
runs-on: ubuntu-latest
31+
runs-on: ${{ matrix.target_arch == 'aarch64' && 'ubuntu-latest-arm64' || 'ubuntu-latest' }}
3232
needs:
3333
- configure
3434
strategy:
@@ -45,6 +45,10 @@ jobs:
4545
echo "imagemagick_version=$(cat ./imagemagick-version)" >> $GITHUB_OUTPUT
4646
echo "imagemagick_release=$(cat ./release-version)" >> $GITHUB_OUTPUT
4747
48+
- name: Setup Docker Engine
49+
if: matrix.target_arch == 'aarch64'
50+
uses: Alfresco/alfresco-build-tools/.github/actions/setup-docker@9558268b491821a4cfce1f11d4c8f6e56adc8496 # v5.30.0
51+
4852
- name: Prepare image
4953
run: docker build . -t buildenv --build-arg BASE_IMAGE=${{ matrix.base_image }}
5054
working-directory: rpms
@@ -66,7 +70,7 @@ jobs:
6670

6771
test_rpms:
6872
name: Test ${{ matrix.base_image }} ${{ matrix.target_arch }}
69-
runs-on: ubuntu-latest
73+
runs-on: ${{ matrix.target_arch == 'aarch64' && 'ubuntu-latest-arm64' || 'ubuntu-latest' }}
7074
needs:
7175
- configure
7276
- build_rpms
@@ -93,6 +97,10 @@ jobs:
9397
- name: List RPMs
9498
run: ls -R rpms/tests/*.rpm
9599

100+
- name: Setup Docker Engine
101+
if: matrix.target_arch == 'aarch64'
102+
uses: Alfresco/alfresco-build-tools/.github/actions/setup-docker@9558268b491821a4cfce1f11d4c8f6e56adc8496 # v5.30.0
103+
96104
- name: Prepare image
97105
run: docker build . -t testenv --build-arg BASE_IMAGE=${{ matrix.base_image }}
98106
working-directory: rpms/tests/
@@ -142,7 +150,7 @@ jobs:
142150
file: ImageMagick-${{ steps.variables.outputs.imagemagick_version }}.${{ matrix.target_arch }}.rpm
143151
classifier: ${{ matrix.nexus_classifier }}
144152
files: ImageMagick-libs-${{ steps.variables.outputs.imagemagick_version }}.${{ matrix.target_arch }}.rpm
145-
classifiers: ${{ matrix.nexus_classifier }}-libs
153+
classifiers: libs-${{ matrix.nexus_classifier }}
146154
types: rpm
147155
maven-username: ${{ secrets.NEXUS_USERNAME }}
148156
maven-password: ${{ secrets.NEXUS_PASSWORD }}

release-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9
1+
10

rpms/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ RUN if [ "$BASE_IMAGE" = "rockylinux:9" ]; then \
2020

2121
WORKDIR /build
2222
COPY after-checkout-* /build/
23+
COPY tests/entrypoint.sh /tests.sh
2324

2425
COPY entrypoint.sh /entrypoint.sh
2526
ENTRYPOINT ["/entrypoint.sh"]

rpms/after-checkout-rockylinux8-7.0.10-59.sh

Lines changed: 0 additions & 2 deletions
This file was deleted.

rpms/after-checkout-rockylinux8-7.1.0-16.sh

Lines changed: 0 additions & 2 deletions
This file was deleted.

rpms/after-checkout-rockylinux9-7.0.10-59.sh

Lines changed: 0 additions & 2 deletions
This file was deleted.

rpms/after-checkout-rockylinux9-7.1.0-16.sh

Lines changed: 0 additions & 5 deletions
This file was deleted.

rpms/entrypoint.sh

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,19 @@ TARGET_ARCH=$2
2222
echo "Preparing to build Imagemagick $IMAGEMAGICK_VERSION for $TARGET_ARCH..."
2323

2424
git clone --depth 1 -b "$IMAGEMAGICK_VERSION" https://github.com/ImageMagick/ImageMagick.git
25-
26-
# Generate updated .src.rpm
2725
cd ImageMagick
2826

2927
# Drop LQR support
3028
sed -i '/BuildRequires.*lqr/d; /--with-lqr/d' ImageMagick.spec.in
31-
sed -i '/%package lib/a AutoReq: no' ImageMagick.spec.in
29+
30+
# Drop Raqm support
31+
sed -i '/BuildRequires.*raqm/d; s/--with-raqm/--without-raqm/' ImageMagick.spec.in
32+
33+
# Drop ghostscript support
34+
sed -i '/BuildRequires.*ghostscript-devel/d; s/--with-gslib/--without-gslib/' ImageMagick.spec.in
35+
36+
# Drop LibRaw support which is not compatible with the current version of ImageMagick
37+
sed -i '/BuildRequires.*LibRaw/d; /--with-raw/d' ImageMagick.spec.in
3238

3339
AFTER_CHECKOUT_HOOK_SCRIPT="../after-checkout-${BASE_IMAGE//:/}-$IMAGEMAGICK_VERSION.sh"
3440
if [ -x "$AFTER_CHECKOUT_HOOK_SCRIPT" ]; then
@@ -45,27 +51,11 @@ yum-builddep -y "ImageMagick-$IMAGEMAGICK_VERSION.src.rpm"
4551
rpmbuild --rebuild --nocheck --target "$TARGET_ARCH" "ImageMagick-$IMAGEMAGICK_VERSION.src.rpm"
4652

4753
echo "Imagemagick $IMAGEMAGICK_VERSION for $TARGET_ARCH built successfully."
48-
ls -lR /root/rpmbuild/RPMS
49-
50-
if [ "$TARGET_ARCH" = "aarch64" ]; then
51-
echo "Tests for this architecture are not available yet"
52-
exit 0
53-
fi
54-
55-
echo "Testing package expected dependencies"
56-
rpm -qp --requires /root/rpmbuild/RPMS/${TARGET_ARCH}/ImageMagick-libs-$IMAGEMAGICK_VERSION.$TARGET_ARCH.rpm | grep -qEv 'libcdt|libcgraph|libgvc|libgs|libMagickCore|libMagickWand'
57-
58-
echo "Installing packages"
59-
yum install -y /root/rpmbuild/RPMS/${TARGET_ARCH}/ImageMagick-libs-$IMAGEMAGICK_VERSION.$TARGET_ARCH.rpm
60-
yum install -y /root/rpmbuild/RPMS/${TARGET_ARCH}/ImageMagick-$IMAGEMAGICK_VERSION.$TARGET_ARCH.rpm
61-
62-
echo "Testing convert command"
63-
convert -version
54+
ls -lR /root/rpmbuild/RPMS/
6455

65-
echo "Creating test image file"
66-
convert -size 32x32 xc:transparent test.png
56+
cd "/root/rpmbuild/RPMS/$TARGET_ARCH"
6757

68-
echo "Converting png to jpg"
69-
convert test.png test1.jpg
58+
echo "Testing package for unexpected dependencies"
59+
rpm -qp --requires ImageMagick-libs-$IMAGEMAGICK_VERSION.$TARGET_ARCH.rpm | grep -qEv 'libgs'
7060

71-
exit 0
61+
exec /tests.sh $IMAGEMAGICK_VERSION $TARGET_ARCH

0 commit comments

Comments
 (0)