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

WIP: Backports 1.6-beta #38949

Merged
merged 40 commits into from
Jan 6, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
06171f6
Switch back to LLVM ORC v2, take two (#38804)
vtjnash Dec 17, 2020
264d855
fix #38888, pessimistic sparam inference with concrete upper bound (#…
JeffBezanson Dec 18, 2020
c678cef
Carry MBedTLS patch that works around CMake 3.18.2 bug. (#38933) (#38…
Sacha0 Dec 25, 2020
0372159
Source tarballs should contain `StdlibArtifacts.toml` files (#38962) …
Sacha0 Dec 25, 2020
715eb60
minor inferrability tweak for `manifest_deps_get` (#38954)
aviatesk Dec 21, 2020
f676019
Repair jl_init. (#38950)
GunnarFarneback Dec 21, 2020
e550e87
[Artifacts] Note the platform we're looking for in our error message …
staticfloat Dec 22, 2020
a67b662
Assert that _artifact_str returns a String (#38975)
timholy Dec 24, 2020
f190c53
Construct constant LLVMPtr correctly (#38958)
vchuravy Dec 25, 2020
9475802
Fix trampoline on PPC (#38980)
vchuravy Dec 25, 2020
f42b28e
Update the AST docs on `nothing` `:method` expressions (#38496)
timholy Dec 26, 2020
8d41bf7
[loader] Must invalidate `.o` files when `VERSION` changes (#38800)
staticfloat Dec 26, 2020
14a646c
build: pack checksums into fewer files by target (#38963)
vtjnash Dec 22, 2020
30ce7da
win: Set correct folder permissions after folder creation (#38942)
musm Dec 27, 2020
d73f866
Export jl_n_threads from the public libjulia library [#38925]
imciner2 Dec 18, 2020
a881030
[cli/trampolines]: Fix `aarch64-apple-darwin` trampoline ASM syntax
staticfloat Dec 19, 2020
dd7d025
[cli/trampolines]: Fix `i686-w64-mingw32` name mangling
staticfloat Dec 19, 2020
8984d13
Define `jl_n_threads` in only `libjulia`
staticfloat Dec 19, 2020
3be9b23
Fix visibility of jl_n_threads
imciner2 Dec 20, 2020
22a907b
Allow libjulia to contain non-pointer variables
imciner2 Dec 20, 2020
ac9c203
Remove second declaration of jl_n_threads
imciner2 Dec 20, 2020
c32c796
Use proper interprocedural register on aarch64
staticfloat Dec 21, 2020
b2484a7
Adapt Windows `cglobal()` search for `libjulia-internal`
staticfloat Dec 22, 2020
ea9d2bb
Revert "win: Set correct folder permissions after folder creation (#3…
KristofferC Dec 28, 2020
7d6594d
[libuv] Bump to include `DELETE` win ACL patch (#39038)
staticfloat Dec 30, 2020
c992850
Bump Documenter to 0.26.1 (#39097)
mortenpi Jan 5, 2021
bacbb97
Improve consistency of SONAME usage, fix debug installation
staticfloat Dec 26, 2020
3b809f7
Fix lack of `JL_MAJOR_SHLIB_EXT` on Windows
staticfloat Dec 27, 2020
b4f2c66
Fixes for non-Int based lengths (#37741)
dlfivefifty Jan 4, 2021
616cb5d
[cli/trampolines] Fix section directive for windows trampolines
staticfloat Dec 30, 2020
eb1efe5
[cli/loader]: Don't allow initialization to run more than once
staticfloat Dec 30, 2020
b6590d4
FileWatching: Dump open file descriptors on failure
Keno Apr 21, 2020
f452173
Don't detach rr workers in SharedArrays tests
Keno Apr 22, 2020
0d21397
Disable thread affinity test under rr
Keno Apr 22, 2020
2ed26a0
Exclude `threads` test from rr tracing
Keno Dec 16, 2020
c70397e
Use universal LIBUV_INC instead of build_includedir
vchuravy Sep 23, 2020
c8029bb
stage flisp.boot into host
vchuravy Sep 23, 2020
327f298
use BUILD_EXE for flisp
vchuravy Sep 24, 2020
55154b3
Measure compile time only when using time macros pt.2: handling when …
IanButterworth Jan 6, 2021
f34a4d8
fix Meta.partially_inline! again (#39112)
simeonschaub Jan 6, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Improve consistency of SONAME usage, fix debug installation
SONAME and RPATH inconsistency resulted in `julia`/`julia-debug`
occasionally being unable to find `libjulia.so`, due to
`libjulia-internal` not having the right RPATH set (it was set to
`$ORIGIN:$ORIGIN/julia`, when it now needs to be set to
`$ORIGIN:$ORIGIN/..`).  Use `patchelf` to address this during `make
install`.

We also want to use the SONAME of e.g. `libjulia` as much as possible,
so as to avoid searching the filesystem for libraries that are already
opened.

Also fix a few bugs in building `julia-debug`.

(cherry picked from commit 7aa128e)
  • Loading branch information
staticfloat authored and KristofferC committed Jan 5, 2021
commit bacbb97765ab910998193056f9addb5fee8baf2d
12 changes: 8 additions & 4 deletions Make.inc
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,10 @@ endef
$(foreach D,libdir private_libdir datarootdir libexecdir docdir sysconfdir includedir,$(eval $(call cache_rel_path,$(D),$(bindir))))
$(foreach D,build_libdir build_private_libdir,$(eval $(call cache_rel_path,$(D),$(build_bindir))))

# Save a special one: reverse_private_libdir_rel: usually just `../`, but good to be general:
reverse_private_libdir_rel_eval = $(call rel_path,$(private_libdir),$(libdir))
reverse_private_libdir_rel = $(call hit_cache,reverse_private_libdir_rel_eval)

INSTALL_F := $(JULIAHOME)/contrib/install.sh 644
INSTALL_M := $(JULIAHOME)/contrib/install.sh 755

Expand Down Expand Up @@ -1533,11 +1537,11 @@ define dep_lib_path
$$($(PYTHON) $(call python_cygpath,$(JULIAHOME)/contrib/relative_path.py) $(1) $(2))
endef

LIBJULIAINTERNAL_BUILD_DEPLIB := $(call dep_lib_path,$(build_libdir),$(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT))
LIBJULIAINTERNAL_INSTALL_DEPLIB := $(call dep_lib_path,$(libdir),$(private_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT))
LIBJULIAINTERNAL_BUILD_DEPLIB := $(call dep_lib_path,$(build_libdir),$(build_shlibdir)/libjulia-internal.$(JL_MAJOR_SHLIB_EXT))
LIBJULIAINTERNAL_INSTALL_DEPLIB := $(call dep_lib_path,$(libdir),$(private_shlibdir)/libjulia-internal.$(JL_MAJOR_SHLIB_EXT))

LIBJULIAINTERNAL_DEBUG_BUILD_DEPLIB := $(call dep_lib_path,$(build_libdir),$(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT))
LIBJULIAINTERNAL_DEBUG_INSTALL_DEPLIB := $(call dep_lib_path,$(libdir),$(private_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT))
LIBJULIAINTERNAL_DEBUG_BUILD_DEPLIB := $(call dep_lib_path,$(build_libdir),$(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_SHLIB_EXT))
LIBJULIAINTERNAL_DEBUG_INSTALL_DEPLIB := $(call dep_lib_path,$(libdir),$(private_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_SHLIB_EXT))

ifeq ($(OS),WINNT)
ifeq ($(BINARY),32)
Expand Down
13 changes: 11 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ julia-sysimg-bc : julia-stdlib julia-base julia-cli-$(JULIA_BUILD_MODE) julia-sr
julia-sysimg-release julia-sysimg-debug : julia-sysimg-% : julia-sysimg-ji julia-cli-%
@$(MAKE) $(QUIET_MAKE) -C $(BUILDROOT) -f sysimage.mk sysimg-$*

julia-debug julia-release : julia-% : julia-sysimg-% julia-symlink julia-libccalltest julia-libllvmcalltest julia-base-cache
julia-debug julia-release : julia-% : julia-sysimg-% julia-src-% julia-symlink julia-libccalltest julia-libllvmcalltest julia-base-cache

debug release : % : julia-%

Expand Down Expand Up @@ -163,7 +163,7 @@ endif
# private libraries, that are installed in $(prefix)/lib/julia
JL_PRIVATE_LIBS-0 := libccalltest libllvmcalltest libjulia-internal
ifeq ($(BUNDLE_DEBUG_LIBS),1)
JL_TARGETS += libjulia-internal-debug
JL_PRIVATE_LIBS-0 += libjulia-internal-debug
endif
ifeq ($(USE_GPL_LIBS), 1)
JL_PRIVATE_LIBS-0 += libsuitesparse_wrapper
Expand Down Expand Up @@ -357,6 +357,15 @@ endif
$(call stringreplace,$${DEBUG_TARGET},sys-debug.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys-debug.$(SHLIB_EXT)); \
fi;
endif

# Set rpath for libjulia-internal, which is moving from `../lib` to `../lib/julia`. We only need to do this for Linux/FreeBSD
ifneq (,$(findstring $(OS),Linux FreeBSD))
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
ifeq ($(BUNDLE_DEBUG_LIBS),1)
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
endif
endif


ifneq ($(LOADER_BUILD_DEP_LIBS),$(LOADER_INSTALL_DEP_LIBS))
# Next, overwrite relative path to libjulia-internal in our loader if $(LOADER_BUILD_DEP_LIBS) != $(LOADER_INSTALL_DEP_LIBS)
Expand Down
2 changes: 1 addition & 1 deletion cli/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ else
endif

$(build_shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(LIB_DOBJS) | $(build_shlibdir) $(build_libdir)
@$(call PRINT_LINK, $(CC) $(call IMPLIB_FLAGS,$@) $(LOADER_CFLAGS) -DLIBRARY_EXPORTS -shared $(DEBUGFLAGS) $(LIB_DOBJS) -o $@ $(JLIBLDFLAGS) $(LOADER_LDFLAGS) $(RPATH_LIB)) $(call SONAME_FLAGS,$(notdir $@))
@$(call PRINT_LINK, $(CC) $(call IMPLIB_FLAGS,$@) $(LOADER_CFLAGS) -DLIBRARY_EXPORTS -shared $(DEBUGFLAGS) $(LIB_DOBJS) -o $@ $(JLIBLDFLAGS) $(LOADER_LDFLAGS) $(RPATH_LIB)) $(call SONAME_FLAGS,libjulia-debug.$(JL_MAJOR_SHLIB_EXT))
$(INSTALL_NAME_CMD)libjulia-debug.$(SHLIB_EXT) $@
ifneq ($(OS), WINNT)
@ln -sf $(notdir $@) $(build_shlibdir)/libjulia-debug.$(JL_MAJOR_SHLIB_EXT)
Expand Down
10 changes: 7 additions & 3 deletions src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,13 @@ DEBUGFLAGS += $(FLAGS)
SHIPFLAGS += $(FLAGS)

# if not absolute, then relative to the directory of the julia executable
SHIPFLAGS += "-DJL_SYSTEM_IMAGE_PATH=\"$(build_private_libdir_rel)/sys.$(SHLIB_EXT)\""
SHIPFLAGS += "-DJL_SYSTEM_IMAGE_PATH=\"$(build_private_libdir_rel)/sys.$(SHLIB_EXT)\""
DEBUGFLAGS += "-DJL_SYSTEM_IMAGE_PATH=\"$(build_private_libdir_rel)/sys-debug.$(SHLIB_EXT)\""

# Add SONAME defines so we can embed proper `dlopen()` calls.
SHIPFLAGS += "-DJL_LIBJULIA_SONAME=\"libjulia.$(JL_MAJOR_SHLIB_EXT)\"" "-DJL_LIBJULIA_INTERNAL_SONAME=\"libjulia-internal.$(JL_MAJOR_SHLIB_EXT)\""
DEBUGFLAGS += "-DJL_LIBJULIA_SONAME=\"libjulia-debug.$(JL_MAJOR_SHLIB_EXT)\"" "-DJL_LIBJULIA_INTERNAL_SONAME=\"libjulia-internal-debug.$(JL_MAJOR_SHLIB_EXT)\""

ifeq ($(USE_CROSS_FLISP), 1)
FLISPDIR := $(BUILDDIR)/flisp/host
else
Expand Down Expand Up @@ -291,7 +295,7 @@ CXXLD = $(LD) -dll -export:jl_setjmp -export:jl_longjmp
endif

$(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(SRCDIR)/julia.expmap $(DOBJS) $(BUILDDIR)/flisp/libflisp-debug.a $(BUILDDIR)/support/libsupport-debug.a $(LIBUV)
@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(CXXLDFLAGS) $(DEBUGFLAGS) $(DOBJS) $(RPATH_LIB) -o $@ $(JLDFLAGS) $(JLIBLDFLAGS) $(DEBUG_LIBS) $(call SONAME_FLAGS,$(notdir $@)))
@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(CXXLDFLAGS) $(DEBUGFLAGS) $(DOBJS) $(RPATH_LIB) -o $@ $(JLDFLAGS) $(JLIBLDFLAGS) $(DEBUG_LIBS) $(call SONAME_FLAGS,libjulia-internal-debug.$(JL_MAJOR_SHLIB_EXT)))
$(INSTALL_NAME_CMD)libjulia-internal-debug.$(SHLIB_EXT) $@
ifneq ($(OS), WINNT)
@ln -sf libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT) $(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_SHLIB_EXT)
Expand All @@ -306,7 +310,7 @@ $(BUILDDIR)/libjulia-internal-debug.a: $(SRCDIR)/julia.expmap $(DOBJS) $(BUILDDI
libjulia-internal-debug: $(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT) $(PUBLIC_HEADER_TARGETS)

$(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT): $(SRCDIR)/julia.expmap $(OBJS) $(BUILDDIR)/flisp/libflisp.a $(BUILDDIR)/support/libsupport.a $(LIBUV)
@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(OBJS) $(RPATH_LIB) -o $@ $(JLDFLAGS) $(JLIBLDFLAGS) $(RELEASE_LIBS) $(call SONAME_FLAGS,$(notdir $@)))
@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(OBJS) $(RPATH_LIB) -o $@ $(JLDFLAGS) $(JLIBLDFLAGS) $(RELEASE_LIBS) $(call SONAME_FLAGS,libjulia-internal.$(JL_MAJOR_SHLIB_EXT)))
$(INSTALL_NAME_CMD)libjulia-internal.$(SHLIB_EXT) $@
ifneq ($(OS), WINNT)
@ln -sf libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT) $(build_shlibdir)/libjulia-internal.$(JL_MAJOR_SHLIB_EXT)
Expand Down
2 changes: 1 addition & 1 deletion src/dlload.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ JL_DLLEXPORT void *jl_load_dynamic_library(const char *modname, unsigned flags,
int n_extensions = endswith_extension(modname) ? 1 : N_EXTENSIONS;

/*
this branch returns handle of libjulia
this branch returns handle of libjulia-internal
*/
if (modname == NULL) {
#ifdef _OS_WINDOWS_
Expand Down
2 changes: 1 addition & 1 deletion src/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,7 @@ void _julia_init(JL_IMAGE_SEARCH rel)

// Load libjulia-internal (which contains this function), and libjulia, explicitly.
jl_libjulia_internal_handle = jl_load_dynamic_library(NULL, JL_RTLD_DEFAULT, 1);
jl_libjulia_handle = jl_load_dynamic_library(JL_LIBJULIA_DL_LIBNAME, JL_RTLD_DEFAULT, 1);
jl_libjulia_handle = jl_load_dynamic_library(JL_LIBJULIA_SONAME, JL_RTLD_DEFAULT, 1);
#ifdef _OS_WINDOWS_
jl_ntdll_handle = jl_dlopen("ntdll.dll", 0); // bypass julia's pathchecking for system dlls
jl_kernel32_handle = jl_dlopen("kernel32.dll", 0);
Expand Down