Commit 8c273006 authored by Jérome Perrin's avatar Jérome Perrin

Update Release Candidate

parents 41d4bcc6 094aa984
...@@ -9,8 +9,8 @@ parts = ...@@ -9,8 +9,8 @@ parts =
[cmake] [cmake]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
shared = true shared = true
url = https://cmake.org/files/v3.7/cmake-3.7.2.tar.gz url = https://cmake.org/files/v3.18/cmake-3.18.4.tar.gz
md5sum = 79bd7e65cd81ea3aa2619484ad6ff25a md5sum = 0380beaee1c39a22455db02651abe7be
environment = environment =
CMAKE_INCLUDE_PATH=${ncurses:location}/include:${openssl:location}/include CMAKE_INCLUDE_PATH=${ncurses:location}/include:${openssl:location}/include
CMAKE_LIBRARY_PATH=${ncurses:location}/lib:${openssl:location}/lib CMAKE_LIBRARY_PATH=${ncurses:location}/lib:${openssl:location}/lib
[buildout]
extends =
../cmake/buildout.cfg
../imagemagick/buildout.cfg
parts = cuneiform
[cuneiform]
recipe = slapos.recipe.cmmi
url = http://launchpad.net/cuneiform-linux/1.0/1.0/+download/cuneiform-linux-1.0.0.tar.bz2
md5sum = 785232ffffad7d82446fbac08a1c3ef9
location = ${buildout:parts-directory}/${:_buildout_section_name_}
configure-command =
mkdir build && cd build && \
${cmake:location}/bin/cmake \
-DCMAKE_INSTALL_RPATH=${:location}/lib64:${:location}/lib \
-DCMAKE_INSTALL_PREFIX=${:location} \
-DNO_SYSTEM_ENVIRONMENT_PATH=ON \
-DCMAKE_INCLUDE_PATH=${imagemagick:location}/include \
-DCMAKE_LIBRARY_PATH=${imagemagick:location}/lib \
-DCMAKE_INSTALL_RPATH=${:location}/lib64:${:location}/lib:${imagemagick:location}/lib \
-DCMAKE_BUILD_TYPE=release \
..
make-binary =
cd build && make
...@@ -34,7 +34,7 @@ depends = ...@@ -34,7 +34,7 @@ depends =
${patch:recipe} ${patch:recipe}
recipe = slapos.recipe.build recipe = slapos.recipe.build
# Latest version provided by SlapOS. # Latest version provided by SlapOS.
part = gcc-8.2 part = gcc-8.4
# Minimum version for all components that might be required for # Minimum version for all components that might be required for
# slapos.rebootstrap (see https://bugs.python.org/issue34112 about Python 3.7+). # slapos.rebootstrap (see https://bugs.python.org/issue34112 about Python 3.7+).
min_version = 5.4 min_version = 5.4
......
...@@ -10,7 +10,7 @@ extends = ...@@ -10,7 +10,7 @@ extends =
../binutils/buildout.cfg ../binutils/buildout.cfg
parts = parts =
gcc-8.2 gcc-8.4
[gcc-common] [gcc-common]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
...@@ -65,16 +65,10 @@ patch-options = -p1 ...@@ -65,16 +65,10 @@ patch-options = -p1
patches = patches =
${:_profile_base_location_}/libsanitizer_Use_pre-computed_size_of_struct_ustat_for_Linux.patch#1e5f33e89f9fe1ca3e406eabcc621762 ${:_profile_base_location_}/libsanitizer_Use_pre-computed_size_of_struct_ustat_for_Linux.patch#1e5f33e89f9fe1ca3e406eabcc621762
[gcc-8.2] [gcc-8.4]
<= gcc-common <= gcc-common
version = 8.2.0 version = 8.4.0
md5sum = 4ab282f414676496483b3e1793d07862 md5sum = bb815a8e3b7be43c4a26fa89dbbd9795
patch-binary = ${patch:location}/bin/patch
patch-options = -p1
# glibc-2.31-libsanitizer comes from https://github.com/spack/spack/pull/15403
patches =
${:_profile_base_location_}/glibc-2.31-libsanitizer-1.patch
${:_profile_base_location_}/glibc-2.31-libsanitizer-2.patch
[gcc-minimal] [gcc-minimal]
<= gcc-5.5 <= gcc-5.5
......
From ce9568e9e9cf6094be30e748821421e703754ffc Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub@redhat.com>
Date: Fri, 8 Nov 2019 19:53:18 +0100
Subject: [PATCH] backport: re PR sanitizer/92154 (new glibc breaks arm
bootstrap due to libsanitizer)
Backported from mainline
2019-10-22 Tamar Christina <tamar.christina@arm.com>
PR sanitizer/92154
* sanitizer_common/sanitizer_platform_limits_posix.cc:
Cherry-pick compiler-rt revision r375220.
From-SVN: r277981
---
libsanitizer/ChangeLog | 9 +++++++++
.../sanitizer_common/sanitizer_platform_limits_posix.cc | 6 +++++-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
index 6cd4a5bac8b0..06a605ff4670 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
@@ -1156,8 +1156,12 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
+#if (!defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)) && \
+ !defined(__arm__)
/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
+/* On Arm glibc 2.31 and later provide a different mode field, this field is
+ never used by libsanitizer so we can simply ignore this assert for all glibc
+ versions. */
CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
#endif
From 75003cdd23c310ec385344e8040d490e8dd6d2be Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub@redhat.com>
Date: Fri, 20 Dec 2019 17:58:35 +0100
Subject: [PATCH] backport: re PR sanitizer/92154 (new glibc breaks arm
bootstrap due to libsanitizer)
Backported from mainline
2019-11-26 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/92154
* sanitizer_common/sanitizer_platform_limits_posix.h: Cherry-pick
llvm-project revision 947f9692440836dcb8d88b74b69dd379d85974ce.
* sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.
From-SVN: r279653
---
libsanitizer/ChangeLog | 10 ++++++++++
.../sanitizer_platform_limits_posix.cc | 9 +++------
.../sanitizer_platform_limits_posix.h | 15 +--------------
3 files changed, 14 insertions(+), 20 deletions(-)
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
index 06a605ff4670..d823a12190c0 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
@@ -1156,12 +1156,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
-#if (!defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)) && \
- !defined(__arm__)
-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
-/* On Arm glibc 2.31 and later provide a different mode field, this field is
- never used by libsanitizer so we can simply ignore this assert for all glibc
- versions. */
+#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
+/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
+ on many architectures. */
CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
#endif
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
index 73af92af1e8f..6a673a7c9959 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
@@ -211,26 +211,13 @@ namespace __sanitizer {
u64 __unused1;
u64 __unused2;
#elif defined(__sparc__)
-#if defined(__arch64__)
unsigned mode;
- unsigned short __pad1;
-#else
- unsigned short __pad1;
- unsigned short mode;
unsigned short __pad2;
-#endif
unsigned short __seq;
unsigned long long __unused1;
unsigned long long __unused2;
-#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__)
- unsigned int mode;
- unsigned short __seq;
- unsigned short __pad1;
- unsigned long __unused1;
- unsigned long __unused2;
#else
- unsigned short mode;
- unsigned short __pad1;
+ unsigned int mode;
unsigned short __seq;
unsigned short __pad2;
#if defined(__x86_64__) && !defined(_LP64)
...@@ -52,8 +52,8 @@ environment-extra = ...@@ -52,8 +52,8 @@ environment-extra =
[golang1.14] [golang1.14]
<= golang-common <= golang-common
url = https://golang.org/dl/go1.14.9.src.tar.gz url = https://golang.org/dl/go1.14.10.src.tar.gz
md5sum = 6f6dd1377421d27ca4bb607283b31738 md5sum = c0b485e8ac8b1978b5164e3e200150fa
# go1.14 needs go1.4 to bootstrap # go1.14 needs go1.4 to bootstrap
environment-extra = environment-extra =
......
...@@ -14,7 +14,7 @@ recipe = slapos.recipe.cmmi ...@@ -14,7 +14,7 @@ recipe = slapos.recipe.cmmi
shared = True shared = True
url = https://github.com/h2o/h2o/archive/v2.2.6.tar.gz url = https://github.com/h2o/h2o/archive/v2.2.6.tar.gz
md5sum = 075283f92347fcb7b2f87dcc5251b922 md5sum = 075283f92347fcb7b2f87dcc5251b922
configure-command = ${cmake:location}/bin/cmake . configure-command = ${cmake:location}/bin/cmake
configure-options = configure-options =
-DCMAKE_INSTALL_PREFIX=@@LOCATION@@ -DCMAKE_INSTALL_PREFIX=@@LOCATION@@
-DWITH_MRUBY=on -DWITH_MRUBY=on
......
...@@ -41,11 +41,10 @@ recipe = slapos.recipe.cmmi ...@@ -41,11 +41,10 @@ recipe = slapos.recipe.cmmi
shared = true shared = true
url = https://inkscape.org/gallery/item/13330/inkscape-0.92.4_A6N0YOn.tar.bz2 url = https://inkscape.org/gallery/item/13330/inkscape-0.92.4_A6N0YOn.tar.bz2
md5sum = ac30f6d5747fd9c620c00dad500f414f md5sum = ac30f6d5747fd9c620c00dad500f414f
location = @@LOCATION@@
pkg_config_depends = ${freetype:location}/lib/pkgconfig:${gtkmm:location}/lib/pkgconfig:${gtkmm:pkg_config_depends}:${gsl:location}/lib/pkgconfig:${popt:location}/lib/pkgconfig:${garbage-collector:location}/lib/pkgconfig:${libxslt:location}/lib/pkgconfig pkg_config_depends = ${freetype:location}/lib/pkgconfig:${gtkmm:location}/lib/pkgconfig:${gtkmm:pkg_config_depends}:${gsl:location}/lib/pkgconfig:${popt:location}/lib/pkgconfig:${garbage-collector:location}/lib/pkgconfig:${libxslt:location}/lib/pkgconfig
configure-command = ${cmake:location}/bin/cmake configure-command = ${cmake:location}/bin/cmake
configure-options = configure-options =
-DCMAKE_INSTALL_PREFIX=${:location} -DCMAKE_INSTALL_PREFIX=@@LOCATION@@
-DENABLE_POPPLER=OFF -DENABLE_POPPLER=OFF
-DWITH_GNOME_VFS=OFF -DWITH_GNOME_VFS=OFF
-DWITH_IMAGE_MAGICK=OFF -DWITH_IMAGE_MAGICK=OFF
......
...@@ -13,17 +13,16 @@ shared = true ...@@ -13,17 +13,16 @@ shared = true
url = https://libzip.org/download/libzip-1.5.2.tar.xz url = https://libzip.org/download/libzip-1.5.2.tar.xz
md5sum = f9dd38d273bcdec5d3d1498fe6684f42 md5sum = f9dd38d273bcdec5d3d1498fe6684f42
location = @@LOCATION@@ location = @@LOCATION@@
configure-command = configure-command = cmake
mkdir build && cd build && \ configure-options =
${cmake:location}/bin/cmake \ -Bbuild
-DCMAKE_INSTALL_PREFIX=${:location} \ -DCMAKE_BUILD_TYPE=Release
-DCMAKE_INCLUDE_PATH=${zlib:location}/include:${bzip2:location}/include \ -DCMAKE_INSTALL_PREFIX=${:location}
-DCMAKE_LIBRARY_PATH=${zlib:location}/lib:${bzip2:location}/lib \ -DCMAKE_INCLUDE_PATH=${zlib:location}/include:${bzip2:location}/include
.. -DCMAKE_LIBRARY_PATH=${zlib:location}/lib:${bzip2:location}/lib
make-binary = make-options = -C build
cd build && make
environment = environment =
PATH=${cmake:location}/bin:%(PATH)s PATH=${cmake:location}/bin:%(PATH)s
CMAKE_INCLUDE_PATH=${zlib:location}/include:${bzip2:location}/include CMAKE_INCLUDE_PATH=${zlib:location}/include:${bzip2:location}/include
CMAKE_LIBRARY_PATH=${zlib:location}/lib:${bzip2:location}/lib CMAKE_LIBRARY_PATH=${zlib:location}/lib:${bzip2:location}/lib
LDFLAGS=-L${:location}/lib -Wl,-rpath=${:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${bzip2:location}/lib -Wl,-rpath=${bzip2:location}/lib LDFLAGS=-Wl,-rpath=${:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${bzip2:location}/lib -Wl,-rpath=${bzip2:location}/lib
[buildout]
extends =
../cmake/buildout.cfg
../git/buildout.cfg
parts = llvm
[llvm]
recipe = slapos.recipe.cmmi
shared = true
url = https://github.com/llvm/llvm-project/releases/download/llvmorg-${:version}/llvm-${:version}.src.tar.xz
version = 11.0.0
md5sum = 85844102335b2e01b3c64b6734fb56f2
configure-command = ${cmake:location}/bin/cmake
configure-options =
-Bbuild
-DCMAKE_INSTALL_PREFIX=@@LOCATION@@
-DCMAKE_BUILD_TYPE=Release
-DLLVM_INSTALL_UTILS=ON
-DCMAKE_C_FLAGS="${:CMAKE_CFLAGS}"
-DCMAKE_CXX_FLAGS="${:CMAKE_CFLAGS}"
make-options = -C build
CMAKE_CFLAGS = -I${libxml2:location}/include/libxml2 -I${ncurses:location}/include -I${zlib:location}/include
environment =
PATH=${git:location}/bin:%(PATH)s
LDFLAGS=-L${libxml2:location}/lib -L${ncurses:location}/lib -L${zlib:location}/lib -Wl,-rpath=${libxml2:location}/lib -Wl,-rpath=${ncurses:location}/lib -Wl,-rpath=${zlib:location}/lib
...@@ -26,10 +26,10 @@ extends = ...@@ -26,10 +26,10 @@ extends =
parts = parts =
mariadb mariadb
[mariadb] [mariadb-10.4]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
shared = true shared = true
url = https://downloads.mariadb.org/f/mariadb-${:version}/source/mariadb-${:version}.tar.gz/from/http%3A//fr.mirror.babylon.network/mariadb/?serve url = https://archive.mariadb.org//mariadb-${:version}/source/mariadb-${:version}.tar.gz
version = 10.4.14 version = 10.4.14
md5sum = 9801120ae8acb33904ab4a3366a7714f md5sum = 9801120ae8acb33904ab4a3366a7714f
location = @@LOCATION@@ location = @@LOCATION@@
...@@ -129,9 +129,9 @@ environment = ...@@ -129,9 +129,9 @@ environment =
### XXX keep using mariadb 10.3.22 because 10.4 cause crash ### XXX keep using mariadb 10.3.22 because 10.4 cause crash
### (we just override here for easier revert) ### (we just override here for easier revert)
[mariadb] [mariadb-10.3]
<= mariadb-10.4
version = 10.3.22 version = 10.3.22
url = https://downloads.mariadb.org/f/mariadb-10.3.22/source/mariadb-10.3.22.tar.gz/from/http%3A//ftp.hosteurope.de/mirror/archive.mariadb.org/?serve
md5sum = f712a5e6fde038d0c9c6d2a2cd88b84e md5sum = f712a5e6fde038d0c9c6d2a2cd88b84e
pre-configure = pre-configure =
set -e '\bSET(PLUGIN_AUTH_PAM YES)' cmake/build_configurations/mysql_release.cmake set -e '\bSET(PLUGIN_AUTH_PAM YES)' cmake/build_configurations/mysql_release.cmake
...@@ -145,14 +145,6 @@ post-install = ...@@ -145,14 +145,6 @@ post-install =
mkdir -p ${:location}/include/wsrep && mkdir -p ${:location}/include/wsrep &&
cp -p wsrep/wsrep_api.h ${:location}/include/wsrep cp -p wsrep/wsrep_api.h ${:location}/include/wsrep
[mroonga-mariadb] [mariadb]
pre-configure = location = ${mariadb-10.3:location}
rm -rf fake_mariadb_source
mkdir -p fake_mariadb_source
cd fake_mariadb_source
ln -s ${mariadb:location}/wsrep-lib
cp -a ${mariadb:location}/include/mysql/server include
cp -a include/private sql
chmod -R a+w include sql # so that buildout can delete this compile-dir after install
mkdir -p ${:plugin-dir}
### /XXX keep using mariadb 10.3.22 because 10.4 cause crash ### /XXX keep using mariadb 10.3.22 because 10.4 cause crash
...@@ -32,7 +32,8 @@ configure-options = ...@@ -32,7 +32,8 @@ configure-options =
--disable-cap --disable-cap
--with-modules=mod_sftp:mod_ban --with-modules=mod_sftp:mod_ban
--prefix=${buildout:parts-directory}/${:_buildout_section_name_} --prefix=${buildout:parts-directory}/${:_buildout_section_name_}
environment = environment =
CFLAGS=-DPR_RUN_DIR=\"/proc/self/cwd/var\"
CPPFLAGS=-I${zlib:location}/include -I${openssl:location}/include CPPFLAGS=-I${zlib:location}/include -I${openssl:location}/include
LDFLAGS=-L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${openssl:location}/lib -Wl,-rpath=${openssl:location}/lib LDFLAGS=-L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${openssl:location}/lib -Wl,-rpath=${openssl:location}/lib
install_user=${proftpd-environment:USER} install_user=${proftpd-environment:USER}
......
[buildout] [buildout]
parts =
rustc
extends = extends =
../cmake/buildout.cfg ../llvm/buildout.cfg
../curl/buildout.cfg
../git/buildout.cfg
../openssl/buildout.cfg ../openssl/buildout.cfg
../pkgconfig/buildout.cfg ../pkgconfig/buildout.cfg
parts = rustc
[rustc] [rustc]
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
shared = true shared = true
url = https://static.rust-lang.org/dist/rustc-1.45.2-src.tar.gz url = https://static.rust-lang.org/dist/rustc-1.47.0-src.tar.gz
md5sum = 1c67d7c3f211e49e12e7c20abab08e70 md5sum = a460bed79b92f6a7833ba6e6390ee6ae
# --sysconfdir is a workaround for https://github.com/rust-lang/rust/issues/63915 # --sysconfdir is a workaround for https://github.com/rust-lang/rust/issues/63915
configure-options = --enable-extended --sysconfdir=@@LOCATION@@/etc/ configure-options =
environment = --enable-extended
PATH=${cmake:location}/bin/:${curl:location}/bin/:${git:location}/bin/:${pkgconfig:location}/bin/:%(PATH)s --llvm-config=${llvm:location}/bin/llvm-config
PKG_CONFIG_PATH=${openssl:location}/lib/pkgconfig: --sysconfdir=@@LOCATION@@/etc
environment =
PATH=${curl:location}/bin/:${git:location}/bin:${pkgconfig:location}/bin:%(PATH)s
PKG_CONFIG_PATH=${openssl:location}/lib/pkgconfig
RUSTFLAGS=-C link-arg=-Wl,-rpath=${openssl:location}/lib -C link-arg=-L${libxml2:location}/lib -C link-arg=-L${ncurses:location}/lib -C link-arg=-L${zlib:location}/lib -C link-arg=-Wl,-rpath=${libxml2:location}/lib -C link-arg=-Wl,-rpath=${ncurses:location}/lib -C link-arg=-Wl,-rpath=${zlib:location}/lib
...@@ -9,10 +9,8 @@ recipe = slapos.recipe.cmmi ...@@ -9,10 +9,8 @@ recipe = slapos.recipe.cmmi
shared = true shared = true
url = https://github.com/google/snappy/archive/1.1.8.tar.gz url = https://github.com/google/snappy/archive/1.1.8.tar.gz
md5sum = 70e48cba7fecf289153d009791c9977f md5sum = 70e48cba7fecf289153d009791c9977f
location = @@LOCATION@@
configure-command = ${cmake:location}/bin/cmake configure-command = ${cmake:location}/bin/cmake
configure-options = configure-options =
-DCMAKE_INSTALL_PREFIX=${:location} -DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=@@LOCATION@@
-DBUILD_SHARED_LIBS=ON -DBUILD_SHARED_LIBS=ON
environment =
CMAKE_PROGRAM_PATH=${cmake:location}/bin
...@@ -15,28 +15,22 @@ parts = ...@@ -15,28 +15,22 @@ parts =
recipe = slapos.recipe.cmmi recipe = slapos.recipe.cmmi
url = https://github.com/srsLTE/srsLTE/archive/release_18_09.zip url = https://github.com/srsLTE/srsLTE/archive/release_18_09.zip
md5sum = d9007ff9bd03ba67c6ed8acfd9bf2a7a md5sum = d9007ff9bd03ba67c6ed8acfd9bf2a7a
pre-configure = configure-command = cmake
mkdir -p build configure-options =
configure-command = cd build && ${cmake:location}/bin/cmake ../ -Bbuild
-DCMAKE_INSTALL_PREFIX=@@LOCATION@@
make-binary =
make-targets= cd build &&
make DESTDIR=@@LOCATION@@ -j1 install
configure-options =
-DCMAKE_C_FLAGS="${:CMAKE_CFLAGS}" -DCMAKE_C_FLAGS="${:CMAKE_CFLAGS}"
-DCMAKE_CXX_FLAGS="${:CMAKE_CFLAGS}" -DCMAKE_CXX_FLAGS="${:CMAKE_CFLAGS}"
-DCMAKE_INSTALL_RPATH=${:CMAKE_LIBRARY_PATH} -DCMAKE_INSTALL_RPATH=${:CMAKE_LIBRARY_PATH}
-DCMAKE_INCLUDE_PATH=${mbedtls:location}/include -DCMAKE_INCLUDE_PATH=${mbedtls:location}/include
-DCMAKE_LIBRARY_PATH=${mbedtls:location}/lib -DCMAKE_LIBRARY_PATH=${mbedtls:location}/lib
make-options = -C build
CMAKE_CFLAGS = -I${bzip2:location}/include -I${fftw3:location}/include -I${mbedtls:location}/include -I${lksctp-tools:location}/include -I${libconfig:location}/include -I${boost-lib:location}/include CMAKE_CFLAGS = -I${bzip2:location}/include -I${fftw3:location}/include -I${mbedtls:location}/include -I${lksctp-tools:location}/include -I${libconfig:location}/include -I${boost-lib:location}/include
CMAKE_LIBRARY_PATH = ${bzip2:location}/lib:${mbedtls:location}/lib:${lksctp-tools:location}/lib:${libconfig:location}/lib:${boost-lib:location}/lib:${fftw3:location}/lib CMAKE_LIBRARY_PATH = ${bzip2:location}/lib:${mbedtls:location}/lib:${lksctp-tools:location}/lib:${libconfig:location}/lib:${boost-lib:location}/lib:${fftw3:location}/lib
environment = environment =
CMAKE_INSTALL_PREFIX=${buildout:directory}/bin CMAKE_INSTALL_PREFIX=${buildout:directory}/bin
CMAKE_PROGRAM_PATH=${cmake:location}/bin
CMAKE_INCLUDE_PATH=${bzip2:location}/include:${mbedtls:location}/include:${lksctp-tools:location}/include:${libconfig:location}/include:${boost-lib:location}/include:${fftw3:location}/include CMAKE_INCLUDE_PATH=${bzip2:location}/include:${mbedtls:location}/include:${lksctp-tools:location}/include:${libconfig:location}/include:${boost-lib:location}/include:${fftw3:location}/include
CMAKE_LIBRARY_PATH=${:CMAKE_LIBRARY_PATH} CMAKE_LIBRARY_PATH=${:CMAKE_LIBRARY_PATH}
CPPFLAGS=${:CMAKE_CFLAGS} CPPFLAGS=${:CMAKE_CFLAGS}
......
...@@ -10,11 +10,9 @@ recipe = slapos.recipe.cmmi ...@@ -10,11 +10,9 @@ recipe = slapos.recipe.cmmi
shared = true shared = true
url = https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.6.3.tar.gz url = https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.6.3.tar.gz
md5sum = b45bf1089a382e81f6b661062c10d0c2 md5sum = b45bf1089a382e81f6b661062c10d0c2
location = @@LOCATION@@ configure-command = ${cmake:location}/bin/cmake
configure-command = configure-options =
mkdir build && cd build && \ -Bbuild
${cmake:location}/bin/cmake \ -DYAML_BUILD_SHARED_LIBS=ON
-DYAML_BUILD_SHARED_LIBS=ON \ -DCMAKE_INSTALL_PREFIX=@@LOCATION@@
-DCMAKE_INSTALL_PREFIX=${:location} \
..
make-options = -C build make-options = -C build
...@@ -28,7 +28,7 @@ from setuptools import setup, find_packages ...@@ -28,7 +28,7 @@ from setuptools import setup, find_packages
import glob import glob
import os import os
version = '1.0.152' version = '1.0.167'
name = 'slapos.cookbook' name = 'slapos.cookbook'
long_description = open("README.rst").read() long_description = open("README.rst").read()
......
...@@ -58,7 +58,6 @@ class Recipe(GenericBaseRecipe): ...@@ -58,7 +58,6 @@ class Recipe(GenericBaseRecipe):
"\npath_list = %s" % ",".join(software_path_list) "\npath_list = %s" % ",".join(software_path_list)
CONFIG['computer_id'] = self.buildout['slap-connection']['computer-id'] CONFIG['computer_id'] = self.buildout['slap-connection']['computer-id']
CONFIG['server_url'] = self.buildout['slap-connection']['server-url'] CONFIG['server_url'] = self.buildout['slap-connection']['server-url']
CONFIG['frontend_url'] = self.buildout['testnode-frontend']['connection-secure_access']
configuration_file = self.createFile( configuration_file = self.createFile(
self.options['configuration-file'], self.options['configuration-file'],
self.substituteTemplate( self.substituteTemplate(
......
...@@ -20,6 +20,7 @@ httpd_software_access_port = %(httpd_software_access_port)s ...@@ -20,6 +20,7 @@ httpd_software_access_port = %(httpd_software_access_port)s
computer_id = %(computer_id)s computer_id = %(computer_id)s
server_url = %(server_url)s server_url = %(server_url)s
frontend_url = %(frontend_url)s frontend_url = %(frontend_url)s
log_frontend_url = %(log_frontend_url)s
keep_log_days = %(keep_log_days)s keep_log_days = %(keep_log_days)s
# Binaries # Binaries
......
...@@ -25,8 +25,45 @@ ...@@ -25,8 +25,45 @@
# #
############################################################################## ##############################################################################
import os, subprocess, sys
import six from zc.buildout.buildout import Buildout
class SubBuildout(Buildout):
"""Run buildout in buildout, partially copied from infrae.buildout
"""
def __init__(self, main_buildout, config, options, **kwargs):
# Use same logger
self._logger = main_buildout._logger
self._log_level = main_buildout._log_level
# Use same options
for opt in (
'offline',
'verbosity',
'newest',
'directory',
'eggs-directory',
'develop-eggs-directory',
):
if opt in main_buildout['buildout']:
options.append((
'buildout',
opt,
main_buildout['buildout'][opt],
))
# Use same slap connection
for k, v in main_buildout["slap-connection"].items():
options.append(('slap-connection', k, v))
Buildout.__init__(self, config, options, **kwargs)
def _setup_logging(self):
"""We don't want to setup any logging, since it's already done
by the main buildout.
"""
pass
class Recipe: class Recipe:
...@@ -39,26 +76,23 @@ class Recipe: ...@@ -39,26 +76,23 @@ class Recipe:
self.base = self.buildout[section][key] self.base = self.buildout[section][key]
def install(self): def install(self):
# XXX-Antoine: We gotta find a better way to do this. I tried to check options = [("buildout", "installed", ".installed-%s.cfg" % self.name)]
# out how slapgrid-cp was running buildout. But it is worse than that. profile = self.base
args = sys.argv[:]
for x in six.iteritems(self.buildout["slap-connection"]):
args.append("slap-connection:%s=%s" % x)
for x in "directory", "eggs-directory", "develop-eggs-directory":
args.append("buildout:%s=%s" % (x, self.buildout["buildout"][x]))
args.append("buildout:installed=.installed-%s.cfg" % self.name)
# Options.get (from zc.buildout) should deserialize.
try: try:
override = self.options["override"][self.software_type] # XXX this assume using slapos.buildout, which serializes arbitrary python objects for options
extended_profile = self.options["override"][self.software_type]
except (KeyError, TypeError): except (KeyError, TypeError):
buildout = self.base pass
else: else:
# unfortunately, buildout:extends does not work when given at command line options.append(["buildout", "extends", profile])
buildout = os.path.join(self.buildout["buildout"]["parts-directory"], profile = extended_profile
self.name + ".cfg")
with open(override) as src, open(buildout, "w", 0) as dst: sub_buildout = SubBuildout(
dst.write("[buildout]\nextends = %s\n\n" % self.base + src.read()) self.buildout,
subprocess.check_call(args + ["-oc", buildout]) profile,
return [] options,
)
sub_buildout.install([])
update = install update = install
...@@ -26,11 +26,11 @@ md5sum = e7d7e1448b6420657e953026573311ca ...@@ -26,11 +26,11 @@ md5sum = e7d7e1448b6420657e953026573311ca
[profile-caddy-replicate] [profile-caddy-replicate]
filename = instance-apache-replicate.cfg.in filename = instance-apache-replicate.cfg.in
md5sum = 59f3a67999f5fb3e595486e2b801af08 md5sum = b70f9ce80dd927ead51b4526997b75ed
[profile-slave-list] [profile-slave-list]
_update_hash_filename_ = templates/apache-custom-slave-list.cfg.in _update_hash_filename_ = templates/apache-custom-slave-list.cfg.in
md5sum = 64d57678c12f539247fe2532c5b8d6b8 md5sum = ab143bfa2e20725aa35940c9033fa0ee
[profile-replicate-publish-slave-information] [profile-replicate-publish-slave-information]
_update_hash_filename_ = templates/replicate-publish-slave-information.cfg.in _update_hash_filename_ = templates/replicate-publish-slave-information.cfg.in
...@@ -40,10 +40,6 @@ md5sum = de268251dafa5ad83ebf5b20636365d9 ...@@ -40,10 +40,6 @@ md5sum = de268251dafa5ad83ebf5b20636365d9
_update_hash_filename_ = templates/Caddyfile.in _update_hash_filename_ = templates/Caddyfile.in
md5sum = 2503056e35463e045db3329bb8b6fae8 md5sum = 2503056e35463e045db3329bb8b6fae8
[caddy-backend-url-validator]
filename = templates/caddy-backend-url-validator.in
md5sum = 0979a03476e86bf038516c9565dadc17
[template-not-found-html] [template-not-found-html]
_update_hash_filename_ = templates/notfound.html _update_hash_filename_ = templates/notfound.html
md5sum = 88af61e7abbf30dc99a1a2526161128d md5sum = 88af61e7abbf30dc99a1a2526161128d
......
...@@ -164,7 +164,7 @@ context = ...@@ -164,7 +164,7 @@ context =
{% for url_key in ['url', 'https-url'] %} {% for url_key in ['url', 'https-url'] %}
{% if url_key in slave %} {% if url_key in slave %}
{% set url = (slave[url_key] or '').strip() %} {% set url = (slave[url_key] or '').strip() %}
{% if subprocess_module.call([software_parameter_dict['caddy_backend_url_validator'], url]) == 1 or not validators.url(url) %} {% if not validators.url(url) %}
{% do slave_error_list.append('slave %s %r invalid' % (url_key, url)) %} {% do slave_error_list.append('slave %s %r invalid' % (url_key, url)) %}
{% elif url != slave[url_key] %} {% elif url != slave[url_key] %}
{% do slave_warning_list.append('slave %s %r has been converted to %r' % (url_key, slave[url_key], url)) %} {% do slave_warning_list.append('slave %s %r has been converted to %r' % (url_key, slave[url_key], url)) %}
...@@ -769,8 +769,9 @@ recipe = plone.recipe.command ...@@ -769,8 +769,9 @@ recipe = plone.recipe.command
{#- Can be stopped on error, as does not rely on self provided service #} {#- Can be stopped on error, as does not rely on self provided service #}
stop-on-error = True stop-on-error = True
file = ${directory:var}/nginx-rejected.htpasswd file = ${directory:var}/nginx-rejected.htpasswd
command = {{ software_parameter_dict['htpasswd'] }} -cb ${:file} ${rejected-slave-password:user} ${rejected-slave-password:passwd} {#- update-command is not needed, as if the ${:password} would change, the whole part will be recalculated #}
update-command = ${:command} password = ${rejected-slave-password:passwd}
command = {{ software_parameter_dict['htpasswd'] }} -cb ${:file} ${rejected-slave-password:user} ${:password}
[rejected-slave-template] [rejected-slave-template]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
......
...@@ -115,7 +115,6 @@ template_trafficserver_records_config = ${template-trafficserver-records-config: ...@@ -115,7 +115,6 @@ template_trafficserver_records_config = ${template-trafficserver-records-config:
template_trafficserver_storage_config = ${template-trafficserver-storage-config:target} template_trafficserver_storage_config = ${template-trafficserver-storage-config:target}
template_validate_script = ${template-validate-script:target} template_validate_script = ${template-validate-script:target}
template_wrapper = ${template-wrapper:output} template_wrapper = ${template-wrapper:output}
caddy_backend_url_validator = ${caddy-backend-url-validator:output}
# directories # directories
bin_directory = ${buildout:bin-directory} bin_directory = ${buildout:bin-directory}
...@@ -154,12 +153,6 @@ recipe = slapos.recipe.build:download ...@@ -154,12 +153,6 @@ recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-apache-frontend.cfg.in url = ${:_profile_base_location_}/instance-apache-frontend.cfg.in
mode = 0644 mode = 0644
[caddy-backend-url-validator]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/caddy-backend-url-validator
mode = 0750
[profile-caddy-replicate] [profile-caddy-replicate]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-apache-replicate.cfg.in url = ${:_profile_base_location_}/instance-apache-replicate.cfg.in
......
...@@ -95,12 +95,13 @@ context = ...@@ -95,12 +95,13 @@ context =
{%- set slave_publish_dict = {} %} {%- set slave_publish_dict = {} %}
{%- set slave_configuration_section_name = 'slave-instance-%s-configuration' % slave_reference %} {%- set slave_configuration_section_name = 'slave-instance-%s-configuration' % slave_reference %}
{%- set slave_logrotate_section = slave_reference + "-logs" %} {%- set slave_logrotate_section = slave_reference + "-logs" %}
{%- set slave_log_directory_section = slave_reference + "-log-directory" %}
{%- set slave_password_section = slave_reference + "-password" %} {%- set slave_password_section = slave_reference + "-password" %}
{%- set slave_htpasswd_section = slave_reference + "-htpasswd" %} {%- set slave_htpasswd_section = slave_reference + "-htpasswd" %}
{%- set slave_ln_section = slave_reference + "-ln" %} {%- set slave_ln_section = slave_reference + "-ln" %}
{#- extend parts #} {#- extend parts #}
{%- do part_list.extend([slave_ln_section]) %} {%- do part_list.extend([slave_ln_section]) %}
{%- do part_list.extend([slave_logrotate_section, slave_section_title]) %} {%- do part_list.extend([slave_section_title]) %}
{%- set slave_log_folder = '${logrotate-directory:logrotate-backup}/' + slave_reference + "-logs" %} {%- set slave_log_folder = '${logrotate-directory:logrotate-backup}/' + slave_reference + "-logs" %}
{#- Pass HTTP2 switch #} {#- Pass HTTP2 switch #}
{%- do slave_instance.__setitem__('enable_http2_by_default', configuration['enable-http2-by-default']) %} {%- do slave_instance.__setitem__('enable_http2_by_default', configuration['enable-http2-by-default']) %}
...@@ -151,11 +152,15 @@ context = ...@@ -151,11 +152,15 @@ context =
{{ slave_reference }} = {{ '${' + slave_htpasswd_section + ':file}' }} {{ slave_reference }} = {{ '${' + slave_htpasswd_section + ':file}' }}
{#- Set slave logrotate entry #} {#- Set slave logrotate entry #}
[{{slave_log_directory_section}}]
recipe = slapos.cookbook:mkdirectory
log-directory = {{ '${slave-log-directory-dict:' + slave_reference.lower() + '}' }}
[{{slave_logrotate_section}}] [{{slave_logrotate_section}}]
<= logrotate-entry-base <= logrotate-entry-base
name = ${:_buildout_section_name_} name = ${:_buildout_section_name_}
log = {{slave_parameter_dict.get('access_log')}} {{slave_parameter_dict.get('error_log')}} {{slave_parameter_dict.get('backend_log')}} log = {{slave_parameter_dict.get('access_log')}} {{slave_parameter_dict.get('error_log')}} {{slave_parameter_dict.get('backend_log')}}
backup = {{ slave_log_folder }} backup = {{ '${' + slave_log_directory_section + ':log-directory}' }}
rotate-num = {{ dumps('' ~ configuration['rotate-num']) }} rotate-num = {{ dumps('' ~ configuration['rotate-num']) }}
# disable delayed compression, as log filenames shall be stable # disable delayed compression, as log filenames shall be stable
delaycompress = delaycompress =
...@@ -165,8 +170,8 @@ delaycompress = ...@@ -165,8 +170,8 @@ delaycompress =
[{{slave_ln_section}}] [{{slave_ln_section}}]
recipe = plone.recipe.command recipe = plone.recipe.command
stop-on-error = false stop-on-error = false
update-command = ${:command} log-directory = {{ '${' + slave_logrotate_section + ':backup}' }}
command = ln -sf {{slave_parameter_dict.get('error_log')}} {{ slave_log_folder }}/error.log && ln -sf {{slave_parameter_dict.get('access_log')}} {{ slave_log_folder }}/access.log && ln -sf {{slave_parameter_dict.get('backend_log')}} {{ slave_log_folder }}/backend.log command = ln -sf {{slave_parameter_dict.get('error_log')}} ${:log-directory}/error.log && ln -sf {{slave_parameter_dict.get('access_log')}} ${:log-directory}/access.log && ln -sf {{slave_parameter_dict.get('backend_log')}} ${:log-directory}/backend.log
{#- Set password for slave #} {#- Set password for slave #}
...@@ -180,8 +185,9 @@ recipe = plone.recipe.command ...@@ -180,8 +185,9 @@ recipe = plone.recipe.command
{#- Can be stopped on error, as does not rely on self provided service #} {#- Can be stopped on error, as does not rely on self provided service #}
stop-on-error = True stop-on-error = True
file = {{ caddy_configuration_directory }}/.{{ slave_reference }}.htpasswd file = {{ caddy_configuration_directory }}/.{{ slave_reference }}.htpasswd
command = {{ software_parameter_dict['htpasswd'] }} -cb ${:file} {{ slave_reference.lower() }} {{ '${' + slave_password_section + ':passwd}' }} {#- update-command is not needed, as if the ${:password} would change, the whole part will be recalculated #}
update-command = ${:command} password = {{ '${' + slave_password_section + ':passwd}' }}
command = {{ software_parameter_dict['htpasswd'] }} -cb ${:file} {{ slave_reference.lower() }} ${:password}
{#- ################################################## #} {#- ################################################## #}
{#- Set Slave Certificates if needed #} {#- Set Slave Certificates if needed #}
...@@ -301,12 +307,6 @@ recipe = slapos.cookbook:publish ...@@ -301,12 +307,6 @@ recipe = slapos.cookbook:publish
{%- endif %} {%- endif %}
{%- endfor %} {# Slave iteration ends for slave_instance in slave_instance_list #} {%- endfor %} {# Slave iteration ends for slave_instance in slave_instance_list #}
[slave-log-directories]
<= slave-log-directory-dict
recipe = slapos.cookbook:mkdirectory
{%- do part_list.append('slave-log-directories') %}
{%- do part_list.append('caddy-log-access') %} {%- do part_list.append('caddy-log-access') %}
{%- do part_list.append('slave-introspection') %} {%- do part_list.append('slave-introspection') %}
{#- ############################################## #} {#- ############################################## #}
......
#!${dash:location}/bin/dash
config="https://example.com {\n proxy / $1 {\n }\n}"
echo -e $config | ${caddy:output} -conf stdin -validate > /dev/null 2>&1
...@@ -18,4 +18,4 @@ md5sum = 307663d73ef3ef94b02567ecd322252e ...@@ -18,4 +18,4 @@ md5sum = 307663d73ef3ef94b02567ecd322252e
[template-default] [template-default]
filename = instance-default.cfg filename = instance-default.cfg
md5sum = 40364ff26e9284cea97a58f3cd8c75e3 md5sum = e553b582cd51db90fcd5634bd055f042
...@@ -23,6 +23,7 @@ parts = ...@@ -23,6 +23,7 @@ parts =
recipe = slapos.cookbook:publish recipe = slapos.cookbook:publish
url = $${shellinabox-frontend:url} url = $${shellinabox-frontend:url}
frontend-url = $${testnode-frontend:connection-secure_access} frontend-url = $${testnode-frontend:connection-secure_access}
log-frontend-url = $${testnode-log-frontend:connection-secure_access}
[pwgen] [pwgen]
recipe = slapos.cookbook:generate.password recipe = slapos.cookbook:generate.password
...@@ -63,6 +64,8 @@ httpd-log-directory = $${basedirectory:log} ...@@ -63,6 +64,8 @@ httpd-log-directory = $${basedirectory:log}
httpd-software-directory = $${directory:software} httpd-software-directory = $${directory:software}
httpd-cert-file = $${rootdirectory:etc}/httpd-public.crt httpd-cert-file = $${rootdirectory:etc}/httpd-public.crt
httpd-key-file = $${rootdirectory:etc}/httpd-private.key httpd-key-file = $${rootdirectory:etc}/httpd-private.key
frontend-url = $${testnode-frontend:connection-secure_access}
log-frontend-url = $${testnode-log-frontend:connection-secure_access}
configuration-file = $${rootdirectory:etc}/erp5testnode.cfg configuration-file = $${rootdirectory:etc}/erp5testnode.cfg
log-file = $${basedirectory:log}/erp5testnode.log log-file = $${basedirectory:log}/erp5testnode.log
...@@ -212,22 +215,31 @@ recipe = collective.recipe.template ...@@ -212,22 +215,31 @@ recipe = collective.recipe.template
input = inline: ** input = inline: **
output = $${directory:srv}/exporter.exclude output = $${directory:srv}/exporter.exclude
[testnode-frontend] [request-shared-frontend]
<= slap-connection <= slap-connection
recipe = slapos.cookbook:requestoptional recipe = slapos.cookbook:requestoptional
name = Test Node Frontend $${testnode:test-node-title}
# XXX We have hardcoded SR URL here. # XXX We have hardcoded SR URL here.
software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
slave = true slave = true
config-url = https://[$${testnode:httpd-ip}]:$${testnode:httpd-software-access-port}
config-https-only = true config-https-only = true
#software-type = custom-personal
return = domain secure_access return = domain secure_access
[testnode-frontend]
<= request-shared-frontend
name = Test Node Frontend $${testnode:test-node-title}
config-url = https://[$${testnode:httpd-ip}]:$${testnode:httpd-software-access-port}
[testnode-log-frontend]
<= request-shared-frontend
name = Test Node Logs Frontend $${testnode:test-node-title}
config-url = https://[$${testnode:httpd-ip}]:$${testnode:httpd-port}
[promises] [promises]
recipe = recipe =
instance-promises = instance-promises =
$${shellinabox-frontend-listen-promise:name} $${shellinabox-frontend-listen-promise:name}
$${testnode-log-frontend-promise:name}
[shellinabox-frontend-listen-promise] [shellinabox-frontend-listen-promise]
<= monitor-promise-base <= monitor-promise-base
...@@ -236,6 +248,12 @@ name = $${:_buildout_section_name_}.py ...@@ -236,6 +248,12 @@ name = $${:_buildout_section_name_}.py
config-hostname = $${shellinabox-frontend:hostname} config-hostname = $${shellinabox-frontend:hostname}
config-port = $${shellinabox-frontend:port} config-port = $${shellinabox-frontend:port}
[testnode-log-frontend-promise]
<= monitor-promise-base
module = check_url_available
name = $${:_buildout_section_name_}.py
config-url = $${testnode-log-frontend:connection-secure_access}
[slap-parameter] [slap-parameter]
node-quantity = 1 node-quantity = 1
test-suite-master-url = test-suite-master-url =
......
...@@ -12,6 +12,8 @@ parts = ...@@ -12,6 +12,8 @@ parts =
proftpd-config-file proftpd-config-file
instance-profile instance-profile
[python]
part = python3
[download-file-base] [download-file-base]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
......
...@@ -27,9 +27,9 @@ ...@@ -27,9 +27,9 @@
import os import os
import shutil import shutil
import urlparse from urllib.parse import urlparse
import tempfile import tempfile
import StringIO import io
import subprocess import subprocess
import pysftp import pysftp
...@@ -58,7 +58,7 @@ class ProFTPdTestCase(SlapOSInstanceTestCase): ...@@ -58,7 +58,7 @@ class ProFTPdTestCase(SlapOSInstanceTestCase):
cnopts.hostkeys = None cnopts.hostkeys = None
parameter_dict = self.computer_partition.getConnectionParameterDict() parameter_dict = self.computer_partition.getConnectionParameterDict()
sftp_url = urlparse.urlparse(parameter_dict['url']) sftp_url = urlparse(parameter_dict['url'])
return pysftp.Connection( return pysftp.Connection(
hostname or sftp_url.hostname, hostname or sftp_url.hostname,
...@@ -95,7 +95,7 @@ class TestSFTPOperations(ProFTPdTestCase): ...@@ -95,7 +95,7 @@ class TestSFTPOperations(ProFTPdTestCase):
def test_simple_sftp_session(self): def test_simple_sftp_session(self):
with self._getConnection() as sftp: with self._getConnection() as sftp:
# put a file # put a file
with tempfile.NamedTemporaryFile() as f: with tempfile.NamedTemporaryFile(mode='w') as f:
f.write("Hello FTP !") f.write("Hello FTP !")
f.flush() f.flush()
sftp.put(f.name, remotepath='testfile') sftp.put(f.name, remotepath='testfile')
...@@ -117,14 +117,14 @@ class TestSFTPOperations(ProFTPdTestCase): ...@@ -117,14 +117,14 @@ class TestSFTPOperations(ProFTPdTestCase):
def test_uploaded_file_not_visible_until_fully_uploaded(self): def test_uploaded_file_not_visible_until_fully_uploaded(self):
test_self = self test_self = self
class PartialFile(StringIO.StringIO): class PartialFile(io.StringIO):
def read(self, *args): def read(self, *args):
# file is not visible yet # file is not visible yet
test_self.assertNotIn('destination', os.listdir(test_self.upload_dir)) test_self.assertNotIn('destination', os.listdir(test_self.upload_dir))
# it's just a hidden file # it's just a hidden file
test_self.assertEqual( test_self.assertEqual(
['.in.destination.'], os.listdir(test_self.upload_dir)) ['.in.destination.'], os.listdir(test_self.upload_dir))
return StringIO.StringIO.read(self, *args) return super().read(*args)
with self._getConnection() as sftp: with self._getConnection() as sftp:
sftp.sftp_client.putfo(PartialFile("content"), "destination") sftp.sftp_client.putfo(PartialFile("content"), "destination")
...@@ -136,7 +136,7 @@ class TestSFTPOperations(ProFTPdTestCase): ...@@ -136,7 +136,7 @@ class TestSFTPOperations(ProFTPdTestCase):
test_self = self test_self = self
with self._getConnection() as sftp: with self._getConnection() as sftp:
class ErrorFile(StringIO.StringIO): class ErrorFile(io.StringIO):
def read(self, *args): def read(self, *args):
# at this point, file is already created on server # at this point, file is already created on server
test_self.assertEqual( test_self.assertEqual(
...@@ -152,17 +152,17 @@ class TestSFTPOperations(ProFTPdTestCase): ...@@ -152,17 +152,17 @@ class TestSFTPOperations(ProFTPdTestCase):
def test_user_cannot_escape_home(self): def test_user_cannot_escape_home(self):
with self._getConnection() as sftp: with self._getConnection() as sftp:
with self.assertRaisesRegexp(IOError, 'Permission denied'): with self.assertRaises(PermissionError):
sftp.listdir('..') sftp.listdir('..')
with self.assertRaisesRegexp(IOError, 'Permission denied'): with self.assertRaises(PermissionError):
sftp.listdir('/') sftp.listdir('/')
with self.assertRaisesRegexp(IOError, 'Permission denied'): with self.assertRaises(PermissionError):
sftp.listdir('/tmp/') sftp.listdir('/tmp/')
class TestUserManagement(ProFTPdTestCase): class TestUserManagement(ProFTPdTestCase):
def test_user_can_be_added_from_script(self): def test_user_can_be_added_from_script(self):
with self.assertRaisesRegexp(AuthenticationException, with self.assertRaisesRegex(AuthenticationException,
'Authentication failed'): 'Authentication failed'):
self._getConnection(username='bob', password='secret') self._getConnection(username='bob', password='secret')
...@@ -177,12 +177,12 @@ class TestBan(ProFTPdTestCase): ...@@ -177,12 +177,12 @@ class TestBan(ProFTPdTestCase):
def test_client_are_banned_after_5_wrong_passwords(self): def test_client_are_banned_after_5_wrong_passwords(self):
# Simulate failed 5 login attempts # Simulate failed 5 login attempts
for i in range(5): for i in range(5):
with self.assertRaisesRegexp(AuthenticationException, with self.assertRaisesRegex(AuthenticationException,
'Authentication failed'): 'Authentication failed'):
self._getConnection(password='wrong') self._getConnection(password='wrong')
# after that, even with a valid password we cannot connect # after that, even with a valid password we cannot connect
with self.assertRaisesRegexp(SSHException, 'Connection reset by peer'): with self.assertRaisesRegex(SSHException, 'Connection reset by peer'):
self._getConnection() self._getConnection()
# ban event is logged # ban event is logged
...@@ -190,7 +190,7 @@ class TestBan(ProFTPdTestCase): ...@@ -190,7 +190,7 @@ class TestBan(ProFTPdTestCase):
'var', 'var',
'log', 'log',
'proftpd-ban.log')) as ban_log_file: 'proftpd-ban.log')) as ban_log_file:
self.assertRegexpMatches( self.assertRegex(
ban_log_file.readlines()[-1], ban_log_file.readlines()[-1],
'login from host .* denied due to host ban') 'login from host .* denied due to host ban')
...@@ -203,7 +203,7 @@ class TestInstanceParameterPort(ProFTPdTestCase): ...@@ -203,7 +203,7 @@ class TestInstanceParameterPort(ProFTPdTestCase):
def test_instance_parameter_port(self): def test_instance_parameter_port(self):
parameter_dict = self.computer_partition.getConnectionParameterDict() parameter_dict = self.computer_partition.getConnectionParameterDict()
sftp_url = urlparse.urlparse(parameter_dict['url']) sftp_url = urlparse(parameter_dict['url'])
self.assertEqual(self.free_port, sftp_url.port) self.assertEqual(self.free_port, sftp_url.port)
self.assertTrue(self._getConnection()) self.assertTrue(self._getConnection())
......
...@@ -14,11 +14,11 @@ ...@@ -14,11 +14,11 @@
# not need these here). # not need these here).
[instance.cfg] [instance.cfg]
filename = instance.cfg.in filename = instance.cfg.in
md5sum = 027cdcfe251b7bba9b779fee890a9162 md5sum = fd0df2c4a91c1e478b72cbaeb6c021c3
[instance-repman.cfg] [instance-repman.cfg]
_update_hash_filename_ = instance-repman.cfg.jinja2.in _update_hash_filename_ = instance-repman.cfg.jinja2.in
md5sum = 657ecdb1dfbbcf53e4e7932b3b5708c4 md5sum = 1d6eba3984b3e2009682f6ce49b8ac4d
[config-toml.in] [config-toml.in]
_update_hash_filename_ = templates/config.toml.in _update_hash_filename_ = templates/config.toml.in
...@@ -34,7 +34,7 @@ md5sum = 0eeb24c6aa0760f0d33c4cc2828ddf30 ...@@ -34,7 +34,7 @@ md5sum = 0eeb24c6aa0760f0d33c4cc2828ddf30
[template-mariadb.cfg] [template-mariadb.cfg]
_update_hash_filename_ = instance-mariadb.cfg.jinja2.in _update_hash_filename_ = instance-mariadb.cfg.jinja2.in
md5sum = 189ccee60d0fb53e29431a45e0816bc1 md5sum = 21a29a41768b2370d671d3086b3ef2bb
[template-my-cnf] [template-my-cnf]
_update_hash_filename_ = templates/my.cnf.in _update_hash_filename_ = templates/my.cnf.in
......
...@@ -156,7 +156,7 @@ wrapper = ${directory:controller}/mariadb ...@@ -156,7 +156,7 @@ wrapper = ${directory:controller}/mariadb
{% do part_list.append("supervisord-mariadb") %} {% do part_list.append("supervisord-mariadb") %}
[odbc-ini-text] [odbc-ini-text]
text = {{ dumps(slapparameter_dict.get('odbc-ini', '').encode('base64')) }} text = {{ dumps(base64.b64encode( slapparameter_dict.get('odbc-ini', '').encode() )) }}
[{{ section('odbc-ini') }}] [{{ section('odbc-ini') }}]
< = jinja2-template-base < = jinja2-template-base
......
...@@ -359,7 +359,7 @@ update-command = ${:command} ...@@ -359,7 +359,7 @@ update-command = ${:command}
[replication-manager-reload] [replication-manager-reload]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
template = {{ template_repman_manager_sh }} template = {{ template_repman_manager_sh }}
cluster-list = {{ dumps(slapparameter_dict.get('repman-cluster-dict', default_parameter_dict).keys() ) }} cluster-list = {{ dumps( list(slapparameter_dict.get('repman-cluster-dict', default_parameter_dict)) ) }}
context = context =
section parameter_dict repman section parameter_dict repman
key username repman-parameter:username key username repman-parameter:username
......
...@@ -101,3 +101,4 @@ template = {{ template_mariadb }} ...@@ -101,3 +101,4 @@ template = {{ template_mariadb }}
filename = instance-mariadb.cfg filename = instance-mariadb.cfg
extra-context = extra-context =
section parameter_dict template-mariadb-parameters section parameter_dict template-mariadb-parameters
import base64 base64
...@@ -28,6 +28,9 @@ parts = ...@@ -28,6 +28,9 @@ parts =
template-mariadb.cfg template-mariadb.cfg
template-mysqld-wrapper template-mysqld-wrapper
gowork gowork
[python]
part = python3
[instance.cfg] [instance.cfg]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
......
...@@ -18,7 +18,7 @@ md5sum = 2ef0ddc206c6b0982a37cfc21f23e423 ...@@ -18,7 +18,7 @@ md5sum = 2ef0ddc206c6b0982a37cfc21f23e423
[template-balancer] [template-balancer]
filename = instance-balancer.cfg.in filename = instance-balancer.cfg.in
md5sum = ef86e09e44ac67a9b15939df0ab4a466 md5sum = 4998e62351f54700ee23a2ca8cd89329
[template-apache-backend-conf] [template-apache-backend-conf]
filename = apache-backend.conf.in filename = apache-backend.conf.in
......
...@@ -7,9 +7,6 @@ ...@@ -7,9 +7,6 @@
XXX: This template only supports exactly one IPv4 and (if ipv6 is used) one IPv6 XXX: This template only supports exactly one IPv4 and (if ipv6 is used) one IPv6
per partition. No more (undefined result), no less (IndexError). per partition. No more (undefined result), no less (IndexError).
-#} -#}
# TODO: insert varnish between apache & haproxy.
# And think of a way to specify which urls goe through varnish, which go
# directly to haproxy. (maybe just passing literal configuration file chunk)
{% set ipv4 = (ipv4_set | list)[0] -%} {% set ipv4 = (ipv4_set | list)[0] -%}
{% set apache_ip_list = [ipv4] -%} {% set apache_ip_list = [ipv4] -%}
{% if ipv6_set -%} {% if ipv6_set -%}
......
...@@ -14,3 +14,5 @@ eggs -= ...@@ -14,3 +14,5 @@ eggs -=
extra = extra =
${slapos.test.monitor-setup:setup} ${slapos.test.monitor-setup:setup}
${slapos.test.powerdns-setup:setup} ${slapos.test.powerdns-setup:setup}
${slapos.test.proftpd-setup:setup}
${slapos.test.repman-setup:setup}
...@@ -257,7 +257,6 @@ extra = ...@@ -257,7 +257,6 @@ extra =
${slapos.test.htmlvalidatorserver-setup:setup} ${slapos.test.htmlvalidatorserver-setup:setup}
${slapos.test.slapos-master-setup:setup} ${slapos.test.slapos-master-setup:setup}
${slapos.test.plantuml-setup:setup} ${slapos.test.plantuml-setup:setup}
${slapos.test.proftpd-setup:setup}
${slapos.test.re6stnet-setup:setup} ${slapos.test.re6stnet-setup:setup}
${slapos.test.seleniumserver-setup:setup} ${slapos.test.seleniumserver-setup:setup}
${slapos.test.helloworld-setup:setup} ${slapos.test.helloworld-setup:setup}
...@@ -270,7 +269,6 @@ extra = ...@@ -270,7 +269,6 @@ extra =
${slapos.test.gitlab-setup:setup} ${slapos.test.gitlab-setup:setup}
${slapos.test.cloudooo-setup:setup} ${slapos.test.cloudooo-setup:setup}
${slapos.test.dream-setup:setup} ${slapos.test.dream-setup:setup}
${slapos.test.repman-setup:setup}
[versions] [versions]
# slapos.core is used from the clone always # slapos.core is used from the clone always
......
...@@ -15,4 +15,4 @@ ...@@ -15,4 +15,4 @@
[template] [template]
filename = instance.cfg filename = instance.cfg
md5sum = a04806bdebd611c7f6698b4bef7af70d md5sum = 2df601dd3ccb3ba38b3aee7243b7f8e5
...@@ -70,6 +70,10 @@ repository = ${slapos.toolbox-repository:location} ...@@ -70,6 +70,10 @@ repository = ${slapos.toolbox-repository:location}
<= download-source <= download-source
repository = ${slapos.rebootstrap-repository:location} repository = ${slapos.rebootstrap-repository:location}
[rubygemsrecipe]
<= download-source
repository = ${rubygemsrecipe-repository:location}
[slapos-test-runner] [slapos-test-runner]
recipe = slapos.cookbook:wrapper recipe = slapos.cookbook:wrapper
...@@ -77,7 +81,7 @@ wrapper-path = $${create-directory:bin}/runTestSuite ...@@ -77,7 +81,7 @@ wrapper-path = $${create-directory:bin}/runTestSuite
command-line = command-line =
${buildout:bin-directory}/runTestSuite ${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter} --python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${kedifa:location},$${caucase:location},$${erp5.util:location},$${slapos.cookbook:location},$${slapos.core:location},$${slapos.recipe.build:location},$${slapos.recipe.cmmi:location},$${slapos.recipe.template:location},$${slapos.toolbox:location},$${slapos.libnetworkcache:location},$${slapos.rebootstrap:location} --source_code_path_list=$${kedifa:location},$${caucase:location},$${erp5.util:location},$${slapos.cookbook:location},$${slapos.core:location},$${slapos.recipe.build:location},$${slapos.recipe.cmmi:location},$${slapos.recipe.template:location},$${slapos.toolbox:location},$${slapos.libnetworkcache:location},$${slapos.rebootstrap:location},$${rubygemsrecipe:location}
# Notes about environment: # Notes about environment:
# * slapos.cookbook:wrapper does not seem to allow "extending" PATH. Tests # * slapos.cookbook:wrapper does not seem to allow "extending" PATH. Tests
......
...@@ -97,6 +97,11 @@ depends = ...@@ -97,6 +97,11 @@ depends =
egg = slapos.rebootstrap[test] egg = slapos.rebootstrap[test]
setup = ${slapos.rebootstrap-repository:location} setup = ${slapos.rebootstrap-repository:location}
[rubygemsrecipe-setup]
<= setup-develop-egg
egg = rubygemsrecipe
setup = ${rubygemsrecipe-repository:location}
[eggs] [eggs]
recipe = zc.recipe.egg recipe = zc.recipe.egg
eggs = eggs =
...@@ -118,6 +123,7 @@ eggs = ...@@ -118,6 +123,7 @@ eggs =
${slapos.toolbox-setup:egg} ${slapos.toolbox-setup:egg}
${slapos.libnetworkcache-setup:egg} ${slapos.libnetworkcache-setup:egg}
${slapos.rebootstrap-setup:egg} ${slapos.rebootstrap-setup:egg}
${rubygemsrecipe-setup:egg}
zope.testing zope.testing
supervisor supervisor
entry-points = entry-points =
...@@ -186,6 +192,10 @@ repository = https://lab.nexedi.com/nexedi/slapos.toolbox.git ...@@ -186,6 +192,10 @@ repository = https://lab.nexedi.com/nexedi/slapos.toolbox.git
<= git-clone-repository <= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.rebootstrap.git repository = https://lab.nexedi.com/nexedi/slapos.rebootstrap.git
[rubygemsrecipe-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/rubygemsrecipe.git
[template] [template]
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename} url = ${:_profile_base_location_}/${:filename}
......
...@@ -90,7 +90,7 @@ md5sum = 2f3ddd328ac1c375e483ecb2ef5ffb57 ...@@ -90,7 +90,7 @@ md5sum = 2f3ddd328ac1c375e483ecb2ef5ffb57
[template-balancer] [template-balancer]
filename = instance-balancer.cfg.in filename = instance-balancer.cfg.in
md5sum = 0097e49b5bd7ad4978c722c1cdd27d6c md5sum = bb9a953ce22f7d5188385f0171b6198e
[template-haproxy-cfg] [template-haproxy-cfg]
filename = haproxy.cfg.in filename = haproxy.cfg.in
......
...@@ -7,9 +7,6 @@ ...@@ -7,9 +7,6 @@
XXX: This template only supports exactly one IPv4 and (if ipv6 is used) one IPv6 XXX: This template only supports exactly one IPv4 and (if ipv6 is used) one IPv6
per partition. No more (undefined result), no less (IndexError). per partition. No more (undefined result), no less (IndexError).
-#} -#}
# TODO: insert varnish between apache & haproxy.
# And think of a way to specify which urls goe through varnish, which go
# directly to haproxy. (maybe just passing literal configuration file chunk)
{% set ipv4 = (ipv4_set | list)[0] -%} {% set ipv4 = (ipv4_set | list)[0] -%}
{% set apache_ip_list = [ipv4] -%} {% set apache_ip_list = [ipv4] -%}
{% if ipv6_set -%} {% if ipv6_set -%}
......
...@@ -4,20 +4,13 @@ ignore-existing = true ...@@ -4,20 +4,13 @@ ignore-existing = true
parts = parts =
slapos-cookbook slapos-cookbook
apache-php
php-redis php-redis
php-imagick php-imagick
php-apcu php-apcu
mariadb
mroonga-mariadb
dropbear dropbear
eggs eggs
instance instance
instance-apache-php
template-mariadb
instance-lamp
extends = extends =
buildout.hash.cfg buildout.hash.cfg
../../component/curl/buildout.cfg ../../component/curl/buildout.cfg
......
...@@ -172,7 +172,7 @@ pyparsing = 2.2.0 ...@@ -172,7 +172,7 @@ pyparsing = 2.2.0
pytz = 2016.10 pytz = 2016.10
requests = 2.24.0 requests = 2.24.0
six = 1.12.0 six = 1.12.0
slapos.cookbook = 1.0.152 slapos.cookbook = 1.0.167
slapos.core = 1.6.2 slapos.core = 1.6.2
slapos.extension.strip = 0.4 slapos.extension.strip = 0.4
slapos.extension.shared = 1.0 slapos.extension.shared = 1.0
...@@ -231,7 +231,7 @@ enum34 = 1.1.10 ...@@ -231,7 +231,7 @@ enum34 = 1.1.10
# Required by: # Required by:
# slapos.toolbox==0.94 # slapos.toolbox==0.94
erp5.util = 0.4.68 erp5.util = 0.4.69
# Required by: # Required by:
# slapos.toolbox==0.94 # slapos.toolbox==0.94
......
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