mirror of
				https://github.com/Minres/conan-recipes.git
				synced 2025-10-31 14:11:53 +00:00 
			
		
		
		
	Add RocksDB receipt
This commit is contained in:
		
							
								
								
									
										15
									
								
								RocksDB/build.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								RocksDB/build.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| #!/usr/bin/env python3 | ||||
| from conan.packager import ConanMultiPackager | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     builder = ConanMultiPackager(username="minres") | ||||
|     cxxstds = ['11','14'] | ||||
|     libstdcxx = ['libstdc++', 'libstdc++11'] | ||||
|     shared = [True, False] | ||||
|     for triple in [[c,l] for c in cxxstds for l in libstdcxx]: | ||||
|         builder.add( | ||||
|             settings={"compiler.libcxx":triple[1]}, | ||||
|             options={"stdcxx" : triple[0], "fPIC":True}, | ||||
|             env_vars={}, | ||||
|             build_requires={}) | ||||
|     builder.run() | ||||
							
								
								
									
										64
									
								
								RocksDB/conanfile.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								RocksDB/conanfile.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| from conans import ConanFile, CMake, tools | ||||
| import os | ||||
|  | ||||
| class RocksDBConan(ConanFile): | ||||
|     name = "rocksdb" | ||||
|     version = "6.6.4" | ||||
|     license = "Apache 2.0 License" | ||||
|     url = "https://github.com/facebook/rocksdb/" | ||||
|     description = "A library that provides an embeddable, persistent key-value store for fast storage." | ||||
|     settings = "os", "compiler", "build_type", "arch" | ||||
|     options = {"stdcxx":[11,14], "fPIC":[True, False]} | ||||
|     default_options = "stdcxx=14", "fPIC=True" | ||||
|     generators = ["cmake", "cmake_find_package", "cmake_paths"] | ||||
|     source_subfolder = "rocksdb-%s"% version | ||||
|     exports_sources = "rocksdb/*" | ||||
|  | ||||
|     source_tgz = "https://github.com/facebook/rocksdb/archive/v%s.tar.gz" % version | ||||
|      | ||||
|     requires = ( | ||||
|         "zlib/1.2.11", | ||||
|         "bzip2/1.0.8", | ||||
|         "lz4/1.8.0@bincrafters/stable", | ||||
|         "gflags/2.2.2" | ||||
|         #"zlib/1.2.11@conan/stable", | ||||
|         #"bzip2/1.0.8@conan/stable", | ||||
|         #"lz4/1.8.0@bincrafters/stable", | ||||
|         #"gflags/2.2.2@bincrafters/stable" | ||||
|         # TODO snappy, zstandard | ||||
|     ) | ||||
|  | ||||
|  | ||||
|     def source(self): | ||||
|         self.output.info("Downloading %s" %self.source_tgz) | ||||
|         tools.download(self.source_tgz, "rocksdb.tar.gz") | ||||
|         tools.unzip("rocksdb.tar.gz") | ||||
|         os.remove("rocksdb.tar.gz") | ||||
|  | ||||
|     def build(self): | ||||
|         cmake = CMake(self, parallel=True) | ||||
|         cmake.configure( | ||||
|                 source_folder=self.source_subfolder, | ||||
|                 args=[ | ||||
|                     '-DCMAKE_CXX_FLAGS:="-D_GLIBCXX_USE_CXX11_ABI=%d"' % (0 if self.settings.compiler.libcxx == 'libstdc++' else 1), | ||||
|                     #'-DROCKSDB_BUILD_SHARED=%s' % ('ON' if self.options.shared else 'OFF'), | ||||
|                     '-DCMAKE_POSITION_INDEPENDENT_CODE=%s' % ('ON' if self.options.fPIC else 'OFF'), | ||||
|                     '-DCMAKE_CXX_STANDARD=%s' % self.options.stdcxx, | ||||
|                     '-DWITH_LZ4=ON -DWITH_ZLIB=ON -DWITH_BZ2=ON -DDISABLE_STALL_NOTIF=ON -DWITH_TESTS=OFF', | ||||
|                     #'-DWITH_LZ4=ON -DWITH_ZLIB=ON -DWITH_BZ2=ON -DDISABLE_STALL_NOTIF=ON -DWITH_TOOLS=OFF -DWITH_TESTS=OFF', | ||||
|                     #'-DWITH_BENCHMARK_TOOLS=OFF -DWITH_CORE_TOOLS=OFF -DWITH_TOOLS=OFF -DWITH_TESTS=OFF' | ||||
|                     ] | ||||
|                 ) | ||||
|         cmake.build(target='rocksdb') | ||||
|         #cmake.install() | ||||
|  | ||||
|     def package(self): | ||||
|         self.copy("LICENSE.Apache", src=self.source_subfolder, keep_path=False) | ||||
|         self.copy("LICENSE.leveldb", src=self.source_subfolder, keep_path=False) | ||||
|         self.copy("*.h", dst="include", src=("%s/include" % self.source_subfolder)) | ||||
|         self.copy("librocksdb.a", dst="lib", keep_path=False) | ||||
|  | ||||
|     def package_info(self): | ||||
|         self.cpp_info.libs = ["rocksdb"] | ||||
|         if self.settings.os == "Linux": | ||||
|             self.cpp_info.libs.append("pthread") | ||||
							
								
								
									
										12
									
								
								RocksDB/test_package/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								RocksDB/test_package/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| project(PackageTest CXX) | ||||
