Closed fire closed 9 years ago
I'm not sure whether libgit2 does support SmartOS or not. @carlosmn or @arrbee will know better.
SmartOS is basically Solaris which usually works (we don't test regularly but it's mosly just another unix system).
From the error messages, looks to be an issue with GCC rather than anything related to the OS itself. It looks like it doesn't understand the function pointer, which is weird since it seems to understand the other one just below it.
I'm stumped as to why it would have an issue with that line. I've just compiled the library with 4.7.4 and it works on a Debian box.
Is it possible that this specific version of libssh2 doesn't define LIBSSH2_USERAUTH_PUBLICKEY_SIGN_FUNC
(or not as it is expected)? Otherwise I couldn't see why gcc should bail on a line 65 in that file (the 0.21.1 release doesn't seem to use this macros anymore)...
When I manually build libgit I get complaints about not finding ssh.
[admin@UUID ~/libgit2]$ mkdir build && cd build
[admin@UUID libgit2/build]$
[admin@UUID ~/libgit2/build]$ cmake ..
-- The C compiler identification is GNU 4.7.3
-- Check for working C compiler: /opt/local/bin/cc
-- Check for working C compiler: /opt/local/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Found OpenSSL: /opt/local/lib/libssl.so;/opt/local/lib/libcrypto.so (found version "1.0.1h")
-- Could NOT find HTTP_Parser (missing: HTTP_PARSER_INCLUDE_DIR HTTP_PARSER_LIBRARY)
-- http-parser was not found or is too old; using bundled 3rd-party sources.
-- Found ZLIB: /opt/local/lib/libz.so (found version "1.2.8")
-- Performing Test IS_FVISIBILITY=HIDDEN_SUPPORTED
-- Performing Test IS_FVISIBILITY=HIDDEN_SUPPORTED - Success
-- Performing Test IS_WNO-MISSING-FIELD-INITIALIZERS_SUPPORTED
-- Performing Test IS_WNO-MISSING-FIELD-INITIALIZERS_SUPPORTED - Success
-- Performing Test IS_WSTRICT-ALIASING=2_SUPPORTED
-- Performing Test IS_WSTRICT-ALIASING=2_SUPPORTED - Success
-- Performing Test IS_WSTRICT-PROTOTYPES_SUPPORTED
-- Performing Test IS_WSTRICT-PROTOTYPES_SUPPORTED - Success
-- Performing Test IS_WDECLARATION-AFTER-STATEMENT_SUPPORTED
-- Performing Test IS_WDECLARATION-AFTER-STATEMENT_SUPPORTED - Success
-- Performing Test IS_WNO-UNUSED-CONST-VARIABLE_SUPPORTED
-- Performing Test IS_WNO-UNUSED-CONST-VARIABLE_SUPPORTED - Failed
-- Performing Test IS_WNO-UNUSED-FUNCTION_SUPPORTED
-- Performing Test IS_WNO-UNUSED-FUNCTION_SUPPORTED - Success
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
-- Found PythonInterp: /opt/local/bin/python (found version "2.7.6")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/admin/libgit2/build
[admin@UUID ~/libgit2/build]$ cmake --build .
Scanning dependencies of target git2
[ 0%] Building C object CMakeFiles/git2.dir/src/zstream.c.o
[ 0%] Building C object CMakeFiles/git2.dir/src/reset.c.o
[ 0%] Building C object CMakeFiles/git2.dir/src/mwindow.c.o
[ 0%] Building C object CMakeFiles/git2.dir/src/hashsig.c.o
[ 0%] Building C object CMakeFiles/git2.dir/src/remote.c.o
[ 1%] Building C object CMakeFiles/git2.dir/src/revwalk.c.o
[ 1%] Building C object CMakeFiles/git2.dir/src/fetch.c.o
[ 1%] Building C object CMakeFiles/git2.dir/src/commit_list.c.o
[ 1%] Building C object CMakeFiles/git2.dir/src/diff.c.o
[ 1%] Building C object CMakeFiles/git2.dir/src/status.c.o
[ 2%] Building C object CMakeFiles/git2.dir/src/branch.c.o
[ 2%] Building C object CMakeFiles/git2.dir/src/diff_driver.c.o
[ 2%] Building C object CMakeFiles/git2.dir/src/ident.c.o
[ 2%] Building C object CMakeFiles/git2.dir/src/message.c.o
[ 2%] Building C object CMakeFiles/git2.dir/src/odb.c.o
[ 3%] Building C object CMakeFiles/git2.dir/src/tree.c.o
[ 3%] Building C object CMakeFiles/git2.dir/src/strmap.c.o
[ 3%] Building C object CMakeFiles/git2.dir/src/oid.c.o
[ 3%] Building C object CMakeFiles/git2.dir/src/diff_file.c.o
[ 3%] Building C object CMakeFiles/git2.dir/src/commit.c.o
[ 4%] Building C object CMakeFiles/git2.dir/src/refs.c.o
[ 4%] Building C object CMakeFiles/git2.dir/src/checkout.c.o
[ 4%] Building C object CMakeFiles/git2.dir/src/tsort.c.o
[ 4%] Building C object CMakeFiles/git2.dir/src/sortedcache.c.o
[ 4%] Building C object CMakeFiles/git2.dir/src/stash.c.o
[ 5%] Building C object CMakeFiles/git2.dir/src/indexer.c.o
[ 5%] Building C object CMakeFiles/git2.dir/src/config_cache.c.o
[ 5%] Building C object CMakeFiles/git2.dir/src/vector.c.o
[ 5%] Building C object CMakeFiles/git2.dir/src/refdb.c.o
[ 5%] Building C object CMakeFiles/git2.dir/src/odb_loose.c.o
[ 5%] Building C object CMakeFiles/git2.dir/src/netops.c.o
[ 6%] Building C object CMakeFiles/git2.dir/src/settings.c.o
[ 6%] Building C object CMakeFiles/git2.dir/src/cherrypick.c.o
[ 6%] Building C object CMakeFiles/git2.dir/src/cache.c.o
[ 6%] Building C object CMakeFiles/git2.dir/src/fileops.c.o
[ 6%] Building C object CMakeFiles/git2.dir/src/crlf.c.o
[ 7%] Building C object CMakeFiles/git2.dir/src/delta-apply.c.o
[ 7%] Building C object CMakeFiles/git2.dir/src/fnmatch.c.o
[ 7%] Building C object CMakeFiles/git2.dir/src/buf_text.c.o
[ 7%] Building C object CMakeFiles/git2.dir/src/transport.c.o
[ 7%] Building C object CMakeFiles/git2.dir/src/merge.c.o
[ 8%] Building C object CMakeFiles/git2.dir/src/ignore.c.o
[ 8%] Building C object CMakeFiles/git2.dir/src/signature.c.o
[ 8%] Building C object CMakeFiles/git2.dir/src/repository.c.o
[ 8%] Building C object CMakeFiles/git2.dir/src/attr.c.o
[ 8%] Building C object CMakeFiles/git2.dir/src/diff_tform.c.o
[ 9%] Building C object CMakeFiles/git2.dir/src/date.c.o
[ 9%] Building C object CMakeFiles/git2.dir/src/diff_stats.c.o
[ 9%] Building C object CMakeFiles/git2.dir/src/config_file.c.o
/home/admin/libgit2/src/config_file.c: In function 'refcounted_strmap_take':
/home/admin/libgit2/src/config_file.c:234:2: warning: statement with no effect [-Wunused-value]
/home/admin/libgit2/src/config_file.c: In function 'config__refresh':
/home/admin/libgit2/src/config_file.c:320:2: warning: statement with no effect [-Wunused-value]
/home/admin/libgit2/src/config_file.c: In function 'git_config_file__ondisk':
/home/admin/libgit2/src/config_file.c:689:2: warning: statement with no effect [-Wunused-value]
/home/admin/libgit2/src/config_file.c: In function 'git_config_file__snapshot':
/home/admin/libgit2/src/config_file.c:789:2: warning: statement with no effect [-Wunused-value]
[ 9%] Building C object CMakeFiles/git2.dir/src/blob.c.o
[ 9%] Building C object CMakeFiles/git2.dir/src/blame_git.c.o
[ 10%] Building C object CMakeFiles/git2.dir/src/revert.c.o
[ 10%] Building C object CMakeFiles/git2.dir/src/tag.c.o
[ 10%] Building C object CMakeFiles/git2.dir/src/reflog.c.o
[ 10%] Building C object CMakeFiles/git2.dir/src/push.c.o
[ 10%] Building C object CMakeFiles/git2.dir/src/sha1_lookup.c.o
[ 11%] Building C object CMakeFiles/git2.dir/src/trace.c.o
[ 11%] Building C object CMakeFiles/git2.dir/src/path.c.o
[ 11%] Building C object CMakeFiles/git2.dir/src/odb_pack.c.o
[ 11%] Building C object CMakeFiles/git2.dir/src/buffer.c.o
[ 11%] Building C object CMakeFiles/git2.dir/src/thread-utils.c.o
[ 11%] Building C object CMakeFiles/git2.dir/src/graph.c.o
[ 12%] Building C object CMakeFiles/git2.dir/src/odb_mempack.c.o
[ 12%] Building C object CMakeFiles/git2.dir/src/errors.c.o
[ 12%] Building C object CMakeFiles/git2.dir/src/object_api.c.o
[ 12%] Building C object CMakeFiles/git2.dir/src/posix.c.o
[ 12%] Building C object CMakeFiles/git2.dir/src/pqueue.c.o
[ 13%] Building C object CMakeFiles/git2.dir/src/fetchhead.c.o
[ 13%] Building C object CMakeFiles/git2.dir/src/refdb_fs.c.o
[ 13%] Building C object CMakeFiles/git2.dir/src/pack-objects.c.o
[ 13%] Building C object CMakeFiles/git2.dir/src/config.c.o
[ 13%] Building C object CMakeFiles/git2.dir/src/diff_print.c.o
[ 14%] Building C object CMakeFiles/git2.dir/src/filter.c.o
[ 14%] Building C object CMakeFiles/git2.dir/src/hash.c.o
[ 14%] Building C object CMakeFiles/git2.dir/src/submodule.c.o
[ 14%] Building C object CMakeFiles/git2.dir/src/index.c.o
[ 14%] Building C object CMakeFiles/git2.dir/src/attr_file.c.o
[ 15%] Building C object CMakeFiles/git2.dir/src/util.c.o
[ 15%] Building C object CMakeFiles/git2.dir/src/clone.c.o
[ 15%] Building C object CMakeFiles/git2.dir/src/tree-cache.c.o
[ 15%] Building C object CMakeFiles/git2.dir/src/diff_patch.c.o
[ 15%] Building C object CMakeFiles/git2.dir/src/pack.c.o
[ 16%] Building C object CMakeFiles/git2.dir/src/notes.c.o
[ 16%] Building C object CMakeFiles/git2.dir/src/blame.c.o
[ 16%] Building C object CMakeFiles/git2.dir/src/pathspec.c.o
[ 16%] Building C object CMakeFiles/git2.dir/src/global.c.o
[ 16%] Building C object CMakeFiles/git2.dir/src/attrcache.c.o
[ 16%] Building C object CMakeFiles/git2.dir/src/delta.c.o
[ 17%] Building C object CMakeFiles/git2.dir/src/sysdir.c.o
[ 17%] Building C object CMakeFiles/git2.dir/src/pool.c.o
[ 17%] Building C object CMakeFiles/git2.dir/src/merge_file.c.o
[ 17%] Building C object CMakeFiles/git2.dir/src/iterator.c.o
[ 17%] Building C object CMakeFiles/git2.dir/src/object.c.o
[ 18%] Building C object CMakeFiles/git2.dir/src/filebuf.c.o
[ 18%] Building C object CMakeFiles/git2.dir/src/refspec.c.o
[ 18%] Building C object CMakeFiles/git2.dir/src/revparse.c.o
[ 18%] Building C object CMakeFiles/git2.dir/src/diff_xdiff.c.o
[ 18%] Building C object CMakeFiles/git2.dir/src/transports/cred_helpers.c.o
[ 19%] Building C object CMakeFiles/git2.dir/src/transports/auth_negotiate.c.o
[ 19%] Building C object CMakeFiles/git2.dir/src/transports/http.c.o
[ 19%] Building C object CMakeFiles/git2.dir/src/transports/smart_pkt.c.o
[ 19%] Building C object CMakeFiles/git2.dir/src/transports/smart_protocol.c.o
[ 19%] Building C object CMakeFiles/git2.dir/src/transports/ssh.c.o
/home/admin/libgit2/src/transports/ssh.c: In function 'ssh_agent_auth':
/home/admin/libgit2/src/transports/ssh.c:259:2: error: unknown type name 'LIBSSH2_AGENT'
/home/admin/libgit2/src/transports/ssh.c:259:2: warning: implicit declaration of function 'libssh2_agent_init' [-Wimplicit-function-declaration]
/home/admin/libgit2/src/transports/ssh.c:259:25: warning: initialization makes pointer from integer without a cast [enabled by default]
/home/admin/libgit2/src/transports/ssh.c:264:2: warning: implicit declaration of function 'libssh2_agent_connect' [-Wimplicit-function-declaration]
/home/admin/libgit2/src/transports/ssh.c:269:2: warning: implicit declaration of function 'libssh2_agent_list_identities' [-Wimplicit-function-declaration]
/home/admin/libgit2/src/transports/ssh.c:275:3: warning: implicit declaration of function 'libssh2_agent_get_identity' [-Wimplicit-function-declaration]
/home/admin/libgit2/src/transports/ssh.c:283:3: warning: implicit declaration of function 'libssh2_agent_userauth' [-Wimplicit-function-declaration]
/home/admin/libgit2/src/transports/ssh.c:292:2: warning: implicit declaration of function 'libssh2_agent_disconnect' [-Wimplicit-function-declaration]
/home/admin/libgit2/src/transports/ssh.c:293:2: warning: implicit declaration of function 'libssh2_agent_free' [-Wimplicit-function-declaration]
/home/admin/libgit2/src/transports/ssh.c: In function '_git_ssh_authenticate_session':
/home/admin/libgit2/src/transports/ssh.c:326:4: warning: implicit declaration of function 'libssh2_userauth_publickey' [-Wimplicit-function-declaration]
/home/admin/libgit2/src/transports/ssh.c:353:9: error: 'LIBSSH2_ERROR_AUTHENTICATION_FAILED' undeclared (first use in this function)
/home/admin/libgit2/src/transports/ssh.c:353:9: note: each undeclared identifier is reported only once for each function it appears in
CMakeFiles/git2.dir/build.make:2403: recipe for target 'CMakeFiles/git2.dir/src/transports/ssh.c.o' failed
gmake[2]: *** [CMakeFiles/git2.dir/src/transports/ssh.c.o] Error 1
CMakeFiles/Makefile2:63: recipe for target 'CMakeFiles/git2.dir/all' failed
gmake[1]: *** [CMakeFiles/git2.dir/all] Error 2
Makefile:126: recipe for target 'all' failed
gmake: *** [all] Error 2
Maybe it isn't finding the ssh headers.
$ cd /opt/local/include/ $ ls libssh2ls libssh2* libssh2_publickey.h libssh2_sftp.h libssh2.h
I'm not sure why though.
What version of libssh2 do you have? If libgit2 is trying to build the ssh transport, then it means it detected that the headers exist, but for whatever reason the include isn't being set correctly. In either case we should have the same error messages when building libgit2 alone or through rugged, since they both use the same build system.
# pkgin se libssh
php55-ssh2-0.12 PHP bindings to the functions of libssh2
php54-ssh2-0.12 PHP bindings to the functions of libssh2
php53-ssh2-0.12 PHP bindings to the functions of libssh2
libssh2-1.2.2nb3 = SSH2 protocol library
libssh-0.54nb3 = SSHv2+v1 protocol library; libssh.org version 0.5.4
=: package is installed and up-to-date
<: package is installed but newer version is available
>: installed package has a greater version than available package
Any luck with this issue? I'm stuck at the same place.
It seems like libssh2 is just too old. The LIBSSH2_AGENT was introduced after v1.2.2. https://github.com/karelia/libssh2/commit/7b351eed36197877160659b31fc8dcc8524f22f8 looks like it was introduced in v1.2.3.
After bumping the version of libssh2 to 1.4.3 libgit2 itself builds just fine. The rugged gem then also install without problems.
@MerlinDMC Thanks for looking into this!
As advertised in #smartos on IRC libssh2 1.4.3 will be part of the 2014Q3 branch of binary packages ... so starting from base/base64 14.3.0 rugged should build out of the box.
I'll update the README here in Rugged (and also in libgit2) to specify the minimum libssh2 version.
I'm closing this due to inactivity. Please feel free to open a new issue if this is still a problem.
I can't install the gem on smartos.