Skip to content

Commit 45981d2

Browse files
ViralBShahnalimilan
authored andcommitted
Introduce BUNDLE_DEBUG_LIBS to control whether debug libs are included in the binaries (#27814)
By default, avoid including sys-debug.so and libjulia-debug.so in the generated binaries. Don't test julia-debug in CI, since we do not install it.
1 parent 15a4484 commit 45981d2

File tree

4 files changed

+37
-21
lines changed

4 files changed

+37
-21
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ jobs:
5555
mv project julia-src &&
5656
/tmp/julia/bin/julia -e 'Base.require(Main, :InteractiveUtils).versioninfo()' &&
5757
/tmp/julia/bin/julia --sysimage-native-code=no -e 'true' &&
58-
/tmp/julia/bin/julia-debug --sysimage-native-code=no -e 'true' &&
58+
#/tmp/julia/bin/julia-debug --sysimage-native-code=no -e 'true' &&
5959
pushd /tmp/julia/share/julia/test &&
6060
if [ $(echo "$FILES_CHANGED" | grep -cv '^doc/') -gt 0 ]; then
6161
/tmp/julia/bin/julia --check-bounds=yes runtests.jl all --skip Sockets | bar -i 30 &&

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ script:
127127
- FILES_CHANGED=$(git diff --name-only $TRAVIS_COMMIT_RANGE -- || git ls-files)
128128
- cd .. && mv julia julia2
129129
# run tests
130-
- /tmp/julia/bin/julia --sysimage-native-code=no -e 'true' &&
131-
/tmp/julia/bin/julia-debug --sysimage-native-code=no -e 'true'
130+
- /tmp/julia/bin/julia --sysimage-native-code=no -e 'true'
131+
# - /tmp/julia/bin/julia-debug --sysimage-native-code=no -e 'true'
132132
- /tmp/julia/bin/julia -e 'Base.require(Main, :InteractiveUtils).versioninfo()'
133133
- pushd /tmp/julia/share/julia/test
134134
# skip tests if only files within the "doc" dir have changed

Makefile

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,10 @@ julia-base-cache: julia-sysimg-$(JULIA_BUILD_MODE) | $(DIRS) $(build_datarootdir
225225
$(call cygpath_w,$(build_datarootdir)/julia/base.cache))
226226

227227
# public libraries, that are installed in $(prefix)/lib
228-
JL_LIBS := julia julia-debug
228+
JL_TARGETS := julia
229+
ifeq ($(BUNDLE_DEBUG_LIBS),1)
230+
JL_TARGETS += julia-debug
231+
endif
229232

230233
# private libraries, that are installed in $(prefix)/lib/julia
231234
JL_PRIVATE_LIBS-0 := libccalltest
@@ -242,7 +245,7 @@ JL_PRIVATE_LIBS-$(USE_SYSTEM_MBEDTLS) += libmbedtls libmbedcrypto libmbedx509
242245
JL_PRIVATE_LIBS-$(USE_SYSTEM_CURL) += libcurl
243246
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBGIT2) += libgit2
244247
ifeq ($(USE_LLVM_SHLIB),1)
245-
JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM
248+
JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM libLLVM-6
246249
endif
247250

248251
ifeq ($(USE_SYSTEM_OPENLIBM),0)
@@ -289,7 +292,7 @@ $$(build_bindir)/lib$(1).dll: | $$(build_bindir)
289292
cp $$(call pathsearch,lib$(1).dll,$$(STD_LIB_PATH)) $$(build_bindir)
290293
$$(build_depsbindir)/lib$(1).dll: | $$(build_depsbindir)
291294
cp $$(call pathsearch,lib$(1).dll,$$(STD_LIB_PATH)) $$(build_depsbindir)
292-
JL_LIBS += $(1)
295+
JL_TARGETS += $(1)
293296
endef
294297

295298
# Given a list of space-separated libraries, return the first library name that is
@@ -320,28 +323,38 @@ install: $(build_depsbindir)/stringreplace $(BUILDROOT)/doc/_build/html/en/index
320323
mkdir -p $(DESTDIR)$$subdir; \
321324
done
322325

