Sophie

Sophie

distrib > Mageia > 6 > armv7hl > media > core-updates-src > by-pkgid > b0b6df4e4a25cdbaa3b944ea8a55d2ce > files > 9

freecad-0.16.6712-1.1.mga6.src.rpm

# Maintainers:  keep this list of plugins up to date
# List plugins in %%{_libdir}/freecad/lib, less '.so' and 'Gui.so', here
%global plugins Complete Drawing Fem FreeCAD Image Import Inspection Mesh MeshPart Part Points QtUnit Raytracing ReverseEngineering Robot Sketcher Start Web PartDesignGui _PartDesign Spreadsheet SpreadsheetGui DraftUtils Path PathGui area

# Some plugins go in the Mod folder instead of lib. Deal with those here:
%global mod_plugins Mod/PartDesign

%define srcname FreeCAD

Name:           freecad
Version:        0.16.6712
%define subrel  1
Release:        %mkrel 1
Summary:        A general purpose 3D CAD modeler
Group:          Graphics/3D

License:        GPLv2+
URL:            http://www.freecadweb.org/
Source0:        https://github.com/%{srcname}/%{srcname}/archive/%{version}/%{srcname}-%{version}.tar.gz
Source101:      freecad.desktop
Source102:      freecad.1
Source103:      freecad.appdata.xml
Source104:      freecad.sharedmimeinfo

Patch0:         freecad-3rdParty.patch
Patch1:         freecad-0.15-zipios.patch
Patch2:         freecad-0.14-Version_h.patch

# Utilities
BuildRequires:  cmake
BuildRequires:  doxygen
BuildRequires:  swig
BuildRequires:  graphviz
BuildRequires:  gettext
BuildRequires:  dos2unix
BuildRequires:  desktop-file-utils
BuildRequires:  autoconf
BuildRequires:  automake
BuildRequires:  gcc
BuildRequires:  gcc-c++
BuildRequires:  gcc-gfortran

# Development Libraries
BuildRequires:  glibc-devel
BuildRequires:  boost-devel
BuildRequires:  opencascade-devel
BuildRequires:  smesh-devel
BuildRequires:  coin-devel
BuildRequires:  eigen3-devel
BuildRequires:  shiboken-devel
BuildRequires:  spnav-devel
BuildRequires:  qt4-devel
BuildRequires:  qtwebkit-devel
BuildRequires:  soqt-devel
BuildRequires:  python-devel
BuildRequires:  python-cxx-devel
BuildRequires:  python-qt4-webkit
BuildRequires:  pyside-devel
BuildRequires:  pyside-tools
BuildRequires:  python-matplotlib
BuildRequires:  freeglut-devel
BuildRequires:  libxerces-c-devel
BuildRequires:  freetype-devel
BuildRequires:  zipios++-devel
BuildRequires:  libxmu-devel
BuildRequires:  freeimage-devel

# Packages separated because they are noarch, but not optional so require them
# here.
Requires:       %{name}-data = %{version}-%{release}

Requires:       hicolor-icon-theme
Requires:       python-pivy
Requires:       python-matplotlib
Requires:       python-collada
Requires:       pyside
Requires:       openscad

# plugins and private shared libs in %%{_libdir}/freecad/lib are private;
# prevent private capabilities being advertised in Provides/Requires
%define plugin_regexp /^\\\(libFreeCAD.*%(for i in %{plugins}; do echo -n "\\\|$i\\\|$iGui"; done)\\\)\\\(\\\|Gui\\\)\\.so/d
%global __provides_exclude_from %{_libdir}/%{name}/lib/%{plugin_regexp}|%{_libdir}/%{name}/Mod/%{plugin_regexp}

%description
FreeCAD is a general purpose Open Source 3D CAD/MCAD/CAx/CAE/PLM modeler, aimed
directly at mechanical engineering and product design but also fits a wider
range of uses in engineering, such as architecture or other engineering
specialties. It is a feature-based parametric modeler with a modular software
architecture which makes it easy to provide additional functionality without
modifying the core system.


%package data
Summary:        Data files for FreeCAD
BuildArch:      noarch
Requires:       %{name} = %{version}-%{release}
Requires:       qt4-assistant

%description data
Data files for FreeCAD.


%prep
%setup -q -n %{srcname}-%{version}
%patch0 -p1 -b .3rdparty
%patch1 -p1 -b .zipios
%patch2 -p1


# Fix encodings
dos2unix -k src/Mod/Test/unittestgui.py \
            ChangeLog.txt \
            copying.lib \
            data/License.txt

# Removed bundled libraries
rm -rf src/3rdParty
rm -rf src/CXX
rm -rf src/zipios++


%build

# Deal with cmake projects that tend to link excessively.
LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS

