From 1d8a4beba5572cab98ce20b0efd9d40d65f70763 Mon Sep 17 00:00:00 2001 From: Sergei Fedosov Date: Thu, 18 Jul 2019 14:20:46 +0300 Subject: [PATCH] Initial commit --- README.md | 1 + centrifugo/centrifugo.config.json | 1 + centrifugo/centrifugo.logrotate | 7 + centrifugo/centrifugo.nofiles.conf | 1 + centrifugo/centrifugo.service | 27 + centrifugo/centrifugo.spec | 109 ++++ centrifugo/centrifugo.sysconfig | 3 + csnappy/csnappy.spec | 124 ++++ kafkacat/kafkacat.spec | 54 ++ kafkacat/librdkafka.spec | 168 ++++++ nodejs/nodejs.spec | 635 +++++++++++++++++++++ nodejs/nodejs_glibc_thread_local_fix.patch | 50 ++ nodejs/nodejs_native.attr | 2 + 13 files changed, 1182 insertions(+) create mode 100644 README.md create mode 100644 centrifugo/centrifugo.config.json create mode 100644 centrifugo/centrifugo.logrotate create mode 100644 centrifugo/centrifugo.nofiles.conf create mode 100644 centrifugo/centrifugo.service create mode 100644 centrifugo/centrifugo.spec create mode 100644 centrifugo/centrifugo.sysconfig create mode 100644 csnappy/csnappy.spec create mode 100644 kafkacat/kafkacat.spec create mode 100644 kafkacat/librdkafka.spec create mode 100644 nodejs/nodejs.spec create mode 100644 nodejs/nodejs_glibc_thread_local_fix.patch create mode 100644 nodejs/nodejs_native.attr diff --git a/README.md b/README.md new file mode 100644 index 0000000..4b762dc --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +RPM Spec files to build packages for CentOS \ No newline at end of file diff --git a/centrifugo/centrifugo.config.json b/centrifugo/centrifugo.config.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/centrifugo/centrifugo.config.json @@ -0,0 +1 @@ +{} diff --git a/centrifugo/centrifugo.logrotate b/centrifugo/centrifugo.logrotate new file mode 100644 index 0000000..32522be --- /dev/null +++ b/centrifugo/centrifugo.logrotate @@ -0,0 +1,7 @@ +/var/log/centrifugo/*log { + copytruncate + daily + rotate 7 + compress + missingok +} \ No newline at end of file diff --git a/centrifugo/centrifugo.nofiles.conf b/centrifugo/centrifugo.nofiles.conf new file mode 100644 index 0000000..dba7014 --- /dev/null +++ b/centrifugo/centrifugo.nofiles.conf @@ -0,0 +1 @@ +centrifugo - nofile 65536 \ No newline at end of file diff --git a/centrifugo/centrifugo.service b/centrifugo/centrifugo.service new file mode 100644 index 0000000..b437ff5 --- /dev/null +++ b/centrifugo/centrifugo.service @@ -0,0 +1,27 @@ +[Unit] +Description=Centrifugo real-time messaging server +Documentation=https://github.com/centrifugal/centrifugo +# start once the network and logging subsystems available +After=network.target syslog.target + +[Service] +User=centrifugo +Group=centrifugo +LimitNOFILE=65536 +Environment="CONFIG=/etc/centrifugo/config.json" +EnvironmentFile=/etc/sysconfig/centrifugo +ExecStartPre=/usr/sbin/centrifugo checkconfig -c $CONFIG +ExecStart=/usr/sbin/centrifugo -c $CONFIG $CENTRIFUGO_OPTS +ExecReload=/bin/kill -HUP $MAINPID +ExecStop=/bin/kill -SIGTERM $MAINPID +TimeoutStopSec=10 +KillMode=control-group +RestartSec=1 +Restart=on-failure +StandardOutput=syslog +StandardError=syslog +SyslogIdentifier=centrifugo + +[Install] +WantedBy=multi-user.target +Alias=centrifugo.service diff --git a/centrifugo/centrifugo.spec b/centrifugo/centrifugo.spec new file mode 100644 index 0000000..0d087d6 --- /dev/null +++ b/centrifugo/centrifugo.spec @@ -0,0 +1,109 @@ +Name: centrifugo +Version: 2.2.2 +Release: 1%{?dist} +Summary: Centrifugo is a real-time messaging server. +License: MIT +URL: https://github.com/centrifugal/centrifugo +Group: Apps/sys + +BuildRequires: ca-certificates +# we have incomplete git 2.14.1 in c7 repo, so we have to pin previous version here +BuildRequires: git-core +BuildRequires: golang +BuildRequires: mr-rpm-macros +BuildRequires: systemd-devel +BuildRequires: systemd-units + +Source0: https://github.com/centrifugal/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz +Source1: %{name}.config.json +Source2: %{name}.service +Source3: %{name}.logrotate +Source4: %{name}.nofiles.conf +Source5: %{name}.sysconfig + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot + +# go stuff +%define debug_package %{nil} +%define _enable_debug_packages 0 + +%define gobuild(o:) go build -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n')" -a -v %{?debug:-x} %{?**}; +%define import_path github.com/centrifugal/%{name} + + +%description +%{name} is a language-agnostic real-time messaging server. Language-agnostic +means that it does not matter which programming language your application uses +on frontend or backend sides – %{name} can work in conjunction with any. + + +%prep +%setup -qc +%{__install} -d src/$(dirname %{import_path}) +%{__mv} %{name}-%{version} src/%{import_path} +cd src/%{import_path} + + +%build +export GOPATH=$(pwd) +cd src/%{import_path} +export PATH=$(pwd):$PATH +go build + + +%install +%{__install} -Dpm 0755 src/%{import_path}/%{name} %{buildroot}%{_sbindir}/%{name} +%{__install} -Dpm 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/%{name}/config.json +%{__install} -Dpm 0644 %{SOURCE2} %{buildroot}%{_unitdir}/%{name}.service +%{__install} -Dpm 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/%{name} +%{__install} -Dpm 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/security/limits.d/%{name}.conf +%{__install} -Dpm 0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/sysconfig/%{name} +%{__mkdir_p} %{buildroot}%{_sharedstatedir}/%{name} +%{__mkdir_p} %{buildroot}%{_localstatedir}/log/%{name} +%_fixperms %{buildroot}/* + + +%pre +getent passwd %{name} > /dev/null || \ +useradd --system -U -M %{name} -s /bin/false -d %{_sharedstatedir}/%{name} + + +%post +echo "Executing systemd post-install tasks" +%if 0%{?systemd_post:1} +%systemd_post %{name}.service +%else +/bin/systemctl daemon-reload >/dev/null 2>&1 || : +%endif + + +%preun +echo "Executing systemd pre-uninstall tasks" +%if 0%{?systemd_preun:1} +%systemd_preun %{name}.service +%else +if [ $1 -eq 0 ] ; then + # Package removal, not upgrade + /bin/systemctl --no-reload disable %{name}.service > /dev/null 2>&1 || : + /bin/systemctl stop %{name}.service > /dev/null 2>&1 || : +fi +%endif + + +%files +%defattr(-,root,root,-) +%{_sbindir}/%{name} +%config %{_sysconfdir}/%{name}/config.json +%config %{_unitdir}/%{name}.service +%config %{_sysconfdir}/logrotate.d/%{name} +%config %{_sysconfdir}/security/limits.d/%{name}.conf +%config %{_sysconfdir}/sysconfig/%{name} +%dir %attr(0755, %{name}, %{name}) %{_localstatedir}/log/%{name} +%doc src/github.com/centrifugal/centrifugo/README.md +%doc src/github.com/centrifugal/centrifugo/CHANGELOG.md +%doc src/github.com/centrifugal/centrifugo/LICENSE + + +%changelog +* Wed Jul 17 2019 Sergei Fedosov +- Initial version diff --git a/centrifugo/centrifugo.sysconfig b/centrifugo/centrifugo.sysconfig new file mode 100644 index 0000000..968af2f --- /dev/null +++ b/centrifugo/centrifugo.sysconfig @@ -0,0 +1,3 @@ +# Additional command line args +# see output of centrifugo --help for details +CENTRIFUGO_OPTS="--log_file /var/log/centrifugo/centrifugo.log" diff --git a/csnappy/csnappy.spec b/csnappy/csnappy.spec new file mode 100644 index 0000000..ed97d69 --- /dev/null +++ b/csnappy/csnappy.spec @@ -0,0 +1,124 @@ +# Run valgrind test +# valgrind is available only on selected arches +%ifarch %{valgrind_arches} +%bcond_without csnappy_enables_valgrind +%else +%bcond_with csnappy_enables_valgrind +%endif + +%global commit b47693024402fa8760edcd4fed71131cbd5ac175 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +Name: csnappy +Version: 0 +Release: 13.20181121git%{shortcommit}%{?dist} +Summary: Snappy compression library ported to C +License: BSD +URL: https://github.com/zeevt/%{name} +Source0: %{url}/archive/%{commit}/%{name}-%{commit}.tar.gz + +BuildRequires: gcc +BuildRequires: make +BuildRequires: sed +# Tests: +%if %{with csnappy_enables_valgrind} +BuildRequires: coreutils +BuildRequires: diffutils +BuildRequires: valgrind +%endif + +%description +This is an ANSI C port of Google's Snappy library. Snappy is a compression +library designed for speed rather than compression ratios. + +%package devel +Summary: Development files for the %{name} library +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: glibc-headers%{?_isa} + +%description devel +Header files for developing applications that use the %{name} library. + + +%prep +%setup -qn %{name}-%{commit} + +# Extract BSD license and copyright notices, bug #1152057 +! test -e LICENSE +for F in $(< Makefile sed -e '/libcsnappy.so:/ s/.*:// p' -e 'd'); do + < $F sed -e '/Copyright/,/\*\//p' -e 'd' +done > LICENSE +test -s LICENSE + +%build +make %{?_smp_mflags} 'OPT_FLAGS=%{optflags}' 'LDFLAGS=%{?__global_ldflags}' \ + lib%{name}.so cl_tester + +%if %{with csnappy_enables_valgrind} +%check +make %{?_smp_mflags} 'OPT_FLAGS=%{optflags}' 'LDFLAGS=%{?__global_ldflags}' lib%{name}.so test +%endif + +%install +make install 'DESTDIR=%{buildroot}' 'LIBDIR=%{_libdir}' + +%ldconfig_scriptlets + +%files +%{!?_licensedir:%global license %%doc} +%license LICENSE +%doc README TODO +%{_libdir}/lib%{name}.so + +%files devel +%{_includedir}/%{name}.h + + +%changelog +* Wed Nov 21 2018 Petr Pisar - 0-13.20181121gitb476930 +- Rebased to b47693024402fa8760edcd4fed71131cbd5ac175 + +* Thu Jul 12 2018 Fedora Release Engineering - 0-12.20180322git51802a8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed May 23 2018 David Abdurachmanov - 0-11.20180322git51802a8 +- Switch to %%{valgrind_arches} + +* Thu Mar 22 2018 Petr Pisar - 0-10.20180322git51802a8 +- Rebase to 51802a869db97326c803dcabdb6e6ed0797a715a + +* Wed Feb 07 2018 Fedora Release Engineering - 0-9.20150729gitd7bc683 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Aug 02 2017 Fedora Release Engineering - 0-8.20150729gitd7bc683 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0-7.20150729gitd7bc683 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 0-6.20150729gitd7bc683 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Feb 03 2016 Fedora Release Engineering - 0-5.20150729gitd7bc683 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jul 30 2015 Petr Pisar - 0-4.20150729gitd7bc683 +- Rebase to d7bc683b6eaba225f483621485035a8044634376 + +* Wed Jul 29 2015 Marcin Juszkiewicz - 0-3.20150331gitcf029fa +- Fix build on aarch64 (upstream issue https://github.com/zeevt/csnappy/issues/23 got note) + +* Wed Jun 17 2015 Fedora Release Engineering - 0-2.20150331gitcf029fa +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun May 3 2015 Peter Robinson 0-1.20150331gitcf029fa +- Rebase to 20150331 +- Use same make flags for tests +- Use %%license + +* Fri Jan 16 2015 Dan Horák - 0-1.20141010gitb43c183 +- valgrind is available only on selected arches + +* Mon Oct 13 2014 Petr Pisar - 0-0.20141010gitb43c183 +- b43c183fdad31be0500a5f2ae022a54a66cb1a3d snapshot + diff --git a/kafkacat/kafkacat.spec b/kafkacat/kafkacat.spec new file mode 100644 index 0000000..54310a8 --- /dev/null +++ b/kafkacat/kafkacat.spec @@ -0,0 +1,54 @@ +Name: kafkacat +Version: 1.3.1 +Release: 1%{?dist} +Summary: Generic non-JVM producer and consumer for Apache Kafka +License: BSD-2-Clause +URL: https://github.com/edenhill/kafkacat +Source: %{version}.tar.gz + +BuildRequires: zlib-devel +BuildRequires: librdkafka-devel +BuildRequires: yajl-devel + +%description +kafkacat is a generic non-JVM producer and consumer for Apache Kafka 0.8, +think of it as a netcat for Kafka. + +In producer mode kafkacat reads messages from stdin, delimited with a +configurable delimeter (-D, defaults to newline), and produces them to the +provided Kafka cluster (-b), topic (-t) and partition (-p). + +In consumer mode kafkacat reads messages from a topic and partition and prints +them to stdout using the configured message delimiter. + +kafkacat also features a Metadata list (-L) mode to display the current state +of the Kafka cluster and its topics and partitions. + +kafkacat is fast and lightweight; statically linked it is no more than 150Kb. + +%prep +%setup -q + +%configure + +%build +make + +%install +rm -rf %{buildroot} +DESTDIR=%{buildroot} make install + +%clean +rm -rf %{buildroot} + +%files +%license LICENSE +%doc README.md +%{_bindir}/kafkacat + +%changelog +* Wed Jun 03 2015 Magnus Edenhill 1.2.0-1 +- Relase 1.2.0 + +* Fri Dec 19 2014 François Saint-Jacques 1.1.0-1 +- Initial RPM package diff --git a/kafkacat/librdkafka.spec b/kafkacat/librdkafka.spec new file mode 100644 index 0000000..61289b2 --- /dev/null +++ b/kafkacat/librdkafka.spec @@ -0,0 +1,168 @@ +# remirepo/fedora spec file for librdkafka +# +# Copyright (c) 2015-2017 Remi Collet +# License: CC-BY-SA +# http://creativecommons.org/licenses/by-sa/4.0/ +# +# Please, preserve the changelog entries +# +%global libname librdkafka +%global gh_commit 44242a464c43e09c685f47a7f3dca2963b10e2a9 +%global gh_short %(c=%{gh_commit}; echo ${c:0:7}) +%global gh_owner edenhill +%global gh_project %{libname} + +%global upstream_version 0.11.5 +#global upstream_prever RC1 + +Name: %{libname} +Version: %{upstream_version}%{?upstream_prever:~%{upstream_prever}} +Release: 1%{?dist} +Group: System Environment/Libraries +Summary: Apache Kafka C/C++ client library + +# librdkafka is BSD-2, pycrc is MIT, snappy/crc32 are BSD-3 +License: BSD and MIT +URL: https://github.com/%{gh_owner}/%{gh_project} +Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{gh_project}-%{upstream_version}%{?upstream_prever}-%{gh_short}.tar.gz + +BuildRequires: openssl-devel +BuildRequires: cyrus-sasl-devel +BuildRequires: zlib-devel +BuildRequires: libstdc++-devel +BuildRequires: lz4-devel +BuildRequires: gcc-c++ +BuildRequires: python + + +%description +librdkafka is a C library implementation of the Apache Kafka protocol, +containing both Producer and Consumer support. + +It was designed with message delivery reliability and high performance +in mind, current figures exceed 800000 msgs/second for the producer +and 3 million msgs/second for the consumer. + + +%package devel +Group: Development/Libraries +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + + +%prep +%setup -qn %{gh_project}-%{gh_commit} +# no backup to avoid old version inclusion + +mkdir rpmdocs +cp -pr examples rpmdocs/examples + + +%build +%configure \ + --enable-lz4 \ + --enable-ssl \ + --enable-sasl + +make %{?_smp_mflags} + + +%install +make install DESTDIR=%{buildroot} + +rm %{buildroot}%{_libdir}/*.a +rm %{buildroot}%{_libdir}/pkgconfig/*static.pc + + +%if 0%{?fedora} < 28 && 0%{?rhel} < 8 +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig +%endif + + +%files +%{!?_licensedir:%global license %%doc} +%license LICENSE* +%{_libdir}/%{libname}.so.1 +%{_libdir}/%{libname}++.so.1 + +%files devel +%doc *md +%doc rpmdocs/examples +%{_includedir}/%{libname}/ +%{_libdir}/%{libname}.so +%{_libdir}/%{libname}++.so +%{_libdir}/pkgconfig/rdkafka.pc +%{_libdir}/pkgconfig/rdkafka++.pc + + +### NOTICE: available in EPEL-7 so not in remi + +%changelog +* Thu Jul 19 2018 Remi Collet - 0.11.5-1 +- update to 0.11.5 + +* Thu Mar 29 2018 Remi Collet - 1.11.4-1 +- update to 1.11.4 + +* Wed Dec 6 2017 Remi Collet - 0.11.3-1 +- update to 0.11.3 + +* Wed Oct 18 2017 Remi Collet - 0.11.1-1 +- update to 0.11.1 + +* Thu Oct 5 2017 Remi Collet - 0.11.1~RC1-1 +- update to 0.11.1-RC1 + +* Tue Aug 1 2017 Remi Collet - 0.11.0-1 +- update to 0.11.0 + +* Thu Jun 29 2017 Remi Collet - 0.11.0~RC2-1 +- update to 0.11.0-RC2 + +* Thu Jun 29 2017 Remi Collet - 0.11.0~RC1-1 +- update to 0.11.0-RC1 +- open https://github.com/edenhill/librdkafka/issues/1290 + broken build on 32-bit architecture +- add upstream for i686 build + +* Fri Apr 21 2017 Remi Collet - 0.9.5-1 +- update to 0.9.5 (no change since RC2) + +* Wed Apr 12 2017 Remi Collet - 0.9.5~RC2-1 +- update to 0.9.5-RC2 + +* Mon Apr 10 2017 Remi Collet - 0.9.5~RC1-1 +- update to 0.9.5-RC1 + +* Mon Feb 27 2017 Remi Collet - 0.9.4-1 +- update to 0.9.4 + +* Fri Feb 24 2017 Remi Collet - 0.9.4-0.3.RC2 +- update to 0.9.4RC2 for test + +* Fri Feb 17 2017 Remi Collet - 0.9.4-0.2.RC1 +- enable lz4 + +* Thu Feb 16 2017 Remi Collet - 0.9.4-0.1.RC1 +- update to 0.9.4RC1 for test + +* Mon Jan 23 2017 Remi Collet - 0.9.3-1 +- update to 0.9.3 + +* Wed Nov 9 2016 Remi Collet - 0.9.2-1 +- update to 0.9.2 + +* Sun May 29 2016 Remi Collet - 0.9.1-1 +- update to 0.9.1 + +* Sat Jan 9 2016 Remi Collet - 0.9.0-1 +- update to 0.9.0 +- add upstream patch for old glibc (RHEL-5) + +* Thu May 14 2015 Remi Collet - 0.8.6-1 +- initial package diff --git a/nodejs/nodejs.spec b/nodejs/nodejs.spec new file mode 100644 index 0000000..453e0fc --- /dev/null +++ b/nodejs/nodejs.spec @@ -0,0 +1,635 @@ +%global gcc_ver 7.3.1 +%global gcc_prefix /usr/lib/gcc/x86_64-redhat-linux/%{gcc_ver} + +%global with_debug 1 + +# ARM builds currently break on the Debug builds, so we'll just +# build the standard runtime until that gets sorted out. +%ifarch %{arm} aarch64 %{power64} +%global with_debug 0 +%endif + +# == Node.js Version == +%global nodejs_major 12 +%global nodejs_minor 4 +%global nodejs_patch 0 +%global nodejs_abi %{nodejs_major}.%{nodejs_minor} +%global nodejs_version %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch} + +# == Bundled Dependency Versions == +# v8 - from deps/v8/include/v8-version.h +%global v8_major 7 +%global v8_minor 4 +%global v8_build 288 +%global v8_patch 27 +# V8 presently breaks ABI at least every x.y release while never bumping SONAME +%global v8_abi %{v8_major}.%{v8_minor} +%global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch} + +# c-ares - from deps/cares/include/ares_version.h +%global c_ares_major 1 +%global c_ares_minor 15 +%global c_ares_patch 0 +%global c_ares_version %{c_ares_major}.%{c_ares_minor}.%{c_ares_patch} + +# http-parser - from deps/http-parser/http_parser.h +%global http_parser_major 2 +%global http_parser_minor 8 +%global http_parser_patch 0 +%global http_parser_version %{http_parser_major}.%{http_parser_minor}.%{http_parser_patch} + +# punycode - from lib/punycode.js +# Note: this was merged into the mainline since 0.6.x +%global punycode_major 2 +%global punycode_minor 1 +%global punycode_patch 0 +%global punycode_version %{punycode_major}.%{punycode_minor}.%{punycode_patch} + +%global _pkgdocdir /usr/lib/node_modules/npm +%global _prefix /usr + +Name: nodejs +Version: %{nodejs_version} +Release: 2%{?dist} +Summary: JavaScript runtime +License: MIT and ASL 2.0 and ISC and BSD +Group: Development/Languages +URL: http://nodejs.org/ + +#ExclusiveArch: %{nodejs_arches} +ExclusiveArch: x86_64 + +# nodejs bundles openssl, but we use the system version in Fedora +# because openssl contains prohibited code, we remove openssl completely from +# the tarball, using the script in Source100 +#Source0: node-v%{version}.tar.gz +Source0: https://nodejs.org/dist/v%{version}/node-v%{version}.tar.xz + +# The native module Requires generator remains in the nodejs SRPM, so it knows +# the nodejs and v8 versions. The remainder has migrated to the +# nodejs-packaging SRPM. +Source7: nodejs_native.attr + +# yes in c6 we really have this version +%if 0%{?rhel} == 6 +BuildRequires: libstdc++7-devel = %{gcc_ver} +BuildRequires: gcc7-c++ = %{gcc_ver} +BuildRequires: gcc7 = %{gcc_ver} +BuildRequires: python3 +BuildRequires: python3-devel +BuildRequires: python27 +BuildRequires: python27-devel +#Patch0: nodejs_glibc_thread_local_fix.patch +%else +BuildRequires: libstdc++7-devel = %{gcc_ver} +BuildRequires: gcc7-c++ = %{gcc_ver} +BuildRequires: gcc7 = %{gcc_ver} +BuildRequires: python-devel +%endif +BuildRequires: zlib-devel +# Node.js requires some features from openssl 1.0.1 for SPDY support +BuildRequires: openssl-devel >= 1.0.1 + +# we need the system certificate store when Patch2 is applied +Requires: ca-certificates + +#we need ABI virtual provides where SONAMEs aren't enough/not present so deps +#break when binary compatibility is broken +Provides: nodejs(abi) = %{nodejs_abi} +Provides: nodejs(v8-abi) = %{v8_abi} + +#this corresponds to the "engine" requirement in package.json +Provides: nodejs(engine) = %{version} + +# Node.js currently has a conflict with the 'node' package in Fedora +# The ham-radio group has agreed to rename their binary for us, but +# in the meantime, we're setting an explicit Conflicts: here +Conflicts: node <= 0.3.2-12 + +# The punycode module was absorbed into the standard library in v0.6. +# It still exists as a seperate package for the benefit of users of older +# versions. Since we've never shipped anything older than v0.10 in Fedora, +# we don't need the seperate nodejs-punycode package, so we Provide it here so +# dependent packages don't need to override the dependency generator. +# See also: RHBZ#11511811 +Provides: nodejs-punycode = %{punycode_version} +Provides: npm(punycode) = %{punycode_version} + + +# Node.js has forked c-ares from upstream in an incompatible way, so we need +# to carry the bundled version internally. +# See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43fec85 +Provides: bundled(c-ares) = %{c_ares_version} + +# Node.js is closely tied to the version of v8 that is used with it. It makes +# sense to use the bundled version because upstream consistently breaks ABI +# even in point releases. Node.js upstream has now removed the ability to build +# against a shared system version entirely. +# See https://github.com/nodejs/node/commit/d726a177ed59c37cf5306983ed00ecd858cfbbef +Provides: bundled(v8) = %{v8_version} + +# Node.js and http-parser share an upstream. The http-parser upstream does not +# do releases often and is almost always far behind the bundled version +Provides: bundled(http-parser) = %{http_parser_version} + +%description +Node.js is a platform built on Chrome's JavaScript runtime +for easily building fast, scalable network applications. +Node.js uses an event-driven, non-blocking I/O model that +makes it lightweight and efficient, perfect for data-intensive +real-time applications that run across distributed devices. + +%package devel +Summary: JavaScript runtime - development headers +Group: Development/Languages +Requires: %{name}%{?_isa} == %{version}-%{release} +#Requires: libuv-devel%{?_isa} +Requires: openssl-devel%{?_isa} +Requires: zlib-devel%{?_isa} +Requires: nodejs-packaging + +%description devel +Development headers for the Node.js JavaScript runtime. + +%package docs +Summary: Node.js API documentation +Group: Documentation +BuildArch: noarch + +%description docs +The API documentation for the Node.js JavaScript runtime. + + +%prep +%setup -q -n node-v%{version} +#%if 0%{?rhel} == 6 +#%patch0 -p1 +#%endif + +%build +# build with debugging symbols and add defines from libuv (#892601) +# Node's v8 breaks with GCC 8 because of incorrect usage of methods on +# NULL objects. We need to pass -fno-delete-null-pointer-checks +export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks' +export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks' + +CC=%{gcc_prefix}/bin/gcc CXX=%{gcc_prefix}/bin/g++ ./configure --prefix=%{_prefix} +%if %{?with_debug} == 1 +# Setting BUILDTYPE=Debug builds both release and debug binaries +CC=%{gcc_prefix}/bin/gcc CXX=%{gcc_prefix}/bin/g++ make BUILDTYPE=Debug %{?_smp_mflags} +%else +CC=%{gcc_prefix}/bin/gcc CXX=%{gcc_prefix}/bin/g++ make BUILDTYPE=Release %{?_smp_mflags} +%endif + +%install +rm -rf %{buildroot} + +./tools/install.py install %{buildroot} %{_prefix} + +# and remove dtrace file again +rm -rf %{buildroot}/%{_prefix}/lib/dtrace + +# and remove ебанную херню +rm -rf %{buildroot}%{_prefix}/share/doc/node/lldb_commands.py* +rm -rf %{buildroot}%{_prefix}/share/doc/node/lldbinit + +# Set the binary permissions properly +chmod 0755 %{buildroot}/%{_bindir}/node + +%if %{?with_debug} == 1 +# Install the debug binary and set its permissions +install -Dpm0755 out/Debug/node %{buildroot}/%{_bindir}/node_g +%endif + +# own the sitelib directory +mkdir -p %{buildroot}%{_prefix}/lib/node_modules + +# ensure Requires are added to every native module that match the Provides from +# the nodejs build in the buildroot +install -Dpm0644 %{SOURCE7} %{buildroot}%{_rpmconfigdir}/fileattrs/nodejs_native.attr +cat << EOF > %{buildroot}%{_rpmconfigdir}/nodejs_native.req +#!/bin/sh +echo 'nodejs(abi) = %nodejs_abi' +echo 'nodejs(v8-abi) = %v8_abi' +EOF +chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req + +#install documentation +mkdir -p %{buildroot}%{_pkgdocdir}/html +cp -pr doc/* %{buildroot}%{_pkgdocdir}/html +rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1 + +#node-gyp needs common.gypi too +mkdir -p %{buildroot}%{_datadir}/node +cp -p common.gypi %{buildroot}%{_datadir}/node + +# Install the GDB init tool into the documentation directory +mv %{buildroot}/%{_datadir}/doc/node/gdbinit %{buildroot}/%{_pkgdocdir}/gdbinit + + +%check +# Fail the build if the versions don't match +%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.node, '%{nodejs_version}')" +%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.v8, '%{v8_version}-node.18')" +%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.ares.replace(/-DEV$/, ''), '%{c_ares_version}')" +#%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.http_parser, '%{http_parser_version}')" + +# Ensure we have punycode and that the version matches +%{buildroot}/%{_bindir}/node -e "require(\"assert\").equal(require(\"punycode\").version, '%{punycode_version}')" + +%files +%{_bindir}/node +%{_bindir}/npm +%{_bindir}/npx +%{_mandir}/man1/node.* +%dir %{_prefix}/lib/node_modules +%{_prefix}/lib/node_modules/* +%dir %{_datadir}/node +%dir %{_datadir}/systemtap +%dir %{_datadir}/systemtap/tapset +%{_datadir}/systemtap/tapset/node.stp +%{_rpmconfigdir}/fileattrs/nodejs_native.attr +%{_rpmconfigdir}/nodejs_native.req +%dir %{_pkgdocdir} +%doc AUTHORS CHANGELOG.md COLLABORATOR_GUIDE.md GOVERNANCE.md README.md +#%doc ROADMAP.md WORKING_GROUPS.md + +%files devel +%if %{?with_debug} == 1 +%{_bindir}/node_g +%endif +%{_includedir}/node +%{_datadir}/node/common.gypi +%{_pkgdocdir}/gdbinit + +%files docs +%dir %{_pkgdocdir} +%{_pkgdocdir}/html + +%changelog +* Wed Dec 5 2018 Sergei Fedosov - 8.3.0 +* Rebuilt for 8.3.0 + +* Wed Feb 10 2016 Tom Hughes - 4.3.0-3 +- Verify that the built node reports the expected versions +- Drop unneeded dep on http-parser-devel +- Add version check for punycode + +* Wed Feb 10 2016 Stephen Gallagher - 4.3.0-2 +- Fix nodejs-abi to be 4.3 +- Clean up bundled versions in spec file + +* Tue Feb 09 2016 Stephen Gallagher - 4.3.0-1 +- Update to 4.3.0 upstream LTS release +- https://github.com/nodejs/node/blob/v4.3.0/CHANGELOG.md +- Switch to the bundled http-parser +- Build with -fno-delete-pointer-null-checks for GCC 6 + +* Tue Feb 9 2016 Tom Hughes - 4.2.6-1 +- Update to 4.2.6 upstream release + +* Thu Feb 04 2016 Fedora Release Engineering - 4.2.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jan 19 2016 Stephen Gallagher - 4.2.4-4 +- Force a depdendency on the correct version of http-parser + +* Tue Jan 19 2016 Stephen Gallagher - 4.2.4-3 +- Force a dependency on the correct version of libuv + +* Mon Jan 18 2016 Stephen Gallagher - 4.2.4-2 +- Fix Provides: for punycode + +* Wed Jan 13 2016 Stephen Gallagher - 4.2.4-1 +- New upstream bugfix release 4.2.4 +- https://github.com/nodejs/node/blob/v4.2.3/CHANGELOG.md + +* Fri Dec 04 2015 Stephen Gallagher 4.2.3-2 +- Add %%with_debug variable to spec file + The debug build is not supported on all architectures. + +* Fri Dec 04 2015 Stephen Gallagher 4.2.3-1 +- New upstream security release 4.2.3 +- https://github.com/nodejs/node/blob/v4.2.3/CHANGELOG.md +- Fix incorrect v8 version + +* Wed Dec 2 2015 Peter Robinson 4.2.2-4 +- Use nodejs_arches macro for arch definition (add aarch64 and power64 platforms) + +* Wed Dec 02 2015 Stephen Gallagher 4.2.2-3 +- Fix nodejs_abi version +- Also ensure that we are building against the correct libuv + +* Wed Dec 02 2015 Stephen Gallagher 4.2.2-2 +- Disable debug build for ARMv7 since it fails to build + +* Tue Dec 01 2015 Stephen Gallagher 4.2.2-1 +- Upgrade to Node.js 4.2.2 (LTS) + +* Wed Jun 17 2015 Fedora Release Engineering - 0.10.36-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Apr 29 2015 T.C. Hollingsworth - 0.10.36-4 +- fix incorrect Requires on libuv (RHBZ#1215719) + +* Tue Feb 24 2015 T.C. Hollingsworth - 0.10.36-3 +- bump v8 requires (RHBZ#1195457) + +* Thu Feb 19 2015 T.C. Hollingsworth - 0.10.36-2 +- build against compat-libuv010 + +* Thu Feb 19 2015 T.C. Hollingsworth - 0.10.36-1 +- new upstream release 0.10.36 + http://blog.nodejs.org/2015/01/26/node-v0-10-36-stable/ +- Please note that several upstream releases were skipped due to regressions + reported in the upstream bug tracker. Please also review the 0.10.34 and + 0.10.35 changelogs available at the above URL for a list of all changes. + +* Wed Nov 19 2014 T.C. Hollingsworth - 0.10.33-1 +- new upstream release 0.10.33 + http://blog.nodejs.org/2014/10/23/node-v0-10-33-stable/ +- This release disables SSLv3 to secure Node.js services against the POODLE + attack. (CVE-2014-3566; RHBZ#1152789) For more information or to learn how + to re-enable SSLv3 in order to support legacy clients, please see the upstream + release announcement linked above. + +* Tue Oct 21 2014 T.C. Hollingsworth - 0.10.32-2 +- add Provides nodejs-punycode (RHBZ#1151811) + +* Thu Sep 18 2014 T.C. Hollingsworth - 0.10.32-1 +- new upstream release 0.10.32 + http://blog.nodejs.org/2014/08/19/node-v0-10-31-stable/ + http://blog.nodejs.org/2014/09/16/node-v0-10-32-stable/ + +* Sun Aug 17 2014 Fedora Release Engineering - 0.10.30-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Aug 01 2014 T.C. Hollingsworth - 0.10.30-1 +- new upstream release 0.10.30 + http://blog.nodejs.org/2014/07/31/node-v0-10-30-stable/ + +* Thu Jun 19 2014 T.C. Hollingsworth - 0.10.29-1 +- new upstream release 0.10.29 + http://blog.nodejs.org/2014/06/16/node-v0-10-29-stable/ +- The invalid UTF8 fix has been reverted since this breaks v8 API, which cannot + be done in a stable distribution release. This build of nodejs will behave as + if NODE_INVALID_UTF8 was set. For more information on the implications, see: + http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/ + +* Sat Jun 07 2014 Fedora Release Engineering - 0.10.28-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat May 03 2014 T.C. Hollingsworth - 0.10.28-2 +- use the system certificate store instead of the bundled copy + both are based on the Mozilla CA list, so the only effect this should have is + making additional certificates added by the system administrator available to + node + +* Sat May 03 2014 T.C. Hollingsworth - 0.10.28-1 +- new upstream release 0.10.28 + There is no dfference between 0.10.27 and 0.10.28 for Fedora, as the only + thing updated was npm, which is shipped seperately. The latest was only + packaged to avoid confusion. Please see the v0.10.27 changelog for relevant + changes in this update: + http://blog.nodejs.org/2014/05/01/node-v0-10-27-stable/ + +* Thu Feb 20 2014 T.C. Hollingsworth - 0.10.26-1 +- new upstream release 0.10.26 + http://blog.nodejs.org/2014/02/18/node-v0-10-26-stable/ + +* Fri Feb 14 2014 T.C. Hollingsworth - 0.10.25-2 +- rebuild for icu-53 (via v8) + +* Mon Jan 27 2014 T.C. Hollingsworth - 0.10.25-1 +- new upstream release 0.10.25 + http://blog.nodejs.org/2014/01/23/node-v0-10-25-stable/ + +* Thu Dec 19 2013 T.C. Hollingsworth - 0.10.24-1 +- new upstream release 0.10.24 + http://blog.nodejs.org/2013/12/19/node-v0-10-24-stable/ +- upstream install script installs the headers now + +* Thu Dec 12 2013 T.C. Hollingsworth - 0.10.23-1 +- new upstream release 0.10.23 + http://blog.nodejs.org/2013/12/11/node-v0-10-23-stable/ + +* Tue Nov 12 2013 T.C. Hollingsworth - 0.10.22-1 +- new upstream release 0.10.22 + http://blog.nodejs.org/2013/11/12/node-v0-10-22-stable/ + +* Fri Oct 18 2013 T.C. Hollingsworth - 0.10.21-1 +- new upstream release 0.10.21 + http://blog.nodejs.org/2013/10/18/node-v0-10-21-stable/ +- resolves an undisclosed security vulnerability in the http module + +* Tue Oct 01 2013 T.C. Hollingsworth - 0.10.20-1 +- new upstream release 0.10.20 + http://blog.nodejs.org/2013/09/30/node-v0-10-20-stable/ + +* Wed Sep 25 2013 T.C. Hollingsworth - 0.10.19-1 +- new upstream release 0.10.19 + http://blog.nodejs.org/2013/09/24/node-v0-10-19-stable/ + +* Fri Sep 06 2013 T.C. Hollingsworth - 0.10.18-1 +- new upstream release 0.10.18 + http://blog.nodejs.org/2013/09/04/node-v0-10-18-stable/ + +* Tue Aug 27 2013 T.C. Hollingsworth - 0.10.17-1 +- new upstream release 0.10.17 + http://blog.nodejs.org/2013/08/21/node-v0-10-17-stable/ +- fix duplicated/conflicting documentation files (RHBZ#1001253) + +* Sat Aug 17 2013 T.C. Hollingsworth - 0.10.16-1 +- new upstream release 0.10.16 + http://blog.nodejs.org/2013/08/16/node-v0-10-16-stable/ +- add v8-devel to -devel Requires +- restrict -devel Requires to the same architecture + +* Wed Aug 14 2013 T.C. Hollingsworth - 0.10.14-3 +- fix typo in _isa macro in v8 Requires + +* Mon Aug 05 2013 T.C. Hollingsworth - 0.10.14-2 +- use unversioned docdir for -docs subpackage + https://fedoraproject.org/wiki/Changes/UnversionedDocdirs +- use main package's docdir instead of a seperate -docs directory + +* Thu Jul 25 2013 T.C. Hollingsworth - 0.10.14-1 +- new upstream release 0.10.14 + http://blog.nodejs.org/2013/07/25/node-v0-10-14-stable/ + +* Wed Jul 10 2013 T.C. Hollingsworth - 0.10.13-1 +- new upstream release 0.10.13 + http://blog.nodejs.org/2013/07/09/node-v0-10-13-stable/ +- remove RPM macros, etc. now that they've migrated to nodejs-packaging + +* Wed Jun 19 2013 T.C. Hollingsworth - 0.10.12-1 +- new upstream release 0.10.12 + http://blog.nodejs.org/2013/06/18/node-v0-10-12-stable/ +- split off a -packaging subpackage with RPM macros, etc. +- build -docs as noarch +- copy mutiple version logic from nodejs-packaging SRPM for now + +* Fri May 31 2013 T.C. Hollingsworth - 0.10.9-1 +- new upstream release 0.10.9 + http://blog.nodejs.org/2013/05/30/node-v0-10-9-stable/ + +* Wed May 29 2013 T.C. Hollingsworth - 0.10.8-1 +- new upstream release 0.10.8 + http://blog.nodejs.org/2013/05/24/node-v0-10-8-stable/ + +* Wed May 29 2013 T.C. Hollingsworth - 0.10.7-1 +- new upstream release 0.10.7 + http://blog.nodejs.org/2013/05/17/node-v0-10-7-stable/ +- strip openssl from the tarball; it contains prohibited code (RHBZ#967736) +- patch Makefile so we can just remove all bundled deps completely + +* Wed May 15 2013 T.C. Hollingsworth - 0.10.6-1 +- new upstream release 0.10.6 + http://blog.nodejs.org/2013/05/14/node-v0-10-6-stable/ + +* Mon May 06 2013 T.C. Hollingsworth - 0.10.5-3 +- nodejs-fixdep: work properly when a package has no dependencies + +* Mon Apr 29 2013 T.C. Hollingsworth - 0.10.5-2 +- nodejs-symlink-deps: make it work when --check is used and just + devDependencies exist + +* Wed Apr 24 2013 T.C. Hollingsworth - 0.10.5-1 +- new upstream release 0.10.5 + http://blog.nodejs.org/2013/04/23/node-v0-10-5-stable/ + +* Mon Apr 15 2013 T.C. Hollingsworth - 0.10.4-1 +- new upstream release 0.10.4 + http://blog.nodejs.org/2013/04/11/node-v0-10-4-stable/ +- add no-op macro to permit spec compatibility with EPEL + +* Thu Apr 04 2013 T.C. Hollingsworth - 0.10.3-2 +- nodejs-symlink-deps: symlink unconditionally in the buildroot + +* Wed Apr 03 2013 T.C. Hollingsworth - 0.10.3-1 +- new upstream release 0.10.3 + http://blog.nodejs.org/2013/04/03/node-v0-10-3-stable/ +- nodejs-symlink-deps: only create symlink if target exists +- nodejs-symlink-deps: symlink devDependencies when --check is used + +* Sun Mar 31 2013 T.C. Hollingsworth - 0.10.2-1 +- new upstream release 0.10.2 + http://blog.nodejs.org/2013/03/28/node-v0-10-2-stable/ +- remove %%nodejs_arches macro since it will only be useful if it is present in + the redhat-rpm-config package +- add default filtering macro to remove unwanted Provides from native modules +- nodejs-symlink-deps now supports multiple modules in one SRPM properly +- nodejs-symlink-deps also now supports a --check argument that works in the + current working directry instead of the buildroot + +* Fri Mar 22 2013 T.C. Hollingsworth - 0.10.1-1 +- new upstream release 0.10.1 + http://blog.nodejs.org/2013/03/21/node-v0-10-1-stable/ + +* Wed Mar 20 2013 T.C. Hollingsworth - 0.10.0-4 +- fix escaping in dependency generator regular expressions (RHBZ#923941) + +* Wed Mar 13 2013 T.C. Hollingsworth - 0.10.0-3 +- add virtual ABI provides for node and v8 so binary module's deps break when + binary compatibility is broken +- automatically add matching Requires to nodejs binary modules +- add %%nodejs_arches macro to future-proof ExcluseArch stanza in dependent + packages + +* Tue Mar 12 2013 Stephen Gallagher - 0.10.0-2 +- Fix up documentation subpackage + +* Mon Mar 11 2013 Stephen Gallagher - 0.10.0-1 +- Update to stable 0.10.0 release +- https://raw.github.com/joyent/node/v0.10.0/ChangeLog + +* Thu Feb 14 2013 Fedora Release Engineering - 0.9.5-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Jan 22 2013 T.C. Hollingsworth - 0.9.5-10 +- minor bugfixes to RPM magic + - nodejs-symlink-deps: don't create an empty node_modules dir when a module + has no dependencies + - nodes-fixdep: support adding deps when none exist +- Add the full set of headers usually bundled with node as deps to nodejs-devel. + This way `npm install` for native modules that assume the stuff bundled with + node exists will usually "just work". +-move RPM magic to nodejs-devel as requested by FPC + +* Sat Jan 12 2013 T.C. Hollingsworth - 0.9.5-9 +- fix brown paper bag bug in requires generation script + +* Thu Jan 10 2013 Stephen Gallagher - 0.9.5-8 +- Build debug binary and install it in the nodejs-devel subpackage + +* Thu Jan 10 2013 T.C. Hollingsworth - 0.9.5-7 +- don't use make install since it rebuilds everything + +* Thu Jan 10 2013 T.C. Hollingsworth - 0.9.5-6 +- add %%{?isa}, epoch to v8 deps + +* Wed Jan 09 2013 T.C. Hollingsworth - 0.9.5-5 +- add defines to match libuv (#892601) +- make v8 dependency explicit (and thus more accurate) +- add -g to $C(XX)FLAGS instead of patching configure to add it +- don't write pointless 'npm(foo) > 0' deps + +* Sat Jan 05 2013 T.C. Hollingsworth - 0.9.5-4 +- install development headers +- add nodejs_sitearch macro + +* Wed Jan 02 2013 T.C. Hollingsworth - 0.9.5-3 +- make nodejs-symlink-deps actually work + +* Tue Jan 01 2013 T.C. Hollingsworth - 0.9.5-2 +- provide nodejs-devel so modules can BuildRequire it (and be consistent + with other interpreted languages in the distro) + +* Tue Jan 01 2013 T.C. Hollingsworth - 0.9.5-1 +- new upstream release 0.9.5 +- provide nodejs-devel for the moment +- fix minor bugs in RPM magic +- add nodejs_fixdep macro so packagers can easily adjust dependencies in + package.json files + +* Wed Dec 26 2012 T.C. Hollingsworth - 0.9.4-1 +- new upstream release 0.9.4 +- system library patches are now upstream +- respect optflags +- include documentation in subpackage +- add RPM dependency generation and related magic +- guard libuv depedency so it always gets bumped when nodejs does +- add -devel subpackage with enough to make node-gyp happy + +* Wed Dec 19 2012 Dan Horák - 0.9.3-8 +- set exclusive arch list to match v8 + +* Tue Dec 18 2012 Stephen Gallagher - 0.9.3-7 +- Add remaining changes from code review +- Remove unnecessary BuildRequires on findutils +- Remove %%clean section + +* Fri Dec 14 2012 Stephen Gallagher - 0.9.3-6 +- Fixes from code review +- Fix executable permissions +- Correct the License field +- Build debuginfo properly + +* Thu Dec 13 2012 Stephen Gallagher - 0.9.3-5 +- Return back to using the standard binary name +- Temporarily adding a conflict against the ham radio node package until they + complete an agreed rename of their binary. + +* Wed Nov 28 2012 Stephen Gallagher - 0.9.3-4 +- Rename binary and manpage to nodejs + +* Mon Nov 19 2012 Stephen Gallagher - 0.9.3-3 +- Update to latest upstream development release 0.9.3 +- Include upstreamed patches to unbundle dependent libraries + +* Tue Oct 23 2012 Adrian Alves 0.8.12-1 +- Fixes and Patches suggested by Matthias Runge + +* Mon Apr 09 2012 Adrian Alves 0.6.5 +- First build. + diff --git a/nodejs/nodejs_glibc_thread_local_fix.patch b/nodejs/nodejs_glibc_thread_local_fix.patch new file mode 100644 index 0000000..d186d2d --- /dev/null +++ b/nodejs/nodejs_glibc_thread_local_fix.patch @@ -0,0 +1,50 @@ +From b9daef67624ac8e2dab0dcf8c82c2f864f76ee6a Mon Sep 17 00:00:00 2001 +From: Ben Noordhuis +Date: Sat, 12 Aug 2017 14:28:06 +0200 +Subject: [PATCH] [wasm] Work around glibc thread-local storage bug + +glibc before 2.17 has a bug that makes it impossible to execute binaries +that have single-byte thread-local variables: + + % node --version + node: error while loading shared libraries: cannot allocate memory + in static TLS block + +Work around that by making the one instance in the V8 code base an int. + +See: https://sourceware.org/bugzilla/show_bug.cgi?id=14898 +See: https://github.com/nodesource/distributions/issues/513 +See: https://github.com/nodejs/build/pull/809 +Change-Id: Iefd8009100cd93e26cf8dc5dc03f2d622b423385 +--- + +diff --git a/deps/v8/src/trap-handler/handler-shared.cc b/deps/v8/src/trap-handler/handler-shared.cc +index 7b399f5..242fcba 100644 +--- a/deps/v8/src/trap-handler/handler-shared.cc ++++ b/deps/v8/src/trap-handler/handler-shared.cc +@@ -23,7 +23,11 @@ + namespace internal { + namespace trap_handler { + +-THREAD_LOCAL bool g_thread_in_wasm_code = false; ++THREAD_LOCAL int g_thread_in_wasm_code = false; ++ ++static_assert(sizeof(g_thread_in_wasm_code) > 1, ++ "sizeof(thread_local_var) must be > 1, see " ++ "https://sourceware.org/bugzilla/show_bug.cgi?id=14898"); + + size_t gNumCodeObjects = 0; + CodeProtectionInfoListEntry* gCodeObjects = nullptr; +diff --git a/deps/v8/src/trap-handler/trap-handler.h b/deps/v8/src/trap-handler/trap-handler.h +index 5494c5f..ed94599 100644 +--- a/deps/v8/src/trap-handler/trap-handler.h ++++ b/deps/v8/src/trap-handler/trap-handler.h +@@ -65,7 +65,7 @@ + return FLAG_wasm_trap_handler && V8_TRAP_HANDLER_SUPPORTED; + } + +-extern THREAD_LOCAL bool g_thread_in_wasm_code; ++extern THREAD_LOCAL int g_thread_in_wasm_code; + + inline bool IsThreadInWasm() { return g_thread_in_wasm_code; } + diff --git a/nodejs/nodejs_native.attr b/nodejs/nodejs_native.attr new file mode 100644 index 0000000..0527af6 --- /dev/null +++ b/nodejs/nodejs_native.attr @@ -0,0 +1,2 @@ +%__nodejs_native_requires %{_rpmconfigdir}/nodejs_native.req +%__nodejs_native_path ^/usr/lib.*/node_modules/.*\\.node$