Browse Source

package/rpm: add a RPM package together with a build script.

Co-authored-by: 1b00 <1b00@pm.me>
Co-authored-by: Vladimír Vondruš <mosra@centrum.cz>
pull/419/merge
Igal Alkon 2 years ago committed by Vladimír Vondruš
parent
commit
d3b83f090c
  1. 26
      doc/building.dox
  2. 28
      package/rpm/build.sh
  3. 104
      package/rpm/magnum.spec

26
doc/building.dox

@ -72,6 +72,7 @@ control and @ref building-cross for cross-compiling to other platforms.
- @ref building-packages-msys
- @ref building-packages-deb
- @ref building-packages-gentoo
- @ref building-packages-rpm
- @ref building-packages-brew
The engine itself is kept as small as possible with only minimal dependencies.
@ -303,6 +304,31 @@ There are also Gentoo packages for @ref building-plugins-packages-gentoo "Magnum
@ref building-extras-packages-gentoo "Magnum Extras" and
@ref building-examples-packages-gentoo "Magnum Examples".
@subsection building-packages-rpm Packages for Fedora, openSUSE and other RPM-based Linux distributions
Spec files for RPM-based distributions are in the `package/rpm/` directory. In
addition you will need to install the following dependencies in order to build
the packages (assuming Fedora Linux):
@code{.sh}
sudo dnf install fedora-packager rpmdevtools
@endcode
After that, run the `build.sh` script. Internally it queries the Git version,
makes a tarball, may ask you to install appropriate dependencies if not present
already, and then builds the package.
@code{.sh}
./package/rpm/build.sh
@endcode
At the end, if everything succeeds, you'll have the newly built packages
located in `~/rpmbuild/RPMS`. The script will print their names at the end.
If you want to pass additional flags to CMake or
@ref building-features "enable / disable additional features", edit the
`*.spec` file.
@subsection building-packages-brew Homebrew formulas for macOS
macOS [Homebrew](https://brew.sh) formulas building the latest Git revision are

28
package/rpm/build.sh

@ -0,0 +1,28 @@
#!/bin/sh
set -e
# Get version slug
version_hash=$(git describe --match "v*" | sed 's/^v//' | sed 's/-/./g')
echo "** repository hash: ${version_hash} ..."
# Create dir tree for rpmbuild in user dir
rpmdev-setuptree
# Archive repository
(cd ../.. && git archive --format=tar.gz --prefix=magnum-${version_hash}/ -o ~/rpmbuild/SOURCES/magnum-${version_hash}.tar.gz HEAD)
echo "** created archive: ~/rpmbuild/SOURCES/magnum-${version_hash}.tar.gz"
sleep 2
# Replace spec version
sed -i "s/Version:.\+/Version: ${version_hash}/g" magnum.spec
echo "** building package version: ${version_hash}"
# Check dependencies
sudo dnf builddep -y magnum.spec
# Build package
rpmbuild --define "debug_package %{nil}" --clean -ba magnum.spec
echo "** packages for magnum-${version_hash} complete:"
ls ~/rpmbuild/RPMS/$(uname -m)/magnum-${version_hash}*.rpm | cat

104
package/rpm/magnum.spec

@ -0,0 +1,104 @@
Name: magnum
URL: http://magnum.graphics
Version: 2020.06.2972.g8b832382a
Release: 1
Summary: C++11/C++14 graphics middleware for games and data visualization
License: MIT
Source: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
Requires: corrade, openal-soft, mesa-libGL, mesa-libEGL, SDL2, glfw, vulkan-loader, glslang
BuildRequires: cmake, git, gcc-c++, openal-soft-devel, mesa-libGL-devel, mesa-libEGL-devel, SDL2-devel, glfw-devel, vulkan-loader-devel
# Fedora 35 also seems to need the mesa-vulkan-devel package
%description
Looking for an open-source library that gives you graphics abstraction
and platform independence on major desktop, mobile and web platforms?
Do you want it to have all the convenience utilities around yet stay small,
powerful and not give up on flexibility?
%package devel
Summary: Magnum development files
Requires: %{name} = %{version}
%description devel
Headers and tools needed for developing with Magnum engine.
%prep
%setup -c -n %{name}-%{version}
%build
mkdir build && cd build
# Configure CMake
cmake ../%{name}-%{version} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DMAGNUM_WITH_AUDIO=ON \
-DMAGNUM_WITH_VK=ON \
-DMAGNUM_WITH_GLFWAPPLICATION=ON \
-DMAGNUM_WITH_GLXAPPLICATION=ON \
-DMAGNUM_WITH_SDL2APPLICATION=ON \
-DMAGNUM_WITH_XEGLAPPLICATION=ON \
-DMAGNUM_WITH_WINDOWLESSEGLAPPLICATION=ON \
-DMAGNUM_WITH_WINDOWLESSGLXAPPLICATION=ON \
-DMAGNUM_WITH_EGLCONTEXT=ON \
-DMAGNUM_WITH_GLXCONTEXT=ON \
-DMAGNUM_WITH_OPENGLTESTER=ON \
-DMAGNUM_WITH_ANYAUDIOIMPORTER=ON \
-DMAGNUM_WITH_ANYIMAGECONVERTER=ON \
-DMAGNUM_WITH_ANYIMAGEIMPORTER=ON \
-DMAGNUM_WITH_ANYSCENECONVERTER=ON \
-DMAGNUM_WITH_ANYSCENEIMPORTER=ON \
-DMAGNUM_WITH_ANYSHADERCONVERTER=ON \
-DMAGNUM_WITH_MAGNUMFONT=ON \
-DMAGNUM_WITH_MAGNUMFONTCONVERTER=ON \
-DMAGNUM_WITH_OBJIMPORTER=ON \
-DMAGNUM_WITH_TGAIMAGECONVERTER=ON \
-DMAGNUM_WITH_TGAIMPORTER=ON \
-DMAGNUM_WITH_WAVAUDIOIMPORTER=ON \
-DMAGNUM_WITH_DISTANCEFIELDCONVERTER=ON \
-DMAGNUM_WITH_FONTCONVERTER=ON \
-DMAGNUM_WITH_IMAGECONVERTER=ON \
-DMAGNUM_WITH_SCENECONVERTER=ON \
-DMAGNUM_WITH_SHADERCONVERTER=ON \
-DMAGNUM_WITH_GL_INFO=ON \
-DMAGNUM_WITH_VK_INFO=ON \
-DMAGNUM_WITH_AL_INFO=ON
make %{?_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
cd build
make DESTDIR=$RPM_BUILD_ROOT install
strip $RPM_BUILD_ROOT/%{_libdir}/*.so*
strip $RPM_BUILD_ROOT/%{_libdir}/magnum/*/*.so*
strip $RPM_BUILD_ROOT/%{_bindir}/*
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%{_bindir}/*
%{_libdir}/*.a
%{_libdir}/*.so*
%{_libdir}/magnum/*/*.so*
%{_libdir}/magnum/*/*.conf
%doc %{name}-%{version}/COPYING
%files devel
%defattr(-,root,root,-)
%{_includedir}/Magnum
%{_includedir}/MagnumExternal
%{_includedir}/MagnumPlugins
%{_datadir}/cmake/Magnum
%{_datadir}/gdb/python/magnum/
%changelog
* Initial release.
Loading…
Cancel
Save