RPM packaging scripts
This commit is contained in:
61
build/packaging/rpm/bloom.spec.in
Executable file
61
build/packaging/rpm/bloom.spec.in
Executable 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
|
||||
69
build/packaging/rpm/package-rpm.sh.in
Normal file
69
build/packaging/rpm/package-rpm.sh.in
Normal 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/;
|
||||
@@ -24,3 +24,22 @@ configure_file(
|
||||
WORLD_READ
|
||||
@ONLY
|
||||
)
|
||||
|
||||
# Generate the RPM spec file and packaging script
|
||||
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/packaging/rpm")
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/build/packaging/rpm/bloom.spec.in"
|
||||
"${CMAKE_BINARY_DIR}/packaging/rpm/bloom.spec"
|
||||
@ONLY
|
||||
)
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/build/packaging/rpm/package-rpm.sh.in"
|
||||
"${CMAKE_BINARY_DIR}/packaging/package-rpm.sh"
|
||||
FILE_PERMISSIONS
|
||||
OWNER_EXECUTE OWNER_READ OWNER_WRITE
|
||||
GROUP_READ
|
||||
WORLD_READ
|
||||
@ONLY
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user