| cmake_minimum_required(VERSION 3.12) | ||||
|  | ||||
| include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) | ||||
| conan_basic_setup(TARGETS) | ||||
|  | ||||
| set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||||
| set(CMAKE_CXX_EXTENSIONS OFF) | ||||
|  | ||||
| add_executable(rocks_sample rocksdb.cpp) | ||||
| target_link_libraries(rocks_sample CONAN_PKG::rocksdb) | ||||
| target_link_libraries(rocks_sample CONAN_PKG::gflags) | ||||
							
								
								
									
										28
									
								
								RocksDB/test_package/conanfile.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								RocksDB/test_package/conanfile.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| from conans import ConanFile, CMake | ||||
| import os | ||||
|  | ||||
| class RocksdbTestConan(ConanFile): | ||||
|     settings = "os", "compiler", "build_type", "arch" | ||||
|     options = {"stdcxx":[11,14], "fPIC":[True, False]} | ||||
|     default_options = "stdcxx=14", "fPIC=True" | ||||
|     generators = "cmake" | ||||
|  | ||||
|     def configure(self): | ||||
|         self.options["rocksdb"].stdcxx = self.options.stdcxx | ||||
|         self.options["rocksdb"].fPIC = self.options.fPIC | ||||
|  | ||||
|     def build(self): | ||||
|         cmake = CMake(self) | ||||
|         cmake.definitions["CMAKE_CXX_STANDARD"] = self.options["rocksdb"].stdcxx | ||||
|         cmake.definitions["CMAKE_CXX_FLAGS"]="-D_GLIBCXX_USE_CXX11_ABI=%d" %(0 if self.settings.compiler.libcxx == 'libstdc++' else 1) | ||||
|         cmake.configure() | ||||
|         cmake.build() | ||||
|  | ||||
|     def imports(self): | ||||
|         self.copy("*.dll", dst="bin", src="bin") | ||||
|         self.copy("*.dylib*", dst="bin", src="lib") | ||||
|         self.copy('*.so*', dst='bin', src='lib') | ||||
|  | ||||
|     def test(self): | ||||
|         os.chdir("bin") | ||||
|         self.run(".%srocks_sample" % os.sep) | ||||
							
								
								
									
										16
									
								
								RocksDB/test_package/rocksdb.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								RocksDB/test_package/rocksdb.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| #include <cassert> | ||||
| #include "rocksdb/db.h" | ||||
|  | ||||
| int main() | ||||
| { | ||||
|   rocksdb::DB * db; | ||||
|   rocksdb::Options options; | ||||
|  | ||||
|   options.create_if_missing = true; | ||||
|  | ||||
|   rocksdb::Status status = rocksdb::DB::Open(options, "/tmp/testrocksdb", &db); | ||||
|  | ||||
|   assert(status.ok()); | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user