2 # TODO: find out why all Ultimaker printers later than 2 cannot be added
4 Summary: 3D printer control software
9 Group: Applications/Engineering
11 # Icons AGPLv3 https://github.com/daid/Cura/issues/231#issuecomment-12209683
12 # Example models are CC-BY-SA
13 # TweakAtZ.py is CC-BY-SA
14 License: AGPLv3 and CC-BY-SA
15 Source0: https://github.com/Ultimaker/Cura/archive/%{version}/%{name}-%{version}.tar.gz
16 # Source0-md5: ebe1b78c8b9ce77c289a266c9e732dc8
17 Source1: https://github.com/Ultimaker/fdm_materials/archive/%{version}/fdm_materials-%{version}.tar.gz
18 # Source1-md5: bf8f25394273d7b6333a856b6a1c94ce
19 Patch0: plugins-path.patch
20 URL: https://ultimaker.com/en/products/cura-software
22 BuildRequires: desktop-file-utils
23 BuildRequires: dos2unix
24 BuildRequires: gettext
25 BuildRequires: gettext-tools
26 BuildRequires: python3-Uranium = %{version}
27 BuildRequires: python3-devel
28 BuildRequires: python3-pytest
29 BuildRequires: rpm-pythonprov
30 BuildRequires: rpmbuild(macros) >= 1.219
31 Requires: CuraEngine = %{epoch}:%{version}
32 Requires: Qt5Quick-controls
33 Requires: fonts-TTF-OpenSans
34 Requires: python3-PyOpenGL
35 Requires: python3-PyQt5
36 Requires: python3-numpy
37 Requires: python3-power
38 Requires: python3-savitar
39 Requires: python3-serial
40 Requires: python3-Uranium = %{version}
41 Requires: python3-zeroconf
43 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
46 Cura is a project which aims to be an single software solution for 3D
47 printing. While it is developed to be used with the Ultimaker 3D
48 printer, it can be used with other RepRap based designs.
50 Cura helps you to setup an Ultimaker, shows your 3D model, allows for
51 scaling / positioning, can slice the model to G-Code, with sane
52 editable configuration settings and send this G-Code to the 3D printer
56 %setup -q -n Cura-%{version} -a1
59 # The setup.py is only useful for py2exe, remove it, so noone is tempted to use it
62 # https://github.com/Ultimaker/Cura/issues/1784
63 sed -i 's/Version=1/Version=1.1/' cura.desktop.in
65 # Upstream installs to lib/python3/dist-packages
66 # We want to install to %%{py3_sitescriptdir}
67 sed -i 's|lib/python${PYTHON_VERSION_MAJOR}/dist-packages|%(echo %{py3_sitescriptdir} | sed -e s@%{_prefix}/@@)|g' CMakeLists.txt
69 # Wrong end of line encoding
70 dos2unix docs/How_to_use_the_flame_graph_profiler.md
73 sed -i '1s=^#!%{_bindir}/\(python\|env python\)3*=#!%{__python3}=' cura_app.py
75 # Invalid locale name ptbr
76 # https://github.com/Ultimaker/Uranium/issues/246
77 mv resources/i18n/{ptbr,pt_BR}
78 sed -i 's/"Language: ptbr\\n"/"Language: pt_BR\\n"/' resources/i18n/pt_BR/*.po
80 mv resources/i18n/{jp,ja}
81 sed -i 's/"Language: jp\\n"/"Language: ja\\n"/' resources/i18n/ja/*.po
83 # Failing test, mixes sets and lists :(
84 # Changed in master, not reporting to upstream
85 sed -i -e '0,/set()/{s/set()/[]/}' \
88 tests/TestMachineAction.py
94 -DCURA_VERSION:STRING=%{version}
98 cd ../fdm_materials-%{version}
106 rm -rf $RPM_BUILD_ROOT
108 %{__make} -C build install DESTDIR=$RPM_BUILD_ROOT
109 %{__make} -C fdm_materials-%{version}/build install DESTDIR=$RPM_BUILD_ROOT
111 # Sanitize the location of locale files
112 mv $RPM_BUILD_ROOT%{_datadir}/{cura/resources/i18n,locale}
113 ln -s ../../locale $RPM_BUILD_ROOT%{_datadir}/cura/resources/i18n
114 rm $RPM_BUILD_ROOT%{_localedir}/*/*.po
115 rm $RPM_BUILD_ROOT%{_localedir}/*.pot
118 rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/resources/themes/cura/fonts/
119 ln -s %{_datadir}/fonts/open-sans/ $RPM_BUILD_ROOT%{_datadir}/%{name}/resources/themes/cura/fonts
121 %py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
122 %py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
125 %find_lang cura --all-name
128 rm -rf $RPM_BUILD_ROOT
131 %defattr(644,root,root,755)
132 %attr(755,root,root) %{_bindir}/%{name}
133 %{py3_sitescriptdir}/cura
134 %{_desktopdir}/%{name}.desktop
136 %{_datadir}/appdata/cura.appdata.xml
137 %{_datadir}/mime/packages/cura.xml