1

Initial commit

This commit is contained in:
Sergei Fedosov
2019-07-18 14:20:46 +03:00
commit 1d8a4beba5
13 changed files with 1182 additions and 0 deletions

1
README.md Normal file
View File

@@ -0,0 +1 @@
RPM Spec files to build packages for CentOS

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,7 @@
/var/log/centrifugo/*log {
copytruncate
daily
rotate 7
compress
missingok
}

View File

@@ -0,0 +1 @@
centrifugo - nofile 65536

View File

@@ -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

109
centrifugo/centrifugo.spec Normal file
View File

@@ -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 <s.fedosov@corp.mail.ru>
- Initial version

View File

@@ -0,0 +1,3 @@
# Additional command line args
# see output of centrifugo --help for details
CENTRIFUGO_OPTS="--log_file /var/log/centrifugo/centrifugo.log"

124
csnappy/csnappy.spec Normal file
View File

@@ -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 <ppisar@redhat.com> - 0-13.20181121gitb476930
- Rebased to b47693024402fa8760edcd4fed71131cbd5ac175
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0-12.20180322git51802a8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Wed May 23 2018 David Abdurachmanov <david.abdurachmanov@gmail.com> - 0-11.20180322git51802a8
- Switch to %%{valgrind_arches}
* Thu Mar 22 2018 Petr Pisar <ppisar@redhat.com> - 0-10.20180322git51802a8
- Rebase to 51802a869db97326c803dcabdb6e6ed0797a715a
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0-9.20150729gitd7bc683
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0-8.20150729gitd7bc683
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0-7.20150729gitd7bc683
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0-6.20150729gitd7bc683
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0-5.20150729gitd7bc683
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Thu Jul 30 2015 Petr Pisar <ppisar@redhat.com> - 0-4.20150729gitd7bc683
- Rebase to d7bc683b6eaba225f483621485035a8044634376
* Wed Jul 29 2015 Marcin Juszkiewicz <mjuszkiewicz@redhat.com> - 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 <rel-eng@lists.fedoraproject.org> - 0-2.20150331gitcf029fa
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sun May 3 2015 Peter Robinson <pbrobinson@fedoraproject.org> 0-1.20150331gitcf029fa
- Rebase to 20150331
- Use same make flags for tests
- Use %%license
* Fri Jan 16 2015 Dan Horák <dan[at]danny.cz> - 0-1.20141010gitb43c183
- valgrind is available only on selected arches
* Mon Oct 13 2014 Petr Pisar <ppisar@redhat.com> - 0-0.20141010gitb43c183
- b43c183fdad31be0500a5f2ae022a54a66cb1a3d snapshot

54
kafkacat/kafkacat.spec Normal file
View File

@@ -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 <magnus@edenhill.se> 1.2.0-1
- Relase 1.2.0
* Fri Dec 19 2014 François Saint-Jacques <fsaintjacques@gmail.com> 1.1.0-1
- Initial RPM package

168
kafkacat/librdkafka.spec Normal file
View File

@@ -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 <remi@remirepo.net> - 0.11.5-1
- update to 0.11.5
* Thu Mar 29 2018 Remi Collet <remi@remirepo.net> - 1.11.4-1
- update to 1.11.4
* Wed Dec 6 2017 Remi Collet <remi@remirepo.net> - 0.11.3-1
- update to 0.11.3
* Wed Oct 18 2017 Remi Collet <remi@remirepo.net> - 0.11.1-1
- update to 0.11.1
* Thu Oct 5 2017 Remi Collet <remi@remirepo.net> - 0.11.1~RC1-1
- update to 0.11.1-RC1
* Tue Aug 1 2017 Remi Collet <remi@remirepo.net> - 0.11.0-1
- update to 0.11.0
* Thu Jun 29 2017 Remi Collet <remi@remirepo.net> - 0.11.0~RC2-1
- update to 0.11.0-RC2
* Thu Jun 29 2017 Remi Collet <remi@remirepo.net> - 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 <remi@remirepo.net> - 0.9.5-1
- update to 0.9.5 (no change since RC2)
* Wed Apr 12 2017 Remi Collet <remi@remirepo.net> - 0.9.5~RC2-1
- update to 0.9.5-RC2
* Mon Apr 10 2017 Remi Collet <remi@remirepo.net> - 0.9.5~RC1-1
- update to 0.9.5-RC1
* Mon Feb 27 2017 Remi Collet <remi@remirepo.net> - 0.9.4-1
- update to 0.9.4
* Fri Feb 24 2017 Remi Collet <remi@remirepo.net> - 0.9.4-0.3.RC2
- update to 0.9.4RC2 for test
* Fri Feb 17 2017 Remi Collet <remi@remirepo.net> - 0.9.4-0.2.RC1
- enable lz4
* Thu Feb 16 2017 Remi Collet <remi@remirepo.net> - 0.9.4-0.1.RC1
- update to 0.9.4RC1 for test
* Mon Jan 23 2017 Remi Collet <remi@fedoraproject.org> - 0.9.3-1
- update to 0.9.3
* Wed Nov 9 2016 Remi Collet <remi@fedoraproject.org> - 0.9.2-1
- update to 0.9.2
* Sun May 29 2016 Remi Collet <remi@fedoraproject.org> - 0.9.1-1
- update to 0.9.1
* Sat Jan 9 2016 Remi Collet <remi@fedoraproject.org> - 0.9.0-1
- update to 0.9.0
- add upstream patch for old glibc (RHEL-5)
* Thu May 14 2015 Remi Collet <remi@fedoraproject.org> - 0.8.6-1
- initial package

635
nodejs/nodejs.spec Normal file
View File

@@ -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 <s.fedosov@corp.mail.ru> - 8.3.0
* Rebuilt for 8.3.0
* Wed Feb 10 2016 Tom Hughes <tom@compton.nu> - 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 <sgallagh@redhat.com> - 4.3.0-2
- Fix nodejs-abi to be 4.3
- Clean up bundled versions in spec file
* Tue Feb 09 2016 Stephen Gallagher <sgallagh@redhat.com> - 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 <tom@compton.nu> - 4.2.6-1
- Update to 4.2.6 upstream release
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Tue Jan 19 2016 Stephen Gallagher <sgallagh@redhat.com> - 4.2.4-4
- Force a depdendency on the correct version of http-parser
* Tue Jan 19 2016 Stephen Gallagher <sgallagh@redhat.com> - 4.2.4-3
- Force a dependency on the correct version of libuv
* Mon Jan 18 2016 Stephen Gallagher <sgallagh@redhat.com> - 4.2.4-2
- Fix Provides: for punycode
* Wed Jan 13 2016 Stephen Gallagher <sgallagh@redhat.com> - 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 <sgallagh@redhat.com> 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 <sgallagh@redhat.com> 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 <pbrobinson@fedoraproject.org> 4.2.2-4
- Use nodejs_arches macro for arch definition (add aarch64 and power64 platforms)
* Wed Dec 02 2015 Stephen Gallagher <sgallagh@redhat.com> 4.2.2-3
- Fix nodejs_abi version
- Also ensure that we are building against the correct libuv
* Wed Dec 02 2015 Stephen Gallagher <sgallagh@redhat.com> 4.2.2-2
- Disable debug build for ARMv7 since it fails to build
* Tue Dec 01 2015 Stephen Gallagher <sgallagh@redhat.com> 4.2.2-1
- Upgrade to Node.js 4.2.2 (LTS)
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.36-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Wed Apr 29 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.36-4
- fix incorrect Requires on libuv (RHBZ#1215719)
* Tue Feb 24 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.36-3
- bump v8 requires (RHBZ#1195457)
* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.36-2
- build against compat-libuv010
* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 0.10.32-2
- add Provides nodejs-punycode (RHBZ#1151811)
* Thu Sep 18 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <rel-eng@lists.fedoraproject.org> - 0.10.30-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Fri Aug 01 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <rel-eng@lists.fedoraproject.org> - 0.10.28-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Sat May 03 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 0.10.25-2
- rebuild for icu-53 (via v8)
* Mon Jan 27 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 0.10.14-3
- fix typo in _isa macro in v8 Requires
* Mon Aug 05 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 0.10.5-3
- nodejs-fixdep: work properly when a package has no dependencies
* Mon Apr 29 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 0.10.3-2
- nodejs-symlink-deps: symlink unconditionally in the buildroot
* Wed Apr 03 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 0.10.0-4
- fix escaping in dependency generator regular expressions (RHBZ#923941)
* Wed Mar 13 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <sgallagh@redhat.com> - 0.10.0-2
- Fix up documentation subpackage
* Mon Mar 11 2013 Stephen Gallagher <sgallagh@redhat.com> - 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 <rel-eng@lists.fedoraproject.org> - 0.9.5-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Tue Jan 22 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 0.9.5-9
- fix brown paper bag bug in requires generation script
* Thu Jan 10 2013 Stephen Gallagher <sgallagh@redhat.com> - 0.9.5-8
- Build debug binary and install it in the nodejs-devel subpackage
* Thu Jan 10 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.9.5-7
- don't use make install since it rebuilds everything
* Thu Jan 10 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.9.5-6
- add %%{?isa}, epoch to v8 deps
* Wed Jan 09 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 0.9.5-4
- install development headers
- add nodejs_sitearch macro
* Wed Jan 02 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.9.5-3
- make nodejs-symlink-deps actually work
* Tue Jan 01 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <dan[at]danny.cz> - 0.9.3-8
- set exclusive arch list to match v8
* Tue Dec 18 2012 Stephen Gallagher <sgallagh@redhat.com> - 0.9.3-7
- Add remaining changes from code review
- Remove unnecessary BuildRequires on findutils
- Remove %%clean section
* Fri Dec 14 2012 Stephen Gallagher <sgallagh@redhat.com> - 0.9.3-6
- Fixes from code review
- Fix executable permissions
- Correct the License field
- Build debuginfo properly
* Thu Dec 13 2012 Stephen Gallagher <sgallagh@redhat.com> - 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 <sgallagh@redhat.com> - 0.9.3-4
- Rename binary and manpage to nodejs
* Mon Nov 19 2012 Stephen Gallagher <sgallagh@redhat.com> - 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 <alvesadrian@fedoraproject.org> 0.8.12-1
- Fixes and Patches suggested by Matthias Runge
* Mon Apr 09 2012 Adrian Alves <alvesadrian@fedoraproject.org> 0.6.5
- First build.

View File

@@ -0,0 +1,50 @@
From b9daef67624ac8e2dab0dcf8c82c2f864f76ee6a Mon Sep 17 00:00:00 2001
From: Ben Noordhuis <info@bnoordhuis.nl>
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; }

View File

@@ -0,0 +1,2 @@
%__nodejs_native_requires %{_rpmconfigdir}/nodejs_native.req
%__nodejs_native_path ^/usr/lib.*/node_modules/.*\\.node$