From 6a3552274f6c67439a7da58832fbb3535bf4d966 Mon Sep 17 00:00:00 2001 From: Thomas Stitt Date: Wed, 31 Oct 2018 20:23:44 -0700 Subject: xeus: new package (#9682) * xeus: new package cppzmq: add version 4.3.0 zeromq: make libsodium optional, on by default * xeus: add patch so it builds, add new version nlohmann-json: add more versions cryptopp: add more versions * xeus: flake8 * xeus: fix license --- var/spack/repos/builtin/packages/cppzmq/package.py | 4 +- .../repos/builtin/packages/cryptopp/package.py | 4 ++ .../builtin/packages/nlohmann-json/package.py | 4 +- ...find_cryptopp_and_check_cxx_compatibility.patch | 52 ++++++++++++++++++++++ var/spack/repos/builtin/packages/xeus/package.py | 44 ++++++++++++++++++ var/spack/repos/builtin/packages/zeromq/package.py | 10 +++-- 6 files changed, 113 insertions(+), 5 deletions(-) create mode 100644 var/spack/repos/builtin/packages/xeus/cmake_find_cryptopp_and_check_cxx_compatibility.patch create mode 100644 var/spack/repos/builtin/packages/xeus/package.py (limited to 'var') diff --git a/var/spack/repos/builtin/packages/cppzmq/package.py b/var/spack/repos/builtin/packages/cppzmq/package.py index 22950599d1..aa038509be 100644 --- a/var/spack/repos/builtin/packages/cppzmq/package.py +++ b/var/spack/repos/builtin/packages/cppzmq/package.py @@ -14,7 +14,9 @@ class Cppzmq(CMakePackage): git = "https://github.com/zeromq/cppzmq.git" version('develop', branch='master') + version('4.3.0', sha256='27d1f56406ba94ee779e639203218820975cf68174f92fbeae0f645df0fcada4') version('4.2.2', 'bd809b47296e77fe9f192bd9dafd5cc3') depends_on('cmake@3.0.0:', type='build') - depends_on('zeromq@4.2.2') + depends_on('zeromq@4.2.5', when='@4.3.0') + depends_on('zeromq@4.2.2', when='@4.2.2') diff --git a/var/spack/repos/builtin/packages/cryptopp/package.py b/var/spack/repos/builtin/packages/cryptopp/package.py index 0f7764ab84..9ca8cf98d4 100644 --- a/var/spack/repos/builtin/packages/cryptopp/package.py +++ b/var/spack/repos/builtin/packages/cryptopp/package.py @@ -17,6 +17,10 @@ class Cryptopp(MakefilePackage): url = "http://www.cryptopp.com/cryptopp700.zip" version('7.0.0', '8f34884b572901b6ede89bd18f1c7ef6') + version('6.1.0', sha256='21289d2511101a9350c87c8eb1f4982d4a266e8037b19dab79a32cc13ea108c7') + version('6.0.0', sha256='64ac2db96b3f1b7a23675e2be95d16c96055edffa2d5e2de6245fdb6baa92dda') + version('5.6.5', sha256='a75ef486fe3128008bbb201efee3dcdcffbe791120952910883b26337ec32c34') + version('5.6.4', sha256='be430377b05c15971d5ccb6e44b4d95470f561024ed6d701fe3da3a188c84ad7') version('5.6.3', '3c5b70e2ec98b7a24988734446242d07') version('5.6.2', '7ed022585698df48e65ce9218f6c6a67') version('5.6.1', '96cbeba0907562b077e26bcffb483828') diff --git a/var/spack/repos/builtin/packages/nlohmann-json/package.py b/var/spack/repos/builtin/packages/nlohmann-json/package.py index 110e535e44..3cfcd936a9 100644 --- a/var/spack/repos/builtin/packages/nlohmann-json/package.py +++ b/var/spack/repos/builtin/packages/nlohmann-json/package.py @@ -14,7 +14,9 @@ class NlohmannJson(CMakePackage): maintainers = ['ax3l'] version('3.3.0', sha256='2fd1d207b4669a7843296c41d3b6ac5b23d00dec48dba507ba051d14564aa801') - version('3.1.2', '557651b017c36ad596ba3b577ba1b539') + version('3.2.0', sha256='2de558ff3b3b32eebfb51cf2ceb835a0fa5170e6b8712b02be9c2c07fcfe52a1') + version('3.1.2', sha256='e8fffa6cbdb3c15ecdff32eebf958b6c686bc188da8ad5c6489462d16f83ae54') + version('3.1.1', sha256='9f3549824af3ca7e9707a2503959886362801fb4926b869789d6929098a79e47') variant('single_header', default=True, description='Use amalgamated single-header') diff --git a/var/spack/repos/builtin/packages/xeus/cmake_find_cryptopp_and_check_cxx_compatibility.patch b/var/spack/repos/builtin/packages/xeus/cmake_find_cryptopp_and_check_cxx_compatibility.patch new file mode 100644 index 0000000000..da19f84134 --- /dev/null +++ b/var/spack/repos/builtin/packages/xeus/cmake_find_cryptopp_and_check_cxx_compatibility.patch @@ -0,0 +1,52 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 810d5d1..d6ba3e9 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -49,7 +49,33 @@ message(STATUS "xeus binary version: v${XEUS_BINARY_VERSION}") + find_package(nlohmann_json 3.2.0 REQUIRED) + find_package(xtl 0.4 REQUIRED) + find_package(cppzmq 4.3.0 REQUIRED) +-find_package(cryptopp REQUIRED) ++ ++# cryptopp isn't built with cmake, find it manually ++find_path(cryptopp_ROOT_DIR ++ NAMES include/cryptopp/cryptlib.h ++ PATHS ENV cryptopp_ROOT) ++ ++find_path(cryptopp_INCLUDE_DIR ++ NAMES cryptopp/cryptlib.h ++ HINTS ${cryptopp_ROOT_DIR} ++ PATH_SUFFIXES include) ++ ++find_library(cryptopp_STATIC_LIB ++ NAMES libcryptopp.a ++ HINTS ${cryptopp_ROOT_DIR} ++ PATH_SUFFIXES lib) ++ ++if (NOT cryptopp_INCLUDE_DIR OR NOT cryptopp_STATIC_LIB) ++ message(FATAL_ERROR "cannot find cryptopp, missing include dir or static lib") ++else() ++ message("Found cryptopp: ${cryptopp_ROOT_DIR}") ++endif() ++ ++add_library(cryptopp-static STATIC IMPORTED) ++set_target_properties(cryptopp-static ++ PROPERTIES ++ IMPORTED_LOCATION ${cryptopp_STATIC_LIB} ++ INTERFACE_INCLUDE_DIRECTORIES ${cryptopp_INCLUDE_DIR}) + + # On Unix platforms, ZeroMQ is built with autotools and pkg-config is + # required to locate it. +@@ -157,10 +183,11 @@ get_target_property(cryptopp_INCLUDE_DIR cryptopp-static INTERFACE_INCLUDE_DIREC + get_target_property(cryptopp_LIBRARY cryptopp-static LOCATION) + set(CMAKE_REQUIRED_LIBRARIES ${cryptopp_LIBRARY}) + set(CMAKE_REQUIRED_INCLUDES ${cryptopp_INCLUDE_DIR}) ++set(CMAKE_REQUIRED_FLAGS "--std=c++11") + check_cxx_source_compiles(" + #include \"cryptopp/config.h\" + int main(){ +- [[maybe_unused]] CryptoPP::byte b = CryptoPP::byte{0x36}; ++ CryptoPP::byte b = CryptoPP::byte{0x36}; + }" HAVE_CRYPTOPP_BYTE_T) + + cmake_pop_check_state() diff --git a/var/spack/repos/builtin/packages/xeus/package.py b/var/spack/repos/builtin/packages/xeus/package.py new file mode 100644 index 0000000000..1b1286666c --- /dev/null +++ b/var/spack/repos/builtin/packages/xeus/package.py @@ -0,0 +1,44 @@ +# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Xeus(CMakePackage): + """QuantStack C++ implementation of Jupyter kernel protocol""" + + homepage = "https://xeus.readthedocs.io/en/latest/" + url = "https://github.com/QuantStack/xeus/archive/0.14.1.tar.gz" + git = "https://github.com/QuantStack/xeus.git" + + version('develop', branch='master') + version('0.15.0', sha256='bc99235b24d5757dc129f3ed531501fb0d0667913927ed39ee24281952649183') + version('0.14.1', sha256='a6815845d4522ec279f142d3b4e92ef52cd80847b512146a65f256a77e058cfe') + + variant('examples', default=False, description="Build examples") + + conflicts('%gcc@:4.8') + conflicts('%clang@:3.6') + conflicts('%intel@:17') + + depends_on('zeromq@4.2.5:-libsodium') + depends_on('cppzmq@4.3.0:') + depends_on('cryptopp@7.0.0:') + depends_on('xtl@0.4.0:') + depends_on('nlohmann-json@3.2.0', when='@develop@0.15.0:') + depends_on('nlohmann-json@3.1.1', when='@0.14.1') + depends_on('libuuid') + + # finds cryptopp not built with cmake, removes c++17 attribute + # in check_cxx_source_compiles + patch('cmake_find_cryptopp_and_check_cxx_compatibility.patch') + + def cmake_args(self): + args = [ + '-DBUILD_EXAMPLES:BOOL=%s' % ( + 'ON' if '+examples' in self.spec else 'OFF') + ] + + return args diff --git a/var/spack/repos/builtin/packages/zeromq/package.py b/var/spack/repos/builtin/packages/zeromq/package.py index 08a5e4ec73..57ed8fd1fc 100644 --- a/var/spack/repos/builtin/packages/zeromq/package.py +++ b/var/spack/repos/builtin/packages/zeromq/package.py @@ -24,8 +24,10 @@ class Zeromq(AutotoolsPackage): version('4.0.6', 'd47dd09ed7ae6e7fd6f9a816d7f5fdf6') version('4.0.5', '73c39f5eb01b9d7eaf74a5d899f1d03d') - depends_on("libsodium") - depends_on("libsodium@:1.0.3", when='@:4.1.2') + variant("libsodium", default=True, description="Build with libsodium support") + + depends_on("libsodium", when='+libsodium') + depends_on("libsodium@:1.0.3", when='+libsodium@:4.1.2') depends_on('autoconf', type='build', when='@develop') depends_on('automake', type='build', when='@develop') @@ -40,7 +42,9 @@ class Zeromq(AutotoolsPackage): bash('./autogen.sh') def configure_args(self): - config_args = ['--with-libsodium'] + config_args = [] + if '+libsodium' in self.spec: + config_args.append('--with-libsodium') if 'clang' in self.compiler.cc: config_args.append("CFLAGS=-Wno-gnu") config_args.append("CXXFLAGS=-Wno-gnu") -- cgit v1.2.3-60-g2f50