{"thread":{"id":"4744","subject":"[PATCH 1] autoconf: Use autoconf to write installation directories to config.mak.autogen","startedAt":"2006-07-02T23:56:48Z","lastAt":"2006-07-09T20:43:18Z","messageCount":34,"participants":["Jakub Narebski","Junio C Hamano","Eric Wong","Johannes Schindelin","Pavel Roskin"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"23066","messageId":"200607030156.50455.jnareb@gmail.com","threadId":"4744","inReplyTo":null,"subject":"[PATCH 1] autoconf: Use autoconf to write installation directories to config.mak.autogen","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-02T23:56:48Z","receivedAt":"2006-07-02T23:56:48Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"This is beginning of patch series introducing installation configuration\nusing autoconf (and no other autotools) to git. The idea is to generate\nconfig.mak.autogen using ./configure (generated from configure.ac by running\nautoconf) from config.mak.in, so one can use autoconf as an _alternative_ to\nordinary Makefile, and creating one's own config.mak. Local settings in\nconfig.mak override generated settings in config.mak.autogen\n\nThis patch includes minimal configure.ac and config.mak.in, so one can set\ninstallation directories using autoconf generated ./configure script\ne.g. ./configure --prefix=/usr\n\nSigned-off-by: Jakub Narebski <jnareb@gmail.com>\n---\nThis patch is to be applied on top of 'next', because to work as intended\n(especially for --mandir=<path> option to ./configure) it needs\n  Allow INSTALL, bindir, mandir to be set in main Makefile\n  e14421b9aa85f11853a0dacae09498515daab7b8\npatch (commit) to be present.\n\nFor now the following options do actually something:\n\t$ ./configure \n           --prefix=<prefix>         # [/usr/local]\n           --exec_prefix=<prefix>    # [PREFIX]\n           --bindir=<bindir>         # [EPREFIX/bin]\n           --datadir=<datadir>       # [PREFIX/share]\n           --mandir=<mandir>         # [PREFIX/man]\n\n\t$ ./configure --help         # hardcoded version 1.4.1\n\nQUESTION: how to make autoconf _generate_ correct version string?\n\n\nNext patch will show how this infrastructure can be used.\n\n .gitignore    |    6 ++++++\n INSTALL       |    9 +++++++++\n Makefile      |    1 +\n config.mak.in |   18 ++++++++++++++++++\n configure.ac  |   14 ++++++++++++++\n 5 files changed, 48 insertions(+), 0 deletions(-)\n\ndiff --git a/.gitignore b/.gitignore\nindex 2bcc604..616aa98 100644\n--- a/.gitignore\n+++ b/.gitignore\n@@ -136,4 +136,10 @@ git-core.spec\n *.[ao]\n *.py[co]\n config.mak\n+autom4te.cache\n+config.log\n+config.status\n+config.mak.in\n+config.mak.autogen\n+configure\n git-blame\ndiff --git a/INSTALL b/INSTALL\nindex f8337e2..28245b3 100644\n--- a/INSTALL\n+++ b/INSTALL\n@@ -13,6 +13,15 @@ that uses $prefix, the built results hav\n which are derived from $prefix, so \"make all; make prefix=/usr\n install\" would not work.\n \n+Alternatively you can use autoconf generated ./configure script to\n+set up install paths (via config.mak.autogen), so you can write instead\n+\n+\t$ autoconf ;# as yourself if ./configure doesn't exist yet\n+\t$ ./configure --prefix=/usr ;# as yourself\n+\t$ make all doc ;# as yourself\n+\t# make install install-doc ;# as root\n+\n+\n Issues of note:\n \n  - git normally installs a helper script wrapper called \"git\", which\ndiff --git a/Makefile b/Makefile\nindex 7dbb883..3c2c257 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -333,6 +333,7 @@ ifneq (,$(findstring arm,$(uname_M)))\n \tARM_SHA1 = YesPlease\n endif\n \n+-include config.mak.autogen\n -include config.mak\n \n ifdef WITH_OWN_SUBPROCESS_PY\ndiff --git a/config.mak.in b/config.mak.in\nnew file mode 100644\nindex 0000000..82c9781\n--- /dev/null\n+++ b/config.mak.in\n@@ -0,0 +1,18 @@\n+# git Makefile configuration, included in main Makefile\n+# @configure_input@\n+\n+prefix = @prefix@\n+exec_prefix = @exec_prefix@\n+bindir = @bindir@\n+#gitexecdir = @libexecdir@/git-core/\n+template_dir = @datadir@/git-core/templates/\n+GIT_PYTHON_DIR = @datadir@/git-core/python\n+\n+mandir=@mandir@\n+\n+srcdir = @srcdir@\n+VPATH = @srcdir@\n+\n+export exec_prefix mandir\n+export srcdir VPATH\n+\ndiff --git a/configure.ac b/configure.ac\nnew file mode 100644\nindex 0000000..a54b164\n--- /dev/null\n+++ b/configure.ac\n@@ -0,0 +1,14 @@\n+#                                               -*- Autoconf -*-\n+# Process this file with autoconf to produce a configure script.\n+\n+AC_PREREQ(2.59)\n+AC_INIT([git], [1.4.1], [git@vger.kernel.org])\n+\n+AC_CONFIG_SRCDIR([git.c])\n+\n+config_file=config.mak.autogen\n+config_in=config.mak.in\n+\n+# Output files\n+AC_CONFIG_FILES([\"${config_file}\":\"${config_in}\"]) \n+AC_OUTPUT\n-- \n1.4.0\n"},{"id":"23069","messageId":"200607030202.55919.jnareb@gmail.com","threadId":"4744","inReplyTo":"200607030156.50455.jnareb@gmail.com","subject":"[PATCH 2] autoconf: Use ./configure script in git *.spec file","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-03T00:02:55Z","receivedAt":"2006-07-03T00:02:55Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Signed-off-by: Jakub Narebski <jnareb@gmail.com>\n---\n git.spec.in |    4 ++--\n 1 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/git.spec.in b/git.spec.in\nindex 8ccd256..1abb7d1 100644\n--- a/git.spec.in\n+++ b/git.spec.in\n@@ -74,13 +74,13 @@ Git revision tree visualiser ('gitk')\n %setup -q\n \n %build\n+%configure\n make %{_smp_mflags} CFLAGS=\"$RPM_OPT_FLAGS\" WITH_OWN_SUBPROCESS_PY=YesPlease \\\n-     prefix=%{_prefix} all %{!?_without_docs: doc}\n+     all %{!?_without_docs: doc}\n \n %install\n rm -rf $RPM_BUILD_ROOT\n make %{_smp_mflags} DESTDIR=$RPM_BUILD_ROOT WITH_OWN_SUBPROCESS_PY=YesPlease \\\n-     prefix=%{_prefix} mandir=%{_mandir} \\\n      install %{!?_without_docs: install-doc}\n \n (find $RPM_BUILD_ROOT%{_bindir} -type f | grep -vE \"arch|svn|cvs|email|gitk\" | sed -e s@^$RPM_BUILD_ROOT@@)               > bin-man-doc-files\n-- \n1.4.0\n"},{"id":"23072","messageId":"7vslljzgtu.fsf@assigned-by-dhcp.cox.net","threadId":"4744","inReplyTo":"200607030156.50455.jnareb@gmail.com","subject":"Re: [PATCH 1] autoconf: Use autoconf to write installation directories to config.mak.autogen","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-07-03T00:13:01Z","receivedAt":"2006-07-03T00:13:01Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jakub Narebski <jnareb@gmail.com> writes:\n\n> This is beginning of patch series introducing installation configuration\n> using autoconf (and no other autotools) to git. The idea is to generate\n> config.mak.autogen using ./configure (generated from configure.ac by running\n> autoconf) from config.mak.in, so one can use autoconf as an _alternative_ to\n> ordinary Makefile, and creating one's own config.mak. Local settings in\n> config.mak override generated settings in config.mak.autogen\n\nThanks.  Applied with some trailing whitespace stripped, but not\nmerged to \"next\" yet nor pushed out.\n"},{"id":"23073","messageId":"7vodw7zgt2.fsf@assigned-by-dhcp.cox.net","threadId":"4744","inReplyTo":"200607030202.55919.jnareb@gmail.com","subject":"Re: [PATCH 2] autoconf: Use ./configure script in git *.spec file","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-07-03T00:13:29Z","receivedAt":"2006-07-03T00:13:29Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"I thought this stuff was \"opt-in\", but make rpm now requires\nautoconf?\n"},{"id":"23074","messageId":"e89ock$gks$1@sea.gmane.org","threadId":"4744","inReplyTo":"7vodw7zgt2.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH 2] autoconf: Use ./configure script in git *.spec file","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-03T00:29:34Z","receivedAt":"2006-07-03T00:29:34Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Junio C Hamano wrote:\n\n> I thought this stuff was \"opt-in\", but make rpm now requires\n> autoconf?\n\nOoops. No, git RPM wouldn't need autoconf, neither building git from *.spec\nfile or SRPM. But rpm targed will need autoconf run, and configure script\npacked in tar file (and I think that having configure script in distribution\ntar files will be good idea... but perhaps optionally under NO_AUTOCONF\nor USE_AUTOCONF).\n\nAnd I of course forgot about that. So that is only half of a patch...\n\nBesides that patch was meant as example of using autoconf. \nAutomatic tool (rpmbuild) using automatic tool (./configure script).\n\n\nP.S. we could distribute ./configure script like we distribute preformatted\ndocumentation, in separate 'configure' branch.\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"23078","messageId":"7vslljwiat.fsf@assigned-by-dhcp.cox.net","threadId":"4744","inReplyTo":"e89ock$gks$1@sea.gmane.org","subject":"Re: [PATCH 2] autoconf: Use ./configure script in git *.spec file","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-07-03T02:09:30Z","receivedAt":"2006-07-03T02:09:30Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jakub Narebski <jnareb@gmail.com> writes:\n\n> Junio C Hamano wrote:\n>\n>> I thought this stuff was \"opt-in\", but make rpm now requires\n>> autoconf?\n>\n> Ooops. No, git RPM wouldn't need autoconf, neither building git from *.spec\n> file or SRPM.\n\nI had an impression that your spec.in change made it required.\n\nIt is still somewhat dubious to me if we can keep this \"opt-in\".\nI noticed that it at least lacks a few extra commands to \"clean\"\ntarget of the main Makefile, and adding them by itself is not so\nbad, but who knows what else it would bring in when the series\nfinishes.  I would not be surprised if we start touching *.c and\n*.h files with new autoconf-compatible \"#ifdef HAVE_XXX\" and at\nthat point I will say \"I told you so\".\n\nI am not opposed to giving an alternative, semi-automated way to\nedit config.mak to the users, and if that is our goal, we should\nship the configure script in the source tarball at least, and\nprobably we should have the configure script in the revisions as\nwell.  Using autoconf is not the goal here -- giving ./configure\nas an alternative way to manage config.mak is.\n\nBut if we have autoconf scripts _and_ configure script in\nrevisions, we are talking about version controlling generated\nstuff, and I'd like to avoid that at all cost.\n\nMaybe an alternative is to just add configure script in the\nsource tree _without_ adding any of the autoconf scripts to the\ngit repository.  The users can choose to use that script to\nmanage config.mak but do not have to.  And I do not mind getting\noccasional updates to the configure script in the source tree,\nand I do not care if you build it by hand or use autoconf to\ngenerate it, as long as the configure script is readable,\ndebuggable and maintainable.\n\nThe source to generate that configure script might be autoconf\nscripts and you would want to version control that.  That is\nfine but I think that would be a separate project of yours, and\nyou may call that the git-build-config project.  And I do not\nmind hosting that somewhere under contrib/ area in the git\nrepository in order to give it wider exposure.\n\nThat would end up in the same situation as having the source and\ngenerated files under the version control, but I think at the\nphilosophical level the two are vastly different, in that the\nthings under contrib/ are not part of git.git but are there only\nfor convenience.  I will not be the one who is responsible to\nrun autoconf in there every time we make changes to the system\nand propagate the changes to the main configure script.  The\nconfigure script generated by the end user in contrib/autoconf\nmay not match the toplevel configure script (the end user may\nhave different version of autoconf, for example) but that is not\na bug, as long as the toplevel configure script, which might be\noutput by an older version of autoconf, works correctly.\n\nThe above assumes that the configure script generated by your\nautoconf script is readable and maintainable at all.  Otherwise\nit would not make any sense to have configure under version\ncontrol.\n"},{"id":"23079","messageId":"7vmzbrwi3c.fsf_-_@assigned-by-dhcp.cox.net","threadId":"4744","inReplyTo":"7vslljwiat.fsf@assigned-by-dhcp.cox.net","subject":"contrib/ status","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-07-03T02:13:59Z","receivedAt":"2006-07-03T02:13:59Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <junkio@cox.net> writes:\n\n> ... the\n> things under contrib/ are not part of git.git but are there only\n> for convenience....\n\nThis reminds me of something quite different.  I am getting an\nimpression that enough people have been helped by git-svn and it\nmight be a good idea to have it outside contrib/ area.\n\nOTOH I haven't seen much interest in contrib/colordiff, now\nJohannes's built-in \"diff --color\" is in.  So if people do not\nmind, I'd like to drop it.\n"},{"id":"23090","messageId":"20060703080625.GB29036@hand.yhbt.net","threadId":"4744","inReplyTo":"7vmzbrwi3c.fsf_-_@assigned-by-dhcp.cox.net","subject":"Re: contrib/ status","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2006-07-03T08:06:25Z","receivedAt":"2006-07-03T08:06:25Z","isPatch":false,"sender":{"key":"e@80x24.org","avatar":null},"body":"Junio C Hamano <junkio@cox.net> wrote:\n> Junio C Hamano <junkio@cox.net> writes:\n> \n> > ... the\n> > things under contrib/ are not part of git.git but are there only\n> > for convenience....\n> \n> This reminds me of something quite different.  I am getting an\n> impression that enough people have been helped by git-svn and it\n> might be a good idea to have it outside contrib/ area.\n\nThat would be great.  IMHO, it puts git in a position to supplant\ncentralized SVN usage one developer at a time, making it easier\nto make a gradual transition to git.  Of course, there's also svk\nin a similar position...\n\n-- \nEric Wong\n"},{"id":"23098","messageId":"e8atkm$ipg$1@sea.gmane.org","threadId":"4744","inReplyTo":"7vslljwiat.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH 2] autoconf: Use ./configure script in git *.spec file","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-03T11:05:21Z","receivedAt":"2006-07-03T11:05:21Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"As I see it, we have the following options with respect to autoconf related\nfiles and use of ./configure script\n\n\n1. Use autoconf and ./configure script generated by it as optional way to\nconfigure installation process. Have configure.ac and config.mak.in in main\ndirectory of git.git repository. Do not use ./configure script in\ngit.spec.in, i.e. do not apply this patch... perhaps put _patch_ in the\ncontrib/. Leave changes to *.spec file to distributions, documenting it\nsomewhere.\n\n2. Use autoconf and ./configure script generated by it as optional way to\nconfigure installation process _and_ in git.spec.in, i.e. in the RPM\nbuilding. Ship generated 'configure' script with distribution (source)\ntarball or make patch creating 'configure' script and use it instead in\ngit.spec.in (avoids shipping 'configure' in source tarball). This has the\nconsequence that autoconf would be build dependence for creating RPM at\nleast. Perhaps we can have automatically build configure script in separate\nbranch, similarly to 'man' and 'html branches of git.git.\n\n3. Write our own ./configure script, put it under version control, and put\nautoconf related files in contrib/ as an alternative. Advantages: we can\ncustomize it to git needs and git build process conventions. Disadvantages:\nduplication of work put into autoconf to make generated ./configure script\nportable (which is also the case why atoconf generated shel script\n'configure' is not very readable, and probably should be not under version\ncontrol; html and man documentation aren't either). Use %configure in\ngit.spec.in file. Plan for the future? \n\n\nI am partially to [*1*], if just because I wouldn't need to take care\nautoconf in git. [*2*] has disadvantage in that generated ./configure needs\nto be put in main directory to work, either by hand (which complicates\nusing this way of building and installing git) or by script (which violates\nunsaid rule that contrib/ doesn't interfere in top directory). [*3*] would\nbe probably the best, but it is additional work, duplication of autoconf\nefforts, and need someone (not me) well versed in git compiling woes _and_\nshell script portability.\n\n-- \nJakub Narębski\nShadeHawk on #git\n"},{"id":"23127","messageId":"7v4pxyqwn6.fsf@assigned-by-dhcp.cox.net","threadId":"4744","inReplyTo":"e8atkm$ipg$1@sea.gmane.org","subject":"Re: [PATCH 2] autoconf: Use ./configure script in git *.spec file","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-07-03T20:08:29Z","receivedAt":"2006-07-03T20:08:29Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jakub Narebski <jnareb@gmail.com> writes:\n\n> As I see it, we have the following options with respect to autoconf related\n> files and use of ./configure script\n>\n>\n> 1. Use autoconf and ./configure script generated by it as optional way to\n> configure installation process. Have configure.ac and config.mak.in in main\n> directory of git.git repository. Do not use ./configure script in\n> git.spec.in, i.e. do not apply this patch... perhaps put _patch_ in the\n> contrib/. Leave changes to *.spec file to distributions, documenting it\n> somewhere.\n> ..\n> I am partially to [*1*], if just because I wouldn't need to take care\n> autoconf in git.\n\nI do not understand this \"I wouldn't need to take care autoconf\nin git\" part.  Sorry.\n"},{"id":"23130","messageId":"e8bvgt$9kh$1@sea.gmane.org","threadId":"4744","inReplyTo":"7v4pxyqwn6.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH 2] autoconf: Use ./configure script in git *.spec file","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-03T20:43:39Z","receivedAt":"2006-07-03T20:43:39Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Junio C Hamano wrote:\n\n> Jakub Narebski <jnareb@gmail.com> writes:\n> \n>> As I see it, we have the following options with respect to autoconf\nrelated\n>> files and use of ./configure script\n>>\n>>\n>> 1. Use autoconf and ./configure script generated by it as optional way to\n>> configure installation process. Have configure.ac and config.mak.in in\nmain\n>> directory of git.git repository. Do not use ./configure script in\n>> git.spec.in, i.e. do not apply this patch... perhaps put _patch_ in the\n>> contrib/. Leave changes to *.spec file to distributions, documenting it\n>> somewhere.\n>> ..\n>> I am partially to [*1*], if just because I wouldn't need to take care\n>> autoconf in git.\n> \n> I do not understand this \"I wouldn't need to take care autoconf\n> in git\" part.  Sorry.\n\nGah. It should be: \"if just because there would be no need to have someone\nto take care that ./configure is up-to-date with respect to changes in\nautoconf files\". Sorry for the noise. \n\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"23139","messageId":"7vbqs6pfhi.fsf@assigned-by-dhcp.cox.net","threadId":"4744","inReplyTo":"20060703080625.GB29036@hand.yhbt.net","subject":"Re: contrib/ status","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-07-03T21:04:25Z","receivedAt":"2006-07-03T21:04:25Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Eric Wong <normalperson@yhbt.net> writes:\n\n> Junio C Hamano <junkio@cox.net> wrote:\n>> Junio C Hamano <junkio@cox.net> writes:\n>> \n>> > ... the\n>> > things under contrib/ are not part of git.git but are there only\n>> > for convenience....\n>> \n>> This reminds me of something quite different.  I am getting an\n>> impression that enough people have been helped by git-svn and it\n>> might be a good idea to have it outside contrib/ area.\n>\n> That would be great.  IMHO, it puts git in a position to supplant\n> centralized SVN usage one developer at a time, making it easier\n> to make a gradual transition to git.  Of course, there's also svk\n> in a similar position...\n\nOK, then let's give a few days (it's a long weekend extendeding\ninto July 4th in the US) to let others from the list chime in,\nand then please help me migrate your test scripts and Makefile\npieces into the toplevel project.\n"},{"id":"23216","messageId":"e8dj9u$asn$1@sea.gmane.org","threadId":"4744","inReplyTo":"7vmzbrwi3c.fsf_-_@assigned-by-dhcp.cox.net","subject":"Re: contrib/ status","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-04T11:26:54Z","receivedAt":"2006-07-04T11:26:54Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Junio C Hamano wrote:\n\n> OTOH I haven't seen much interest in contrib/colordiff, now\n> Johannes's built-in \"diff --color\" is in.  So if people do not\n> mind, I'd like to drop it.\n\nSince when, and is it documented? \n\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"23220","messageId":"Pine.LNX.4.63.0607041342150.29667@wbgn013.biozentrum.uni-wuerzburg.de","threadId":"4744","inReplyTo":"e8dj9u$asn$1@sea.gmane.org","subject":"Re: contrib/ status","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2006-07-04T11:43:34Z","receivedAt":"2006-07-04T11:43:34Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 4 Jul 2006, Jakub Narebski wrote:\n\n> Junio C Hamano wrote:\n> \n> > OTOH I haven't seen much interest in contrib/colordiff, now\n> > Johannes's built-in \"diff --color\" is in.  So if people do not\n> > mind, I'd like to drop it.\n> \n> Since when, and is it documented? \n\nTo your first question:\n\n\tcommit cd112cef999c59a7ca2a96c37b197d303a355924\n\tAuthor: Johannes Schindelin <Johannes.Schindelin@gmx.de>\n\tDate:   Tue Jun 13 18:45:44 2006 +0200\n\n\t    diff options: add --color\n\nTo the second:\n\n\tNo.\n\n;-) It should be in diff-options.txt, but then you would have to document \nthe config variables to change the color, too, so I'll leave that task to \nsomebody else and go back to work...\n\nCiao,\nDscho\n"},{"id":"23227","messageId":"200607041609.36329.jnareb@gmail.com","threadId":"4744","inReplyTo":"200607030156.50455.jnareb@gmail.com","subject":"[PATCH 2, proof of concept] autoconf: Use %configure in git.spec, autoconf dependency only in rpm target","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-04T14:09:35Z","receivedAt":"2006-07-04T14:09:35Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"This is __Proof of Concept__ patch, which makes use of predefined \n%configure rpm macro to define install dirs, using autoconf \ngenerated ./configure script.\n\nThis patch introduces dependency on autoconf _only_ for rpm target during\nbuild process. \n---\nProbably there is more portable way of ignoring diff exit status than \nusing '|| true', and probably better way to generate \n\"file creation\"/\"new file\" patch from a working directory (only) file\n(perhaps using git-diff too).\n\n\nSidenote 1: current git.spec.in doesn't allow building RPMS from a dirty\nversion: \n  error: line 3: Illegal char '-' in version: Version:    1.4.1.g1c7c-dirty\nIs it intentional?\n\nSidenote 2: building rpm currently does compilation _twice_, once to generate\ngit-tar-tree, and once in the rpm build (in BuildRoot).\n\n\n Makefile    |    3 +++\n git.spec.in |    6 ++++--\n 2 files changed, 7 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 3c2c257..8ad1a4a 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -721,6 +722,9 @@ dist: git.spec git-tar-tree\n \tgzip -f -9 $(GIT_TARNAME).tar\n \n rpm: dist\n+\tautoconf\n+\tdiff -Nu /dev/null configure > git-add-autoconf-configure.patch || true\n+\tgzip -f -9 git-add-autoconf-configure.patch\n \t$(RPMBUILD) -ta $(GIT_TARNAME).tar.gz\n \n htmldocs = git-htmldocs-$(GIT_VERSION)\ndiff --git a/git.spec.in b/git.spec.in\nindex 8ccd256..9c02803 100644\n--- a/git.spec.in\n+++ b/git.spec.in\n@@ -7,6 +7,7 @@ License: \tGPL\n Group: \t\tDevelopment/Tools\n URL: \t\thttp://kernel.org/pub/software/scm/git/\n Source: \thttp://kernel.org/pub/software/scm/git/%{name}-%{version}.tar.gz\n+Patch0: \tgit-add-autoconf-configure.patch.gz\n BuildRequires:\tzlib-devel >= 1.2, openssl-devel, curl-devel, expat-devel  %{!?_without_docs:, xmlto, asciidoc > 6.0.3}\n BuildRoot:\t%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)\n Requires:\tgit-core, git-svn, git-cvs, git-arch, git-email, gitk\n@@ -72,15 +73,16 @@ Git revision tree visualiser ('gitk')\n \n %prep\n %setup -q\n+%patch0 -p0\n \n %build\n+%configure\n make %{_smp_mflags} CFLAGS=\"$RPM_OPT_FLAGS\" WITH_OWN_SUBPROCESS_PY=YesPlease \\\n-     prefix=%{_prefix} all %{!?_without_docs: doc}\n+     all %{!?_without_docs: doc}\n \n %install\n rm -rf $RPM_BUILD_ROOT\n make %{_smp_mflags} DESTDIR=$RPM_BUILD_ROOT WITH_OWN_SUBPROCESS_PY=YesPlease \\\n-     prefix=%{_prefix} mandir=%{_mandir} \\\n      install %{!?_without_docs: install-doc}\n \n (find $RPM_BUILD_ROOT%{_bindir} -type f | grep -vE \"arch|svn|cvs|email|gitk\" | sed -e s@^$RPM_BUILD_ROOT@@)               > bin-man-doc-files\n-- \n1.4.0\n"},{"id":"23248","messageId":"20060704215643.GA31763@localdomain","threadId":"4744","inReplyTo":"7vbqs6pfhi.fsf@assigned-by-dhcp.cox.net","subject":"Re: contrib/ status","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2006-07-04T21:56:43Z","receivedAt":"2006-07-04T21:56:43Z","isPatch":false,"sender":{"key":"e@80x24.org","avatar":null},"body":"Junio C Hamano <junkio@cox.net> wrote:\n> Eric Wong <normalperson@yhbt.net> writes:\n> \n> > Junio C Hamano <junkio@cox.net> wrote:\n> >> Junio C Hamano <junkio@cox.net> writes:\n> >> \n> >> > ... the\n> >> > things under contrib/ are not part of git.git but are there only\n> >> > for convenience....\n> >> \n> >> This reminds me of something quite different.  I am getting an\n> >> impression that enough people have been helped by git-svn and it\n> >> might be a good idea to have it outside contrib/ area.\n> >\n> > That would be great.  IMHO, it puts git in a position to supplant\n> > centralized SVN usage one developer at a time, making it easier\n> > to make a gradual transition to git.  Of course, there's also svk\n> > in a similar position...\n> \n> OK, then let's give a few days (it's a long weekend extendeding\n> into July 4th in the US) to let others from the list chime in,\n> and then please help me migrate your test scripts and Makefile\n> pieces into the toplevel project.\n\nOk, I'll have a patch ready by then.  I'm not sure which number family I\nshould take for the tests, 8xxx and 9xxx don't have any rules for their\nuse, but the [89]0xx area seems taken.  Would naming them 91xx be good?\n\nAlso, the tests can be extremely slow since they rely on svn, so there\nwill be a way to skip the tests if users are not interested.\n\n-- \nEric Wong\n"},{"id":"23300","messageId":"1152159397.10415.29.camel@dv","threadId":"4744","inReplyTo":"200607041609.36329.jnareb@gmail.com","subject":"Re: [PATCH 2, proof of concept] autoconf: Use %configure in git.spec, autoconf dependency only in rpm target","fromName":"Pavel Roskin","fromEmail":"proski@gnu.org","sentAt":"2006-07-06T04:16:37Z","receivedAt":"2006-07-06T04:16:37Z","isPatch":true,"sender":{"key":"proski@gnu.org","avatar":null},"body":"Hi Jakub,\n\nOn Tue, 2006-07-04 at 16:09 +0200, Jakub Narebski wrote:\n> Sidenote 1: current git.spec.in doesn't allow building RPMS from a dirty\n> version: \n>   error: line 3: Illegal char '-' in version: Version:    1.4.1.g1c7c-dirty\n> Is it intentional?\n\nI don't know if it's intentional, but it's annoying.  The workaround is\nto use StGIT and run \"stg refresh\" before \"make rpm\".\n\n> +Patch0: \tgit-add-autoconf-configure.patch.gz\n\nI don't think we need patches in git.spec.in.  Let's leave it to the\nactual distributions.  If you have a problem with rpm, please submit the\nautoconf support for now and the rest will be cleaned up eventually.\nBesides, the \"next\" branch has different and potentially conflicting\nchanges to git.spec.in for Git.pm support.\n\n-- \nRegards,\nPavel Roskin\n"},{"id":"23305","messageId":"11521700563472-git-send-email-normalperson@yhbt.net","threadId":"4744","inReplyTo":"20060704215643.GA31763@localdomain","subject":"[RFC/PATCH] git-svn: migrate out of contrib","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2006-07-06T07:14:16Z","receivedAt":"2006-07-06T07:14:16Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"Allow NO_SVN_TESTS to be defined to skip git-svn tests.  These\ntests are time-consuming due to SVN being slow, and even more so\nif SVN Perl libraries are not available.\n\nSigned-off-by: Eric Wong <normalperson@yhbt.net>\n---\n .gitignore                                         |    1 \n {contrib/git-svn => Documentation}/git-svn.txt     |    0 \n Makefile                                           |    6 ++-\n contrib/git-svn/.gitignore                         |    4 --\n contrib/git-svn/Makefile                           |   44 --------------------\n contrib/git-svn/git-svn.perl => git-svn.perl       |    2 -\n t/Makefile                                         |   10 +++++\n {contrib/git-svn/t => t}/lib-git-svn.sh            |   18 ++++----\n .../t9100-git-svn-basic.sh                         |    4 ++\n .../t9101-git-svn-props.sh                         |    0 \n .../t9102-git-svn-deep-rmdir.sh                    |    0 \n .../t9103-git-svn-graft-branches.sh                |    0 \n .../t9104-git-svn-follow-parent.sh                 |    0 \n .../t9105-git-svn-commit-diff.sh                   |    0 \n 14 files changed, 28 insertions(+), 61 deletions(-)\n\ndiff --git a/.gitignore b/.gitignore\nindex 7b954d5..9b69a0f 100644\n--- a/.gitignore\n+++ b/.gitignore\n@@ -106,6 +106,7 @@ git-ssh-push\n git-ssh-upload\n git-status\n git-stripspace\n+git-svn\n git-svnimport\n git-symbolic-ref\n git-tag\ndiff --git a/contrib/git-svn/git-svn.txt b/Documentation/git-svn.txt\nsimilarity index 100%\nrename from contrib/git-svn/git-svn.txt\nrename to Documentation/git-svn.txt\ndiff --git a/Makefile b/Makefile\nindex 7fa4a27..2f4dfb8 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -33,6 +33,10 @@ #\n # Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.\n # Enable it on Windows.  By default, symrefs are still used.\n #\n+# Define NO_SVN_TESTS if you want to skip time-consuming SVN interopability\n+# tests.  These tests take up a significant amount of the total test time\n+# but are not needed unless you plan to talk to SVN repos.\n+#\n # Define PPC_SHA1 environment variable when running make to make use of\n # a bundled SHA1 routine optimized for PowerPC.\n #\n@@ -134,7 +138,7 @@ SCRIPT_PERL = \\\n \tgit-shortlog.perl git-rerere.perl \\\n \tgit-annotate.perl git-cvsserver.perl \\\n \tgit-svnimport.perl git-mv.perl git-cvsexportcommit.perl \\\n-\tgit-send-email.perl\n+\tgit-send-email.perl git-svn.perl\n \n SCRIPT_PYTHON = \\\n \tgit-merge-recursive.py\ndiff --git a/contrib/git-svn/.gitignore b/contrib/git-svn/.gitignore\ndeleted file mode 100644\nindex d8d87e3..0000000\n--- a/contrib/git-svn/.gitignore\n+++ /dev/null\n@@ -1,4 +0,0 @@\n-git-svn\n-git-svn.xml\n-git-svn.html\n-git-svn.1\ndiff --git a/contrib/git-svn/Makefile b/contrib/git-svn/Makefile\ndeleted file mode 100644\nindex 7c20946..0000000\n--- a/contrib/git-svn/Makefile\n+++ /dev/null\n@@ -1,44 +0,0 @@\n-all: git-svn\n-\n-prefix?=$(HOME)\n-bindir=$(prefix)/bin\n-mandir=$(prefix)/man\n-man1=$(mandir)/man1\n-INSTALL?=install\n-doc_conf=../../Documentation/asciidoc.conf\n--include ../../config.mak\n-\n-git-svn: git-svn.perl\n-\tcp $< $@\n-\tchmod +x $@\n-\n-install: all\n-\t$(INSTALL) -d -m755 $(DESTDIR)$(bindir)\n-\t$(INSTALL) git-svn $(DESTDIR)$(bindir)\n-\n-install-doc: doc\n-\t$(INSTALL) git-svn.1 $(DESTDIR)$(man1)\n-\n-doc: git-svn.1\n-git-svn.1 : git-svn.xml\n-\txmlto man git-svn.xml\n-git-svn.xml : git-svn.txt\n-\tasciidoc -b docbook -d manpage \\\n-\t\t-f ../../Documentation/asciidoc.conf $<\n-git-svn.html : git-svn.txt\n-\tasciidoc -b xhtml11 -d manpage \\\n-\t\t-f ../../Documentation/asciidoc.conf $<\n-test: git-svn\n-\tcd t && for i in t????-*.sh; do $(SHELL) ./$$i $(TEST_FLAGS); done\n-\n-# we can test NO_OPTIMIZE_COMMITS independently of LC_ALL\n-full-test:\n-\t$(MAKE) test GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C\n-\t$(MAKE) test GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C\n-\t$(MAKE) test GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \\\n-\t\t\t\t\t\t\tLC_ALL=en_US.UTF-8\n-\t$(MAKE) test GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \\\n-\t\t\t\t\t\t\tLC_ALL=en_US.UTF-8\n-\n-clean:\n-\trm -f git-svn *.xml *.html *.1\ndiff --git a/contrib/git-svn/git-svn.perl b/git-svn.perl\nsimilarity index 100%\nrename from contrib/git-svn/git-svn.perl\nrename to git-svn.perl\nindex 8bc4188..145eaa8 100755\n--- a/contrib/git-svn/git-svn.perl\n+++ b/git-svn.perl\n@@ -8,7 +8,7 @@ use vars qw/\t$AUTHOR $VERSION\n \t\t$GIT_SVN_INDEX $GIT_SVN\n \t\t$GIT_DIR $GIT_SVN_DIR $REVDB/;\n $AUTHOR = 'Eric Wong <normalperson@yhbt.net>';\n-$VERSION = '1.1.1-broken';\n+$VERSION = '@@GIT_VERSION@@';\n \n use Cwd qw/abs_path/;\n $GIT_DIR = abs_path($ENV{GIT_DIR} || '.git');\ndiff --git a/t/Makefile b/t/Makefile\nindex 632c55f..8983509 100644\n--- a/t/Makefile\n+++ b/t/Makefile\n@@ -11,6 +11,7 @@ # Shell quote;\n SHELL_PATH_SQ = $(subst ','\\'',$(SHELL_PATH))\n \n T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)\n+TSVN = $(wildcard t91[0-9][0-9]-*.sh)\n \n ifdef NO_PYTHON\n \tGIT_TEST_OPTS += --no-python\n@@ -24,6 +25,15 @@ all: $(T) clean\n clean:\n \trm -fr trash\n \n+# we can test NO_OPTIMIZE_COMMITS independently of LC_ALL\n+full-svn-test:\n+\t$(MAKE) $(TSVN) GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C\n+\t$(MAKE) $(TSVN) GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C\n+\t$(MAKE) $(TSVN) GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \\\n+\t\t\t\t\t\t\tLC_ALL=en_US.UTF-8\n+\t$(MAKE) $(TSVN) GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \\\n+\t\t\t\t\t\t\tLC_ALL=en_US.UTF-8\n+\n .PHONY: $(T) clean\n .NOTPARALLEL:\n \ndiff --git a/contrib/git-svn/t/lib-git-svn.sh b/t/lib-git-svn.sh\nsimilarity index 65%\nrename from contrib/git-svn/t/lib-git-svn.sh\nrename to t/lib-git-svn.sh\nindex d7f972a..450fee8 100644\n--- a/contrib/git-svn/t/lib-git-svn.sh\n+++ b/t/lib-git-svn.sh\n@@ -1,14 +1,12 @@\n-PATH=$PWD/../:$PATH\n-if test -d ../../../t\n+. ./test-lib.sh\n+\n+if test -n \"$NO_SVN_TESTS\"\n then\n-    cd ../../../t\n-else\n-    echo \"Must be run in contrib/git-svn/t\" >&2\n-    exit 1\n+\ttest_expect_success 'skipping git-svn tests, NO_SVN_TESTS defined' :\n+\ttest_done\n+\texit\n fi\n \n-. ./test-lib.sh\n-\n GIT_DIR=$PWD/.git\n GIT_SVN_DIR=$GIT_DIR/svn/git-svn\n SVN_TREE=$GIT_SVN_DIR/svn-tree\n@@ -16,7 +14,7 @@ SVN_TREE=$GIT_SVN_DIR/svn-tree\n svnadmin >/dev/null 2>&1\n if test $? != 1\n then\n-    test_expect_success 'skipping contrib/git-svn test' :\n+    test_expect_success 'skipping git-svn tests, svnadmin not found' :\n     test_done\n     exit\n fi\n@@ -24,7 +22,7 @@ fi\n svn >/dev/null 2>&1\n if test $? != 1\n then\n-    test_expect_success 'skipping contrib/git-svn test' :\n+    test_expect_success 'skipping git-svn tests, svn not found' :\n     test_done\n     exit\n fi\ndiff --git a/contrib/git-svn/t/t0000-contrib-git-svn.sh b/t/t9100-git-svn-basic.sh\nold mode 100644\nnew mode 100755\nsimilarity index 98%\nrename from contrib/git-svn/t/t0000-contrib-git-svn.sh\nrename to t/t9100-git-svn-basic.sh\nindex b482bb6..bf1d638\n--- a/contrib/git-svn/t/t0000-contrib-git-svn.sh\n+++ b/t/t9100-git-svn-basic.sh\n@@ -3,7 +3,7 @@ #\n # Copyright (c) 2006 Eric Wong\n #\n \n-test_description='git-svn tests'\n+test_description='git-svn basic tests'\n GIT_SVN_LC_ALL=$LC_ALL\n \n case \"$LC_ALL\" in\n@@ -17,6 +17,8 @@ esac\n \n . ./lib-git-svn.sh\n \n+echo 'define NO_SVN_TESTS to skip git-svn tests'\n+\n mkdir import\n cd import\n \ndiff --git a/contrib/git-svn/t/t0001-contrib-git-svn-props.sh b/t/t9101-git-svn-props.sh\nold mode 100644\nnew mode 100755\nsimilarity index 100%\nrename from contrib/git-svn/t/t0001-contrib-git-svn-props.sh\nrename to t/t9101-git-svn-props.sh\ndiff --git a/contrib/git-svn/t/t0002-deep-rmdir.sh b/t/t9102-git-svn-deep-rmdir.sh\nold mode 100644\nnew mode 100755\nsimilarity index 100%\nrename from contrib/git-svn/t/t0002-deep-rmdir.sh\nrename to t/t9102-git-svn-deep-rmdir.sh\ndiff --git a/contrib/git-svn/t/t0003-graft-branches.sh b/t/t9103-git-svn-graft-branches.sh\nold mode 100644\nnew mode 100755\nsimilarity index 100%\nrename from contrib/git-svn/t/t0003-graft-branches.sh\nrename to t/t9103-git-svn-graft-branches.sh\ndiff --git a/contrib/git-svn/t/t0004-follow-parent.sh b/t/t9104-git-svn-follow-parent.sh\nold mode 100644\nnew mode 100755\nsimilarity index 100%\nrename from contrib/git-svn/t/t0004-follow-parent.sh\nrename to t/t9104-git-svn-follow-parent.sh\ndiff --git a/contrib/git-svn/t/t0005-commit-diff.sh b/t/t9105-git-svn-commit-diff.sh\nold mode 100644\nnew mode 100755\nsimilarity index 100%\nrename from contrib/git-svn/t/t0005-commit-diff.sh\nrename to t/t9105-git-svn-commit-diff.sh\n-- \n1.4.1.ge255\n"},{"id":"23341","messageId":"7v8xn64658.fsf@assigned-by-dhcp.cox.net","threadId":"4744","inReplyTo":"11521700563472-git-send-email-normalperson@yhbt.net","subject":"Re: [RFC/PATCH] git-svn: migrate out of contrib","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-07-07T00:20:51Z","receivedAt":"2006-07-07T00:20:51Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Overall it looks good.\n\n9104 and 9105 fail when GIT_SVN_NO_LIB is unset and the\nlibsvn-*-perl is not available.  Maybe check this just like you\ncheck and omit tests when svn or svnadmin is unavailable?\n"},{"id":"23345","messageId":"20060707100305.GA13767@soma","threadId":"4744","inReplyTo":"7v8xn64658.fsf@assigned-by-dhcp.cox.net","subject":"[PATCH] git-svn: migrate out of contrib","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2006-07-07T10:03:05Z","receivedAt":"2006-07-07T10:03:05Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"Allow NO_SVN_TESTS to be defined to skip git-svn tests.  These\ntests are time-consuming due to SVN being slow, and even more so\nif SVN Perl libraries are not available.\n\nAlso added a check for SVN::Core so test 910[45] don't fail\nif the user doesn't have those installed, thanks to Junio for\nnoticing this.\n\nSigned-off-by: Eric Wong <normalperson@yhbt.net>\n---\n Junio C Hamano <junkio@cox.net> wrote:\n > Overall it looks good.\n > \n > 9104 and 9105 fail when GIT_SVN_NO_LIB is unset and the\n > libsvn-*-perl is not available.  Maybe check this just like you\n > check and omit tests when svn or svnadmin is unavailable?\n\n Done.  While I was at it, I changed the test != to test -eq\n and brought the similarity below the threshold, which may\n make me want to expand on another patch...\n\n .gitignore                                         |    1 \n {contrib/git-svn => Documentation}/git-svn.txt     |    0 \n Makefile                                           |    6 ++-\n contrib/git-svn/.gitignore                         |    4 --\n contrib/git-svn/Makefile                           |   44 --------------------\n contrib/git-svn/git-svn.perl => git-svn.perl       |    2 -\n t/Makefile                                         |   10 +++++\n {contrib/git-svn/t => t}/lib-git-svn.sh            |   29 ++++++++-----\n .../t9100-git-svn-basic.sh                         |    4 ++\n .../t9101-git-svn-props.sh                         |    0 \n .../t9102-git-svn-deep-rmdir.sh                    |    0 \n .../t9103-git-svn-graft-branches.sh                |    0 \n .../t9104-git-svn-follow-parent.sh                 |    0 \n .../t9105-git-svn-commit-diff.sh                   |    0 \n 14 files changed, 37 insertions(+), 63 deletions(-)\n\ndiff --git a/.gitignore b/.gitignore\nindex 2bcc604..52d61f3 100644\n--- a/.gitignore\n+++ b/.gitignore\n@@ -107,6 +107,7 @@ git-ssh-push\n git-ssh-upload\n git-status\n git-stripspace\n+git-svn\n git-svnimport\n git-symbolic-ref\n git-tag\ndiff --git a/contrib/git-svn/git-svn.txt b/Documentation/git-svn.txt\nsimilarity index 100%\nrename from contrib/git-svn/git-svn.txt\nrename to Documentation/git-svn.txt\ndiff --git a/Makefile b/Makefile\nindex 202f261..a0e90c0 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -33,6 +33,10 @@ #\n # Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.\n # Enable it on Windows.  By default, symrefs are still used.\n #\n+# Define NO_SVN_TESTS if you want to skip time-consuming SVN interopability\n+# tests.  These tests take up a significant amount of the total test time\n+# but are not needed unless you plan to talk to SVN repos.\n+#\n # Define PPC_SHA1 environment variable when running make to make use of\n # a bundled SHA1 routine optimized for PowerPC.\n #\n@@ -134,7 +138,7 @@ SCRIPT_PERL = \\\n \tgit-shortlog.perl git-rerere.perl \\\n \tgit-annotate.perl git-cvsserver.perl \\\n \tgit-svnimport.perl git-mv.perl git-cvsexportcommit.perl \\\n-\tgit-send-email.perl\n+\tgit-send-email.perl git-svn.perl\n \n SCRIPT_PYTHON = \\\n \tgit-merge-recursive.py\ndiff --git a/contrib/git-svn/.gitignore b/contrib/git-svn/.gitignore\ndeleted file mode 100644\nindex d8d87e3..0000000\n--- a/contrib/git-svn/.gitignore\n+++ /dev/null\n@@ -1,4 +0,0 @@\n-git-svn\n-git-svn.xml\n-git-svn.html\n-git-svn.1\ndiff --git a/contrib/git-svn/Makefile b/contrib/git-svn/Makefile\ndeleted file mode 100644\nindex 7c20946..0000000\n--- a/contrib/git-svn/Makefile\n+++ /dev/null\n@@ -1,44 +0,0 @@\n-all: git-svn\n-\n-prefix?=$(HOME)\n-bindir=$(prefix)/bin\n-mandir=$(prefix)/man\n-man1=$(mandir)/man1\n-INSTALL?=install\n-doc_conf=../../Documentation/asciidoc.conf\n--include ../../config.mak\n-\n-git-svn: git-svn.perl\n-\tcp $< $@\n-\tchmod +x $@\n-\n-install: all\n-\t$(INSTALL) -d -m755 $(DESTDIR)$(bindir)\n-\t$(INSTALL) git-svn $(DESTDIR)$(bindir)\n-\n-install-doc: doc\n-\t$(INSTALL) git-svn.1 $(DESTDIR)$(man1)\n-\n-doc: git-svn.1\n-git-svn.1 : git-svn.xml\n-\txmlto man git-svn.xml\n-git-svn.xml : git-svn.txt\n-\tasciidoc -b docbook -d manpage \\\n-\t\t-f ../../Documentation/asciidoc.conf $<\n-git-svn.html : git-svn.txt\n-\tasciidoc -b xhtml11 -d manpage \\\n-\t\t-f ../../Documentation/asciidoc.conf $<\n-test: git-svn\n-\tcd t && for i in t????-*.sh; do $(SHELL) ./$$i $(TEST_FLAGS); done\n-\n-# we can test NO_OPTIMIZE_COMMITS independently of LC_ALL\n-full-test:\n-\t$(MAKE) test GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C\n-\t$(MAKE) test GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C\n-\t$(MAKE) test GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \\\n-\t\t\t\t\t\t\tLC_ALL=en_US.UTF-8\n-\t$(MAKE) test GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \\\n-\t\t\t\t\t\t\tLC_ALL=en_US.UTF-8\n-\n-clean:\n-\trm -f git-svn *.xml *.html *.1\ndiff --git a/contrib/git-svn/git-svn.perl b/git-svn.perl\nsimilarity index 100%\nrename from contrib/git-svn/git-svn.perl\nrename to git-svn.perl\nindex 8bc4188..145eaa8 100755\n--- a/contrib/git-svn/git-svn.perl\n+++ b/git-svn.perl\n@@ -8,7 +8,7 @@ use vars qw/\t$AUTHOR $VERSION\n \t\t$GIT_SVN_INDEX $GIT_SVN\n \t\t$GIT_DIR $GIT_SVN_DIR $REVDB/;\n $AUTHOR = 'Eric Wong <normalperson@yhbt.net>';\n-$VERSION = '1.1.1-broken';\n+$VERSION = '@@GIT_VERSION@@';\n \n use Cwd qw/abs_path/;\n $GIT_DIR = abs_path($ENV{GIT_DIR} || '.git');\ndiff --git a/t/Makefile b/t/Makefile\nindex 632c55f..8983509 100644\n--- a/t/Makefile\n+++ b/t/Makefile\n@@ -11,6 +11,7 @@ # Shell quote;\n SHELL_PATH_SQ = $(subst ','\\'',$(SHELL_PATH))\n \n T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)\n+TSVN = $(wildcard t91[0-9][0-9]-*.sh)\n \n ifdef NO_PYTHON\n \tGIT_TEST_OPTS += --no-python\n@@ -24,6 +25,15 @@ all: $(T) clean\n clean:\n \trm -fr trash\n \n+# we can test NO_OPTIMIZE_COMMITS independently of LC_ALL\n+full-svn-test:\n+\t$(MAKE) $(TSVN) GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C\n+\t$(MAKE) $(TSVN) GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C\n+\t$(MAKE) $(TSVN) GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \\\n+\t\t\t\t\t\t\tLC_ALL=en_US.UTF-8\n+\t$(MAKE) $(TSVN) GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \\\n+\t\t\t\t\t\t\tLC_ALL=en_US.UTF-8\n+\n .PHONY: $(T) clean\n .NOTPARALLEL:\n \ndiff --git a/contrib/git-svn/t/lib-git-svn.sh b/t/lib-git-svn.sh\nsimilarity index 49%\nrename from contrib/git-svn/t/lib-git-svn.sh\nrename to t/lib-git-svn.sh\nindex d7f972a..29a1e72 100644\n--- a/contrib/git-svn/t/lib-git-svn.sh\n+++ b/t/lib-git-svn.sh\n@@ -1,30 +1,35 @@\n-PATH=$PWD/../:$PATH\n-if test -d ../../../t\n+. ./test-lib.sh\n+\n+if test -n \"$NO_SVN_TESTS\"\n then\n-    cd ../../../t\n-else\n-    echo \"Must be run in contrib/git-svn/t\" >&2\n-    exit 1\n+\ttest_expect_success 'skipping git-svn tests, NO_SVN_TESTS defined' :\n+\ttest_done\n+\texit\n fi\n \n-. ./test-lib.sh\n-\n GIT_DIR=$PWD/.git\n GIT_SVN_DIR=$GIT_DIR/svn/git-svn\n SVN_TREE=$GIT_SVN_DIR/svn-tree\n \n+perl -e 'use SVN::Core' >/dev/null 2>&1\n+if test $? -ne 0\n+then\n+   echo 'Perl SVN libraries not found, tests requiring those will be skipped'\n+   GIT_SVN_NO_LIB=1\n+fi\n+\n svnadmin >/dev/null 2>&1\n-if test $? != 1\n+if test $? -ne 1\n then\n-    test_expect_success 'skipping contrib/git-svn test' :\n+    test_expect_success 'skipping git-svn tests, svnadmin not found' :\n     test_done\n     exit\n fi\n \n svn >/dev/null 2>&1\n-if test $? != 1\n+if test $? -ne 1\n then\n-    test_expect_success 'skipping contrib/git-svn test' :\n+    test_expect_success 'skipping git-svn tests, svn not found' :\n     test_done\n     exit\n fi\ndiff --git a/contrib/git-svn/t/t0000-contrib-git-svn.sh b/t/t9100-git-svn-basic.sh\nold mode 100644\nnew mode 100755\nsimilarity index 98%\nrename from contrib/git-svn/t/t0000-contrib-git-svn.sh\nrename to t/t9100-git-svn-basic.sh\nindex b482bb6..bf1d638\n--- a/contrib/git-svn/t/t0000-contrib-git-svn.sh\n+++ b/t/t9100-git-svn-basic.sh\n@@ -3,7 +3,7 @@ #\n # Copyright (c) 2006 Eric Wong\n #\n \n-test_description='git-svn tests'\n+test_description='git-svn basic tests'\n GIT_SVN_LC_ALL=$LC_ALL\n \n case \"$LC_ALL\" in\n@@ -17,6 +17,8 @@ esac\n \n . ./lib-git-svn.sh\n \n+echo 'define NO_SVN_TESTS to skip git-svn tests'\n+\n mkdir import\n cd import\n \ndiff --git a/contrib/git-svn/t/t0001-contrib-git-svn-props.sh b/t/t9101-git-svn-props.sh\nold mode 100644\nnew mode 100755\nsimilarity index 100%\nrename from contrib/git-svn/t/t0001-contrib-git-svn-props.sh\nrename to t/t9101-git-svn-props.sh\ndiff --git a/contrib/git-svn/t/t0002-deep-rmdir.sh b/t/t9102-git-svn-deep-rmdir.sh\nold mode 100644\nnew mode 100755\nsimilarity index 100%\nrename from contrib/git-svn/t/t0002-deep-rmdir.sh\nrename to t/t9102-git-svn-deep-rmdir.sh\ndiff --git a/contrib/git-svn/t/t0003-graft-branches.sh b/t/t9103-git-svn-graft-branches.sh\nold mode 100644\nnew mode 100755\nsimilarity index 100%\nrename from contrib/git-svn/t/t0003-graft-branches.sh\nrename to t/t9103-git-svn-graft-branches.sh\ndiff --git a/contrib/git-svn/t/t0004-follow-parent.sh b/t/t9104-git-svn-follow-parent.sh\nold mode 100644\nnew mode 100755\nsimilarity index 100%\nrename from contrib/git-svn/t/t0004-follow-parent.sh\nrename to t/t9104-git-svn-follow-parent.sh\ndiff --git a/contrib/git-svn/t/t0005-commit-diff.sh b/t/t9105-git-svn-commit-diff.sh\nold mode 100644\nnew mode 100755\nsimilarity index 100%\nrename from contrib/git-svn/t/t0005-commit-diff.sh\nrename to t/t9105-git-svn-commit-diff.sh\n-- \n1.4.1.g3dc65\n"},{"id":"23396","messageId":"e8mesd$8ur$4@sea.gmane.org","threadId":"4744","inReplyTo":"1152159397.10415.29.camel@dv","subject":"Re: [PATCH 2, proof of concept] autoconf: Use %configure in git.spec, autoconf dependency only in rpm target","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-07T20:06:55Z","receivedAt":"2006-07-07T20:06:55Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Pavel Roskin wrote:\n\n> On Tue, 2006-07-04 at 16:09 +0200, Jakub Narebski wrote:\n>\n>> +Patch0:     git-add-autoconf-configure.patch.gz\n> \n> I don't think we need patches in git.spec.in.  Let's leave it to the\n> actual distributions.  If you have a problem with rpm, please submit the\n> autoconf support for now and the rest will be cleaned up eventually.\n> Besides, the \"next\" branch has different and potentially conflicting\n> changes to git.spec.in for Git.pm support.\n\nFirst, it is proof of concept patch, the concept being having autoconf\ndependency _only_ in rpm target.\n\nSecond, it should be \"Source1: autoconf-configure.tar.gz\" or something like\nthat. Using \"Patch0:\" was an ugly hack.\n\nThat to say RPM builders use \"PatchN:\" for patches which didn't made\nupstream; perhaps they make sources more compatibile with distribution RPM\nis prepared for.\n\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"23430","messageId":"1152392835436-git-send-email-jnareb@gmail.com","threadId":"4744","inReplyTo":"200607030156.50455.jnareb@gmail.com","subject":"[PATCH 2] Teach make clean about configure and autoconf","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-08T21:07:07Z","receivedAt":"2006-07-08T21:07:07Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Signed-off-by: Jakub Narebski <jnareb@gmail.com>\n---\nPart of this patch is needed also for handcrafted ./configure script\n(if not already przesent in some patch of those series)\n\n Makefile |    2 ++\n 1 files changed, 2 insertions(+), 0 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 3c2c257..200e58a 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -749,6 +749,8 @@ clean:\n \t\t$(LIB_FILE) $(XDIFF_LIB)\n \trm -f $(ALL_PROGRAMS) $(BUILT_INS) git$X\n \trm -f *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags\n+\trm -rf autom4te.cache configure config.status config.cache\n+\trm -f  config.log config.mak.autogen\n \trm -rf $(GIT_TARNAME) .doc-tmp-dir\n \trm -f $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz\n \trm -f $(htmldocs).tar.gz $(manpages).tar.gz\n-- \n1.4.0\n"},{"id":"23431","messageId":"11523928361444-git-send-email-jnareb@gmail.com","threadId":"4744","inReplyTo":"1152392835436-git-send-email-jnareb@gmail.com","subject":"[RFC/PATCH 3] Copy description of build configuration variables to configure.ac","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-08T21:07:08Z","receivedAt":"2006-07-08T21:07:08Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Copy description of build configuration variables from the commentary\nin the top Makefile (from 'next' branch) to configure.ac, splitting\nthem into \"autoconf\" sections.\n\nThis is to be able to easily check which build/install configuration\nvariables are covered by current configure.ac\n\nSigned-off-by: Jakub Narebski <jnareb@gmail.com>\n---\nPlease correct this if you feel that some variable was put in wrong\nsection in configure.ac\n\n configure.ac |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 1 files changed, 113 insertions(+), 1 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex cecdbe5..6fe5013 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -9,6 +9,118 @@ AC_CONFIG_SRCDIR([git.c])\n config_file=config.mak.autogen\n config_in=config.mak.in\n \n-# Output files\n+\n+## Checks for programs.\n+# Define NO_PYTHON if you want to loose all benefits of the recursive merge.\n+\n+\n+## Checks for libraries.\n+# Define NO_OPENSSL environment variable if you do not have OpenSSL.\n+# This also implies MOZILLA_SHA1.\n+#\n+# Define NO_CURL if you do not have curl installed.  git-http-pull and\n+# git-http-push are not built, and you cannot use http:// and https://\n+# transports.\n+#\n+# Define NO_EXPAT if you do not have expat installed.  git-http-push is\n+# not built, and you cannot push using http:// and https:// transports.\n+#\n+# Define NEEDS_SSL_WITH_CRYPTO if you need -lcrypto with -lssl (Darwin).\n+#\n+# Define NEEDS_LIBICONV if linking with libc is not enough (Darwin).\n+#\n+# Define NEEDS_SOCKET if linking with libc is not enough (SunOS,\n+# Patrick Mauritz).\n+\n+\n+## Checks for header files.\n+\n+\n+## Checks for typedefs, structures, and compiler characteristics.\n+# Define NO_D_INO_IN_DIRENT if you don't have d_ino in your struct dirent.\n+#\n+# Define NO_D_TYPE_IN_DIRENT if your platform defines DT_UNKNOWN but lacks\n+# d_type in struct dirent (latest Cygwin -- will be fixed soonish).\n+#\n+# Define NO_SOCKADDR_STORAGE if your platform does not have struct\n+# sockaddr_storage.\n+\n+\n+## Checks for library functions.\n+# Define NO_STRCASESTR if you don't have strcasestr.\n+#\n+# Define NO_STRLCPY if you don't have strlcpy.\n+#\n+# Define NO_SETENV if you don't have setenv in the C library.\n+#\n+# Define NO_MMAP if you want to avoid mmap.\n+#\n+# Define NO_IPV6 if you lack IPv6 support and getaddrinfo().\n+#\n+# Define NO_ICONV if your libc does not properly support iconv.\n+\n+\n+## Other checks.\n+# Define USE_PIC if you need the main git objects to be built with -fPIC\n+# in order to build and link perl/Git.so.  x86-64 seems to need this.\n+#\n+# Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.\n+# Enable it on Windows.  By default, symrefs are still used.\n+#\n+# Define WITH_OWN_SUBPROCESS_PY if you want to use with python 2.3.\n+#\n+# Define NO_ACCURATE_DIFF if your diff program at least sometimes misses\n+# a missing newline at the end of the file.\n+\n+\n+## Site configuration \n+## --with-PACKAGE[=ARG] and --without-PACKAGE\n+# Define NO_SVN_TESTS if you want to skip time-consuming SVN interopability\n+# tests.  These tests take up a significant amount of the total test time\n+# but are not needed unless you plan to talk to SVN repos.\n+#\n+# Define MOZILLA_SHA1 environment variable when running make to make use of\n+# a bundled SHA1 routine coming from Mozilla. It is GPL'd and should be fast\n+# on non-x86 architectures (e.g. PowerPC), while the OpenSSL version (default\n+# choice) has very fast version optimized for i586.\n+#\n+# Define PPC_SHA1 environment variable when running make to make use of\n+# a bundled SHA1 routine optimized for PowerPC.\n+#\n+# Define ARM_SHA1 environment variable when running make to make use of\n+# a bundled SHA1 routine optimized for ARM.\n+#\n+# Define NO_OPENSSL environment variable if you do not have OpenSSL.\n+# This also implies MOZILLA_SHA1.\n+#\n+# Define NO_CURL if you do not have curl installed.  git-http-pull and\n+# git-http-push are not built, and you cannot use http:// and https://\n+# transports.\n+#\n+# Define CURLDIR=/foo/bar if your curl header and library files are in\n+# /foo/bar/include and /foo/bar/lib directories.\n+#\n+# Define NO_EXPAT if you do not have expat installed.  git-http-push is\n+# not built, and you cannot push using http:// and https:// transports.\n+#\n+# Define NO_MMAP if you want to avoid mmap.\n+#\n+# Define NO_PYTHON if you want to loose all benefits of the recursive merge.\n+#\n+## --enable-FEATURE[=ARG] and --disable-FEATURE\n+# Define COLLISION_CHECK below if you believe that SHA1's\n+# 1461501637330902918203684832716283019655932542976 hashes do not give you\n+# sufficient guarantee that no collisions between objects will ever happen.\n+#\n+# Define USE_NSEC below if you want git to care about sub-second file mtimes\n+# and ctimes. Note that you need recent glibc (at least 2.2.4) for this, and\n+# it will BREAK YOUR LOCAL DIFFS! show-diff and anything using it will likely\n+# randomly break unless your underlying filesystem supports those sub-second\n+# times (my ext3 doesn't).\n+#\n+# Define USE_STDEV below if you want git to care about the underlying device\n+# change being considered an inode change from the update-cache perspective.\n+\n+## Output files\n AC_CONFIG_FILES([\"${config_file}\":\"${config_in}\"]) \n AC_OUTPUT\n-- \n1.4.0\n"},{"id":"23432","messageId":"1152392836910-git-send-email-jnareb@gmail.com","threadId":"4744","inReplyTo":"11523928361444-git-send-email-jnareb@gmail.com","subject":"[RFC/PATCH 4] autoconf: Preparing the way for autodetection","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-08T21:07:09Z","receivedAt":"2006-07-08T21:07:09Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Prepares configure.ac to output autodetected and selected (by using\n--with/--without and --enable/disable parameters to generated\n./configure script) building configuration in \"git style\", i.e. by\nappending appropriate variables to output file config.mak.autogen\n(via temporary file config.mak.append).\n\nSigned-off-by: Jakub Narebski <jnareb@gmail.com>\n---\nThis series of patches tries to build _optional_ automatic build\nand install configuration, using existing build configuration\nvariables, and not making changes to Makefile.\n\nSeries of patches 4-8 adds automatic detection of compilation\nconfiguration (those which I could write easily).\n\n configure.ac |   19 +++++++++++++++++--\n 1 files changed, 17 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 6fe5013..e68d416 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -7,8 +7,19 @@ AC_INIT([git], [1.4.1], [git@vger.kernel\n AC_CONFIG_SRCDIR([git.c])\n \n config_file=config.mak.autogen\n+config_append=config.mak.append\n config_in=config.mak.in\n \n+echo \"# ${config_append}.  Generated by configure.\" > \"${config_append}\"\n+\n+\n+## Definitions of macros\n+# GIT_CONF_APPEND_LINE(LINE)\n+# --------------------------\n+# Append LINE to file ${config_append}\n+AC_DEFUN([GIT_CONF_APPEND_LINE],\n+[echo \"$1\" >> \"${config_append}\"])# GIT_CONF_APPEND_LINE\n+\n \n ## Checks for programs.\n # Define NO_PYTHON if you want to loose all benefits of the recursive merge.\n@@ -73,7 +84,7 @@ # Define NO_ACCURATE_DIFF if your diff p\n # a missing newline at the end of the file.\n \n \n-## Site configuration \n+## Site configuration\n ## --with-PACKAGE[=ARG] and --without-PACKAGE\n # Define NO_SVN_TESTS if you want to skip time-consuming SVN interopability\n # tests.  These tests take up a significant amount of the total test time\n@@ -121,6 +132,10 @@ #\n # Define USE_STDEV below if you want git to care about the underlying device\n # change being considered an inode change from the update-cache perspective.\n \n+\n ## Output files\n-AC_CONFIG_FILES([\"${config_file}\":\"${config_in}\"]) \n+AC_CONFIG_FILES([\"${config_file}\":\"${config_in}\":\"${config_append}\"])\n AC_OUTPUT\n+\n+## Cleanup\n+rm -f \"${config_append}\"\n-- \n1.4.0\n"},{"id":"23433","messageId":"1152392837823-git-send-email-jnareb@gmail.com","threadId":"4744","inReplyTo":"1152392836910-git-send-email-jnareb@gmail.com","subject":"[PATCH 5] autoconf: Checks for typedefs, structures, and compiler characteristics.","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-08T21:07:10Z","receivedAt":"2006-07-08T21:07:10Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"./configure script checks now for existence of the following types,\nstructures, and structure members:\n * dirent.d_ino  in <dirent.h> (NO_D_INO_IN_DIRENT)\n * dirent.d_type in <dirent.h> (NO_D_TYPE_IN_DIRENT)\n * 'struct sockaddr_storage' in <netinet/in.h> (NO_SOCKADDR_STORAGE)\n\nSigned-off-by: Jakub Narebski <jnareb@gmail.com>\n---\nIf on some systems other headers than written above are needed for specified\ntypes definitions, then it should be added to those tests. \n\n configure.ac |   15 +++++++++++++--\n 1 files changed, 13 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex e68d416..cb81258 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -48,13 +48,24 @@ ## Checks for header files.\n \n \n ## Checks for typedefs, structures, and compiler characteristics.\n+AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler characteristics])\n+\n # Define NO_D_INO_IN_DIRENT if you don't have d_ino in your struct dirent.\n-#\n+AC_CHECK_MEMBER(struct dirent.d_ino,[],\n+GIT_CONF_APPEND_LINE(NO_D_INO_IN_DIRENT=YesPlease),\n+[#include <dirent.h>])\n+\n # Define NO_D_TYPE_IN_DIRENT if your platform defines DT_UNKNOWN but lacks\n # d_type in struct dirent (latest Cygwin -- will be fixed soonish).\n-#\n+AC_CHECK_MEMBER(struct dirent.d_type,[],\n+GIT_CONF_APPEND_LINE(NO_D_TYPE_IN_DIRENT=YesPlease),\n+[#include <dirent.h>])\n+\n # Define NO_SOCKADDR_STORAGE if your platform does not have struct\n # sockaddr_storage.\n+AC_CHECK_TYPE(struct sockaddr_storage,[],\n+GIT_CONF_APPEND_LINE(NO_SOCKADDR_STORAGE=YesPlease),\n+[#include <netinet/in.h>])\n \n \n ## Checks for library functions.\n-- \n1.4.0\n"},{"id":"23435","messageId":"11523928373026-git-send-email-jnareb@gmail.com","threadId":"4744","inReplyTo":"1152392837823-git-send-email-jnareb@gmail.com","subject":"[RFC/PATCH 6] autoconf: Checks for some library functions.","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-08T21:07:11Z","receivedAt":"2006-07-08T21:07:11Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"./configure script checks now for the following library functions:\n * strcasestr (NO_STRCASESTR)\n * strlcpy (NO_STRLCPY)\n * setenv (NO_SETENV)\nin default C library and in libraries which have AC_CHECK_LIB done for\nthem.\n\nChecks not implemented:\n * NO_MMAP  - probably only via optional features configuration\n * NO_IPV6  - what does \"lack IPv6 support\" mean?\n * NO_ICONV - what does \"properly support iconv\" mean?\n\nSigned-off-by: Jakub Narebski <jnareb@gmail.com>\n---\nAdded only those checks I was sure how to do in autoconf.\n\nProbably other, marked as not implemented checks either need custom\ntest, or are more suited to site configuration section.\n\n configure.ac |   15 ++++++++++++---\n 1 files changed, 12 insertions(+), 3 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex cb81258..ab6a77a 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -69,12 +69,21 @@ GIT_CONF_APPEND_LINE(NO_SOCKADDR_STORAGE\n \n \n ## Checks for library functions.\n+## (in default C library and libraries checked by AC_CHECK_LIB)\n+AC_MSG_NOTICE([CHECKS for library functions])\n+\n # Define NO_STRCASESTR if you don't have strcasestr.\n-#\n+AC_CHECK_FUNC(strcasestr,[],\n+GIT_CONF_APPEND_LINE(NO_STRCASESTR=YesPlease))\n+\n # Define NO_STRLCPY if you don't have strlcpy.\n-#\n+AC_CHECK_FUNC(strlcpy,[],\n+GIT_CONF_APPEND_LINE(NO_STRLCPY=YesPlease))\n+\n # Define NO_SETENV if you don't have setenv in the C library.\n-#\n+AC_CHECK_FUNC(setenv,[],\n+GIT_CONF_APPEND_LINE(NO_SETENV=YesPlease))\n+\n # Define NO_MMAP if you want to avoid mmap.\n #\n # Define NO_IPV6 if you lack IPv6 support and getaddrinfo().\n-- \n1.4.0\n"},{"id":"23434","messageId":"11523928373299-git-send-email-jnareb@gmail.com","threadId":"4744","inReplyTo":"11523928373026-git-send-email-jnareb@gmail.com","subject":"[RFC/PATCH 7] autoconf: Checks for libraries","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-08T21:07:12Z","receivedAt":"2006-07-08T21:07:12Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"./configure script checks now if the following libraries are present:\n * -lssl    for SHA1_Init (NO_OPENSSL)\n * -lcurl   for curl_easy_setopt (NO_CURL)\n * -lexpat  for XML_ParserCreate (NO_EXPAT)\nIt also checks if adding the following libraries are needed:\n * -lcrypto for SHA1_Init (NEEDS_SSL_WITH_CRYPTO)\n * -liconv  for iconv (NEEDS_LIBICONV)\n * -lsocket for socket (NEEDS_SOCKET)\n\nPolicy: we check also if NEEDS_LIBRARY libraries are present, even if\nthere is no NO_LIBRARY variable.\n\nSigned-off-by: Jakub Narebski <jnareb@gmail.com>\n---\nNeeds checking if correct functions are used for checks.\n\nPolicy might need to be changed, too.\n\n configure.ac |   28 +++++++++++++++++++++-------\n 1 files changed, 21 insertions(+), 7 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex ab6a77a..d938546 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -26,22 +26,36 @@ # Define NO_PYTHON if you want to loose \n \n \n ## Checks for libraries.\n+AC_MSG_NOTICE([CHECKS for libraries])\n+\n # Define NO_OPENSSL environment variable if you do not have OpenSSL.\n-# This also implies MOZILLA_SHA1.\n-#\n+# Define NEEDS_SSL_WITH_CRYPTO if you need -lcrypto with -lssl (Darwin).\n+AC_CHECK_LIB([ssl], [SHA1_Init],[],\n+[AC_CHECK_LIB([crypto], [SHA1_INIT],\n+ GIT_CONF_APPEND_LINE(NEEDS_SSL_WITH_CRYPTO=YesPlease),\n+ GIT_CONF_APPEND_LINE(NO_OPENSSL=YesPlease))])\n+\n # Define NO_CURL if you do not have curl installed.  git-http-pull and\n # git-http-push are not built, and you cannot use http:// and https://\n # transports.\n-#\n+AC_CHECK_LIB([curl], [curl_global_init],[],\n+GIT_CONF_APPEND_LINE(NO_CURL=YesPlease))\n+\n # Define NO_EXPAT if you do not have expat installed.  git-http-push is\n # not built, and you cannot push using http:// and https:// transports.\n-#\n-# Define NEEDS_SSL_WITH_CRYPTO if you need -lcrypto with -lssl (Darwin).\n-#\n+AC_CHECK_LIB([expat], [XML_ParserCreate],[],\n+GIT_CONF_APPEND_LINE(NO_EXPAT=YesPlease))\n+\n # Define NEEDS_LIBICONV if linking with libc is not enough (Darwin).\n-#\n+AC_CHECK_LIB([c], [iconv],[],\n+[AC_CHECK_LIB([iconv],[iconv],\n+ GIT_CONF_APPEND_LINE(NEEDS_LIBICONV=YesPlease),[])])\n+\n # Define NEEDS_SOCKET if linking with libc is not enough (SunOS,\n # Patrick Mauritz).\n+AC_CHECK_LIB([c], [socket],[],\n+[AC_CHECK_LIB([socket],[socket],\n+ GIT_CONF_APPEND_LINE(NEEDS_SOCKET=YesPlease),[])])\n \n \n ## Checks for header files.\n-- \n1.4.0\n"},{"id":"23436","messageId":"11523928372070-git-send-email-jnareb@gmail.com","threadId":"4744","inReplyTo":"11523928373299-git-send-email-jnareb@gmail.com","subject":"[RFC/PATCH 8] autoconf: Checks for some programs","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-08T21:07:13Z","receivedAt":"2006-07-08T21:07:13Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"./configure script checks now for the following programs:\n * CC  - using AC_PROG_CC\n * AR  - using AC_CHECK_TOOL among ar\n * TAR - among gtar, tar\n\nChecks not implemented:\n * INSTALL  - needs install-sh or install.sh in sources\n * RPMBUILD - not known alternatives for rpmbuild\n * PYTHON   - no PYTHON variable in Makefile,\n              has to set NO_PYTHON if not present\n\nSigned-off-by: Jakub Narebski <jnareb@gmail.com>\n---\nIf I remember correctly there was patch adding some very minimal\ninstall script for building git on some architecture.  If it were\nadded, the lines with INSTALL in configure.ac and config.mak.in\nshould be uncommented in.\n\nCurrently it is commented out to ./configure not fail.\n\n config.mak.in |    5 +++++\n configure.ac  |    7 +++++++\n 2 files changed, 12 insertions(+), 0 deletions(-)\n\ndiff --git a/config.mak.in b/config.mak.in\nindex 82c9781..89520eb 100644\n--- a/config.mak.in\n+++ b/config.mak.in\n@@ -1,6 +1,11 @@\n # git Makefile configuration, included in main Makefile\n # @configure_input@\n \n+CC = @CC@\n+AR = @AR@\n+TAR = @TAR@\n+#INSTALL = @INSTALL@\t\t# needs install-sh or install.sh in sources\n+\n prefix = @prefix@\n exec_prefix = @exec_prefix@\n bindir = @bindir@\ndiff --git a/configure.ac b/configure.ac\nindex d938546..56e765f 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -22,6 +22,13 @@ AC_DEFUN([GIT_CONF_APPEND_LINE],\n \n \n ## Checks for programs.\n+AC_MSG_NOTICE([CHECKS for programs])\n+\n+AC_PROG_CC\n+#AC_PROG_INSTALL\t\t# needs install-sh or install.sh in sources\n+AC_CHECK_TOOL(AR, ar, :)\n+AC_CHECK_PROGS(TAR, [gtar tar])\n+\n # Define NO_PYTHON if you want to loose all benefits of the recursive merge.\n \n \n-- \n1.4.0\n"},{"id":"23440","messageId":"11523928383518-git-send-email-jnareb@gmail.com","threadId":"4744","inReplyTo":"11523928372070-git-send-email-jnareb@gmail.com","subject":"[PATCH 9] configure.ac vertical whitespace usage cleanup","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-08T21:07:14Z","receivedAt":"2006-07-08T21:07:14Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":" configure.ac |   29 +++++++++++++++--------------\n 1 files changed, 15 insertions(+), 14 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 56e765f..acea6ce 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -23,41 +23,41 @@ AC_DEFUN([GIT_CONF_APPEND_LINE],\n \n ## Checks for programs.\n AC_MSG_NOTICE([CHECKS for programs])\n-\n+#\n AC_PROG_CC\n #AC_PROG_INSTALL\t\t# needs install-sh or install.sh in sources\n AC_CHECK_TOOL(AR, ar, :)\n AC_CHECK_PROGS(TAR, [gtar tar])\n-\n+#\n # Define NO_PYTHON if you want to loose all benefits of the recursive merge.\n \n \n ## Checks for libraries.\n AC_MSG_NOTICE([CHECKS for libraries])\n-\n+#\n # Define NO_OPENSSL environment variable if you do not have OpenSSL.\n # Define NEEDS_SSL_WITH_CRYPTO if you need -lcrypto with -lssl (Darwin).\n AC_CHECK_LIB([ssl], [SHA1_Init],[],\n [AC_CHECK_LIB([crypto], [SHA1_INIT],\n  GIT_CONF_APPEND_LINE(NEEDS_SSL_WITH_CRYPTO=YesPlease),\n  GIT_CONF_APPEND_LINE(NO_OPENSSL=YesPlease))])\n-\n+#\n # Define NO_CURL if you do not have curl installed.  git-http-pull and\n # git-http-push are not built, and you cannot use http:// and https://\n # transports.\n AC_CHECK_LIB([curl], [curl_global_init],[],\n GIT_CONF_APPEND_LINE(NO_CURL=YesPlease))\n-\n+#\n # Define NO_EXPAT if you do not have expat installed.  git-http-push is\n # not built, and you cannot push using http:// and https:// transports.\n AC_CHECK_LIB([expat], [XML_ParserCreate],[],\n GIT_CONF_APPEND_LINE(NO_EXPAT=YesPlease))\n-\n+#\n # Define NEEDS_LIBICONV if linking with libc is not enough (Darwin).\n AC_CHECK_LIB([c], [iconv],[],\n [AC_CHECK_LIB([iconv],[iconv],\n  GIT_CONF_APPEND_LINE(NEEDS_LIBICONV=YesPlease),[])])\n-\n+#\n # Define NEEDS_SOCKET if linking with libc is not enough (SunOS,\n # Patrick Mauritz).\n AC_CHECK_LIB([c], [socket],[],\n@@ -70,18 +70,18 @@ ## Checks for header files.\n \n ## Checks for typedefs, structures, and compiler characteristics.\n AC_MSG_NOTICE([CHECKS for typedefs, structures, and compiler characteristics])\n-\n+#\n # Define NO_D_INO_IN_DIRENT if you don't have d_ino in your struct dirent.\n AC_CHECK_MEMBER(struct dirent.d_ino,[],\n GIT_CONF_APPEND_LINE(NO_D_INO_IN_DIRENT=YesPlease),\n [#include <dirent.h>])\n-\n+#\n # Define NO_D_TYPE_IN_DIRENT if your platform defines DT_UNKNOWN but lacks\n # d_type in struct dirent (latest Cygwin -- will be fixed soonish).\n AC_CHECK_MEMBER(struct dirent.d_type,[],\n GIT_CONF_APPEND_LINE(NO_D_TYPE_IN_DIRENT=YesPlease),\n [#include <dirent.h>])\n-\n+#\n # Define NO_SOCKADDR_STORAGE if your platform does not have struct\n # sockaddr_storage.\n AC_CHECK_TYPE(struct sockaddr_storage,[],\n@@ -92,19 +92,19 @@ GIT_CONF_APPEND_LINE(NO_SOCKADDR_STORAGE\n ## Checks for library functions.\n ## (in default C library and libraries checked by AC_CHECK_LIB)\n AC_MSG_NOTICE([CHECKS for library functions])\n-\n+#\n # Define NO_STRCASESTR if you don't have strcasestr.\n AC_CHECK_FUNC(strcasestr,[],\n GIT_CONF_APPEND_LINE(NO_STRCASESTR=YesPlease))\n-\n+#\n # Define NO_STRLCPY if you don't have strlcpy.\n AC_CHECK_FUNC(strlcpy,[],\n GIT_CONF_APPEND_LINE(NO_STRLCPY=YesPlease))\n-\n+#\n # Define NO_SETENV if you don't have setenv in the C library.\n AC_CHECK_FUNC(setenv,[],\n GIT_CONF_APPEND_LINE(NO_SETENV=YesPlease))\n-\n+#\n # Define NO_MMAP if you want to avoid mmap.\n #\n # Define NO_IPV6 if you lack IPv6 support and getaddrinfo().\n@@ -178,5 +178,6 @@ ## Output files\n AC_CONFIG_FILES([\"${config_file}\":\"${config_in}\":\"${config_append}\"])\n AC_OUTPUT\n \n+\n ## Cleanup\n rm -f \"${config_append}\"\n-- \n1.4.0\n"},{"id":"23437","messageId":"11523928383501-git-send-email-jnareb@gmail.com","threadId":"4744","inReplyTo":"11523928383518-git-send-email-jnareb@gmail.com","subject":"Comment on this series of patches (PATCH 2-9)","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-08T21:07:15Z","receivedAt":"2006-07-08T21:07:15Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"This concludes easiest part of autodetecting compile configuration\nusing autoconf generated configure script. Patches needs revision by\nsomebody better versed in autoconf than me.\n\nAutodetection TODO: \n* check for Python (NO_PYTHON) and it's version (WITH_OWN_SUBPROCESS_PY)\n  or just \"own subprocess.py\"\n* check for \"IPv6 support\" and getaddrinfo() (NO_IPV6), latter can be\n  easily done in autoconf\n* check for \"proper iconv support\" (NO_ICONV), probably custom check.\n* check for USE_PIC, NO_SYMLINK_HEAD and NO_ACCURATE_DIFF, all\n  needing custom tests.\n* use XXX_SHA1 when NO_OPENSSL, with XXX according to the architecture\n  git is compiled for.\n\nNext planned are series of patches allowing to select optional\nbuild features and packages from configure script... if somebody else\nwouldn't do it (hint, hint).\n\n\nAbout needing autoconf to build git:\n\n1. Currently using autoconf is totally optional, so one can compile\ngit as one used to earlier. This results in non-autoconf conventions\nin configure.ac\n\n2. configure script generated by autoconf can be treated exactly the\nsame like html and man documentation generated by asciidoc: use\nseparate 'configure' branch to store current version of configure\nscript, and add autogeneration of configure script to the same hook\nlike generating html and man documentation.\n\n-- \nJakub Narebski\nShadeHawk on #git\n"},{"id":"23439","messageId":"7virm7pzdb.fsf@assigned-by-dhcp.cox.net","threadId":"4744","inReplyTo":"11523928383501-git-send-email-jnareb@gmail.com","subject":"Re: Comment on this series of patches (PATCH 2-9)","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-07-08T21:20:48Z","receivedAt":"2006-07-08T21:20:48Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jakub Narebski <jnareb@gmail.com> writes:\n\n> This concludes easiest part of autodetecting compile configuration\n> using autoconf generated configure script. Patches needs revision by\n> somebody better versed in autoconf than me.\n\nThanks.  Will take a look.\n\n> About needing autoconf to build git:\n>\n> 1. Currently using autoconf is totally optional, so one can compile\n> git as one used to earlier.\n\nThis should stay this way, at least for now and probably even\nafter merging this into \"master\" someday (we need to get this in\n\"next\" first).\n\n> 2. configure script generated by autoconf can be treated exactly the\n> same like html and man documentation generated by asciidoc: use\n> separate 'configure' branch to store current version of configure\n> script, and add autogeneration of configure script to the same hook\n> like generating html and man documentation.\n\nActually my gut feeling on this is eventually (read: when the\nautoconfiguration is stable enough) we would want to do this the\nother way around --- keep only the generated configure script\nfor public consumption, and interested parties can check out\nautoconf branch to hack on configure.ac and friends when needed.\n\nBut we haven't reached that point yet, so we will see.\n"},{"id":"23460","messageId":"7virm7nq7h.fsf@assigned-by-dhcp.cox.net","threadId":"4744","inReplyTo":"11523928361444-git-send-email-jnareb@gmail.com","subject":"Re: [RFC/PATCH 3] Copy description of build configuration variables to configure.ac","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-07-09T08:21:38Z","receivedAt":"2006-07-09T08:21:38Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jakub Narebski <jnareb@gmail.com> writes:\n\n> Copy description of build configuration variables from the commentary\n> in the top Makefile (from 'next' branch) to configure.ac, splitting\n> them into \"autoconf\" sections.\n\nI do not see much point in this -- they will become out of sync.\n\nEventually when all the --with-* and --enable-* stuff are\nimplemented, you can ask the generated configure what options\nare supported, so I do not think this would help the end user\neither.  In other words it is strictly for supporting\ndevelopers.  I think you are better off making a list of\nsupported and yet to be supported ones in the comment in\nconfigure.ac, and when you want to see if the list got stale\nover time, grep for '^# Define' from the Makefile and match them\nup.\n"},{"id":"23487","messageId":"e8rbuk$je5$1@sea.gmane.org","threadId":"4744","inReplyTo":"7virm7nq7h.fsf@assigned-by-dhcp.cox.net","subject":"Re: [RFC/PATCH 3] Copy description of build configuration variables to configure.ac","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-07-09T16:47:43Z","receivedAt":"2006-07-09T16:47:43Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Junio C Hamano wrote:\n\n> Jakub Narebski <jnareb@gmail.com> writes:\n> \n>> Copy description of build configuration variables from the commentary\n>> in the top Makefile (from 'next' branch) to configure.ac, splitting\n>> them into \"autoconf\" sections.\n> \n> I do not see much point in this -- they will become out of sync.\n\n> [...] I think you are better off making a list of\n> supported and yet to be supported ones in the comment in\n> configure.ac, and when you want to see if the list got stale\n> over time, grep for '^# Define' from the Makefile and match them\n> up.\n\nThis is kind of such a list. Also let me point out that this was in _first_\npatch of the series, as a kind of TODO list.\n\nPerhaps those which are done, and those which are not implemented should be\nmarked differently... \n\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"23491","messageId":"7vwtamecgp.fsf@assigned-by-dhcp.cox.net","threadId":"4744","inReplyTo":"e8rbuk$je5$1@sea.gmane.org","subject":"Re: [RFC/PATCH 3] Copy description of build configuration variables to configure.ac","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-07-09T20:43:18Z","receivedAt":"2006-07-09T20:43:18Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jakub Narebski <jnareb@gmail.com> writes:\n\n>> [...] I think you are better off making a list of\n>> supported and yet to be supported ones in the comment in\n>> configure.ac, and when you want to see if the list got stale\n>> over time, grep for '^# Define' from the Makefile and match them\n>> up.\n>\n> This is kind of such a list. Also let me point out that this was in _first_\n> patch of the series, as a kind of TODO list.\n\nYes, you are right -- I spoke too early without realizing what\nwas going on.  The others build on this TODO list to fill the\ngap rather nicely.\n"}]}