From a7a465e69cab95e3e9a2d47b33dee869f897398f Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Tue, 30 Oct 2018 17:29:48 +0100 Subject: [PATCH] Added LevelDB package --- LevelDB/build.py | 10 +++++ LevelDB/conanfile.py | 63 +++++++++++++++++++++++++++++ LevelDB/test_package/CMakeLists.txt | 8 ++++ LevelDB/test_package/conanfile.py | 31 ++++++++++++++ LevelDB/test_package/example.cpp | 13 ++++++ SystemCVerification/conanfile.py | 1 + 6 files changed, 126 insertions(+) create mode 100644 LevelDB/build.py create mode 100644 LevelDB/conanfile.py create mode 100644 LevelDB/test_package/CMakeLists.txt create mode 100644 LevelDB/test_package/conanfile.py create mode 100644 LevelDB/test_package/example.cpp diff --git a/LevelDB/build.py b/LevelDB/build.py new file mode 100644 index 0000000..afa72c8 --- /dev/null +++ b/LevelDB/build.py @@ -0,0 +1,10 @@ +from conan.packager import ConanMultiPackager + +if __name__ == "__main__": + builder = ConanMultiPackager() + libstd = ['libstdc++11'] + types = ['Debug','Release'] + configs = [[i,k] for i in libstd for k in types] + for triple in configs: + builder.add(settings={"build_type":triple[1], "compiler.libcxx":triple[0]}, options={}, env_vars={}, build_requires={}) + builder.run() diff --git a/LevelDB/conanfile.py b/LevelDB/conanfile.py new file mode 100644 index 0000000..a4906cb --- /dev/null +++ b/LevelDB/conanfile.py @@ -0,0 +1,63 @@ +from conans import ConanFile, CMake, tools +import os + + +class LevelDBConan(ConanFile): + name = "LevelDB" + version = "1.20" + license = "https://github.com/google/leveldb/blob/master/LICENSE" + url = "https://github.com/Minres/conan-recipes/LevelDB" + use_master = True + settings = "os", "compiler", "build_type", "arch" + options = {"shared": [True, False]} + default_options = "shared=True" + generators = "cmake" + exports_sources = "leveldb/*" + + @property + def source_subfolder(self): + if self.use_master: + return "leveldb-master" + else: + return "leveldb-%s" % self.version + + @property + def download_url(self): + if self.use_master: + return "https://github.com/google/leveldb/archive/master.zip" + else: + return "https://github.com/google/leveldb/archive/v%s.zip" % self.version + + def source(self): + tools.download(self.download_url, "leveldb.zip") + tools.unzip("leveldb.zip") +# self.run("git clone https://github.com/google/leveldb.git %s" % self.source_subfolder) + + def build(self): + cmake = CMake(self, parallel=True) + cmake.configure( + source_folder=self.source_subfolder, + args=[ + "-DBUILD_SHARED_LIBS=ON" if self.options.shared else "-DBUILD_SHARED_LIBS=OFF", + "-DCMAKE_INSTALL_LIBDIR=lib" + ] + ) + cmake.build() + cmake.install() + +# def package(self): +# self.copy("*", dst="include", src="%s/include" % self.zipped_folder, keep_path=True) +# self.copy("*.lib", dst="lib", keep_path=False) +# self.copy("LICENSE", src=self.zipped_folder, dst="", keep_path=False) + +# if self.options.shared: +# self.copy("*.dll", dst="bin", keep_path=False) +# self.copy("*.so*", dst="lib", keep_path=False) +# else: +# self.copy("*.a", dst="lib", keep_path=False) + + + def package_info(self): + self.cpp_info.libs = ["leveldb"] + if self.settings.os == "Linux": + self.cpp_info.libs.append("pthread") diff --git a/LevelDB/test_package/CMakeLists.txt b/LevelDB/test_package/CMakeLists.txt new file mode 100644 index 0000000..27d1be2 --- /dev/null +++ b/LevelDB/test_package/CMakeLists.txt @@ -0,0 +1,8 @@ +PROJECT(PackageTest) +cmake_minimum_required(VERSION 2.8.12) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup() + +ADD_EXECUTABLE(example example.cpp) +TARGET_LINK_LIBRARIES(example ${CONAN_LIBS}) diff --git a/LevelDB/test_package/conanfile.py b/LevelDB/test_package/conanfile.py new file mode 100644 index 0000000..5a48d63 --- /dev/null +++ b/LevelDB/test_package/conanfile.py @@ -0,0 +1,31 @@ +from conans import ConanFile, CMake +import os + + +channel = os.getenv("CONAN_CHANNEL", "stable") +username = os.getenv("CONAN_USERNAME", "minres") + + +class LeveldbTestConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + options = {"shared": [True, False]} + default_options = "shared=True" + requires = "LevelDB/1.20@%s/%s" % (username, channel) + generators = "cmake" + + def configure(self): + self.options["LevelDB"].shared = self.options.shared + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def imports(self): + self.copy("*.dll", "bin", "bin") + self.copy("*.so", "lib", "bin") + self.copy("*.dylib", "lib", "bin") + + def test(self): + os.chdir("bin") + self.run("LD_LIBRARY_PATH=$(pwd) && .%sexample" % os.sep) diff --git a/LevelDB/test_package/example.cpp b/LevelDB/test_package/example.cpp new file mode 100644 index 0000000..17b377f --- /dev/null +++ b/LevelDB/test_package/example.cpp @@ -0,0 +1,13 @@ +#include "leveldb/db.h" + +int main() { + leveldb::DB* db; + leveldb::Options options; + options.create_if_missing = true; + leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db); + if(status.ok()){ + return 0; + } + return -1; +} + diff --git a/SystemCVerification/conanfile.py b/SystemCVerification/conanfile.py index 5856d7b..941074e 100644 --- a/SystemCVerification/conanfile.py +++ b/SystemCVerification/conanfile.py @@ -28,6 +28,7 @@ class SystemcverificationConan(ConanFile): env_build.cxx_flags = "-std=gnu++98" env_build.fpic = True tools.mkdir("build") + env_build.libs.remove('systemc') with tools.chdir("build"): env_build.configure( configure_dir=os.path.join(self.source_folder, self.source_subfolder),