Sync from SUSE:ALP:Source:Standard:1.0 nodejs-common revision 0e585c1641d614246f0484de5f289618

This commit is contained in:
Adrian Schröter 2023-08-07 12:49:11 +02:00
commit 463213cb9d
5 changed files with 446 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

101
node.c Normal file
View File

@ -0,0 +1,101 @@
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#ifdef HAVE_LIBALTERNATIVES_H
#include <libalternatives.h>
#endif
const unsigned min_version = 4;
const unsigned max_version = 42;
const char *default_version = "-default";
const char * const supported_execs[] = {
"node",
"npm",
"npx",
NULL
};
static void __attribute__((noreturn)) printInvalidVersion(const char *version) {
fprintf(stderr, "Invalid node version: %s\n", version);
exit(-2);
}
int main(int argc, char *argv[])
{
if (argc < 1) {
fprintf(stderr, "Invalid parameters ... no basename?\n");
return 128;
}
/* Verify we are called with supported name */
const char *program_name = basename(argv[0]);
const char * const * bn = supported_execs;
for (; *bn!=NULL; bn++) {
if (strcmp(*bn, program_name) == 0)
break;
}
if (*bn == NULL) {
fprintf(stderr, "Invalid program called: '%s'\n", program_name);
return 129;
}
/* Verify we have one of probably supported versions */
const char *version = getenv("NODE_VERSION");
char *endptr = 0;
if (version == NULL || strcmp(version, default_version) == 0)
version = default_version;
unsigned long node_ver = strtoul(version, &endptr, 10);
if (*endptr == '\0' &&
( node_ver < min_version || node_ver > max_version))
{
printInvalidVersion(version);
}
else if (*endptr != '\0' && version != default_version)
{
printInvalidVersion(version);
}
#ifdef HAVE_LIBALTERNATIVES_H
// if we want default version and not using update-alternatives
if (version == default_version)
{
// should not return, and if it does, it probably means
// we should fall back to using node-default fallback.
libalts_exec_default(argv);
// some programs parse stderr, so let's be quiet here.
//fputs("Falling back to using -default symlink.\n", stderr);
}
#endif
/* Generate our program path and check that we can execute it */
char *program_path, *program;
if (asprintf(&program, "%s%s", *bn, version) == -1 ||
asprintf(&program_path, "/usr/bin/%s", program) == -1) {
fputs("Memory allocation error... terminating\n", stderr);
return 130;
}
if (access(program_path, X_OK) != 0) {
perror(program_path);
return -1;
}
argv[0] = program;
execv(program_path, argv);
perror("execv failed");
return -1;
}

135
nodejs-common.changes Normal file
View File

