* Build Failure: GIT-GUI-VARS @ 2007-05-11 1:51 Brian Gernhardt 2007-05-11 2:30 ` Junio C Hamano 0 siblings, 1 reply; 5+ messages in thread From: Brian Gernhardt @ 2007-05-11 1:51 UTC (permalink / raw) To: Git Mailing List "make all" fails with "NO_TCLTK=y" because gitk-wish depends on GIT- GUI-VARS which is defined inside the ifndef block. AFAICT, either gitk-wish should be moved inside a ifndef block or an else should be added with a phony GIT-GUI-VARS. I don't know which is preferred. Actually, I can't tell why make is trying to build it in the first place. :-/ gitk-wish is added to OTHER_PROGRAMS inside a NO_TCLTK block. (Debian oldstable, GNU Make 3.80, git repo v1.5.2-rc3) And, while I'm poking through here, there's a line labeled "Backward compatibility -- to be removed after 1.0". Git IDs itself as 1.5.2.rc3. Isn't that after 1.0? :-) ~~ Brian ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Build Failure: GIT-GUI-VARS 2007-05-11 1:51 Build Failure: GIT-GUI-VARS Brian Gernhardt @ 2007-05-11 2:30 ` Junio C Hamano 2007-05-11 14:08 ` Brian Gernhardt 0 siblings, 1 reply; 5+ messages in thread From: Junio C Hamano @ 2007-05-11 2:30 UTC (permalink / raw) To: Brian Gernhardt; +Cc: Git Mailing List Brian Gernhardt <benji@silverinsanity.com> writes: > Actually, I can't tell why make is trying to build it in the first > place. :-/ gitk-wish is added to OTHER_PROGRAMS inside a NO_TCLTK > block. I do not either, and obviously does not reproduce for me. Time for you to try "make -d" perhaps? ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Build Failure: GIT-GUI-VARS 2007-05-11 2:30 ` Junio C Hamano @ 2007-05-11 14:08 ` Brian Gernhardt 2007-05-11 17:10 ` Junio C Hamano 0 siblings, 1 reply; 5+ messages in thread From: Brian Gernhardt @ 2007-05-11 14:08 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List On May 10, 2007, at 10:30 PM, Junio C Hamano wrote: > I do not either, and obviously does not reproduce for me. Time > for you to try "make -d" perhaps? Sorry for the semi-coherent message. It started out as "we should fix this" and I ended up going "why is it broken", all a little too late at night. I'm also not used to debugging Makefiles. And I figured it out (make -p actually was more useful than -d): It's another issue with doing things before including config.mak. My config.mak includes the "NO_TCLTK=y" line, which takes effect at Makefile:485. But gitk-wish is getting included in OTHER_PROGRAMS at Makefile:272. So gitk-wish gets included because NO_TCLTK isn't defined at that point, but all the other rules involving gitk don't get executed because they're after the NO_TCLTK definition. I think we need to be including the config.mak much earlier in the Makefile as this is not the first time issues like this have come up for me. And they tend to be issues that only come up with specific configurations and are therefore harder to track down. Things I can see being an issue for people who put their options in config.mak: 149: ifeq ($(prefix),/usr) 224: ifdef WITH_P4IMPORT 271: ifndef NO_TCLTK # My issue today 279-285: ifndef {SHELL,PERL,PYTHON}_PATH ~~ Brian ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Build Failure: GIT-GUI-VARS 2007-05-11 14:08 ` Brian Gernhardt @ 2007-05-11 17:10 ` Junio C Hamano 2007-05-12 0:09 ` Jeff King 0 siblings, 1 reply; 5+ messages in thread From: Junio C Hamano @ 2007-05-11 17:10 UTC (permalink / raw) To: Brian Gernhardt; +Cc: Git Mailing List Brian Gernhardt <benji@silverinsanity.com> writes: > On May 10, 2007, at 10:30 PM, Junio C Hamano wrote: > >> I do not either, and obviously does not reproduce for me. Time >> for you to try "make -d" perhaps? > > Sorry for the semi-coherent message. It started out as "we should fix > this" and I ended up going "why is it broken", all a little too late > at night. I'm also not used to debugging Makefiles. > > And I figured it out (make -p actually was more useful than -d): It's > another issue with doing things before including config.mak. Ahh, config.mak. I have not been very sympathetic to config.mak from the beginning, although people seem to want it. As I try to arrange variable overrides to be passed from the command line anyway, I've not used config.mak myself. > I think we need to be including the config.mak much earlier in the > Makefile as this is not the first time issues like this have come up > for me. However, it needs to be able to override NO_*, NEEDS_* and friends which means it should come after platform specific defaults. But one platform wants to change the default behaviour depend on the settings of NO_*, possibly set in config.mak. It is a mess. Moving it around would fix one person's problem while breaking others. I think the best course of action is (1) first for somebody more fluent in speaking Makefile than me to volunteer to tackle this problem, and ask help from the list; (2) have people on various "non-stock" configurations sign-up as testers; this does not have to cover the systems listed in the ifeq ($(uname_S),XXX) part of the current Makefile; what is of interest is to see what kind of variables are overridden on the real-world systems via config.mak; (3) The volunteer cooks up an improved Makefile, using config.mak "non-stock" testers have. This would be something that "volunteer" would be deciding, but I have a feeling that we can have two config.mak include in the makefile, one early and one late. But I suspect that picking the right two places would have the same "moving would fix one while breaking another" issue. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Build Failure: GIT-GUI-VARS 2007-05-11 17:10 ` Junio C Hamano @ 2007-05-12 0:09 ` Jeff King 0 siblings, 0 replies; 5+ messages in thread From: Jeff King @ 2007-05-12 0:09 UTC (permalink / raw) To: Junio C Hamano; +Cc: Brian Gernhardt, Git Mailing List On Fri, May 11, 2007 at 10:10:26AM -0700, Junio C Hamano wrote: > I have not been very sympathetic to config.mak from the > beginning, although people seem to want it. As I try to arrange > variable overrides to be passed from the command line anyway, > I've not used config.mak myself. > > [...] > > (3) The volunteer cooks up an improved Makefile, using > config.mak "non-stock" testers have. I wonder if we would be better served by moving these sorts of build-time configuration decisions into the actual make dependency tree. E.g., something like: openssl.lib: mklib-openssl.sh conf-openssl sh mklib-openssl.sh <conf-ssl >openssl.lib program: main.o openssl.lib: cc -o "$@" main.o `cat openssl.lib` where conf-openssl specifies the user's preference (either actual library paths, "auto" for autodetection, or "none" not to use it at all), and mklib-openssl is a script that converts that into the command line options for the link. You can of course do the same with creating a .h file to choose an implementation (you just make a file that #define's the correct thing). The nice thing about this approach is that: 1. You move configuration cruft out of the Makefile, making it much easier to read. Instead, you have a series of very small and obvious shell scripts. 2. The dependency chain is actually correct. If I edit conf-openssl, then that should trigger a re-link for everything which compiles against it. You can also use this for portability fixes: program: main.o strcasestr.o cc -o "$@" main.o strcasestr.o strcasestr.o choose try_strcasestr.c compat/strcasestr.c sh choose try_strcasestr.c compat/strcasestr.c where choose is a script that compiles and runs some test program and uses the result to choose a source file to become strcasestr.c. Thus you _always_ link against strcasestr.o, it's just that sometimes there's an implementation of strcasestr in it (if required by the platform) and sometimes it's empty (or an alternate implementation, etc). I have used this technique many times, and would be happy to be involved in changing the Makefile. However, it's going to be quite a large change, and I recognize that this style is not familiar to most people, so obviously that should be taken into account. -Peff ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2007-05-12 0:10 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-05-11 1:51 Build Failure: GIT-GUI-VARS Brian Gernhardt 2007-05-11 2:30 ` Junio C Hamano 2007-05-11 14:08 ` Brian Gernhardt 2007-05-11 17:10 ` Junio C Hamano 2007-05-12 0:09 ` Jeff King
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).