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
|
||||
|
||||
The upstream Node.js stance on
|
||||
@ -152,11 +13,11 @@ For more detailed packaging information go to the
|
||||
## 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 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
|
||||
|
||||
* <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 %{_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_sitelib %{_prefix}/lib/node_modules
|
||||
%nodejs_sitelib %{_prefix}/lib/node_modules_%{_nodejs_major_version}
|
||||
|
||||
#arch specific library directory
|
||||
#for future-proofing only; we don't do multilib
|
||||
%nodejs_sitearch %{nodejs_sitelib}
|
||||
|
||||
# currently installed nodejs version
|
||||
%nodejs_version %(%{__nodejs} -v | sed s/v//)
|
||||
|
||||
# symlink dependencies so `npm link` works
|
||||
# this should be run in every module's %%install section
|
||||
# pass --check to work in the current directory instead of the buildroot
|
||||
@ -25,7 +26,7 @@
|
||||
%nodejs_fixdep %{_rpmconfigdir}/nodejs-fixdep
|
||||
|
||||
# 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
|
||||
|
||||
# macro to filter unwanted provides from Node.js binary native modules
|
||||
|
@ -2,13 +2,14 @@
|
||||
OUTPUT_DIR="$(rpm -E '%{_sourcedir}')"
|
||||
|
||||
usage() {
|
||||
echo "Usage `basename $0` <npm_name> [version] " >&2
|
||||
echo "Usage `basename $0` <npm_name> [version] [tarball]" >&2
|
||||
echo >&2
|
||||
echo " Given a npm module name, and optionally a version," >&2
|
||||
echo " download the npm, the prod and dev dependencies," >&2
|
||||
echo " each in their own tarball." >&2
|
||||
echo " Also finds licenses prod dependencies." >&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
|
||||
exit 1
|
||||
}
|
||||
@ -38,6 +39,9 @@ fi
|
||||
|
||||
if [ $# -ge 2 ]; then
|
||||
VERSION="$2"
|
||||
if [ $# -ge 3 ]; then
|
||||
TARBALL="$(realpath "$3")"
|
||||
fi
|
||||
else
|
||||
VERSION="$(npm view ${PACKAGE} version)"
|
||||
fi
|
||||
@ -47,18 +51,33 @@ TMP_DIR=$(mktemp -d -t ci-XXXXXXXXXX)
|
||||
mkdir -p ${OUTPUT_DIR}
|
||||
mkdir -p ${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
|
||||
cd package
|
||||
echo " Downloading prod dependencies"
|
||||
npm install --no-optional --only=prod
|
||||
if [ $? -ge 1 ] ; then
|
||||
echo " ERROR WILL ROBINSON"
|
||||
for packagejson in $(find . -type d -name node_modules\* -prune -o -type f -name package.json -print); do
|
||||
pushd $(dirname $packagejson)
|
||||
echo " Downloading prod dependencies"
|
||||
npm install --omit=dev --omit=optional
|
||||
if [ $? -ge 1 ] ; then
|
||||
echo " ERROR WILL ROBINSON"
|
||||
rm -rf node_modules
|
||||
else
|
||||
echo " Successful prod dependencies download"
|
||||
else
|
||||
echo " Successful prod dependencies download"
|
||||
mv node_modules/ node_modules_prod
|
||||
fi
|
||||
fi
|
||||
popd
|
||||
done
|
||||
|
||||
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 | 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
|
||||
|
||||
|
||||
echo " Downloading dev dependencies"
|
||||
npm install --no-optional --only=dev
|
||||
if [ $? -ge 1 ] ; then
|
||||
echo " ERROR WILL ROBINSON"
|
||||
else
|
||||
echo " Successful dev dependencies download"
|
||||
for packagejson in $(find . -type d -name node_modules\* -prune -o -type f -name package.json -print); do
|
||||
pushd $(dirname $packagejson)
|
||||
echo " Downloading dev dependencies"
|
||||
npm install --omit=optional
|
||||
if [ $? -ge 1 ] ; then
|
||||
echo " ERROR WILL ROBINSON"
|
||||
else
|
||||
echo " Successful dev dependencies download"
|
||||
mv node_modules/ node_modules_dev
|
||||
fi
|
||||
fi
|
||||
popd
|
||||
done
|
||||
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
|
||||
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
|
||||
cd ..
|
||||
cp -v ${PACKAGE_SAFE}-${VERSION}* "${OUTPUT_DIR}"
|
||||
|
@ -1,8 +1,8 @@
|
||||
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
|
||||
|
||||
Name: nodejs-packaging
|
||||
Version: 2021.06
|
||||
Release: 3%{?dist}
|
||||
Version: 2023.10
|
||||
Release: %autorelease
|
||||
Summary: RPM Macros and Utilities for Node.js Packaging
|
||||
BuildArch: noarch
|
||||
License: MIT
|
||||
@ -19,13 +19,19 @@ Source0007: nodejs-symlink-deps
|
||||
Source0008: nodejs.attr
|
||||
Source0009: nodejs.prov
|
||||
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`
|
||||
Source0101: test.tar.gz
|
||||
|
||||
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
|
||||
|
||||
%description
|
||||
@ -46,10 +52,8 @@ It generates a bundled license file that gets the licenses in the runtime
|
||||
dependency tarball
|
||||
|
||||
%prep
|
||||
pushd %{_topdir}/BUILD
|
||||
cp -da %{_sourcedir}/* .
|
||||
tar xvf test.tar.gz
|
||||
popd
|
||||
|
||||
|
||||
%build
|
||||
@ -59,8 +63,10 @@ popd
|
||||
%install
|
||||
install -Dpm0644 macros.nodejs %{buildroot}%{macrosdir}/macros.nodejs
|
||||
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.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-fixdep %{buildroot}%{_rpmconfigdir}/nodejs-fixdep
|
||||
install -pm0755 nodejs-setversion %{buildroot}%{_rpmconfigdir}/nodejs-setversion
|
||||
@ -84,6 +90,25 @@ install -Dpm0755 nodejs-packaging-bundler %{buildroot}%{_bindir}/nodejs-packagin
|
||||
|
||||
|
||||
%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
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
%__nodejs_provides %{_rpmconfigdir}/nodejs.prov
|
||||
%__nodejs_requires %{_rpmconfigdir}/nodejs.req
|
||||
%__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
|
||||
raise ValueError("Invalid module path '%s'" % module_path)
|
||||
|
||||
for dir_path, subdir_list, __ in os.walk(root_dir):
|
||||
# Currently in node_modules (or similar), continue to subdirs
|
||||
if os.path.basename(dir_path) in module_dir_set:
|
||||
for dir_path, subdir_list, file_list in os.walk(root_dir):
|
||||
# We are only interested in directories that contain package.json
|
||||
if "package.json" not in file_list:
|
||||
continue
|
||||
|
||||
# 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 python3 || echo :)" -m doctest nodejs_req.py || exit 1
|
||||
|
||||
for test in unbundled bundled
|
||||
for test in unbundled bundled bundled_namespace
|
||||
do
|
||||
sed -e "s|//.*$||" < test/$test/package.json.in > test/$test/package.json
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user