nodejs-readable-stream and nodejs-string_decoder
by T.C. Hollingsworth
I came across the two modules in $SUBJECT as part of jQuery packaging.
Both bundle code that is part of node core as of v0.10, so they're
not permitted in Fedora due to our bundled library policy. Luckily,
both are easy to work around.
For string_decoder, you just need to '%nodejs_fixdep -r
string_decoder'. Core presents exactly the same interface in exactly
the same module name so no patches are needed.
For readable-stream, it's a bit trickier. The old module split the
different classes into seperate files. The core module makes all the
classes available in one file. Additionaly the core module is called
"stream", not "readable-stream".
If you're lucky (as I was with nodejs-lazystream for the most part),
upstream will only use the module as a fallback, e.g.:
var readable = require('stream').Readable || require('readable-stream/readable')
In this case, you ought to be able to just '%nodejs_fixdep -r
readable-stream' and things will just work. If you're not so lucky,
you will need to patch require() calls thusly:
- var readable = require('readable-stream/readable')
+ var readable = require('stream').Readable
and/or
- var writable = require('readable-stream/writable')
+ var writable = require('stream').Writable
and lather, rinse, repeat for any other classes. Don't forget to
'%nodejs_fixdep -r readable-stream' here also.
-T.C.
9 years, 2 months
nodejs-packagiing improvements
by T.C. Hollingsworth
I've pushed a few new nodejs-packaging features to an "experimental"
branch in the git repository:
https://git.fedorahosted.org/cgit/nodejs-packaging.git/tree/?h=experimental
The changes include:
- %nodejs_fixdep now supports a --dev argument to affect devDependencies
This is used by the jquery review I recently filed to drop
dependencies on the nonfree jshint library.
- %nodejs_fixdep also supports an --optional argument to affect
optionalDependencies
I added this for completeness' sake. We currently don't do anything
with optionalDependencies. If the plans for soft dependencies come to
fruition and they support automatic population like normal Requires
then we'll probably start doing something with these, but for now we
ignore them.
- %nodejs_symlink_deps now supports a --force argument
This argument overrides failing the build when bundled dependencies
are encountered in node_modules. This can be used during development
to allow you to mix system-provided and npm-provided modules. It
should _never_ be used in an official Fedora package.
- %nodejs_symlink_deps now supports --build as an alias for --check
This switch more accurately reflects what it does (i.e. it works in
the build directory not the buildroot directory) and doesn't look so
weird in %build sections. ;-)
And finally, the biggie:
- Support for the caret (^) operator was added to the dependency generator.
This has been supported in npm for about a year now, but the
dependency generator never knew about it. It also hasn't really
gained traction in the wild till very recently. (old npm versions that
don't support it are slowly dying out...)
The semantics of this new operator are described in detail here:
https://github.com/isaacs/node-semver#ranges
Basically, ^1.2.3 is the equivalent of ">1.2.3 <2". This is much
better for our purposes than the "~1.2.3" form used by many packages,
which translates to ">1.2.3 <1.3". Undoubtedly many of us will want
to start using it in %nodejs_fixdep for certain recalcitrant packages.
;-)
Testing builds of the new nodejs-packaging are available from this copr:
copr.fedoraproject.org/coprs/patches/js-future/
Please try it out and let me know if there's anything broken, any more
improvements you've just been dying to have, etc.
Thanks!
-T.C.
9 years, 2 months
FTBFS on EPEL7
by T.C. Hollingsworth
I attempted a mass rebuild of all Fedora rawhide nodejs packages on
EPEL7 using copr:
http://copr.fedoraproject.org/coprs/patches/epel7-nodeiverse/
This includes a number of packages that probably won't make the jump
to EPEL since they don't exist on EPEL6, but I did them anyway since
this was partly me just testing copr. ;-)
Therefore this is really just for informational purposes at this time.
I plan to look at the npm dependents and other interesting packages,
and maybe retry this again soon after figuring out the real
packageset. If you'd like to look into your packages too, great!
Feel free to request permissions if you want to try building updated
packages into this copr. AFAICT I can't just add ACLs, you have to
ask for them. :-(
The list of packages that fails to build follows, with owners and
comaintainers listed. You can inspect build logs at:
http://copr-be.cloud.fedoraproject.org/results/patches/epel7-nodeiverse/e...
tomh carto (none)
jamielinux docco patches
jamielinux jasmine-node patches
jamielinux mocha patches
tomh nodejs-agentkeepalive jamielinux
humaton nodejs-ansistyles (none)
patches nodejs-asn1 jamielinux
jamielinux nodejs-batch patches
tdawson nodejs-bson (none)
patches nodejs-callsite jamielinux
tomh nodejs-chai jamielinux
tomh nodejs-chai-connect-middleware jamielinux
tomh nodejs-chai-passport-strategy jamielinux
jamielinux nodejs-character-parser patches
patches nodejs-cmd-shim jamielinux
jamielinux nodejs-commander patches
jamielinux nodejs-component-emitter patches
jamielinux nodejs-compressible patches
jamielinux nodejs-constantinople patches
jamielinux nodejs-cookie patches
jamielinux nodejs-cookie-signature patches
jamielinux nodejs-css patches
jamielinux nodejs-css-parse patches
jamielinux nodejs-css-stringify patches
tomh nodejs-deep-eql jamielinux
jamielinux nodejs-dep-graph patches
jamielinux nodejs-detective patches
jamielinux nodejs-diff patches
jamielinux nodejs-ejs patches
jamielinux nodejs-expect-dot-js patches
jamielinux nodejs-fresh patches
patches nodejs-github-url-from-git jamielinux
patches nodejs-http-signature jamielinux
jamielinux nodejs-i patches
patches nodejs-i2c jamielinux
jamielinux nodejs-jasmine-growl-reporter patches
jamielinux nodejs-jasmine-reporters patches
jamielinux nodejs-js-yaml patches
sgallagh nodejs-less jamielinux,mrunge,patches
jamielinux nodejs-libxmljs patches
tomh nodejs-mapnik jamielinux
tomh nodejs-mapnik-vector-tile jamielinux
tomh nodejs-mbtiles jamielinux
patches nodejs-minimist jamielinux
jamielinux nodejs-monocle patches
jamielinux nodejs-negotiator patches
jamielinux nodejs-node-expat patches
jamielinux nodejs-node-stringprep patches
patches nodejs-normalize-package-data jamielinux
patches nodejs-npm-user-validate jamielinux
tomh nodejs-oauth jamielinux
jamielinux nodejs-package patches
tomh nodejs-passport jamielinux
tomh nodejs-passport-oauth jamielinux
tomh nodejs-passport-oauth1 jamielinux
tomh nodejs-passport-oauth2 jamielinux
tomh nodejs-passport-strategy jamielinux
tomh nodejs-pedding jamielinux
jamielinux nodejs-pg patches
tomh nodejs-proxyquire jamielinux
jamielinux nodejs-q-io patches
jamielinux nodejs-range-parser patches
jamielinux nodejs-readdirp patches
jamielinux nodejs-reduce-component patches
jamielinux nodejs-resolve patches
patches nodejs-runforcover jamielinux
patches nodejs-sha jamielinux
jamielinux nodejs-should patches
jamielinux nodejs-showdown patches
tomh nodejs-simple-assert jamielinux
jamielinux nodejs-snockets patches
tomh nodejs-sqlite3 jamielinux
tomh nodejs-srs jamielinux
jamielinux nodejs-stylus patches
patches nodejs-tap jamielinux
tomh nodejs-tilelive jamielinux
tomh nodejs-tilelive-mapnik jamielinux
patches nodejs-traverse jamielinux
tomh nodejs-type-detect jamielinux
jamielinux nodejs-underscore patches
jamielinux nodejs-underscore-dot-logger patches
jamielinux nodejs-underscore-dot-string patches
jamielinux nodejs-url2 patches
jamielinux nodejs-utile patches
tomh nodejs-utils-merge jamielinux,tomh
jamielinux nodejs-vows patches
jamielinux nodejs-watchit patches
jamielinux nodejs-winston patches
jamielinux nodejs-with patches
tdawson nodejs-ws (none)
tomh nodejs-xml2js jamielinux
tomh nodejs-xmlbuilder jamielinux
tomh nodejs-zipfile jamielinux
jamielinux nodeunit patches
9 years, 2 months
[fpc] #311: Node.js guidelines update
by fedora-badges
#311: Node.js guidelines update
-----------------------------+------------------
Reporter: patches | Owner:
Type: enhancement | Status: new
Priority: minor | Milestone:
Component: Guideline Draft | Version:
Keywords: | Blocked By:
Blocking: |
-----------------------------+------------------
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#Correc...
(relevant section)]
[https://fedoraproject.org/w/index.php?title=User:Patches/PackagingDrafts/...
(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#BuildR...
(relevant section)]
[https://fedoraproject.org/w/index.php?title=User:Patches/PackagingDrafts/...
(diff #1)]
[https://fedoraproject.org/w/index.php?title=User:Patches/PackagingDrafts/...
(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#Exclus...
(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#Handli...
(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#Filter...
(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/...
(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/...
(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/...
(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. ;-)
--
Ticket URL: <https://fedorahosted.org/fpc/ticket/311>
fpc <https://fedoraproject.org/wiki/Packaging:Committee>
Fedora Packages Collection Task Tracking
9 years, 3 months
Node.js on EPEL7
by T.C. Hollingsworth
Hi, all!
The core runtime and its dependencies are now built for EPEL7, as is
nodejs-packaging.
The libraries and npm are next. If you own a package that is present
in EPEL6, expect me to bug you for permission to branch and build for
EPEL7 in the coming weeks. ;-)
-T.C.
9 years, 3 months