Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fails to compile without SDKROOT env var set #10

Open
segiddins opened this issue Aug 2, 2023 · 1 comment
Open

Fails to compile without SDKROOT env var set #10

segiddins opened this issue Aug 2, 2023 · 1 comment

Comments

@segiddins
Copy link

segiddins commented Aug 2, 2023

In a fresh clone of this repo on my machine:

RubyGems Environment:
  - RUBYGEMS VERSION: 3.4.17
  - RUBY VERSION: 3.2.2 (2023-03-30 patchlevel 53) [arm64-darwin22]
  - INSTALLATION DIRECTORY: /Users/segiddins/.gem/ruby/3.2.2
  - USER INSTALLATION DIRECTORY: /Users/segiddins/.gem/ruby/3.2.0
  - RUBY EXECUTABLE: /Users/segiddins/.rubies/ruby-3.2.2/bin/ruby
  - GIT EXECUTABLE: /opt/homebrew/bin/git
  - EXECUTABLE DIRECTORY: /Users/segiddins/.gem/ruby/3.2.2/bin
  - SPEC CACHE DIRECTORY: /Users/segiddins/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/segiddins/.rubies/ruby-3.2.2/etc
  - RUBYGEMS PLATFORMS:
     - ruby
     - arm64-darwin-22
`rake compile` output:
cd tmp/arm64-darwin22/oxi-test/3.2.2
/Users/segiddins/.rubies/ruby-3.2.2/bin/ruby -I. ../../../../ext/extconf.rb
checking for clang... yes
checking for clang++... yes
checking for ar... yes
cd -
cd tmp/arm64-darwin22/oxi-test/3.2.2
/usr/bin/make
generating /Users/segiddins/Development/github.com/oxidize-rb/oxi-test/target/release/liboxi_test.dylib (release)
cargo rustc  --manifest-path /Users/segiddins/Development/github.com/oxidize-rb/oxi-test/ext/Cargo.toml --target-dir /Users/segiddins/Development/github.com/oxidize-rb/oxi-test/target --lib --profile release -- -C linker=clang -L native=/Users/segiddins/.rubies/ruby-3.2.2/lib -L native=/opt/homebrew/opt/[email protected]/lib -L native=/opt/homebrew/opt/readline/lib -L native=/opt/homebrew/opt/libyaml/lib -L native=/opt/homebrew/opt/gdbm/lib -C link-arg=-Wl,-multiply_defined,suppress -l pthread -C link-arg=-Wl,-undefined,dynamic_lookup
   Compiling rb-sys v0.9.71
error: failed to run custom build command for `rb-sys v0.9.71`

