File openms.spec of Package openms
#
# spec file for package openms
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
# Required python-autowrap not packaged
%bcond_with pyOpenMS
%bcond_with documentation
# GUI requires Qt build with Desktop OpenGL backend
%ifarch %{arm} aarch64
%bcond_with gui
%else
%bcond_without gui
%endif
Name: openms
Version: 2.8.0
Release: 0
License: BSD-3-Clause
Summary: LC/MS data management and analysis suite
Group: Productivity/Scientific/Chemistry
URL: https://www.openms.de/
Source0: https://github.com/OpenMS/OpenMS/archive/refs/tags/Release%{version}.tar.gz
# PATCH-FIX-UPSTREAM
Patch0: https://patch-diff.githubusercontent.com/raw/OpenMS/OpenMS/pull/5916.patch#/fix-isnan-undeclared.patch
# PATCH-FIX-UPSTREAM
Patch1: https://patch-diff.githubusercontent.com/raw/OpenMS/OpenMS/pull/6302.patch#/fix-libwm5core-linkage.patch
# PATCH-FIX-UPSTREAM
Patch2: https://github.com/OpenMS/OpenMS/pull/5838.patch#/fix-compile-warnings.patch
# PATCH-FIX-UPSTREAM
Patch3: 0001-Fix-install-path-for-evergreen-headers.patch
BuildRequires: chrpath
BuildRequires: cmake >= 3.9
BuildRequires: desktop-file-utils
BuildRequires: eigen3-devel >= 3.3.4
BuildRequires: gcc-c++
BuildRequires: glpk-devel
BuildRequires: hdf5-devel
BuildRequires: hicolor-icon-theme
BuildRequires: libbz2-devel
BuildRequires: libboost_date_time-devel
BuildRequires: libboost_headers-devel
BuildRequires: libboost_iostreams-devel
BuildRequires: libboost_math-devel
BuildRequires: libboost_regex-devel
BuildRequires: libsvm-devel >= 2.91
BuildRequires: wildmagic5-devel
BuildRequires: update-desktop-files
BuildRequires: zlib-devel
BuildRequires: pkgconfig(cbc)
BuildRequires: pkgconfig(cgl)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(xerces-c)
BuildRequires: cmake(Qt5Concurrent)
BuildRequires: cmake(Qt5Core)
BuildRequires: cmake(Qt5Network)
BuildRequires: cmake(Qt5Sql)
BuildRequires: cmake(Qt5Svg)
BuildRequires: cmake(Qt5Test)
# sqlite driver plugin required for test and at runtime
BuildRequires: libqt5-sql-sqlite
%if %{with gui}
BuildRequires: cmake(Qt5Gui)
BuildRequires: cmake(Qt5WebEngineWidgets)
BuildRequires: cmake(Qt5Widgets)
%endif
%if %{with pyOpenMS}
BuildRequires: python3-Cython
BuildRequires: python3-autowrap
BuildRequires: python3-numpy
BuildRequires: python3-pytest
BuildRequires: python3-wheel
%endif
%if %{with documentaton}
BuildRequires: doxygen
BuildRequires: graphviz
BuildRequires: texlive
BuildRequires: texlive-a4wide
BuildRequires: texlive-xtab
%endif
##Xvfb is needed to run a virtual X server used by some tests
BuildRequires: xvfb-run
Requires: %{name}-data = %{version}
Requires: hicolor-icon-theme
Requires: libqt5-sql-sqlite
%description
OpenMS is an open-source C++ library for LC/MS data management and analyses.
It offers an infrastructure for the rapid development
of mass spectrometry related software.
%package tools
Summary: OpenMS tools
Requires: %{name}-data = %{version}
%description tools
Besides TOPP, OpenMS offers a range of other tools.
They are not included in TOPP as they are not part of
typical analysis pipelines, but they still might be
very helpful to you.
The UTILS tools are divided into several subgroups:
- Maintenance
- Signal Processing and Preprocessing
- File handling
- Algorithm evaluation
- Peptide identification
- Quantitation
- Misc
- Metabolite identification
- Quality control
%package -n python-openms
Summary: OpenMS Python bindings
Requires: %{name}-data = %{version}
%description -n python-openms
This package contains Python bindings for a large part of the OpenMS library
for mass spectrometry based proteomics. It thus provides providing facile
access to a feature-rich, open-source algorithm library
for mass-spectrometry based proteomics analysis.
These Python bindings allow raw access to the data-structures and algorithms
implemented in OpenMS, specifically those for file access
(mzXML, mzML, TraML, mzIdentML among others), basic signal processing
(smoothing, filtering, de-isotoping and peak-picking) and complex data analysis
(including label-free, SILAC, iTRAQ and SWATH analysis tools).
%package devel
Summary: OpenMS header files
%description devel
OpenMS development files.
%package doc
Summary: OpenMS documentation
BuildArch: noarch
%description doc
HTML documentation and PDF tutorials of OpenMS.
%package tutorials
Summary: OpenMS tutorials
Requires: %{name}-data = %{version}
%description tutorials
OpenMS executable tutorials.
%package data
Summary: The OpenMS data files
BuildArch: noarch
%description data
The OpenMS data files.
%prep
%autosetup -n OpenMS-Release%{version} -p1
rm -rf cmake/MacOSX
%build
%cmake -Wno-dev \
-DBOOST_USE_STATIC=OFF \
-DENABLE_UPDATE_CHECK:BOOL=FALSE \
-DCMAKE_SKIP_RPATH:BOOL=FALSE \
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=TRUE \
-DMT_ENABLE_OPENMP=ON \
-DENABLE_GCC_WERROR:BOOL=OFF \
-DENABLE_TUTORIALS:BOOL=ON \
-DENABLE_UNITYBUILD:BOOL=OFF \
-DHAS_XSERVER:BOOL=ON \
-DINSTALL_BIN_DIR:PATH=bin \
-DINSTALL_CMAKE_DIR:PATH=%{_lib}/cmake/OpenMS \
-DINSTALL_DOC_DIR:PATH=share/doc/packages/OpenMS \
-DINSTALL_INCLUDE_DIR:PATH=include \
-DINSTALL_LIB_DIR:PATH=%{_lib} \
-DINSTALL_SHARE_DIR:PATH=share/OpenMS \
-DPACKAGE_TYPE:STRING=none \
-DWITH_GUI:BOOL=%{?with_gui:ON}%{!?with_gui:OFF} \
%if 0%{?with_pyOpenMS}
-DPYOPENMS=ON \
%else
-DPYOPENMS=OFF \
%endif
%{nil}
%cmake_build all
%if 0%{?with_pyOpenMS}
%cmake_build pyopenms
%endif
%cmake_build doc
%install
%cmake_install
%if 0%{?with_pyOpenMS}
## pyOpenMS installation
pushd pyOpenMS
python3 setup.py install --skip-build --root %{buildroot}
## Fix standard permissions
chmod 0755 %{buildroot}%{python_sitearch}/pyopenms/pyopenms.so
popd
%endif
%if %{with gui}
## Install icons
install -m 0644 -D -t %{buildroot}%{_datadir}/icons/hicolor/64x64/apps src/openms_gui/source/VISUAL/ICONS/TOPPAS.png
install -m 0644 -D -t %{buildroot}%{_datadir}/icons/hicolor/64x64/apps src/openms_gui/source/VISUAL/ICONS/TOPPView.png
install -m 0644 -D -t %{buildroot}%{_datadir}/icons/hicolor/64x64/apps src/openms_gui/source/VISUAL/ICONS/INIFileEditor.png
## Move files to correct location
mkdir -p %{buildroot}%{_datadir}/applications
mv %{buildroot}%{_datadir}/OpenMS/DESKTOP/*.desktop %{buildroot}%{_datadir}/applications
sed -i -e 's@Icon=.*@Icon=TOPPAS@' %{buildroot}%{_datadir}/applications/TOPPAS.desktop
sed -i -e 's@Icon=.*@Icon=TOPPView@' %{buildroot}%{_datadir}/applications/TOPPView.desktop
mkdir -p %{buildroot}%{_datadir}/metainfo/
mv %{buildroot}%{_datadir}/OpenMS/DESKTOP/TOPPView.appdata.xml %{buildroot}%{_datadir}/metainfo/
mv %{buildroot}%{_datadir}/OpenMS/DESKTOP/TOPPAS.appdata.xml %{buildroot}%{_datadir}/metainfo/
rm %{buildroot}%{_datadir}/OpenMS/DESKTOP/readme.txt
rmdir %{buildroot}%{_datadir}/OpenMS/DESKTOP
## Create inifileeditor .desktop file
%suse_update_desktop_file -c INIFileEditor INIFileEditor INIFileEditor INIFileEditor INIFileEditor
%else
rm -Rf %{buildroot}%{_datadir}/OpenMS/DESKTOP
%endif
##Install Tutorials executable
mkdir -p %{buildroot}%{_bindir}
cp -a %{__builddir}/bin/Tutorial_* %{buildroot}%{_bindir}
chrpath -d %{buildroot}%{_bindir}/Tutorial_*
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%check
## Make all test
export PATH=$PWD/%{__builddir}/bin:$PATH
export OPENMS_DATA_PATH=$PWD/share/OpenMS:$OPENMS_DATA_PATH
pushd %{__builddir}
## Run a Virtual X server waiting 3 seconds before
# TOPP_DatabaseSuitability_* depends on Comet (https://github.com/UWPR/Comet)
# Some tests known to fail, see https://github.com/OpenMS/OpenMS/issues/5541:
# - PrecursorIonSelectionPreprocessing_test
# - DetectabilitySimulation_test
# - MRMAssay_test
# - MRMFeatureSelector_test
# - TOPP_OpenPepXL_1_out_2
# - TOPP_OpenPepXLLF_1_out_2
# Numeric problems on ix86
%ifnarch %{ix86}
xvfb-run -a ctest --output-on-failure --force-new-ctest-process %{?_smp_mflags} \
--exclude-regex 'TOPP_DatabaseSuitability_.*|PrecursorIonSelectionPreprocessing_test|DetectabilitySimulation_test|MRMAssay_test|MRMFeatureSelector_test|TOPP_OpenPepXL.*_1_out_2'
popd
%endif
##pyOpenMS tests including mem leak
#%%if 0%{?with_pyOpenMS}
#cd pyOpenMS
## See https://github.com/OpenMS/OpenMS/issues/1389
#python ./run_memleaks.py
#python ./run_nose.py
#%%endif
%files
%doc CHANGELOG AUTHORS README.md
%license License.txt
%if %{with gui}
%{_bindir}/TOPPView
%{_bindir}/TOPPAS
%{_bindir}/INIFileEditor
%{_bindir}/Resampler
%{_bindir}/ExecutePipeline
%{_bindir}/SwathWizard
%{_datadir}/applications/TOPPAS.desktop
%{_datadir}/applications/TOPPView.desktop
%{_datadir}/applications/INIFileEditor.desktop
%dir %{_datadir}/metainfo/
%{_datadir}/metainfo/TOPPView.appdata.xml
%{_datadir}/metainfo/TOPPAS.appdata.xml
%{_datadir}/icons/hicolor/64x64/apps/*png
%endif
%{_bindir}/DTAExtractor
%{_bindir}/FileConverter
%{_bindir}/FileInfo
%{_bindir}/FileMerger
%{_bindir}/IDMerger
%{_bindir}/IDRipper
%{_bindir}/IDFileConverter
%{_bindir}/MapStatistics
%{_bindir}/SpectraMerger
%{_bindir}/TextExporter
%{_bindir}/MzTabExporter
%{_bindir}/BaselineFilter
%{_bindir}/InternalCalibration
%{_bindir}/MapNormalizer
%{_bindir}/MassTraceExtractor
%{_bindir}/NoiseFilterGaussian
%{_bindir}/NoiseFilterSGolay
%{_bindir}/PeakPickerHiRes
%{_bindir}/PeakPickerWavelet
%{_bindir}/PrecursorMassCorrector
%{_bindir}/HighResPrecursorMassCorrector
%{_bindir}/SpectraFilterBernNorm
%{_bindir}/SpectraFilterMarkerMower
%{_bindir}/SpectraFilterNLargest
%{_bindir}/SpectraFilterNormalizer
%{_bindir}/SpectraFilterParentPeakMower
%{_bindir}/SpectraFilterScaler
%{_bindir}/SpectraFilterSqrtMower
%{_bindir}/SpectraFilterThresholdMower
%{_bindir}/SpectraFilterWindowMower
%{_bindir}/TOFCalibration
%{_bindir}/Decharger
%{_bindir}/EICExtractor
%{_bindir}/FeatureFinderCentroided
%{_bindir}/FeatureFinderIsotopeWavelet
%{_bindir}/FeatureFinderMetabo
%{_bindir}/FeatureFinderMRM
%{_bindir}/IsobaricAnalyzer
%{_bindir}/ProteinQuantifier
%{_bindir}/ProteinResolver
%{_bindir}/SeedListGenerator
%{_bindir}/ConsensusMapNormalizer
%{_bindir}/MapAlignerIdentification
%{_bindir}/MapAlignerPoseClustering
%{_bindir}/MapAlignerSpectrum
%{_bindir}/MapRTTransformer
%{_bindir}/FeatureLinkerLabeled
%{_bindir}/FeatureLinkerUnlabeled
%{_bindir}/FeatureLinkerUnlabeledQT
%{_bindir}/CompNovo
%{_bindir}/CompNovoCID
%{_bindir}/MascotAdapter
%{_bindir}/MascotAdapterOnline
%{_bindir}/MyriMatchAdapter
%{_bindir}/OMSSAAdapter
%{_bindir}/PepNovoAdapter
%{_bindir}/XTandemAdapter
%{_bindir}/SpecLibSearcher
%{_bindir}/ConsensusID
%{_bindir}/FalseDiscoveryRate
%{_bindir}/IDConflictResolver
%{_bindir}/IDFilter
%{_bindir}/IDMapper
%{_bindir}/IDPosteriorErrorProbability
%{_bindir}/IDRTCalibration
%{_bindir}/IDScoreSwitcher
%{_bindir}/PeptideIndexer
%{_bindir}/ProteinInference
%{_bindir}/InclusionExclusionListCreator
%{_bindir}/PrecursorIonSelector
%{_bindir}/LuciphorAdapter
%{_bindir}/MetaProSIP
%{_bindir}/MRMMapper
%{_bindir}/MzMLSplitter
%{_bindir}/OpenSwathAssayGenerator
%{_bindir}/OpenSwathDecoyGenerator
%{_bindir}/OpenSwathChromatogramExtractor
%{_bindir}/OpenSwathAnalyzer
%{_bindir}/OpenSwathRTNormalizer
%{_bindir}/OpenSwathFeatureXMLToTSV
%{_bindir}/OpenSwathConfidenceScoring
%{_bindir}/PTModel
%{_bindir}/PTPredict
%{_bindir}/RTModel
%{_bindir}/RTPredict
%{_bindir}/GenericWrapper
%{_bindir}/FeatureFinderIdentification
%{_bindir}/FeatureFinderMultiplex
%{_bindir}/FidoAdapter
%{_bindir}/MRMTransitionGroupPicker
%{_bindir}/MSGFPlusAdapter
%{_bindir}/MetaboliteSpectralMatcher
%{_bindir}/OpenSwathWorkflow
%{_bindir}/PeakPickerIterative
%{_bindir}/SimpleSearchEngine
%{_bindir}/AssayGeneratorMetabo
%{_bindir}/ClusterMassTraces
%{_bindir}/ClusterMassTracesByPrecursor
%{_bindir}/CometAdapter
%{_bindir}/CruxAdapter
%{_bindir}/DatabaseFilter
%{_bindir}/DatabaseSuitability
%{_bindir}/Epifany
%{_bindir}/ExternalCalibration
%{_bindir}/FeatureFinderMetaboIdent
%{_bindir}/FeatureLinkerUnlabeledKD
%{_bindir}/GNPSExport
%{_bindir}/MSFraggerAdapter
%{_bindir}/MSstatsConverter
%{_bindir}/MaRaClusterAdapter
%{_bindir}/MapAlignerTreeGuided
%{_bindir}/MetaboliteAdductDecharger
%{_bindir}/MultiplexResolver
%{_bindir}/NovorAdapter
%{_bindir}/NucleicAcidSearchEngine
%{_bindir}/OpenMSDatabasesInfo
%{_bindir}/OpenPepXL
%{_bindir}/OpenPepXLLF
%{_bindir}/OpenSwathFileSplitter
%{_bindir}/PSMFeatureExtractor
%{_bindir}/PercolatorAdapter
%{_bindir}/ProteomicsLFQ
%{_bindir}/QualityControl
%{_bindir}/RNADigestor
%{_bindir}/RNAMassCalculator
%{_bindir}/RNPxlSearch
%{_bindir}/SiriusAdapter
%{_bindir}/SpectraSTSearchAdapter
%{_bindir}/StaticModification
%{_bindir}/TICCalculator
%{_bindir}/TargetedFileConverter
%{_bindir}/TriqlerConverter
%{_bindir}/XFDR
%{_libdir}/lib*.so
%files tools
%if %{with gui}
%{_bindir}/INIUpdater
%{_bindir}/ImageCreator
%endif
%{_bindir}/FileFilter
%{_bindir}/IDDecoyProbability
%{_bindir}/OpenMSInfo
%{_bindir}/PhosphoScoring
%{_bindir}/RNPxlXICFilter
%{_bindir}/FuzzyDiff
%{_bindir}/XMLValidator
%{_bindir}/SemanticValidator
%{_bindir}/CVInspector
%{_bindir}/IDSplitter
%{_bindir}/OpenSwathMzMLFileCacher
%{_bindir}/FFEval
%{_bindir}/LabeledEval
%{_bindir}/RTEvaluation
%{_bindir}/TransformationEvaluation
%{_bindir}/Digestor
%{_bindir}/DigestorMotif
%{_bindir}/DecoyDatabase
%{_bindir}/SequenceCoverageCalculator
%{_bindir}/IDExtractor
%{_bindir}/IDMassAccuracy
%{_bindir}/SpecLibCreator
%{_bindir}/ERPairFinder
%{_bindir}/MRMPairFinder
%{_bindir}/MassCalculator
%{_bindir}/MSSimulator
%{_bindir}/SvmTheoreticalSpectrumGeneratorTrainer
%{_bindir}/DeMeanderize
%{_bindir}/OpenSwathDIAPreScoring
%{_bindir}/OpenSwathRewriteToFeatureXML
%{_bindir}/AccurateMassSearch
%{_bindir}/QCCalculator
%{_bindir}/QCImporter
%{_bindir}/QCEmbedder
%{_bindir}/QCExporter
%{_bindir}/QCExtractor
%{_bindir}/QCMerger
%{_bindir}/QCShrinker
%files data
%{_datadir}/OpenMS/
%exclude %{_datadir}/OpenMS/examples
%files tutorials
%{_bindir}/Tutorial_*
%{_datadir}/OpenMS/examples
%files devel
%{_includedir}/OpenMS/
%dir %{_libdir}/cmake
%{_libdir}/cmake/OpenMS
%if %{with documentation}
%files doc
%{_datadir}/doc/OpenMS/
%endif
%if %{with pyOpenMS}
%files -n python-openms
%license src/pyOpenMS/License.txt
%{python_sitearch}/pyopenms/
%{python_sitearch}/pyopenms-*.egg-info/
%endif
%changelog