diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d37f549..d848791 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,6 +71,10 @@ jobs: - run: bundle exec rake test:examples fedora: # see https://github.com/flavorjones/mini_portile/issues/118 + strategy: + fail-fast: false + matrix: + task: ["test:unit", "test:examples"] runs-on: ubuntu-latest container: image: fedora:35 @@ -84,5 +88,30 @@ jobs: path: examples/ports/archives key: examples-${{ hashFiles('examples/Rakefile') }} - run: bundle install - - run: bundle exec rake test:unit - - run: bundle exec rake test:examples + - run: bundle exec rake ${{ matrix.task }} + + freebsd: + strategy: + fail-fast: false + matrix: + task: ["test:unit", "test:examples"] + runs-on: ubuntu-latest + env: + MAKE: gmake + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: examples/ports/archives + key: examples-${{ hashFiles('examples/Rakefile') }} + - uses: vmactions/freebsd-vm@v1 + with: + envs: MAKE + usesh: true + copyback: false + prepare: pkg install -y ruby devel/ruby-gems pkgconf git cmake devel/gmake textproc/libyaml security/gnupg + run: | + git config --global --add safe.directory /home/runner/work/mini_portile/mini_portile + gem install bundler + bundle install + bundle exec rake ${{ matrix.task }} diff --git a/lib/mini_portile2/mini_portile_cmake.rb b/lib/mini_portile2/mini_portile_cmake.rb index 41e1ad1..9fcfb4c 100644 --- a/lib/mini_portile2/mini_portile_cmake.rb +++ b/lib/mini_portile2/mini_portile_cmake.rb @@ -94,6 +94,9 @@ def find_c_and_cxx_compilers(host) if MiniPortile.darwin? c_compiler ||= 'clang' cxx_compiler ||='clang++' + elsif MiniPortile.freebsd? + c_compiler ||= 'cc' + cxx_compiler ||= 'c++' else c_compiler ||= 'gcc' cxx_compiler ||= 'g++' diff --git a/test/test_cmake.rb b/test/test_cmake.rb index 7a3483c..6d5ffa0 100644 --- a/test/test_cmake.rb +++ b/test/test_cmake.rb @@ -107,6 +107,29 @@ def test_configure_defaults_with_macos end end + def test_configure_defaults_with_freebsd + recipe = init_recipe + recipe.host = 'some-host' + + with_env({ "CC" => nil, "CXX" => nil }) do + with_stubbed_target(os: 'freebsd14') do + with_compilers(recipe, c_compiler: 'cc', cxx_compiler: 'c++') do + Open3.stub(:capture2, cmake_help_mock('Unix')) do + assert_equal( + [ + "-DCMAKE_SYSTEM_NAME=FreeBSD", + "-DCMAKE_SYSTEM_PROCESSOR=x86_64", + "-DCMAKE_C_COMPILER=cc", + "-DCMAKE_CXX_COMPILER=c++", + "-DCMAKE_BUILD_TYPE=Release" + ], + recipe.configure_defaults) + end + end + end + end + end + def test_configure_defaults_with_manual_system_name recipe = init_recipe recipe.system_name = 'Custom'