Blob Blame History Raw
Name:           printrun
Version:        2013.10.19
%global tag     %{name}-20131019
Release:        7%{?dist}
Summary:        RepRap printer interface and tools
License:        GPLv3+
Group:          Applications/Engineering
URL:            https://github.com/kliment/Printrun
Source0:        https://github.com/kliment/Printrun/archive/%{tag}.tar.gz

# prontserve is not yet ready for production
# it also has some unresolved dependencies in Fedora
%global prontserve 0

# Desktop files
Source1:        pronsole.desktop
Source2:        pronterface.desktop
Source3:        plater.desktop

# AppData files
Source4:        pronsole.appdata.xml
Source5:        pronterface.appdata.xml
Source6:        plater.appdata.xml

# Both desktop files and AppData files are already in upstream git as well

# https://github.com/kliment/Printrun/issues/438
Patch0:         %{name}-issue438a.patch
Patch1:         %{name}-issue438b.patch
Patch2:         %{name}-simarrange.patch

BuildRequires:  Cython
BuildRequires:  python2-devel
BuildRequires:  desktop-file-utils
BuildRequires:  gettext
Requires:       pronterface = %{version}-%{release}
Requires:       pronsole = %{version}-%{release}
Requires:       plater = %{version}-%{release}

%description
Printrun is a set of G-code sending applications for RepRap.
It consists of printcore (dumb G-code sender), pronsole (featured command line
G-code sender), pronterface (featured G-code sender with graphical user
interface), and a small collection of helpful scripts. Together with skeinforge
they form a pretty powerful softwarecombo. This package installs whole Printrun.

###############################################

%package        common
Summary:        Common files for Printrun

%description    common
Printrun is a set of G-code sending applications for RepRap.
This package contains common files.

###############################################

%package     -n pronsole
Summary:        CLI interface for RepRap
Requires:       pyserial
Requires:       skeinforge
Requires:       %{name}-common = %{version}-%{release}

%description -n pronsole
Pronsole is a featured command line G-code sender.
It controls the ReRap printer and integrates skeinforge.
It is a part of Printrun.

################################################

%if 0%{?prontserve}
%package     -n prontserve
Summary:        Web interface for RepRap
Requires:       python-tornado
Requires:       pronsole = %{version}-%{release}

%description -n prontserve
Pronserve is a featured web G-code sender.
It controls the ReRap printer and integrates skeinforge.
It is a part of Printrun.
%endif

################################################

%package     -n pronterface
Summary:        GUI interface for RepRap
Requires:       wxPython
Requires:       python-cairosvg
Requires:       python-pyglet
Requires:       simarrange
Requires:       pronsole = %{version}-%{release}

%description -n pronterface
Pronterface is a featured G-code sender with graphical user interface.
It controls the ReRap printer and integrates skeinforge.
It is a part of Printrun.

###############################################

%package     -n plater
Summary:        RepRap STL plater
Requires:       wxPython
Requires:       %{name}-common = %{version}-%{release}
Requires:       python-pyglet
Requires:       simarrange

%description -n plater
Plater is a GUI tool to prepare printing plate from STL files for ReRap.
It is a part of Printrun.

###############################################


%prep
%setup -qn Printrun-%{tag}
%patch0 -p1
%patch1 -p1
%patch2 -p1

# use launchers for skeinforge
sed -i 's|python skeinforge/skeinforge_application/skeinforge.py|skeinforge|' %{name}/pronsole.py
sed -i 's|python skeinforge/skeinforge_application/skeinforge_utilities/skeinforge_craft.py|skeinforge-craft|' %{name}/pronsole.py

%build
CFLAGS="$RPM_OPT_FLAGS" %{__python} setup.py build

# rebuild locales
cd locale
for FILE in *
  do msgfmt $FILE/LC_MESSAGES/plater.po -o $FILE/LC_MESSAGES/plater.mo || :
     msgfmt $FILE/LC_MESSAGES/pronterface.po -o $FILE/LC_MESSAGES/pronterface.mo || :
