From 2739eee5fd14ae208903b3c247476925955204b6 Mon Sep 17 00:00:00 2001 From: Mark Meredith Date: Tue, 9 Jun 2020 13:46:01 -0400 Subject: [PATCH 1/5] Default to C++17 --- .gitlab-ci.yml | 2 +- meson.build | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5546109..fe3b849 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ variables: test:meson: script: - python -m pip install meson ninja conan - - meson build + - meson build -Dcpp_std=c++2a - meson test -C build --print-errorlogs tags: - mfix-exa diff --git a/meson.build b/meson.build index e3fec93..652e988 100644 --- a/meson.build +++ b/meson.build @@ -1,12 +1,16 @@ -project('mfix-parser', 'cpp', - version : '0.1', - default_options : [ - 'warning_level=3', - 'pkg_config_path=' + meson.build_root(), - 'cpp_std=c++2a']) +project( + 'mfix-parser', 'cpp', + version : '0.1', + default_options : [ + 'warning_level=3', + 'pkg_config_path=' + meson.build_root(), + 'cpp_std=c++17' + ] +) -run_command('conan', 'install', '--install-folder', meson.build_root(), - meson.current_source_dir(), check: true) +run_command('conan', 'install', meson.current_source_dir(), + '--install-folder', meson.build_root(), + check: true) pegtl = dependency('taocpp-pegtl', method: 'pkg-config') catch2 = dependency('catch2', method: 'pkg-config') -- GitLab From b303dc608f35900b40abacaa1f905582bb9bbac4 Mon Sep 17 00:00:00 2001 From: Mark Meredith Date: Tue, 9 Jun 2020 14:17:02 -0400 Subject: [PATCH 2/5] Try conan --- conanfile.py | 54 +++++++++++++++++++++++++++++++++++++ meson.build | 6 ++--- test_package/CMakeLists.txt | 14 ++++++++++ test_package/conanfile.py | 29 ++++++++++++++++++++ test_package/example.cpp | 6 +++++ 5 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 conanfile.py create mode 100644 test_package/CMakeLists.txt create mode 100644 test_package/conanfile.py create mode 100644 test_package/example.cpp diff --git a/conanfile.py b/conanfile.py new file mode 100644 index 0000000..ad5eef5 --- /dev/null +++ b/conanfile.py @@ -0,0 +1,54 @@ +from conans import ConanFile, Meson, tools + + +class MfixParserConan(ConanFile): + name = "mfix-parser" + version = "0.1" + license = "" + author = " " + url = "" + description = "" + topics = ("", "", "") + settings = "os", "compiler", "build_type", "arch" + options = {"shared": [True, False]} + default_options = {"shared": False} + generators = "pkg_config" + + def source(self): + self.run("git clone -b mwm/conan https://mfix.netl.doe.gov/gitlab/exa/mfix-parser.git") + # This small hack might be useful to guarantee proper /MT /MD linkage + # in MSVC if the packaged project doesn't have variables to set it + # properly + +# tools.replace_in_file("hello/CMakeLists.txt", "PROJECT(HelloWorld)", +# '''PROJECT(HelloWorld) +# include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +# conan_basic_setup()''') + + def build(self): + meson = Meson(self) + meson.configure( + source_folder='mfix-parser', + build_folder='da_build', + ) + meson.build() + + # cmake = CMake(self) + # cmake.configure(source_folder="mfix-parser") + # cmake.build() + + # Explicit way: + # self.run('cmake %s/hello %s' + # % (self.source_folder, cmake.command_line)) + # self.run("cmake --build . %s" % cmake.build_config) + + def package(self): + self.copy("*.h", dst="include", src="hello") + self.copy("*hello.lib", dst="lib", keep_path=False) + self.copy("*.dll", dst="bin", keep_path=False) + self.copy("*.so", dst="lib", keep_path=False) + self.copy("*.dylib", dst="lib", keep_path=False) + self.copy("*.a", dst="lib", keep_path=False) + + def package_info(self): + self.cpp_info.libs = ["hello"] diff --git a/meson.build b/meson.build index 652e988..857c3c7 100644 --- a/meson.build +++ b/meson.build @@ -8,9 +8,9 @@ project( ] ) -run_command('conan', 'install', meson.current_source_dir(), - '--install-folder', meson.build_root(), - check: true) +# run_command('conan', 'install', meson.current_source_dir(), +# '--install-folder', meson.build_root(), +# check: true) pegtl = dependency('taocpp-pegtl', method: 'pkg-config') catch2 = dependency('catch2', method: 'pkg-config') diff --git a/test_package/CMakeLists.txt b/test_package/CMakeLists.txt new file mode 100644 index 0000000..ad6dc6e --- /dev/null +++ b/test_package/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 2.8.12) +project(PackageTest CXX) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup() + +add_executable(example example.cpp) +target_link_libraries(example ${CONAN_LIBS}) + +# CTest is a testing tool that can be used to test your project. +# enable_testing() +# add_test(NAME example +# WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin +# COMMAND example) diff --git a/test_package/conanfile.py b/test_package/conanfile.py new file mode 100644 index 0000000..4e3e06a --- /dev/null +++ b/test_package/conanfile.py @@ -0,0 +1,29 @@ +import os + +from conans import ConanFile, CMake, tools + + +class MfixParserTestConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "cmake" + + def build(self): + pass + + # cmake = CMake(self) + # # Current dir is "test_package/build/" and CMakeLists.txt is + # # in "test_package" + # 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): + pass + + # if not tools.cross_building(self): + # os.chdir("bin") + # self.run(".%sexample" % os.sep) diff --git a/test_package/example.cpp b/test_package/example.cpp new file mode 100644 index 0000000..4a5549c --- /dev/null +++ b/test_package/example.cpp @@ -0,0 +1,6 @@ +#include +#include "hello.h" + +int main() { + hello(); +} -- GitLab From 76495ba99a4ca71dcdf1b3742450cbfa77d25653 Mon Sep 17 00:00:00 2001 From: Mark Meredith Date: Tue, 9 Jun 2020 14:40:27 -0400 Subject: [PATCH 3/5] Fix --- conanfile.py | 36 ++++++++---------------------------- conanfile.txt | 7 ------- meson.build | 4 ---- test_package/CMakeLists.txt | 14 -------------- test_package/conanfile.py | 29 ----------------------------- test_package/example.cpp | 6 ------ 6 files changed, 8 insertions(+), 88 deletions(-) delete mode 100644 conanfile.txt delete mode 100644 test_package/CMakeLists.txt delete mode 100644 test_package/conanfile.py delete mode 100644 test_package/example.cpp diff --git a/conanfile.py b/conanfile.py index ad5eef5..d2fda1e 100644 --- a/conanfile.py +++ b/conanfile.py @@ -13,42 +13,22 @@ class MfixParserConan(ConanFile): options = {"shared": [True, False]} default_options = {"shared": False} generators = "pkg_config" + requires = "catch2/2.12.2", "cgal/5.0.2", "taocpp-pegtl/2.8.3" + build_requires = "meson/0.54.2" def source(self): - self.run("git clone -b mwm/conan https://mfix.netl.doe.gov/gitlab/exa/mfix-parser.git") - # This small hack might be useful to guarantee proper /MT /MD linkage - # in MSVC if the packaged project doesn't have variables to set it - # properly - -# tools.replace_in_file("hello/CMakeLists.txt", "PROJECT(HelloWorld)", -# '''PROJECT(HelloWorld) -# include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) -# conan_basic_setup()''') + self.run( + "git clone -b mwm/conan https://mfix.netl.doe.gov/gitlab/exa/mfix-parser.git" + ) def build(self): meson = Meson(self) - meson.configure( - source_folder='mfix-parser', - build_folder='da_build', - ) + meson.configure(source_folder="mfix-parser") meson.build() - # cmake = CMake(self) - # cmake.configure(source_folder="mfix-parser") - # cmake.build() - - # Explicit way: - # self.run('cmake %s/hello %s' - # % (self.source_folder, cmake.command_line)) - # self.run("cmake --build . %s" % cmake.build_config) - def package(self): - self.copy("*.h", dst="include", src="hello") - self.copy("*hello.lib", dst="lib", keep_path=False) - self.copy("*.dll", dst="bin", keep_path=False) - self.copy("*.so", dst="lib", keep_path=False) - self.copy("*.dylib", dst="lib", keep_path=False) + self.copy("*.h", dst="include", src="mfix-parser") self.copy("*.a", dst="lib", keep_path=False) def package_info(self): - self.cpp_info.libs = ["hello"] + self.cpp_info.libs = ["mfix-parser"] diff --git a/conanfile.txt b/conanfile.txt deleted file mode 100644 index bc0cd17..0000000 --- a/conanfile.txt +++ /dev/null @@ -1,7 +0,0 @@ -[requires] -catch2/2.12.2 -cgal/5.0.2 -taocpp-pegtl/2.8.3 - -[generators] -pkg_config diff --git a/meson.build b/meson.build index 857c3c7..8b43ef5 100644 --- a/meson.build +++ b/meson.build @@ -8,10 +8,6 @@ project( ] ) -# run_command('conan', 'install', meson.current_source_dir(), -# '--install-folder', meson.build_root(), -# check: true) - pegtl = dependency('taocpp-pegtl', method: 'pkg-config') catch2 = dependency('catch2', method: 'pkg-config') cgal = dependency('cgal', method: 'pkg-config') diff --git a/test_package/CMakeLists.txt b/test_package/CMakeLists.txt deleted file mode 100644 index ad6dc6e..0000000 --- a/test_package/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -cmake_minimum_required(VERSION 2.8.12) -project(PackageTest CXX) - -include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) -conan_basic_setup() - -add_executable(example example.cpp) -target_link_libraries(example ${CONAN_LIBS}) - -# CTest is a testing tool that can be used to test your project. -# enable_testing() -# add_test(NAME example -# WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin -# COMMAND example) diff --git a/test_package/conanfile.py b/test_package/conanfile.py deleted file mode 100644 index 4e3e06a..0000000 --- a/test_package/conanfile.py +++ /dev/null @@ -1,29 +0,0 @@ -import os - -from conans import ConanFile, CMake, tools - - -class MfixParserTestConan(ConanFile): - settings = "os", "compiler", "build_type", "arch" - generators = "cmake" - - def build(self): - pass - - # cmake = CMake(self) - # # Current dir is "test_package/build/" and CMakeLists.txt is - # # in "test_package" - # 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): - pass - - # if not tools.cross_building(self): - # os.chdir("bin") - # self.run(".%sexample" % os.sep) diff --git a/test_package/example.cpp b/test_package/example.cpp deleted file mode 100644 index 4a5549c..0000000 --- a/test_package/example.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include "hello.h" - -int main() { - hello(); -} -- GitLab From 1f5ce3b953e6d37f59287b2927d5206af41f3091 Mon Sep 17 00:00:00 2001 From: Mark Meredith Date: Tue, 9 Jun 2020 14:41:58 -0400 Subject: [PATCH 4/5] Conda create in CI --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fe3b849..ce29162 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,9 +8,9 @@ variables: test:meson: script: - - python -m pip install meson ninja conan - - meson build -Dcpp_std=c++2a - - meson test -C build --print-errorlogs + - python -m pip install conan + - conan create . + # - meson test -C build --print-errorlogs tags: - mfix-exa -- GitLab From a266600e21828e15200c91ffec81a7b4a56faaa0 Mon Sep 17 00:00:00 2001 From: Mark Meredith Date: Tue, 9 Jun 2020 15:10:27 -0400 Subject: [PATCH 5/5] Fixes --- conanfile.py | 8 ++------ meson.build | 1 - 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/conanfile.py b/conanfile.py index d2fda1e..74ab5f7 100644 --- a/conanfile.py +++ b/conanfile.py @@ -15,15 +15,11 @@ class MfixParserConan(ConanFile): generators = "pkg_config" requires = "catch2/2.12.2", "cgal/5.0.2", "taocpp-pegtl/2.8.3" build_requires = "meson/0.54.2" - - def source(self): - self.run( - "git clone -b mwm/conan https://mfix.netl.doe.gov/gitlab/exa/mfix-parser.git" - ) + exports_sources = "meson.build", "include/*", "src/*" def build(self): meson = Meson(self) - meson.configure(source_folder="mfix-parser") + meson.configure(build_folder="build") meson.build() def package(self): diff --git a/meson.build b/meson.build index 8b43ef5..dde8cc6 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,6 @@ project( version : '0.1', default_options : [ 'warning_level=3', - 'pkg_config_path=' + meson.build_root(), 'cpp_std=c++17' ] ) -- GitLab