Caused by:
  process didn't exit successfully: `/Users/segiddins/Development/github.com/oxidize-rb/oxi-test/target/release/build/rb-sys-f2b7b7be3bee2786/build-script-main` (exit status: 101)
  --- stdout
  cargo:rerun-if-env-changed=RUBY
  cargo:rerun-if-env-changed=RBCONFIG_ruby_version
  cargo:rerun-if-env-changed=RBCONFIG_platform
  cargo:rerun-if-env-changed=RUBY_ROOT
  cargo:rerun-if-env-changed=RUBY_VERSION
  cargo:rerun-if-env-changed=RUBY
  cargo:rerun-if-changed=build/features.rs
  cargo:rerun-if-changed=build/version.rs
  cargo:rerun-if-changed=build/ruby_macros.rs
  cargo:rerun-if-changed=build/main.rs
  cargo:rerun-if-env-changed=RUBY_STATIC
  cargo:rerun-if-env-changed=RBCONFIG_ENABLE_SHARED
  cargo:rerun-if-env-changed=RBCONFIG_rubyhdrdir
  cargo:rerun-if-env-changed=RBCONFIG_rubyarchhdrdir
  cargo:rerun-if-env-changed=RBCONFIG_CPPFLAGS

  --- stderr
  Using bindgen with clang args: ["-I/Users/segiddins/.rubies/ruby-3.2.2/include/ruby-3.2.0", "-I/Users/segiddins/.rubies/ruby-3.2.2/include/ruby-3.2.0/arm64-darwin22", "-fms-extensions", "-fdeclspec", "-O3", "-fno-fast-math", "-ggdb3", "-Wall", "-Wextra", "-Wextra-tokens", "-Wdeprecated-declarations", "-Wdivision-by-zero", "-Wdiv-by-zero", "-Wimplicit-function-declaration", "-Wimplicit-int", "-Wmisleading-indentation", "-Wpointer-arith", "-Wshorten-64-to-32", "-Wwrite-strings", "-Wold-style-definition", "-Wmissing-noreturn", "-Wno-cast-function-type", "-Wno-constant-logical-operand", "-Wno-long-long", "-Wno-missing-field-initializers", "-Wno-overlength-strings", "-Wno-parentheses-equality", "-Wno-self-assign", "-Wno-tautological-compare", "-Wno-unused-parameter", "-Wno-unused-value", "-Wunused-variable", "-Wundef", "-I/opt/homebrew/opt/[email protected]/include", "-I/opt/homebrew/opt/readline/include", "-I/opt/homebrew/opt/libyaml/include", "-I/opt/homebrew/opt/gdbm/include", "-D_XOPEN_SOURCE", "-D_DARWIN_C_SOURCE", "-D_DARWIN_UNLIMITED_SELECT", "-D_REENTRANT"]
  /Users/segiddins/.rubies/ruby-3.2.2/include/ruby-3.2.0/ruby/defines.h:16:10: fatal error: 'stdio.h' file not found
  thread 'main' panicked at 'generate bindings: ClangDiagnostic("/Users/segiddins/.rubies/ruby-3.2.2/include/ruby-3.2.0/ruby/defines.h:16:10: fatal error: 'stdio.h' file not found\n")', /Users/segiddins/.cargo/registry/src/github.com-1ecc6299db9ec823/rb-sys-0.9.71/build/main.rs:53:6
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
make: *** [/Users/segiddins/Development/github.com/oxidize-rb/oxi-test/target/release/liboxi_test.dylib] Error 101
rake aborted!
Command failed with status (2): [/usr/bin/make...]
/Users/segiddins/.gem/ruby/3.2.2/gems/rake-compiler-1.2.4/lib/rake/extensiontask.rb:195:in `block (2 levels) in define_compile_tasks'
/Users/segiddins/.gem/ruby/3.2.2/gems/rake-compiler-1.2.4/lib/rake/extensiontask.rb:194:in `block in define_compile_tasks'
/Users/segiddins/.gem/ruby/3.2.2/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
Tasks: TOP => compile => compile:arm64-darwin22 => compile:oxi-test:arm64-darwin22 => copy:oxi-test:arm64-darwin22:3.2.2 => tmp/arm64-darwin22/oxi-test/3.2.2/oxi_test.bundle
(See full trace by running task with --trace)
`SDKROOT=$(xcrun --sdk macosx --show-sdk-path) rake compile` output
cd tmp/arm64-darwin22/oxi-test/3.2.2
/Users/segiddins/.rubies/ruby-3.2.2/bin/ruby -I. ../../../../ext/extconf.rb
checking for clang... yes
checking for clang++... yes
checking for ar... yes
cd -
cd tmp/arm64-darwin22/oxi-test/3.2.2
/usr/bin/make
generating /Users/segiddins/Development/github.com/oxidize-rb/oxi-test/target/release/liboxi_test.dylib (release)
cargo rustc  --manifest-path /Users/segiddins/Development/github.com/oxidize-rb/oxi-test/ext/Cargo.toml --target-dir /Users/segiddins/Development/github.com/oxidize-rb/oxi-test/target --lib --profile release -- -C linker=clang -L native=/Users/segiddins/.rubies/ruby-3.2.2/lib -L native=/opt/homebrew/opt/[email protected]/lib -L native=/opt/homebrew/opt/readline/lib -L native=/opt/homebrew/opt/libyaml/lib -L native=/opt/homebrew/opt/gdbm/lib -C link-arg=-Wl,-multiply_defined,suppress -l pthread -C link-arg=-Wl,-undefined,dynamic_lookup
   Compiling rb-sys v0.9.71
   Compiling oxi-test v0.1.0 (/Users/segiddins/Development/github.com/oxidize-rb/oxi-test/ext)
    Finished release [optimized] target(s) in 5.42s
