Thread (8 messages) flat view 8 messages, 3 authors, 2016-06-15

RE: Porting git to HP NonStop

From: Joachim Schmitz <hidden>
Date: 2016-06-15 22:54:27

From: Shawn Pearce [mailto:spearce@spearce.org]
Sent: Friday, August 10, 2012 6:28 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 8:04 AM, Joachim Schmitz [off-list ref]
wrote:
quoted
quoted
- HP NonStop is lacking poll(), git is making quite some use of it.
My Solution: I 'stole' the implementation from GNUlib, which
implements
poll() using select().
Git should either provide its own poll(), not use it at all or resort
to
using
quoted
GNUlib, what do you think?.
poll() is usually better than select() because you don't need to worry
about
FD_SETSIZE. That said, the compat/ directory contains implementations of
some functions. You could contribute a fake poll that uses select if it
was under
the GPLv2.
This is what I did. Just to see now that compat/win32/poll.c has exacly the
same stuff...
 
quoted
quoted
- HP NonStop is lacking getrlimit(), fsync(), setitimer() and memory
mapped IO.
quoted
For now I've commented out the part that used getrlimit() and use a
home brewed implementation for fsync(), setitimer() and mmap().
There is no need to define your own mmap(). Define NO_MMAP=1 in the
Makefile. Git already has its own fake mmap and knows how to write it back
to
disk when making changes.
Ah, excellent. Esp. as our home brewed implementation is pretty primitive.
quoted
quoted
- git makes use of some C99 features or at least feature that are not
availabe in
quoted
C89, like 'inline'
C89 is the default compiler on HP NonStop, but we also habe a c99
compiler, so
quoted
telling configure to search for c99  should help here.
You could also disable inline by #define inline /**/, but this will
probably result
in a slower binary.
Even our C99 compiler doesn't inline, it merly recognizes the keyword and
then warns about (unable to inline...)
But there are other C99 features used too.
quoted
quoted
- HP NonStop doesn't have stat.st_blocks, this is used in
builtin/count-objects.c
quoted
around line 45, not sure yet how to fix that.
IIRC the block count is only used to give the user some notion of how much
disk
was wasted by the repository. You could hack a macro that redefines this
as
st_size.
OK, thanks, will try that.
quoted
quoted
- HP NonStop doesn't have stat.st_?time.nsec, there are several
places
what an
quoted
"#ifdef USE_NSEC" is missing, I can provide a diff if needed
(offending
files: builtin/fetch-pack.c and read-cache.c).
I think this would be appreciated by anyone else that has a similar
problem
where the platform lacks nsec.
Will do.
 
quoted
quoted
- Once compiled and installed, a simple
jojo@\hpitug:/home/jojo/GitHub $
git
quoted
clone git://github.com/git/git.git fails with:
/home/jojo/GitHub/git/.git/branches/: No such file or directory After
creating
quoted
those manually it fails because the directory isn't empty,
catch-22
After some trial'n'error I found that the culprit seems to be the
subdirectories
quoted
branches, hook and info in /usr/local/share/git-core/templates/, if I
remove/rename those, the above command works fine.
I have no idea why that is nor how to properly fix it, anyone out
there?
This sounds like the templates directory was not created correctly during
installation, or is being copied incorrectly during the git init process.
I would
start by comparing the structure and permissions of the templates
directory on
your HP NonStop system to one on a Linux system and see if there was a
mistake made during the installation process. If the directory matches, I
would

jojo@\hpitug:/usr/local/share/git-core/templates $ ls -laR
total 41
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 12:10 .
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 08:19 ..
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 07:26 branches
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 07:26 hooks
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 07:26 info
-rw-r--r--    1 SUPER.SUPER        SUPER         73 Aug 10 07:26 description

./branches:
total 16
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 07:26 .
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 12:10 ..

./hooks:
total 43
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 07:26 .
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 12:10 ..
-rwxr-xr-x    1 SUPER.SUPER        SUPER        452 Aug 10 07:26
applypatch-msg.sample
-rwxr-xr-x    1 SUPER.SUPER        SUPER        896 Aug 10 07:26
commit-msg.sample
-rwxr-xr-x    1 SUPER.SUPER        SUPER        189 Aug 10 07:26
post-update.sample
-rwxr-xr-x    1 SUPER.SUPER        SUPER        398 Aug 10 07:26
pre-applypatch.sample
-rwxr-xr-x    1 SUPER.SUPER        SUPER       1704 Aug 10 07:26
pre-commit.sample
-rwxr-xr-x    1 SUPER.SUPER        SUPER       4957 Aug 10 07:26
pre-rebase.sample
-rwxr-xr-x    1 SUPER.SUPER        SUPER       1251 Aug 10 07:26
prepare-commit-msg.sample
-rwxr-xr-x    1 SUPER.SUPER        SUPER       3611 Aug 10 07:26
update.sample

./info:
total 17
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 07:26 .
drwxr-xr-x    1 SUPER.SUPER        SUPER       4096 Aug 10 12:10 ..
-rw-r--r--    1 SUPER.SUPER        SUPER        240 Aug 10 07:26 exclude
jojo@\hpitug:/usr/local/share/git-core/templates $

SUPER.SUPER on NonStop is equivalent to root in UNIX. Everything is readable
to everybody. Looks OK to me?
then use `git init --bare` in a new directory to copy in the templates,
and see if
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'

Bye, Jojo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help