From 01f0bdb007f26a85cc93dced6a765939978bfa71 Mon Sep 17 00:00:00 2001 From: Igal Alkon Date: Sun, 6 Oct 2024 20:37:01 +0300 Subject: [PATCH] adding rpm spec and build script. --- package/rpm/README.md | 6 +++ package/rpm/build.sh | 24 +++++++++ package/rpm/magnum.spec | 109 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+) create mode 100644 package/rpm/README.md create mode 100755 package/rpm/build.sh create mode 100644 package/rpm/magnum.spec diff --git a/package/rpm/README.md b/package/rpm/README.md new file mode 100644 index 000000000..693f62e16 --- /dev/null +++ b/package/rpm/README.md @@ -0,0 +1,6 @@ +# Magnum RPM Package + +You will need to install the following dependencies for build rpms (Fedora Linux): +``` +sudo dnf install fedora-packager rpmdevtools gcc +``` diff --git a/package/rpm/build.sh b/package/rpm/build.sh new file mode 100755 index 000000000..0755604f4 --- /dev/null +++ b/package/rpm/build.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# 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 reository +(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 +spec_file="magnum.spec" +sed -i "s/Version:.\+/Version: ${version_hash}/g" ${spec_file} +echo "** building package version: ${version_hash}" + +# check dependencies +sudo dnf builddep -y ${spec_file} + +# build package +rpmbuild --define "debug_package %{nil}" --clean -ba ${spec_file} diff --git a/package/rpm/magnum.spec b/package/rpm/magnum.spec new file mode 100644 index 000000000..156992644 --- /dev/null +++ b/package/rpm/magnum.spec @@ -0,0 +1,109 @@ +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, glslang-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=Debug \ + -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_WINDOWLESSGLXAPPLICATION=ON \ + -DMAGNUM_WITH_WINDOWLESSEGLAPPLICATION=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 \ + -DMAGNUM_BUILD_TESTS=OFF \ + -DMAGNUM_BUILD_GL_TESTS=OFF \ + -DMAGNUM_BUILD_AL_TESTS=OFF \ + -DMAGNUM_BUILD_VK_TESTS=OFF + +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-d/*/*.so* +strip $RPM_BUILD_ROOT/%{_bindir}/* + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root,-) +%{_libdir}/*.a +%{_libdir}/*.so* +%{_libdir}/magnum-d/*/*.so* +%{_libdir}/magnum-d/*/*.conf + +%doc %{name}-%{version}/COPYING + +%files devel +%defattr(-,root,root,-) + +%{_bindir}/* +%{_includedir}/Magnum +%{_includedir}/MagnumExternal +%{_includedir}/MagnumPlugins +%{_datadir}/cmake/Magnum +%{_datadir}/gdb + +%changelog +* Initial release.