RE: Porting git to HP NonStop
From: Joachim Schmitz <hidden>
Date: 2016-06-15 22:54:30
From: Shawn Pearce [mailto:spearce@spearce.org] Sent: Friday, August 10, 2012 7:38 PM To: Joachim Schmitz Cc: git@vger.kernel.org; rsbecker@nexbridge.com Subject: Re: Porting git to HP NonStop On Fri, Aug 10, 2012 at 10:32 AM, Joachim Schmitz
[off-list ref]
wrote:quoted
quoted
then use `git init --bare` in a new directory to copy in the templates,and see ifquoted
its the template copying code that is making an incorrect copy."git init --bare" gives the same error. It isn't copying any of the subdirectories, only the file 'description'Time to start debugging copy_templates_1 in builtin/init-db.c. :-(
Found the problem: our mkdir(dir,flags) fails with ENOENT when dir ends with a '/'. Not sure whether this us a bug on out platform or just allowed by POSIX and as such a wrong assumption in git though? [shortly after] A bit of googleing revealed that there is a GNUlib solution for this, which claims that at least NetBSD 1.5.2 has the same problem. (http://www.opensource.apple.com/source/gpatch/gpatch-2/patch/mkdir.c) And apparently this has been discussed on the git mailing list too, 2 years ago: http://lists-archives.com/git/728359-git-s-use-of-mkdir-2.html, there's a patch too. For now I've fixed it like this: /usr/local/bin/diff -EBbu ./builtin/init-db.c.orig ./builtin/init-db.c
--- ./builtin/init-db.c.orig 2012-08-19 03:55:50 -0500
+++ ./builtin/init-db.c 2012-08-19 03:39:57 -0500@@ -25,7 +25,16 @@ static void safe_create_dir(const char *dir, int share) { +#ifdef __TANDEM /* our mkdir() can't cope with a trailing '/' */ + char mydir[PATH_MAX]; + + strcpy(mydir,dir); + if (dir[strlen(dir)-1] == '/') + mydir[strlen(dir)-1] = '\0'; + if (mkdir(mydir, 0777) < 0) { +#else if (mkdir(dir, 0777) < 0) { +#endif if (errno != EEXIST) { perror(dir); exit(1);
Bye, Jojo