@ -0,0 +1,135 @@
-------------------------------------------------------------------
Thu Jun 15 12:37:25 UTC 2023 - Adam Majer <adam.majer@suse.de>
- Rework default versions and include specifics for ALP
- Default version for SLE-12 is set to be 16 - no further updates
expected since W&S module is not supported in LTSS
-------------------------------------------------------------------
Tue Apr 25 02:11:10 UTC 2023 - jsrain@suse.com
- Use NodeJS 18 as default for ALP
-------------------------------------------------------------------
Wed Apr 19 13:38:14 UTC 2023 - Adam Majer <adam.majer@suse.de>
- Use NodeJS 20 as default for TW
-------------------------------------------------------------------
Fri Oct 21 10:09:34 UTC 2022 - Adam Majer <adam.majer@suse.de>
- Use NodeJS 19 as default for TW
-------------------------------------------------------------------
Sun Jul 31 15:51:38 UTC 2022 - Adam Majer <adam.majer@suse.de>
- Use NodeJS 18 as default for TW and for SLE15 SP5
-------------------------------------------------------------------
Wed Jan 12 09:17:01 UTC 2022 - Adam Majer <adam.majer@suse.de>
- Use NodeJS 17 as default for TW
-------------------------------------------------------------------
Mon Jun 21 05:01:32 UTC 2021 - Andreas Schneider <asn@cryptomilk.org>
- Allow building for Fedora in the OBS
-------------------------------------------------------------------
Fri Jun 18 19:29:10 UTC 2021 - Adam Majer <adam.majer@suse.de>
- Some applications do not like warnings or notices on stderr
as they use it for other things. So make nodejs-common quiet
unless we have a fatal error.
-------------------------------------------------------------------
Thu Jun 10 10:27:58 UTC 2021 - Adam Majer <adam.majer@suse.de>
- Use libalternatives on TW by default
-------------------------------------------------------------------
Mon May 31 16:32:18 UTC 2021 - Adam Majer <adam.majer@suse.de>
- Add libalternatives support
-------------------------------------------------------------------
Thu May 6 12:50:02 UTC 2021 - Adam Majer <adam.majer@suse.de>
- Enable 32-bit arches again on latest node for TW
- Set TW to nodejs16
- Set nodejs14 for SP3 as default and nodejs16 for SP4
-------------------------------------------------------------------
Thu Apr 29 09:33:20 UTC 2021 - Dominique Leuenberger <dimstar@opensuse.org>
- Provide nodejs(engine) by nodejs-common: nodejs-packaging happens
to read the engines parameter from the json files and it's a
nice-to-have if OBS can find out what the default nodejs engine
to use.
-------------------------------------------------------------------
Thu Apr 15 12:35:21 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Use older nodejs (10) for %{arm}
-------------------------------------------------------------------
Tue Mar 9 17:29:00 UTC 2021 - Adam Majer <adam.majer@suse.de>
- Provide nodejs and npm and nodejs-devel by the appropriate
defaults package
-------------------------------------------------------------------
Tue Jan 19 11:33:38 UTC 2021 - Adam Majer <adam.majer@suse.de>
- set nodejs14 as default for sle15-sp3+
- set nodejs15 as default for TW
-------------------------------------------------------------------
Tue Jun 9 10:35:06 UTC 2020 - Adam Majer <adam.majer@suse.de>
- Add nodejs-default, npm-default and nodejs-devel-default subpackages
to provide latest, best supported nodejs for current architecture
and codestream.
nodejs-default - nodejs runtime only
npm-default - if you need npm + nodejs
nodejs-devel-default - if you need npm + nodejs + compile modules
-------------------------------------------------------------------
Mon Dec 30 13:49:36 UTC 2019 - Adam Majer <adam.majer@suse.de>
- Bump max supported version to 42 to account for automatically
built master branch called nodejs42
-------------------------------------------------------------------
Mon Oct 28 11:13:23 UTC 2019 - Adam Majer <adam.majer@suse.de>
- Remove extra -g from compiler command-line
-------------------------------------------------------------------
Fri Feb 1 15:03:12 UTC 2019 - adam.majer@suse.de
- Change the shell script to regular executable
-------------------------------------------------------------------
Fri Jun 22 12:31:05 UTC 2018 - dcassany@suse.de
- Add LICENSE text to the package
-------------------------------------------------------------------
Wed Aug 2 14:29:04 UTC 2017 - adam.majer@suse.de
- NodeJS 8.2.0 adds support for `npx` binary. Add conditional
support to our wrapper
- Print a helpful message if wrapper cannot find target executable
- Wrapper only executes from /usr/bin and not PATH
-------------------------------------------------------------------
Tue Jul 18 10:20:06 UTC 2017 - adam.majer@suse.de
- Use MIT license so we don't have to ship the license text.
-------------------------------------------------------------------
Fri Jul 7 13:09:29 UTC 2017 - adam.majer@suse.de
- Initial release.

166
nodejs-common.spec Normal file
View File

