Commit graph

91 commits

Author SHA1 Message Date
Yusuke Endoh
9cfc1362aa Extend the timeout of test_try_ldflag_invalid_opt and test_try_cppflag_invalid_opt 2024-06-24 18:14:34 +09:00
Yuta Saito
8b55aaa85c [Feature #20345] Add --target-rbconfig option to mkmf
Introduce a new mkmf option `--target-rbconfig` to specify the RbConfig
file for the deployment target platform. This option is useful for
cross-compiling Ruby extensions without faking the global top-level
`RbConfig` constant.
2024-04-02 14:24:54 +09:00
Jun Aruga
57459b83a9
mkmf: Add the extra option --with-verbose to enable verbose mode. (#7863)
This commit is to add an extra option to enable verbose mode (V=1) in the
generated `Makefile` at runtime of the Ruby to print compiler command lines by
the commands below when building native extensions. It's possible to enable the
verbose mode by setting the environment variable `MAKEFLAGS="V=1"`[1]
implemented in GNU make. However, I wanted to make a consistent user-interface
not depending on the specific make's implementation.

```
$ ruby /path/to/extconf.rb -- --with-verbose
```

You can also add the extra option via rake-compiler gem.

```
$ rake compiler -- --with-verbose
```

If the extra option is not given, the value of the
`RbConfig::CONFIG["MKMF_VERBOSE"]` enabled by the configure option below is
used.

```
$ ./configure --enable-mkmf-verbose
```

For the unit tests, updated the following files.

* The `test/mkmf/test_configuration.rb` was created to test the cases with the
  `configuration` method and this implementation.
* Updated the `TestMkmf#assert_separately` to set the extra
  arguments in `test/mkmf/base.rb`. Updated tests using the `assert_separately`.
* Added tests for `MakeMakefile#with_config` in the `test/mkmf/test_config.rb`.

[1] https://www.gnu.org/software/make/manual/html_node/Variables_002fRecursion.html

Fixes [Bug #19695]

Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
2023-05-29 10:09:32 +02:00
Nobuyoshi Nakada
3a7367ccc3 mkconfig: Map includedir only for system ruby
Only when installing to the system path on macOS, prepend '$(SDKROOT)'
and remap `includedir`.
Fix https://github.com/rbenv/ruby-build/discussions/2123
2023-01-31 06:33:16 +09:00
Nobuyoshi Nakada
de9c612d63
Also the tests should use the configured pkg-config 2022-10-02 15:19:14 +09:00
Takashi Kokubun
af9fa16c96
Make sure super is called and fix teardown 2022-08-25 11:31:16 -07:00
Takashi Kokubun
52560a9263
Skip flaky mkmf tests on AppVeyor
It seems like TestMkmfTryConstant started to randomly fail, maybe
related to 96562a517d or 073f3b7e0a.

Some of them seem to have failed even after retries, so it feels like
there's a bug in the implementation, which leaves an unrecoverable situation.
44559958/job/7uub5bmkvy4pwwl8
44579924/job/n81xmb2mqs6no7dm
44558471/job/s4qwymmlxmfjjd35

Until we figure out what it is, I'd like to stabilize the CI by not
running it.
2022-08-25 11:11:16 -07:00
Jeremy Evans
ab3cb29bd9 Avoid defining the same test class in multiple files
Should fix issues with parallel testing sometimes not running all
tests.

This should be viewed skipping whitespace changes.

Fixes [Bug #18731]
2022-04-22 15:00:16 -07:00
Nobuyoshi Nakada
acbc2bdd30
Update the test for [Feature #18615] 2022-03-17 15:07:18 +09:00
Mike Dalessio
b90e56e624 mkmf: pkg_config accepts multiple options 2022-01-29 15:22:52 +09:00
Mike Dalessio
24c7e75ded test: backfill coverage for MakeMakefile.pkg_config 2022-01-29 15:22:52 +09:00
Nobuyoshi Nakada
ea64e742f5
Revert "mkmf.rb: try linking at try_var" [Bug #18235]
This reverts commit 524513be39,
which can return false positive by existing but unusable symbol,
including functions.
2021-10-03 18:23:39 +09:00
Nobuyoshi Nakada
524513be39
mkmf.rb: try linking at try_var
To check for variables accessible but not declared.
2021-07-08 18:18:35 +09:00
Nobuyoshi Nakada
2d3572a154
Separate toolchain dependent test 2021-07-03 22:11:24 +09:00
Nobuyoshi Nakada
5cdf99f64e
mkmf: fixed install directories of header files in extension libraries [Bug #17761]
When installing an extension library which provides a header, that
header should be installed under site_ruby (or vendor_ruby when
"--vendor" option was given to extconf.rb).  However, currently
this file is about to be installed in the core include directory.
2021-03-30 23:28:49 +09:00
Nobuyoshi Nakada
7baedeffe9
Added tests for MakeMakefile#test_egrep_cpp 2021-02-05 13:59:27 +09:00
Nobuyoshi Nakada
c2a6295ec0
Make the mkmf methods private in the global [Bug #16896] 2020-07-13 18:44:22 +09:00
Jeremy Evans
e0b4599bba Fix keyword argument separation warnings in test 2019-08-30 12:39:31 -07:00
Nobuyoshi Nakada
1f0762ad21
Suppress messages from mkmf 2019-06-20 20:51:33 +09:00
k0kubun
e1930666c7 test/mkmf/test_flags.rb: try to suppress random CI failure
on AIX ppc
20181226T113305Z.fail.html.gz

test/lib/test/unit/assertions.rb: ditto, for TestIO#test_copy_stream_no_busy_wait

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-27 16:24:46 +00:00
nobu
2b894084ef test/mkmf/base.rb: use CC_WRAPPER same as the toplevel
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-17 01:42:30 +00:00
shyouhei
a5c76f8cfc a C source code must end with EOL
cf: ISO 9899 section 5.1.1.2


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-17 10:04:22 +00:00
nobu
30d23ec903 multiple arguments to write
Make write methods of IO-like objects accept multiple arguments,
as well as IO#write.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-23 14:05:07 +00:00
nobu
20d81b4287 test_framework.rb: for case-sensitive filesystem
* test/mkmf/test_framework.rb (test_single_framework): fix header
  file name for case-sensitive filesystem.  it may not be same as
  the framework name, but should be the actual file name.
  [ruby-dev:50093] [Bug #13489]

* test/mkmf/test_framework.rb (test_multi_frameworks): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-21 06:12:27 +00:00
nobu
22f1db4b8e mkmf: Unquote directory strings
* lib/mkmf.rb (find_executable0): On Windows, it is actually valid
  to surround individual PATH directory entries with double
  quotes. Remove these before joining the path as otherwise the
  literal quotes would become part of the path, resulting in the
  executable not to be found.  [Fix GH-1305]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-24 16:10:43 +00:00
nobu
e7e0eeb084 test_find_executable.rb: each_exts
* test/mkmf/test_find_executable.rb (each_exts): extract common
  setup.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-24 16:04:51 +00:00
mrkn
88aa6abf9c * test/mkmf/test_have_func.rb (test_have_func):
Add assertion to examine the existence of HAVE_RUBY_INIT.

* test/mkmf/test_have_func.rb (test_not_have_func):
  Add assertion to examine the absence of HAVE_RUBY_INIT.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53365 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-29 01:37:20 +00:00
naruse
3e92b635fb Add frozen_string_literal: false for all files
When you change this to true, you may need to add more tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 05:07:31 +00:00
nobu
7995eb43cb mkmf/base.rb: capture output
* test/mkmf/base.rb (TestMkmf::Base::Capture#write): capture
  output inside mkmf method.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-04 01:31:15 +00:00
nobu
d57e043ab5 test_framework.rb: use Ruby framework
* test/mkmf/test_framework.rb (test_single_framework): use Ruby
  framework, as CoreFoundation framework uses Apple extensions
  unsupported by standard GCC other than Apple-patched clang.

* test/mkmf/test_framework.rb (test_multi_frameworks): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51783 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-07 08:51:01 +00:00
nobu
f6ed283fd5 mkmf/base.rb: clean up tmpdir
* test/mkmf/base.rb (TestMkmf#assert_separately): call teardown to
  clean up temporary directory.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-03-03 17:01:13 +00:00
nobu
bca963220a mkmf/base.rb: fix constant scope
* test/mkmf/base.rb (TestMkmf::Base): fix constant scope for
  r49482.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-05 04:50:18 +00:00
nobu
a91de8317c mkmf.rb: err by non existent file
* lib/mkmf.rb (try_cppflags, try_cflags, try_ldflags): err by non
  existent source file.  [ruby-core:67962] [Bug #10821]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-04 01:36:54 +00:00
nobu
af5b7053f1 mkmf.rb: avoid interference
* lib/mkmf.rb (try_cppflags, try_cflags, try_ldflags): get rid of
  interference by modifying global variables in have_devel? method.
  [ruby-core:67962] [Bug #10821]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-03 08:15:47 +00:00
akr
fb2008a73a * test/lib/envutil.rb: Moved from test/ruby/.
* test/lib/find_executable.rb: Ditto.

* test/lib/memory_status.rb: Ditto.

* test/lib/test/unit.rb: require envutil.

* test/: Don't require envutil in test files.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-13 16:05:37 +00:00
nobu
8a22a0530e mkmf.rb: try without -ObjC option
* lib/mkmf.rb (have_framework): try without -ObjC option first as
  MacPorts GCCs do not support it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47010 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-30 16:17:55 +00:00
usa
5543a55b52 * test: get rid of warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-11 04:22:34 +00:00
nobu
f09b772de6 test_config.rb: fix library path
* test/mkmf/test_config.rb (test_dir_config): fix expected library
  path.  [ruby-core:57535] [Bug #8972]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-10-01 11:36:47 +00:00
nobu
fcb58bdb38 mkmf.rb: expand all macros
* lib/mkmf.rb (xsystem): expand environment variable in all macros not
  expanded with RbConfig.  [Bug #8702]
* test/mkmf/test_framework.rb (create_framework): replace all $@ not
  only once.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-29 05:52:53 +00:00
nobu
5d57230959 mkmf.rb: header in framework
* lib/mkmf.rb (have_framework): allow header file to check.
  [ruby-core:55745] [Bug #8593]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-04 15:25:46 +00:00
nobu
0eed101a54 test/mkmf: $extmk in parallel test
* test/mkmf/base.rb, test/mkmf/test_config.rb: needs to set $extmk
  since worker processes in parallel test mode.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41771 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-04 07:03:07 +00:00
nobu
a536143507 test_have_library.rb: toolchains result
* test/mkmf/test_have_library.rb (create_library): check if toolchains
  work.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-04 07:03:05 +00:00
nobu
246c66f702 mkmf.rb: CONFTEST
* lib/mkmf.rb (CONFTEST): constify hardcoded filename.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41769 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-04 07:03:01 +00:00
akr
8f671120f1 * test/csv/test_features.rb, test/logger/test_logger.rb
test/mkmf/test_have_macro.rb, test/net/http/test_http.rb,
  test/openssl/test_config.rb, test/psych/test_encoding.rb,
  test/psych/test_exception.rb, test/psych/test_psych.rb,
  test/psych/test_tainted.rb, test/readline/test_readline.rb,
  test/rexml/test_contrib.rb, test/ruby/test_autoload.rb,
  test/ruby/test_beginendblock.rb, test/ruby/test_exception.rb,
  test/ruby/test_file.rb, test/ruby/test_io.rb,
  test/ruby/test_marshal.rb, test/ruby/test_process.rb,
  test/ruby/test_require.rb, test/ruby/test_rubyoptions.rb,
  test/syslog/test_syslog_logger.rb, test/webrick/test_httpauth.rb,
  test/zlib/test_zlib.rb: Use Tempfile.create.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40400 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-20 23:03:52 +00:00
akr
c09287bdaa * test/mkmf/test_have_macro.rb: remove temporally files in the tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-23 17:16:21 +00:00
nobu
79ea4d627f * test/mkmf/test_config.rb (TestMkmf): fix superclass mismatch.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-11 12:12:15 +00:00
usa
2f20defa7a * test/mkmf/base.rb: class name conflict.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-11 10:23:12 +00:00
nobu
76d8cc33f9 mkmf.rb: defer use of instance variable
* lib/mkmf.rb (MakeMakefile#dir_config, MakeMakefile#_libdir_basename):
  defer use of instance variable until needed.  [Bug #8074]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39717 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-11 02:53:47 +00:00
nobu
3d88196632 assertions.rb: allow proc
* lib/test/unit/assertions.rb (Test::Unit::Assertions#message):
  convert msg by call if it is a proc, as well as assert.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39638 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-08 07:02:37 +00:00
nobu
13b11810e2 mkmf.rb: fix merge_libs
* lib/mkmf.rb (MakeMakefile#merge_libs): insert following reversal
  ordered elements just after the duplicated element, not overwriting
  successive elements.  [ruby-core:50314] [Bug #7467]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-07 06:33:22 +00:00