%cmake -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \
       -DCMAKE_INSTALL_LIBDIR=%{_libdir}/%{name}/lib \
       -DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \
       -DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \
       -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
       -DRESOURCEDIR=%{_datadir}/%{name} \
       -DCOIN3D_DOC_PATH=%{_datadir}/Coin3/Coin \
       -DFREECAD_USE_EXTERNAL_SMESH=TRUE \
       -DSMESH_INCLUDE_DIR=%{_includedir}/smesh \
       -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE \
       -DPYCXX_INCLUDE_DIR=$(pkg-config --variable=includedir PyCXX) \
       -DPYCXX_SOURCE_DIR=$(pkg-config --variable=srcdir PyCXX) \
       ../

%make_build


%install
%make_install -C build

# Launchers in /usr/bin
mkdir -p %{buildroot}%{_bindir}
cat > %{buildroot}%{_bindir}/FreeCAD << EOF
#!/bin/bash
LD_LIBRARY_PATH=%{_libdir}/freecad/lib %{_libdir}/freecad/bin/FreeCAD "\$@"
EOF

cat > %{buildroot}%{_bindir}/FreeCADCmd << EOF
#!/bin/bash
LD_LIBRARY_PATH=%{_libdir}/freecad/lib %{_libdir}/freecad/bin/FreeCADCmd "\$@"
EOF

chmod a+rx %{buildroot}%{_bindir}/FreeCAD
chmod a+rx %{buildroot}%{_bindir}/FreeCADCmd

# Install desktop file
desktop-file-install                                   \
    --dir=%{buildroot}%{_datadir}/applications         \
    %{SOURCE101}
sed -i 's,@lib@,%{_lib},g' %{buildroot}%{_datadir}/applications/%{name}.desktop

# Install desktop icon
install -pD -m 0644 src/Gui/Icons/%{name}.svg \
    %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg

# Install man page
install -pD -m 0644 %{SOURCE102} \
    %{buildroot}%{_mandir}/man1/%{name}.1

# Symlink manpage to other binary names
pushd %{buildroot}%{_mandir}/man1
ln -sf %{name}.1.gz FreeCAD.1.xz
ln -sf %{name}.1.gz FreeCADCmd.1.xz
popd

# Remove obsolete Start_Page.html
rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html

# Install MimeType file
mkdir -p %{buildroot}%{_datadir}/mime/packages
install -pm 0644 %{SOURCE104} %{buildroot}%{_datadir}/mime/packages/%{name}.xml

# Install appdata file
mkdir -p %{buildroot}%{_datadir}/appdata
install -pm 0644 %{SOURCE103} %{buildroot}%{_datadir}/appdata/

# Bug maintainers to keep %%{plugins} macro up to date.
#
# Make sure there are no plugins that need to be added to plugins macro
new_plugins=`ls %{buildroot}%{_libdir}/freecad/lib | sed -e  '%{plugin_regexp}'`
if [ -n "$new_plugins" ]; then
    echo -e "\n\n\n**** ERROR:\n" \
        "\nPlugins not caught by regexp:  " $new_plugins \
        "\n\nPlugins in %{_libdir}/freecad/lib do not exist in" \
         "\nspecfile %%{plugins} macro.  Please add these to" \
         "\n%%{plugins} macro at top of specfile and rebuild.\n****\n" 1>&2
    exit 1
fi
# Make sure there are no entries in the plugins macro that don't match plugins
for p in %{plugins}; do
    if [ -z "`ls %{buildroot}%{_libdir}/freecad/lib/$p*.so`" ]; then
        set +x
        echo -e "\n\n\n**** ERROR:\n" \
             "\nExtra entry in %%{plugins} macro with no matching plugin:" \
             "'$p'.\n\nPlease remove from %%{plugins} macro at top of" \
             "\nspecfile and rebuild.\n****\n" 1>&2
        exit 1
    fi
done

%files
%license copying.lib data/License.txt
%doc ChangeLog.txt README.md
%exclude %{_docdir}/freecad/freecad.*
%{_bindir}/*
%{_datadir}/appdata/*.appdata.xml
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
%{_datadir}/mime/packages/%{name}.xml
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/bin/
%{_libdir}/%{name}/lib/
%{_libdir}/%{name}/Mod/
%{_mandir}/man1/*.1.xz

%files data
%{_datadir}/%{name}/
%{_docdir}/%{name}/freecad.q*


%changelog
* Mon Apr 16 2018 daviddavid <daviddavid> 0.16.6712-1.1.mga6
  (not released yet)
+ Revision: 1219361
- rebuild for new opencascade (OCE 0.18.3)
+ kekepower <kekepower>
- Update to version 0.16.6712 to fix crash (mga#22858)

* Tue Jan 31 2017 barjac <barjac> 0.16-2.mga6
+ Revision: 1084306
- Rebuild for eigen3

* Mon Jan 23 2017 daviddavid <daviddavid> 0.16-1.mga6
+ Revision: 1083251
- new version: 0.16
- remove patch which has been included upstream

* Tue Dec 29 2015 ycantin <ycantin> 0.15-6.mga6
+ Revision: 916830
- fix build : backport upstream patch for boost 1.60
+ daviddavid <daviddavid>
- rebuild for new boost 1.60.0

* Fri Oct 23 2015 ycantin <ycantin> 0.15-1.mga6
+ Revision: 894390
- imported package freecad