323-
$(INSTALL_M) $(build_bindir)/julia* $(DESTDIR)$(bindir)/
326+
$(INSTALL_M) $(build_bindir)/julia $(DESTDIR)$(bindir)/
327+
ifeq ($(BUNDLE_DEBUG_LIBS),1)
328+
$(INSTALL_M) $(build_bindir)/julia-debug $(DESTDIR)$(bindir)/
329+
endif
324330
ifeq ($(OS),WINNT)
325331
-$(INSTALL_M) $(build_bindir)/*.dll $(DESTDIR)$(bindir)/
326332
-$(INSTALL_M) $(build_libdir)/libjulia.dll.a $(DESTDIR)$(libdir)/
333+
ifeq ($(BUNDLE_DEBUG_LIBS),1)
327334
-$(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
335+
endif
328336
-$(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
329337
else
338+
339+
# Copy over .dSYM directories directly for Darwin
330340
ifeq ($(OS),Darwin)
331-
# Copy over .dSYM directories directly
332-
-cp -a $(build_libdir)/*.dSYM $(DESTDIR)$(libdir)
333-
-cp -a $(build_private_libdir)/*.dSYM $(DESTDIR)$(private_libdir)
341+
-cp -a $(build_libdir)/libjulia.*.dSYM $(DESTDIR)$(libdir)
342+
-cp -a $(build_private_libdir)/sys.dylib.dSYM $(DESTDIR)$(private_libdir)
343+
ifeq ($(BUNDLE_DEBUG_LIBS),1)
344+
-cp -a $(build_libdir)/libjulia-debug.*.dSYM $(DESTDIR)$(libdir)
345+
-cp -a $(build_private_libdir)/sys-debug.dylib.dSYM $(DESTDIR)$(private_libdir)
346+
endif
334347
endif
335348

336-
for suffix in $(JL_LIBS) ; do \
337-
for lib in $(build_libdir)/lib$${suffix}*.$(SHLIB_EXT)*; do \
349+
for suffix in $(JL_TARGETS) ; do \
350+
for lib in $(build_libdir)/lib$${suffix}.*$(SHLIB_EXT)*; do \
338351
if [ "$${lib##*.}" != "dSYM" ]; then \
339352
$(INSTALL_M) $$lib $(DESTDIR)$(libdir) ; \
340353
fi \
341354
done \
342355
done
343356
for suffix in $(JL_PRIVATE_LIBS-0) ; do \
344-
for lib in $(build_libdir)/$${suffix}*.$(SHLIB_EXT)*; do \
357+
for lib in $(build_libdir)/$${suffix}.*$(SHLIB_EXT)*; do \
345358
if [ "$${lib##*.}" != "dSYM" ]; then \
346359
$(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \
347360
fi \
@@ -357,7 +370,9 @@ endif
357370
cp -R -L $(build_includedir)/julia/* $(DESTDIR)$(includedir)/julia
358371
# Copy system image
359372
$(INSTALL_M) $(build_private_libdir)/sys.$(SHLIB_EXT) $(DESTDIR)$(private_libdir)
373+
ifeq ($(BUNDLE_DEBUG_LIBS),1)
360374
$(INSTALL_M) $(build_private_libdir)/sys-debug.$(SHLIB_EXT) $(DESTDIR)$(private_libdir)
375+
endif
361376
# Copy in system image build script
362377
$(INSTALL_M) $(JULIAHOME)/contrib/build_sysimg.jl $(DESTDIR)$(datarootdir)/julia/
363378
# Copy in all .jl sources as well
@@ -383,21 +398,23 @@ endif
383398
# Update RPATH entries and JL_SYSTEM_IMAGE_PATH if $(private_libdir_rel) != $(build_private_libdir_rel)
384399
ifneq ($(private_libdir_rel),$(build_private_libdir_rel))
385400
ifeq ($(OS), Darwin)
386-
for julia in $(DESTDIR)$(bindir)/julia* ; do \
387-
install_name_tool -rpath @executable_path/$(build_private_libdir_rel) @executable_path/$(private_libdir_rel) $$julia; \
388-
install_name_tool -add_rpath @executable_path/$(build_libdir_rel) @executable_path/$(libdir_rel) $$julia; \
401+
for j in $(JL_TARGETS) ; do \
402+
install_name_tool -rpath @executable_path/$(build_private_libdir_rel) @executable_path/$(private_libdir_rel) $(DESTDIR)$(bindir)/$$j; \
403+
install_name_tool -add_rpath @executable_path/$(build_libdir_rel) @executable_path/$(libdir_rel) $(DESTDIR)$(bindir)/$$j; \
389404
done
390405
else ifneq (,$(findstring $(OS),Linux FreeBSD))
391-
for julia in $(DESTDIR)$(bindir)/julia* ; do \
392-
patchelf --set-rpath '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $$julia; \
406+
for j in $(JL_TARGETS) ; do \
407+
patchelf --set-rpath '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j; \
393408
done
394409
endif
395410

396411
# Overwrite JL_SYSTEM_IMAGE_PATH in julia library
397412
$(call stringreplace,$(DESTDIR)$(libdir)/libjulia.$(SHLIB_EXT),sys.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys.$(SHLIB_EXT))
413+
ifeq ($(BUNDLE_DEBUG_LIBS),1)
398414
$(call stringreplace,$(DESTDIR)$(libdir)/libjulia-debug.$(SHLIB_EXT),sys-debug.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys-debug.$(SHLIB_EXT))
399415
endif
400416

417+
endif
401418
# On FreeBSD, remove the build's libdir from each library's RPATH
402419
ifeq ($(OS),FreeBSD)
403420
$(JULIAHOME)/contrib/fixup-rpath.sh $(build_depsbindir)/patchelf $(DESTDIR)$(libdir) $(build_libdir)

test/cmdlineargs.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -499,9 +499,8 @@ end
499499

500500
# backtrace contains type and line number info (esp. on windows #17179)
501501
for precomp in ("yes", "no")
502-
success, out, bt = readchomperrors(`$(Base.julia_cmd()) --startup-file=no --sysimage-native-code=$precomp
503-
-E 'include("____nonexistent_file")'`)
504-
@test !success
502+
succ, out, bt = readchomperrors(`$(Base.julia_cmd()) --startup-file=no --sysimage-native-code=$precomp -E 'include("____nonexistent_file")'`)
503+
@test !succ
505504
@test out == ""
506505
@test occursin("include_relative(::Module, ::String) at $(joinpath(".", "loading.jl"))", bt)
507506
lno = match(r"at \.[\/\\]loading\.jl:(\d+)", bt)

0 commit comments

Comments
 (0)