From Fedora Project Wiki
(→‎Open review requests: literati is compmlete)
 
(204 intermediate revisions by 2 users not shown)
Line 2: Line 2:


== High Level Steps and Issues ==
== High Level Steps and Issues ==
=== Fedora ===
# Get all Gitorious' dependencies into Fedora.
# Get all Gitorious' dependencies into Fedora.
#* Several Rubygems.
#* Several Rubygems.
#* mod_passenger. [https://bugzilla.redhat.com/470696 RHBZ#470696]
#* Several Javascripts.
# Get Gitorious into Fedora.
# Get Gitorious into Fedora.
#* Bundled libraries: Gitorious bundles several things, including Rails. [https://issues.gitorious.org/issues/3 Upstream bug for Rails]
#* Bundler issues: If we use different Gem versions than upstream, Bundler wants to write to Gemfile and Gemfile.lock. We will use bundler_ext to work around this. This will require the {{Pkg|rubygem-bundler_ext}} package and a lot of testing.
#* Bundler issues: If we use different Gem versions than upstream, Bundler wants to write to Gemfile and Gemfile.lock. We must patch Gemfile
#* Init scripts: Create equivalent systemd unit files for Fedora & RHEL 7.
#* Init scripts: Create equivalent systemd unit files for Fedora & RHEL 7.
#* Ruby version: Upstream master works with Ruby 1.8; verify Ruby 1.9.x compatability. Same for newer rails.
#* Ruby version: Upstream "master" branch works with Ruby 1.9.3 and 2.0.0. I'm working with upstream to maintain this compatibility via [https://ci.gitorious.org/jenkins/ Jenkins].
#* Gem versions: Upstream uses different Gem versions than Fedora has. The biggest difference is Rails, but others are documented below. Plan of attack is to ensure that the test suite passes with both.
#* Javascript libs: There are several Git submodules in upstream (bane, capillary-js, raphael, spin.js, others). We must unbundle these and [[JavaScript libraries packaging guideline draft|package them]] separately.
#* GeoIP data: Gitorious bundles GeoIP.dat, which is already available in Fedora as the "GeoIP" package.
#* FHS considerations: for the Gitorious web application itself, we need to discover how to split up the package to fit the FHS conventions of /etc/, /usr/, and so on.


=== EPEL ===
=== EPEL ===
Line 15: Line 19:
#* Rails. I don't have experience packaging Rails, and there's been questions about which version to put into EPEL.
#* Rails. I don't have experience packaging Rails, and there's been questions about which version to put into EPEL.
#* Various Rubygems must be branched for EPEL.
#* Various Rubygems must be branched for EPEL.
#* mod_passenger. See "Fedora" above.
# Get Gitorious into EPEL.
# Get Gitorious into EPEL.
#* Ruby 1.8 may make things easier, since this is what upstream uses.
#* Unfortunately upstream has dropped support for Ruby 1.8, so formal EPEL inclusion can only happen in EPEL 7.


== Dependencies ==
== Open review requests ==


* [[File:Test-result-fail.png|alt=Fail|link=]] - The package is missing
Please review some of these. I'm willing to trade reviews.
* [[File:Test-result-warn.png|alt=Pass|link=]] - The package is present and versions differ from upstream
* [[File:Test-result-pass.png|alt=Pass|link=]] - The package is present and versions match upstream


