From d50d756b996e99db6579231a6847ed20b2f26ae9 Mon Sep 17 00:00:00 2001 From: Nav Date: Fri, 20 Jan 2023 18:40:02 +0000 Subject: [PATCH] Packaging scripts for Arch packages --- build/packaging/pkgbuild/PKGBUILD.in | 33 +++++++++++ .../packaging/pkgbuild/package-pkgbuild.sh.in | 57 +++++++++++++++++++ cmake/Packaging.cmake | 19 +++++++ resources/packaging/PKGBUILD.template.in | 15 ----- 4 files changed, 109 insertions(+), 15 deletions(-) create mode 100644 build/packaging/pkgbuild/PKGBUILD.in create mode 100644 build/packaging/pkgbuild/package-pkgbuild.sh.in delete mode 100644 resources/packaging/PKGBUILD.template.in diff --git a/build/packaging/pkgbuild/PKGBUILD.in b/build/packaging/pkgbuild/PKGBUILD.in new file mode 100644 index 00000000..41ebf92e --- /dev/null +++ b/build/packaging/pkgbuild/PKGBUILD.in @@ -0,0 +1,33 @@ +pkgname=@BLOOM_PACKAGE_NAME_LOWER@ +pkgver=@CMAKE_PROJECT_VERSION@ +pkgrel=1 +pkgdesc="@BLOOM_PACKAGE_DESCRIPTION@" +arch=('i686' 'x86_64') +url="@CMAKE_PROJECT_HOMEPAGE_URL@" +license=('LGPLv3') + +package(){ + depends=( + 'fontconfig>=2.11.94' + 'freetype2>=2.6' + 'gcc-libs>=5' + 'glibc>=2.18' + 'libgl' + 'libglvnd' + 'libpng12' + 'libx11' + 'libxcb' + 'libxext' + 'libxkbcommon>=0.5.0' + 'libxkbcommon-x11>=0.5.0' + 'libxrender' + 'xcb-util-image>=0.2.1' + 'xcb-util-keysyms>=0.4.0' + 'xcb-util-renderutil' + 'xcb-util-wm>=0.4.1' + 'zlib>=1.1.4' + ) + + mkdir -p "${pkgdir}/" + cp -R @CMAKE_BINARY_DIR@/packaging/pkgbuild/playground/build_root/* "${pkgdir}/" +} diff --git a/build/packaging/pkgbuild/package-pkgbuild.sh.in b/build/packaging/pkgbuild/package-pkgbuild.sh.in new file mode 100644 index 00000000..e8ea8542 --- /dev/null +++ b/build/packaging/pkgbuild/package-pkgbuild.sh.in @@ -0,0 +1,57 @@ +#!/bin/bash + +PLAYGROUND_DIR=@CMAKE_BINARY_DIR@/packaging/pkgbuild/playground; +BUILD_ROOT_DIR=${PLAYGROUND_DIR}/build_root +BLOOM_INSTALLATION_PREFIX=/opt/bloom/ +BLOOM_INSTALLATION_DIR=${BUILD_ROOT_DIR}/${BLOOM_INSTALLATION_PREFIX} +BLOOM_PACKAGE_PATH=@CMAKE_BINARY_DIR@/packaging/@BLOOM_PACKAGE_FILE_NAME@.pkg.tar.gz + +if [ ! -f @CMAKE_BINARY_DIR@/bin/bloom ]; then + echo "Build files not found. Did you forget to build?" + exit 1; +fi + +echo "Preparing playground directory..."; +rm -fr ${PLAYGROUND_DIR}; + +mkdir -p ${PLAYGROUND_DIR}; +mkdir -p ${BUILD_ROOT_DIR}; +mkdir -p ${BLOOM_INSTALLATION_DIR}; +mkdir -p ${BLOOM_INSTALLATION_DIR}/bin; + +mkdir -p ${BUILD_ROOT_DIR}/usr/lib/udev/rules.d/; +mkdir -p ${BUILD_ROOT_DIR}/usr/bin/; + +echo "Copying PKGBUILD control file..."; +cp -a @CMAKE_BINARY_DIR@/packaging/pkgbuild/PKGBUILD ${PLAYGROUND_DIR}/; + +echo "Copying Bloom binary..."; +cp -a @CMAKE_BINARY_DIR@/bin/bloom ${BLOOM_INSTALLATION_DIR}/bin/; + +echo "Copying resources..."; +cp -a @CMAKE_BINARY_DIR@/resources ${BLOOM_INSTALLATION_DIR}/; +cp -a @CMAKE_CURRENT_SOURCE_DIR@/build/distributed/fonts ${BLOOM_INSTALLATION_DIR}/resources/; + +echo "Copying distributed binaries..."; +cp -a @CMAKE_CURRENT_SOURCE_DIR@/build/distributed/bin/lib ${BLOOM_INSTALLATION_DIR}/; +cp -a @CMAKE_CURRENT_SOURCE_DIR@/build/distributed/bin/plugins ${BLOOM_INSTALLATION_DIR}/; + +echo "Copying udev rules..."; +cp -a @CMAKE_CURRENT_SOURCE_DIR@/build/distributed/udevrules/99-bloom.rules ${BUILD_ROOT_DIR}/usr/lib/udev/rules.d/; + +echo "Adjusting permissions..."; +chmod u=rwx,g=rx,o=rx -R ${BLOOM_INSTALLATION_DIR}/bin/; +chmod u=rwx,g=rx,o=rx -R ${BLOOM_INSTALLATION_DIR}/lib/; +chmod u=rwx,g=rx,o=rx -R ${BLOOM_INSTALLATION_DIR}/plugins/; + +chmod u=rwX,g=rX,o=rX -R ${BLOOM_INSTALLATION_DIR}/resources/; + +chmod u=rw,g=r,o=r ${BUILD_ROOT_DIR}/usr/lib/udev/rules.d/99-bloom.rules; + +echo "Creating symbolic link for Bloom binary..." +ln -s -f ${BLOOM_INSTALLATION_PREFIX}./bin/bloom ${BUILD_ROOT_DIR}/usr/bin/; + +echo "Building Arch package..."; +cd ${PLAYGROUND_DIR}; +makepkg; +mv ./@BLOOM_PACKAGE_NAME_LOWER@-@CMAKE_PROJECT_VERSION@-1-x86_64.pkg.tar.gz ${BLOOM_PACKAGE_PATH}; diff --git a/cmake/Packaging.cmake b/cmake/Packaging.cmake index ab859247..333e151c 100644 --- a/cmake/Packaging.cmake +++ b/cmake/Packaging.cmake @@ -43,3 +43,22 @@ configure_file( WORLD_READ @ONLY ) + +# Generate the PKGBUILD file and packaging script +file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/packaging/pkgbuild") + +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/build/packaging/pkgbuild/PKGBUILD.in" + "${CMAKE_BINARY_DIR}/packaging/pkgbuild/PKGBUILD" + @ONLY +) + +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/build/packaging/pkgbuild/package-pkgbuild.sh.in" + "${CMAKE_BINARY_DIR}/packaging/package-pkgbuild.sh" + FILE_PERMISSIONS + OWNER_EXECUTE OWNER_READ OWNER_WRITE + GROUP_READ + WORLD_READ + @ONLY +) diff --git a/resources/packaging/PKGBUILD.template.in b/resources/packaging/PKGBUILD.template.in deleted file mode 100644 index 3ffb1085..00000000 --- a/resources/packaging/PKGBUILD.template.in +++ /dev/null @@ -1,15 +0,0 @@ -pkgname=@CPACK_PACKAGE_NAME_LOWER@ -pkgver=@CMAKE_PROJECT_VERSION@ -pkgrel=1 -pkgdesc="@CPACK_PACKAGE_DESCRIPTION_SUMMARY@" -arch=('i686' 'x86_64') -url="@CMAKE_PROJECT_HOMEPAGE_URL@" -license=('LGPLv3') -install=bloom.install - -package(){ - depends=('fontconfig>=2.11.94' 'freetype2>=2.6' 'gcc-libs>=5' 'glibc>=2.18' 'libgl' 'libglvnd' 'libpng12' 'libx11' 'libxcb' 'libxext' 'libxkbcommon>=0.5.0' 'libxkbcommon-x11>=0.5.0' 'libxrender' 'xcb-util-image>=0.2.1' 'xcb-util-keysyms>=0.4.0' 'xcb-util-renderutil' 'xcb-util-wm>=0.4.1' 'zlib>=1.1.4') - - mkdir -p "${pkgdir}/@CPACK_PACKAGING_INSTALL_PREFIX@" - cp -R @CMAKE_INSTALL_PREFIX@* "${pkgdir}/@CPACK_PACKAGING_INSTALL_PREFIX@" -}