Blob Blame History Raw
# build order for fsleyes packages:
# 1. fsleyes-widgets
# 2. fslpy
# 3. fsleyes-props
# 4. fsleyes

%global desc \
FSLeyes, the FSL image viewer

# PyPi tar does not include tests
# Upstream says the tests, since they use xvfb etc., may not always pass on all
# platforms.
%bcond_with xvfb_tests

%global forgeurl https://github.com/pauldmccarthy/fsleyes

Name:           python-fsleyes
Version:        1.9.0
Release:        %autorelease
Summary:        FSLeyes, the FSL image viewer

%global tag %{version}
%forgemeta

License:        Apache-2.0
URL:            %forgeurl
Source0:        %forgesource

BuildArch:      noarch

# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch:    %{ix86}

%description
%{desc}

%package -n python3-fsleyes
Summary:        %{summary}
BuildRequires:  python3-devel
BuildRequires:  /usr/bin/desktop-file-install
BuildRequires:  /usr/bin/appstream-util
Requires:       hicolor-icon-theme
# from requirements-dev.txt

%if %{with xvfb_tests}
BuildRequires:  graphviz
BuildRequires:  %{py3_dist mock}
BuildRequires:  %{py3_dist pytest}
BuildRequires:  %{py3_dist pytest-cov}
BuildRequires:  %{py3_dist wxpython}
BuildRequires:  freeglut-devel
BuildRequires:  xorg-x11-server-Xvfb
BuildRequires:  python3-matplotlib-wx
%endif

Requires:       dcm2niix
Requires:       python3-matplotlib-wx

Provides:       fsleyes = %{version}-%{release}

%description -n python3-fsleyes
%{desc}

%prep
%forgesetup

# extras: not yet packaged in Fedora
sed -i -e '/"file-tree"/ d' \
    -e '/"file-tree-fsl"/ d' \
    -e '/"coverage"/ d' \
    -e '/"pytest-cov"/ d' \
    pyproject.toml

# remove unneeded shebangs
find . -name "*py" -exec sed -i '/#!\/usr\/bin\/env python/ d' '{}' \;

%generate_buildrequires
%pyproject_buildrequires -x extra -x test

%build
%pyproject_wheel


%install
%pyproject_install
%pyproject_save_files fsleyes

# install desktop file in correct location
desktop-file-install --dir=%{buildroot}%{_datadir}/applications fsleyes/assets/linux/uk.ac.ox.fmrib.FSLeyes.desktop
rm -f %{python3_sitelib}/fsleyes/assets/linux/uk.ac.ox.fmrib.FSLeyes.desktop

# install appdata file
install -p -m 0644 -D -t %{buildroot}%{_metainfodir} fsleyes/assets/linux/uk.ac.ox.fmrib.FSLeyes.appdata.xml
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*FSLeyes*xml

rm -f %{python3_sitelib}/fsleyes/assets/linux/uk.ac.ox.fmrib.FSLeyes.appdata.xml

# install icons to the right place
pushd fsleyes/assets/icons/app_icon/fsleyes.iconset/
for size in 16 32 128 256 512
do
install -p -m 0755 -D -T "icon_${size}x${size}.png" %{buildroot}%{_datadir}/icons/hicolor/"${size}x${size}"/apps/fsleyes.png
done
# do these manually
install -p -m 0755 -D -T icon_32x32@2x.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/fsleyes.png
install -p -m 0755 -D -T icon_512x512@2x.png %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps/fsleyes.png
popd
# 48x58 is in a different place than the others
install -p -m 0755 -D -t %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/ fsleyes/assets/linux/hicolor/48x48/apps/fsleyes.png


%check
export MPLBACKEND=wxagg
%if %{with xvfb_tests}
# https://github.com/pauldmccarthy/fsleyes/blob/master/.ci/test_template.sh
export FSLEYES_TEST_GL=2.1
xvfb-run -s "-screen 0 640x480x24" pytest-%{python3_version}
sleep 10
# test overlay types for GL14 as well
export FSLEYES_TEST_GL=1.4
xvfb-run -s "-screen 0 640x480x24" pytest-%{python3_version}
%endif

%files -n python3-fsleyes  -f %{pyproject_files}
%doc README.rst
%{_bindir}/fsleyes
%{_bindir}/render
%{_bindir}/fsleyes_unfiltered
%{_metainfodir}/uk.ac.ox.fmrib.FSLeyes.appdata.xml
%{_datadir}/icons/hicolor/*/apps/fsleyes.png
%{_datadir}/applications/uk.ac.ox.fmrib.FSLeyes.desktop

%changelog
%autochangelog