Skip to content

Commit

Permalink
Updated RPM packaging scripts
Browse files Browse the repository at this point in the history
- Use docker buildx to target different archtitectures
- Added cmdline.sh for command-line option handling
  • Loading branch information
chrisn committed Sep 26, 2023
1 parent 7372797 commit b62c715
Show file tree
Hide file tree
Showing 10 changed files with 84 additions and 64 deletions.
10 changes: 4 additions & 6 deletions rpm/Dockerfile-almalinux9
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@ FROM almalinux:9

# Use docker build --build-arg AUDIOWAVEFORM_VERSION=<git-revision> AUDIOWAVEFORM_PACKAGE_VERSION=<version>
ARG AUDIOWAVEFORM_VERSION
ENV AUDIOWAVEFORM_VERSION=${AUDIOWAVEFORM_VERSION}

ARG AUDIOWAVEFORM_PACKAGE_VERSION
ENV AUDIOWAVEFORM_PACKAGE_VERSION=${AUDIOWAVEFORM_PACKAGE_VERSION}
ARG ARCH

# Use the epel repository (to provide the libmad package)

Expand All @@ -22,16 +20,16 @@ RUN INSTALL_PKGS="rpm-build python3-distro wget git make cmake gcc-c++ libid3tag
RUN yum update -y

# Retrieve and build source (see https://github.com/bbc/audiowaveform#building-from-source)
WORKDIR /usr/local/src
WORKDIR /root

RUN wget -qO- https://github.com/bbc/audiowaveform/archive/${AUDIOWAVEFORM_VERSION}.tar.gz | tar xfz - && \
cd audiowaveform-cpack && \
cd audiowaveform-${AUDIOWAVEFORM_VERSION} && \
mkdir build && \
cd build && \
cmake -D ENABLE_TESTS=0 .. && \
make && \
cpack -G RPM

WORKDIR /usr/local/src/audiowaveform-cpack/build
WORKDIR /root/audiowaveform-${AUDIOWAVEFORM_VERSION}/build

RUN mv audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.x86_64.rpm audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.el9.x86_64.rpm
27 changes: 15 additions & 12 deletions rpm/Dockerfile-amazon-linux-2
Original file line number Diff line number Diff line change
@@ -1,36 +1,39 @@
# builder image to build the audiowaveform RPM
FROM amazonlinux:2
# Use docker build --build-arg AUDIOWAVEFORM_VERSION=<git-revision>
# --build-arg AUDIOWAVEFORM_PACKAGE_VERSION=<version>
# --build-arg AMAZON_RELEASE=<release>
# --build-arg ARCH=<x86_64|aarch64>

# Use docker build --build-arg AUDIOWAVEFORM_VERSION=<git-revision> AUDIOWAVEFORM_PACKAGE_VERSION=<version>
ARG AUDIOWAVEFORM_VERSION
ENV AUDIOWAVEFORM_VERSION=${AUDIOWAVEFORM_VERSION}
ARG AMAZON_RELEASE
FROM amazonlinux:${AMAZON_RELEASE}

ARG AUDIOWAVEFORM_VERSION
ARG AUDIOWAVEFORM_PACKAGE_VERSION
ENV AUDIOWAVEFORM_PACKAGE_VERSION=${AUDIOWAVEFORM_PACKAGE_VERSION}
ARG AMAZON_RELEASE
ARG ARCH

# Use the epel repository (to provide the libmad package)
RUN amazon-linux-extras install epel && \
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \
yum install -y redhat-lsb-core

# Install audiowaveform build dependencies
RUN INSTALL_PKGS="rpm-build wget git make cmake gcc-c++ libmad-devel libid3tag-devel libsndfile-devel gd-devel boost-devel libmad-devel" && \
RUN INSTALL_PKGS="rpm-build wget make cmake3 gcc-c++ libmad-devel libid3tag-devel libsndfile-devel gd-devel boost-devel" && \
yum install -y --setopt=tsflags=nodocs $INSTALL_PKGS && rpm -V $INSTALL_PKGS && \
yum clean all -y

RUN yum update -y

# Retrieve and build source (see https://github.com/bbc/audiowaveform#building-from-source)
WORKDIR /usr/local/src
WORKDIR /root

RUN wget -qO- https://github.com/bbc/audiowaveform/archive/${AUDIOWAVEFORM_VERSION}.tar.gz | tar xfz - && \
cd audiowaveform-${AUDIOWAVEFORM_VERSION} && \
mkdir build && \
cd build && \
cmake -D ENABLE_TESTS=0 .. && \
cmake3 -D ENABLE_TESTS=0 .. && \
make && \
cpack -G RPM
cpack3 -G RPM

WORKDIR /usr/local/src/audiowaveform-${AUDIOWAVEFORM_VERSION}/build
WORKDIR /root/audiowaveform-${AUDIOWAVEFORM_VERSION}/build

