Skip to content

Commit faa4f4f

Browse files
committed
Get rid of FreeBSD make incompatibility [Bug #16331]
FreeBSD make works differently with `-j` option. > -j max_jobs > Specify the maximum number of jobs that `make` may have running > at any one time. The value is saved in `.MAKE.JOBS.` Turns > compatibility mode off, unless the `B` flag is also specified. > When compatibility mode is off, all commands associated with a > target are executed in a single shell invocation as opposed to > the traditional one shell invocation per line. This can break > traditional scripts which change directories on each command > invocation and then expect to start with a fresh environment on > the next line. It is more efficient to correct the scripts > rather than turn backwards compatibility on. Stop using exit, cd, exec in middle of commands.
1 parent ff767dd commit faa4f4f

File tree

2 files changed

+45
-36
lines changed

2 files changed

+45
-36
lines changed

common.mk

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ $(LIBRUBY_A): $(LIBRUBY_A_OBJS) $(MAINOBJ) $(INITOBJS) $(ARCHFILE)
345345
$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP) $(BUILTIN_ENCOBJS)
346346

347347
$(LIBRUBY_EXTS):
348-
@exit > $@
348+
@$(NULLCMD) > $@
349349

350350
$(STATIC_RUBY)$(EXEEXT): $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A)
351351
$(Q)$(RM) $@
@@ -594,11 +594,14 @@ clean-local:: clean-runnable
594594
$(Q)$(RM) y.tab.c y.output encdb.h transdb.h config.log rbconfig.rb $(ruby_pc) $(COROUTINE_H:/Context.h=/.time)
595595
$(Q)$(RM) probes.h probes.$(OBJEXT) probes.stamp ruby-glommed.$(OBJEXT) ruby.imp
596596
$(Q)$(RM) GNUmakefile.old Makefile.old $(arch)-fake.rb bisect.sh $(ENC_TRANS_D)
597-
-$(Q) $(RMDIR) enc/jis enc/trans enc $(COROUTINE_H:/Context.h=) coroutine 2> $(NULL) || exit 0
598-
clean-runnable:: PHONY
599-
$(Q)$(CHDIR) bin 2>$(NULL) && $(RM) $(PROGRAM) $(WPROGRAM) $(GORUBY)$(EXEEXT) bin/*.$(DLEXT) 2>$(NULL) || exit 0
600-
$(Q)$(CHDIR) lib 2>$(NULL) && $(RM) $(LIBRUBY_A) $(LIBRUBY) $(LIBRUBY_ALIASES) $(RUBY_BASE_NAME)/$(RUBY_PROGRAM_VERSION) $(RUBY_BASE_NAME)/vendor_ruby 2>$(NULL) || exit 0
601-
$(Q)$(RMDIR) lib/$(RUBY_BASE_NAME) lib bin 2>$(NULL) || exit 0
597+
-$(Q) $(RMDIR) enc/jis enc/trans enc $(COROUTINE_H:/Context.h=) coroutine 2> $(NULL) || $(NULLCMD)
598+
599+
bin/clean-runnable:: PHONY
600+
$(Q)$(CHDIR) bin 2>$(NULL) && $(RM) $(PROGRAM) $(WPROGRAM) $(GORUBY)$(EXEEXT) bin/*.$(DLEXT) 2>$(NULL) || $(NULLCMD)
601+
lib/clean-runnable:: PHONY
602+
$(Q)$(CHDIR) lib 2>$(NULL) && $(RM) $(LIBRUBY_A) $(LIBRUBY) $(LIBRUBY_ALIASES) $(RUBY_BASE_NAME)/$(RUBY_PROGRAM_VERSION) $(RUBY_BASE_NAME)/vendor_ruby 2>$(NULL) || $(NULLCMD)
603+
clean-runnable:: bin/clean-runnable lib/clean-runnable PHONY
604+
$(Q)$(RMDIR) lib/$(RUBY_BASE_NAME) lib bin 2>$(NULL) || $(NULLCMD)
602605
clean-ext:: PHONY
603606
clean-golf: PHONY
604607
$(Q)$(RM) $(GORUBY)$(EXEEXT) $(GOLFOBJS)
@@ -607,7 +610,7 @@ clean-html: PHONY
607610
clean-capi: PHONY
608611
clean-platform: PHONY
609612
clean-extout: PHONY
610-
-$(Q)$(RMDIR) $(EXTOUT)/$(arch) $(EXTOUT) 2> $(NULL) || exit 0
613+
-$(Q)$(RMDIR) $(EXTOUT)/$(arch) $(EXTOUT) 2> $(NULL) || $(NULLCMD)
611614
clean-docs: clean-rdoc clean-html clean-capi
612615
clean-spec: PHONY
613616
clean-rubyspec: clean-spec
@@ -643,9 +646,10 @@ clean-srcs-local::
643646
$(Q)$(RM) $(MJIT_MIN_HEADER) $(MJIT_MIN_HEADER:.h=)$(MJIT_HEADER_SUFFIX:%=*).h
644647

645648
realclean-srcs-local:: clean-srcs-local
646-
$(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) parse.c parse.h lex.c enc/trans/newline.c $(PRELUDES) revision.h
647-
$(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) id.c id.h probes.dmyh
648-
$(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) configure aclocal.m4 tool/config.guess tool/config.sub gems/*.gem
649+
$(Q)$(CHDIR) $(srcdir) && $(RM) \
650+
parse.c parse.h lex.c enc/trans/newline.c $(PRELUDES) revision.h \
651+
id.c id.h probes.dmyh configure aclocal.m4 tool/config.guess tool/config.sub gems/*.gem \
652+
|| $(NULLCMD)
649653

650654
clean-srcs-ext::
651655
realclean-srcs-ext:: clean-srcs-ext
@@ -677,22 +681,22 @@ timestamp/realclean:: ext/realclean gems/realclean
677681

678682
timestamp/clean timestamp/distclean timestamp/realclean::
679683
$(Q)$(RM) $(TIMESTAMPDIR)/.*.time $(TIMESTAMPDIR)/$(arch)/.time
680-
$(Q)$(RMDIRS) $(TIMESTAMPDIR)/$(arch) $(TIMESTAMPDIR) 2> $(NULL) || exit 0
684+
$(Q)$(RMDIRS) $(TIMESTAMPDIR)/$(arch) $(TIMESTAMPDIR) 2> $(NULL) || $(NULLCMD)
681685

682686
clean-ext::
683687
-$(Q)$(RM) ext/extinit.$(OBJEXT)
684688

685689
distclean-ext realclean-ext::
686690
-$(Q)$(RM) $(EXTS_MK) ext/extinit.* ext/configure-ext.mk
687-
-$(Q)$(RMDIR) ext 2> $(NULL) || exit 0
691+
-$(Q)$(RMDIR) ext 2> $(NULL) || $(NULLCMD)
688692

689693
clean-enc distclean-enc realclean-enc: PHONY
690694

691695
clean-enc: clean-enc.d
692696

693697
clean-enc.d: PHONY
694698
$(Q)$(RM) $(ENC_TRANS_D)
695-
-$(Q) $(RMDIR) enc/jis enc/trans enc 2> $(NULL) || exit 0
699+
-$(Q) $(RMDIR) enc/jis enc/trans enc 2> $(NULL) || $(NULLCMD)
696700

697701
clean-rdoc distclean-rdoc realclean-rdoc:
698702
@echo $(@:-rdoc=ing) rdoc
@@ -708,12 +712,12 @@ clean-capi distclean-capi realclean-capi:
708712

709713
clean-platform:
710714
$(Q) $(RM) $(PLATFORM_D)
711-
-$(Q) $(RMDIR) $(PLATFORM_DIR) 2> $(NULL) || exit 0
715+
-$(Q) $(RMDIR) $(PLATFORM_DIR) 2> $(NULL) || $(NULLCMD)
712716

713717
RUBYSPEC_CAPIEXT = spec/ruby/optional/capi/ext
714718
clean-spec: PHONY
715719
-$(Q) $(RM) $(RUBYSPEC_CAPIEXT)/*.$(OBJEXT) $(RUBYSPEC_CAPIEXT)/*.$(DLEXT)
716-
-$(Q) $(RMDIRS) $(RUBYSPEC_CAPIEXT) 2> $(NULL) || exit 0
720+
-$(Q) $(RMDIRS) $(RUBYSPEC_CAPIEXT) 2> $(NULL) || $(NULLCMD)
717721

718722
check: main test test-tool test-all test-spec
719723
$(ECHO) check succeeded
@@ -867,7 +871,7 @@ PHONY:
867871

868872
$(PLATFORM_D):
869873
$(Q) $(MAKEDIRS) $(PLATFORM_DIR) $(@D)
870-
@exit > $@
874+
@$(NULLCMD) > $@
871875

872876
exe/$(PROGRAM): ruby-runner.c ruby-runner.h exe/.time miniruby$(EXEEXT) {$(VPATH)}config.h
873877
$(Q) $(CC) $(CFLAGS) $(INCFLAGS) $(CPPFLAGS) -DRUBY_INSTALL_NAME=$(@F) $(COUTFLAG)ruby-runner.$(OBJEXT) -c $(CSRCFLAG)$(srcdir)/ruby-runner.c
@@ -884,17 +888,17 @@ exe/$(PROGRAM): ruby-runner.c ruby-runner.h exe/.time miniruby$(EXEEXT) {$(VPATH
884888

885889
exe/.time:
886890
$(Q) $(MAKEDIRS) $(@D)
887-
@exit > $@
891+
@$(NULLCMD) > $@
888892

889893
$(BUILTIN_ENCOBJS) $(BUILTIN_TRANSOBJS): $(ENC_TRANS_D)
890894

891895
$(ENC_TRANS_D):
892896
$(Q) $(MAKEDIRS) enc/trans $(@D)
893-
@exit > $@
897+
@$(NULLCMD) > $@
894898

895899
$(TIMESTAMPDIR)/$(arch)/.time:
896900
$(Q)$(MAKEDIRS) $(@D) $(EXTOUT)/$(arch)
897-
@exit > $@
901+
@$(NULLCMD) > $@
898902

899903
###
900904
CCAN_DIR = {$(VPATH)}ccan
@@ -930,7 +934,7 @@ nt.$(OBJEXT): {$(VPATH)}nt.c
930934
$(COROUTINE_H:/Context.h=/.time)
931935
$(COROUTINE_H:/Context.h=/.time):
932936
$(Q) $(MAKEDIRS) $(@D)
933-
@exit > $@
937+
@$(NULLCMD) > $@
934938

935939
###
936940

@@ -1115,10 +1119,10 @@ $(BUILTIN_RB_INCS): $(top_srcdir)/tool/mk_builtin_loader.rb
11151119

11161120
$(srcdir)/revision.h:
11171121
$(Q)$(gnumake:yes=#) $(RM) $(@F)
1118-
$(Q)$(gnumake:yes=#) exit > $@ || exit > $(@F)
1122+
$(Q)$(gnumake:yes=#) $(NULLCMD) > $@ || $(NULLCMD) > $(@F)
11191123

11201124
revision.tmp::
1121-
$(Q)exit > $@
1125+
$(Q) $(NULLCMD) > $@
11221126
revision.$(HAVE_BASERUBY:yes=tmp):: $(srcdir)/version.h $(srcdir)/tool/file2lastrev.rb $(REVISION_FORCE)
11231127
$(Q) $(BASERUBY) $(srcdir)/tool/file2lastrev.rb -q --revision.h --srcdir="$(srcdir)" > $@
11241128

@@ -1440,7 +1444,7 @@ $(UNICODE_SRC_DATA_DIR)/.unicode-tables.time: $(srcdir)/tool/generic_erb.rb \
14401444
$(UNICODE_DATA_DIR) lib/unicode_normalize
14411445

14421446
$(UNICODE_SRC_DATA_DIR):
1443-
$(Q) $(exec) $(MAKEDIRS) $@ || exit && echo $(MAKE)
1447+
$(gnumake_recursive)$(Q) $(MAKEDIRS) $@
14441448

14451449
$(UNICODE_HDR_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=name2ctype.h): \
14461450
$(srcdir)/tool/enc-unicode.rb \

template/Makefile.in

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ $(PROGRAM):
275275
$(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@
276276
$(Q) $(POSTLINK)
277277

278-
PRE_LIBRUBY_UPDATE = [ -n "$(LIBRUBY_SO_UPDATE)" ] || $(exec) $(RM) $(LIBRUBY_EXTS)
278+
PRE_LIBRUBY_UPDATE = [ -n "$(LIBRUBY_SO_UPDATE)" ] || $(gnumake:yes=exec) $(RM) $(LIBRUBY_EXTS)
279279

280280
# We must `rm' the library each time this rule is invoked because "updating" a
281281
# MAB library on Apple/NeXT (see --enable-fat-binary in configure) is not
@@ -456,12 +456,14 @@ probes.$(OBJEXT): $(srcdir)/probes.d $(DTRACE_REBUILD:yes=probes.stamp)
456456
main: mjit-headers
457457
yes-mjit-headers: $(MJIT_MIN_HEADER)
458458
clean-local::
459-
$(Q)$(RM) $(MJIT_HEADER) $(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX:%=*).h
460-
$(Q)$(RM) $(MJIT_MIN_HEADER) $(MJIT_MIN_HEADER:.h=)$(MJIT_HEADER_SUFFIX:%=*).h
461-
$(Q)$(RM) $(MJIT_HEADER_INSTALL_DIR)/rb_mjit_min_header-*.h
462-
$(Q)$(RM) $(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).time mjit_config.h
459+
$(Q)$(RM) \
460+
$(MJIT_HEADER) $(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX:%=*).h \
461+
$(MJIT_MIN_HEADER) $(MJIT_MIN_HEADER:.h=)$(MJIT_HEADER_SUFFIX:%=*).h \
462+
$(MJIT_HEADER_INSTALL_DIR)/rb_mjit_min_header-*.h \
463+
$(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).time mjit_config.h \
464+
|| $(NULLCMD)
463465
$(Q)$(RM) -r mjit_build_dir.*
464-
-$(Q) $(RMDIRS) $(MJIT_HEADER_INSTALL_DIR) $(MJIT_HEADER_BUILD_DIR) $(TIMESTAMPDIR) 2> $(NULL) || exit 0
466+
-$(Q) $(RMDIRS) $(MJIT_HEADER_INSTALL_DIR) $(MJIT_HEADER_BUILD_DIR) $(TIMESTAMPDIR) 2> $(NULL) || $(NULLCMD)
465467

466468
# DTrace static library hacks described here:
467469
# http://mail.opensolaris.org/pipermail/dtrace-discuss/2005-August/000207.html
@@ -470,15 +472,18 @@ ruby-glommed.$(OBJEXT):
470472
$(Q) $(LD) -r -o $@ $(OBJS)
471473

472474
clean-local::
473-
$(Q)$(RM) ext/extinit.c ext/extinit.$(OBJEXT) ext/ripper/y.output \
474-
enc/encinit.c enc/encinit.$(OBJEXT)
475-
-$(Q)$(RM) $(pkgconfig_DATA)
476-
-$(Q)$(RMALL) exe/ ruby-runner.$(OBJEXT) ruby-runner.h *.dSYM
475+
$(Q)$(RM) \
476+
ext/extinit.c ext/extinit.$(OBJEXT) ext/ripper/y.output \
477+
enc/encinit.c enc/encinit.$(OBJEXT) $(pkgconfig_DATA) \
478+
ruby-runner.$(OBJEXT) ruby-runner.h *.dSYM \
479+
|| $(NULLCMD)
480+
-$(Q)$(RMALL) exe/
477481

478482
distclean-local::
479-
$(Q)$(RM) ext/config.cache $(RBCONFIG) Doxyfile
480-
-$(Q)$(RM) run.gdb
481-
-$(Q)$(RM) $(INSTALLED_LIST) $(arch_hdrdir)/ruby/config.h verconf.h
483+
$(Q)$(RM) \
484+
ext/config.cache $(RBCONFIG) Doxyfile run.gdb \
485+
$(INSTALLED_LIST) $(arch_hdrdir)/ruby/config.h verconf.h \
486+
|| $(NULLCMD)
482487
-$(Q)$(RMDIRS) $(arch_hdrdir)/ruby 2> /dev/null || true
483488

484489
ext/clean.sub:: ext/clean.mk

0 commit comments

Comments
 (0)