Commit 05c2da77 authored by Thomas Gambier's avatar Thomas Gambier 🚴🏼

Update Release Candidate

parents e399bfd5 2a0b04ee
...@@ -26,6 +26,7 @@ extends = ...@@ -26,6 +26,7 @@ extends =
../libnsl/buildout.cfg ../libnsl/buildout.cfg
../sqlite3/buildout.cfg ../sqlite3/buildout.cfg
../oniguruma/buildout.cfg ../oniguruma/buildout.cfg
../xz-utils/buildout.cfg
[php-redis] [php-redis]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
...@@ -93,10 +94,9 @@ configure-options = ...@@ -93,10 +94,9 @@ configure-options =
# Changing TMPDIR is required for PEAR installation. # Changing TMPDIR is required for PEAR installation.
# It will create a pear/temp directory under the SR instead of a shared /tmp/pear/temp. # It will create a pear/temp directory under the SR instead of a shared /tmp/pear/temp.
# XXX we could mkdir tmp there # XXX we could mkdir tmp there
environment = environment =
PKG_CONFIG_PATH=${libxml2:location}/lib/pkgconfig:${openssl:location}/lib/pkgconfig:${libzip:location}/lib/pkgconfig:${sqlite3:location}/lib/pkgconfig:${curl:location}/lib/pkgconfig:${icu:location}/lib/pkgconfig:${oniguruma:location}/lib/pkgconfig:${argon2:location}/lib/pkgconfig:${zlib:location}/lib/pkgconfig:${mariadb:location}/lib/pkgconfig:${libjpeg:location}/lib/pkgconfig:${libpng:location}/lib/pkgconfig:${freetype:location}/lib/pkgconfig:${libiconv:location}/lib/pkgconfig:${libzip:location}/lib/pkgconfig PKG_CONFIG_PATH=${libxml2:location}/lib/pkgconfig:${openssl:location}/lib/pkgconfig:${libzip:location}/lib/pkgconfig:${sqlite3:location}/lib/pkgconfig:${curl:location}/lib/pkgconfig:${icu:location}/lib/pkgconfig:${oniguruma:location}/lib/pkgconfig:${argon2:location}/lib/pkgconfig:${zlib:location}/lib/pkgconfig:${mariadb:location}/lib/pkgconfig:${libjpeg:location}/lib/pkgconfig:${libpng:location}/lib/pkgconfig:${freetype:location}/lib/pkgconfig:${libiconv:location}/lib/pkgconfig:${libzip:location}/lib/pkgconfig
PATH=${pkgconfig:location}/bin:${bzip2:location}/bin:${libxml2:location}/bin:%(PATH)s PATH=${pkgconfig:location}/bin:${bzip2:location}/bin:${libxml2:location}/bin:${xz-utils:location}/bin:%(PATH)s
CPPFLAGS=-I${libzip:location}/include CPPFLAGS=-I${libzip:location}/include
LDFLAGS=-L${bzip2:location}/lib -Wl,-rpath -Wl,${bzip2:location}/lib -Wl,-rpath -Wl,${curl:location}/lib -L${libtool:location}/lib -Wl,-rpath -Wl,${libtool:location}/lib -L${mariadb:location}/lib -Wl,-rpath -Wl,${mariadb:location}/lib -L${zlib:location}/lib -Wl,-rpath -Wl,${zlib:location}/lib -L${libzip:location}/lib -Wl,-rpath -Wl,${libzip:location}/lib -L${argon2:location}/lib/x86_64-linux-gnu -Wl,-rpath -Wl,${argon2:location}/lib/x86_64-linux-gnu -Wl,-rpath -Wl,${zstd:location}/lib -L${libnsl:location}/lib -Wl,-rpath -Wl,${libnsl:location}/lib -L${sqlite3:location}/lib -Wl,-rpath -Wl,${sqlite3:location}/lib LDFLAGS=-L${bzip2:location}/lib -Wl,-rpath -Wl,${bzip2:location}/lib -Wl,-rpath -Wl,${curl:location}/lib -L${libtool:location}/lib -Wl,-rpath -Wl,${libtool:location}/lib -L${mariadb:location}/lib -Wl,-rpath -Wl,${mariadb:location}/lib -L${zlib:location}/lib -Wl,-rpath -Wl,${zlib:location}/lib -L${libzip:location}/lib -Wl,-rpath -Wl,${libzip:location}/lib -L${argon2:location}/lib/x86_64-linux-gnu -Wl,-rpath -Wl,${argon2:location}/lib/x86_64-linux-gnu -Wl,-rpath -Wl,${zstd:location}/lib -L${libnsl:location}/lib -Wl,-rpath -Wl,${libnsl:location}/lib -L${sqlite3:location}/lib -Wl,-rpath -Wl,${sqlite3:location}/lib
TMPDIR=@@LOCATION@@ TMPDIR=@@LOCATION@@
......
...@@ -16,7 +16,7 @@ url = https://deb.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_ ...@@ -16,7 +16,7 @@ url = https://deb.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_
md5sum = fc1c3ec0067385f0be8ac7f6e670a0f8 md5sum = fc1c3ec0067385f0be8ac7f6e670a0f8
patch-binary = ${patch:location}/bin/patch patch-binary = ${patch:location}/bin/patch
patches = patches =
${:_profile_base_location_}/ca-certificates-any-python.patch#a5817d1b7162f8f814960f72c747e3af ${:_profile_base_location_}/ca-certificates-any-python.patch#56ecfeb8f23ae00726191a611d08894e
${:_profile_base_location_}/ca-certificates-mkdir-p.patch#02ed8a6d60c39c4b088657888af345ef ${:_profile_base_location_}/ca-certificates-mkdir-p.patch#02ed8a6d60c39c4b088657888af345ef
${:_profile_base_location_}/ca-certificates-no-cryptography.patch#14ad1308623b0d15420906ae3d9b4867 ${:_profile_base_location_}/ca-certificates-no-cryptography.patch#14ad1308623b0d15420906ae3d9b4867
patch-options = -p0 patch-options = -p0
...@@ -25,4 +25,4 @@ make-targets = install DESTDIR=@@LOCATION@@ CERTSDIR=certs SBINDIR=sbin ...@@ -25,4 +25,4 @@ make-targets = install DESTDIR=@@LOCATION@@ CERTSDIR=certs SBINDIR=sbin
environment = environment =
PATH=${xz-utils:location}/bin:%(PATH)s PATH=${xz-utils:location}/bin:%(PATH)s
pre-make-hook = pre-make-hook =
${:_profile_base_location_}/ca-certificates-pre-make-hook.py#9e2f6f22d91ea7a089f0ea2c523b0c1e:pre_make_hook ${:_profile_base_location_}/ca-certificates-pre-make-hook.py#89d64d612e143638b7b264be4b129798:pre_make_hook
...@@ -9,14 +9,3 @@ ...@@ -9,14 +9,3 @@
in_multiline = False in_multiline = False
continue continue
if line.startswith('CKA_CLASS'): if line.startswith('CKA_CLASS'):
--- mozilla/Makefile 2015-12-20 10:49:23.000000000 +0100
+++ mozilla/Makefile 2016-01-05 20:19:11.006874271 +0100
@@ -3,7 +3,7 @@
#
all:
- python3 certdata2pem.py
+ SLAPOS_BUILDOUT_PYTHON certdata2pem.py
clean:
-rm -f *.crt
import pathlib
import sys import sys
# Because ca-certificate is used very early in the bootstrap process,
# even before python is built, we can not use the software release python
# yet, because it would loop forever in slapos.rebootstrap.
# By using sys.executable in a hook like this, we can use python without
# buildout recording a dependency to python in the part options.
def pre_make_hook(options, buildout, environ): def pre_make_hook(options, buildout, environ):
makefile = pathlib.Path('mozilla/Makefile') with open('mozilla/Makefile') as f:
txt = makefile.read_text().replace('SLAPOS_BUILDOUT_PYTHON', sys.executable) makefile = f.read()
makefile.write_text(txt) makefile = makefile.replace('python3 certdata2pem.py', '%s certdata2pem.py' % sys.executable)
with open('mozilla/Makefile', 'w') as f:
f.write(makefile)
...@@ -17,6 +17,7 @@ init = ...@@ -17,6 +17,7 @@ init =
python = self.buildout[options['part']] python = self.buildout[options['part']]
for x in 'location', 'executable', 'version': for x in 'location', 'executable', 'version':
options[x] = python[x] options[x] = python[x]
options.barrier()
update = update =
import os import os
path, os.environ['PYTHON'] = os.path.split(options['executable']) path, os.environ['PYTHON'] = os.path.split(options['executable'])
...@@ -65,7 +66,6 @@ init = ...@@ -65,7 +66,6 @@ init =
break break
else: else:
options['prefix'] = self.buildout[options['part']]['location'] options['prefix'] = self.buildout[options['part']]['location']
options.barrier()
update = update =
if 'part' in options: if 'part' in options:
import os import os
......
...@@ -9,8 +9,10 @@ parts = ...@@ -9,8 +9,10 @@ parts =
[flex] [flex]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
shared = true shared = true
url = http://downloads.sourceforge.net/project/flex/flex-2.6.0.tar.xz url = https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
md5sum = 3cbbfa1554d0b75fad9f8100732454de md5sum = 2882e3179748cc9f9c23ec593d6adc8d
environment = environment =
M4=${m4:location}/bin/m4 M4=${m4:location}/bin/m4
PATH=${bison:location}/bin:${xz-utils:location}/bin:%(PATH)s PATH=${bison:location}/bin:${xz-utils:location}/bin:%(PATH)s
# CFLAGS to workaround https://github.com/westes/flex/issues/442
CFLAGS=-g -O2 -D_GNU_SOURCE
From 90950c10cf6bfcba777a5b22cdcd3b54b4043d35 Mon Sep 17 00:00:00 2001 From 2a3dd1d84cf45bb78f1b42deab5a8386932c0802 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Tue, 20 Sep 2022 23:10:16 +0900 Date: Sun, 15 Oct 2023 09:39:33 +0900
Subject: [PATCH] slapos: don't try to install system startup script Subject: [PATCH] slapos: don't try to install system startup script
in slapos context we don't write to system directories when installing in slapos context we don't write to system directories when installing
packages packages
--- ---
src/CMakeLists.txt | 21 --------------------- src/CMakeLists.txt | 27 ---------------------------
1 file changed, 21 deletions(-) 1 file changed, 27 deletions(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 630f875bf..388c72ab1 100644 index b6233d9f7..9b3d395ba 100644
--- a/src/CMakeLists.txt --- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt +++ b/src/CMakeLists.txt
@@ -477,27 +477,6 @@ if(FLB_BINARY) @@ -515,33 +515,6 @@ if(FLB_BINARY)
DESTINATION "${FLB_INSTALL_BINDIR}") DESTINATION "${FLB_INSTALL_BINDIR}")
endif() endif()
- # Detect init system, install upstart, systemd or init.d script - # Detect init system, install upstart, systemd or init.d script
- if(IS_DIRECTORY /lib/systemd/system) -
- # Handle issues with detection on some systems during build
- if(NOT SYSTEMD_UNITDIR AND IS_DIRECTORY /lib/systemd/system)
- set(SYSTEMD_UNITDIR /lib/systemd/system)
- endif()
-
- if(SYSTEMD_UNITDIR)
- set(FLB_SYSTEMD_SCRIPT "${PROJECT_SOURCE_DIR}/init/${FLB_OUT_NAME}.service") - set(FLB_SYSTEMD_SCRIPT "${PROJECT_SOURCE_DIR}/init/${FLB_OUT_NAME}.service")
- configure_file( - configure_file(
- "${PROJECT_SOURCE_DIR}/init/systemd.in" - "${PROJECT_SOURCE_DIR}/init/systemd.in"
- ${FLB_SYSTEMD_SCRIPT} - ${FLB_SYSTEMD_SCRIPT}
- ) - )
- install(FILES ${FLB_SYSTEMD_SCRIPT} COMPONENT binary DESTINATION /lib/systemd/system) - install(FILES ${FLB_SYSTEMD_SCRIPT} COMPONENT binary DESTINATION ${SYSTEMD_UNITDIR})
- install(DIRECTORY DESTINATION ${FLB_INSTALL_CONFDIR} COMPONENT binary) - install(DIRECTORY DESTINATION ${FLB_INSTALL_CONFDIR} COMPONENT binary)
- elseif(IS_DIRECTORY /usr/share/upstart) - elseif(IS_DIRECTORY /usr/share/upstart)
- set(FLB_UPSTART_SCRIPT "${PROJECT_SOURCE_DIR}/init/${FLB_OUT_NAME}.conf") - set(FLB_UPSTART_SCRIPT "${PROJECT_SOURCE_DIR}/init/${FLB_OUT_NAME}.conf")
...@@ -42,4 +48,5 @@ index 630f875bf..388c72ab1 100644 ...@@ -42,4 +48,5 @@ index 630f875bf..388c72ab1 100644
install(FILES install(FILES
"${PROJECT_SOURCE_DIR}/conf/fluent-bit-win32.conf" "${PROJECT_SOURCE_DIR}/conf/fluent-bit-win32.conf"
-- --
2.37.0 2.40.1
[buildout] [buildout]
extends = extends =
../cmake/buildout.cfg
../bison/buildout.cfg ../bison/buildout.cfg
../cmake/buildout.cfg
../flex/buildout.cfg ../flex/buildout.cfg
../libyaml/buildout.cfg
../openssl/buildout.cfg
../patch/buildout.cfg ../patch/buildout.cfg
../zlib/buildout.cfg
[fluent-bit] [fluent-bit]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
url = https://github.com/fluent/fluent-bit/archive/refs/tags/v1.9.8.tar.gz shared = true
md5sum = a0973b739f1d1f0daaa503b077760cd7 url = https://github.com/fluent/fluent-bit/archive/refs/tags/v2.1.10.tar.gz
md5sum = 1608fdb463f19d3add5e9f17e2eb1f7d
configure-command = configure-command =
${cmake:location}/bin/cmake ${cmake:location}/bin/cmake
configure-options = configure-options =
-DFLB_CONFIG_YAML=Off .
-DCMAKE_INSTALL_PREFIX=@@LOCATION@@ -DCMAKE_INSTALL_PREFIX=@@LOCATION@@
-DFLB_LIBYAML_DIR=${libyaml:location}
-DOPENSSL_ROOT_DIR=${openssl:location}
environment = environment =
PATH=${bison:location}/bin:${flex:location}/bin:%(PATH)s PATH=${bison:location}/bin:${flex:location}/bin:%(PATH)s
LDFLAGS=-Wl,-rpath=${libyaml:location}/lib -Wl,-rpath=${openssl:location}/lib -Wl,-rpath=${zlib:location}/lib
patch-options = -p1 patch-options = -p1
patches = patches =
${:_profile_base_location_}/0001-slapos-don-t-try-to-install-system-startup-script.patch#c071d1aefe0adbc6c96bbdf92d9dbb29 ${:_profile_base_location_}/0001-slapos-don-t-try-to-install-system-startup-script.patch#7bf6e1b53c371db918dcc3778c6b28ed
patch-binary = ${patch:location}/bin/patch patch-binary = ${patch:location}/bin/patch
...@@ -74,19 +74,21 @@ openssl_location = ${openssl:location} ...@@ -74,19 +74,21 @@ openssl_location = ${openssl:location}
version = v12.18.3 version = v12.18.3
md5sum = 28bf6a4d98b238403fa58a0805f4a979 md5sum = 28bf6a4d98b238403fa58a0805f4a979
PATH = ${pkgconfig:location}/bin:${python2.7:location}/bin:%(PATH)s PATH = ${pkgconfig:location}/bin:${python2.7:location}/bin:%(PATH)s
configure-command = ./configure
[nodejs-8.9.4] [nodejs-8.9.4]
<= nodejs-base <= nodejs-base
version = v8.9.4 version = v8.9.4
md5sum = 4ddc1daff327d7e6f63da57fdfc24f55 md5sum = 4ddc1daff327d7e6f63da57fdfc24f55
PATH = ${pkgconfig:location}/bin:${python2.7:location}/bin:%(PATH)s PATH = ${pkgconfig:location}/bin:${python2.7:location}/bin:%(PATH)s
configure-command = ./configure
[nodejs-8.12.0] [nodejs-8.12.0]
<= nodejs-base <= nodejs-base
version = v8.12.0 version = v8.12.0
md5sum = 5690333b77964edf81945fc724f6ea85 md5sum = 5690333b77964edf81945fc724f6ea85
PATH = ${pkgconfig:location}/bin:${python2.7:location}/bin:%(PATH)s PATH = ${pkgconfig:location}/bin:${python2.7:location}/bin:%(PATH)s
configure-command = ./configure
[nodejs-base] [nodejs-base]
# Server-side Javascript. # Server-side Javascript.
...@@ -97,11 +99,13 @@ openssl_location = ${openssl-1.0:location} ...@@ -97,11 +99,13 @@ openssl_location = ${openssl-1.0:location}
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
shared = true shared = true
url = https://nodejs.org/dist/${:version}/node-${:version}.tar.gz url = https://nodejs.org/dist/${:version}/node-${:version}.tar.gz
configure-command = python3 configure
configure-options = configure-options =
--prefix=%(location)s
--shared-openssl --shared-openssl
--shared-openssl-includes=${:openssl_location}/include --shared-openssl-includes=${:openssl_location}/include
--shared-openssl-libpath=${:openssl_location}/lib --shared-openssl-libpath=${:openssl_location}/lib
PATH = ${pkgconfig:location}/bin:%(PATH)s PATH = ${python3:location}/bin:${pkgconfig:location}/bin:%(PATH)s
environment = environment =
HOME=@@LOCATION@@ HOME=@@LOCATION@@
PATH=${:PATH} PATH=${:PATH}
......
...@@ -19,6 +19,10 @@ md5sum = c2e9938f082b027110fba538de76684c ...@@ -19,6 +19,10 @@ md5sum = c2e9938f082b027110fba538de76684c
patch-options = -p1 patch-options = -p1
patches = patches =
${:_profile_base_location_}/ipv6_bugfix.patch#355bec02adee4ea73ff5a56ba6971ad2 ${:_profile_base_location_}/ipv6_bugfix.patch#355bec02adee4ea73ff5a56ba6971ad2
pre-configure =
# remove old FindPython3 which does not know about python > 3.8 to
# use FindPython3 bundled with slapos' cmake
rm tools/cmake/FindPython3.cmake tools/cmake/FindPython/Support.cmake
configure-command = configure-command =
${cmake:location}/bin/cmake ${cmake:location}/bin/cmake
configure-options = configure-options =
...@@ -30,5 +34,5 @@ configure-options = ...@@ -30,5 +34,5 @@ configure-options =
-DUA_NAMESPACE_ZERO=REDUCED -DUA_NAMESPACE_ZERO=REDUCED
post-install = post-install =
cp src/pubsub/*.h deps/open62541_queue.h @@LOCATION@@/include cp src/pubsub/*.h deps/open62541_queue.h @@LOCATION@@/include
environement = environment =
PATH=${python3:location}/bin:${patch:location}/bin:%(PATH)s PATH=${python3:location}/bin:${patch:location}/bin:%(PATH)s
From 26cf06121b03ef60fd49af6f0f56e743b332f6b0 Mon Sep 17 00:00:00 2001
From: Dan Dedrick <ddedrick@lexmark.com>
Date: Thu, 12 Oct 2017 21:49:39 -0400
Subject: [PATCH] Fix missing build dependency for pods
When building perl with highly parallel options (e.g. -j 32) on a machine
with many cores (e.g. 32) ocassionaly it fails with the following type
of error.
make[1]: Entering directory '.../cpan/podlators'
Can't locate Getopt/Long.pm in @INC (you may need to install the Getopt::Long module) (@INC contains: .../cpan/AutoLoader/lib .../dist/Carp/lib .../dist/PathTools .../dist/PathTools/lib .../cpan/ExtUtils-Install/lib .../cpan/ExtUtils-MakeMaker/lib .../cpan/ExtUtils-Manifest/lib .../cpan/File-Path/lib .../ext/re .../dist/Term-ReadLine/lib .../dist/Exporter/lib .../ext/File-Find/lib .../cpan/Text-Tabs/lib .../dist/constant/lib .../cpan/version/lib .../lib ../../lib .) at .../cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm line 109.
Makefile:445: recipe for target 'manifypods' failed
make[1]: *** [manifypods] Error 2
The scripts pod2man, pod2text, podchecker, podselect, and pod2usage all use
Getopt-Long and since they are all part of nonxs modules this needs to be
added here to prevent these build races.
---
write_buildcustomize.pl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/write_buildcustomize.pl b/write_buildcustomize.pl
index 8666a6bce2..7a55405029 100644
--- a/write_buildcustomize.pl
+++ b/write_buildcustomize.pl
@@ -39,6 +39,7 @@ my @toolchain = qw(cpan/AutoLoader/lib
cpan/Text-Tabs/lib
dist/constant/lib
cpan/version/lib
+ cpan/Getopt-Long/lib
);
# Text-ParseWords used only in ExtUtils::Liblist::Kid::_win32_ext()
@@ -47,7 +48,6 @@ my @toolchain = qw(cpan/AutoLoader/lib
push @toolchain, qw(
cpan/Text-ParseWords/lib
dist/ExtUtils-ParseXS/lib
- cpan/Getopt-Long/lib
cpan/parent/lib
cpan/ExtUtils-Constant/lib
) if $^O eq 'MSWin32';
--
2.13.6
From b2cb17719c9233fbc9040ced04418be051c91c14 Mon Sep 17 00:00:00 2001
From: Sawyer X <xsawyerx@cpan.org>
Date: Fri, 27 Apr 2018 20:35:42 +0300
Subject: Storable: fix for strawberry build failures:
Provided by Graham @haarg Knop.
Origin: upstream, https://perl5.git.perl.org/perl.git/commit/3f4cad1bbe7c6238adba5abb2415775a74eded4d
Patch-Name: fixes/storable-probing/prereq1.diff
---
dist/Storable/Makefile.PL | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/dist/Storable/Makefile.PL b/dist/Storable/Makefile.PL
index 697750566..4f0213277 100644
--- a/dist/Storable/Makefile.PL
+++ b/dist/Storable/Makefile.PL
@@ -14,10 +14,12 @@ use File::Spec;
unlink "lib/Storable/Limit.pm";
+my $limit_pm = File::Spec->catfile('lib', 'Storable', 'Limit.pm');
+
my $pm = { 'Storable.pm' => '$(INST_ARCHLIB)/Storable.pm' };
unless ($ENV{PERL_CORE}) {
# the core Makefile takes care of this for core builds
- $pm->{"lib/Storable/Limit.pm"} = '$(INST_ARCHLIB)/Storable/Limit.pm';
+ $pm->{$limit_pm} = '$(INST_ARCHLIB)/Storable/Limit.pm';
}
WriteMakefile(
@@ -91,7 +93,6 @@ sub depend {
$extra_deps = ' Storable.pm';
}
my $linktype = uc($_[0]->{LINKTYPE});
- my $limit_pm = File::Spec->catfile('lib', 'Storable', 'Limit.pm');
"
$limit_pm : stacksize \$(INST_$linktype)$extra_deps
\$(MKPATH) \$(INST_LIB)
@@ -111,7 +112,7 @@ sub test {
my $out = $self->SUPER::test(%attr);
if ($ENV{PERL_CORE}) {
- $out =~ s!^(test(?:db)?_(?:static|dynamic)\b.*)!$1 lib/Storable/Limit.pm!gm;
+ $out =~ s!^(test(?:db)?_(?:static|dynamic)\b.*)!$1 $limit_pm!gm;
}
$out;
From cece912f1d5e5e80dc8d64364b0ddc4bf729bd85 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Mon, 30 Jul 2018 21:00:52 +1000
Subject: (perl #133411) don't try to load Storable with -Dusecrosscompile
Origin: https://perl5.git.perl.org/perl.git/commit/edf639fce3e8c8852ee4179ab902b357b1deba98
Bug: https://rt.perl.org/Public/Bug/Display.html?id=133411
Patch-Name: fixes/storable-probing/prereq2.diff
---
dist/Storable/Makefile.PL | 9 ++++++++-
dist/Storable/stacksize | 10 +++++++---
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/dist/Storable/Makefile.PL b/dist/Storable/Makefile.PL
index 4f0213277..69efc8294 100644
--- a/dist/Storable/Makefile.PL
+++ b/dist/Storable/Makefile.PL
@@ -92,11 +92,18 @@ sub depend {
# blib.pm needs arch/lib
$extra_deps = ' Storable.pm';
}
+ my $whichperl;
+ if ($Config::Config{usecrosscompile}) {
+ $whichperl = '$(PERLRUN)';
+ }
+ else {
+ $whichperl = '$(FULLPERLRUNINST)';
+ }
my $linktype = uc($_[0]->{LINKTYPE});
"
$limit_pm : stacksize \$(INST_$linktype)$extra_deps
\$(MKPATH) \$(INST_LIB)
- \$(FULLPERLRUNINST) stacksize $options
+ $whichperl stacksize $options
release : dist
git tag \$(VERSION)
diff --git a/dist/Storable/stacksize b/dist/Storable/stacksize
index 7abd3a84c..14e073973 100644
--- a/dist/Storable/stacksize
+++ b/dist/Storable/stacksize
@@ -7,6 +7,9 @@ use Cwd;
use File::Spec;
use strict;
+-d "lib" or mkdir "lib";
+-d "lib/Storable" or mkdir "lib/Storable";
+
my $fn = "lib/Storable/Limit.pm";
my $ptrsize = $Config{ptrsize};
my ($bad1, $bad2) = (65001, 25000);
@@ -29,6 +32,10 @@ sub is_miniperl {
}
if (is_miniperl()) {
+ if ($Config{usecrosscompile}) {
+ write_limits(500, 265);
+ exit;
+ }
die "Should not run during miniperl\n";
}
my $prefix = "";
@@ -68,9 +75,6 @@ if ($ENV{PERL_CORE}) {
}
}
--d "lib" or mkdir "lib";
--d "lib/Storable" or mkdir "lib/Storable";
-
if ($^O eq "MSWin32") {
require Win32;
my ($str, $major, $minor) = Win32::GetOSVersion();
From 8685a1be32d2d900ee599dc3102f334b93314512 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Tue, 4 Dec 2018 15:11:17 +1100
Subject: (perl #133708) remove build-time probing for stack limits for
Storable
Backported for Debian 5.28 by Niko Tyni
Origin: backport, https://perl5.git.perl.org/perl.git/commit/2a0bbd31bbcc94c7c511f9575df619c5fdf3164c
Bug: https://rt.perl.org/Public/Bug/Display.html?id=133708
Bug-Debian: https://bugs.debian.org/914133
Patch-Name: fixes/storable-probing/disable-probing.diff
---
Makefile.SH | 25 ------------
dist/Storable/Makefile.PL | 40 ------------------
dist/Storable/__Storable__.pm | 12 +++---
dist/Storable/stacksize | 77 ++++++++---------------------------
dist/Storable/t/recurse.t | 4 +-
win32/GNUmakefile | 12 +-----
win32/Makefile | 10 +----
win32/makefile.mk | 15 +------
8 files changed, 31 insertions(+), 164 deletions(-)
diff --git a/Makefile.SH b/Makefile.SH
index 48151bce6..084924dab 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -173,15 +173,11 @@ esac
: is Cwd static or dynamic
static_cwd='define'
-storable_limit_dep=''
-storable_type=''
list_util_dep='$(PERL_EXE)'
for f in $dynamic_ext; do
case $f in
Cwd) static_cwd='undef' ;;
List/Util) list_util_dep=lib/auto/List/Util/Util.$dlext ;;
- Storable) storable_limit_dep=lib/auto/Storable/Storable.$dlext
- storable_type='dynamic' ;;
esac
done
@@ -218,7 +214,6 @@ for f in $static_ext; do
$this_target: lib/auto/List/Util/Util\$(LIB_EXT)" ;;
Unicode/Normalize) extra_dep="$extra_dep
$this_target: uni.data" ;;
- Storable) storable_type='static' ;;
esac
done
@@ -1155,26 +1150,6 @@ no_install no-install: install-notify
install: install-all
!NO!SUBS!
-if test "$storable_type" != "" ; then
-
-case "$static_cwd" in
-undef) storable_limit_dep="$storable_limit_dep lib/auto/Cwd/Cwd.$dlext" ;;
-esac
-
-$spitshell >>$Makefile <<EOT
-
-dist/Storable/lib/Storable/Limit.pm : \$(PERL_EXE) dist/Storable/stacksize $storable_limit_dep
- cd dist/Storable ; \$(LDLIBPTH) \$(MAKE) lib/Storable/Limit.pm
-
-lib/Storable/Limit.pm : dist/Storable/lib/Storable/Limit.pm
- test -d lib/Storable || mkdir lib/Storable
- cp dist/Storable/lib/Storable/Limit.pm lib/Storable/Limit.pm
-EOT
-
-common_build_deps="$common_build_deps lib/Storable/Limit.pm"
-
-fi
-
for name in all notify silent strip verbose; do
flags="--$name";
flags=`echo $flags | sed -e 's/--all//'`
diff --git a/dist/Storable/Makefile.PL b/dist/Storable/Makefile.PL
index 69efc8294..60af5d256 100644
--- a/dist/Storable/Makefile.PL
+++ b/dist/Storable/Makefile.PL
@@ -12,15 +12,7 @@ use Config;
use File::Copy qw(move copy);
use File::Spec;
-unlink "lib/Storable/Limit.pm";
-
-my $limit_pm = File::Spec->catfile('lib', 'Storable', 'Limit.pm');
-
my $pm = { 'Storable.pm' => '$(INST_ARCHLIB)/Storable.pm' };
-unless ($ENV{PERL_CORE}) {
- # the core Makefile takes care of this for core builds
- $pm->{$limit_pm} = '$(INST_ARCHLIB)/Storable/Limit.pm';
-}
WriteMakefile(
NAME => 'Storable',
@@ -83,27 +75,7 @@ sub xlinkext {
}
sub depend {
- my $extra_deps = "";
- my $options = "";
- if ($ENV{PERL_CORE}) {
- $options = "--core";
- }
- else {
- # blib.pm needs arch/lib
- $extra_deps = ' Storable.pm';
- }
- my $whichperl;
- if ($Config::Config{usecrosscompile}) {
- $whichperl = '$(PERLRUN)';
- }
- else {
- $whichperl = '$(FULLPERLRUNINST)';
- }
- my $linktype = uc($_[0]->{LINKTYPE});
"
-$limit_pm : stacksize \$(INST_$linktype)$extra_deps
- \$(MKPATH) \$(INST_LIB)
- $whichperl stacksize $options
release : dist
git tag \$(VERSION)
@@ -113,18 +85,6 @@ release : dist
"
}
-sub test {
- my ($self, %attr) = @_;
-
- my $out = $self->SUPER::test(%attr);
-
- if ($ENV{PERL_CORE}) {
- $out =~ s!^(test(?:db)?_(?:static|dynamic)\b.*)!$1 $limit_pm!gm;
- }
-
- $out;
-}
-
sub postamble {
'
all :: Storable.pm
diff --git a/dist/Storable/__Storable__.pm b/dist/Storable/__Storable__.pm
index 71c669daa..e5a655ecd 100644
--- a/dist/Storable/__Storable__.pm
+++ b/dist/Storable/__Storable__.pm
@@ -32,8 +32,6 @@ our $VERSION = '3.08';
our $recursion_limit;
our $recursion_limit_hash;
-do "Storable/Limit.pm";
-
$recursion_limit = 512
unless defined $recursion_limit;
$recursion_limit_hash = 256
@@ -941,13 +939,13 @@ There are a few things you need to know, however:
=item *
-Since Storable 3.05 we probe for the stack recursion limit for references,
+From Storable 3.05 to 3.13 we probed for the stack recursion limit for references,
arrays and hashes to a maximal depth of ~1200-35000, otherwise we might
fall into a stack-overflow. On JSON::XS this limit is 512 btw. With
references not immediately referencing each other there's no such
limit yet, so you might fall into such a stack-overflow segfault.
-This probing and the checks performed have some limitations:
+This probing and the checks we performed have some limitations:
=over
@@ -955,7 +953,9 @@ This probing and the checks performed have some limitations:
the stack size at build time might be different at run time, eg. the
stack size may have been modified with ulimit(1). If it's larger at
-run time Storable may fail the freeze() or thaw() unnecessarily.
+run time Storable may fail the freeze() or thaw() unnecessarily. If
+it's larger at build time Storable may segmentation fault when
+processing a deep structure at run time.
=item *
@@ -970,6 +970,8 @@ stack without triggering Storable's recursion protection.
=back
+So these now have simple defaults rather than probing at build-time.
+
You can control the maximum array and hash recursion depths by
modifying C<$Storable::recursion_limit> and
C<$Storable::recursion_limit_hash> respectively. Either can be set to
diff --git a/dist/Storable/stacksize b/dist/Storable/stacksize
index 14e073973..f93eccce1 100644
--- a/dist/Storable/stacksize
+++ b/dist/Storable/stacksize
@@ -1,21 +1,17 @@
#!/usr/bin/perl
# binary search maximum stack depth for arrays and hashes
-# and store it in lib/Storable/Limit.pm
+# and report it to stdout as code to set the limits
use Config;
use Cwd;
use File::Spec;
use strict;
--d "lib" or mkdir "lib";
--d "lib/Storable" or mkdir "lib/Storable";
-
-my $fn = "lib/Storable/Limit.pm";
my $ptrsize = $Config{ptrsize};
my ($bad1, $bad2) = (65001, 25000);
sub QUIET () {
(defined $ENV{MAKEFLAGS} and $ENV{MAKEFLAGS} =~ /\b(s|silent|quiet)\b/
- and !defined($ENV{TRAVIS}))
+ and !defined($ENV{TRAVIS})) || @ARGV && $ARGV[0] eq "-q"
? 1 : 0
}
sub PARALLEL () {
@@ -32,11 +28,7 @@ sub is_miniperl {
}
if (is_miniperl()) {
- if ($Config{usecrosscompile}) {
- write_limits(500, 265);
- exit;
- }
- die "Should not run during miniperl\n";
+ die "Should not run using miniperl\n";
}
my $prefix = "";
if ($^O eq "MSWin32") {
@@ -51,58 +43,28 @@ elsif (system("ulimit -c 0 ;") == 0) {
# try to prevent core dumps
$prefix = "ulimit -c 0 ; ";
}
-if (@ARGV and $ARGV[0] eq '--core') {
- $ENV{PERL_CORE} = 1;
-}
my $PERL = $^X;
-if ($ENV{PERL_CORE}) {
- my $path;
- my $ldlib = $Config{ldlibpthname};
- if (-d 'dist/Storable') {
- chdir 'dist/Storable';
- $PERL = "../../$PERL" unless $PERL =~ m|^/|;
- }
- if ($ldlib) {
- $path = getcwd()."/../..";
- }
- if ($^O eq 'MSWin32' and -d '../dist/Storable') {
- chdir '..\dist\Storable';
- $PERL = "..\\..\\$PERL" unless $PERL =~ /^[A-Za-z]:\\/;
- }
- $PERL = "\"$PERL\"" if $PERL =~ / /;
- if ($ldlib and $ldlib ne 'PATH') {
- $PERL = "$ldlib=$path $PERL";
- }
-}
-
if ($^O eq "MSWin32") {
require Win32;
my ($str, $major, $minor) = Win32::GetOSVersion();
if ($major < 6 || $major == 6 && $minor < 1) {
- print "Using defaults for older Win32\n";
+ print "# Using defaults for older Win32\n";
write_limits(500, 256);
exit;
}
}
my ($n, $good, $bad, $found) =
(65000, 100, $bad1, undef);
-print "probe for max. stack sizes...\n" unless QUIET;
+print "# probe for max. stack sizes...\n" unless QUIET;
# -I. since we're run before pm_to_blib (which is going to copy the
# file we create) and need to load our Storable.pm, not the already
# installed Storable.pm
-my $mblib = '-Mblib -I.';
-if ($ENV{PERL_CORE}) {
- if ($^O eq 'MSWin32') {
- $mblib = '-I..\..\lib\auto -I..\..\lib';
- } else {
- $mblib = '-I../../lib/auto -I../../lib';
- }
+my $mblib = '';
+if (-d 'blib') {
+ $mblib = '-Mblib -I.';
}
-if (PARALLEL) {
- # problem with parallel builds. wait for INST_DYNAMIC linking to be done.
- # the problem is the RM_F INST_DYNAMIC race.
- print "parallel build race - wait for linker ...\n" unless QUIET;
- sleep(2.0);
+elsif (-f "Configure") {
+ $mblib = '-Ilib';
}
sub cmd {
@@ -117,7 +79,7 @@ sub cmd {
sub good {
my $i = shift; # this passed
my $j = $i + abs(int(($bad - $i) / 2));
- print "Storable: determining recursion limit: $i passed, try more $j ...\n" unless QUIET;
+ print "# Storable: determining recursion limit: $i passed, try more $j ...\n" unless QUIET;
$good = $i;
if ($j <= $i) {
$found++;
@@ -128,7 +90,7 @@ sub good {
sub bad {
my $i = shift; # this failed
my $j = $i - abs(int(($i - $good) / 2));
- print "Storable: determining recursion limit: $i too big, try less $j ...\n" unless QUIET;
+ print "# Storable: determining recursion limit: $i too big, try less $j ...\n" unless QUIET;
$bad = $i;
if ($j >= $i) {
$j = $good;
@@ -162,7 +124,7 @@ while (!$found) {
$n = bad($n);
}
}
-print "MAX_DEPTH = $n\n" unless QUIET;
+print "# MAX_DEPTH = $n\n" unless QUIET;
my $max_depth = $n;
($n, $good, $bad, $found) =
@@ -186,13 +148,13 @@ if ($max_depth == $bad1-1
and $n == $bad2-1)
{
# more likely the shell. travis docker ubuntu, mingw e.g.
- print "Error: Apparently your system(SHELLSTRING) cannot catch stack overflows\n"
+ print "# Apparently your system(SHELLSTRING) cannot catch stack overflows\n"
unless QUIET;
$max_depth = 512;
$n = 256;
print "MAX_DEPTH = $max_depth\n" unless QUIET;
}
-print "MAX_DEPTH_HASH = $n\n" unless QUIET;
+print "# MAX_DEPTH_HASH = $n\n" unless QUIET;
my $max_depth_hash = $n;
# Previously this calculation was done in the macro, calculate it here
@@ -203,7 +165,7 @@ my $max_depth_hash = $n;
# several apparently random failures here, eg. working in one
# configuration, but not in a very similar configuration.
$max_depth = int(0.6 * $max_depth);
-$max_depth_hash = int(0.6 * $max_depth);
+$max_depth_hash = int(0.6 * $max_depth_hash);
my $stack_reserve = $^O eq "MSWin32" ? 32 : 16;
if ($] ge "5.016" && !($^O eq "cygwin" && $ptrsize == 8)) {
@@ -221,16 +183,11 @@ write_limits($max_depth, $max_depth_hash);
sub write_limits {
my ($max_depth, $max_depth_hash) = @_;
- my $f;
- open $f, ">", $fn or die "$fn $!";
- print $f <<EOS;
+ print <<EOS;
# bisected by stacksize
\$Storable::recursion_limit = $max_depth
unless defined \$Storable::recursion_limit;
\$Storable::recursion_limit_hash = $max_depth_hash
unless defined \$Storable::recursion_limit_hash;
-1;
EOS
- close $f
- or die "Failed to close $fn: $!\n";
}
diff --git a/dist/Storable/t/recurse.t b/dist/Storable/t/recurse.t
index 63fde90fd..b5967a072 100644
--- a/dist/Storable/t/recurse.t
+++ b/dist/Storable/t/recurse.t
@@ -318,9 +318,11 @@ is($refcount_ok, 1, "check refcount");
# Small 64bit systems fail with 1200 (c++ debugging), with gcc 3000.
# Optimized 64bit allows up to 33.000 recursion depth.
# with asan the limit is 255 though.
+
+local $Storable::recursion_limit = 30;
+local $Storable::recursion_limit_hash = 20;
sub MAX_DEPTH () { Storable::stack_depth() }
sub MAX_DEPTH_HASH () { Storable::stack_depth_hash() }
-sub OVERFLOW () { 35000 }
{
my $t;
print "# max depth ", MAX_DEPTH, "\n";
diff --git a/win32/GNUmakefile b/win32/GNUmakefile
index 05193a1f2..afc18ec8a 100644
--- a/win32/GNUmakefile
+++ b/win32/GNUmakefile
@@ -1168,7 +1168,7 @@ CFG_VARS = \
.PHONY: all info
-all : info rebasePE Extensions_nonxs $(PERLSTATIC) PostExt
+all : info rebasePE Extensions_nonxs $(PERLSTATIC)
info :
@echo # CCTYPE=$(CCTYPE)
@@ -1612,16 +1612,6 @@ Extensions_clean :
Extensions_realclean :
-if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(PLMAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=realclean
-PostExt : ..\lib\Storable\Limit.pm
-
-# we need the exe, perl(ver).dll, and the Exporter, Storable, Win32 extensions
-# rebasePE most of that, including adjustment for static builds, so we
-# just need non-xs extensions
-..\lib\Storable\Limit.pm : rebasePE Extensions_nonxs
- $(PLMAKE) -C ..\dist\Storable lib\Storable\Limit.pm
- if not exist ..\lib\Storable mkdir ..\lib\Storable
- copy ..\dist\Storable\lib\Storable\Limit.pm ..\lib\Storable\Limit.pm
-
# all PE files need to be built by the time this target runs, PP files can still
# be running in parallel like UNIDATAFILES, this target a placeholder for the
# future
diff --git a/win32/Makefile b/win32/Makefile
index 1e245f712..a4776dd22 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -939,7 +939,7 @@ CFG_VARS = \
#
all : .\config.h ..\git_version.h $(GLOBEXE) $(CONFIGPM) \
- $(UNIDATAFILES) MakePPPort $(PERLEXE) Extensions_nonxs Extensions PostExt \
+ $(UNIDATAFILES) MakePPPort $(PERLEXE) Extensions_nonxs Extensions \
$(PERLSTATIC)
@echo Everything is up to date. '$(MAKE_BARE) test' to run test suite.
@@ -1225,13 +1225,6 @@ Extensions_clean:
Extensions_realclean:
-if exist $(MINIPERL) $(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(MAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --all --target=realclean
-PostExt: ..\lib\Storable\Limit.pm
-
-..\lib\Storable\Limit.pm: $(PERLEXE) Extensions
- cd ..\dist\Storable && $(MAKE) lib\Storable\Limit.pm
- if not exist ..\lib\Storable mkdir ..\lib\Storable
- copy ..\dist\Storable\lib\Storable\Limit.pm ..\lib\Storable\Limit.pm
-
#-------------------------------------------------------------------------------
doc: $(PERLEXE) ..\pod\perltoc.pod
@@ -1310,7 +1303,6 @@ distclean: realclean
-del /f $(LIBDIR)\Time\HiRes.pm
-del /f $(LIBDIR)\Unicode\Normalize.pm
-del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
- -del /f $(LIBDIR)\Storable.pm $(LIBDIR)\Storable\Limit.pm
-del /f $(LIBDIR)\Win32.pm
-del /f $(LIBDIR)\Win32CORE.pm
-del /f $(LIBDIR)\Win32API\File.pm
diff --git a/win32/makefile.mk b/win32/makefile.mk
index a6072a95a..15b148d15 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -1139,7 +1139,7 @@ CFG_VARS = \
# Top targets
#
-all : CHECKDMAKE rebasePE Extensions_nonxs $(PERLSTATIC) PostExt
+all : CHECKDMAKE rebasePE Extensions_nonxs $(PERLSTATIC)
..\regcomp$(o) : ..\regnodes.h ..\regcharclass.h
@@ -1563,17 +1563,6 @@ rebasePE : Extensions $(PERLDLL) $(NORMALIZE_DYN) $(PERLEXE)
.ENDIF
$(NOOP)
-PostExt : ..\lib\Storable\Limit.pm
- $(NOOP)
-
-# we need the exe, perl(ver).dll, and the Exporter, Storable, Win32 extensions
-# rebasePE most of that, including adjustment for static builds, so we
-# just need non-xs extensions
-..\lib\Storable\Limit.pm : rebasePE Extensions_nonxs
- cd ..\dist\Storable && $(MAKE) lib\Storable\Limit.pm
- if not exist ..\lib\Storable mkdir ..\lib\Storable
- copy ..\dist\Storable\lib\Storable\Limit.pm ..\lib\Storable\Limit.pm
-
#-------------------------------------------------------------------------------
@@ -1648,7 +1637,7 @@ distclean: realclean
-del /f $(LIBDIR)\Time\HiRes.pm
-del /f $(LIBDIR)\Unicode\Normalize.pm
-del /f $(LIBDIR)\Math\BigInt\FastCalc.pm
- -del /f $(LIBDIR)\Storable.pm $(LIBDIR)\Storable\Limit.pm
+ -del /f $(LIBDIR)\Storable.pm
-del /f $(LIBDIR)\Win32.pm
-del /f $(LIBDIR)\Win32CORE.pm
-del /f $(LIBDIR)\Win32API\File.pm
[buildout] [buildout]
extends = extends =
../gdbm/buildout.cfg ../gdbm/buildout.cfg
../patch/buildout.cfg
../xz-utils/buildout.cfg ../xz-utils/buildout.cfg
parts = parts =
perl perl
...@@ -9,17 +8,10 @@ parts = ...@@ -9,17 +8,10 @@ parts =
[perl] [perl]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
shared = true shared = true
version = 5.28.1 version = 5.38.0
url = http://www.cpan.org/src/5.0/perl-${:version}.tar.xz url = https://www.cpan.org/src/5.0/perl-${:version}.tar.xz
md5sum = fbb590c305f2f88578f448581b8cf9c4 md5sum = e1c8aaec897dd386c741f97eef9f2e87
siteprefix =@@LOCATION@@/site_${:_buildout_section_name_} siteprefix =@@LOCATION@@/site_${:_buildout_section_name_}
patch-options = -p1
patches =
${:_profile_base_location_}/perl-keep-linker-flags-in-ldflags.patch#4e8e0c59d7176eafb0c7402dea17bef1
${:_profile_base_location_}/0001-Fix-missing-build-dependency-for-pods.patch#85aff81f3bea34fcd6ce9a611ee1cdb2
${:_profile_base_location_}/0002-prereq1.patch#c9bf3b521a39134d044eaa2c2312174f
${:_profile_base_location_}/0003-prereq2.patch#5268ff6dd06718cff34e6fb758045996
${:_profile_base_location_}/0004-disable-probing.patch#e68446ccd155c2282639e495a5be612b
configure-command = configure-command =
sh Configure -des \ sh Configure -des \
-Dprefix=@@LOCATION@@ \ -Dprefix=@@LOCATION@@ \
...@@ -30,7 +22,7 @@ configure-command = ...@@ -30,7 +22,7 @@ configure-command =
-Dnoextensions=ODBM_File \ -Dnoextensions=ODBM_File \
-Dusethreads -Dusethreads
environment = environment =
PATH=${patch:location}/bin:${xz-utils:location}/bin:%(PATH)s PATH=${xz-utils:location}/bin:%(PATH)s
post-make-hook = ${:_profile_base_location_}/perl-create-libs-symlink.py#8a2cae20c74f93c2bab2c82564aeeaca:post_make_hook post-make-hook = ${:_profile_base_location_}/perl-create-libs-symlink.py#8a2cae20c74f93c2bab2c82564aeeaca:post_make_hook
......
--- perl-5.20.0/Configure.orig 2014-05-28 15:27:22.865060361 +0200
+++ perl-5.20.0/Configure 2014-05-28 15:32:14.297064994 +0200
@@ -8277,16 +8277,7 @@
case "$dflt" in
none) dflt='' ;;
esac
- for thisflag in $ldflags; do
- case "$thisflag" in
- -L*|-R*|-Wl,-R*)
- case " $dflt " in
- *" $thisflag "*) ;;
- *) dflt="$dflt $thisflag" ;;
- esac
- ;;
- esac
- done
+ dflt="$dflt $ldflags"
case "$dflt" in
''|' ') dflt='none' ;;
[buildout] [buildout]
extends = extends =
../readline/buildout.cfg ../readline/buildout.cfg
../tcl/buildout.cfg
../zlib/buildout.cfg ../zlib/buildout.cfg
parts = parts =
sqlite3 sqlite3
...@@ -8,14 +9,18 @@ parts = ...@@ -8,14 +9,18 @@ parts =
[sqlite3] [sqlite3]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
shared = true shared = true
url = https://sqlite.org/2022/sqlite-autoconf-3370200.tar.gz # Some options need the canonical source code (i.e. not as an amalgamation).
md5sum = 683cc5312ee74e71079c14d24b7a6d27 url = https://deb.debian.org/debian/pool/main/s/sqlite3/sqlite3_3.40.1.orig.tar.xz
md5sum = 79f2507907721b770cbec98195cecece
pre-configure = sed -i 's/-ltinfo//g;s/-ltermcap//g;s/ termcap//;s/ curses//' configure pre-configure = sed -i 's/-ltinfo//g;s/-ltermcap//g;s/ termcap//;s/ curses//' configure
configure-options = configure-options =
--disable-static --disable-static
--disable-tcl
--enable-readline --enable-readline
# Increase MAX_VARIABLE_NUMBER like many os. For example: # Increase MAX_VARIABLE_NUMBER like many os. For example:
# https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/sqlite # https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/sqlite
# NEO needs SQLITE_ENABLE_UPDATE_DELETE_LIMIT to drop partitions.
environment = environment =
CPPFLAGS=-I${readline:location}/include -I${ncurses:location}/include -I${zlib:location}/include -DSQLITE_MAX_VARIABLE_NUMBER=250000 CPPFLAGS=-I${readline:location}/include -I${ncurses:location}/include -I${zlib:location}/include -DSQLITE_MAX_VARIABLE_NUMBER=250000 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1
LDFLAGS=-L@@LOCATION@@ -Wl,-rpath=${readline:location}/lib -Wl,-rpath=${ncurses:location}/lib -L${readline:location}/lib -L${ncurses:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib LDFLAGS=-L@@LOCATION@@ -Wl,-rpath=${readline:location}/lib -Wl,-rpath=${ncurses:location}/lib -L${readline:location}/lib -L${ncurses:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib
PATH=${tcl:location}/bin:%(PATH)s
...@@ -5,13 +5,14 @@ parts = tcl ...@@ -5,13 +5,14 @@ parts = tcl
[tcl] [tcl]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
url = http://prdownloads.sourceforge.net/tcl/tcl8.6.11-src.tar.gz url = https://prdownloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz
md5sum = 8a4c004f48984a03a7747e9ba06e4da4 md5sum = 0e4358aade2f5db8a8b6f2f6d9481ec2
shared = true shared = true
environment = environment =
CPPFLAGS=-I${zlib:location}/include CPPFLAGS=-I${zlib:location}/include
LDFLAGS=-L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib LDFLAGS=-L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib
configure-command = ./unix/configure pre-configure = rm -r pkgs/*/
configure-command = unix/configure
configure-options = configure-options =
--prefix=@@LOCATION@@ --prefix=%(location)s
--with-encoding=utf-8 --with-encoding=utf-8
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
[template] [template]
filename = instance.cfg filename = instance.cfg
md5sum = bc60058a9407fc481b1a652b2f3b5498 md5sum = 998b5ec0dc8c76736c624af2f96ea94d
[amarisoft-stats.jinja2.py] [amarisoft-stats.jinja2.py]
_update_hash_filename_ = amarisoft-stats.jinja2.py _update_hash_filename_ = amarisoft-stats.jinja2.py
...@@ -28,7 +28,7 @@ md5sum = ab666fdfadbfc7d8a16ace38d295c883 ...@@ -28,7 +28,7 @@ md5sum = ab666fdfadbfc7d8a16ace38d295c883
[ncclient_common] [ncclient_common]
_update_hash_filename_ = ncclient_common.py _update_hash_filename_ = ncclient_common.py
md5sum = 63316f6a8a6a480e10db7e78cca72f3b md5sum = 6f8d0592cc4b0b695cea5a0c25aafc4e
[lopcomm-rrh-stats.jinja2.py] [lopcomm-rrh-stats.jinja2.py]
_update_hash_filename_ = lopcomm-rrh-stats.jinja2.py _update_hash_filename_ = lopcomm-rrh-stats.jinja2.py
...@@ -46,9 +46,17 @@ md5sum = 2cd8515253b75e2ab13cc77399762851 ...@@ -46,9 +46,17 @@ md5sum = 2cd8515253b75e2ab13cc77399762851
_update_hash_filename_ = lopcomm-rrh-supervision.jinja2.py _update_hash_filename_ = lopcomm-rrh-supervision.jinja2.py
md5sum = 243d9fbf640b8dc8bf63d69b07b8afed md5sum = 243d9fbf640b8dc8bf63d69b07b8afed
[lopcomm-rrh-reset-info.jinja2.py]
_update_hash_filename_ = lopcomm-rrh-reset-info.jinja2.py
md5sum = e03d7fea24566aa8291f0dc4aaf09c67
[lopcomm-rrh-reset.jinja2.py]
_update_hash_filename_ = lopcomm-rrh-reset.jinja2.py
md5sum = 63472d5dc9bd46923d3941b5189e2ccd
[template-enb] [template-enb]
_update_hash_filename_ = instance-enb.jinja2.cfg _update_hash_filename_ = instance-enb.jinja2.cfg
md5sum = 8a47df7cfefa3876afea38ced2c5005f md5sum = d1111793f54ef444f864a7adf815c822
[template-gnb] [template-gnb]
_update_hash_filename_ = instance-gnb.jinja2.cfg _update_hash_filename_ = instance-gnb.jinja2.cfg
...@@ -76,7 +84,7 @@ md5sum = dcaac06553a3222b14c0013a13f4a149 ...@@ -76,7 +84,7 @@ md5sum = dcaac06553a3222b14c0013a13f4a149
[enb.jinja2.cfg] [enb.jinja2.cfg]
filename = config/enb.jinja2.cfg filename = config/enb.jinja2.cfg
md5sum = e33bf40dfdb32d91d3a1b3f3a10ede34 md5sum = 0251445fc4b1139000b99ff28ef729c9
[sib23.jinja2.asn] [sib23.jinja2.asn]
filename = config/sib23.jinja2.asn filename = config/sib23.jinja2.asn
......
Changelog Changelog
========= =========
Version 1.0.339 (2023-10-16)
-------------
* Lopcomm firmware update
* RRH reset (reboot) function added
* Fix cpri_tx_dbm parameter
* Print RRH IPv6 and firmware information
Version 1.0.336 (2023-09-25) Version 1.0.336 (2023-09-25)
------------- -------------
......
...@@ -77,6 +77,14 @@ ...@@ -77,6 +77,14 @@
{{ cell_list[k].get('cpri_tx_delay', 0) }} {{ cell_list[k].get('cpri_tx_delay', 0) }}
{%- endfor -%} {%- endfor -%}
", ",
cpri_tx_dbm: "
{%- for i, k in enumerate(cell_list) %}
{%- if i != 0 -%}
,
{%- endif -%}
{{ cell_list[k].get('cpri_tx_dbm', 0) }}
{%- endfor -%}
",
ifname: " ifname: "
{%- if cell_count == 1 -%} {%- if cell_count == 1 -%}
{{ slap_configuration.get('tap-name', '') }} {{ slap_configuration.get('tap-name', '') }}
......
...@@ -240,6 +240,11 @@ ...@@ -240,6 +240,11 @@
"textarea": true, "textarea": true,
"type": "string" "type": "string"
}, },
"cron_schedule": {
"title": "Cron schedule for RRH reset",
"description": "Refer https://crontab.guru/ to make a reset schedule for RRH, for example, '0 1 * * *' means the RRH will reset every day at 1 am",
"type": "string"
},
{%- endif %} {%- endif %}
"enb_id": { "enb_id": {
"title": "eNB ID", "title": "eNB ID",
......
...@@ -14,6 +14,10 @@ parts = ...@@ -14,6 +14,10 @@ parts =
lopcomm-firmware-dl lopcomm-firmware-dl
lopcomm-rrh-stats-service lopcomm-rrh-stats-service
lopcomm-rrh-supervision-service lopcomm-rrh-supervision-service
lopcomm-rrh-reset-info-service
{% if slapparameter_dict.get("cron_schedule", None) %}
lopcomm-rrh-reset-cron
{% endif %}
lopcomm-rrh-config-template lopcomm-rrh-config-template
lopcomm-rrh-software-template lopcomm-rrh-software-template
netconf-connection-promise netconf-connection-promise
...@@ -369,6 +373,45 @@ mode = 0775 ...@@ -369,6 +373,45 @@ mode = 0775
url = {{ lopcomm_rrh_supervision_template }} url = {{ lopcomm_rrh_supervision_template }}
output = ${directory:bin}/lopcomm-rrh-supervision.py output = ${directory:bin}/lopcomm-rrh-supervision.py
[lopcomm-rrh-reset-info-template]
recipe = slapos.recipe.template:jinja2
extensions = jinja2.ext.do
log-output = ${directory:var}/log/lopcomm-rrh-reset-info.log
json-log-output = ${directory:var}/log/lopcomm-rrh-reset-info.json.log
context =
section slap_configuration slap-configuration
key log_file :log-output
key json_log_file :json-log-output
raw stats_period {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }}
raw testing {{ slapparameter_dict.get("testing", False) }}
raw python_path {{ buildout_directory}}/bin/pythonwitheggs
import netaddr netaddr
mode = 0775
url = {{ lopcomm_rrh_reset_info_template }}
output = ${directory:bin}/lopcomm-rrh-reset-info.py
[lopcomm-rrh-reset-template]
recipe = slapos.recipe.template:jinja2
extensions = jinja2.ext.do
log-output = ${directory:var}/log/lopcomm-rrh-reset.log
json-log-output = ${directory:var}/log/lopcomm-rrh-reset.json.log
context =
section slap_configuration slap-configuration
key log_file :log-output
raw python_path {{ buildout_directory}}/bin/pythonwitheggs
raw buildout_directory_path {{ buildout_directory }}
import netaddr netaddr
mode = 0775
url = {{ lopcomm_rrh_reset_template }}
output = ${directory:etc}/lopcomm-rrh-reset.py
[lopcomm-rrh-reset-cron]
recipe = slapos.cookbook:cron.d
cron-entries = ${cron:cron-entries}
name = rrh-resest
frequency = {{ slapparameter_dict.get("cron_schedule", "") }}
command = {{ buildout_directory}}/bin/pythonwitheggs ${lopcomm-rrh-reset-template:output}
[netconf-connection-promise] [netconf-connection-promise]
<= monitor-promise-base <= monitor-promise-base
promise = check_command_execute promise = check_command_execute
...@@ -420,11 +463,19 @@ mode = 0775 ...@@ -420,11 +463,19 @@ mode = 0775
hash-files = hash-files =
${lopcomm-rrh-supervision-template:output} ${lopcomm-rrh-supervision-template:output}
[lopcomm-rrh-reset-info-service]
recipe = slapos.cookbook:wrapper
command-line = ${lopcomm-rrh-reset-info-template:output}
wrapper-path = ${directory:service}/lopcomm-rrh-reset-info
mode = 0775
hash-files =
${lopcomm-rrh-reset-info-template:output}
[lopcomm-firmware-dl] [lopcomm-firmware-dl]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
url = https://lab.nexedi.com/nexedi/ors-utils/raw/master/lopcomm-firmware/${:filename} url = https://lab.nexedi.com/nexedi/ors-utils/raw/master/lopcomm-firmware/${:filename}
filename = PR.PRM61C70V1004.002.tar.gz filename = PR.PRM61C70V1004.006.tar.gz
md5sum = 4e06fd62968f9f53fd819ef8d880a8f4 md5sum = 5139019aae77c2f3178a99915f1c57dc
destination = ${directory:etc}/${:filename} destination = ${directory:etc}/${:filename}
offline = false offline = false
...@@ -545,6 +596,8 @@ monitor-gadget-url = ${:monitor-base-url}/gadget/software.cfg.html ...@@ -545,6 +596,8 @@ monitor-gadget-url = ${:monitor-base-url}/gadget/software.cfg.html
{% if ru == "lopcomm" %} {% if ru == "lopcomm" %}
ssh-command = ssh ${user-info:pw-name}@${slap-configuration:ipv6-random} -p ${sshd-port:port} ssh-command = ssh ${user-info:pw-name}@${slap-configuration:ipv6-random} -p ${sshd-port:port}
ssh-url = ssh://${user-info:pw-name}@[${slap-configuration:ipv6-random}]:${sshd-port:port} ssh-url = ssh://${user-info:pw-name}@[${slap-configuration:ipv6-random}]:${sshd-port:port}
ru-firmware = ${lopcomm-firmware-dl:filename}
ru-ipv6 = ${slap-configuration:tap-ipv6-gateway}
{% endif %} {% endif %}
[monitor-instance-parameter] [monitor-instance-parameter]
......
...@@ -167,6 +167,11 @@ ...@@ -167,6 +167,11 @@
"textarea": true, "textarea": true,
"type": "string" "type": "string"
}, },
"cron_schedule": {
"title": "Cron schedule for RRH reset",
"description": "Refer https://crontab.guru/ to make a reset schedule for RRH, for example, '0 1 * * *' means the RRH will reset every day at 1 am",
"type": "string"
},
"enb_id": { "enb_id": {
"title": "eNB ID", "title": "eNB ID",
"description": "eNB ID", "description": "eNB ID",
......
...@@ -258,6 +258,8 @@ extra-context = ...@@ -258,6 +258,8 @@ extra-context =
raw lopcomm_rrh_config_template ${lopcomm-rrh-config.jinja2.py:target} raw lopcomm_rrh_config_template ${lopcomm-rrh-config.jinja2.py:target}
raw lopcomm_rrh_software_template ${lopcomm-rrh-software.jinja2.py:target} raw lopcomm_rrh_software_template ${lopcomm-rrh-software.jinja2.py:target}
raw lopcomm_rrh_supervision_template ${lopcomm-rrh-supervision.jinja2.py:target} raw lopcomm_rrh_supervision_template ${lopcomm-rrh-supervision.jinja2.py:target}
raw lopcomm_rrh_reset_info_template ${lopcomm-rrh-reset-info.jinja2.py:target}
raw lopcomm_rrh_reset_template ${lopcomm-rrh-reset.jinja2.py:target}
raw CreateProcessingEle_template ${CreateProcessingEle.jinja2.xml:target} raw CreateProcessingEle_template ${CreateProcessingEle.jinja2.xml:target}
raw cu_config_template ${cu_config.jinja2.xml:target} raw cu_config_template ${cu_config.jinja2.xml:target}
raw openssl_location ${openssl:location} raw openssl_location ${openssl:location}
......
#!{{ python_path }}
import paramiko
import logging
from logging.handlers import RotatingFileHandler
def get_uptime(hostname, username, password):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
client.connect(hostname, username=username, password=password)
stdin, stdout, stderr = client.exec_command('uptime')
uptime_output = stdout.read().decode()
return uptime_output
except Exception as e:
logger.info(f"Error: {e}")
finally:
client.close()
# Usage
hostname = "{{ netaddr.IPAddress(slap_configuration.get('tap-ipv6-gateway', '')) }}"
username = "oranuser"
password = "oranpassword"
# Initialize logger
log_file = "{{ log_file }}"
logger = logging.getLogger('logger')
logger.setLevel(logging.INFO)
handler = RotatingFileHandler(log_file, maxBytes=30000, backupCount=2)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
if {{ testing }}:
pass
else:
rrh_uptime = get_uptime(hostname, username, password)
logger.info(f"Uptime from RRH: {rrh_uptime}")
...@@ -6,14 +6,12 @@ from ncclient_common import LopcommNetconfClient ...@@ -6,14 +6,12 @@ from ncclient_common import LopcommNetconfClient
if __name__ == '__main__': if __name__ == '__main__':
nc = LopcommNetconfClient(log_file="{{ log_file }}") nc = LopcommNetconfClient(log_file="{{ log_file }}")
while True:
try: try:
nc.connect("{{ netaddr.IPAddress(slap_configuration.get('tap-ipv6-gateway', '')) }}", 830, "oranuser", "oranpassword") nc.connect("{{ netaddr.IPAddress(slap_configuration.get('tap-ipv6-gateway', '')) }}", 830, "oranuser", "oranpassword")
nc.nc.reset_device() nc.reset_device()
break nc.logger.info("Device reset successful.")
except Exception as e: except Exception as e:
nc.logger.debug('Got exception, waiting 10 seconds before reconnecting...') nc.logger.debug('Got exception while resetting...')
nc.logger.debug(e) nc.logger.debug(e)
time.sleep(10)
finally: finally:
nc.close() nc.close()
...@@ -153,6 +153,7 @@ class LopcommNetconfClient: ...@@ -153,6 +153,7 @@ class LopcommNetconfClient:
reset_reply_xml = self.custom_rpc_request(reset_rpc_xml) reset_reply_xml = self.custom_rpc_request(reset_rpc_xml)
if reset_reply_xml: if reset_reply_xml:
reset_data = xmltodict.parse(reset_reply_xml) reset_data = xmltodict.parse(reset_reply_xml)
if self.software_reply_json_logger:
self.software_reply_json_logger.info('', extra={'data': json.dumps(reset_data)}) self.software_reply_json_logger.info('', extra={'data': json.dumps(reset_data)})
self.logger.info('Wait 60 second then reboot!') self.logger.info('Wait 60 second then reboot!')
time.sleep(60) time.sleep(60)
......
...@@ -80,6 +80,12 @@ destination = ${buildout:directory}/ncclient_common.py ...@@ -80,6 +80,12 @@ destination = ${buildout:directory}/ncclient_common.py
[lopcomm-rrh-supervision.jinja2.py] [lopcomm-rrh-supervision.jinja2.py]
<= download-base <= download-base
[lopcomm-rrh-reset-info.jinja2.py]
<= download-base
[lopcomm-rrh-reset.jinja2.py]
<= download-base
[template-enb] [template-enb]
<= download-base <= download-base
......
...@@ -18,10 +18,10 @@ Slaves of the root instance are sent as a parameter to requested frontends which ...@@ -18,10 +18,10 @@ Slaves of the root instance are sent as a parameter to requested frontends which
These parameters are: These parameters are:
* ``-frontend-type`` : the type to deploy frontends with. (default to "default") * ``-frontend-type`` : the type to deploy frontends with. (defaults to "default")
* ``-frontend-quantity`` : The quantity of frontends to request (default to "1") * ``-frontend-quantity`` : The quantity of frontends to request (defaults to "1")
* ``-frontend-i-state``: The state of frontend i * ``-frontend-i-state``: The state of frontend i
* ``-frontend-i-software-release-url``: Software release to be used for frontends, default to the current software release * ``-frontend-i-software-release-url``: Software release to be used for frontends, defaults to the current software release
* ``-frontend-config-i-foo``: Frontend i will be requested with parameter foo, supported parameters are: * ``-frontend-config-i-foo``: Frontend i will be requested with parameter foo, supported parameters are:
* ``ram-cache-size`` * ``ram-cache-size``
* ``disk-cache-size`` * ``disk-cache-size``
...@@ -451,8 +451,8 @@ There are two ways to achieve it: ...@@ -451,8 +451,8 @@ There are two ways to achieve it:
The issues during automatic bootstrap are: The issues during automatic bootstrap are:
* rouge or hacked SlapOS Master can result with adding rouge frontend nodes to the cluster, which will be trusted, so it will be possible to fetch all certificates and keys from Kedifa or to login to backends * rogue or hacked SlapOS Master can result with adding rogue frontend nodes to the cluster, which will be trusted, so it will be possible to fetch all certificates and keys from Kedifa or to login to backends
* when new node is added there is short window, when rouge person is able to trick automatic signing, and have it's own node added * when new node is added there is a short window during which rogue person is able to trick automatic signing, and have it's own node added
In both cases promises will fail on node which is not able to get signed, but in case of Kedifa the damage already happened (certificates and keys are compromised). So in case if cluster administrator wants to stay on the safe side, both automatic bootstraps shall be turned off. In both cases promises will fail on node which is not able to get signed, but in case of Kedifa the damage already happened (certificates and keys are compromised). So in case if cluster administrator wants to stay on the safe side, both automatic bootstraps shall be turned off.
......
[buildout] [buildout]
extends = extends =
../../software/erp5/software.cfg ../../software/wendelin/software.cfg
buildout.hash.cfg buildout.hash.cfg
parts +=
vifib-fix-products-paths
[erp5-defaults] [erp5-defaults]
wcfs-enable-default = true wcfs-enable-default = true
[local-bt5-repository] [local-bt5-repository]
# Same as bt5-repository, but only local repository. # Same as bt5-repository, but only local repository.
# Used to generate bt5lists. # Used to generate bt5lists.
list = ${erp5:location}/bt5 ${erp5:location}/product/ERP5/bootstrap ${erp5-bin:location}/bt5 ${erp5-doc:location}/bt5 ${vifib:location}/master/bt5 ${wendelin:location}/bt5 list += ${vifib:location}/master/bt5
[erp5_repository_list] [erp5_repository_list]
repository_id_list = erp5 erp5-bin erp5-doc wendelin vifib/master repository_id_list += vifib/master
[erp5] [erp5]
branch = erp5-vifib branch = erp5-vifib
...@@ -31,19 +27,6 @@ branch = master ...@@ -31,19 +27,6 @@ branch = master
repository = https://lab.nexedi.com/nexedi/slapos-bin.git repository = https://lab.nexedi.com/nexedi/slapos-bin.git
branch = master branch = master
[wendelin]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
repository = https://lab.nexedi.com/nexedi/wendelin.git
branch = master
[vifib-fix-products-paths]
recipe = plone.recipe.command
stop-on-error = true
command =
for DIR in "${vifib:location}/master"; do cd "$DIR"; rm -f Products ; ln -s product Products; touch product/__init__.py; done
update-command = ${:command}
[eggs] [eggs]
eggs += eggs +=
slapos.core slapos.core
...@@ -55,7 +38,6 @@ dummy += ...@@ -55,7 +38,6 @@ dummy +=
extra-paths += extra-paths +=
${vifib:location}/master ${vifib:location}/master
${slapos-bin:location} ${slapos-bin:location}
${wendelin:location}
### Overwrite recipes to introduce customized changes ### Overwrite recipes to introduce customized changes
......
...@@ -284,14 +284,34 @@ entry-points = ...@@ -284,14 +284,34 @@ entry-points =
python2=${:eggs}:ignored python2=${:eggs}:ignored
python2.7=${:eggs}:ignored python2.7=${:eggs}:ignored
python3=${:eggs}:ignored python3=${:eggs}:ignored
python3.5=${:eggs}:ignored
python3.6=${:eggs}:ignored
python3.7=${:eggs}:ignored
python3.8=${:eggs}:ignored
python3.9=${:eggs}:ignored
python3.10=${:eggs}:ignored
python3.11=${:eggs}:ignored
python3.12=${:eggs}:ignored
python3.13=${:eggs}:ignored
python3.14=${:eggs}:ignored
scripts = scripts =
python python
python2 python2
python2.7 python2.7
python3 python3
python3.5
python3.6
python3.7
python3.8
python3.9
python3.10
python3.11
python3.12
python3.13
python3.14
initialization = initialization =
import sys import sys
print("Error: attempt to use system python", file=sys.stderr) print("Error: attempt to use system python. Executed with: %s" % sys.argv, file=sys.stderr)
sys.exit(2) sys.exit(2)
[recurls-repository] [recurls-repository]
......
...@@ -74,8 +74,7 @@ setup = ${slapcache-repository:location} ...@@ -74,8 +74,7 @@ setup = ${slapcache-repository:location}
[erp5.util-setup] [erp5.util-setup]
<= setup-develop-egg <= setup-develop-egg
# XXX erp5.util does not have `test` extra require, but has a `testnode` extra require with same dependencies egg = erp5.util[test]
egg = erp5.util[testnode]
setup = ${erp5.util-repository:location} setup = ${erp5.util-repository:location}
depends = ${slapos.core-setup:egg} depends = ${slapos.core-setup:egg}
......
...@@ -365,9 +365,11 @@ Flask = 1.1.2 ...@@ -365,9 +365,11 @@ Flask = 1.1.2
gitdb2 = 2.0.5 gitdb2 = 2.0.5
GitPython = 2.1.11 GitPython = 2.1.11
idna = 2.9 idna = 2.9
importlib-metadata = 1.7.0:whl
itsdangerous = 0.24 itsdangerous = 0.24
Jinja2 = 2.11.3 Jinja2 = 2.11.3
jsonschema = 3.0.2:whl jsonschema = 3.0.2:whl
MarkupSafe = 1.0
packaging = 16.8 packaging = 16.8
pyparsing = 2.2.0 pyparsing = 2.2.0
pyrsistent = 0.16.1 pyrsistent = 0.16.1
...@@ -381,9 +383,6 @@ Werkzeug = 1.0.1 ...@@ -381,9 +383,6 @@ Werkzeug = 1.0.1
wheel = 0.35.1:whl wheel = 0.35.1:whl
zipp = 1.2.0:whl zipp = 1.2.0:whl
[versions:sys.version_info < (3,8)]
MarkupSafe = 1.0
[networkcache] [networkcache]
download-cache-url = http://shacache.nxdcdn.com download-cache-url = http://shacache.nxdcdn.com
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment