Dear diary, on Sat, Jun 24, 2006 at 10:37:25AM CEST, I got a letter where Junio C Hamano <junkio@xxxxxxx> said that... > Petr Baudis <pasky@xxxxxxx> writes: > > > +int > > +error_xs(const char *err, va_list params) > > +{ > > You said in git-compat-util.h that set_error_routine takes a > function that returns void, so this gives unnecessary type > clash. > > -------------------------------- > In file included from /usr/lib/perl/5.8/CORE/perl.h:756, > from Git.xs:15: > /usr/lib/perl/5.8/CORE/embed.h:4193:1: warning: "die" redefined > Git.xs:11:1: warning: this is the location of the previous definition > Git.xs: In function 'boot_Git': > Git.xs:57: warning: passing argument 1 of 'set_error_routine' from incompatible pointer type > Git.xs:58: warning: passing argument 1 of 'set_die_routine' makes qualified function pointer from unqualified > -------------------------------- Oh, I forgot to fix it in the .xs. :-( > Other troubles I saw with the v4 series while compiling: > > -------------------------------- > usage.c:35: warning: initialization makes qualified function pointer from unqualified > usage.c:36: warning: initialization makes qualified function pointer from unqualified > > I'd fix it with this ... Ah, so THAT's where you put the NORETURN thing. ;-) > -------------------------------- > > (cd perl && /usr/bin/perl Makefile.PL \ > PREFIX="/home/junio/git-test" \ > DEFINE="-O2 -Wall -Wdeclaration-after-statement > -g -DSHA1_HEADER='<openssl/sha.h>' > -DGIT_VERSION=\\\"1.4.1.rc1.gab0df\\\"" \ > LIBS="libgit.a xdiff/lib.a -lz -lcrypto") > Unrecognized argument in LIBS ignored: 'libgit.a' > Unrecognized argument in LIBS ignored: 'xdiff/lib.a' > > Do you need to pass LIBS, and if so maybe this is not a way > Makefile.PL expects it to be passed perhaps? It is harmless, but this should fix it: Signed-off-by: Petr Baudis <pasky@xxxxxxx> diff --git a/Makefile b/Makefile index d614f18..91bef4e 100644 --- a/Makefile +++ b/Makefile @@ -230,7 +230,8 @@ BUILTIN_OBJS = \ builtin-update-ref.o GITLIBS = $(LIB_FILE) $(XDIFF_LIB) -LIBS = $(GITLIBS) -lz + +EXTLIBS = -lz # # Platform specific tweaks @@ -380,14 +381,14 @@ ifdef NEEDS_LIBICONV else ICONV_LINK = endif - LIBS += $(ICONV_LINK) -liconv + EXTLIBS += $(ICONV_LINK) -liconv endif ifdef NEEDS_SOCKET - LIBS += -lsocket + EXTLIBS += -lsocket SIMPLE_LIB += -lsocket endif ifdef NEEDS_NSL - LIBS += -lnsl + EXTLIBS += -lnsl SIMPLE_LIB += -lnsl endif ifdef NO_D_TYPE_IN_DIRENT @@ -446,7 +447,7 @@ ifdef MOZILLA_SHA1 LIB_OBJS += mozilla-sha1/sha1.o else SHA1_HEADER = <openssl/sha.h> - LIBS += $(LIB_4_CRYPTO) + EXTLIBS += $(LIB_4_CRYPTO) endif endif endif @@ -469,9 +470,13 @@ PERL_PATH_SQ = $(subst ','\'',$(PERL_PAT PYTHON_PATH_SQ = $(subst ','\'',$(PYTHON_PATH)) GIT_PYTHON_DIR_SQ = $(subst ','\'',$(GIT_PYTHON_DIR)) +LIBS = $(GITLIBS) $(EXTLIBS) + ALL_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' $(COMPAT_CFLAGS) LIB_OBJS += $(COMPAT_OBJS) export prefix TAR INSTALL DESTDIR SHELL_PATH template_dir + + ### Build rules all: $(ALL_PROGRAMS) $(BUILT_INS) git$X gitk @@ -601,7 +606,7 @@ perl/Makefile: perl/Git.pm perl/Makefile (cd perl && $(PERL_PATH) Makefile.PL \ PREFIX="$(prefix)" \ DEFINE="$(ALL_CFLAGS) -DGIT_VERSION=\\\"$(GIT_VERSION)\\\"" \ - LIBS="$(LIBS)") + LIBS="$(EXTLIBS)") doc: $(MAKE) -C Documentation all > -------------------------------- > Makefile out-of-date with respect to Makefile.PL > Cleaning current config before rebuilding Makefile... > make -f Makefile.old clean > /dev/null 2>&1 > /usr/bin/perl Makefile.PL "PREFIX=/home/junio/git-test" "DEFINE=-O2 -Wall -Wdeclaration-after-statement -g -DSHA1_HEADER='<openssl/sha.h>' -DGIT_VERSION=\"1.4.1.rc1.gab0df\"" "LIBS=libgit.a xdiff/lib.a -lz -lcrypto" > Unrecognized argument in LIBS ignored: 'libgit.a' > Unrecognized argument in LIBS ignored: 'xdiff/lib.a' > Writing Makefile for Git > ==> Your Makefile has been rebuilt. <== > ==> Please rerun the make command. <== > false > make[1]: *** [Makefile] Error 1 > -------------------------------- > > The latter is what Perl's build mechanism does so it is not > strictly your fault, but it nevertheless is irritating that we > have to say make clean twice. What about just this? Signed-off-by: Petr Baudis <pasky@xxxxxxx> diff --git a/Makefile b/Makefile index 91bef4e..55c07b6 100644 --- a/Makefile +++ b/Makefile @@ -731,7 +731,8 @@ clean: rm -f $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz rm -f $(htmldocs).tar.gz $(manpages).tar.gz $(MAKE) -C Documentation/ clean - [ ! -e perl/Makefile ] || $(MAKE) -C perl/ clean + # Try twice in case the Makefile has been rebuilt + [ ! -e perl/Makefile ] || $(MAKE) -C perl/ clean || $(MAKE) -C perl/ clean $(MAKE) -C templates/ clean $(MAKE) -C t/ clean rm -f GIT-VERSION-FILE GIT-CFLAGS -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ A person is just about as big as the things that make them angry. - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html