Undefined symbols on macOS during static build #618

Closed
opened 2020-06-20 12:16:30 -05:00 by nobe4 · 6 comments
nobe4 commented 2020-06-20 12:16:30 -05:00 (Migrated from github.com)

Howdy,
First of, thanks for this work 💌

I'm trying to statically build a binary but it seems that I'm missing a lot of symbols. Googling/installing potential missing packages didn't fix anything. I looked at many different repositories (basically this) but couldn't find anything up-to date or that fixed my issue.

Setup

  • macOS 10.15.5 (19F101)
  • go version go1.13.5 darwin/amd64
  • git2go tags/v30.0.3
  • libgit2 tags/v1.0.0

For non-static tests I use libgit2 v1.0.0 installed this way:

$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/1f92e1cfa2faac4159db3029d6dd4dc3874cc9cd/Formula/libgit2.rb

Code

// main.go
package main

import git "github.com/libgit2/git2go/v30"

func main() {
	if _, err := git.OpenRepository("."); err != nil {
		panic(err)
	}
}
# makefile
LIBGIT_STATIC=$(shell echo "$$GOPATH/src/github.com/libgit2/git2go/static-build/build")

dynamic:
	go build main.go

static:
	PKG_CONFIG_PATH=${LIBGIT_STATIC} \
		go build \
			-installsuffix cgo \
			-ldflags '-extldflags "-static"' main.go

// go.mod
module example.com/a/b

go 1.13

require github.com/libgit2/git2go/v30 v30.0.3

Results for dynamic

With libgit2 installed via brew, results are as expected:

$ make dynamic && ./main
go build main.go
panic: could not find repository from '.'
$ git init && ./main
// no output

Without libgit2 installed, dynamic building fails as expected:

$ ./main
dyld: Library not loaded: /usr/local/opt/libgit2/lib/libgit2.1.0.dylib
  Referenced from: /private/tmp/git2gotest/./main
  Reason: image not found
zsh: abort      ./main

Results for static

Preparation, as explained in here:

$ go get -d github.com/libgit2/git2go
$ cd $GOPATH/src/github.com/libgit2/git2go/
$ git checkout v30.0.3
$ make install-static

There are a few tests failed and some missing elements, but since the build was not aborted, I assumed it was not problematic.

output
./script/build-libgit2-static.sh
-- The C compiler identification is AppleClang 11.0.3.11030032
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2")
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Performing Test HAVE_STRUCT_STAT_ST_MTIM
-- Performing Test HAVE_STRUCT_STAT_ST_MTIM - Failed
-- Performing Test HAVE_STRUCT_STAT_ST_MTIMESPEC
-- Performing Test HAVE_STRUCT_STAT_ST_MTIMESPEC - Success
-- Performing Test HAVE_STRUCT_STAT_MTIME_NSEC
-- Performing Test HAVE_STRUCT_STAT_MTIME_NSEC - Failed
-- Performing Test HAVE_STRUCT_STAT_NSEC
-- Performing Test HAVE_STRUCT_STAT_NSEC - Success
-- Performing Test IS_WALL_SUPPORTED
-- Performing Test IS_WALL_SUPPORTED - Success
-- Performing Test IS_WEXTRA_SUPPORTED
-- Performing Test IS_WEXTRA_SUPPORTED - Success
-- Performing Test IS_WDOCUMENTATION_SUPPORTED
-- Performing Test IS_WDOCUMENTATION_SUPPORTED - Success
-- Performing Test IS_WNO_MISSING_FIELD_INITIALIZERS_SUPPORTED
-- Performing Test IS_WNO_MISSING_FIELD_INITIALIZERS_SUPPORTED - Success
-- Performing Test IS_WSTRICT_ALIASING_SUPPORTED
-- Performing Test IS_WSTRICT_ALIASING_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_WSHIFT_COUNT_OVERFLOW_SUPPORTED
-- Performing Test IS_WSHIFT_COUNT_OVERFLOW_SUPPORTED - Success
-- Performing Test IS_WUNUSED_CONST_VARIABLE_SUPPORTED
-- Performing Test IS_WUNUSED_CONST_VARIABLE_SUPPORTED - Success
-- Performing Test IS_WUNUSED_FUNCTION_SUPPORTED
-- Performing Test IS_WUNUSED_FUNCTION_SUPPORTED - Success
-- Performing Test IS_WINT_CONVERSION_SUPPORTED
-- Performing Test IS_WINT_CONVERSION_SUPPORTED - Success
-- Performing Test IS_WFORMAT_SUPPORTED
-- Performing Test IS_WFORMAT_SUPPORTED - Success
-- Performing Test IS_WFORMAT_SECURITY_SUPPORTED
-- Performing Test IS_WFORMAT_SECURITY_SUPPORTED - Success
-- Performing Test IS_WNO_DOCUMENTATION_DEPRECATED_SYNC_SUPPORTED
-- Performing Test IS_WNO_DOCUMENTATION_DEPRECATED_SYNC_SUPPORTED - Success
-- Looking for futimens
-- Looking for futimens - found
-- Checking prototype qsort_r for HAVE_QSORT_R_BSD - True
-- Checking prototype qsort_r for HAVE_QSORT_R_GNU - False
-- Looking for qsort_s
-- Looking for qsort_s - not found
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - not found
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_INCLUDE_DIR)
-- Found Security /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Security.framework
-- Looking for SSLCreateContext in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Security.framework
-- Looking for SSLCreateContext in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Security.framework - found
-- Found CoreFoundation /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/CoreFoundation.framework
-- Found PCRE: /usr/local/lib/libpcre.dylib
-- Looking for dirent.h
-- Looking for dirent.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for inttypes.h
-- Looking for inttypes.h - found
-- Looking for sys/stat.h
-- Looking for sys/stat.h - found
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Looking for windows.h
-- Looking for windows.h - not found
-- Looking for bcopy
-- Looking for bcopy - found
-- Looking for memmove
-- Looking for memmove - found
-- Looking for strerror
-- Looking for strerror - found
-- Looking for strtoll
-- Looking for strtoll - found
-- Looking for strtoq
-- Looking for strtoq - found
-- Looking for _strtoi64
-- Looking for _strtoi64 - not found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of long long
-- Check size of long long - done
-- Check size of unsigned long long
-- Check size of unsigned long long - done
-- Performing Test IS_WNO_UNUSED_FUNCTION_SUPPORTED
-- Performing Test IS_WNO_UNUSED_FUNCTION_SUPPORTED - Success
-- Performing Test IS_WNO_IMPLICIT_FALLTHROUGH_SUPPORTED
-- Performing Test IS_WNO_IMPLICIT_FALLTHROUGH_SUPPORTED - Success
-- http-parser version 2 was not found or disabled; using bundled 3rd-party sources.
-- Performing Test IS_WIMPLICIT_FALLTHROUGH_1_SUPPORTED
-- Performing Test IS_WIMPLICIT_FALLTHROUGH_1_SUPPORTED - Failed
-- Found ZLIB: /usr/lib/libz.dylib (found version "1.2.11")
-- Checking for module 'libssh2'
--   Package 'libssl', required by 'libssh2', not found
-- LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of the default search path.
-- Checking for module 'heimdal-gssapi'
--   No package 'heimdal-gssapi' found
-- Could NOT find GSSAPI (missing: GSSAPI_LIBRARIES)
-- Found GSS.framework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/GSS.framework
-- Looking for iconv_open
-- Looking for iconv_open - not found
-- Found Iconv: -L/usr/lib -liconv
-- Enabled features:
 * nanoseconds, whether to use sub-second file mtimes and ctimes
 * tracing, tracing support
 * threadsafe, threadsafe support
 * HTTPS, using SecureTransport
 * SHA, using CollisionDetection
 * regex, using bundled PCRE
 * http-parser, http-parser support (bundled)
 * zlib, using system zlib
 * ntlmclient, NTLM authentication support for Unix
 * iconv, iconv encoding conversion support

-- Disabled features:
 * debugpool, debug pool allocator
 * SSH, SSH transport support
 * SPNEGO, SPNEGO authentication support

-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    INCLUDE_INSTALL_DIR
    LIB_INSTALL_DIR


-- Build files have been written to: /Users/n/go/src/github.com/libgit2/git2go/static-build/build
Scanning dependencies of target git2internal
[  1%] Building C object src/CMakeFiles/git2internal.dir/alloc.c.o
[  1%] Building C object src/CMakeFiles/git2internal.dir/allocators/stdalloc.c.o
[  2%] Building C object src/CMakeFiles/git2internal.dir/allocators/win32_crtdbg.c.o
[  2%] Building C object src/CMakeFiles/git2internal.dir/annotated_commit.c.o
[  3%] Building C object src/CMakeFiles/git2internal.dir/apply.c.o
[  3%] Building C object src/CMakeFiles/git2internal.dir/attr.c.o
[  4%] Building C object src/CMakeFiles/git2internal.dir/attr_file.c.o
[  4%] Building C object src/CMakeFiles/git2internal.dir/attrcache.c.o
[  5%] Building C object src/CMakeFiles/git2internal.dir/blame.c.o
[  5%] Building C object src/CMakeFiles/git2internal.dir/blame_git.c.o
[  6%] Building C object src/CMakeFiles/git2internal.dir/blob.c.o
[  7%] Building C object src/CMakeFiles/git2internal.dir/branch.c.o
[  7%] Building C object src/CMakeFiles/git2internal.dir/buf_text.c.o
[  8%] Building C object src/CMakeFiles/git2internal.dir/buffer.c.o
[  8%] Building C object src/CMakeFiles/git2internal.dir/cache.c.o
[  9%] Building C object src/CMakeFiles/git2internal.dir/checkout.c.o
[  9%] Building C object src/CMakeFiles/git2internal.dir/cherrypick.c.o
[ 10%] Building C object src/CMakeFiles/git2internal.dir/clone.c.o
[ 10%] Building C object src/CMakeFiles/git2internal.dir/commit.c.o
[ 11%] Building C object src/CMakeFiles/git2internal.dir/commit_list.c.o
[ 11%] Building C object src/CMakeFiles/git2internal.dir/config.c.o
[ 12%] Building C object src/CMakeFiles/git2internal.dir/config_cache.c.o
[ 12%] Building C object src/CMakeFiles/git2internal.dir/config_entries.c.o
[ 13%] Building C object src/CMakeFiles/git2internal.dir/config_file.c.o
[ 14%] Building C object src/CMakeFiles/git2internal.dir/config_mem.c.o
[ 14%] Building C object src/CMakeFiles/git2internal.dir/config_parse.c.o
[ 15%] Building C object src/CMakeFiles/git2internal.dir/config_snapshot.c.o
[ 15%] Building C object src/CMakeFiles/git2internal.dir/crlf.c.o
[ 16%] Building C object src/CMakeFiles/git2internal.dir/date.c.o
[ 16%] Building C object src/CMakeFiles/git2internal.dir/delta.c.o
[ 17%] Building C object src/CMakeFiles/git2internal.dir/describe.c.o
[ 17%] Building C object src/CMakeFiles/git2internal.dir/diff.c.o
[ 18%] Building C object src/CMakeFiles/git2internal.dir/diff_driver.c.o
[ 18%] Building C object src/CMakeFiles/git2internal.dir/diff_file.c.o
[ 19%] Building C object src/CMakeFiles/git2internal.dir/diff_generate.c.o
[ 20%] Building C object src/CMakeFiles/git2internal.dir/diff_parse.c.o
[ 20%] Building C object src/CMakeFiles/git2internal.dir/diff_print.c.o
[ 21%] Building C object src/CMakeFiles/git2internal.dir/diff_stats.c.o
[ 21%] Building C object src/CMakeFiles/git2internal.dir/diff_tform.c.o
[ 22%] Building C object src/CMakeFiles/git2internal.dir/diff_xdiff.c.o
[ 22%] Building C object src/CMakeFiles/git2internal.dir/errors.c.o
[ 23%] Building C object src/CMakeFiles/git2internal.dir/fetch.c.o
[ 23%] Building C object src/CMakeFiles/git2internal.dir/fetchhead.c.o
[ 24%] Building C object src/CMakeFiles/git2internal.dir/filebuf.c.o
[ 24%] Building C object src/CMakeFiles/git2internal.dir/filter.c.o
[ 25%] Building C object src/CMakeFiles/git2internal.dir/futils.c.o
[ 25%] Building C object src/CMakeFiles/git2internal.dir/global.c.o
[ 26%] Building C object src/CMakeFiles/git2internal.dir/graph.c.o
[ 27%] Building C object src/CMakeFiles/git2internal.dir/hash.c.o
[ 27%] Building C object src/CMakeFiles/git2internal.dir/hashsig.c.o
[ 28%] Building C object src/CMakeFiles/git2internal.dir/ident.c.o
[ 28%] Building C object src/CMakeFiles/git2internal.dir/idxmap.c.o
[ 29%] Building C object src/CMakeFiles/git2internal.dir/ignore.c.o
[ 29%] Building C object src/CMakeFiles/git2internal.dir/index.c.o
[ 30%] Building C object src/CMakeFiles/git2internal.dir/indexer.c.o
[ 30%] Building C object src/CMakeFiles/git2internal.dir/iterator.c.o
[ 31%] Building C object src/CMakeFiles/git2internal.dir/mailmap.c.o
[ 31%] Building C object src/CMakeFiles/git2internal.dir/merge.c.o
[ 32%] Building C object src/CMakeFiles/git2internal.dir/merge_driver.c.o
[ 32%] Building C object src/CMakeFiles/git2internal.dir/merge_file.c.o
[ 33%] Building C object src/CMakeFiles/git2internal.dir/message.c.o
[ 34%] Building C object src/CMakeFiles/git2internal.dir/mwindow.c.o
[ 34%] Building C object src/CMakeFiles/git2internal.dir/net.c.o
[ 35%] Building C object src/CMakeFiles/git2internal.dir/netops.c.o
[ 35%] Building C object src/CMakeFiles/git2internal.dir/notes.c.o
[ 36%] Building C object src/CMakeFiles/git2internal.dir/object.c.o
[ 36%] Building C object src/CMakeFiles/git2internal.dir/object_api.c.o
[ 37%] Building C object src/CMakeFiles/git2internal.dir/odb.c.o
[ 37%] Building C object src/CMakeFiles/git2internal.dir/odb_loose.c.o
[ 38%] Building C object src/CMakeFiles/git2internal.dir/odb_mempack.c.o
[ 38%] Building C object src/CMakeFiles/git2internal.dir/odb_pack.c.o
[ 39%] Building C object src/CMakeFiles/git2internal.dir/offmap.c.o
[ 40%] Building C object src/CMakeFiles/git2internal.dir/oid.c.o
[ 40%] Building C object src/CMakeFiles/git2internal.dir/oidarray.c.o
[ 41%] Building C object src/CMakeFiles/git2internal.dir/oidmap.c.o
[ 41%] Building C object src/CMakeFiles/git2internal.dir/pack-objects.c.o
[ 42%] Building C object src/CMakeFiles/git2internal.dir/pack.c.o
[ 42%] Building C object src/CMakeFiles/git2internal.dir/parse.c.o
[ 43%] Building C object src/CMakeFiles/git2internal.dir/patch.c.o
[ 43%] Building C object src/CMakeFiles/git2internal.dir/patch_generate.c.o
[ 44%] Building C object src/CMakeFiles/git2internal.dir/patch_parse.c.o
[ 44%] Building C object src/CMakeFiles/git2internal.dir/path.c.o
[ 45%] Building C object src/CMakeFiles/git2internal.dir/pathspec.c.o
[ 45%] Building C object src/CMakeFiles/git2internal.dir/pool.c.o
[ 46%] Building C object src/CMakeFiles/git2internal.dir/posix.c.o
[ 47%] Building C object src/CMakeFiles/git2internal.dir/pqueue.c.o
[ 47%] Building C object src/CMakeFiles/git2internal.dir/proxy.c.o
[ 48%] Building C object src/CMakeFiles/git2internal.dir/push.c.o
[ 48%] Building C object src/CMakeFiles/git2internal.dir/reader.c.o
[ 49%] Building C object src/CMakeFiles/git2internal.dir/rebase.c.o
[ 49%] Building C object src/CMakeFiles/git2internal.dir/refdb.c.o
[ 50%] Building C object src/CMakeFiles/git2internal.dir/refdb_fs.c.o
[ 50%] Building C object src/CMakeFiles/git2internal.dir/reflog.c.o
[ 51%] Building C object src/CMakeFiles/git2internal.dir/refs.c.o
[ 51%] Building C object src/CMakeFiles/git2internal.dir/refspec.c.o
[ 52%] Building C object src/CMakeFiles/git2internal.dir/regexp.c.o
[ 52%] Building C object src/CMakeFiles/git2internal.dir/remote.c.o
[ 53%] Building C object src/CMakeFiles/git2internal.dir/repository.c.o
[ 54%] Building C object src/CMakeFiles/git2internal.dir/reset.c.o
[ 54%] Building C object src/CMakeFiles/git2internal.dir/revert.c.o
[ 55%] Building C object src/CMakeFiles/git2internal.dir/revparse.c.o
[ 55%] Building C object src/CMakeFiles/git2internal.dir/revwalk.c.o
[ 56%] Building C object src/CMakeFiles/git2internal.dir/settings.c.o
[ 56%] Building C object src/CMakeFiles/git2internal.dir/signature.c.o
[ 57%] Building C object src/CMakeFiles/git2internal.dir/sortedcache.c.o
[ 57%] Building C object src/CMakeFiles/git2internal.dir/stash.c.o
[ 58%] Building C object src/CMakeFiles/git2internal.dir/status.c.o
[ 58%] Building C object src/CMakeFiles/git2internal.dir/streams/mbedtls.c.o
[ 59%] Building C object src/CMakeFiles/git2internal.dir/streams/openssl.c.o
[ 60%] Building C object src/CMakeFiles/git2internal.dir/streams/registry.c.o
[ 60%] Building C object src/CMakeFiles/git2internal.dir/streams/socket.c.o
[ 61%] Building C object src/CMakeFiles/git2internal.dir/streams/stransport.c.o
[ 61%] Building C object src/CMakeFiles/git2internal.dir/streams/tls.c.o
[ 62%] Building C object src/CMakeFiles/git2internal.dir/strmap.c.o
[ 62%] Building C object src/CMakeFiles/git2internal.dir/submodule.c.o
[ 63%] Building C object src/CMakeFiles/git2internal.dir/sysdir.c.o
[ 63%] Building C object src/CMakeFiles/git2internal.dir/tag.c.o
[ 64%] Building C object src/CMakeFiles/git2internal.dir/thread-utils.c.o
[ 64%] Building C object src/CMakeFiles/git2internal.dir/trace.c.o
[ 65%] Building C object src/CMakeFiles/git2internal.dir/trailer.c.o
[ 65%] Building C object src/CMakeFiles/git2internal.dir/transaction.c.o
[ 66%] Building C object src/CMakeFiles/git2internal.dir/transport.c.o
[ 67%] Building C object src/CMakeFiles/git2internal.dir/transports/auth.c.o
[ 67%] Building C object src/CMakeFiles/git2internal.dir/transports/auth_negotiate.c.o
[ 68%] Building C object src/CMakeFiles/git2internal.dir/transports/auth_ntlm.c.o
[ 68%] Building C object src/CMakeFiles/git2internal.dir/transports/credential.c.o
[ 69%] Building C object src/CMakeFiles/git2internal.dir/transports/credential_helpers.c.o
[ 69%] Building C object src/CMakeFiles/git2internal.dir/transports/git.c.o
[ 70%] Building C object src/CMakeFiles/git2internal.dir/transports/http.c.o
[ 70%] Building C object src/CMakeFiles/git2internal.dir/transports/httpclient.c.o
[ 71%] Building C object src/CMakeFiles/git2internal.dir/transports/local.c.o
[ 71%] Building C object src/CMakeFiles/git2internal.dir/transports/smart.c.o
[ 72%] Building C object src/CMakeFiles/git2internal.dir/transports/smart_pkt.c.o
[ 72%] Building C object src/CMakeFiles/git2internal.dir/transports/smart_protocol.c.o
[ 73%] Building C object src/CMakeFiles/git2internal.dir/transports/ssh.c.o
[ 74%] Building C object src/CMakeFiles/git2internal.dir/transports/winhttp.c.o
[ 74%] Building C object src/CMakeFiles/git2internal.dir/tree-cache.c.o
[ 75%] Building C object src/CMakeFiles/git2internal.dir/tree.c.o
[ 75%] Building C object src/CMakeFiles/git2internal.dir/tsort.c.o
[ 76%] Building C object src/CMakeFiles/git2internal.dir/util.c.o
[ 76%] Building C object src/CMakeFiles/git2internal.dir/varint.c.o
[ 77%] Building C object src/CMakeFiles/git2internal.dir/vector.c.o
[ 77%] Building C object src/CMakeFiles/git2internal.dir/wildmatch.c.o
[ 78%] Building C object src/CMakeFiles/git2internal.dir/worktree.c.o
[ 78%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xdiffi.c.o
[ 79%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xemit.c.o
[ 80%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xhistogram.c.o
[ 80%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xmerge.c.o
[ 81%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xpatience.c.o
[ 81%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xprepare.c.o
[ 82%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xutils.c.o
[ 82%] Building C object src/CMakeFiles/git2internal.dir/zstream.c.o
[ 83%] Building C object src/CMakeFiles/git2internal.dir/unix/map.c.o
[ 83%] Building C object src/CMakeFiles/git2internal.dir/unix/realpath.c.o
[ 84%] Building C object src/CMakeFiles/git2internal.dir/hash/sha1/collisiondetect.c.o
[ 84%] Building C object src/CMakeFiles/git2internal.dir/hash/sha1/sha1dc/sha1.c.o
[ 85%] Building C object src/CMakeFiles/git2internal.dir/hash/sha1/sha1dc/ubc_check.c.o
[ 85%] Built target git2internal
Scanning dependencies of target ntlmclient
[ 86%] Building C object deps/ntlmclient/CMakeFiles/ntlmclient.dir/ntlm.c.o
[ 87%] Building C object deps/ntlmclient/CMakeFiles/ntlmclient.dir/unicode_builtin.c.o
[ 87%] Building C object deps/ntlmclient/CMakeFiles/ntlmclient.dir/util.c.o
[ 88%] Building C object deps/ntlmclient/CMakeFiles/ntlmclient.dir/crypt_commoncrypto.c.o
[ 88%] Built target ntlmclient
Scanning dependencies of target pcre
[ 88%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_byte_order.c.o
[ 89%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_chartables.c.o
[ 89%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_compile.c.o
[ 90%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_config.c.o
[ 90%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_dfa_exec.c.o
[ 91%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_exec.c.o
[ 91%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_fullinfo.c.o
[ 92%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_get.c.o
[ 92%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_globals.c.o
[ 93%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_jit_compile.c.o
[ 94%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_maketables.c.o
[ 94%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_newline.c.o
[ 95%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_ord2utf8.c.o
[ 95%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_refcount.c.o
[ 96%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_string_utils.c.o
[ 96%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_study.c.o
[ 97%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_tables.c.o
[ 97%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_ucd.c.o
[ 98%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_valid_utf8.c.o
[ 98%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_version.c.o
[ 99%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_xclass.c.o
[100%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcreposix.c.o
[100%] Built target pcre
Scanning dependencies of target http-parser
[100%] Building C object deps/http-parser/CMakeFiles/http-parser.dir/http_parser.c.o
[100%] Built target http-parser
Scanning dependencies of target git2
[100%] Linking C static library ../libgit2.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(pcre_string_utils.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(auth_negotiate.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(winhttp.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(pcre_string_utils.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(auth_negotiate.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(winhttp.c.o) has no symbols
[100%] Built target git2
Install the project...
-- Install configuration: "RelWithDebInfo"
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/lib/pkgconfig/libgit2.pc
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/lib/libgit2.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/lib/libgit2.a(pcre_string_utils.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/lib/libgit2.a(auth_negotiate.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/lib/libgit2.a(winhttp.c.o) has no symbols
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/signature.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/oid.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/index.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/ignore.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/attr.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/blame.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/oidarray.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/pack.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/revert.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/version.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/odb.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/status.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/net.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/tag.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/annotated_commit.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/config.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/branch.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/types.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/repository.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/clone.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/global.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/blob.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/cherrypick.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/mailmap.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/submodule.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/errors.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/message.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/merge.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/pathspec.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/tree.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/odb_backend.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/graph.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/describe.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/rebase.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/worktree.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/stash.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/remote.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/strarray.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/reflog.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/cred_helpers.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/buffer.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/diff.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/index.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/config.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/path.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/repository.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/openssl.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/cred.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/merge.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/stream.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/odb_backend.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/reflog.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/diff.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/transport.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/hashsig.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/credential.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/refs.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/filter.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/alloc.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/mempack.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/commit.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/refdb_backend.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/trace.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/common.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/proxy.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/indexer.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/refspec.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/notes.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/cert.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/deprecated.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/transport.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/revwalk.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/patch.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/object.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/checkout.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/apply.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/revparse.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/credential_helpers.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/credential.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/refs.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/reset.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/filter.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/transaction.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/stdint.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/commit.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/refdb.h
-- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2.h
go install --tags "static" ./...
$ make static
PKG_CONFIG_PATH=/Users/n/go/src/github.com/libgit2/git2go/static-build/build \
                go build \
                        -installsuffix cgo \
                        -ldflags '-extldflags "-static"' main.go
# github.com/libgit2/git2go/v30
Undefined symbols for architecture x86_64:
  "_CFDataGetBytePtr", referenced from:
      _stransport_certificate in libgit2.a(stransport.c.o)
... (see below for full output)
output
PKG_CONFIG_PATH=/Users/n/go/src/github.com/libgit2/git2go/static-build/build \
                go build \
                        -installsuffix cgo \
                        -ldflags '-extldflags "-static"' main.go
# github.com/libgit2/git2go/v30
Undefined symbols for architecture x86_64:
  "_CFDataGetBytePtr", referenced from:
      _stransport_certificate in libgit2.a(stransport.c.o)
  "_CFDataGetLength", referenced from:
      _stransport_certificate in libgit2.a(stransport.c.o)
  "_CFRelease", referenced from:
      _stransport_wrap in libgit2.a(stransport.c.o)
      _stransport_connect in libgit2.a(stransport.c.o)
      _stransport_certificate in libgit2.a(stransport.c.o)
      _stransport_read in libgit2.a(stransport.c.o)
      _stransport_write in libgit2.a(stransport.c.o)
      _stransport_close in libgit2.a(stransport.c.o)
      _stransport_free in libgit2.a(stransport.c.o)
      ...
  "_CFStringGetCStringPtr", referenced from:
      _stransport_wrap in libgit2.a(stransport.c.o)
      _stransport_connect in libgit2.a(stransport.c.o)
      _stransport_certificate in libgit2.a(stransport.c.o)
      _stransport_read in libgit2.a(stransport.c.o)
      _stransport_write in libgit2.a(stransport.c.o)
      _stransport_close in libgit2.a(stransport.c.o)
  "_SSLClose", referenced from:
      _stransport_close in libgit2.a(stransport.c.o)
  "_SSLCopyPeerTrust", referenced from:
      _stransport_connect in libgit2.a(stransport.c.o)
      _stransport_certificate in libgit2.a(stransport.c.o)
  "_SSLCreateContext", referenced from:
      _stransport_wrap in libgit2.a(stransport.c.o)
  "_SSLHandshake", referenced from:
      _stransport_connect in libgit2.a(stransport.c.o)
  "_SSLRead", referenced from:
      _stransport_read in libgit2.a(stransport.c.o)
  "_SSLSetConnection", referenced from:
      _stransport_wrap in libgit2.a(stransport.c.o)
  "_SSLSetIOFuncs", referenced from:
      _stransport_wrap in libgit2.a(stransport.c.o)
  "_SSLSetPeerDomainName", referenced from:
      _stransport_wrap in libgit2.a(stransport.c.o)
  "_SSLSetProtocolVersionMax", referenced from:
      _stransport_wrap in libgit2.a(stransport.c.o)
  "_SSLSetProtocolVersionMin", referenced from:
      _stransport_wrap in libgit2.a(stransport.c.o)
  "_SSLSetSessionOption", referenced from:
      _stransport_wrap in libgit2.a(stransport.c.o)
  "_SSLWrite", referenced from:
      _stransport_write in libgit2.a(stransport.c.o)
  "_SecCertificateCopyData", referenced from:
      _stransport_certificate in libgit2.a(stransport.c.o)
  "_SecCopyErrorMessageString", referenced from:
      _stransport_wrap in libgit2.a(stransport.c.o)
      _stransport_connect in libgit2.a(stransport.c.o)
      _stransport_certificate in libgit2.a(stransport.c.o)
      _stransport_read in libgit2.a(stransport.c.o)
      _stransport_write in libgit2.a(stransport.c.o)
      _stransport_close in libgit2.a(stransport.c.o)
  "_SecTrustEvaluate", referenced from:
      _stransport_connect in libgit2.a(stransport.c.o)
  "_SecTrustGetCertificateAtIndex", referenced from:
      _stransport_certificate in libgit2.a(stransport.c.o)
  "_crc32", referenced from:
      _git_indexer_append in libgit2.a(indexer.c.o)
      _git_indexer_commit in libgit2.a(indexer.c.o)
  "_deflate", referenced from:
      _write_deflate in libgit2.a(filebuf.c.o)
      _git_zstream_get_output_chunk in libgit2.a(zstream.c.o)
     (maybe you meant: _git_zstream_deflatebuf)
  "_deflateEnd", referenced from:
      _git_filebuf_cleanup in libgit2.a(filebuf.c.o)
      _git_zstream_free in libgit2.a(zstream.c.o)
      _zstream_buf in libgit2.a(zstream.c.o)
  "_deflateInit_", referenced from:
      _git_filebuf_open_withsize in libgit2.a(filebuf.c.o)
      _git_zstream_init in libgit2.a(zstream.c.o)
  "_deflateReset", referenced from:
      _git_zstream_reset in libgit2.a(zstream.c.o)
  "_iconv", referenced from:
      _git_path_iconv in libgit2.a(path.c.o)
     (maybe you meant: _git_path_iconv_init_precompose, _git_path_iconv , _git_path_iconv_clear )
  "_iconv_close", referenced from:
      _git_path_direach in libgit2.a(path.c.o)
      _git_path_iconv_clear in libgit2.a(path.c.o)
      _git_path_diriter_free in libgit2.a(path.c.o)
      _git_path_dirload in libgit2.a(path.c.o)
  "_iconv_open", referenced from:
      _git_path_direach in libgit2.a(path.c.o)
      _git_path_iconv_init_precompose in libgit2.a(path.c.o)
      _git_path_diriter_init in libgit2.a(path.c.o)
  "_inflate", referenced from:
      _git_zstream_get_output_chunk in libgit2.a(zstream.c.o)
     (maybe you meant: _git_zstream_inflatebuf)
  "_inflateEnd", referenced from:
      _git_zstream_free in libgit2.a(zstream.c.o)
      _zstream_buf in libgit2.a(zstream.c.o)
  "_inflateInit_", referenced from:
      _git_zstream_init in libgit2.a(zstream.c.o)
  "_inflateReset", referenced from:
      _git_zstream_reset in libgit2.a(zstream.c.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [static] Error 2

Do you see anything that can explain why all those symbols are missing?

Thanks,

Howdy, First of, thanks for this work 💌 I'm trying to statically build a binary but it seems that I'm missing a lot of symbols. Googling/installing potential missing packages didn't fix anything. I looked at many different repositories (basically [this](https://github.com/search?p=2&q=git2go+build&type=Code)) but couldn't find anything up-to date or that fixed my issue. ## Setup - `macOS 10.15.5 (19F101)` - `go version go1.13.5 darwin/amd64` - `git2go tags/v30.0.3` - `libgit2 tags/v1.0.0` For non-static tests I use `libgit2 v1.0.0` installed this way: ```zsh $ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/1f92e1cfa2faac4159db3029d6dd4dc3874cc9cd/Formula/libgit2.rb ``` ## Code ```golang // main.go package main import git "github.com/libgit2/git2go/v30" func main() { if _, err := git.OpenRepository("."); err != nil { panic(err) } } ``` ```makefile # makefile LIBGIT_STATIC=$(shell echo "$$GOPATH/src/github.com/libgit2/git2go/static-build/build") dynamic: go build main.go static: PKG_CONFIG_PATH=${LIBGIT_STATIC} \ go build \ -installsuffix cgo \ -ldflags '-extldflags "-static"' main.go ``` ```golang // go.mod module example.com/a/b go 1.13 require github.com/libgit2/git2go/v30 v30.0.3 ``` ## Results for `dynamic` With `libgit2` installed via `brew`, results are as expected: ```zsh $ make dynamic && ./main go build main.go panic: could not find repository from '.' $ git init && ./main // no output ``` Without `libgit2` installed, `dynamic` building fails as expected: ```zsh $ ./main dyld: Library not loaded: /usr/local/opt/libgit2/lib/libgit2.1.0.dylib Referenced from: /private/tmp/git2gotest/./main Reason: image not found zsh: abort ./main ``` ## Results for `static` Preparation, as explained in [here](https://github.com/libgit2/git2go/blob/v30.0.3/README.md#master-branch-or-static-linking): ```zsh $ go get -d github.com/libgit2/git2go $ cd $GOPATH/src/github.com/libgit2/git2go/ $ git checkout v30.0.3 $ make install-static ``` There are a few tests failed and some missing elements, but since the build was not aborted, I assumed it was not problematic. <details> <summary>output</summary> ``` ./script/build-libgit2-static.sh -- The C compiler identification is AppleClang 11.0.3.11030032 -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2") -- Looking for pthread.h -- Looking for pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE -- Performing Test HAVE_STRUCT_STAT_ST_MTIM -- Performing Test HAVE_STRUCT_STAT_ST_MTIM - Failed -- Performing Test HAVE_STRUCT_STAT_ST_MTIMESPEC -- Performing Test HAVE_STRUCT_STAT_ST_MTIMESPEC - Success -- Performing Test HAVE_STRUCT_STAT_MTIME_NSEC -- Performing Test HAVE_STRUCT_STAT_MTIME_NSEC - Failed -- Performing Test HAVE_STRUCT_STAT_NSEC -- Performing Test HAVE_STRUCT_STAT_NSEC - Success -- Performing Test IS_WALL_SUPPORTED -- Performing Test IS_WALL_SUPPORTED - Success -- Performing Test IS_WEXTRA_SUPPORTED -- Performing Test IS_WEXTRA_SUPPORTED - Success -- Performing Test IS_WDOCUMENTATION_SUPPORTED -- Performing Test IS_WDOCUMENTATION_SUPPORTED - Success -- Performing Test IS_WNO_MISSING_FIELD_INITIALIZERS_SUPPORTED -- Performing Test IS_WNO_MISSING_FIELD_INITIALIZERS_SUPPORTED - Success -- Performing Test IS_WSTRICT_ALIASING_SUPPORTED -- Performing Test IS_WSTRICT_ALIASING_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_WSHIFT_COUNT_OVERFLOW_SUPPORTED -- Performing Test IS_WSHIFT_COUNT_OVERFLOW_SUPPORTED - Success -- Performing Test IS_WUNUSED_CONST_VARIABLE_SUPPORTED -- Performing Test IS_WUNUSED_CONST_VARIABLE_SUPPORTED - Success -- Performing Test IS_WUNUSED_FUNCTION_SUPPORTED -- Performing Test IS_WUNUSED_FUNCTION_SUPPORTED - Success -- Performing Test IS_WINT_CONVERSION_SUPPORTED -- Performing Test IS_WINT_CONVERSION_SUPPORTED - Success -- Performing Test IS_WFORMAT_SUPPORTED -- Performing Test IS_WFORMAT_SUPPORTED - Success -- Performing Test IS_WFORMAT_SECURITY_SUPPORTED -- Performing Test IS_WFORMAT_SECURITY_SUPPORTED - Success -- Performing Test IS_WNO_DOCUMENTATION_DEPRECATED_SYNC_SUPPORTED -- Performing Test IS_WNO_DOCUMENTATION_DEPRECATED_SYNC_SUPPORTED - Success -- Looking for futimens -- Looking for futimens - found -- Checking prototype qsort_r for HAVE_QSORT_R_BSD - True -- Checking prototype qsort_r for HAVE_QSORT_R_GNU - False -- Looking for qsort_s -- Looking for qsort_s - not found -- Looking for clock_gettime in rt -- Looking for clock_gettime in rt - not found -- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_INCLUDE_DIR) -- Found Security /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Security.framework -- Looking for SSLCreateContext in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Security.framework -- Looking for SSLCreateContext in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Security.framework - found -- Found CoreFoundation /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/CoreFoundation.framework -- Found PCRE: /usr/local/lib/libpcre.dylib -- Looking for dirent.h -- Looking for dirent.h - found -- Looking for stdint.h -- Looking for stdint.h - found -- Looking for inttypes.h -- Looking for inttypes.h - found -- Looking for sys/stat.h -- Looking for sys/stat.h - found -- Looking for sys/types.h -- Looking for sys/types.h - found -- Looking for unistd.h -- Looking for unistd.h - found -- Looking for windows.h -- Looking for windows.h - not found -- Looking for bcopy -- Looking for bcopy - found -- Looking for memmove -- Looking for memmove - found -- Looking for strerror -- Looking for strerror - found -- Looking for strtoll -- Looking for strtoll - found -- Looking for strtoq -- Looking for strtoq - found -- Looking for _strtoi64 -- Looking for _strtoi64 - not found -- Looking for stddef.h -- Looking for stddef.h - found -- Check size of long long -- Check size of long long - done -- Check size of unsigned long long -- Check size of unsigned long long - done -- Performing Test IS_WNO_UNUSED_FUNCTION_SUPPORTED -- Performing Test IS_WNO_UNUSED_FUNCTION_SUPPORTED - Success -- Performing Test IS_WNO_IMPLICIT_FALLTHROUGH_SUPPORTED -- Performing Test IS_WNO_IMPLICIT_FALLTHROUGH_SUPPORTED - Success -- http-parser version 2 was not found or disabled; using bundled 3rd-party sources. -- Performing Test IS_WIMPLICIT_FALLTHROUGH_1_SUPPORTED -- Performing Test IS_WIMPLICIT_FALLTHROUGH_1_SUPPORTED - Failed -- Found ZLIB: /usr/lib/libz.dylib (found version "1.2.11") -- Checking for module 'libssh2' -- Package 'libssl', required by 'libssh2', not found -- LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of the default search path. -- Checking for module 'heimdal-gssapi' -- No package 'heimdal-gssapi' found -- Could NOT find GSSAPI (missing: GSSAPI_LIBRARIES) -- Found GSS.framework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/GSS.framework -- Looking for iconv_open -- Looking for iconv_open - not found -- Found Iconv: -L/usr/lib -liconv -- Enabled features: * nanoseconds, whether to use sub-second file mtimes and ctimes * tracing, tracing support * threadsafe, threadsafe support * HTTPS, using SecureTransport * SHA, using CollisionDetection * regex, using bundled PCRE * http-parser, http-parser support (bundled) * zlib, using system zlib * ntlmclient, NTLM authentication support for Unix * iconv, iconv encoding conversion support -- Disabled features: * debugpool, debug pool allocator * SSH, SSH transport support * SPNEGO, SPNEGO authentication support -- Configuring done -- Generating done CMake Warning: Manually-specified variables were not used by the project: INCLUDE_INSTALL_DIR LIB_INSTALL_DIR -- Build files have been written to: /Users/n/go/src/github.com/libgit2/git2go/static-build/build Scanning dependencies of target git2internal [ 1%] Building C object src/CMakeFiles/git2internal.dir/alloc.c.o [ 1%] Building C object src/CMakeFiles/git2internal.dir/allocators/stdalloc.c.o [ 2%] Building C object src/CMakeFiles/git2internal.dir/allocators/win32_crtdbg.c.o [ 2%] Building C object src/CMakeFiles/git2internal.dir/annotated_commit.c.o [ 3%] Building C object src/CMakeFiles/git2internal.dir/apply.c.o [ 3%] Building C object src/CMakeFiles/git2internal.dir/attr.c.o [ 4%] Building C object src/CMakeFiles/git2internal.dir/attr_file.c.o [ 4%] Building C object src/CMakeFiles/git2internal.dir/attrcache.c.o [ 5%] Building C object src/CMakeFiles/git2internal.dir/blame.c.o [ 5%] Building C object src/CMakeFiles/git2internal.dir/blame_git.c.o [ 6%] Building C object src/CMakeFiles/git2internal.dir/blob.c.o [ 7%] Building C object src/CMakeFiles/git2internal.dir/branch.c.o [ 7%] Building C object src/CMakeFiles/git2internal.dir/buf_text.c.o [ 8%] Building C object src/CMakeFiles/git2internal.dir/buffer.c.o [ 8%] Building C object src/CMakeFiles/git2internal.dir/cache.c.o [ 9%] Building C object src/CMakeFiles/git2internal.dir/checkout.c.o [ 9%] Building C object src/CMakeFiles/git2internal.dir/cherrypick.c.o [ 10%] Building C object src/CMakeFiles/git2internal.dir/clone.c.o [ 10%] Building C object src/CMakeFiles/git2internal.dir/commit.c.o [ 11%] Building C object src/CMakeFiles/git2internal.dir/commit_list.c.o [ 11%] Building C object src/CMakeFiles/git2internal.dir/config.c.o [ 12%] Building C object src/CMakeFiles/git2internal.dir/config_cache.c.o [ 12%] Building C object src/CMakeFiles/git2internal.dir/config_entries.c.o [ 13%] Building C object src/CMakeFiles/git2internal.dir/config_file.c.o [ 14%] Building C object src/CMakeFiles/git2internal.dir/config_mem.c.o [ 14%] Building C object src/CMakeFiles/git2internal.dir/config_parse.c.o [ 15%] Building C object src/CMakeFiles/git2internal.dir/config_snapshot.c.o [ 15%] Building C object src/CMakeFiles/git2internal.dir/crlf.c.o [ 16%] Building C object src/CMakeFiles/git2internal.dir/date.c.o [ 16%] Building C object src/CMakeFiles/git2internal.dir/delta.c.o [ 17%] Building C object src/CMakeFiles/git2internal.dir/describe.c.o [ 17%] Building C object src/CMakeFiles/git2internal.dir/diff.c.o [ 18%] Building C object src/CMakeFiles/git2internal.dir/diff_driver.c.o [ 18%] Building C object src/CMakeFiles/git2internal.dir/diff_file.c.o [ 19%] Building C object src/CMakeFiles/git2internal.dir/diff_generate.c.o [ 20%] Building C object src/CMakeFiles/git2internal.dir/diff_parse.c.o [ 20%] Building C object src/CMakeFiles/git2internal.dir/diff_print.c.o [ 21%] Building C object src/CMakeFiles/git2internal.dir/diff_stats.c.o [ 21%] Building C object src/CMakeFiles/git2internal.dir/diff_tform.c.o [ 22%] Building C object src/CMakeFiles/git2internal.dir/diff_xdiff.c.o [ 22%] Building C object src/CMakeFiles/git2internal.dir/errors.c.o [ 23%] Building C object src/CMakeFiles/git2internal.dir/fetch.c.o [ 23%] Building C object src/CMakeFiles/git2internal.dir/fetchhead.c.o [ 24%] Building C object src/CMakeFiles/git2internal.dir/filebuf.c.o [ 24%] Building C object src/CMakeFiles/git2internal.dir/filter.c.o [ 25%] Building C object src/CMakeFiles/git2internal.dir/futils.c.o [ 25%] Building C object src/CMakeFiles/git2internal.dir/global.c.o [ 26%] Building C object src/CMakeFiles/git2internal.dir/graph.c.o [ 27%] Building C object src/CMakeFiles/git2internal.dir/hash.c.o [ 27%] Building C object src/CMakeFiles/git2internal.dir/hashsig.c.o [ 28%] Building C object src/CMakeFiles/git2internal.dir/ident.c.o [ 28%] Building C object src/CMakeFiles/git2internal.dir/idxmap.c.o [ 29%] Building C object src/CMakeFiles/git2internal.dir/ignore.c.o [ 29%] Building C object src/CMakeFiles/git2internal.dir/index.c.o [ 30%] Building C object src/CMakeFiles/git2internal.dir/indexer.c.o [ 30%] Building C object src/CMakeFiles/git2internal.dir/iterator.c.o [ 31%] Building C object src/CMakeFiles/git2internal.dir/mailmap.c.o [ 31%] Building C object src/CMakeFiles/git2internal.dir/merge.c.o [ 32%] Building C object src/CMakeFiles/git2internal.dir/merge_driver.c.o [ 32%] Building C object src/CMakeFiles/git2internal.dir/merge_file.c.o [ 33%] Building C object src/CMakeFiles/git2internal.dir/message.c.o [ 34%] Building C object src/CMakeFiles/git2internal.dir/mwindow.c.o [ 34%] Building C object src/CMakeFiles/git2internal.dir/net.c.o [ 35%] Building C object src/CMakeFiles/git2internal.dir/netops.c.o [ 35%] Building C object src/CMakeFiles/git2internal.dir/notes.c.o [ 36%] Building C object src/CMakeFiles/git2internal.dir/object.c.o [ 36%] Building C object src/CMakeFiles/git2internal.dir/object_api.c.o [ 37%] Building C object src/CMakeFiles/git2internal.dir/odb.c.o [ 37%] Building C object src/CMakeFiles/git2internal.dir/odb_loose.c.o [ 38%] Building C object src/CMakeFiles/git2internal.dir/odb_mempack.c.o [ 38%] Building C object src/CMakeFiles/git2internal.dir/odb_pack.c.o [ 39%] Building C object src/CMakeFiles/git2internal.dir/offmap.c.o [ 40%] Building C object src/CMakeFiles/git2internal.dir/oid.c.o [ 40%] Building C object src/CMakeFiles/git2internal.dir/oidarray.c.o [ 41%] Building C object src/CMakeFiles/git2internal.dir/oidmap.c.o [ 41%] Building C object src/CMakeFiles/git2internal.dir/pack-objects.c.o [ 42%] Building C object src/CMakeFiles/git2internal.dir/pack.c.o [ 42%] Building C object src/CMakeFiles/git2internal.dir/parse.c.o [ 43%] Building C object src/CMakeFiles/git2internal.dir/patch.c.o [ 43%] Building C object src/CMakeFiles/git2internal.dir/patch_generate.c.o [ 44%] Building C object src/CMakeFiles/git2internal.dir/patch_parse.c.o [ 44%] Building C object src/CMakeFiles/git2internal.dir/path.c.o [ 45%] Building C object src/CMakeFiles/git2internal.dir/pathspec.c.o [ 45%] Building C object src/CMakeFiles/git2internal.dir/pool.c.o [ 46%] Building C object src/CMakeFiles/git2internal.dir/posix.c.o [ 47%] Building C object src/CMakeFiles/git2internal.dir/pqueue.c.o [ 47%] Building C object src/CMakeFiles/git2internal.dir/proxy.c.o [ 48%] Building C object src/CMakeFiles/git2internal.dir/push.c.o [ 48%] Building C object src/CMakeFiles/git2internal.dir/reader.c.o [ 49%] Building C object src/CMakeFiles/git2internal.dir/rebase.c.o [ 49%] Building C object src/CMakeFiles/git2internal.dir/refdb.c.o [ 50%] Building C object src/CMakeFiles/git2internal.dir/refdb_fs.c.o [ 50%] Building C object src/CMakeFiles/git2internal.dir/reflog.c.o [ 51%] Building C object src/CMakeFiles/git2internal.dir/refs.c.o [ 51%] Building C object src/CMakeFiles/git2internal.dir/refspec.c.o [ 52%] Building C object src/CMakeFiles/git2internal.dir/regexp.c.o [ 52%] Building C object src/CMakeFiles/git2internal.dir/remote.c.o [ 53%] Building C object src/CMakeFiles/git2internal.dir/repository.c.o [ 54%] Building C object src/CMakeFiles/git2internal.dir/reset.c.o [ 54%] Building C object src/CMakeFiles/git2internal.dir/revert.c.o [ 55%] Building C object src/CMakeFiles/git2internal.dir/revparse.c.o [ 55%] Building C object src/CMakeFiles/git2internal.dir/revwalk.c.o [ 56%] Building C object src/CMakeFiles/git2internal.dir/settings.c.o [ 56%] Building C object src/CMakeFiles/git2internal.dir/signature.c.o [ 57%] Building C object src/CMakeFiles/git2internal.dir/sortedcache.c.o [ 57%] Building C object src/CMakeFiles/git2internal.dir/stash.c.o [ 58%] Building C object src/CMakeFiles/git2internal.dir/status.c.o [ 58%] Building C object src/CMakeFiles/git2internal.dir/streams/mbedtls.c.o [ 59%] Building C object src/CMakeFiles/git2internal.dir/streams/openssl.c.o [ 60%] Building C object src/CMakeFiles/git2internal.dir/streams/registry.c.o [ 60%] Building C object src/CMakeFiles/git2internal.dir/streams/socket.c.o [ 61%] Building C object src/CMakeFiles/git2internal.dir/streams/stransport.c.o [ 61%] Building C object src/CMakeFiles/git2internal.dir/streams/tls.c.o [ 62%] Building C object src/CMakeFiles/git2internal.dir/strmap.c.o [ 62%] Building C object src/CMakeFiles/git2internal.dir/submodule.c.o [ 63%] Building C object src/CMakeFiles/git2internal.dir/sysdir.c.o [ 63%] Building C object src/CMakeFiles/git2internal.dir/tag.c.o [ 64%] Building C object src/CMakeFiles/git2internal.dir/thread-utils.c.o [ 64%] Building C object src/CMakeFiles/git2internal.dir/trace.c.o [ 65%] Building C object src/CMakeFiles/git2internal.dir/trailer.c.o [ 65%] Building C object src/CMakeFiles/git2internal.dir/transaction.c.o [ 66%] Building C object src/CMakeFiles/git2internal.dir/transport.c.o [ 67%] Building C object src/CMakeFiles/git2internal.dir/transports/auth.c.o [ 67%] Building C object src/CMakeFiles/git2internal.dir/transports/auth_negotiate.c.o [ 68%] Building C object src/CMakeFiles/git2internal.dir/transports/auth_ntlm.c.o [ 68%] Building C object src/CMakeFiles/git2internal.dir/transports/credential.c.o [ 69%] Building C object src/CMakeFiles/git2internal.dir/transports/credential_helpers.c.o [ 69%] Building C object src/CMakeFiles/git2internal.dir/transports/git.c.o [ 70%] Building C object src/CMakeFiles/git2internal.dir/transports/http.c.o [ 70%] Building C object src/CMakeFiles/git2internal.dir/transports/httpclient.c.o [ 71%] Building C object src/CMakeFiles/git2internal.dir/transports/local.c.o [ 71%] Building C object src/CMakeFiles/git2internal.dir/transports/smart.c.o [ 72%] Building C object src/CMakeFiles/git2internal.dir/transports/smart_pkt.c.o [ 72%] Building C object src/CMakeFiles/git2internal.dir/transports/smart_protocol.c.o [ 73%] Building C object src/CMakeFiles/git2internal.dir/transports/ssh.c.o [ 74%] Building C object src/CMakeFiles/git2internal.dir/transports/winhttp.c.o [ 74%] Building C object src/CMakeFiles/git2internal.dir/tree-cache.c.o [ 75%] Building C object src/CMakeFiles/git2internal.dir/tree.c.o [ 75%] Building C object src/CMakeFiles/git2internal.dir/tsort.c.o [ 76%] Building C object src/CMakeFiles/git2internal.dir/util.c.o [ 76%] Building C object src/CMakeFiles/git2internal.dir/varint.c.o [ 77%] Building C object src/CMakeFiles/git2internal.dir/vector.c.o [ 77%] Building C object src/CMakeFiles/git2internal.dir/wildmatch.c.o [ 78%] Building C object src/CMakeFiles/git2internal.dir/worktree.c.o [ 78%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xdiffi.c.o [ 79%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xemit.c.o [ 80%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xhistogram.c.o [ 80%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xmerge.c.o [ 81%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xpatience.c.o [ 81%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xprepare.c.o [ 82%] Building C object src/CMakeFiles/git2internal.dir/xdiff/xutils.c.o [ 82%] Building C object src/CMakeFiles/git2internal.dir/zstream.c.o [ 83%] Building C object src/CMakeFiles/git2internal.dir/unix/map.c.o [ 83%] Building C object src/CMakeFiles/git2internal.dir/unix/realpath.c.o [ 84%] Building C object src/CMakeFiles/git2internal.dir/hash/sha1/collisiondetect.c.o [ 84%] Building C object src/CMakeFiles/git2internal.dir/hash/sha1/sha1dc/sha1.c.o [ 85%] Building C object src/CMakeFiles/git2internal.dir/hash/sha1/sha1dc/ubc_check.c.o [ 85%] Built target git2internal Scanning dependencies of target ntlmclient [ 86%] Building C object deps/ntlmclient/CMakeFiles/ntlmclient.dir/ntlm.c.o [ 87%] Building C object deps/ntlmclient/CMakeFiles/ntlmclient.dir/unicode_builtin.c.o [ 87%] Building C object deps/ntlmclient/CMakeFiles/ntlmclient.dir/util.c.o [ 88%] Building C object deps/ntlmclient/CMakeFiles/ntlmclient.dir/crypt_commoncrypto.c.o [ 88%] Built target ntlmclient Scanning dependencies of target pcre [ 88%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_byte_order.c.o [ 89%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_chartables.c.o [ 89%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_compile.c.o [ 90%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_config.c.o [ 90%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_dfa_exec.c.o [ 91%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_exec.c.o [ 91%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_fullinfo.c.o [ 92%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_get.c.o [ 92%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_globals.c.o [ 93%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_jit_compile.c.o [ 94%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_maketables.c.o [ 94%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_newline.c.o [ 95%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_ord2utf8.c.o [ 95%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_refcount.c.o [ 96%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_string_utils.c.o [ 96%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_study.c.o [ 97%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_tables.c.o [ 97%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_ucd.c.o [ 98%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_valid_utf8.c.o [ 98%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_version.c.o [ 99%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_xclass.c.o [100%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcreposix.c.o [100%] Built target pcre Scanning dependencies of target http-parser [100%] Building C object deps/http-parser/CMakeFiles/http-parser.dir/http_parser.c.o [100%] Built target http-parser Scanning dependencies of target git2 [100%] Linking C static library ../libgit2.a /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(pcre_string_utils.c.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(auth_negotiate.c.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(winhttp.c.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(pcre_string_utils.c.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(auth_negotiate.c.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: ../libgit2.a(winhttp.c.o) has no symbols [100%] Built target git2 Install the project... -- Install configuration: "RelWithDebInfo" -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/lib/pkgconfig/libgit2.pc -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/lib/libgit2.a /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/lib/libgit2.a(pcre_string_utils.c.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/lib/libgit2.a(auth_negotiate.c.o) has no symbols /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/lib/libgit2.a(winhttp.c.o) has no symbols -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2 -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/signature.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/oid.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/index.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/ignore.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/attr.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/blame.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/oidarray.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/pack.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/revert.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/version.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/odb.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/status.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/net.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/tag.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/annotated_commit.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/config.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/branch.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/types.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/repository.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/clone.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/global.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/blob.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/cherrypick.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/mailmap.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/submodule.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/errors.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/message.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/merge.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/pathspec.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/tree.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/odb_backend.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/graph.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/describe.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/rebase.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/worktree.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/stash.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/remote.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/strarray.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/reflog.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/cred_helpers.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/buffer.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/diff.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/index.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/config.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/path.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/repository.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/openssl.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/cred.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/merge.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/stream.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/odb_backend.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/reflog.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/diff.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/transport.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/hashsig.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/credential.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/refs.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/filter.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/alloc.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/mempack.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/commit.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/sys/refdb_backend.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/trace.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/common.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/proxy.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/indexer.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/refspec.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/notes.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/cert.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/deprecated.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/transport.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/revwalk.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/patch.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/object.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/checkout.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/apply.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/revparse.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/credential_helpers.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/credential.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/refs.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/reset.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/filter.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/transaction.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/stdint.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/commit.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2/refdb.h -- Installing: /Users/n/go/src/github.com/libgit2/git2go/static-build/install/include/git2.h go install --tags "static" ./... ``` </details> ```zsh $ make static PKG_CONFIG_PATH=/Users/n/go/src/github.com/libgit2/git2go/static-build/build \ go build \ -installsuffix cgo \ -ldflags '-extldflags "-static"' main.go # github.com/libgit2/git2go/v30 Undefined symbols for architecture x86_64: "_CFDataGetBytePtr", referenced from: _stransport_certificate in libgit2.a(stransport.c.o) ... (see below for full output) ``` <details> <summary>output</summary> ``` PKG_CONFIG_PATH=/Users/n/go/src/github.com/libgit2/git2go/static-build/build \ go build \ -installsuffix cgo \ -ldflags '-extldflags "-static"' main.go # github.com/libgit2/git2go/v30 Undefined symbols for architecture x86_64: "_CFDataGetBytePtr", referenced from: _stransport_certificate in libgit2.a(stransport.c.o) "_CFDataGetLength", referenced from: _stransport_certificate in libgit2.a(stransport.c.o) "_CFRelease", referenced from: _stransport_wrap in libgit2.a(stransport.c.o) _stransport_connect in libgit2.a(stransport.c.o) _stransport_certificate in libgit2.a(stransport.c.o) _stransport_read in libgit2.a(stransport.c.o) _stransport_write in libgit2.a(stransport.c.o) _stransport_close in libgit2.a(stransport.c.o) _stransport_free in libgit2.a(stransport.c.o) ... "_CFStringGetCStringPtr", referenced from: _stransport_wrap in libgit2.a(stransport.c.o) _stransport_connect in libgit2.a(stransport.c.o) _stransport_certificate in libgit2.a(stransport.c.o) _stransport_read in libgit2.a(stransport.c.o) _stransport_write in libgit2.a(stransport.c.o) _stransport_close in libgit2.a(stransport.c.o) "_SSLClose", referenced from: _stransport_close in libgit2.a(stransport.c.o) "_SSLCopyPeerTrust", referenced from: _stransport_connect in libgit2.a(stransport.c.o) _stransport_certificate in libgit2.a(stransport.c.o) "_SSLCreateContext", referenced from: _stransport_wrap in libgit2.a(stransport.c.o) "_SSLHandshake", referenced from: _stransport_connect in libgit2.a(stransport.c.o) "_SSLRead", referenced from: _stransport_read in libgit2.a(stransport.c.o) "_SSLSetConnection", referenced from: _stransport_wrap in libgit2.a(stransport.c.o) "_SSLSetIOFuncs", referenced from: _stransport_wrap in libgit2.a(stransport.c.o) "_SSLSetPeerDomainName", referenced from: _stransport_wrap in libgit2.a(stransport.c.o) "_SSLSetProtocolVersionMax", referenced from: _stransport_wrap in libgit2.a(stransport.c.o) "_SSLSetProtocolVersionMin", referenced from: _stransport_wrap in libgit2.a(stransport.c.o) "_SSLSetSessionOption", referenced from: _stransport_wrap in libgit2.a(stransport.c.o) "_SSLWrite", referenced from: _stransport_write in libgit2.a(stransport.c.o) "_SecCertificateCopyData", referenced from: _stransport_certificate in libgit2.a(stransport.c.o) "_SecCopyErrorMessageString", referenced from: _stransport_wrap in libgit2.a(stransport.c.o) _stransport_connect in libgit2.a(stransport.c.o) _stransport_certificate in libgit2.a(stransport.c.o) _stransport_read in libgit2.a(stransport.c.o) _stransport_write in libgit2.a(stransport.c.o) _stransport_close in libgit2.a(stransport.c.o) "_SecTrustEvaluate", referenced from: _stransport_connect in libgit2.a(stransport.c.o) "_SecTrustGetCertificateAtIndex", referenced from: _stransport_certificate in libgit2.a(stransport.c.o) "_crc32", referenced from: _git_indexer_append in libgit2.a(indexer.c.o) _git_indexer_commit in libgit2.a(indexer.c.o) "_deflate", referenced from: _write_deflate in libgit2.a(filebuf.c.o) _git_zstream_get_output_chunk in libgit2.a(zstream.c.o) (maybe you meant: _git_zstream_deflatebuf) "_deflateEnd", referenced from: _git_filebuf_cleanup in libgit2.a(filebuf.c.o) _git_zstream_free in libgit2.a(zstream.c.o) _zstream_buf in libgit2.a(zstream.c.o) "_deflateInit_", referenced from: _git_filebuf_open_withsize in libgit2.a(filebuf.c.o) _git_zstream_init in libgit2.a(zstream.c.o) "_deflateReset", referenced from: _git_zstream_reset in libgit2.a(zstream.c.o) "_iconv", referenced from: _git_path_iconv in libgit2.a(path.c.o) (maybe you meant: _git_path_iconv_init_precompose, _git_path_iconv , _git_path_iconv_clear ) "_iconv_close", referenced from: _git_path_direach in libgit2.a(path.c.o) _git_path_iconv_clear in libgit2.a(path.c.o) _git_path_diriter_free in libgit2.a(path.c.o) _git_path_dirload in libgit2.a(path.c.o) "_iconv_open", referenced from: _git_path_direach in libgit2.a(path.c.o) _git_path_iconv_init_precompose in libgit2.a(path.c.o) _git_path_diriter_init in libgit2.a(path.c.o) "_inflate", referenced from: _git_zstream_get_output_chunk in libgit2.a(zstream.c.o) (maybe you meant: _git_zstream_inflatebuf) "_inflateEnd", referenced from: _git_zstream_free in libgit2.a(zstream.c.o) _zstream_buf in libgit2.a(zstream.c.o) "_inflateInit_", referenced from: _git_zstream_init in libgit2.a(zstream.c.o) "_inflateReset", referenced from: _git_zstream_reset in libgit2.a(zstream.c.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [static] Error 2 ``` </details> Do you see anything that can explain why all those symbols are missing? Thanks,
lhchavez commented 2020-06-20 14:47:24 -05:00 (Migrated from github.com)

thanks for writing such a nice report!

I think I managed to reproduce the issue: What I think is happening is that since go build is being invoked without the -tags=static bit (which after reading the README.md is semi-implied and only mentioned in the Running the tests section in passing, so we should probably do something to make it more explicit that it's required), the code in git_static.go is ignored and the one in git_dynamic.go kicks in, which causes pkg-config to be all sorts of confused and pass in the wrong flags.

But passing in -tags=static would cause the go build system to look for the file in the wrong location, so what I do in my projects is to have the following in the go.mod file:

replace github.com/libgit2/git2go/v30 => ../git2go

(or the correct relative path to the git2go checkout where make install-static was run).

I'll try to amend the README.md file to include all this information to avoid confusion. And I hope this solves your problem!

btw, https://github.com/libgit2/git2go/pull/619 should take care of one of the innocuous warnings you found (yay for fewer red herrings!).

thanks for writing such a nice report! I *think* I managed to reproduce the issue: What I think is happening is that since `go build` is being invoked without the `-tags=static` bit (which after reading the `README.md` is semi-implied and only mentioned in the [Running the tests](https://github.com/libgit2/git2go/blob/v30.0.3/README.md#running-the-tests) section in passing, so we should probably do something to make it more explicit that it's required), the code in [`git_static.go`](https://github.com/libgit2/git2go/blob/v30.0.3/git_static.go) is ignored and the one in [`git_dynamic.go`](https://github.com/libgit2/git2go/blob/v30.0.3/git_dynamic.go) kicks in, which causes `pkg-config` to be all sorts of confused and pass in the wrong flags. But passing in `-tags=static` would cause the go build system to look for the file in the wrong location, so what I do in my projects is to have the following in the `go.mod` file: ``` replace github.com/libgit2/git2go/v30 => ../git2go ``` (or the correct relative path to the `git2go` checkout where `make install-static` was run). I'll try to amend the `README.md` file to include all this information to avoid confusion. And I hope this solves your problem! btw, https://github.com/libgit2/git2go/pull/619 should take care of one of the innocuous warnings you found (yay for fewer red herrings!).
nobe4 commented 2020-06-20 15:53:07 -05:00 (Migrated from github.com)

Hi @lhchavez, thanks so much for this answer 😃

Following your advice I made my setup work. For the sake of completion, here's a working setup:
main.go remains unchanged.

dynamic:
	go build main.go

static:
	go build \
		-installsuffix cgo \
		-tags static \
		main.go
// go.mod
module example.com/a/b

go 1.13

require github.com/libgit2/git2go/v30 v30.0.3

replace github.com/libgit2/git2go/v30 => ./vendor/git2go

In ./vendor I did the following:

$ git clone https://github.com/libgit2/git2go.git
$ cd $GOPATH/src/github.com/libgit2/git2go/
$ git checkout v30.0.3
$ make install-static

I couldn't find a way to have the replace point to the installed git2go inside $GOPATH, so I'll have to vendor it for now. I imagine that it can be used only for building, so it's not too problematic (unless there's something I've missed).

Also removed -ldflags '-extldflags "-static"' from the go build command, it's not supported on macOS apparently. I used that in the past to have 100% static binary to run FROM scratch in docker, but I macOS doesn't like that (ref).

Thanks again, feel free to close this 🙂

Hi @lhchavez, thanks so much for this answer 😃 Following your advice I made my setup work. For the sake of completion, here's a working setup: `main.go` remains unchanged. ```makefile dynamic: go build main.go static: go build \ -installsuffix cgo \ -tags static \ main.go ``` ```golang // go.mod module example.com/a/b go 1.13 require github.com/libgit2/git2go/v30 v30.0.3 replace github.com/libgit2/git2go/v30 => ./vendor/git2go ``` In `./vendor` I did the following: ```zsh $ git clone https://github.com/libgit2/git2go.git $ cd $GOPATH/src/github.com/libgit2/git2go/ $ git checkout v30.0.3 $ make install-static ``` I couldn't find a way to have the `replace` point to the installed `git2go` inside `$GOPATH`, so I'll have to vendor it for now. I imagine that it can be used only for building, so it's not too problematic (unless there's something I've missed). Also removed `-ldflags '-extldflags "-static"'` from the `go build` command, it's not supported on macOS apparently. I used that in the past to have 100% static binary to run `FROM scratch` in docker, but I macOS doesn't like that ([ref](https://stackoverflow.com/a/3801032/2558252)). Thanks again, feel free to close this 🙂
lhchavez commented 2020-06-21 09:13:14 -05:00 (Migrated from github.com)

After a bit more thought, would https://github.com/libgit2/git2go/pull/621 (the introduction of the -tags static,system) help you remove some of the workarounds?

After a bit more thought, would https://github.com/libgit2/git2go/pull/621 (the introduction of the `-tags static,system`) help you remove some of the workarounds?
nobe4 commented 2020-06-21 11:30:22 -05:00 (Migrated from github.com)

Neat! 🙂

Is there any drawbacks to use a staticaly built version of libgit2/git2go?

For now I think I will stick to vendor git2go and have a clear control over it (i.e. brew install something feels more magical to me). My current setup is now:

  • Clone and build git2go
  • Use -tags=static everywhere

I've found it has no impact on performance, testing or anything.

Neat! 🙂 Is there any drawbacks to use a staticaly built version of `libgit2`/`git2go`? For now I think I will stick to vendor `git2go` and have a clear control over it (i.e. `brew install something` feels more magical to me). My current setup is now: - Clone and build `git2go` - Use `-tags=static` everywhere I've found it has no impact on performance, testing or anything.
lhchavez commented 2020-06-21 11:43:51 -05:00 (Migrated from github.com)

Is there any drawbacks to use a staticaly built version of libgit2/git2go?

Aside from having slightly larger binaries, not that I know of. The other main downside of statically-linked libraries is that updating the dependencies requires rebuilding all the binaries that use them. But in this case, the whole go ecosystem is built around the idea that most binaries are statically-linked anyways.

For now I think I will stick to vendor git2go and have a clear control over it.

Sounds good. I do the same thing (vendoring git2go) myself, but wanted to see if this was something that was useful to other folks.

I've found it has no impact on performance, testing or anything.

Same here. In fact, bundling the statically-built library can have debugging advantages, like https://github.com/libgit2/git2go/pull/577

> Is there any drawbacks to use a staticaly built version of libgit2/git2go? Aside from having slightly larger binaries, not that I know of. The other main downside of statically-linked libraries is that updating the dependencies requires rebuilding all the binaries that use them. But in this case, the whole go ecosystem is built around the idea that most binaries are statically-linked anyways. > For now I think I will stick to vendor `git2go` and have a clear control over it. Sounds good. I do the same thing (vendoring `git2go`) myself, but wanted to see if this was something that was useful to other folks. > I've found it has no impact on performance, testing or anything. Same here. In fact, bundling the statically-built library _can_ have debugging advantages, like https://github.com/libgit2/git2go/pull/577
nobe4 commented 2020-06-22 00:11:07 -05:00 (Migrated from github.com)

Thanks for the info 🙂

Thanks for the info 🙂
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: jcarr/git2go#618
No description provided.