Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
d504fbf5e5 | ||
|
4299cf9076 | ||
|
72cb54ec6a | ||
|
945b0837ce | ||
|
9b4f2a673f | ||
|
7e46ce796e | ||
|
53bdaf5b75 | ||
|
aacfe2f12b | ||
|
5c3231171a | ||
|
1998d72b1a | ||
|
0cd3fed400 | ||
|
5079b893be | ||
|
abc52b1e7b | ||
|
2a08691cf3 | ||
|
53057fc311 | ||
|
3c8da6aa4e | ||
|
1e45404676 | ||
|
4847810bc1 | ||
|
e24e7dff07 |
143
README.md
143
README.md
@ -1,142 +1,3 @@
|
|||||||
# How to update Node.js in Fedora
|
|
||||||
|
|
||||||
## Determine the Node.js version
|
|
||||||
Monitor the [Node.js Blog](https://nodejs.org/en/blog/) to be notified of
|
|
||||||
available updates.
|
|
||||||
|
|
||||||
For simplicity and copy-and-paste of instructions below, set some variables
|
|
||||||
here:
|
|
||||||
|
|
||||||
```
|
|
||||||
NODEJS_MAJOR=12
|
|
||||||
NODEJS_VERSION=12.9.0
|
|
||||||
```
|
|
||||||
|
|
||||||
## Clone the Fedora package repository
|
|
||||||
These steps assume that you are a comaintainer of Node.js or a provenpackager
|
|
||||||
in Fedora.
|
|
||||||
|
|
||||||
```
|
|
||||||
fedpkg clone nodejs nodejs-fedora
|
|
||||||
```
|
|
||||||
|
|
||||||
Next, switch to the major version branch you are going to update. We'll use
|
|
||||||
Node.js 12.9.0 in this document. Adjust the versions appropriately for the
|
|
||||||
version you are working on.
|
|
||||||
|
|
||||||
```
|
|
||||||
pushd nodejs-fedora
|
|
||||||
fedpkg switch-branch $NODEJS_MAJOR
|
|
||||||
popd
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Clone the Fedora Module repository
|
|
||||||
|
|
||||||
```
|
|
||||||
fedpkg clone modules/nodejs nodejs-fedora-module
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Clone the upstream Node.js repository
|
|
||||||
```
|
|
||||||
git clone -o upstream git://github.com/nodejs/node.git nodejs-upstream
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Rebase the Fedora patches atop the latest release
|
|
||||||
|
|
||||||
```
|
|
||||||
pushd nodejs-upstream
|
|
||||||
git checkout -b fedora-v$NODEJS_VERSION v$NODEJS_VERSION
|
|
||||||
git am -3 ../nodejs-fedora/*.patch
|
|
||||||
```
|
|
||||||
|
|
||||||
If the patches do not apply cleanly, resolve the merges appropriately. Once
|
|
||||||
they have all been applied, output them again:
|
|
||||||
|
|
||||||
```
|
|
||||||
git format-patch -M --patience --full-index -o ../nodejs-fedora v$NODEJS_VERSION..HEAD
|
|
||||||
popd
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Update the Node.js tarball and specfile
|
|
||||||
|
|
||||||
```
|
|
||||||
pushd nodejs-fedora
|
|
||||||
./nodejs-tarball.sh $NODEJS_VERSION
|
|
||||||
```
|
|
||||||
|
|
||||||
Note that this command will also output all of the versions for the software
|
|
||||||
bundled with Node.js. You will need to edit `nodejs.spec` and update the
|
|
||||||
%global values near the top of that file to include the appropriate values
|
|
||||||
matching the dependencies. Make sure to also update the Node.js versions too!
|
|
||||||
|
|
||||||
Note that if libuv is updated, you need to ensure that the libuv in each
|
|
||||||
buildroot is of a sufficient version. If not, you may need to update that
|
|
||||||
package first and submit a buildroot override.
|
|
||||||
|
|
||||||
Update the RPM spec %changelog appropriately.
|
|
||||||
|
|
||||||
|
|
||||||
## (Preferred) Perform a scratch-build on at least one architecture
|
|
||||||
|
|
||||||
```
|
|
||||||
fedpkg scratch-build [--arch x86_64] --srpm
|
|
||||||
```
|
|
||||||
|
|
||||||
Verify that it built successfully.
|
|
||||||
|
|
||||||
|
|
||||||
## Push the changes up to Fedora
|
|
||||||
```
|
|
||||||
fedpkg commit -cs
|
|
||||||
fedpkg push
|
|
||||||
popd
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## (Optional) Build for Fedora releases
|
|
||||||
|
|
||||||
If this major version is the default for one or more Fedora releases, build it
|
|
||||||
for them. (Note: this step will go away in the future, once module default
|
|
||||||
streams are available in the non-modular buildroot.)
|
|
||||||
|
|
||||||
In the case of Node.js 12.x, this is the default version for Fedora 31 and 32.
|
|
||||||
|
|
||||||
```
|
|
||||||
pushd nodejs-fedora
|
|
||||||
fedpkg switch-branch [master|31]
|
|
||||||
git merge $NODEJS_MAJOR
|
|
||||||
fedpkg push
|
|
||||||
fedpkg build
|
|
||||||
popd
|
|
||||||
```
|
|
||||||
|
|
||||||
## Build module stream
|
|
||||||
|
|
||||||
```
|
|
||||||
pushd nodejs-fedora-module
|
|
||||||
fedpkg switch-branch $NODEJS_MAJOR
|
|
||||||
```
|
|
||||||
|
|
||||||
If the module has changed any package dependencies (such as added a dep on a
|
|
||||||
new shared library), you may need to modify nodejs.yaml here. If not, you can
|
|
||||||
simply run:
|
|
||||||
|
|
||||||
```
|
|
||||||
git commit --allow-empty -sm "Update to $NODEJS_VERSION"
|
|
||||||
fedpkg push
|
|
||||||
fedpkg module-build
|
|
||||||
popd
|
|
||||||
```
|
|
||||||
|
|
||||||
## Submit built packages to Bodhi
|
|
||||||
Follow the usual processes for stable/branched releases to submit builds for
|
|
||||||
testing.
|
|
||||||
|
|
||||||
|
|
||||||
# How to bundle nodejs libraries in Fedora
|
# How to bundle nodejs libraries in Fedora
|
||||||
|
|
||||||
The upstream Node.js stance on
|
The upstream Node.js stance on
|
||||||
@ -152,11 +13,11 @@ For more detailed packaging information go to the
|
|||||||
## Bundling Script
|
## Bundling Script
|
||||||
|
|
||||||
```
|
```
|
||||||
nodejs-packaging-bundler <npm_name> [version]
|
nodejs-packaging-bundler <npm_name> [version] [tarball]
|
||||||
```
|
```
|
||||||
|
|
||||||
nodejs-packaging-bundler is it's own package, nodejs-packaging-bundler and must be installed before use.
|
nodejs-packaging-bundler is it's own package, nodejs-packaging-bundler and must be installed before use.
|
||||||
nodejs-packaging-bundler gets the latest npm version available, if no version is given.
|
nodejs-packaging-bundler gets the latest npm version available, if no version is given, or uses the existing tarball if one is given. Using npm is preferred for to ease reproducibility. If a local tarball is required (e.g. because the package is missing from npm or its version is too old), please ensure to document how the tarball was created.
|
||||||
It produces four files and puts them in ${HOME}/rpmbuild/SOURCES
|
It produces four files and puts them in ${HOME}/rpmbuild/SOURCES
|
||||||
|
|
||||||
* <npm_name>-<version>.tgz - This is the tarball from npm.org
|
* <npm_name>-<version>.tgz - This is the tarball from npm.org
|
||||||
|
170
changelog
Normal file
170
changelog
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2022.10-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Oct 20 2022 Stephen Gallagher <sgallagh@redhat.com> - 2022.10-1
|
||||||
|
- Move native module building tools here from Node.js
|
||||||
|
- Add `Requires: /usr/bin/node`
|
||||||
|
|
||||||
|
* Tue Oct 18 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 2021.06-7
|
||||||
|
- NPM bundler: recursively bundle modules for all packages found
|
||||||
|
|
||||||
|
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2021.06-6
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sun May 01 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 2021.06-5
|
||||||
|
- NPM bundler: optionally use a local tarball instead of npm
|
||||||
|
|
||||||
|
* Thu Jan 20 2022 Stephen Gallagher <sgallagh@redhat.com> - 2021.06-4
|
||||||
|
- NPM bundler: also find namespaced bundled dependencies
|
||||||
|
|
||||||
|
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2021.06-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jun 22 2021 Stephen Gallagher <sgallagh@redhat.com> - 2021.06-2
|
||||||
|
- Fix hard-coded output directory in the bundler
|
||||||
|
|
||||||
|
* Wed Jun 02 2021 Stephen Gallagher <sgallagh@redhat.com> - 2021.06-1
|
||||||
|
- Update to 2021.06-1
|
||||||
|
- bundler: Handle archaic license metadata
|
||||||
|
- bundler: Warn about bundled dependencies with no license metadata
|
||||||
|
|
||||||
|
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2021.01-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jan 20 2021 Stephen Gallagher <sgallagh@redhat.com> - 2021.01-2
|
||||||
|
- nodejs-packaging-bundler improvements to handle uncommon characters
|
||||||
|
|
||||||
|
* Wed Jan 06 2021 Troy Dawson <tdawson@redhat.com> - 2021.01
|
||||||
|
- Add nodejs-packaging-bundler and update README.md
|
||||||
|
|
||||||
|
* Fri Sep 18 2020 Stephen Gallagher <sgallagh@redhat.com> - 2020.09-1
|
||||||
|
- Move to dist-git as the upstream
|
||||||
|
|
||||||
|
* Wed Sep 02 2020 Stephen Gallagher <sgallagh@redhat.com> - 25-1
|
||||||
|
- Fix incorrect bundled library detection for Requires
|
||||||
|
|
||||||
|
* Tue Sep 01 2020 Stephen Gallagher <sgallagh@redhat.com> - 24-1
|
||||||
|
- Check node_modules_prod for bundled dependencies
|
||||||
|
|
||||||
|
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 23-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jun 03 2020 Stephen Gallagher <sgallagh@redhat.com> - 23-3
|
||||||
|
- Drop Requires: nodejs(engine)
|
||||||
|
|
||||||
|
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 23-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Oct 31 2019 Tom Hughes <tom@compton.nu> - 23-1
|
||||||
|
- Ensure nodejs(engine) is required for packages with no dependencies
|
||||||
|
|
||||||
|
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 22-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jul 2 2019 Tom Hughes <tom@compton.nu> - 22-1
|
||||||
|
- Refactor nodejs.req in more idiomatic Python
|
||||||
|
- Treat only external dependency links as un-bundled
|
||||||
|
|
||||||
|
* Mon Jun 10 2019 Tom Hughes <tom@compton.nu> - 21-1
|
||||||
|
- Refactor nodejs.prov in more idiomatic Python
|
||||||
|
|
||||||
|
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 20-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Jan 5 2019 Tom Hughes <tom@compton.nu> - 20-1
|
||||||
|
- Fix handling of ^ dependencies for multiversion modules
|
||||||
|
|
||||||
|
* Thu Jan 3 2019 Tom Hughes <tom@compton.nu> - 18-1
|
||||||
|
- Handle =, >= and <= dependencies for multiversion modules
|
||||||
|
|
||||||
|
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 17-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu May 3 2018 Tom Hughes <tom@compton.nu> - 17-1
|
||||||
|
- Fix version comparators with a space after the operator
|
||||||
|
|
||||||
|
* Tue May 1 2018 Tom Hughes <tom@compton.nu> - 16-1
|
||||||
|
- Rewrite nodejs.req to better match npm versioning rules
|
||||||
|
- Add tests for nodejs.req and nodejs.prov
|
||||||
|
|
||||||
|
* Mon Apr 30 2018 Tom Hughes <tom@compton.nu> - 15-1
|
||||||
|
- Fix caret dependency ranges
|
||||||
|
|
||||||
|
* Thu Apr 12 2018 Tom Hughes <tom@compton.nu> - 14-1
|
||||||
|
- Only match top level modules for requires and provides generation
|
||||||
|
|
||||||
|
* Wed Feb 28 2018 Tom Hughes <tom@compton.nu> - 13-1
|
||||||
|
- Add %%nodejs_setversion macro
|
||||||
|
|
||||||
|
* Fri Feb 23 2018 Tom Hughes <tom@compton.nu> - 12-1
|
||||||
|
- Port to python 3
|
||||||
|
|
||||||
|
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 11-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sat Jan 13 2018 Tom Hughes <tom@compton.nu> - 11-1
|
||||||
|
- nodesjs.req: use boolean with for range dependencies
|
||||||
|
|
||||||
|
* Tue Sep 12 2017 Stephen Gallagher <sgallagh@redhat.com> - 10-1
|
||||||
|
- Release v10
|
||||||
|
- Automatically generate Provides for bundled npm dependencies
|
||||||
|
|
||||||
|
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 9-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Feb 21 2017 Tom Hughes <tom@compton.nu> - 9-3
|
||||||
|
- switch source URL to pagure
|
||||||
|
|
||||||
|
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 9-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Feb 2 2016 Tom Hughes <tom@compton.nu> - 9-1
|
||||||
|
- nodejs-fixdep: stop --move erroring on missing dependency types
|
||||||
|
|
||||||
|
* Sun Jan 31 2016 Tom Hughes <tom@compton.nu> - 8-1
|
||||||
|
- nodejs-fixdep: add --move option
|
||||||
|
- nodejs-symlink-deps: add --optional option
|
||||||
|
- req: generate suggests for optional dependencies
|
||||||
|
|
||||||
|
* Mon Nov 16 2015 Tom Hughes <tom@compton.nu> - 7-5
|
||||||
|
- nodejs-symlink-deps: handle caret in versions
|
||||||
|
|
||||||
|
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Mar 4 2015 Ville Skyttä <ville.skytta@iki.fi> - 7-3
|
||||||
|
- Install macros in %%{_rpmconfidir}/macros.d where available (#1074279)
|
||||||
|
|
||||||
|
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 7-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sun May 25 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 7-1
|
||||||
|
- nodejs-symlink-deps: fix regression preventing multiply versioned modules from
|
||||||
|
being symlinked correctly
|
||||||
|
|
||||||
|
* Sat May 24 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 6-1
|
||||||
|
- nodejs-fixdep: use real option parsing
|
||||||
|
- nodejs-fixdep: support modifying optionalDependencies and devDependencies
|
||||||
|
- req: support the caret operator
|
||||||
|
- nodejs-symlink-deps: add --force option
|
||||||
|
- nodejs-symlink-deps: add --build alias for --check
|
||||||
|
- nodejs-fixdep: support converting to caret dependencies
|
||||||
|
- nodejs-fixdep: support non-dictionary dependency properties
|
||||||
|
- multiver_modules: add nan
|
||||||
|
|
||||||
|
* Mon Jul 29 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 4-1
|
||||||
|
- handle cases where the symlink target exists gracefully
|
||||||
|
|
||||||
|
* Wed Jul 10 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 3-1
|
||||||
|
- dependencies and engines can be lists or strings too
|
||||||
|
- handle unversioned dependencies on multiply versioned modules correctly
|
||||||
|
(RHBZ#982798)
|
||||||
|
- restrict to compatible arches
|
||||||
|
|
||||||
|
* Fri Jun 21 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 2-1
|
||||||
|
- move multiple version list to /usr/share/node
|
||||||
|
- bump nodejs Requires to 0.10.12
|
||||||
|
- add Requires: redhat-rpm-config
|
||||||
|
|
||||||
|
* Thu Jun 13 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 1-1
|
||||||
|
- initial package
|
@ -1,16 +1,17 @@
|
|||||||
# nodejs binary
|
# nodejs binary
|
||||||
%__nodejs %{_bindir}/node
|
%__nodejs %{_bindir}/node
|
||||||
|
|
||||||
|
# currently installed nodejs version
|
||||||
|
%nodejs_version %(%{__nodejs} -v | sed s/v//)
|
||||||
|
%_nodejs_major_version %(echo %{nodejs_version} | sed 's#^\\([0-9]\\+\\).*#\\1#')
|
||||||
|
|
||||||
# nodejs library directory
|
# nodejs library directory
|
||||||
%nodejs_sitelib %{_prefix}/lib/node_modules
|
%nodejs_sitelib %{_prefix}/lib/node_modules_%{_nodejs_major_version}
|
||||||
|
|
||||||
#arch specific library directory
|
#arch specific library directory
|
||||||
#for future-proofing only; we don't do multilib
|
#for future-proofing only; we don't do multilib
|
||||||
%nodejs_sitearch %{nodejs_sitelib}
|
%nodejs_sitearch %{nodejs_sitelib}
|
||||||
|
|
||||||
# currently installed nodejs version
|
|
||||||
%nodejs_version %(%{__nodejs} -v | sed s/v//)
|
|
||||||
|
|
||||||
# symlink dependencies so `npm link` works
|
# symlink dependencies so `npm link` works
|
||||||
# this should be run in every module's %%install section
|
# this should be run in every module's %%install section
|
||||||
# pass --check to work in the current directory instead of the buildroot
|
# pass --check to work in the current directory instead of the buildroot
|
||||||
@ -25,7 +26,7 @@
|
|||||||
%nodejs_fixdep %{_rpmconfigdir}/nodejs-fixdep
|
%nodejs_fixdep %{_rpmconfigdir}/nodejs-fixdep
|
||||||
|
|
||||||
# patch package.json to set the package version
|
# patch package.json to set the package version
|
||||||
# e.g. `%%nodejs_setversion 1.2.3`
|
# e.g. `%%nodejs_setversion 1.2.3`
|
||||||
%nodejs_setversion %{_rpmconfigdir}/nodejs-setversion
|
%nodejs_setversion %{_rpmconfigdir}/nodejs-setversion
|
||||||
|
|
||||||
# macro to filter unwanted provides from Node.js binary native modules
|
# macro to filter unwanted provides from Node.js binary native modules
|
||||||
|
@ -2,13 +2,14 @@
|
|||||||
OUTPUT_DIR="$(rpm -E '%{_sourcedir}')"
|
OUTPUT_DIR="$(rpm -E '%{_sourcedir}')"
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage `basename $0` <npm_name> [version] " >&2
|
echo "Usage `basename $0` <npm_name> [version] [tarball]" >&2
|
||||||
echo >&2
|
echo >&2
|
||||||
echo " Given a npm module name, and optionally a version," >&2
|
echo " Given a npm module name, and optionally a version," >&2
|
||||||
echo " download the npm, the prod and dev dependencies," >&2
|
echo " download the npm, the prod and dev dependencies," >&2
|
||||||
echo " each in their own tarball." >&2
|
echo " each in their own tarball." >&2
|
||||||
echo " Also finds licenses prod dependencies." >&2
|
echo " Also finds licenses prod dependencies." >&2
|
||||||
echo " All three tarballs and the license list are copied to ${OUTPUT_DIR}" >&2
|
echo " All three tarballs and the license list are copied to ${OUTPUT_DIR}" >&2
|
||||||
|
echo " If a tarball is passed, use that instead of downloading from npm" >&2
|
||||||
echo >&2
|
echo >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
@ -38,6 +39,9 @@ fi
|
|||||||
|
|
||||||
if [ $# -ge 2 ]; then
|
if [ $# -ge 2 ]; then
|
||||||
VERSION="$2"
|
VERSION="$2"
|
||||||
|
if [ $# -ge 3 ]; then
|
||||||
|
TARBALL="$(realpath "$3")"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
VERSION="$(npm view ${PACKAGE} version)"
|
VERSION="$(npm view ${PACKAGE} version)"
|
||||||
fi
|
fi
|
||||||
@ -47,18 +51,33 @@ TMP_DIR=$(mktemp -d -t ci-XXXXXXXXXX)
|
|||||||
mkdir -p ${OUTPUT_DIR}
|
mkdir -p ${OUTPUT_DIR}
|
||||||
mkdir -p ${TMP_DIR}
|
mkdir -p ${TMP_DIR}
|
||||||
pushd ${TMP_DIR}
|
pushd ${TMP_DIR}
|
||||||
npm pack ${PACKAGE}
|
if [ -f "$TARBALL" ]; then
|
||||||
|
TARBALL_DIR=$(mktemp -d -t ci-XXXXXXXXXX)
|
||||||
|
pushd ${TARBALL_DIR}
|
||||||
|
tar xfz ${TARBALL} --strip-components 1
|
||||||
|
npm pack .
|
||||||
|
popd > /dev/null
|
||||||
|
mv ${TARBALL_DIR}/*.tgz .
|
||||||
|
rm -rf ${TARBALL_DIR}
|
||||||
|
else
|
||||||
|
npm pack ${PACKAGE}
|
||||||
|
fi
|
||||||
tar xfz *.tgz
|
tar xfz *.tgz
|
||||||
cd package
|
cd package
|
||||||
echo " Downloading prod dependencies"
|
for packagejson in $(find . -type d -name node_modules\* -prune -o -type f -name package.json -print); do
|
||||||
npm install --no-optional --only=prod
|
pushd $(dirname $packagejson)
|
||||||
if [ $? -ge 1 ] ; then
|
echo " Downloading prod dependencies"
|
||||||
echo " ERROR WILL ROBINSON"
|
npm install --omit=dev --omit=optional
|
||||||
|
if [ $? -ge 1 ] ; then
|
||||||
|
echo " ERROR WILL ROBINSON"
|
||||||
rm -rf node_modules
|
rm -rf node_modules
|
||||||
else
|
else
|
||||||
echo " Successful prod dependencies download"
|
echo " Successful prod dependencies download"
|
||||||
mv node_modules/ node_modules_prod
|
mv node_modules/ node_modules_prod
|
||||||
fi
|
fi
|
||||||
|
popd
|
||||||
|
done
|
||||||
|
|
||||||
echo "LICENSES IN BUNDLE:"
|
echo "LICENSES IN BUNDLE:"
|
||||||
find . -name "package.json" -exec jq '.license | strings' {} \; >> ${TMP_DIR}/${PACKAGE_SAFE}-${VERSION}-bundled-licenses.txt
|
find . -name "package.json" -exec jq '.license | strings' {} \; >> ${TMP_DIR}/${PACKAGE_SAFE}-${VERSION}-bundled-licenses.txt
|
||||||
find . -name "package.json" -exec jq '.license | objects | .type' {} \; >> ${TMP_DIR}/${PACKAGE_SAFE}-${VERSION}-bundled-licenses.txt 2>/dev/null
|
find . -name "package.json" -exec jq '.license | objects | .type' {} \; >> ${TMP_DIR}/${PACKAGE_SAFE}-${VERSION}-bundled-licenses.txt 2>/dev/null
|
||||||
@ -75,19 +94,23 @@ if [ -s ${TMP_DIR}/nolicense.txt ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
echo " Downloading dev dependencies"
|
for packagejson in $(find . -type d -name node_modules\* -prune -o -type f -name package.json -print); do
|
||||||
npm install --no-optional --only=dev
|
pushd $(dirname $packagejson)
|
||||||
if [ $? -ge 1 ] ; then
|
echo " Downloading dev dependencies"
|
||||||
echo " ERROR WILL ROBINSON"
|
npm install --omit=optional
|
||||||
else
|
if [ $? -ge 1 ] ; then
|
||||||
echo " Successful dev dependencies download"
|
echo " ERROR WILL ROBINSON"
|
||||||
|
else
|
||||||
|
echo " Successful dev dependencies download"
|
||||||
mv node_modules/ node_modules_dev
|
mv node_modules/ node_modules_dev
|
||||||
fi
|
fi
|
||||||
|
popd
|
||||||
|
done
|
||||||
if [ -d node_modules_prod ] ; then
|
if [ -d node_modules_prod ] ; then
|
||||||
tar cfz ../${PACKAGE_SAFE}-${VERSION}-nm-prod.tgz node_modules_prod
|
tar cfz ../${PACKAGE_SAFE}-${VERSION}-nm-prod.tgz $(find . -type d -name node_modules_prod)
|
||||||
fi
|
fi
|
||||||
if [ -d node_modules_dev ] ; then
|
if [ -d node_modules_dev ] ; then
|
||||||
tar cfz ../${PACKAGE_SAFE}-${VERSION}-nm-dev.tgz node_modules_dev
|
tar cfz ../${PACKAGE_SAFE}-${VERSION}-nm-dev.tgz $(find . -type d -name node_modules_dev)
|
||||||
fi
|
fi
|
||||||
cd ..
|
cd ..
|
||||||
cp -v ${PACKAGE_SAFE}-${VERSION}* "${OUTPUT_DIR}"
|
cp -v ${PACKAGE_SAFE}-${VERSION}* "${OUTPUT_DIR}"
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
|
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
|
||||||
|
|
||||||
Name: nodejs-packaging
|
Name: nodejs-packaging
|
||||||
Version: 2021.06
|
Version: 2023.10
|
||||||
Release: 3%{?dist}
|
Release: %autorelease
|
||||||
Summary: RPM Macros and Utilities for Node.js Packaging
|
Summary: RPM Macros and Utilities for Node.js Packaging
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
License: MIT
|
License: MIT
|
||||||
@ -19,13 +19,19 @@ Source0007: nodejs-symlink-deps
|
|||||||
Source0008: nodejs.attr
|
Source0008: nodejs.attr
|
||||||
Source0009: nodejs.prov
|
Source0009: nodejs.prov
|
||||||
Source0010: nodejs.req
|
Source0010: nodejs.req
|
||||||
Source0011: nodejs-packaging-bundler
|
Source0011: nodejs_abi.attr
|
||||||
|
Source0012: nodejs_abi.req
|
||||||
|
|
||||||
|
Source0111: nodejs-packaging-bundler
|
||||||
|
|
||||||
# Created with `tar cfz test.tar.gz test`
|
# Created with `tar cfz test.tar.gz test`
|
||||||
Source0101: test.tar.gz
|
Source0101: test.tar.gz
|
||||||
|
|
||||||
BuildRequires: python3
|
BuildRequires: python3
|
||||||
|
|
||||||
|
# Several of the macros require the /usr/bin/node command, so we need to
|
||||||
|
# ensure that it is present when packaging.
|
||||||
|
Requires: /usr/bin/node
|
||||||
Requires: redhat-rpm-config
|
Requires: redhat-rpm-config
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -46,10 +52,8 @@ It generates a bundled license file that gets the licenses in the runtime
|
|||||||
dependency tarball
|
dependency tarball
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
pushd %{_topdir}/BUILD
|
|
||||||
cp -da %{_sourcedir}/* .
|
cp -da %{_sourcedir}/* .
|
||||||
tar xvf test.tar.gz
|
tar xvf test.tar.gz
|
||||||
popd
|
|
||||||
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -59,8 +63,10 @@ popd
|
|||||||
%install
|
%install
|
||||||
install -Dpm0644 macros.nodejs %{buildroot}%{macrosdir}/macros.nodejs
|
install -Dpm0644 macros.nodejs %{buildroot}%{macrosdir}/macros.nodejs
|
||||||
install -Dpm0644 nodejs.attr %{buildroot}%{_rpmconfigdir}/fileattrs/nodejs.attr
|
install -Dpm0644 nodejs.attr %{buildroot}%{_rpmconfigdir}/fileattrs/nodejs.attr
|
||||||
|
install -Dpm0644 nodejs_abi.attr %{buildroot}%{_rpmconfigdir}/fileattrs/nodejs_abi.attr
|
||||||
install -pm0755 nodejs.prov %{buildroot}%{_rpmconfigdir}/nodejs.prov
|
install -pm0755 nodejs.prov %{buildroot}%{_rpmconfigdir}/nodejs.prov
|
||||||
install -pm0755 nodejs.req %{buildroot}%{_rpmconfigdir}/nodejs.req
|
install -pm0755 nodejs.req %{buildroot}%{_rpmconfigdir}/nodejs.req
|
||||||
|
install -pm0755 nodejs_abi.req %{buildroot}%{_rpmconfigdir}/nodejs_abi.req
|
||||||
install -pm0755 nodejs-symlink-deps %{buildroot}%{_rpmconfigdir}/nodejs-symlink-deps
|
install -pm0755 nodejs-symlink-deps %{buildroot}%{_rpmconfigdir}/nodejs-symlink-deps
|
||||||
install -pm0755 nodejs-fixdep %{buildroot}%{_rpmconfigdir}/nodejs-fixdep
|
install -pm0755 nodejs-fixdep %{buildroot}%{_rpmconfigdir}/nodejs-fixdep
|
||||||
install -pm0755 nodejs-setversion %{buildroot}%{_rpmconfigdir}/nodejs-setversion
|
install -pm0755 nodejs-setversion %{buildroot}%{_rpmconfigdir}/nodejs-setversion
|
||||||
@ -84,6 +90,25 @@ install -Dpm0755 nodejs-packaging-bundler %{buildroot}%{_bindir}/nodejs-packagin
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2022.10-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Oct 20 2022 Stephen Gallagher <sgallagh@redhat.com> - 2022.10-1
|
||||||
|
- Move native module building tools here from Node.js
|
||||||
|
- Add `Requires: /usr/bin/node`
|
||||||
|
|
||||||
|
* Tue Oct 18 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 2021.06-7
|
||||||
|
- NPM bundler: recursively bundle modules for all packages found
|
||||||
|
|
||||||
|
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2021.06-6
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||||
|
|
||||||
|
* Sun May 01 2022 Davide Cavalca <dcavalca@fedoraproject.org> - 2021.06-5
|
||||||
|
- NPM bundler: optionally use a local tarball instead of npm
|
||||||
|
|
||||||
|
* Thu Jan 20 2022 Stephen Gallagher <sgallagh@redhat.com> - 2021.06-4
|
||||||
|
- NPM bundler: also find namespaced bundled dependencies
|
||||||
|
|
||||||
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2021.06-3
|
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2021.06-3
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
%__nodejs_provides %{_rpmconfigdir}/nodejs.prov
|
%__nodejs_provides %{_rpmconfigdir}/nodejs.prov
|
||||||
%__nodejs_requires %{_rpmconfigdir}/nodejs.req
|
%__nodejs_requires %{_rpmconfigdir}/nodejs.req
|
||||||
%__nodejs_suggests %{_rpmconfigdir}/nodejs.req --optional
|
%__nodejs_suggests %{_rpmconfigdir}/nodejs.req --optional
|
||||||
%__nodejs_path ^/usr/lib(64)?/node_modules/[^/]+/package\\.json$
|
%__nodejs_path ^/usr/lib/node_modules\(_[[:digit:]]\+\)\{0,1\}/[^/]\+/package\.json$
|
||||||
|
@ -93,9 +93,9 @@ def generate_dependencies(module_path, module_dir_set=NODE_MODULES):
|
|||||||
else: # Invalid metadata path
|
else: # Invalid metadata path
|
||||||
raise ValueError("Invalid module path '%s'" % module_path)
|
raise ValueError("Invalid module path '%s'" % module_path)
|
||||||
|
|
||||||
for dir_path, subdir_list, __ in os.walk(root_dir):
|
for dir_path, subdir_list, file_list in os.walk(root_dir):
|
||||||
# Currently in node_modules (or similar), continue to subdirs
|
# We are only interested in directories that contain package.json
|
||||||
if os.path.basename(dir_path) in module_dir_set:
|
if "package.json" not in file_list:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Read and format metadata
|
# Read and format metadata
|
||||||
|
2
nodejs_abi.attr
Normal file
2
nodejs_abi.attr
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
%__nodejs_native_requires %{_rpmconfigdir}/nodejs_abi.req
|
||||||
|
%__nodejs_native_path ^/usr/lib.*/node_modules/.*\\.node$
|
8
nodejs_abi.req
Executable file
8
nodejs_abi.req
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get the ABI version
|
||||||
|
abi_version=$(/usr/bin/node -p process.versions.modules)
|
||||||
|
|
||||||
|
# Write out the Virtual Requires
|
||||||
|
echo "nodejs(abi) = ${abi_version}"
|
||||||
|
|
4
test/bundled_namespace/node_modules/@nmcli/test201/package.json
generated
vendored
Normal file
4
test/bundled_namespace/node_modules/@nmcli/test201/package.json
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "@nmcli/test201",
|
||||||
|
"version": "2.1.4"
|
||||||
|
}
|
4
test/bundled_namespace/node_modules/test200/package.json
generated
vendored
Normal file
4
test/bundled_namespace/node_modules/test200/package.json
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "test200",
|
||||||
|
"version": "1.3.5"
|
||||||
|
}
|
0
test/bundled_namespace/nodejs.prov.err.exp
Normal file
0
test/bundled_namespace/nodejs.prov.err.exp
Normal file
3
test/bundled_namespace/nodejs.prov.out.exp
Normal file
3
test/bundled_namespace/nodejs.prov.out.exp
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
bundled(nodejs-@nmcli/test201) = 2.1.4
|
||||||
|
bundled(nodejs-test200) = 1.3.5
|
||||||
|
npm(test) = 4.5.6
|
0
test/bundled_namespace/nodejs.req.err.exp
Normal file
0
test/bundled_namespace/nodejs.req.err.exp
Normal file
1
test/bundled_namespace/nodejs.req.out.exp
Normal file
1
test/bundled_namespace/nodejs.req.out.exp
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
11
test/bundled_namespace/package.json.in
Normal file
11
test/bundled_namespace/package.json.in
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "test",
|
||||||
|
"version": "4.5.6",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6 <10"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"test100": "^1.2.3",
|
||||||
|
"test101": ">=2.1"
|
||||||
|
}
|
||||||
|
}
|
2
test/run
2
test/run
@ -4,7 +4,7 @@ ln -sf nodejs.req nodejs_req.py
|
|||||||
"$(command -v python2 || echo :)" -m doctest nodejs_req.py || exit 1
|
"$(command -v python2 || echo :)" -m doctest nodejs_req.py || exit 1
|
||||||
"$(command -v python3 || echo :)" -m doctest nodejs_req.py || exit 1
|
"$(command -v python3 || echo :)" -m doctest nodejs_req.py || exit 1
|
||||||
|
|
||||||
for test in unbundled bundled
|
for test in unbundled bundled bundled_namespace
|
||||||
do
|
do
|
||||||
sed -e "s|//.*$||" < test/$test/package.json.in > test/$test/package.json
|
sed -e "s|//.*$||" < test/$test/package.json.in > test/$test/package.json
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user