#311 Node.js guidelines update
Closed: Fixed Opened by patches.

We have a couple of changes we'd like to make to the Node.js Guidelines after several months of refining our processes a little bit.

You can see the new draft at:
https://fedoraproject.org/wiki/User:Patches/PackagingDrafts/NodeJS

The changes include:

  • I've restored the %nodejs_fixdep section included in the original version of the draft. After reviewing the IRC logs, it seemed FPC didn't strongly object to this, and I believe it has several advantages to patch-based workflows. Not only is it simpler for packagers, but it also makes them dead simple to audit later on for staleness/compliance/whathaveyou. (grep -r nodejs_fixdep is just a lot easier than trying to find relevant patches. ;-) It also makes changes to dependencies much easier to see in git. [https://fedoraproject.org/wiki/User:Patches/PackagingDrafts/NodeJS#Correcting_Dependencies (relevant section)] [https://fedoraproject.org/w/index.php?title=User:Patches/PackagingDrafts/NodeJS&diff=343004&oldid=335497 (diff)]

  • The RPM magic was recently split into it's own "nodejs-packaging" SRPM, similar to Java. Accordingly, packages can now require "nodejs-packaging" instead of "nodejs-devel" to reduce the number of deps dragged in at build-time. [https://fedoraproject.org/wiki/User:Patches/PackagingDrafts/NodeJS#BuildRequires (relevant section)] [https://fedoraproject.org/w/index.php?title=User:Patches/PackagingDrafts/NodeJS&oldid=343005 (diff #1)] [https://fedoraproject.org/w/index.php?title=User:Patches/PackagingDrafts/NodeJS&oldid=343006 (diff #2)] [https://lists.fedoraproject.org/pipermail/nodejs/2013-April/000001.html (list discussion)]

  • The necessary ExclusiveArch line needed for Node.js packages is now documented, including the %{nodejs_arches} macro recently added to redhat-rpm-config for this purpose. [https://fedoraproject.org/wiki/User:Patches/PackagingDrafts/NodeJS#ExclusiveArch (new section)] [https://lists.fedoraproject.org/pipermail/nodejs/2013-May/000017.html (list discussion)]

  • A strategy for handling multiple/compatibility versions of packages that is transparent to dependent packagers has been implemented. [https://fedoraproject.org/wiki/User:Patches/PackagingDrafts/NodeJS#Handling_Multiple_Version_Scenarios (new section)] [https://lists.fedoraproject.org/pipermail/nodejs/2013-June/000032.html (list discussion)]

  • The %{nodejs_default_filter} default automatic virtual provides filtering macro (similar to Perl's) is now documented. [https://fedoraproject.org/wiki/User:Patches/PackagingDrafts/NodeJS#Filtering_Unwanted_Provides (new section)]

  • A --check argument was added to %nodejs_symlink_deps simplify running test suites in specs. [https://fedoraproject.org/wiki/User:Patches/PackagingDrafts/NodeJS#.25check (new section)]

  • A brief mention that additional virtual provides are added for native modules to track ABI compatibility was added. [https://fedoraproject.org/w/index.php?title=User:Patches/PackagingDrafts/NodeJS&diff=343008&oldid=343007 (diff)]

  • Some minor edits were made to the installing native modules section to reflect reality; my initial draft contained errors. [https://fedoraproject.org/w/index.php?title=User:Patches/PackagingDrafts/NodeJS&oldid=343009 (diff)]

  • A brief note about an additional macro required to enable dependency generation on EPEL was added. [https://fedoraproject.org/w/index.php?title=User:Patches/PackagingDrafts/NodeJS&diff=343022&oldid=343021 (diff)]

I'd like to thank the fledgling Node.js SIG, including Stephen Gallager, Jamie Nguyen, Tom Hughes, and Stanislav Ochotnicky for their valuable bug catching, feedback, and suggestions, without which none of this would be possible. And, also the FPC in advance for reviewing our changes, of course. ;-)


Thanks for the annotated changes. We didn't get to this item this week but it will be higher on the agenda for the next meeting.

Draft approved (+1:6, 0:0, -1:0)

Hi, can we get these changes merged soon, please? There are [https://lists.fedoraproject.org/pipermail/nodejs/2014-January/000093.html some packages that aren't working properly now] because packagers are missing important information that was supposed to be added in this update. Thanks!

Metadata