[Fedora-packaging] Packaging a web app that bundles a lot of stuff (OctoPrint)

Miro Hrončok mhroncok at redhat.com
Sun Jan 5 20:51:38 UTC 2014


Hi,

I would like to package OctoPrint [1], a webapp that host 3D printers.

I started with building a (somehow) working package in Copr [2][3]. This 
package probably doesn't follow FHS and violates other guidelines as 
well, but that's not the issue right now.

What bothers me, if I want OctoPrint in Fedora (and I do) is bundling. 
Currently, upstream OctoPrint bundles a lot of stuff [4]:

  * Twitter Bootstrap
  * jQuery stuff
  * AVLTree
  * Knockout
  * LESS
  * Modernizr
  * SockJS client
  * underscore.js
  * Font Awesome

I've never packaged a webapp into Fedora but I think that all the 
standard rules like no bundled libraries apply here as well.

So the situation here is:

1) bootstrap and jquery are packaged in Fedora as rubygems while 
OctoPrint is witten in Python. I'm not really into shiping all Ruby (and 
Rails) only to have bootstrap and jquery. Not to mention that the 
version in those rubygems is probably not the same as in OctoPrint.

2) underscore.js is packaged as nodejs package and we have the same 
problem (if the thing in package is the same thing as in OctoPrint at all).

3) AVLTree is not in Fedora at all, but the js file in OCtoPRint is 
different form "uspream" - single js. file on gist.github.com

4) Knockout is not in Fedora, but upstream version [5] is one year in 
front of what is bundled in OctoPrint. Modernizr is not packaged and 
upstream version is ahead as well.

5) LESS is packaged as nodejs package and pull nodejs with it. Also, 
completely different version than in OctoPrint

6) We do have python-sockjs-tornado in Fedora, witch is a dependency of 
OctoPrint as well, but I see no client packaged. However, the latest 
upstream version is in OctoPrint.

7) Font Awesome is being reviewed [6], but exist as texlive- package as well

While I'm probably able to package all unpackaged bundles in Fedora and 
deal with different versions communicating with upstream, I'm not quite 
sure with all stuff that's depending on Node.js, TeX or Ruby. I don't 
want this Python app to pull all this.

Should I just pull the deps and don't care? Is this just a big red 
light, saying: No, this will never hit Fedora? Or what is a desired 
approach here?

Thanks for any help with this.

[1] http://octoprint.org/
[2] https://github.com/hroncok/SPECS/blob/master/octoprint.spec
[3] http://copr.fedoraproject.org/coprs/churchyard/octoprint/
[4] https://github.com/foosel/OctoPrint/tree/master/octoprint/static/js/lib
[5] http://knockoutjs.com/
[6] https://bugzilla.redhat.com/show_bug.cgi?id=1026376

-- 
Miro Hrončok
--
Phone: +420777974800
IRC: mhroncok


More information about the packaging mailing list