This email describes how I have successfully compiled git on IRIX6.5 with the
native MIPSpro compiler version 7.4.4m and successfully run nearly all of the
tests using the Korn shell.
A series of 7 patches will follow this email. The patches work around a couple
of flaws in the IRIX c99 compiler, and the not-quite-recent build environment.
A build script is provided at the end of this email.
The GIT_SKIP_TESTS environment variable was used to skip tests which still fail.
The tests which still fail do so because of an ancient iconv, with one exception:
the t5000 tests which fail are due to the installed gnu tar being too old.
Two lingering concerns:
1) Building with -Ofast produced an executable which segfaulted and could not
pass the tests.
2) Building without THREADED_DELTA_SEARCH=1 produced an executable which
segfaulted and could not pass the tests.
I have no debugger.
Otherwise, I've been using this executable somewhat and have not experienced any
problems. Maybe it will be useful to others.
Makefile | 12 ++++++++++++
git-compat-util.h | 12 +++++++++++-
t/lib-git-svn.sh | 3 +++
t/t1002-read-tree-m-u-2way.sh | 10 ++++++----
t/t9301-fast-export.sh | 1 -
t/test-lib.sh | 2 +-
templates/Makefile | 2 +-
unpack-trees.c | 3 ++-
8 files changed, 36 insertions(+), 9 deletions(-)
-brandon
#!/bin/sh
GIT_SKIP_TESTS='
t3900.1[0-289] t3900.2[023]
t3901.*
t5000.1[0-24-689] t5000.2[01]
t5100.[56] t5100.1[02]
t9301.4
'
export GIT_SKIP_TESTS
# NO_C99_FORMAT is required since this c99 compiler does not understand %td,
# and probably not %zu.
exec gmake \
CC=c99 \
CFLAGS='-n32 -O2' \
SHELL_PATH='/bin/ksh' \
TAR=gtar \
NO_C99_FORMAT=1 \
NO_CURL=1 \
NO_OPENSSL=1 \
NO_TCLTK=1 \
NO_PERL_MAKEMAKER=1 \
THREADED_DELTA_SEARCH=1
Don't define _XOPEN_SOURCE
Do define _SGI_SOURCE
Declare the _xpg5 versions of *snprintf() along with wrapper macros
Defining _XOPEN_SOURCE prevents many of the common functions and macros
from being defined. _Not_ setting _XOPEN_SOURCE, and instead setting
_SGI_SOURCE, provides all of the XPG4, XPG5, BSD, POSIX functions and
declarations, _BUT_ provides a horribly broken snprintf(). The provided
snprintf() can not be worked around using git's compat workaround, since
SGI's vsnprintf() always returns the number of characters written into
the string, instead of -1 which is what git's compat version expects.
SGI does have a working snprintf(), but it is only provided when
_NO_XOPEN5 evaluates to zero, and this only happens if _XOPEN_SOURCE is
defined which, as mentioned above, prevents many other common functions
and defines. The working *snprintf() functions are named _xpg5_vsnprintf()
and _xpg5_snprintf(), so declarations for these two functions were added
to git-compat-util.h and macros were added for vsnprintf and snprintf to
call these versions.
---
git-compat-util.h | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
The c99 MIPSpro Compiler version 7.4.4m on IRIX 6.5 does not properly
initialize run-time initialized arrays. An array which is initialized with
fewer elements than the length of the array should have the unitialized
elements initialized to zero. This compiler does perform proper
initialization when static initialization parameters are used. So, work
around this by initializing with static elements, followed by a simple
assignment.
---
unpack-trees.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
---
Hmm, I'm thinking that this is probably only an issue when path is
not absolute, since I didn't have any problems installing the
executables. Possibly, a more general fix is to provide the
absolute path here.
-brandon
templates/Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
In ksh, if trap is called within a function with 0 or EXIT as its signal,
then the trap will be executed at the time the function returns. This
causes a problem in the test functions since 'trap - exit' is called
within the test_done function in order to remove the trap which calls
die() on exit. This means trap has to be called from the scripts top-level.
Do so using an alias.
Additionally, there is some strangeness with respect to aliases and
sourced script files; the alias hack doesn't work. So call 'trap - 0'
directly in lib-git-svn.sh before calling the test_done function.
---
t/lib-git-svn.sh | 3 +++
t/test-lib.sh | 2 +-
2 files changed, 4 insertions(+), 1 deletions(-)
@@ -457,6 +456,7 @@ test_done () {esac}+aliastest_done='trap - exit && test_done'# Test the binaries we have just built. The tests are kept in# t/ subdirectory and are run in 'trash directory' subdirectory.
Some old platforms have an old diff which doesn't have the -U option.
'git diff' can be used in its place. Adjust the comparison function to
strip git's additional header lines to make this possible.
Signed-off-by: Brandon Casey <redacted>
---
t/t1002-read-tree-m-u-2way.sh | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
---
This is necessary if t9301.4 is included in the GIT_SKIP_TESTS
environment variable.
-brandon
t/t9301-fast-export.sh | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
I hope these messages threaded correctly for everyone.
They show up correctly on gmane, but not for me in Thunderbird.
For me, the Message-Id of the first message is:
giNXZFTxzY3B65dQob7CwvwwfSKlZpw_60oz81RxU5UN3PsTT_3dMQ@cipher.nrlssc.navy.mil
and this is what I provide to git-send-email.
But when I receive a message sent in such a way back from vger (i.e. using
git-send-email to set In-Reply-To), the In-Reply-To field looks like:
48A9FDCE.3070906@nrlssc.navy.mil
so thunderbird does not nest the replies beneath the original message.
-brandon
I would have liked to see
Subject : patch [0/7] How to compile IRIX 6.5 w/ MIPSpro compiler/ksh
...
Subject : patch [7/7] How to compile IRIX 6.5 w/ MIPSpro compiler/ksh
It would be easier to follow all your patches with all the other email on
the lists.
Thanks,
--
Boyd Gerber [off-list ref]
ZENEZ 1042 East Fort Union #135, Midvale Utah 84047
I would have liked to see
Subject : patch [0/7] How to compile IRIX 6.5 w/ MIPSpro compiler/ksh
...
Subject : patch [7/7] How to compile IRIX 6.5 w/ MIPSpro compiler/ksh
It would be easier to follow all your patches with all the other email on
the lists.
whoops, yeah, I should have done that. Sorry.
-brandon