From 8725f453e3080d98197f50ab50977855d09ad04d Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Mon, 26 Dec 2022 23:47:52 -0400 Subject: [PATCH 01/11] chore(pkg): Add support to OSX --- .github/workflows/main.yaml | 12 +++++++++-- conda/dev-linux-64.yaml | 1 - conda/dev-osx-64.yaml | 40 +++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 conda/dev-osx-64.yaml diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 52eb04b..30503ca 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -12,7 +12,15 @@ on: jobs: main: - runs-on: ubuntu-latest + strategy: + matrix: + include: + - os: ubuntu-latest + conda_env_file: dev-linux-64.yaml + - os: macos-latest + conda_env_file: dev-osx-64.yaml + + runs-on: ${{ matrix.os }} timeout-minutes: 20 concurrency: @@ -37,7 +45,7 @@ jobs: channels: conda-forge,nodefaults channel-priority: true activate-environment: arx - environment-file: conda/dev-linux-64.yaml + environment-file: conda/${{ matrix.conda_env_file }} - name: build run: make build-dev CLEAN=1 diff --git a/conda/dev-linux-64.yaml b/conda/dev-linux-64.yaml index f80790a..3d53b44 100644 --- a/conda/dev-linux-64.yaml +++ b/conda/dev-linux-64.yaml @@ -14,7 +14,6 @@ dependencies: - gdb - glib - libclang-cpp 15.* -# - libcxx 15.* - libstdcxx-devel_linux-64 - libstdcxx-ng - lld 15.* diff --git a/conda/dev-osx-64.yaml b/conda/dev-osx-64.yaml new file mode 100644 index 0000000..f92be59 --- /dev/null +++ b/conda/dev-osx-64.yaml @@ -0,0 +1,40 @@ +name: arx +channels: +- nodefaults +- conda-forge +dependencies: +# build +- clangdev 15.* +- clangxx 15.* +- cmake +- compiler-rt 15.* +- compilers +# it would be nice to replace that by lldb, but +# the latest version on conda-forge is very old. +- gdb +- glib +- libclang-cpp 15.* +- lld 15.* +- llvmdev 15.* +- make +- meson +- ninja +- pkg-config +# run +- arrow-c-glib 10.* +- arrow-cpp 10.* +- cli11 +- glog +# dev +- cppcheck +- docker-compose +- doxygen +- gmock +- gtest +- include-what-you-use >=0.18 +- jupyterlab +- lcov +- mkdocs +- mkdocs-jupyter +- nodejs +- pre-commit From f0950ff66e2bcd5013b1f030e422bc1a3e0bc2fc Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Mon, 26 Dec 2022 23:49:55 -0400 Subject: [PATCH 02/11] fix concurrency id --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 30503ca..ec2006d 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -24,7 +24,7 @@ jobs: timeout-minutes: 20 concurrency: - group: ci-main-${{ github.ref }} + group: ci-${{ matrix.os }}-main-${{ github.ref }} cancel-in-progress: true defaults: From 66d31e45314daf8e452f4c1b580408a075b2f72d Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Tue, 27 Dec 2022 08:57:30 -0400 Subject: [PATCH 03/11] Disable iwyu for osx --- conda/dev-osx-64.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda/dev-osx-64.yaml b/conda/dev-osx-64.yaml index f92be59..31ee6d1 100644 --- a/conda/dev-osx-64.yaml +++ b/conda/dev-osx-64.yaml @@ -31,7 +31,7 @@ dependencies: - doxygen - gmock - gtest -- include-what-you-use >=0.18 +# - include-what-you-use >=0.18 - jupyterlab - lcov - mkdocs From 6f4368eb31a14dbb3730e2d16ad0d48c6fa1b07a Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Tue, 27 Dec 2022 09:29:09 -0400 Subject: [PATCH 04/11] remove compiler-rt from deps for osx --- conda/dev-osx-64.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda/dev-osx-64.yaml b/conda/dev-osx-64.yaml index 31ee6d1..1e5cc99 100644 --- a/conda/dev-osx-64.yaml +++ b/conda/dev-osx-64.yaml @@ -7,7 +7,7 @@ dependencies: - clangdev 15.* - clangxx 15.* - cmake -- compiler-rt 15.* +# - compiler-rt 15.* - compilers # it would be nice to replace that by lldb, but # the latest version on conda-forge is very old. From a43db31197244b0474b959c1c47fd9f0aa979676 Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Tue, 27 Dec 2022 09:33:55 -0400 Subject: [PATCH 05/11] update deps for osx --- conda/dev-osx-64.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/conda/dev-osx-64.yaml b/conda/dev-osx-64.yaml index 1e5cc99..b913f06 100644 --- a/conda/dev-osx-64.yaml +++ b/conda/dev-osx-64.yaml @@ -12,8 +12,8 @@ dependencies: # it would be nice to replace that by lldb, but # the latest version on conda-forge is very old. - gdb -- glib -- libclang-cpp 15.* +# - glib +# - libclang-cpp 15.* - lld 15.* - llvmdev 15.* - make @@ -21,8 +21,8 @@ dependencies: - ninja - pkg-config # run -- arrow-c-glib 10.* -- arrow-cpp 10.* +# - arrow-c-glib 10.* +# - arrow-cpp 10.* - cli11 - glog # dev @@ -36,5 +36,5 @@ dependencies: - lcov - mkdocs - mkdocs-jupyter -- nodejs +# - nodejs - pre-commit From 867f70d8c644d78af8ddef5a181ab2be1b20a08f Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Tue, 27 Dec 2022 09:36:45 -0400 Subject: [PATCH 06/11] update deps for osx --- conda/dev-osx-64.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda/dev-osx-64.yaml b/conda/dev-osx-64.yaml index b913f06..6987ea4 100644 --- a/conda/dev-osx-64.yaml +++ b/conda/dev-osx-64.yaml @@ -7,7 +7,7 @@ dependencies: - clangdev 15.* - clangxx 15.* - cmake -# - compiler-rt 15.* +- compiler-rt 15.* - compilers # it would be nice to replace that by lldb, but # the latest version on conda-forge is very old. From 2d9389393a115948ffca791676d2e5995490a35a Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Tue, 27 Dec 2022 09:40:51 -0400 Subject: [PATCH 07/11] update deps for osx --- conda/dev-osx-64.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/conda/dev-osx-64.yaml b/conda/dev-osx-64.yaml index 6987ea4..309f621 100644 --- a/conda/dev-osx-64.yaml +++ b/conda/dev-osx-64.yaml @@ -4,18 +4,18 @@ channels: - conda-forge dependencies: # build -- clangdev 15.* -- clangxx 15.* +- clangdev 14.* +- clangxx 14.* - cmake -- compiler-rt 15.* +- compiler-rt 14.* - compilers # it would be nice to replace that by lldb, but # the latest version on conda-forge is very old. - gdb # - glib -# - libclang-cpp 15.* -- lld 15.* -- llvmdev 15.* +- libclang-cpp 14.* +- lld 14.* +- llvmdev 14.* - make - meson - ninja From 44c2a8396da3f22c68d7429a27c788995bcfd74f Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Tue, 27 Dec 2022 09:44:21 -0400 Subject: [PATCH 08/11] update deps for osx --- conda/dev-osx-64.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/conda/dev-osx-64.yaml b/conda/dev-osx-64.yaml index 309f621..eec5631 100644 --- a/conda/dev-osx-64.yaml +++ b/conda/dev-osx-64.yaml @@ -12,7 +12,7 @@ dependencies: # it would be nice to replace that by lldb, but # the latest version on conda-forge is very old. - gdb -# - glib +- glib - libclang-cpp 14.* - lld 14.* - llvmdev 14.* @@ -21,8 +21,8 @@ dependencies: - ninja - pkg-config # run -# - arrow-c-glib 10.* -# - arrow-cpp 10.* +- arrow-c-glib 10.* +- arrow-cpp 10.* - cli11 - glog # dev @@ -31,10 +31,10 @@ dependencies: - doxygen - gmock - gtest -# - include-what-you-use >=0.18 +- include-what-you-use >=0.18 - jupyterlab - lcov - mkdocs - mkdocs-jupyter -# - nodejs +- nodejs - pre-commit From cc5b86818aaccb9cbbac4f59d5d41176310e78fa Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Tue, 27 Dec 2022 09:50:21 -0400 Subject: [PATCH 09/11] update deps for osx --- conda/dev-osx-64.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda/dev-osx-64.yaml b/conda/dev-osx-64.yaml index eec5631..56e4c71 100644 --- a/conda/dev-osx-64.yaml +++ b/conda/dev-osx-64.yaml @@ -31,7 +31,7 @@ dependencies: - doxygen - gmock - gtest -- include-what-you-use >=0.18 +# - include-what-you-use >=0.18 - jupyterlab - lcov - mkdocs From 14aa3f849260a28adf2174ca813ffc17efddb311 Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Tue, 27 Dec 2022 10:40:21 -0400 Subject: [PATCH 10/11] Add conditional pinning --- meson.build | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index c229320..0e82af9 100644 --- a/meson.build +++ b/meson.build @@ -11,9 +11,22 @@ PROJECT_PATH = meson.source_root() cxx = meson.get_compiler('cpp') +r = run_command('echo', '$OSTYPE', check: true) +operation_system = r.stdout().strip() + +# note: probably not a good approach but we should have both +# OS with the same pinning soon + +if 'Linux' in operation_system + llvm_version = '>=15.0.0' +else + # osx + llvm_version = '>=14.0.0' +endif + deps = [ dependency('arrow'), - dependency('llvm', version : '>=14.0.0'), + dependency('llvm', version : llvm_version), dependency('CLI11'), dependency('threads'), dependency('glog'), From 4b2adac8d6d6617a24a9e780ceb3ce017c678e01 Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Tue, 27 Dec 2022 11:26:07 -0400 Subject: [PATCH 11/11] Use clang-cl for osx --- .github/workflows/main.yaml | 7 ++++++- Makefile | 4 ++-- meson.build | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index ec2006d..f5da4a9 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -47,9 +47,14 @@ jobs: activate-environment: arx environment-file: conda/${{ matrix.conda_env_file }} - - name: build + - name: Build on Linux + if: ${{ matrix.os == 'ubuntu-latest' }} run: make build-dev CLEAN=1 + - name: Build on OSX + if: ${{ matrix.os == 'macos-latest' }} + run: make build-dev CLEAN=1 CC=clang-cl + - name: test flags run: | build/arx --version diff --git a/Makefile b/Makefile index 6a2dedf..2c04e7d 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # build CLEAN=0 -CXX=clang++ -CC=clang +CXX:=clang++ +CC:=clang ARGS:= diff --git a/meson.build b/meson.build index 0e82af9..c11eeb4 100644 --- a/meson.build +++ b/meson.build @@ -12,12 +12,12 @@ PROJECT_PATH = meson.source_root() cxx = meson.get_compiler('cpp') r = run_command('echo', '$OSTYPE', check: true) -operation_system = r.stdout().strip() +operating_system = r.stdout().strip() # note: probably not a good approach but we should have both # OS with the same pinning soon -if 'Linux' in operation_system +if 'Linux' in operating_system llvm_version = '>=15.0.0' else # osx