{|
{|border="2" cellpadding="2" cellspacing="0"
! Gem !! Upstream Gemfile !! Fedora 17 !! EPEL 6
! Gem !! Package Review Request
|-
|-
| rake            || 0.8.7  || {{result|warn}} 0.9.2.2 || {{result|pass}} 0.8.7
| resque-cleaner || {{bz|1037278}}
|-
|-
| SystemTimer    || 1.2.3  || (gone from Ruby?) || {{result|fail}}
| resque-job-stats || {{bz|1037900}}
|-
|-
| activesupport  || 2.3.8  || {{result|warn}} 3.0.11  || {{result|fail}}
| paperclip || {{bz|1065682}}
|-
|-
| activemessaging || 0.7.1  || (gone from rails?) || {{result|fail}}
|-
| activerecord    || 2.3.8  || {{result|warn}} 3.0.11  || {{result|fail}}
|-
| acts-as-taggable-on || 2.0.6 || not in Fedora || {{result|fail}}
|-
| addressable    || 2.2.6  || {{result|pass}} 2.2.6 || {{result|fail}}
|-
| builder        || 3.0.0  || {{result|warn}} 2.1.2  || {{result|fail}}
|-
| json            || 1.5.4  || {{result|warn}} 1.6.5  || {{result|warn}} 1.4.6
|-
| capillary      || 1.0.0  || {{result|fail}} || {{result|fail}}
|-
| mime-types      || 1.16  || {{result|pass}} 1.16 || {{result|pass}} 1.16
|-
| nokogiri        || 1.5.0  || {{result|warn}} 1.5.5  || {{result|warn}} 1.4.3.1
|-
| rack            || 1.0.1  || {{result|warn}} 1.4.0  || {{result|warn}} 1.1.0
|-
| rack-test      || 0.6.1  || {{result|warn}} 0.6.0  || {{result|warn}} 0.5.4
|-
| ffi            || 1.0.9  || {{result|pass}} 1.0.9 || {{result|fail}}
|-
| childprocess    || 0.2.1  || {{result|warn}} 0.2.0  || {{result|fail}}
|-
| json_pure      || 1.5.0  || {{result|warn}} 1.6.3  || {{result|warn}} 1.6.3
|-
| rubyzip        || 0.9.4  || {{result|pass}} 0.9.4 || {{result|fail}}
|-
| selenium-webdriver || 2.4.0 || {{result|warn}} 2.3.2 || {{result|fail}}
|-
| xpath          || 0.1.4  || {{result|pass}} 0.1.4 || {{result|fail}}
|-
| capybara        || 1.0.1  || {{result|warn}} 1.1.2  || {{result|fail}}
|-
| chronic        || 0.3.0  || {{result|warn}} 0.6.6  || {{result|fail}}
|-
| cocaine        || 0.2.1  || {{result|fail}} || {{result|fail}}
|-
| daemons        || 1.1.0  || {{result|warn}} 1.0.10 || {{result|warn}} 1.0.10
|-
| diff-lcs        || 1.1.2  || {{result|pass}} 1.1.2  || {{result|pass}} 1.1.2
|-
| gemcutter      || 0.6.1  || {{result|warn}} 0.3.0  || {{result|fail}}
|-
| rubyforge      || 2.0.4  || {{result|pass}} 2.0.4 || {{result|fail}}
|-
| echoe          || 4.3.1  || {{result|warn}} 4.3.1  || {{result|fail}}
|-
| eventmachine    || 0.12.10 || {{result|pass}} 0.12.10 || {{result|pass}} 0.12.10
|-
| exception_notification || 1.0.20090728 || {{result|fail}} || {{result|fail}}
|-
| factory_girl    || 1.3.3  || {{result|warn}} 2.3.2 || {{result|fail}}
|-
| thor            || 0.14.6 || {{result|pass}} 0.14.6 || {{result|fail}}
|-
| foreman        || 0.41.0 || {{result|fail}}  || {{result|fail}}
|-
| geoip          || 0.8.9  || {{result|fail}}  || {{result|fail}}
|-
| hodel_3000_compliant_logger || 0.1.0 || {{result|fail}} || {{result|fail}}
|-
| hoe            || 2.8.0  || {{result|warn}} 2.12.5  || {{result|fail}}
|-
| launchy        || 2.0.5  || {{result|warn}} 0.4.0 || {{result|warn}} 0.3.7
|-
| mocha          || 0.9.10 || {{result|warn}} 0.11.0 || {{result|warn}} 0.9.8
|-
| mysql          || 2.8.1  || {{result|warn}} 2.8.2? || {{result|warn}} 2.8.2?
|-
| oauth          || 0.4.4  || {{result|fail}} || {{result|fail}}
|-
| paperclip      || 2.4.5  || {{result|fail}} || {{result|fail}}
|-
| proxymachine    || 1.2.4  || {{result|fail}} || {{result|fail}}
|-
| rdiscount      || 1.3.1.1 || {{result|fail}} || {{result|fail}}
|-
| redis          || 2.2.0  || {{result|fail}} || {{result|fail}}
|-
| redis-namespace || 0.7.0  || {{result|fail}} || {{result|fail}}
|-
| sinatra        || 1.0    || {{result|fail}} || {{result|fail}}
|}
|}
== Checking progress with rhgc.rb ==
In order to see the list of gems that must still be packaged:
# <code>git clone git://gitorious.org/gitorious/mainline.git gitorious</code>
# <code>git clone git://gist.github.com/movitto/6086381 rhgc</code>
# <code>./rhgc/rhgc.rb --gemfile gitorious/Gemfile</code>
== Gem dependency graph ==
You can view the [http://ktdreyer.fedorapeople.org/gitorious/graph.png outstanding Gem dependency chart] ([http://ktdreyer.fedorapeople.org/gitorious/graph.dot graphviz source]). I will attempt to keep this graph up to date, but it is a manual process. For "live" data, see the rhgc.rb section above.
This graph does not take into account Javascript libraries.
<references />

Latest revision as of 21:07, 8 July 2014

This document outlines the steps to get Gitorious into Fedora and EPEL.

High Level Steps and Issues

Fedora

  1. Get all Gitorious' dependencies into Fedora.
    • Several Rubygems.
    • Several Javascripts.
  2. Get Gitorious into Fedora.
    • Bundler issues: If we use different Gem versions than upstream, Bundler wants to write to Gemfile and Gemfile.lock. We will use bundler_ext to work around this. This will require the rubygem-bundler_ext package and a lot of testing.
    • Init scripts: Create equivalent systemd unit files for Fedora & RHEL 7.
    • Ruby version: Upstream "master" branch works with Ruby 1.9.3 and 2.0.0. I'm working with upstream to maintain this compatibility via Jenkins.
    • Gem versions: Upstream uses different Gem versions than Fedora has. The biggest difference is Rails, but others are documented below. Plan of attack is to ensure that the test suite passes with both.
    • Javascript libs: There are several Git submodules in upstream (bane, capillary-js, raphael, spin.js, others). We must unbundle these and package them separately.
    • GeoIP data: Gitorious bundles GeoIP.dat, which is already available in Fedora as the "GeoIP" package.
    • FHS considerations: for the Gitorious web application itself, we need to discover how to split up the package to fit the FHS conventions of /etc/, /usr/, and so on.

EPEL

  1. Get all Gitorious's dependencies into EPEL.
    • Rails. I don't have experience packaging Rails, and there's been questions about which version to put into EPEL.
    • Various Rubygems must be branched for EPEL.
  2. Get Gitorious into EPEL.
    • Unfortunately upstream has dropped support for Ruby 1.8, so formal EPEL inclusion can only happen in EPEL 7.

Open review requests

Please review some of these. I'm willing to trade reviews.

Gem Package Review Request
resque-cleaner RHBZ #1037278
resque-job-stats RHBZ #1037900
paperclip RHBZ #1065682

Checking progress with rhgc.rb

In order to see the list of gems that must still be packaged:

  1. git clone git://gitorious.org/gitorious/mainline.git gitorious
  2. git clone git://gist.github.com/movitto/6086381 rhgc
  3. ./rhgc/rhgc.rb --gemfile gitorious/Gemfile

Gem dependency graph

You can view the outstanding Gem dependency chart (graphviz source). I will attempt to keep this graph up to date, but it is a manual process. For "live" data, see the rhgc.rb section above.

This graph does not take into account Javascript libraries.