Thread (2 messages) 2 messages, 2 authors, 2019-10-28

Re: COMMENTS: building git on AIX

From: Jonathan Nieder <hidden>
Date: 2019-10-28 21:44:02

Hi,

Michael Felt wrote:
I have, a couple of time, successfully built git for AIX. However, my
prior attempt (version 2.18) - I never got around to finishing and today
with version 2.23.0 - I am unsure how to proceed without a lot of hacking.

Just some comments - long long way from calling anything a bug - just
not as portable as I would have hoped.

The simple issues:

1. The "Makefile" is surprising. I expect to run ./configure (or better,
out-of tree, e.g., ../src/git-2.23.0/configure). Just running OOT
configure does not result in a "Makefile". So, copy source tree to dest
and try again.
See INSTALL:

 [...]
 Alternatively you can use autoconf generated ./configure script to
 set up install paths (via config.mak.autogen), so you can write instead

so the output of the configure script is a config.mak.autogen file.
Keep in mind that most of Git's developers don't use the configure
script, mostly because it's slow.

I like the idea of teaching the configure script to set up a VPATH
build.  Would you be interested in working on that?
2. Makefile assumes gmake. Standard make does not support :: syntax
(fix: install cmake)
I assume that by cmake you mean gmake here.
3. The default CFLAGS contains -Wall. Not all compilers support -Wall.
"Fixed" by adding CFLAGS="-g -O2". I am also undecided on having -g as a
default flag.
Interesting!  That doesn't feel like a recent change:

 $ git log -GWall -- Makefile
[...]
 commit b05701c5b4c7983ef04d8c286c65089596553bd6
 Author: Pavel Roskin [off-list ref]
 Date:   Sat Aug 6 01:36:15 2005 -0400

     Make CFLAGS overridable from make command line.
[...]
 commit 19b2860cba5742ab31fd682b80fefefac19be141
 Author: Linus Torvalds [off-list ref]
 Date:   Fri Apr 8 09:59:28 2005 -0700

     Use "-Wall -O2" for the compiler to get more warnings.

It seems worth calling out in the INSTALL file (and autodetecting in
the configure script).
4. Must have gettext installed, which needs GNU libiconv - sad to have
these libraries as additional dependencies. e.g., bash 4.4 finally
removed the gettext and iconv gnu dependencies. -- FYI!
See INSTALL:

 Set NO_GETTEXT to disable localization support and make Git only
 use English. Under autoconf the configure script will do this
 automatically if it can't find libintl on the system.

Did the part of the configure script that does this break?
5. Another "gcc"? dependency: "git-compat-util.h", line 361.1: 1506-277
(S) Syntax error: possible missing ';'
FIX: add 'CC=xlc_r' to get language extensions
That's

 static inline int noop_core_config(const char *var, const char *value, void *cb)

Does AIX cc have trouble with "static inline"?
6. Needs curl (libcurl and curl.h), but does not check until much later:
FIX install curl; FIX2 add -I flag to find $prefix/include to CFLAGS
(.e.g., CFLAGS="-g -O2 -I/opt/include") - FYI GNU autotools also fail to
include $prefix/include
From INSTALL:

  "libcurl" library is used by git-http-fetch, git-fetch, and, if
  the curl version >= 7.34.0, for git-imap-send.  You might also
  want the "curl" executable for debugging purposes. If you do not
  use http:// or https:// repositories, and do not want to put
  patches into an IMAP mailbox, you do not have to have them
  (use NO_CURL).

Would you be interested in improving the configure script's detection
of this?
7. More stuck here. libssh2 is built by curl, but as a static library. I
could "hack" the libssh2.o file into the linkage, but unclear how well
that will work. Also wonder if libssh2 is "required" or optional. For
curl it has been optional (and I think it still is).
[...]
git-imap-send   imap-send.o http.o common-main.o \
          -L/opt/lib -lcurl -lssh2 -lssh2 -lssl -lcrypto -lldap -llber
-lssl -lcrypto -lz  -lssl  -lcrypto libgit.a xdiff/lib.a  -lz  -liconv
-lintl -lpthread
ld: 0706-006 Cannot find or open library file: -l ssh2
The "-lssh2" comes from "curl-config --libs" output.  It sounds like
your copy of $(which curl-config) should have CURLLIBDIR set but
doesn't.  Should we use "curl-config --static-libs" on AIX instead?

If you know what flags to use to link to curl, you can use
CURL_LDFLAGS to set that instead.
Not sure - if I can help - but do hope this already helps in a (small) way.
Thanks for working to keep Git portable.

Hope that helps,
Jonathan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help