diff options
author | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-07-31 12:43:06 +0000 |
---|---|---|
committer | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-07-31 12:43:06 +0000 |
commit | 11974fc010b9aba4a4fee3ecdfb27003ba36a6eb (patch) | |
tree | af04e13ee66ad9b16930ac3fefead4bcecc2082f /mjit.c | |
parent | c4734308b6d0c7c7fea3705fa2d4af293df2657a (diff) |
mjit.c: allow using MJIT header in build directory
when $MJIT_SEARCH_BUILD_DIR is set.
If prefix path is owned by root, `make install` needs to be run by root.
But in general we don't want to run `make test-all`, and also running
`make test-all` currently fails due to permission tests of rdoc and rubygems.
Thus, prior to this commit, specifying a prefix like "/usr/local" could
mean there was no way to pass test-all.
So we should not depend on `make install` for `make test-all`. Thus I
reverted r64104 and r64103, and applied this workaround to pass `make
test-all` without `make install`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'mjit.c')
-rw-r--r-- | mjit.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -1469,7 +1469,7 @@ init_header_filename(void) int fd; /* Root path of the running ruby process. Equal to RbConfig::TOPDIR. */ VALUE basedir_val; - char *basedir; + const char *basedir; size_t baselen; /* A name of the header file included in any C file generated by MJIT for iseqs. */ static const char header_name[] = MJIT_MIN_HEADER_NAME; @@ -1486,9 +1486,18 @@ init_header_filename(void) const size_t libpathflag_len = sizeof(libpathflag) - 1; #endif - basedir_val = ruby_prefix_path; - basedir = StringValuePtr(basedir_val); - baselen = RSTRING_LEN(basedir_val); + if (getenv("MJIT_SEARCH_BUILD_DIR")) { + /* This path is not intended to be used on production, but using build directory's + header file here because people want to run `make test-all` without running + `make install`. Don't use $MJIT_SEARCH_BUILD_DIR except for test-all. */ + basedir = MJIT_BUILD_DIR; + baselen = strlen(basedir); + } + else { + basedir_val = ruby_prefix_path; + basedir = StringValuePtr(basedir_val); + baselen = RSTRING_LEN(basedir_val); + } header_file = xmalloc(baselen + header_name_len + 1); p = append_str2(header_file, basedir, baselen); |