RPM packaging scripts

This commit is contained in:
Nav
2023-01-18 00:38:18 +00:00
parent 7c696bf840
commit f3e97d0ab9
3 changed files with 149 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
%define _topdir @CMAKE_BINARY_DIR@/packaging/rpm/playground
%define _rpmfilename @BLOOM_PACKAGE_FILE_NAME@.rpm
%define __spec_install_post %{nil}
%define debug_package %{nil}
Name: @BLOOM_PACKAGE_NAME_LOWER@
Version: @CMAKE_PROJECT_VERSION@
Release: 1
Summary: @BLOOM_PACKAGE_DESCRIPTION@
License: LGPL-3.0
Url: @CMAKE_PROJECT_HOMEPAGE_URL@
Group: Development/Debuggers
SOURCE0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-root
ExclusiveArch: x86_64
AutoReqProv: OFF
Requires: glibc >= 2.18
Requires: fontconfig >= 2.11.94
Requires: freetype >= 2.6
Requires: libgcc >= 4.2
Requires: mesa-libGL
Requires: libstdc++ >= 11
# Requires: libudev1 >= 183
Requires: libX11
Requires: libX11-xcb
Requires: xcb-util-wm >= 0.4.1
Requires: xcb-util-image >= 0.4.0
Requires: xcb-util-keysyms >= 0.4.0
Requires: xcb-util-renderutil
Requires: libXext
Requires: libxkbcommon-x11 >= 1.3.1
Requires: libxkbcommon >= 1.3.1
Requires: libXrender
Requires: zlib >= 1.2.11
%description
@BLOOM_PACKAGE_DESCRIPTION@
%prep
%setup -q
%build
# Nothing to do here - Bloom has already been built - this spec file is used to generate a binary package (not
# a source package).
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}
cp -a ./* %{buildroot}
%files
%defattr(-,root,root,-)
%dir "/opt/bloom"
"/opt/bloom/*"
"/usr/bin/bloom"
"/usr/lib/udev/rules.d/99-bloom.rules"
%changelog

View File

@@ -0,0 +1,69 @@
#!/bin/bash
PLAYGROUND_DIR=@CMAKE_BINARY_DIR@/packaging/rpm/playground;
SPECS_DIR=${PLAYGROUND_DIR}/SPECS;
SOURCES_DIR=${PLAYGROUND_DIR}/SOURCES;
RELEASE_DIR_NAME=@BLOOM_PACKAGE_NAME_LOWER@-@CMAKE_PROJECT_VERSION@;
RELEASE_DIR=${PLAYGROUND_DIR}/${RELEASE_DIR_NAME};
BLOOM_INSTALLATION_PREFIX=/opt/bloom/
BLOOM_INSTALLATION_DIR=${RELEASE_DIR}/${BLOOM_INSTALLATION_PREFIX}
BLOOM_PACKAGE_PATH=@CMAKE_BINARY_DIR@/packaging/@BLOOM_PACKAGE_FILE_NAME@.rpm
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 ${SPECS_DIR};
mkdir -p ${SOURCES_DIR};
mkdir -p ${PLAYGROUND_DIR}/BUILD;
mkdir -p ${PLAYGROUND_DIR}/BUILDROOT;
mkdir -p ${PLAYGROUND_DIR}/RPMS;
mkdir -p ${PLAYGROUND_DIR}/SRPMS;
mkdir -p ${RELEASE_DIR};
mkdir -p ${BLOOM_INSTALLATION_DIR};
mkdir -p ${BLOOM_INSTALLATION_DIR}/bin;
mkdir -p ${RELEASE_DIR}/usr/lib/udev/rules.d/;
mkdir -p ${RELEASE_DIR}/usr/bin/;
echo "Copying RPM spec file...";
cp -a @CMAKE_BINARY_DIR@/packaging/rpm/bloom.spec ${SPECS_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 ${RELEASE_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 ${RELEASE_DIR}/usr/lib/udev/rules.d/99-bloom.rules;
echo "Creating symbolic link for Bloom binary..."
ln -s -f ${BLOOM_INSTALLATION_PREFIX}./bin/bloom ${RELEASE_DIR}/usr/bin/;
echo "Creating release tarball..."
tar -zcvf ${SOURCES_DIR}/@BLOOM_PACKAGE_NAME_LOWER@-@CMAKE_PROJECT_VERSION@.tar.gz -C ${PLAYGROUND_DIR} ./${RELEASE_DIR_NAME}
echo "Building RPM package...";
rpmbuild -bb ${SPECS_DIR}/bloom.spec;
mv -f ${PLAYGROUND_DIR}/RPMS/@BLOOM_PACKAGE_FILE_NAME@.rpm @CMAKE_BINARY_DIR@/packaging/;