Skip to content

Conversation

barracuda156
Copy link
Contributor

@barracuda156 barracuda156 commented Apr 7, 2024

bc97d01 commit introduced environ usage which is not compatible with some version of macOS. In result libgit2 cannot be built.

Fix that: use a MacOS-specific symbol on macOS.

@barracuda156
Copy link
Contributor Author

Otherwise this happens:

/usr/bin/gcc-4.2 -D_GNU_SOURCE -pipe -Os -I/opt/local/include/LegacySupport -DNDEBUG -I/opt/local/include -I/opt/local/include/LegacySupport -Werror -Wno-error -Wall -Wextra -fvisibility=hidden -fPIC -Wno-missing-field-initializers -Wmissing-declarations -Wstrict-aliasing -Wstrict-prototypes -Wdeclaration-after-statement -Wunused-function -Wformat -Wformat-security -O2 -g -DNDEBUG -arch ppc -mmacosx-version-min=10.6 -dynamiclib -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names -lMacportsLegacySupport -compatibility_version 1.8.0 -current_version 1.8.0 -o ../../libgit2.1.8.0.dylib -install_name /opt/local/lib/libgit2.1.8.dylib ../util/CMakeFiles/util.dir/alloc.c.o ../util/CMakeFiles/util.dir/allocators/failalloc.c.o ../util/CMakeFiles/util.dir/allocators/stdalloc.c.o ../util/CMakeFiles/util.dir/allocators/win32_leakcheck.c.o ../util/CMakeFiles/util.dir/date.c.o ../util/CMakeFiles/util.dir/errors.c.o ../util/CMakeFiles/util.dir/filebuf.c.o ../util/CMakeFiles/util.dir/fs_path.c.o ../util/CMakeFiles/util.dir/futils.c.o ../util/CMakeFiles/util.dir/hash.c.o ../util/CMakeFiles/util.dir/net.c.o ../util/CMakeFiles/util.dir/pool.c.o ../util/CMakeFiles/util.dir/posix.c.o ../util/CMakeFiles/util.dir/pqueue.c.o ../util/CMakeFiles/util.dir/rand.c.o ../util/CMakeFiles/util.dir/regexp.c.o ../util/CMakeFiles/util.dir/runtime.c.o ../util/CMakeFiles/util.dir/sortedcache.c.o ../util/CMakeFiles/util.dir/str.c.o ../util/CMakeFiles/util.dir/strlist.c.o ../util/CMakeFiles/util.dir/strmap.c.o ../util/CMakeFiles/util.dir/thread.c.o ../util/CMakeFiles/util.dir/tsort.c.o ../util/CMakeFiles/util.dir/utf8.c.o ../util/CMakeFiles/util.dir/util.c.o ../util/CMakeFiles/util.dir/varint.c.o ../util/CMakeFiles/util.dir/vector.c.o ../util/CMakeFiles/util.dir/wildmatch.c.o ../util/CMakeFiles/util.dir/zstream.c.o ../util/CMakeFiles/util.dir/unix/map.c.o ../util/CMakeFiles/util.dir/unix/process.c.o ../util/CMakeFiles/util.dir/unix/realpath.c.o ../util/CMakeFiles/util.dir/hash/collisiondetect.c.o ../util/CMakeFiles/util.dir/hash/sha1dc/sha1.c.o ../util/CMakeFiles/util.dir/hash/sha1dc/ubc_check.c.o ../util/CMakeFiles/util.dir/hash/openssl.c.o CMakeFiles/libgit2.dir/annotated_commit.c.o CMakeFiles/libgit2.dir/apply.c.o CMakeFiles/libgit2.dir/attr.c.o CMakeFiles/libgit2.dir/attr_file.c.o CMakeFiles/libgit2.dir/attrcache.c.o CMakeFiles/libgit2.dir/blame.c.o CMakeFiles/libgit2.dir/blame_git.c.o CMakeFiles/libgit2.dir/blob.c.o CMakeFiles/libgit2.dir/branch.c.o CMakeFiles/libgit2.dir/buf.c.o CMakeFiles/libgit2.dir/cache.c.o CMakeFiles/libgit2.dir/checkout.c.o CMakeFiles/libgit2.dir/cherrypick.c.o CMakeFiles/libgit2.dir/clone.c.o CMakeFiles/libgit2.dir/commit.c.o CMakeFiles/libgit2.dir/commit_graph.c.o CMakeFiles/libgit2.dir/commit_list.c.o CMakeFiles/libgit2.dir/config.c.o CMakeFiles/libgit2.dir/config_cache.c.o CMakeFiles/libgit2.dir/config_file.c.o CMakeFiles/libgit2.dir/config_list.c.o CMakeFiles/libgit2.dir/config_mem.c.o CMakeFiles/libgit2.dir/config_parse.c.o CMakeFiles/libgit2.dir/config_snapshot.c.o CMakeFiles/libgit2.dir/crlf.c.o CMakeFiles/libgit2.dir/delta.c.o CMakeFiles/libgit2.dir/describe.c.o CMakeFiles/libgit2.dir/diff.c.o CMakeFiles/libgit2.dir/diff_driver.c.o CMakeFiles/libgit2.dir/diff_file.c.o CMakeFiles/libgit2.dir/diff_generate.c.o CMakeFiles/libgit2.dir/diff_parse.c.o CMakeFiles/libgit2.dir/diff_print.c.o CMakeFiles/libgit2.dir/diff_stats.c.o CMakeFiles/libgit2.dir/diff_tform.c.o CMakeFiles/libgit2.dir/diff_xdiff.c.o CMakeFiles/libgit2.dir/email.c.o CMakeFiles/libgit2.dir/fetch.c.o CMakeFiles/libgit2.dir/fetchhead.c.o CMakeFiles/libgit2.dir/filter.c.o CMakeFiles/libgit2.dir/grafts.c.o CMakeFiles/libgit2.dir/graph.c.o CMakeFiles/libgit2.dir/hashsig.c.o CMakeFiles/libgit2.dir/ident.c.o CMakeFiles/libgit2.dir/idxmap.c.o CMakeFiles/libgit2.dir/ignore.c.o CMakeFiles/libgit2.dir/index.c.o CMakeFiles/libgit2.dir/indexer.c.o CMakeFiles/libgit2.dir/iterator.c.o CMakeFiles/libgit2.dir/libgit2.c.o CMakeFiles/libgit2.dir/mailmap.c.o CMakeFiles/libgit2.dir/merge.c.o CMakeFiles/libgit2.dir/merge_driver.c.o CMakeFiles/libgit2.dir/merge_file.c.o CMakeFiles/libgit2.dir/message.c.o CMakeFiles/libgit2.dir/midx.c.o CMakeFiles/libgit2.dir/mwindow.c.o CMakeFiles/libgit2.dir/notes.c.o CMakeFiles/libgit2.dir/object.c.o CMakeFiles/libgit2.dir/object_api.c.o CMakeFiles/libgit2.dir/odb.c.o CMakeFiles/libgit2.dir/odb_loose.c.o CMakeFiles/libgit2.dir/odb_mempack.c.o CMakeFiles/libgit2.dir/odb_pack.c.o CMakeFiles/libgit2.dir/offmap.c.o CMakeFiles/libgit2.dir/oid.c.o CMakeFiles/libgit2.dir/oidarray.c.o CMakeFiles/libgit2.dir/oidmap.c.o "CMakeFiles/libgit2.dir/pack-objects.c.o" CMakeFiles/libgit2.dir/pack.c.o CMakeFiles/libgit2.dir/parse.c.o CMakeFiles/libgit2.dir/patch.c.o CMakeFiles/libgit2.dir/patch_generate.c.o CMakeFiles/libgit2.dir/patch_parse.c.o CMakeFiles/libgit2.dir/path.c.o CMakeFiles/libgit2.dir/pathspec.c.o CMakeFiles/libgit2.dir/proxy.c.o CMakeFiles/libgit2.dir/push.c.o CMakeFiles/libgit2.dir/reader.c.o CMakeFiles/libgit2.dir/rebase.c.o CMakeFiles/libgit2.dir/refdb.c.o CMakeFiles/libgit2.dir/refdb_fs.c.o CMakeFiles/libgit2.dir/reflog.c.o CMakeFiles/libgit2.dir/refs.c.o CMakeFiles/libgit2.dir/refspec.c.o CMakeFiles/libgit2.dir/remote.c.o CMakeFiles/libgit2.dir/repository.c.o CMakeFiles/libgit2.dir/reset.c.o CMakeFiles/libgit2.dir/revert.c.o CMakeFiles/libgit2.dir/revparse.c.o CMakeFiles/libgit2.dir/revwalk.c.o CMakeFiles/libgit2.dir/signature.c.o CMakeFiles/libgit2.dir/stash.c.o CMakeFiles/libgit2.dir/status.c.o CMakeFiles/libgit2.dir/strarray.c.o CMakeFiles/libgit2.dir/streams/mbedtls.c.o CMakeFiles/libgit2.dir/streams/openssl.c.o CMakeFiles/libgit2.dir/streams/openssl_dynamic.c.o CMakeFiles/libgit2.dir/streams/openssl_legacy.c.o CMakeFiles/libgit2.dir/streams/registry.c.o CMakeFiles/libgit2.dir/streams/schannel.c.o CMakeFiles/libgit2.dir/streams/socket.c.o CMakeFiles/libgit2.dir/streams/stransport.c.o CMakeFiles/libgit2.dir/streams/tls.c.o CMakeFiles/libgit2.dir/submodule.c.o CMakeFiles/libgit2.dir/sysdir.c.o CMakeFiles/libgit2.dir/tag.c.o CMakeFiles/libgit2.dir/trace.c.o CMakeFiles/libgit2.dir/trailer.c.o CMakeFiles/libgit2.dir/transaction.c.o CMakeFiles/libgit2.dir/transport.c.o CMakeFiles/libgit2.dir/transports/auth.c.o CMakeFiles/libgit2.dir/transports/auth_gssapi.c.o CMakeFiles/libgit2.dir/transports/auth_ntlmclient.c.o CMakeFiles/libgit2.dir/transports/auth_sspi.c.o CMakeFiles/libgit2.dir/transports/credential.c.o CMakeFiles/libgit2.dir/transports/credential_helpers.c.o CMakeFiles/libgit2.dir/transports/git.c.o CMakeFiles/libgit2.dir/transports/http.c.o CMakeFiles/libgit2.dir/transports/httpclient.c.o CMakeFiles/libgit2.dir/transports/local.c.o CMakeFiles/libgit2.dir/transports/smart.c.o CMakeFiles/libgit2.dir/transports/smart_pkt.c.o CMakeFiles/libgit2.dir/transports/smart_protocol.c.o CMakeFiles/libgit2.dir/transports/ssh.c.o CMakeFiles/libgit2.dir/transports/ssh_exec.c.o CMakeFiles/libgit2.dir/transports/ssh_libssh2.c.o CMakeFiles/libgit2.dir/transports/winhttp.c.o "CMakeFiles/libgit2.dir/tree-cache.c.o" CMakeFiles/libgit2.dir/tree.c.o CMakeFiles/libgit2.dir/worktree.c.o "../../deps/http-parser/CMakeFiles/http-parser.dir/http_parser.c.o" ../../deps/xdiff/CMakeFiles/xdiff.dir/xdiffi.c.o ../../deps/xdiff/CMakeFiles/xdiff.dir/xemit.c.o ../../deps/xdiff/CMakeFiles/xdiff.dir/xhistogram.c.o ../../deps/xdiff/CMakeFiles/xdiff.dir/xmerge.c.o ../../deps/xdiff/CMakeFiles/xdiff.dir/xpatience.c.o ../../deps/xdiff/CMakeFiles/xdiff.dir/xprepare.c.o ../../deps/xdiff/CMakeFiles/xdiff.dir/xutils.c.o ../../deps/ntlmclient/CMakeFiles/ntlmclient.dir/ntlm.c.o ../../deps/ntlmclient/CMakeFiles/ntlmclient.dir/util.c.o ../../deps/ntlmclient/CMakeFiles/ntlmclient.dir/unicode_iconv.c.o ../../deps/ntlmclient/CMakeFiles/ntlmclient.dir/crypt_openssl.c.o  -Wl,-rpath,/opt/local/lib /opt/local/libexec/openssl3/lib/libssl.dylib /opt/local/libexec/openssl3/lib/libcrypto.dylib /opt/local/lib/libpcre2-8.dylib /opt/local/lib/libssh2.dylib /opt/local/lib/libssl.dylib /opt/local/lib/libcrypto.dylib /opt/local/lib/libz.dylib -L/opt/local/lib -liconv
Undefined symbols:
  "_environ", referenced from:
      _environ$non_lazy_ptr in process.c.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [libgit2.1.8.0.dylib] Error 1

@ethomson
Copy link
Member

ethomson commented Apr 8, 2024

What version(s) of macOS lacks this?

@barracuda156
Copy link
Contributor Author

What version(s) of macOS lacks this?

Thank you for responding.
AFAIK, everything < 10.8 (personally tested on 10.6).

Implementation which I suggest (which is the standard one in fact) works from 10.4 through the latest 14.4.x.

@barracuda156
Copy link
Contributor Author

@ethomson Perhaps Windows CI failure is unrelated?

@ethomson
Copy link
Member

Thanks for the fix — yes, totally unrelated. 🙏

@ethomson ethomson merged commit 93c9444 into libgit2:main Apr 19, 2024
@barracuda156
Copy link
Contributor Author

@ethomson Thank you!

@barracuda156 barracuda156 deleted the apple branch April 19, 2024 09:01
@ethomson ethomson added the bug label May 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants