File celestia.spec of Package celestia

#
# spec file for package celestia
#
# copyright (c) 2024 munix9@googlemail.com
#

%define _sver   1_7
%define _gitv   %{nil}
%define _desc   Celestia is a free 3D astronomy program. Based on the Hipparcos\
Catalogue, it allows users to display objects ranging in scale from\
artificial satellites to entire galaxies in three dimensions using\
OpenGL. Unlike most planetarium software, the user is free to travel\
about the Universe.

%ifarch %{arm} %{arm64}
%bcond_without  gles
%else
%bcond_with     gles
%endif

Name:           celestia
Version:        1.7.0~git20241026+5604c2f4
Release:        0
Summary:        Real-time visual space simulation
License:        GPL-2.0-or-later AND MIT-0
URL:            https://celestiaproject.space/
Source0:        %{name}-%{version}.tar.xz
Source1:        baselibs.conf
Source2:        x-%{name}-script.xml
Source10:       https://data.iana.org/time-zones/data/leap-seconds.list
Source99:       %{name}.rpmlintrc
Patch0:         fix-appimage_dir.patch
Patch1:         fix-leap-seconds.patch
Patch2:         fix-spice-call-to-mktemp.patch
BuildRequires:  boost-devel
BuildRequires:  cmake
BuildRequires:  fdupes
BuildRequires:  gperf
BuildRequires:  ninja
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(eigen3)
BuildRequires:  pkgconfig(epoxy)
BuildRequires:  pkgconfig(fmt) >= 8
BuildRequires:  pkgconfig(freetype2)
BuildRequires:  pkgconfig(icu-uc)
BuildRequires:  pkgconfig(libavcodec)
BuildRequires:  pkgconfig(libavformat)
BuildRequires:  pkgconfig(libavif)
BuildRequires:  pkgconfig(libavutil)
BuildRequires:  pkgconfig(libjpeg)
BuildRequires:  pkgconfig(libpng)
BuildRequires:  pkgconfig(libswscale)
BuildRequires:  pkgconfig(luajit)
BuildRequires:  pkgconfig(zlib)
Requires:       %{name}-common = %{version}
Requires:       %{name}-data >= 1.7.0~
Requires:       %{name}-ui = %{version}
Recommends:     %{name}-qt5 = %{version}
Suggests:       %{name}-tools
%if %{with gles}
BuildRequires:  pkgconfig(glesv2)
%endif
%if 0%{?suse_version} < 1600
BuildRequires:  gcc10-PIE
BuildRequires:  gcc10-c++
%else
BuildRequires:  gcc-c++
%endif

%description
%{_desc}

%package -n lib%{name}%{_sver}
Summary:        Library for the Celestia space simulator
Suggests:       %{name} = %{version}

%description -n lib%{name}%{_sver}
%{_desc}

This package includes the libcelestia library, which is
necessary to run Celestia.

%package qt5
Summary:        Real-time visual space simulation (Qt 5 frontend)
BuildRequires:  libqt5-qtbase-private-headers-devel
BuildRequires:  pkgconfig(Qt5Core)
BuildRequires:  pkgconfig(Qt5Gui)
BuildRequires:  pkgconfig(Qt5OpenGL)
BuildRequires:  pkgconfig(Qt5Widgets)
BuildRequires:  pkgconfig(wayland-client)
BuildRequires:  pkgconfig(wayland-protocols)
BuildRequires:  pkgconfig(wayland-scanner)
Requires:       %{name} = %{version}
Provides:       %{name}-ui = %{version}
Provides:       %{name}-qt = %{version}
Obsoletes:      %{name}-qt < %{version}

%description qt5
%{_desc}

This package contains the Qt 5 frontend for Celestia.

%package qt6
Summary:        Real-time visual space simulation (Qt 6 frontend)
BuildRequires:  qt6-base-private-devel
BuildRequires:  cmake(Qt6OpenGLWidgets)
BuildRequires:  cmake(Qt6Widgets)
Requires:       %{name} = %{version}
Provides:       %{name}-ui = %{version}

%description qt6
%{_desc}

This package contains the Qt 6 frontend for Celestia.

%package gtk
Summary:        Real-time visual space simulation (GTK+ 3 frontend)
BuildRequires:  pkgconfig(cairo)
BuildRequires:  pkgconfig(egl)
BuildRequires:  pkgconfig(gtk+-3.0)
Requires:       %{name} = %{version}
Provides:       %{name}-ui = %{version}

%description gtk
%{_desc}

This package contains the GTK+ 3 frontend for Celestia.

%package sdl
Summary:        Real-time visual space simulation (SDL frontend)
BuildRequires:  pkgconfig(sdl2)
Requires:       %{name} = %{version}
Provides:       %{name}-ui = %{version}

%description sdl
%{_desc}

This package contains the SDL frontend for Celestia.

%package common
Summary:        Common files for Celestia, a real-time visual space simulation
BuildRequires:  dejavu-fonts
Requires:       %{name} = %{version}
Requires:       dejavu-fonts
Obsoletes:      %{name}-doc < %{version}
Provides:       %{name}-doc = %{version}
Obsoletes:      %{name}-lang < %{version}
Provides:       %{name}-lang = %{version}
BuildArch:      noarch

%description common
%{_desc}

This package contains the files common for all Celestia frontends.

%package tools
Summary:        Real-time visual space simulation
Suggests:       %{name} >= 1.7.0~
Suggests:       %{name}-tools-qt5
Suggests:       %{name}-tools-qt6

%description tools
%{_desc}

This package contains tools required to create data files for Celestia.

%package tools-qt5
Summary:        Real-time visual space simulation
Provides:       %{name}-tools-qt = %{version}
Obsoletes:      %{name}-tools-qt < %{version}
Suggests:       %{name} >= 1.7.0~
Suggests:       %{name}-tools

%description tools-qt5
%{_desc}

This package contains Qt 5 tools required to create data files for Celestia.

%package tools-qt6
Summary:        Real-time visual space simulation
Suggests:       %{name} >= 1.7.0~
Suggests:       %{name}-tools

%description tools-qt6
%{_desc}

This package contains Qt 6 tools required to create data files for Celestia.

%prep
%autosetup -p1

# fix wrong-file-end-of-line-encoding
sed -i 's/\r$//' src/tools/xindex/{buildxindices.pl,readme.txt}

# fix env-script-interpreter
sed -i '1s|^#!.*|#!%{_bindir}/python3|' src/tools/stardb/prunestars.py

%build
%define __builder ninja
export CFLAGS="%{optflags} -I$(pkg-config --variable=includedir wayland-client) -fno-strict-aliasing"
export CXXFLAGS="$CFLAGS"

# required by doctest
export LD_LIBRARY_PATH=$PWD/build/src/%{name}:$LD_LIBRARY_PATH

if [ -n "%{_gitv}" ] ; then
    _git_commit=$(echo "%{_gitv}" | head -c 9)
elif echo "%{version}" | grep -q '~git' ; then
    _git_commit=$(echo '%{version}' | cut -d'+' -f2)
#elif [ -f "%%{_sourcedir}/%%{name}.obsinfo" ] ; then
#    _git_commit=$(sed -n -e 's,^commit: \(.\{9\}\).*,\1,p' "%%{_sourcedir}/%%{name}.obsinfo")
else
    _git_commit=$(date -u -d@$SOURCE_DATE_EPOCH '+%%F')
fi

%cmake \
%if 0%{?suse_version} < 1600
	-DCMAKE_C_COMPILER=gcc-10	\
	-DCMAKE_CXX_COMPILER=g++-10	\
%endif
	-DCMAKE_SKIP_RPATH=ON	\
	-DCELCFG_EXTRAS_DIRS="\"~/.celestia\"" \
	-DENABLE_FFMPEG=ON	\
%if %{with gles}
	-DENABLE_GLES=ON	\
%endif
	-DENABLE_GTK=ON		\
	-DENABLE_LIBAVIF=ON	\
	-DENABLE_LTO=ON		\
	-DENABLE_MINIAUDIO=ON	\
	-DENABLE_QT5=ON		\
	-DENABLE_QT6=ON		\
	-DENABLE_SDL=ON		\
	-DENABLE_SPICE=ON	\
	-DENABLE_TESTS=ON	\
	-DENABLE_TOOLS=ON	\
	-DENABLE_WIN=OFF	\
	-DGIT_COMMIT="$_git_commit" \
	-DLUA_INCLUDE_DIR="$(pkg-config --variable=includedir luajit)" \
	-DSPICE_BUILD_SHARED_LIBRARY=OFF \
	-DUSE_GTK3=ON		\
	-DUSE_ICU=ON		\
	-DUSE_WAYLAND=ON

%cmake_build

%install
%cmake_install

# leap-seconds.list (use system default, if available)
install -D -m 0644 -t %{buildroot}%{_datadir}/%{name} %{SOURCE10}
if [ -f %{_datadir}/zoneinfo/leap-seconds.list ] ; then
    mv -v %{buildroot}%{_datadir}/%{name}/leap-seconds.{list,%{name}}
    ln -sfv %{_datadir}/zoneinfo/leap-seconds.list %{buildroot}%{_datadir}/%{name}/
fi

# move celestia.cfg to /etc/
install -D -m 0644 -t %{buildroot}%{_sysconfdir} %{buildroot}%{_datadir}/%{name}/%{name}.cfg
ln -sfv %{_sysconfdir}/%{name}.cfg %{buildroot}%{_datadir}/%{name}/

# use system fonts
ln -sfv %{_datadir}/fonts/truetype/DejaVuSans{,-Bold}.ttf %{buildroot}%{_datadir}/%{name}/fonts/

# mime
install -D -m 0644 -t %{buildroot}%{_datadir}/mime/packages %{SOURCE2}

# tools
install -m 0755 -t %{buildroot}%{_bindir} src/tools/stardb/prunestars.py \
	build/src/tools/spice2xyzv/spice2xyzv
install -D -m 0644 src/tools/cmod/readme.txt %{buildroot}%{_docdir}/%{name}-tools/cmod-readme.txt
install -m 0644 src/tools/stardb/readme.txt %{buildroot}%{_docdir}/%{name}-tools/stardb-readme.txt
install -m 0644 src/tools/xindex/readme.txt %{buildroot}%{_docdir}/%{name}-tools/xindex-readme.txt

# miniaudio
install -m 0644 thirdparty/miniaudio/LICENSE LICENSE.miniaudio

%find_lang %{name}

%fdupes -s %{buildroot}%{_datadir}/%{name}

%check
export LD_LIBRARY_PATH=%{buildroot}%{_libdir}:$LD_LIBRARY_PATH
%ctest --parallel 1 --timeout 60 --verbose

%ldconfig_scriptlets -n lib%{name}%{_sver}

%files
%license COPYING LICENSE.miniaudio
%doc AUTHORS README README.md TRANSLATORS
%dir %{_datadir}/%{name}

%files -n lib%{name}%{_sver}
%license COPYING
%{_libdir}/lib%{name}*

%files qt5
%{_bindir}/%{name}-qt5
%{_datadir}/applications/space.%{name}project.%{name}_qt5.desktop
%{_datadir}/metainfo/space.%{name}project.%{name}_qt5.metainfo.xml
%{_mandir}/man1/%{name}-qt5.1%{?ext_man}

%files qt6
%{_bindir}/%{name}-qt6
%{_datadir}/applications/space.%{name}project.%{name}_qt6.desktop
%{_datadir}/metainfo/space.%{name}project.%{name}_qt6.metainfo.xml
%{_mandir}/man1/%{name}-qt6.1%{?ext_man}

%files gtk
%{_bindir}/%{name}-gtk
%{_datadir}/%{name}/%{name}ui.xml
%{_datadir}/applications/space.%{name}project.%{name}_gtk.desktop
%{_datadir}/metainfo/space.%{name}project.%{name}_gtk.metainfo.xml
%{_mandir}/man1/%{name}-gtk.1%{?ext_man}

%files sdl
%{_bindir}/%{name}-sdl
%{_datadir}/applications/space.%{name}project.%{name}_sdl.desktop
%{_datadir}/metainfo/space.%{name}project.%{name}_sdl.metainfo.xml
%{_mandir}/man1/%{name}-sdl.1%{?ext_man}

%files common -f %{name}.lang
%{_datadir}/%{name}/%{name}.cfg
%{_datadir}/%{name}/%{name}-logo.png
%{_datadir}/%{name}/COPYING
%{_datadir}/%{name}/controls.txt
%{_datadir}/%{name}/demo.cel
%{_datadir}/%{name}/fonts
%{_datadir}/%{name}/guide.cel
%{_datadir}/%{name}/help
%{_datadir}/%{name}/images
%{_datadir}/%{name}/leap-seconds.*
%{_datadir}/%{name}/locale
%{_datadir}/%{name}/scripts
%{_datadir}/%{name}/shaders
%{_datadir}/%{name}/splash
%{_datadir}/%{name}/start.cel
%{_datadir}/mime/packages/x-%{name}-script.xml
%{_datadir}/pixmaps/%{name}.png
%config(noreplace) %{_sysconfdir}/%{name}.cfg

%files tools
%license COPYING
%doc %{_docdir}/%{name}-tools
%{_bindir}/3dstocmod
%{_bindir}/bin2xyzv
%{_bindir}/buildxindices.pl
%{_bindir}/charm2.pl
%{_bindir}/charm2simbatch.pl
%{_bindir}/cmodfix
%{_bindir}/cmodsphere
%{_bindir}/deepsky.pl
%{_bindir}/globulars.pl
%{_bindir}/makestardb
%{_bindir}/makexindex
%{_bindir}/prunestars.py
%{_bindir}/scattersim
%{_bindir}/scattertable
%{_bindir}/spectbins.pl
%{_bindir}/spice2xyzv
%{_bindir}/startextdump
%{_bindir}/txt2cmod
%{_bindir}/visualbins.pl
%{_bindir}/vsoptrunc-rect
%{_bindir}/vsoptrunc-sph
%{_bindir}/xyzv2bin
%{_bindir}/xyzv2bin.pl
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/naif0012.tls

%files tools-qt5
%license COPYING
%{_bindir}/cmodview-qt5

%files tools-qt6
%license COPYING
%{_bindir}/cmodview-qt6

%changelog
openSUSE Build Service is sponsored by