/[packages]/updates/8/nodejs/current/SPECS/nodejs.spec
ViewVC logotype

Contents of /updates/8/nodejs/current/SPECS/nodejs.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1784131 - (show annotations) (download)
Thu Feb 24 13:14:38 2022 UTC (2 years, 1 month ago) by neoclust
File size: 19029 byte(s)
New version 14.19.0
1 # This package is synced with Fedora.
2
3 # This package is tricky since it requires a working nodejs to build nodejs
4 # This causes problems if a broken nodejs gets into the repo
5
6 # To build it from bootstrap
7 # build a version with bootstrap. Change nodejs-tarball.sh to not strip out
8 # the bundled libraries
9 #
10 # Once you have a working bootstrapped version, turn off bootstrap and
11 # build with a nodejs-tarball.sh that strips out the bundled directories
12
13 # bundle dependencies that are not available as Mageia modules
14 # %%{!?_with_bootstrap: %%global bootstrap 1}
15 # use bcond for building modules
16 %bcond_without bootstrap
17
18 %{?!_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}}
19
20 # increment both of these together
21 %define rel 1
22 %global v8_release 3
23
24 # == Node.js Version ==
25 # Note: Mageia should only ship LTS versions of Node.js (currently expected
26 # to be major versions with even numbers). The odd-numbered versions are new
27 # feature releases that are only supported for nine months, which is shorter
28 # than a Mageia release lifecycle.
29 %global nodejs_epoch 1
30 %global nodejs_major 14
31 %global nodejs_minor 19
32 %global nodejs_patch 0
33 %global nodejs_abi %{nodejs_major}.%{nodejs_minor}
34 %global nodejs_soversion 83
35 %global nodejs_version %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}
36 %global nodejs_release %{rel}
37
38 # == Bundled Dependency Versions ==
39 # v8 - from deps/v8/include/v8-version.h
40 # Epoch is set to ensure clean upgrades from the old v8 package
41 %global v8_epoch 2
42 %global v8_major 8
43 %global v8_minor 4
44 %global v8_build 371
45 %global v8_patch 23
46 # V8 presently breaks ABI at least every x.y release while never bumping SONAME
47 %global v8_abi %{v8_major}.%{v8_minor}
48 %global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
49
50 # c-ares - from deps/cares/include/ares_version.h
51 # https://github.com/nodejs/node/pull/9332
52 %global c_ares_major 1
53 %global c_ares_minor 18
54 %global c_ares_patch 1
55 %global c_ares_version %{c_ares_major}.%{c_ares_minor}.%{c_ares_patch}
56
57 # llhttp - from deps/llhttp/include/llhttp.h
58 %global llhttp_major 2
59 %global llhttp_minor 1
60 %global llhttp_patch 2
61 %global llhttp_version %{llhttp_major}.%{llhttp_minor}.%{llhttp_patch}
62
63 # libuv - from deps/uv/include/uv/version.h
64 %global libuv_major 1
65 %global libuv_minor 39
66 %global libuv_patch 0
67 %global libuv_version %{libuv_major}.%{libuv_minor}.%{libuv_patch}
68
69 # nghttp2 - from deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
70 %global nghttp2_major 1
71 %global nghttp2_minor 41
72 %global nghttp2_patch 0
73 %global nghttp2_version %{nghttp2_major}.%{nghttp2_minor}.%{nghttp2_patch}
74
75 # ICU - from tools/icu/current_ver.dep
76 %global icu_major 67
77 %global icu_minor 1
78 %global icu_version %{icu_major}.%{icu_minor}
79
80 # uvwasi - from deps/uvwasi/include/uvwasi.h
81 %global uvwasi_major 0
82 %global uvwasi_minor 0
83 %global uvwasi_patch 11
84 %global uvwasi_version %{uvwasi_major}.%{uvwasi_minor}.%{uvwasi_patch}
85
86 # histogram_c - assumed from timestamps
87 %global histogram_major 0
88 %global histogram_minor 9
89 %global histogram_patch 7
90 %global histogram_version %{histogram_major}.%{histogram_minor}.%{histogram_patch}
91
92
93 #%if 0%{?mageia} >= 7
94 #%global icu_flag system-icu
95 #%else
96 %global icu_flag small-icu
97 #%endif
98
99
100 # punycode - from lib/punycode.js
101 # Note: this was merged into the mainline since 0.6.x
102 # Note: this will be unmerged in an upcoming major release
103 %global punycode_major 2
104 %global punycode_minor 1
105 %global punycode_patch 0
106 %global punycode_version %{punycode_major}.%{punycode_minor}.%{punycode_patch}
107
108 # npm - from deps/npm/package.json
109 %global npm_epoch 1
110 %global npm_major 6
111 %global npm_minor 14
112 %global npm_patch 15
113 %global npm_version %{npm_major}.%{npm_minor}.%{npm_patch}
114
115 # In order to avoid needing to keep incrementing the release version for the
116 # main package forever, we will just construct one for npm that is guaranteed
117 # to increment safely. Changing this can only be done during an update when the
118 # base npm version number is increasing.
119 %global npm_release %{nodejs_epoch}.%{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}.%{nodejs_release}
120
121
122 Name: nodejs
123 Epoch: %{nodejs_epoch}
124 Version: %{nodejs_version}
125 %define subrel 1
126 Release: %mkrel %{nodejs_release}
127 Summary: JavaScript runtime
128 License: MIT and ASL 2.0 and ISC and BSD
129 Group: Development/Other
130 URL: https://nodejs.org/
131
132 # ExclusiveArch: %{nodejs_arches}
133
134 # nodejs bundles openssl, but we use the system version in Mageia
135 # because openssl contains prohibited code, we remove openssl completely from
136 # the tarball, using the script in Source100
137
138 Source0: node-v%{nodejs_version}-stripped.tar.xz
139 Source100: %{name}-tarball.sh
140
141 # The native module Requires generator remains in the nodejs SRPM, so it knows
142 # the nodejs and v8 versions. The remainder has migrated to the
143 # nodejs-packaging SRPM.
144 Source7: nodejs_native.attr
145
146 # Disable running gyp on bundled deps we don't use
147 Patch1: 0001-Disable-running-gyp-on-shared-deps.patch
148 Patch3: 0002-Install-both-binaries-and-use-libdir.patch
149
150 #
151 # Security patches
152 # Patches P100 -> ...
153 #
154
155 BuildRequires: python3-devel
156 BuildRequires: zlib-devel
157 BuildRequires: brotli-devel
158 BuildRequires: gcc >= 4.9.4
159 BuildRequires: gcc-c++ >= 4.9.4
160 BuildRequires: chrpath
161 BuildRequires: libatomic-devel
162
163 #%if ! 0%%{?bootstrap}
164 %if %{with bootstrap}
165 Provides: bundled(libuv) = %{libuv_version}
166 Provides: bundled(nghttp2) = %{nghttp2_version}
167 %else
168 BuildRequires: nodejs-packaging
169 BuildRequires: systemtap
170 BuildRequires: http-parser-devel >= 2.9.2
171 BuildRequires: libuv-devel >= %{libuv_version}
172 BuildRequires: pkgconfig(libnghttp2) >= %{nghttp2_version}
173 %endif
174
175 BuildRequires: libicu-devel >= 63.1
176 BuildRequires: openssl-devel >= 1.1.1c
177
178 # we need the system certificate store
179 Requires: ca-certificates
180
181 Requires: nodejs-libs = %mkrel %{epoch}:%{nodejs_version}-%{nodejs_release}
182
183
184 #we need ABI virtual provides where SONAMEs aren't enough/not present so deps
185 #break when binary compatibility is broken
186 Provides: nodejs(abi) = %{nodejs_abi}
187 Provides: nodejs(abi%{nodejs_major}) = %{nodejs_abi}
188 Provides: nodejs(v8-abi) = %{v8_abi}
189 Provides: nodejs(v8-abi%{v8_major}) = %{v8_abi}
190
191 #this corresponds to the "engine" requirement in package.json
192 Provides: nodejs(engine) = %{nodejs_version}
193
194 # Node.js currently has a conflict with the 'node' package in Mageia
195 # The ham-radio group has agreed to rename their binary for us, but
196 # in the meantime, we're setting an explicit Conflicts: here
197 Conflicts: node <= 0.3.2-12
198
199 # The punycode module was absorbed into the standard library in v0.6.
200 # It still exists as a seperate package for the benefit of users of older
201 # versions. Since we've never shipped anything older than v0.10 in Mageia,
202 # we don't need the seperate nodejs-punycode package, so we Provide it here so
203 # dependent packages don't need to override the dependency generator.
204 # See also: RHBZ#11511811
205 # UPDATE: punycode will be deprecated and so we should unbundle it in Node v8
206 # and use upstream module instead
207 # https://github.com/nodejs/node/commit/29e49fc286080215031a81effbd59eac092fff2f
208 Provides: nodejs-punycode = %{punycode_version}
209 Provides: npm(punycode) = %{punycode_version}
210
211
212 # Node.js has forked c-ares from upstream in an incompatible way, so we need
213 # to carry the bundled version internally.
214 # See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43fec85
215 Provides: bundled(c-ares) = %{c_ares_version}
216
217 # Node.js is closely tied to the version of v8 that is used with it. It makes
218 # sense to use the bundled version because upstream consistently breaks ABI
219 # even in point releases. Node.js upstream has now removed the ability to build
220 # against a shared system version entirely.
221 # See https://github.com/nodejs/node/commit/d726a177ed59c37cf5306983ed00ecd858cfbbef
222 Provides: bundled(v8) = %{v8_version}
223
224 # Node.js is bound to a specific version of ICU which may not match the OS
225 # We cannot pin the OS to this version of ICU because every update includes
226 # an ABI-break, so we'll use the bundled copy.
227 Provides: bundled(icu) = %{icu_version}
228
229 # Upstream added new dependencies, but so far they are not available in Fedora
230 # or there's no option to built it as a shared dependency, so we bundle them
231 Provides: bundled(uvwasi) = %{uvwasi_version}
232 Provides: bundled(histogram) = %{histogram_version}
233
234 # Make sure we keep NPM up to date when we update Node.js
235 Requires: npm = %mkrel %{npm_epoch}:%{npm_version}-%{npm_release}
236
237 %description
238 Node.js is a platform built on Chrome's JavaScript runtime
239 for easily building fast, scalable network applications.
240 Node.js uses an event-driven, non-blocking I/O model that
241 makes it lightweight and efficient, perfect for data-intensive
242 real-time applications that run across distributed devices.
243
244 %package devel
245 Summary: JavaScript runtime - development headers
246 Group: Development/Other
247 Requires: %{name} = %mkrel %{epoch}:%{nodejs_version}-%{nodejs_release}
248 Requires: openssl-devel
249 Requires: zlib-devel
250 Requires: nodejs-packaging
251
252 #%if ! 0%%{?bootstrap}
253 %if %{with bootstrap}
254 # deps are bundled
255 %else
256 Requires: http-parser-devel
257 Requires: libuv-devel
258 %endif
259
260 %description devel
261 Development headers for the Node.js JavaScript runtime.
262
263 %package libs
264 Summary: Node.js and v8 libraries
265
266 # Compatibility for obsolete v8 package
267 %if 0%{?__isa_bits} == 64
268 Provides: libv8.so.%{v8_major}()(64bit)
269 Provides: libv8_libbase.so.%{v8_major}()(64bit)
270 Provides: libv8_libplatform.so.%{v8_major}()(64bit)
271 %else # 32-bits
272 Provides: libv8.so.%{v8_major}
273 Provides: libv8_libbase.so.%{v8_major}
274 Provides: libv8_libplatform.so.%{v8_major}
275 %endif
276
277 Provides: v8 = %mkrel %{v8_epoch}:%{v8_version}-%{nodejs_release}
278 Provides: v8 = %mkrel %{v8_epoch}:%{v8_version}-%{nodejs_release}
279 Obsoletes: v8 < 1:6.7.17-10
280
281 %description libs
282 Libraries to support Node.js and provide stable v8 interfaces.
283
284 %package -n v8-devel
285 Summary: v8 - development headers
286 Epoch: %{v8_epoch}
287 Version: %mkrel %{v8_version}
288 Release: %mkrel %{v8_release}
289 Requires: %{name}-devel = %mkrel %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}
290
291 %description -n v8-devel
292 Development headers for the v8 runtime.
293
294 %package -n npm
295 Summary: Node.js Package Manager
296 Epoch: %{npm_epoch}
297 Version: %{npm_version}
298 Release: %mkrel %{npm_release}
299
300 # We used to ship npm separately, but it is so tightly integrated with Node.js
301 # (and expected to be present on all Node.js systems) that we ship it bundled
302 # now.
303 Obsoletes: npm < 0:3.5.4-6
304 Provides: npm = %{npm_epoch}:%{npm_version}
305 Requires: nodejs = %mkrel %{epoch}:%{nodejs_version}-%{nodejs_release}
306
307 # Do not add epoch to the virtual NPM provides or it will break
308 # the automatic dependency-generation script.
309 Provides: npm(npm) = %{npm_version}
310
311 %description -n npm
312 npm is a package manager for node.js. You can use it to install and publish
313 your node programs. It manages dependencies and does other cool stuff.
314
315 %package docs
316 Summary: Node.js API documentation
317 Group: Documentation
318 BuildArch: noarch
319
320 # We don't require that the main package be installed to
321 # use the docs, but if it is installed, make sure the
322 # version always matches
323 Conflicts: %{name} > %mkrel %{epoch}:%{nodejs_version}-%{nodejs_release}
324 Conflicts: %{name} < %mkrel %{epoch}:%{nodejs_version}-%{nodejs_release}
325
326 %description docs
327 The API documentation for the Node.js JavaScript runtime.
328
329
330 %prep
331 %autosetup -p1 -n node-v%{nodejs_version}
332
333 # remove bundled dependencies that we aren't building
334 rm -rf deps/zlib
335 rm -rf deps/brotli
336
337 %build
338
339 %ifarch s390 s390x %{arm} %ix86
340 # Decrease debuginfo verbosity to reduce memory consumption during final
341 # library linking
342 %global optflags %(echo %{optflags} | sed 's/-g /-g1 /')
343 %endif
344
345 export CC='%{__cc}'
346 export CXX='%{__cxx}'
347
348 # build with debugging symbols and add defines from libuv (#892601)
349 # Node's v8 breaks with GCC 6 because of incorrect usage of methods on
350 # NULL objects. We need to pass -fno-delete-null-pointer-checks
351 export CFLAGS='%{optflags} \
352 -D_LARGEFILE_SOURCE \
353 -D_FILE_OFFSET_BITS=64 \
354 -DZLIB_CONST \
355 -fno-delete-null-pointer-checks'
356 export CXXFLAGS='%{optflags} \
357 -D_LARGEFILE_SOURCE \
358 -D_FILE_OFFSET_BITS=64 \
359 -DZLIB_CONST \
360 -fno-delete-null-pointer-checks'
361
362 # Explicit new lines in C(XX)FLAGS can break naive build scripts
363 export CFLAGS="$(echo ${CFLAGS} | tr '\n\\' ' ')"
364 export CXXFLAGS="$(echo ${CXXFLAGS} | tr '\n\\' ' ')"
365 export LDFLAGS="%{build_ldflags}"
366
367 #%if ! 0%%{?bootstrap}
368 %if %{with bootstrap}
369 %{__python3} configure.py --prefix=%{_prefix} \
370 --shared \
371 --libdir=%{_lib} \
372 --shared-openssl \
373 --shared-zlib \
374 --shared-brotli \
375 --without-dtrace \
376 --with-intl=small-icu \
377 --debug-nghttp2 \
378 --openssl-use-def-ca-store
379 %else
380 %{__python3} configure.py --prefix=%{_prefix} \
381 --shared \
382 --libdir=%{_lib} \
383 --shared-openssl \
384 --shared-zlib \
385 --shared-brotli \
386 --shared-libuv \
387 --shared-nghttp2 \
388 --with-dtrace \
389 --with-intl=%{icu_flag} \
390 --debug-nghttp2 \
391 --openssl-use-def-ca-store
392 %endif
393
394 %__make BUILDTYPE=Release %{?_smp_mflags}
395
396
397 %install
398 ./tools/install.py install %{buildroot} %{_prefix}
399
400 # Set the binary permissions properly
401 chmod 0755 %{buildroot}/%{_bindir}/node
402 chrpath --delete %{buildroot}%{_bindir}/node
403
404 # Install library symlink
405 ln -s %{_libdir}/libnode.so.%{nodejs_soversion} %{buildroot}%{_libdir}/libnode.so
406
407 # Install v8 compatibility symlinks
408 for header in %{buildroot}%{_includedir}/node/libplatform %{buildroot}%{_includedir}/node/v8*.h; do
409 header=$(basename ${header})
410 ln -s %{_includedir}/node/${header} %{buildroot}%{_includedir}/${header}
411 done
412 for soname in libv8 libv8_libbase libv8_libplatform; do
413 ln -s %{_libdir}/libnode.so.%{nodejs_soversion} %{buildroot}%{_libdir}/${soname}.so
414 ln -s %{_libdir}/libnode.so.%{nodejs_soversion} %{buildroot}%{_libdir}/${soname}.so.%{v8_major}
415 done
416
417 # own the sitelib directory
418 mkdir -p %{buildroot}%{_prefix}/lib/node_modules
419
420 # ensure Requires are added to every native module that match the Provides from
421 # the nodejs build in the buildroot
422 install -Dpm0644 %{SOURCE7} %{buildroot}%{_rpmconfigdir}/fileattrs/nodejs_native.attr
423 cat << EOF > %{buildroot}%{_rpmconfigdir}/nodejs_native.req
424 #!/bin/sh
425 echo 'nodejs(abi%{nodejs_major}) >= %nodejs_abi'
426 echo 'nodejs(v8-abi%{v8_major}) >= %v8_abi'
427 EOF
428 chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req
429
430 #install documentation
431 mkdir -p %{buildroot}%{_pkgdocdir}/html
432 cp -pr doc/* %{buildroot}%{_pkgdocdir}/html
433 rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1
434
435 #node-gyp needs common.gypi too
436 mkdir -p %{buildroot}%{_datadir}/node
437 cp -p common.gypi %{buildroot}%{_datadir}/node
438
439 # Install the GDB init tool into the documentation directory
440 mv %{buildroot}/%{_datadir}/doc/node/gdbinit %{buildroot}/%{_pkgdocdir}/gdbinit
441
442 # install NPM docs to mandir
443 mkdir -p %{buildroot}%{_mandir} \
444 %{buildroot}%{_pkgdocdir}/npm
445
446 cp -pr deps/npm/man/* %{buildroot}%{_mandir}/
447 rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/man
448 ln -sf %{_mandir} %{buildroot}%{_prefix}/lib/node_modules/npm/man
449
450
451 # Install Gatsby HTML documentation to %{_pkgdocdir}
452 cp -pr deps/npm/docs %{buildroot}%{_pkgdocdir}/npm/
453 rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/docs
454
455 ln -sf %{_pkgdocdir}/npm %{buildroot}%{_prefix}/lib/node_modules/npm/docs
456
457 # Node tries to install some python files into a documentation directory
458 # (and not the proper one). Remove them for now until we figure out what to
459 # do with them.
460 rm -f %{buildroot}/%{_defaultdocdir}/node/lldb_commands.py \
461 %{buildroot}/%{_defaultdocdir}/node/lldbinit
462
463 # Some NPM bundled deps are executable but should not be. This causes
464 # unnecessary automatic dependencies to be added. Make them not executable.
465 # Skip the npm bin directory or the npm binary will not work.
466 find %{buildroot}%{_prefix}/lib/node_modules/npm \
467 -not -path "%{buildroot}%{_prefix}/lib/node_modules/npm/bin/*" \
468 -executable -type f \
469 -exec chmod -x {} \;
470
471 # The above command is a little overzealous. Add a few permissions back.
472 chmod 0755 %{buildroot}%{_prefix}/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin/node-gyp
473 chmod 0755 %{buildroot}%{_prefix}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
474
475
476 %check
477 # Fail the build if the versions don't match
478 LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.node, '%{nodejs_version}')"
479 LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.v8.replace(/-node\.\d+$/, ''), '%{v8_version}')"
480 LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.ares.replace(/-DEV$/, ''), '%{c_ares_version}')"
481
482 # Ensure we have punycode and that the version matches
483 LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node -e "require(\"assert\").equal(require(\"punycode\").version, '%{punycode_version}')"
484
485 # Ensure we have npm and that the version matches
486 NODE_PATH=%{buildroot}%{_prefix}/lib/node_modules:%{buildroot}%{_prefix}/lib/node_modules/npm/node_modules LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node -e "require(\"assert\").equal(require(\"npm\").version, '%{npm_version}')"
487
488
489 %pretrans -n npm -p <lua>
490 -- Remove all of the symlinks from the bundled npm node_modules directory
491 -- This scriptlet can be removed in Mageia 31
492 base_path = "%{_prefix}/lib/node_modules/npm/node_modules/"
493 d_st = posix.stat(base_path)
494 if d_st then
495 for f in posix.files(base_path) do
496 path = base_path..f
497 st = posix.stat(path)
498 if st and st.type == "link" then
499 os.remove(path)
500 end
501 end
502 end
503
504 %files
505 %{_bindir}/node
506 %dir %{_prefix}/lib/node_modules
507 %dir %{_datadir}/node
508 %dir %{_datadir}/systemtap
509 %dir %{_datadir}/systemtap/tapset
510 %{_datadir}/systemtap/tapset/node.stp
511
512 #%if ! 0%%{?bootstrap}
513 %if %{with bootstrap}
514 # no dtrace
515 %else
516 %dir %{_usr}/lib/dtrace
517 %{_usr}/lib/dtrace/node.d
518 %endif
519
520 %{_rpmconfigdir}/fileattrs/nodejs_native.attr
521 %{_rpmconfigdir}/nodejs_native.req
522 %license LICENSE
523 %doc AUTHORS CHANGELOG.md GOVERNANCE.md README.md
524 %doc %{_mandir}/man1/node.1*
525
526
527 %files devel
528 %{_includedir}/node
529 %{_libdir}/libnode.so
530 %{_datadir}/node/common.gypi
531 %{_pkgdocdir}/gdbinit
532
533
534 %files libs
535 %{_libdir}/libnode.so.%{nodejs_soversion}
536 %{_libdir}/libv8.so.%{v8_major}
537 %{_libdir}/libv8_libbase.so.%{v8_major}
538 %{_libdir}/libv8_libplatform.so.%{v8_major}
539
540
541 %files -n v8-devel
542 %{_includedir}/libplatform
543 %{_includedir}/v8*.h
544 %{_libdir}/libv8.so
545 %{_libdir}/libv8_libbase.so
546 %{_libdir}/libv8_libplatform.so
547
548
549 %files -n npm
550 %{_bindir}/npm
551 %{_bindir}/npx
552 %{_prefix}/lib/node_modules/npm
553 %ghost %{_sysconfdir}/npmrc
554 %ghost %{_sysconfdir}/npmignore
555 %doc %{_mandir}/man*/npm*
556 %doc %{_mandir}/man*/npx*
557 %doc %{_mandir}/man7/semver.7*
558 %doc %{_mandir}/man5/*.5.xz
559 %doc %{_mandir}/man7/*.7.xz
560
561 %files docs
562 %dir %{_pkgdocdir}
563 %{_pkgdocdir}/html
564 %{_pkgdocdir}/npm/docs

  ViewVC Help
Powered by ViewVC 1.1.30