diff --git a/.github/config/ubuntu-22.04/conan/profiles/android-21-armv7 b/.github/config/ubuntu-22.04/conan/profiles/android-21-armv7 new file mode 100644 index 0000000..137d4d9 --- /dev/null +++ b/.github/config/ubuntu-22.04/conan/profiles/android-21-armv7 @@ -0,0 +1,35 @@ +{% set android_home = os.getenv("ANDROID_HOME") %} +{% set ndk_version = "26.3.11579264" %} +{% set api_level = "21" %} +{% set arch = "armv7" %} + +[settings] +os=Android +os.api_level={{api_level}} +arch={{arch}} +build_type=RelWithDebInfo +compiler=clang +compiler.version=17 +compiler.cppstd=20 +compiler.libcxx=c++_static + +[conf] +tools.android:ndk_path={{android_home}}/ndk/{{ndk_version}} + +[buildenv] +# Cross compile toolchain evn vars are required to build +# libffi, libgettext, libiconv, libxml2 and other autotools packages for Android +# https://github.com/conan-io/conan/issues/16493 +AR={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar +AS={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as +RANLIB={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib +{% set cc = { + "armv7": "armv7a-linux-androideabi" + api_level + "-clang", + "armv8": "aarch64-linux-android" + api_level + "-clang", + "x86": "i686-linux-android" + api_level + "-clang", + "x86_64": "x86_64-linux-android" + api_level + "-clang", +}[arch] %} +CC={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}} +CXX={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}}++ +LD={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/ld +STRIP={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip diff --git a/.github/config/ubuntu-22.04/conan/profiles/android-21-armv8 b/.github/config/ubuntu-22.04/conan/profiles/android-21-armv8 new file mode 100644 index 0000000..8d61005 --- /dev/null +++ b/.github/config/ubuntu-22.04/conan/profiles/android-21-armv8 @@ -0,0 +1,35 @@ +{% set android_home = os.getenv("ANDROID_HOME") %} +{% set ndk_version = "26.3.11579264" %} +{% set api_level = "21" %} +{% set arch = "armv8" %} + +[settings] +os=Android +os.api_level={{api_level}} +arch={{arch}} +build_type=RelWithDebInfo +compiler=clang +compiler.version=17 +compiler.cppstd=20 +compiler.libcxx=c++_static + +[conf] +tools.android:ndk_path={{android_home}}/ndk/{{ndk_version}} + +[buildenv] +# Cross compile toolchain evn vars are required to build +# libffi, libgettext, libiconv, libxml2 and other autotools packages for Android +# https://github.com/conan-io/conan/issues/16493 +AR={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar +AS={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as +RANLIB={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib +{% set cc = { + "armv7": "armv7a-linux-androideabi" + api_level + "-clang", + "armv8": "aarch64-linux-android" + api_level + "-clang", + "x86": "i686-linux-android" + api_level + "-clang", + "x86_64": "x86_64-linux-android" + api_level + "-clang", +}[arch] %} +CC={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}} +CXX={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}}++ +LD={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/ld +STRIP={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip diff --git a/.github/config/ubuntu-22.04/conan/profiles/android-21-x86 b/.github/config/ubuntu-22.04/conan/profiles/android-21-x86 new file mode 100644 index 0000000..ca567b4 --- /dev/null +++ b/.github/config/ubuntu-22.04/conan/profiles/android-21-x86 @@ -0,0 +1,35 @@ +{% set android_home = os.getenv("ANDROID_HOME") %} +{% set ndk_version = "26.3.11579264" %} +{% set api_level = "21" %} +{% set arch = "x86" %} + +[settings] +os=Android +os.api_level={{api_level}} +arch={{arch}} +build_type=RelWithDebInfo +compiler=clang +compiler.version=17 +compiler.cppstd=20 +compiler.libcxx=c++_static + +[conf] +tools.android:ndk_path={{android_home}}/ndk/{{ndk_version}} + +[buildenv] +# Cross compile toolchain evn vars are required to build +# libffi, libgettext, libiconv, libxml2 and other autotools packages for Android +# https://github.com/conan-io/conan/issues/16493 +AR={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar +AS={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as +RANLIB={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib +{% set cc = { + "armv7": "armv7a-linux-androideabi" + api_level + "-clang", + "armv8": "aarch64-linux-android" + api_level + "-clang", + "x86": "i686-linux-android" + api_level + "-clang", + "x86_64": "x86_64-linux-android" + api_level + "-clang", +}[arch] %} +CC={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}} +CXX={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}}++ +LD={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/ld +STRIP={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip diff --git a/.github/config/ubuntu-22.04/conan/profiles/android-21-x86_64 b/.github/config/ubuntu-22.04/conan/profiles/android-21-x86_64 new file mode 100644 index 0000000..cf42ab4 --- /dev/null +++ b/.github/config/ubuntu-22.04/conan/profiles/android-21-x86_64 @@ -0,0 +1,35 @@ +{% set android_home = os.getenv("ANDROID_HOME") %} +{% set ndk_version = "26.3.11579264" %} +{% set api_level = "21" %} +{% set arch = "x86_64" %} + +[settings] +os=Android +os.api_level={{api_level}} +arch={{arch}} +build_type=RelWithDebInfo +compiler=clang +compiler.version=17 +compiler.cppstd=20 +compiler.libcxx=c++_static + +[conf] +tools.android:ndk_path={{android_home}}/ndk/{{ndk_version}} + +[buildenv] +# Cross compile toolchain evn vars are required to build +# libffi, libgettext, libiconv, libxml2 and other autotools packages for Android +# https://github.com/conan-io/conan/issues/16493 +AR={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar +AS={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as +RANLIB={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib +{% set cc = { + "armv7": "armv7a-linux-androideabi" + api_level + "-clang", + "armv8": "aarch64-linux-android" + api_level + "-clang", + "x86": "i686-linux-android" + api_level + "-clang", + "x86_64": "x86_64-linux-android" + api_level + "-clang", +}[arch] %} +CC={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}} +CXX={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}}++ +LD={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/ld +STRIP={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip diff --git a/.github/config/ubuntu-22.04/conan/profiles/android-23-armv7 b/.github/config/ubuntu-22.04/conan/profiles/android-23-armv7 new file mode 100644 index 0000000..f2516e6 --- /dev/null +++ b/.github/config/ubuntu-22.04/conan/profiles/android-23-armv7 @@ -0,0 +1,35 @@ +{% set android_home = os.getenv("ANDROID_HOME") %} +{% set ndk_version = "26.3.11579264" %} +{% set api_level = "23" %} +{% set arch = "armv7" %} + +[settings] +os=Android +os.api_level={{api_level}} +arch={{arch}} +build_type=RelWithDebInfo +compiler=clang +compiler.version=17 +compiler.cppstd=20 +compiler.libcxx=c++_static + +[conf] +tools.android:ndk_path={{android_home}}/ndk/{{ndk_version}} + +[buildenv] +# Cross compile toolchain evn vars are required to build +# libffi, libgettext, libiconv, libxml2 and other autotools packages for Android +# https://github.com/conan-io/conan/issues/16493 +AR={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar +AS={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as +RANLIB={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib +{% set cc = { + "armv7": "armv7a-linux-androideabi" + api_level + "-clang", + "armv8": "aarch64-linux-android" + api_level + "-clang", + "x86": "i686-linux-android" + api_level + "-clang", + "x86_64": "x86_64-linux-android" + api_level + "-clang", +}[arch] %} +CC={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}} +CXX={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}}++ +LD={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/ld +STRIP={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip diff --git a/.github/config/ubuntu-22.04/conan/profiles/android-23-armv8 b/.github/config/ubuntu-22.04/conan/profiles/android-23-armv8 new file mode 100644 index 0000000..ac6edae --- /dev/null +++ b/.github/config/ubuntu-22.04/conan/profiles/android-23-armv8 @@ -0,0 +1,35 @@ +{% set android_home = os.getenv("ANDROID_HOME") %} +{% set ndk_version = "26.3.11579264" %} +{% set api_level = "23" %} +{% set arch = "armv8" %} + +[settings] +os=Android +os.api_level={{api_level}} +arch={{arch}} +build_type=RelWithDebInfo +compiler=clang +compiler.version=17 +compiler.cppstd=20 +compiler.libcxx=c++_static + +[conf] +tools.android:ndk_path={{android_home}}/ndk/{{ndk_version}} + +[buildenv] +# Cross compile toolchain evn vars are required to build +# libffi, libgettext, libiconv, libxml2 and other autotools packages for Android +# https://github.com/conan-io/conan/issues/16493 +AR={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar +AS={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as +RANLIB={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib +{% set cc = { + "armv7": "armv7a-linux-androideabi" + api_level + "-clang", + "armv8": "aarch64-linux-android" + api_level + "-clang", + "x86": "i686-linux-android" + api_level + "-clang", + "x86_64": "x86_64-linux-android" + api_level + "-clang", +}[arch] %} +CC={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}} +CXX={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}}++ +LD={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/ld +STRIP={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip diff --git a/.github/config/ubuntu-22.04/conan/profiles/android-23-x86 b/.github/config/ubuntu-22.04/conan/profiles/android-23-x86 new file mode 100644 index 0000000..b4c4f2f --- /dev/null +++ b/.github/config/ubuntu-22.04/conan/profiles/android-23-x86 @@ -0,0 +1,35 @@ +{% set android_home = os.getenv("ANDROID_HOME") %} +{% set ndk_version = "26.3.11579264" %} +{% set api_level = "23" %} +{% set arch = "x86" %} + +[settings] +os=Android +os.api_level={{api_level}} +arch={{arch}} +build_type=RelWithDebInfo +compiler=clang +compiler.version=17 +compiler.cppstd=20 +compiler.libcxx=c++_static + +[conf] +tools.android:ndk_path={{android_home}}/ndk/{{ndk_version}} + +[buildenv] +# Cross compile toolchain evn vars are required to build +# libffi, libgettext, libiconv, libxml2 and other autotools packages for Android +# https://github.com/conan-io/conan/issues/16493 +AR={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar +AS={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as +RANLIB={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib +{% set cc = { + "armv7": "armv7a-linux-androideabi" + api_level + "-clang", + "armv8": "aarch64-linux-android" + api_level + "-clang", + "x86": "i686-linux-android" + api_level + "-clang", + "x86_64": "x86_64-linux-android" + api_level + "-clang", +}[arch] %} +CC={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}} +CXX={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}}++ +LD={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/ld +STRIP={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip diff --git a/.github/config/ubuntu-22.04/conan/profiles/android-23-x86_64 b/.github/config/ubuntu-22.04/conan/profiles/android-23-x86_64 new file mode 100644 index 0000000..19d8260 --- /dev/null +++ b/.github/config/ubuntu-22.04/conan/profiles/android-23-x86_64 @@ -0,0 +1,35 @@ +{% set android_home = os.getenv("ANDROID_HOME") %} +{% set ndk_version = "26.3.11579264" %} +{% set api_level = "23" %} +{% set arch = "x86_64" %} + +[settings] +os=Android +os.api_level={{api_level}} +arch={{arch}} +build_type=RelWithDebInfo +compiler=clang +compiler.version=17 +compiler.cppstd=20 +compiler.libcxx=c++_static + +[conf] +tools.android:ndk_path={{android_home}}/ndk/{{ndk_version}} + +[buildenv] +# Cross compile toolchain evn vars are required to build +# libffi, libgettext, libiconv, libxml2 and other autotools packages for Android +# https://github.com/conan-io/conan/issues/16493 +AR={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar +AS={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as +RANLIB={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib +{% set cc = { + "armv7": "armv7a-linux-androideabi" + api_level + "-clang", + "armv8": "aarch64-linux-android" + api_level + "-clang", + "x86": "i686-linux-android" + api_level + "-clang", + "x86_64": "x86_64-linux-android" + api_level + "-clang", +}[arch] %} +CC={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}} +CXX={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/{{cc}}++ +LD={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/ld +STRIP={{android_home}}/ndk/{{ndk_version}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip diff --git a/.github/config/ubuntu-22.04-clang-15/conan/profiles/default b/.github/config/ubuntu-22.04/conan/profiles/default similarity index 79% rename from .github/config/ubuntu-22.04-clang-15/conan/profiles/default rename to .github/config/ubuntu-22.04/conan/profiles/default index f43d6de..60b8cfe 100644 --- a/.github/config/ubuntu-22.04-clang-15/conan/profiles/default +++ b/.github/config/ubuntu-22.04/conan/profiles/default @@ -1,11 +1,11 @@ [settings] +os=Linux arch=x86_64 -build_type=Release +build_type=RelWithDebInfo compiler=clang compiler.version=15 -compiler.cppstd=17 +compiler.cppstd=20 compiler.libcxx=libstdc++11 -os=Linux [conf] tools.build:compiler_executables={'c': 'clang-15', 'cpp': 'clang++-15'} diff --git a/.github/config/ubuntu-22.04/conan/profiles/ubuntu b/.github/config/ubuntu-22.04/conan/profiles/ubuntu new file mode 120000 index 0000000..331d858 --- /dev/null +++ b/.github/config/ubuntu-22.04/conan/profiles/ubuntu @@ -0,0 +1 @@ +default \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c4a3fba..e85eac1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,9 +3,6 @@ name: build_test on: workflow_dispatch: push: - branches: - - main - pull_request: concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -34,13 +31,14 @@ jobs: - name: List all packages run: python scripts/list_package_versions.py - + - name: List all packages in GitHub Actions format id: list-packages run: python scripts/list_package_versions.py --github | tee $GITHUB_OUTPUT build: - runs-on: ${{ matrix.config.os }} + runs-on: ${{ matrix.config.build_machine }} + name: ${{ matrix.package.package_reference }} - ${{ matrix.config.host_profile }} needs: - find-all-packages strategy: @@ -48,7 +46,34 @@ jobs: matrix: package: ${{ fromJson(needs.find-all-packages.outputs.packages) }} config: - - { os: ubuntu-22.04, compiler: clang-15 } + - { build_machine: ubuntu-22.04, host_profile: ubuntu } + - { build_machine: ubuntu-22.04, host_profile: android-23-armv8, ndk_version: 26.3.11579264 } + - { build_machine: ubuntu-22.04, host_profile: android-23-armv7, ndk_version: 26.3.11579264 } + - { build_machine: ubuntu-22.04, host_profile: android-23-x86, ndk_version: 26.3.11579264 } + - { build_machine: ubuntu-22.04, host_profile: android-23-x86_64, ndk_version: 26.3.11579264 } + - { build_machine: ubuntu-22.04, host_profile: android-21-armv8, ndk_version: 26.3.11579264 } + - { build_machine: ubuntu-22.04, host_profile: android-21-armv7, ndk_version: 26.3.11579264 } + - { build_machine: ubuntu-22.04, host_profile: android-21-x86, ndk_version: 26.3.11579264 } + - { build_machine: ubuntu-22.04, host_profile: android-21-x86_64, ndk_version: 26.3.11579264 } + # Known not working build configurations + # Would be cool to actually solve odrcore/1.0.0 for Android + exclude: + - package: { "package_reference": "odrcore/1.0.0", "package": "odrcore", "version": "1.0.0", "conanfile": "recipes/odrcore/all/conanfile.py" } + config: { build_machine: ubuntu-22.04, host_profile: android-23-armv8, ndk_version: 26.3.11579264 } + - package: { "package_reference": "odrcore/1.0.0", "package": "odrcore", "version": "1.0.0", "conanfile": "recipes/odrcore/all/conanfile.py" } + config: { build_machine: ubuntu-22.04, host_profile: android-23-armv7, ndk_version: 26.3.11579264 } + - package: { "package_reference": "odrcore/1.0.0", "package": "odrcore", "version": "1.0.0", "conanfile": "recipes/odrcore/all/conanfile.py" } + config: { build_machine: ubuntu-22.04, host_profile: android-23-x86, ndk_version: 26.3.11579264 } + - package: { "package_reference": "odrcore/1.0.0", "package": "odrcore", "version": "1.0.0", "conanfile": "recipes/odrcore/all/conanfile.py" } + config: { build_machine: ubuntu-22.04, host_profile: android-23-x86_64, ndk_version: 26.3.11579264 } + - package: { "package_reference": "odrcore/1.0.0", "package": "odrcore", "version": "1.0.0", "conanfile": "recipes/odrcore/all/conanfile.py" } + config: { build_machine: ubuntu-22.04, host_profile: android-21-armv8, ndk_version: 26.3.11579264 } + - package: { "package_reference": "odrcore/1.0.0", "package": "odrcore", "version": "1.0.0", "conanfile": "recipes/odrcore/all/conanfile.py" } + config: { build_machine: ubuntu-22.04, host_profile: android-21-armv7, ndk_version: 26.3.11579264 } + - package: { "package_reference": "odrcore/1.0.0", "package": "odrcore", "version": "1.0.0", "conanfile": "recipes/odrcore/all/conanfile.py" } + config: { build_machine: ubuntu-22.04, host_profile: android-21-x86, ndk_version: 26.3.11579264 } + - package: { "package_reference": "odrcore/1.0.0", "package": "odrcore", "version": "1.0.0", "conanfile": "recipes/odrcore/all/conanfile.py" } + config: { build_machine: ubuntu-22.04, host_profile: android-21-x86_64, ndk_version: 26.3.11579264 } steps: - name: checkout uses: actions/checkout@v4 @@ -71,12 +96,18 @@ jobs: - name: install python dependencies run: pip install --upgrade pip conan + - name: install NDK + if: startsWith(matrix.config.host_profile, 'android') + run: echo "y" | sudo ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "ndk;${{ matrix.config.ndk_version }}" + - name: conan remote run: conan remote add --index 0 odr https://artifactory.opendocument.app/artifactory/api/conan/conan - - name: conan login - run: conan remote login odr admin --password ${{ secrets.ARTIFACTORY }} - name: conan config - run: conan config install .github/config/${{ matrix.config.os }}-${{ matrix.config.compiler }}/conan + run: conan config install .github/config/${{ matrix.config.build_machine }}/conan + + # Export all recipes to local conan cache, to make sure all changes in all dependencies are picked up + - name: Conan export all packages + run: python scripts/conan_export_all_packages.py - name: cache uses: actions/cache@v4 @@ -84,26 +115,32 @@ jobs: path: | ~/.ccache /Users/runner/Library/Caches/ccache - key: ${{ matrix.config.os }}-${{ matrix.config.compiler }}-${{ env.CCACHE_KEY_SUFFIX }} + key: ${{ matrix.config.build_machine }}-${{ matrix.config.host_profile }}-${{ env.CCACHE_KEY_SUFFIX }} restore-keys: | - ${{ matrix.config.os }}-${{ matrix.config.compiler }}- + ${{ matrix.config.build_machine }}-${{ matrix.config.host_profile }}- - name: conan install - run: conan install ${{ matrix.package.conanfile }} --version ${{ matrix.package.version }} --build missing + run: conan install ${{ matrix.package.conanfile }} --version ${{ matrix.package.version }} --build missing --profile:host ${{ matrix.config.host_profile }} --profile:build ubuntu - name: conan source run: conan source ${{ matrix.package.conanfile }} --version ${{ matrix.package.version }} - name: conan build - run: conan build ${{ matrix.package.conanfile }} --version ${{ matrix.package.version }} + run: conan build ${{ matrix.package.conanfile }} --version ${{ matrix.package.version }} --profile:host ${{ matrix.config.host_profile }} --profile:build ubuntu - name: conan export run: conan export ${{ matrix.package.conanfile }} --version ${{ matrix.package.version }} - name: conan export-pkg - run: conan export-pkg ${{ matrix.package.conanfile }} --version ${{ matrix.package.version }} + run: conan export-pkg ${{ matrix.package.conanfile }} --version ${{ matrix.package.version }} --profile:host ${{ matrix.config.host_profile }} --profile:build ubuntu - name: conan test run: | test_conanfile=$(dirname ${{ matrix.package.conanfile }})/test_package/conanfile.py - conan test $test_conanfile ${{ matrix.package.package_version }} --build missing + conan test $test_conanfile ${{ matrix.package.package_reference }} --build missing --profile:host ${{ matrix.config.host_profile }} --profile:build ubuntu + + - name: conan login + if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' + run: conan remote login odr admin --password ${{ secrets.ARTIFACTORY }} - name: conan upload if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' run: conan upload "*" --check --confirm --remote odr + + - run: ccache --show-stats diff --git a/scripts/conan_export_all_packages.py b/scripts/conan_export_all_packages.py new file mode 100644 index 0000000..2e192fa --- /dev/null +++ b/scripts/conan_export_all_packages.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 +import subprocess +from pathlib import Path + +from list_package_versions import get_package_infos + + +def main(): + script_path = Path(__file__).resolve().parent + root_path = script_path.parent + recipes_path = root_path / "recipes" + package_infos = get_package_infos() + for package in package_infos: + for version in package_infos[package]: + conanfile = recipes_path / package / version["folder"] / "conanfile.py" + subprocess.run(["conan", "export", conanfile, "--version", version["version"]]) + + +if __name__ == "__main__": + main() diff --git a/scripts/list_package_versions.py b/scripts/list_package_versions.py index b12bf86..5f7243d 100644 --- a/scripts/list_package_versions.py +++ b/scripts/list_package_versions.py @@ -6,13 +6,7 @@ import json -def main(): - parser = argparse.ArgumentParser(description="List package versions") - parser.add_argument( - "--github", help="Format output for GitHub Actions", action="store_true" - ) - args = parser.parse_args() - +def get_package_infos(): script_path = Path(__file__).resolve().parent root_path = script_path.parent recipes_path = root_path / "recipes" @@ -38,10 +32,20 @@ def main(): package_infos[recipe_path.name] = infos + return package_infos + + +def main(): + package_infos = get_package_infos() + parser = argparse.ArgumentParser(description="List package versions") + parser.add_argument( + "--github", help="Format output for GitHub Actions", action="store_true" + ) + args = parser.parse_args() if args.github: result = [ { - "package_version": f"{package}/{infos["version"]}", + "package_reference": f"{package}/{infos["version"]}", "package": package, "version": infos["version"], "conanfile": str( @@ -49,7 +53,7 @@ def main(): ), } for package in sorted(package_infos.keys()) - for infos in sorted(package_infos[package], key=lambda x: x["version"]) + for infos in sorted(package_infos[package], key=lambda x: x["version"], reverse=True) ] print("packages=" + json.dumps(result))