RUN mv audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.x86_64.rpm audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.amzn2.x86_64.rpm
RUN mv audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.${ARCH}.rpm audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.amzn${AMAZON_RELEASE}.${ARCH}.rpm
8 changes: 0 additions & 8 deletions rpm/Dockerfile-centos7
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,6 @@ RUN wget -qO- https://github.com/bbc/audiowaveform/archive/${AUDIOWAVEFORM_VERSI
make && \
cpack3 -G RPM

WORKDIR /root/audiowaveform-${AUDIOWAVEFORM_VERSION}

RUN mkdir build && \
cd build && \
cmake3 -D ENABLE_TESTS=0 .. && \
make && \
cpack3 -G RPM

WORKDIR /root/audiowaveform-${AUDIOWAVEFORM_VERSION}/build

RUN mv audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.${ARCH}.rpm audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.el${CENTOS_RELEASE}.${ARCH}.rpm
6 changes: 3 additions & 3 deletions rpm/Dockerfile-centos8
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# builder image to build the audiowaveform RPM
FROM centos:8

# Use docker build --build-arg AUDIOWAVEFORM_VERSION=<git-revision>
# --build-arg AUDIOWAVEFORM_PACKAGE_VERSION=<version>
# --build-arg CENTOS_RELEASE=<release>
# --build-arg ARCH=<x86_64|aarch64>

FROM centos:8

ARG AUDIOWAVEFORM_VERSION
ARG AUDIOWAVEFORM_PACKAGE_VERSION
ARG CENTOS_RELEASE
Expand Down
8 changes: 4 additions & 4 deletions rpm/build_deb_debian.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash
#
# Create compile_audiowaveform Docker image, copy results to this directory
# Create Docker image, copy results to this directory
# and remove the image afterwards

set -e
Expand All @@ -9,7 +9,7 @@ source ./cmdline.sh

if [ -z "${DEBIAN_RELEASE}" ]
then
echo "Missing debian release number (e.g., 8, 9, or 10)"
echo "Missing debian release number (e.g., 10, 11, or 12)"
exit 1
fi

Expand All @@ -19,10 +19,10 @@ then
exit 1
fi

set -x

IMAGE=audiowaveform_deb

set -x

docker buildx build \
--progress plain \
--platform linux/${ARCH} \
Expand Down
13 changes: 7 additions & 6 deletions rpm/build_rpm_almalinux9.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash -x
#!/bin/bash
#
# Create compile_audiowaveform Docker image, copy results to this directory
# Create Docker image, copy results to this directory
# and remove the image afterwards

set -e
Expand All @@ -12,14 +12,15 @@ ARCH=x86_64

set -x

docker build \
docker buildx build \
--progress plain \
--platform linux/${ARCH} \
--tag ${IMAGE} \
--file Dockerfile-almalinux9 \
--build-arg AUDIOWAVEFORM_VERSION=${AUDIOWAVEFORM_VERSION} \
--build-arg AUDIOWAVEFORM_PACKAGE_VERSION=${AUDIOWAVEFORM_PACKAGE_VERSION}
--build-arg AUDIOWAVEFORM_PACKAGE_VERSION=${AUDIOWAVEFORM_PACKAGE_VERSION} \
--build-arg ARCH=${ARCH} .
CONTAINER_ID=`docker create $IMAGE`
docker cp ${CONTAINER_ID}:/usr/local/src/audiowaveform-${AUDIOWAVEFORM_VERSION}/build/audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.el9.${ARCH}.rpm .
CONTAINER_ID=`docker create ${IMAGE}`
docker cp ${CONTAINER_ID}:/root/audiowaveform-${AUDIOWAVEFORM_VERSION}/build/audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.el9.${ARCH}.rpm .
docker rm -v ${CONTAINER_ID}
docker rmi ${IMAGE}
31 changes: 22 additions & 9 deletions rpm/build_rpm_amazon_linux_2.sh
Original file line number Diff line number Diff line change
@@ -1,15 +1,28 @@
#!/bin/sh -x
#!/bin/bash
#
# Create compile_audiowaveform Docker image, copy results to this directory
# Create Docker image, copy results to this directory
# and remove the image afterwards

set -e

AUDIOWAVEFORM_VERSION=1.8.1
AUDIOWAVEFORM_PACKAGE_VERSION=1.8.1
source ./cmdline.sh

IMAGE=audiowaveform_rpm
docker build -t $IMAGE -f Dockerfile-amazon-linux-2 --build-arg AUDIOWAVEFORM_VERSION=${AUDIOWAVEFORM_VERSION} --build-arg AUDIOWAVEFORM_PACKAGE_VERSION=${AUDIOWAVEFORM_PACKAGE_VERSION} .
CONTAINER_ID=`docker create $IMAGE`
docker cp $CONTAINER_ID:/usr/local/src/audiowaveform-${AUDIOWAVEFORM_VERSION}/build/audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.amzn2.x86_64.rpm .
docker rm -v $CONTAINER_ID
docker rmi $IMAGE
AMAZON_RELEASE=2
ARCH=x86_64

set -x