@ -0,0 +1,166 @@
#
# spec file for package nodejs-common
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
###########################################################
#
# WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
#
# This spec file is generated from a template hosted at
# https://github.com/AdamMajer/nodejs-packaging
#
###########################################################
%define NODEJS_LTS 18
%define NODEJS_CURRENT 20
%if 0%{?suse_version} > 1500 || 0%{?fedora_version}
%bcond_without libalternatives
%else
%bcond_with libalternatives
%endif
# SLE-12 variants
%if 0%{?suse_version} < 1500
%define default_node_ver 16
%endif
%if 0%{?suse_version} == 1500
# SLE-15 variants, variation based on SP
%if 0%{?sle_version} >= 150000 && 0%{?sle_version} < 150200
%define default_node_ver 10
%endif
%if 0%{?sle_version} >= 150200 && 0%{?sle_version} < 150300
%define default_node_ver 12
%endif
%if 0%{?sle_version} >= 150300 && 0%{?sle_version} < 150400
%define default_node_ver 14
%endif
%if 0%{?sle_version} >= 150400 && 0%{?sle_version} < 150500
%define default_node_ver 16
%endif
%if 0%{?sle_version} >= 150500 && 0%{?sle_version} < 150600
%define default_node_ver 18
%endif
%if 0%{?sle_version} >= 150600 && 0%{?sle_version} < 150700
%define default_node_ver 20
%endif
# SLE-15 variants
%endif
%if 0%{?suse_version} == 1600
# ALP variants
%define default_node_ver 20
%endif
# TW
%if 0%{?suse_version} >= 1699
%define default_node_ver %NODEJS_CURRENT
%endif
Name: nodejs-common
Version: 6.0
Release: 0
Summary: Common files for the NodeJS ecosystem
License: MIT
Group: Development/Languages/NodeJS
URL: https://github.com/AdamMajer/nodejs-packaging
Source1: node.c
Source2: LICENSE
Requires: nodejs
Conflicts: nodejs4 < 4.8.4
Conflicts: nodejs6 < 6.11.1
Conflicts: nodejs7 < 7.10.1
Conflicts: nodejs8 < 8.1.4
BuildRequires: gcc
%if %{with libalternatives}
BuildRequires: libalternatives-devel
%define libalternatives_cflags -DHAVE_LIBALTERNATIVES_H
%define libalternatives_lflags -lalternatives
%endif
%description
Common NodeJS files that allow recursive invocation of Node executable
while retaining the same codestream version.
%package -n nodejs-default
Summary: Default version of nodejs
Group: Development/Languages/NodeJS
Requires: nodejs%{default_node_ver}
Requires: nodejs-common
Provides: nodejs = %default_node_ver
Provides: nodejs(engine) = %default_node_ver
%description -n nodejs-default
Depends on the most current and recommended version of nodejs for
the current architecture and codestream.
%package -n npm-default
Summary: Default version of npm
Group: Development/Languages/NodeJS
Requires: nodejs-default
Requires: npm%{default_node_ver}
Provides: npm = %default_node_ver
%description -n npm-default
Depends on the npm version associated with the current default
version of nodejs for the current architecture and codestream.
%package -n nodejs-devel-default
Summary: Headers for default version of nodejs
Group: Development/Languages/NodeJS
Requires: nodejs%{default_node_ver}-devel
Requires: npm-default
Provides: nodejs-devel = %default_node_ver
%description -n nodejs-devel-default
Depends on the most current and up-to-date version of nodejs for
the current architecture and codestream.
%prep
%build
cp %{S:2} .
gcc ${RPM_OPT_FLAGS} %?libalternatives_cflags -o node %{S:1} %?libalternatives_lflags
echo "Default Node version: " %{default_node_ver}
%install
install -D -m 0755 node %{buildroot}%{_bindir}/node
ln node %{buildroot}%{_bindir}/npm
ln node %{buildroot}%{_bindir}/npx
%files
%license LICENSE
%{_bindir}/node
%{_bindir}/npm
%{_bindir}/npx
%files -n nodejs-default
%files -n npm-default
%files -n nodejs-devel-default
%changelog