mirror of
https://src.fedoraproject.org/rpms/nodejs18.git
synced 2024-11-24 17:44:23 +00:00
Add README for packagers
Signed-off-by: Stephen Gallagher <sgallagh@redhat.com>
This commit is contained in:
parent
7fac550d3e
commit
00573643f6
1 changed files with 125 additions and 0 deletions
125
README-packaging.md
Normal file
125
README-packaging.md
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
# Packaging Node.js
|
||||||
|
These instructions are applicable as of 2023-04-27, following the
|
||||||
|
implementation of https://www.fedoraproject.org/wiki/Changes/NodejsRepackaging
|
||||||
|
|
||||||
|
|
||||||
|
## Basic steps to update to a new release
|
||||||
|
|
||||||
|
1. Run the following command to automatically update the specfile and SOURCES:
|
||||||
|
|
||||||
|
```
|
||||||
|
./nodejs-sources 20.1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
This will download the tarball from nodejs.org, strip out the bundled
|
||||||
|
OpenSSL code, extract the versions of the bundled sources, pull down the
|
||||||
|
ICU data files and update the spec file with this new information, also
|
||||||
|
pushing the rebuilt tarball into the Fedora lookaside cache.
|
||||||
|
|
||||||
|
2. Verify that the patches still apply by running `fedpkg prep`. If they do
|
||||||
|
not, follow the steps under "Resolving Patch Conflicts".
|
||||||
|
|
||||||
|
3. (Preferred) Perform a scratch-build on at least one architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
fedpkg scratch-build [--arch x86_64] --srpm
|
||||||
|
```
|
||||||
|
|
||||||
|
Verify that it built successfully.
|
||||||
|
|
||||||
|
4. Commit the code locally and push it to all active Fedora branches.
|
||||||
|
|
||||||
|
```
|
||||||
|
git commit -sam "Update to version 20.1.0"
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
git push origin rawhide rawhide:f38 rawhide:f37
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Build for all active Fedora branches
|
||||||
|
|
||||||
|
```
|
||||||
|
for i in f37 f38 rawhide ; do fedpkg --release $i build --nowait ; done
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Basic steps to update the packaging
|
||||||
|
|
||||||
|
1. Make all changes in the `packaging/nodejs.spec.j2` file.
|
||||||
|
|
||||||
|
2. When finished, run
|
||||||
|
|
||||||
|
```
|
||||||
|
./nodejs-sources 20.1.0 --no-push
|
||||||
|
```
|
||||||
|
|
||||||
|
which will regenerate the nodejs20.spec file with the appropriate values.
|
||||||
|
The `--no-push` argument is used to avoid uploading a new tarball to the
|
||||||
|
lookaside cache.[^1]
|
||||||
|
|
||||||
|
3. (Preferred) Perform a scratch-build on at least one architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
fedpkg scratch-build [--arch x86_64] --srpm
|
||||||
|
```
|
||||||
|
|
||||||
|
Verify that it built successfully.
|
||||||
|
|
||||||
|
4. Commit the code locally and push it to all active Fedora branches.
|
||||||
|
|
||||||
|
```
|
||||||
|
git commit -sam "Update to version 20.1.0"
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
git push origin rawhide rawhide:f38 rawhide:f37
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Build for all active Fedora branches
|
||||||
|
|
||||||
|
```
|
||||||
|
for i in f37 f38 rawhide ; do fedpkg --release $i build --nowait ; done
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Resolving Patch Conflicts
|
||||||
|
|
||||||
|
1. Clone the upstream Node.js repository
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone -o upstream git://github.com/nodejs/node.git nodejs-upstream
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Rebase the Fedora patches atop the latest release
|
||||||
|
|
||||||
|
```
|
||||||
|
pushd nodejs-upstream
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
git checkout -b fedora-v20 v20.1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
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 ../nodejs20 v20.1.0..HEAD
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
popd
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Resume the basic process.
|
||||||
|
|
||||||
|
|
||||||
|
[^1]: Due to non-deterministic behavior, stripping out the OpenSSL bits from
|
||||||
|
the upstream tarball and recompressing it will result in a different
|
||||||
|
checksum hash. This isn't harmful, but wastes bandwidth and storage space,
|
||||||
|
so use `--no-push` when possible.
|
Loading…
Reference in a new issue