docker buildx build \
--progress plain \
--platform linux/${ARCH} \
--tag ${IMAGE} \
--file Dockerfile-amazon-linux-${AMAZON_RELEASE} \
--build-arg AUDIOWAVEFORM_VERSION=${AUDIOWAVEFORM_VERSION} \
--build-arg AUDIOWAVEFORM_PACKAGE_VERSION=${AUDIOWAVEFORM_PACKAGE_VERSION} \
--build-arg AMAZON_RELEASE=${AMAZON_RELEASE} \
--build-arg ARCH=${ARCH} .
CONTAINER_ID=`docker create ${IMAGE}`
docker cp ${CONTAINER_ID}:/root/audiowaveform-${AUDIOWAVEFORM_VERSION}/build/audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.amzn${AMAZON_RELEASE}.${ARCH}.rpm .
docker rm -v ${CONTAINER_ID}
docker rmi ${IMAGE}
28 changes: 18 additions & 10 deletions rpm/build_rpm_centos7.sh
Original file line number Diff line number Diff line change
@@ -1,25 +1,33 @@
#!/bin/sh -x
#!/bin/bash
#
# Create compile_audiowaveform Docker image, copy results to this directory
# Create Docker image, copy results to this directory
# and remove the image afterwards

set -e

AUDIOWAVEFORM_VERSION=6bec021446bcc8f9da981158130fb200d9fc040a
AUDIOWAVEFORM_PACKAGE_VERSION=1.8.1
source ./cmdline.sh

if [ -z "${ARCH}" ]
then
echo "Missing architecture (x86_64 or aarch64)"
exit 1
fi

IMAGE=audiowaveform_rpm
CENTOS_RELEASE=7
ARCH=aarch64

docker build \
set -x

docker buildx build \
--progress plain \
--platform linux/${ARCH} \
--tag ${IMAGE} \
--file Dockerfile-centos${CENTOS_RELEASE} \
--build-arg AUDIOWAVEFORM_VERSION=${AUDIOWAVEFORM_VERSION} \
--build-arg AUDIOWAVEFORM_PACKAGE_VERSION=${AUDIOWAVEFORM_PACKAGE_VERSION} \
--build-arg CENTOS_RELEASE=${CENTOS_RELEASE} \
--build-arg ARCH=${ARCH} .
CONTAINER_ID=`docker create $IMAGE`
docker cp $CONTAINER_ID:/root/audiowaveform-${AUDIOWAVEFORM_VERSION}/build/audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.el7.${ARCH}.rpm .
docker rm -v $CONTAINER_ID
docker rmi $IMAGE
CONTAINER_ID=`docker create ${IMAGE}`
docker cp ${CONTAINER_ID}:/root/audiowaveform-${AUDIOWAVEFORM_VERSION}/build/audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.el7.${ARCH}.rpm .
docker rm -v ${CONTAINER_ID}
docker rmi ${IMAGE}
15 changes: 10 additions & 5 deletions rpm/build_rpm_centos8.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash -x
#!/bin/bash
#
# Create compile_audiowaveform Docker image, copy results to this directory
# Create Docker image, copy results to this directory
# and remove the image afterwards

set -e
Expand All @@ -9,11 +9,16 @@ source ./cmdline.sh

IMAGE=audiowaveform_rpm
CENTOS_RELEASE=8
ARCH=aarch64

if [ -z "${ARCH}" ]
then
echo "Missing architecture (x86_64 or aarch64)"
exit 1
fi

set -x

docker build \
docker buildx build \
--progress plain \
--platform linux/${ARCH} \
--tag ${IMAGE} \
Expand All @@ -22,7 +27,7 @@ docker build \
--build-arg AUDIOWAVEFORM_PACKAGE_VERSION=${AUDIOWAVEFORM_PACKAGE_VERSION} \
--build-arg CENTOS_RELEASE=${CENTOS_RELEASE} \
--build-arg ARCH=${ARCH} .
CONTAINER_ID=`docker create $IMAGE`
CONTAINER_ID=`docker create ${IMAGE}`
docker cp ${CONTAINER_ID}:/root/audiowaveform-${AUDIOWAVEFORM_VERSION}/build/audiowaveform-${AUDIOWAVEFORM_PACKAGE_VERSION}-1.el${CENTOS_RELEASE}.${ARCH}.rpm .
docker rm -v ${CONTAINER_ID}
docker rmi ${IMAGE}
2 changes: 1 addition & 1 deletion rpm/cmdline.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ show_help() {
echo " -v --version audiowaveform package version (e.g., 1.8.1)"
echo " -c --commit audiowaveform commit hash or tag name (e.g., 1.8.1)"
echo " -d --debian Debian release number (e.g., 8, 9, or 10)"
echo " -a --arch Architecture (e.g., amd64, x86_64, arm64)"
echo " -a --arch Architecture (e.g., amd64, x86_64, arm64, aarch64)"
}

while [[ $# -gt 0 ]]; do
Expand Down

0 comments on commit b62c715

Please sign in to comment.