done
cd ..

%install
%{__python} setup.py install --skip-build --prefix %{buildroot}%{_prefix}

cd %{buildroot}%{_bindir}
for FILE in *.py; do
  mv -f $FILE ${FILE%.py}
done

# Backward compatibility symlinks
%if 0%{?fedora} && 0%{?fedora} < 20
for FILE in *; do
  ln -sf $FILE $FILE.py
done
%endif

cd -

# desktop files
desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1}
desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2}
desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE3}

# appdata files
mkdir -p %{buildroot}%{_datadir}/appdata
cp %{SOURCE4} %{SOURCE5} %{SOURCE6} %{buildroot}%{_datadir}/appdata/

# locales
mkdir -p %{buildroot}%{_datadir}/locale
cp -ar %{buildroot}%{_datadir}/pronterface/locale/* %{buildroot}%{_datadir}/locale
rm -rf %{buildroot}%{_datadir}/pronterface/locale
ln -s -f %{_datadir}/locale/ %{buildroot}%{_datadir}/pronterface/ # the app expects the locale folder in here

%if ! 0%{?prontserve}
rm -f %{buildroot}%{_bindir}/prontserve*
%endif

%{find_lang} pronterface
%{find_lang} plater

%files
%doc README* COPYING

%files common
%{python_sitearch}/%{name}
%{python_sitearch}/Printrun-*.egg-info
%{_bindir}/printcore*
%{_datadir}/pixmaps/plater.ico
%doc README* COPYING

%files -n pronsole
%{_bindir}/pronsole*
%{_datadir}/pixmaps/pronsole.ico
%{_datadir}/applications/pronsole.desktop
%if 0%{?fedora} < 21
%dir %{_datadir}/appdata
%endif
%{_datadir}/appdata/pronsole.appdata.xml
%doc README* COPYING

%if 0%{?prontserve}
%files -n prontserve
%{_bindir}/prontserve*
%doc README* COPYING
%endif

%files -n pronterface -f pronterface.lang
%{_bindir}/pronterface*
%{_datadir}/pronterface
%{_datadir}/pixmaps/P-face.ico
%{_datadir}/applications/pronterface.desktop
%if 0%{?fedora} < 21
%dir %{_datadir}/appdata
%endif
%{_datadir}/appdata/pronterface.appdata.xml
%doc README* COPYING

%files -n plater -f plater.lang
%{_bindir}/plater*
%{_datadir}/applications/plater.desktop
%if 0%{?fedora} < 21
%dir %{_datadir}/appdata
%endif
%{_datadir}/appdata/plater.appdata.xml
%doc README* COPYING

%changelog
* Fri Dec 27 2013 Miro Hrončok <mhroncok@redhat.com> - 2013.10.19-7
- Add AppData

* Fri Nov 15 2013 Miro Hrončok <mhroncok@redhat.com> - 2013.10.19-6
- Use system's simarrange in plater

* Wed Nov 13 2013 Miro Hrončok <mhroncok@redhat.com> - 2013.10.19-5
- Finally, this seems like a proper fix for 438

* Sun Nov 10 2013 Miro Hrončok <mhroncok@redhat.com> - 2013.10.19-4
- Go back to our workaround

* Sun Nov 10 2013 Miro Hrončok <mhroncok@redhat.com> - 2013.10.19-3
- Bad upstream "proper" fix for 438

* Tue Oct 29 2013 Miro Hrončok <mhroncok@redhat.com> - 2013.10.19-2
- Added patch to workaround upstream issue 438

* Sat Oct 19 2013 Miro Hrončok <mhroncok@redhat.com> - 2013.10.19-1
- New upstream release
- Switch to new versioning, drop commit hashes from version/release
- Upstream now has proper entrypoints, so entire %%install is redone

* Fri Sep 06 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-32.20130711gitb8f549b
- Fixed #1004973 (%%{name}-missing-plater-import.patch)
- In F <= 19 added backwards compatibility .py symlinks to bindir
- Added asterisk at the end of bindir content in %%files to also match those symlinkss

* Sun Aug 11 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-31.20130711gitb8f549b
- No longer have .py named scripts in bindir

* Sat Aug 10 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-30.20130711gitb8f549b
- Fix bad patch

* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.0-29.20130711gitb8f549b
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild

* Wed Jul 24 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-28.20130711gitb8f549b
- New upstream tag release
- Corrected bogus date in %%changelog
- Flush patch no longer needed
- No longer NoArch
- BR added Cython

* Thu Jun 20 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-27.20130604git80e313d
- Added patch to solve upstream issue 402

* Tue Jun 18 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-26.20130604git80e313d
- Upstream released tag release 20130604
- Pyglet 1.2 issue fixed in upstream, removed patch
- Prepared spec for prontserve but do not produce the package yet (not all deps satisfied)

* Tue Jun 18 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-25.20130123git71e5da0
- When printrun is installed and plater not, don't crash when clicking Compose
- Require pyglet for plater for F18+

* Fri Jun 07 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-24.20130123git71e5da0
- Fixed Pyglet 1.2 issue (#868266)

* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.0-23.20130123git71e5da0
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild

* Wed Jan 23 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-22.20130123git71e5da0
- Pull request merged
- Updated to new commit
- Removed pacth (no longer needed)

* Wed Jan 23 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-21.20130113git5897fbc
- Handle UTF-8 encode better in patch

* Wed Jan 23 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-20.20130113git5897fbc
- Removing UTF-8 removal from patch

* Sat Jan 19 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-19.20130113git5897fbc
- Removed run-time deps, that are resolved automatically

* Sat Jan 19 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-18.20130113git5897fbc
- Added patch from my pull request

* Sun Jan 13 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-17.20130113git5897fbc
- New "version" (bugfix)

* Sun Jan 13 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-16.20130113git094dffa
- New upstream "version", where everything is GPLv3+
- pronsole.ico and gcoder.py now part of setup.py
- Skeinforge path changing moved from %%install to %%prep
- Commented macros in changelog
- Use skeinforge launchers in default settings
- Pronterface lang moved from common to pronterface, is not needed by pronsole any more

* Wed Jan 09 2013 Miro Hrončok <mhroncok@redhat.com> - 0.0-15.20121103git6fa4766
- Updated to respect new GitHub rule

* Mon Dec 31 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-14.20121103git6fa47668f2
- Changed location of skeinforge from %%{_datadir}/%%{name}/
                                   to %%{python_sitelib}/%%{name}

* Sun Dec 30 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-13.20121103git6fa47668f2
- Do not download the desktop files from my GitHub

* Fri Nov 23 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-12.20121103git6fa47668f2
- Fixing a source mistake
- Redone, using setup.py now

* Fri Nov 23 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-11.20121103git6fa47668f2
- New upstream "version" (merge from experimetal)
- Commented macros in comments
- Playing a bit with attr

* Mon Oct 29 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-10-20120924gitb6935b93
- Switched generic names and names in desktop files
- Don't use rm, cp and ln -s macros

* Tue Oct 09 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-9-20120924gitb6935b93
- updated bash lounchers

* Tue Oct 09 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-8-20120924gitb6935b93
- ln -s skeinforge
- printrun requires exact version and release

* Thu Oct 04 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-7-20120924gitb6935b93
- New sources links

* Sat Sep 22 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-6-20120924gitb6935b93
- New commits, inlude the license

* Sat Sep 22 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-5-20120921gitdceaf26f
- launching scripts now pass the params

* Fri Sep 21 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-4-20120921gitdceaf26f
- Build gettext

* Fri Sep 21 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-3-20120921gitdceaf26f
- BuildRequires:  desktop-file-utils

* Fri Sep 21 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-2-20120921gitdceaf26f
- Language files correctly added

* Fri Sep 21 2012 Miro Hrončok <miro@hroncok.cz> - 0.0-1-20120921gitdceaf26f
- New package