cd -
mkdir -p tmp/arm64-darwin22/stage/lib/oxi/test
cp Cargo.lock tmp/arm64-darwin22/stage/Cargo.lock
cp Cargo.toml tmp/arm64-darwin22/stage/Cargo.toml
cp LICENSE.txt tmp/arm64-darwin22/stage/LICENSE.txt
cp README.md tmp/arm64-darwin22/stage/README.md
mkdir -p tmp/arm64-darwin22/stage/ext
cp ext/Cargo.toml tmp/arm64-darwin22/stage/ext/Cargo.toml
cp ext/build.rs tmp/arm64-darwin22/stage/ext/build.rs
cp ext/extconf.rb tmp/arm64-darwin22/stage/ext/extconf.rb
mkdir -p tmp/arm64-darwin22/stage/ext/src
cp ext/src/lib.rs tmp/arm64-darwin22/stage/ext/src/lib.rs
cp lib/oxi/test.rb tmp/arm64-darwin22/stage/lib/oxi/test.rb
cp lib/oxi/test/version.rb tmp/arm64-darwin22/stage/lib/oxi/test/version.rb
/usr/bin/make install sitearchdir=../../../../lib/oxi/test sitelibdir=../../../../lib/oxi/test target_prefix=
generating /Users/segiddins/Development/github.com/oxidize-rb/oxi-test/target/release/liboxi_test.dylib (release)
cargo rustc  --manifest-path /Users/segiddins/Development/github.com/oxidize-rb/oxi-test/ext/Cargo.toml --target-dir /Users/segiddins/Development/github.com/oxidize-rb/oxi-test/target --lib --profile release -- -C linker=clang -L native=/Users/segiddins/.rubies/ruby-3.2.2/lib -L native=/opt/homebrew/opt/[email protected]/lib -L native=/opt/homebrew/opt/readline/lib -L native=/opt/homebrew/opt/libyaml/lib -L native=/opt/homebrew/opt/gdbm/lib -C link-arg=-Wl,-multiply_defined,suppress -l pthread -C link-arg=-Wl,-undefined,dynamic_lookup
    Finished release [optimized] target(s) in 0.14s
installing oxi_test.bundle to ../../../../lib/oxi/test
/opt/homebrew/bin/ginstall -c -m 0755 oxi_test.bundle ../../../../lib/oxi/test
cp tmp/arm64-darwin22/oxi-test/3.2.2/oxi_test.bundle tmp/arm64-darwin22/stage/lib/oxi/test/oxi_test.bundle

Note that compiling without SDKROOT will continue to work after it has worked once, until rake clean is run, at which time rake compile will revert to failing to find system headers.

This looks to be an issue of -isysroot somehow not being included in the clang invocation, despite it being a default added by the clang frontend for /usr/bin/clang:

Random `clang` invocation:
❯ clang code.c --output libCode.dylib -dynamiclib -v
Apple clang version 14.0.3 (clang-1403.0.22.14.1)
Target: arm64-apple-darwin22.5.0
Thread model: posix
InstalledDir: /Applications/Xcode-14.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
 "/Applications/Xcode-14.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple arm64-apple-macosx13.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name code.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=13.3 -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +crc -target-feature +lse -target-feature +rdm -target-feature +crypto -target-feature +dotprod -target-feature +fp-armv8 -target-feature +neon -target-feature +fp16fml -target-feature +ras -target-feature +rcpc -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-feature +sm4 -target-feature +sha3 -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=lldb -target-linker-version 857.1 -v -fcoverage-compilation-dir=/var/folders/p3/950_j_ps7xq47vrzdj1qvg940000gn/T/t -resource-dir /Applications/Xcode-14.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3 -isysroot /Applications/Xcode-14.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -I/usr/local/include -internal-isystem /Applications/Xcode-14.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/local/include -internal-isystem /Applications/Xcode-14.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include -internal-externc-isystem /Applications/Xcode-14.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -internal-externc-isystem /Applications/Xcode-14.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdebug-compilation-dir=/var/folders/p3/950_j_ps7xq47vrzdj1qvg940000gn/T/t -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -no-opaque-pointers -fmax-type-align=16 -fcommon -fcolor-diagnostics -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -mllvm -disable-aligned-alloc-awareness=1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /var/folders/p3/950_j_ps7xq47vrzdj1qvg940000gn/T/code-6a0225.o -x c code.c
clang -cc1 version 14.0.3 (clang-1403.0.22.14.1) default target arm64-apple-darwin22.5.0
ignoring nonexistent directory "/Applications/Xcode-14.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode-14.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /Applications/Xcode-14.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include
 /Applications/Xcode-14.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
 /Applications/Xcode-14.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode-14.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)
End of search list.
 "/Applications/Xcode-14.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode-14.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -no_deduplicate -dynamic -dylib -arch arm64 -platform_version macos 13.0.0 13.3 -syslibroot /Applications/Xcode-14.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -o libCode.dylib -L/usr/local/lib /var/folders/p3/950_j_ps7xq47vrzdj1qvg940000gn/T/code-6a0225.o -lSystem /Applications/Xcode-14.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a
@segiddins
Copy link
Author

This causes the cargo builder tests in rubygems to fail consistently on contributors machines, as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant