Reputation: 6281
I'm tring to compile git from source (https://github.com/git/git.git) on a Solaris machine (SunOS server_name 5.11 11.4.0.15.0 sun4v sparc sun4v).
I keep getting the following error when I use make:
-bash-4.4$ gmake
Makefile:2511: *** multiple target patterns. Stop.
Any suggestions?
Below is the link to the line right from source: https://github.com/git/git/blob/ebf3c04b262aa27fbb97f8a0156c2347fecafafb/Makefile#L2511
EDIT: Adding version of gmake used for attempt:
-bash-4.4$ gmake -v
GNU Make 4.2.1
Built for sparc-sun-solaris2.11
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
EDIT #2: Followed MadScientist advice and added "info" command to show the content of those variables:
-bash-4.4$ gmake
OBJECTS= abspath.o add-interactive.o add-patch.o advice.o alias.o alloc.o apply.o archive-tar.o archive-zip.o archive.o attr.o base85.o bisect.o blame.o blob.o bloom.o branch.o bulk-checkin.o bundle.o cache-tree.o chdir-notify.o checkout.o chunk-format.o color.o column.o combine-diff.o commit-graph.o commit-reach.o commit.o compat/obstack.o compat/terminal.o config.o connect.o connected.o convert.o copy.o credential.o csum-file.o ctype.o date.o decorate.o delta-islands.o diff-delta.o diff-merges.o diff-lib.o diff-no-index.o diff.o diffcore-break.o diffcore-delta.o diffcore-order.o diffcore-pickaxe.o diffcore-rename.o diffcore-rotate.o dir-iterator.o dir.o editor.o entry.o environment.o ewah/bitmap.o ewah/ewah_bitmap.o ewah/ewah_io.o ewah/ewah_rlw.o exec-cmd.o fetch-negotiator.o fetch-pack.o fmt-merge-msg.o fsck.o fsmonitor.o gettext.o gpg-interface.o graph.o grep.o hash-lookup.o hashmap.o help.o hex.o ident.o json-writer.o kwset.o levenshtein.o line-log.o line-range.o linear-assignment.o list-objects-filter-options.o list-objects-filter.o list-objects.o ll-merge.o lockfile.o log-tree.o ls-refs.o mailinfo.o mailmap.o match-trees.o mem-pool.o merge-blobs.o merge-ort.o merge-ort-wrappers.o merge-recursive.o merge.o mergesort.o midx.o name-hash.o negotiator/default.o negotiator/noop.o negotiator/skipping.o notes-cache.o notes-merge.o notes-utils.o notes.o object-file.o object-name.o object.o oid-array.o oidmap.o oidset.o pack-bitmap-write.o pack-bitmap.o pack-check.o pack-objects.o pack-revindex.o pack-write.o packfile.o pager.o parallel-checkout.o parse-options-cb.o parse-options.o patch-delta.o patch-ids.o path.o pathspec.o pkt-line.o preload-index.o pretty.o prio-queue.o progress.o promisor-remote.o prompt.o protocol.o protocol-caps.o prune-packed.o quote.o range-diff.o reachable.o read-cache.o rebase-interactive.o rebase.o ref-filter.o reflog-walk.o refs.o refs/debug.o refs/files-backend.o refs/iterator.o refs/packed-backend.o refs/ref-cache.o refspec.o remote.o replace-object.o repo-settings.o repository.o rerere.o reset.o resolve-undo.o revision.o run-command.o send-pack.o sequencer.o serve.o server-info.o setup.o shallow.o sideband.o sigchain.o sparse-index.o split-index.o stable-qsort.o strbuf.o streaming.o string-list.o strmap.o strvec.o sub-process.o submodule-config.o submodule.o symlinks.o tag.o tempfile.o thread-utils.o tmp-objdir.o trace.o trace2.o trace2/tr2_cfg.o trace2/tr2_cmd_name.o trace2/tr2_dst.o trace2/tr2_sid.o trace2/tr2_sysenv.o trace2/tr2_tbuf.o trace2/tr2_tgt_event.o trace2/tr2_tgt_normal.o trace2/tr2_tgt_perf.o trace2/tr2_tls.o trailer.o transport-helper.o transport.o tree-diff.o tree-walk.o tree.o unpack-trees.o upload-pack.o url.o urlmatch.o usage.o userdiff.o utf8.o varint.o version.o versioncmp.o walker.o wildmatch.o worktree.o wrapper.o write-or-die.o ws.o wt-status.o xdiff-interface.o zlib.o unix-socket.o unix-stream-server.o compat/simple-ipc/ipc-shared.o compat/simple-ipc/ipc-unix-socket.o sha1dc_git.o sha1dc/sha1.o sha1dc/ubc_check.o sha256/block/sha256.o compat/strcasestr.o compat/mkdtemp.o compat/memmem.o compat/qsort_s.o compat/regex/regex.o builtin/add.o builtin/am.o builtin/annotate.o builtin/apply.o builtin/archive.o builtin/bisect--helper.o builtin/blame.o builtin/branch.o builtin/bugreport.o builtin/bundle.o builtin/cat-file.o builtin/check-attr.o builtin/check-ignore.o builtin/check-mailmap.o builtin/check-ref-format.o builtin/checkout--worker.o builtin/checkout-index.o builtin/checkout.o builtin/clean.o builtin/clone.o builtin/column.o builtin/commit-graph.o builtin/commit-tree.o builtin/commit.o builtin/config.o builtin/count-objects.o builtin/credential-cache--daemon.o builtin/credential-cache.o builtin/credential-store.o builtin/credential.o builtin/describe.o builtin/diff-files.o builtin/diff-index.o builtin/diff-tree.o builtin/diff.o builtin/difftool.o builtin/env--helper.o builtin/fast-export.o builtin/fast-import.o builtin/fetch-pack.o builtin/fetch.o builtin/fmt-merge-msg.o builtin/for-each-ref.o builtin/for-each-repo.o builtin/fsck.o builtin/gc.o builtin/get-tar-commit-id.o builtin/grep.o builtin/hash-object.o builtin/help.o builtin/index-pack.o builtin/init-db.o builtin/interpret-trailers.o builtin/log.o builtin/ls-files.o builtin/ls-remote.o builtin/ls-tree.o builtin/mailinfo.o builtin/mailsplit.o builtin/merge-base.o builtin/merge-file.o builtin/merge-index.o builtin/merge-ours.o builtin/merge-recursive.o builtin/merge-tree.o builtin/merge.o builtin/mktag.o builtin/mktree.o builtin/multi-pack-index.o builtin/mv.o builtin/name-rev.o builtin/notes.o builtin/pack-objects.o builtin/pack-redundant.o builtin/pack-refs.o builtin/patch-id.o builtin/prune-packed.o builtin/prune.o builtin/pull.o builtin/push.o builtin/range-diff.o builtin/read-tree.o builtin/rebase.o builtin/receive-pack.o builtin/reflog.o builtin/remote-ext.o builtin/remote-fd.o builtin/remote.o builtin/repack.o builtin/replace.o builtin/rerere.o builtin/reset.o builtin/rev-list.o builtin/rev-parse.o builtin/revert.o builtin/rm.o builtin/send-pack.o builtin/shortlog.o builtin/show-branch.o builtin/show-index.o builtin/show-ref.o builtin/sparse-checkout.o builtin/stash.o builtin/stripspace.o builtin/submodule--helper.o builtin/symbolic-ref.o builtin/tag.o builtin/unpack-file.o builtin/unpack-objects.o builtin/update-index.o builtin/update-ref.o builtin/update-server-info.o builtin/upload-archive.o builtin/upload-pack.o builtin/var.o builtin/verify-commit.o builtin/verify-pack.o builtin/verify-tag.o builtin/worktree.o builtin/write-tree.o common-main.o git.o daemon.o http-backend.o imap-send.o sh-i18n--envsubst.o shell.o http-fetch.o http-push.o t/helper/test-fake-ssh.o t/helper/test-tool.o t/helper/test-advise.o t/helper/test-bitmap.o t/helper/test-bloom.o t/helper/test-chmtime.o t/helper/test-config.o t/helper/test-crontab.o t/helper/test-ctype.o t/helper/test-date.o t/helper/test-delta.o t/helper/test-dir-iterator.o t/helper/test-drop-caches.o t/helper/test-dump-cache-tree.o t/helper/test-dump-fsmonitor.o t/helper/test-dump-split-index.o t/helper/test-dump-untracked-cache.o t/helper/test-example-decorate.o t/helper/test-fast-rebase.o t/helper/test-genrandom.o t/helper/test-genzeros.o t/helper/test-hash-speed.o t/helper/test-hash.o t/helper/test-hashmap.o t/helper/test-index-version.o t/helper/test-json-writer.o t/helper/test-lazy-init-name-hash.o t/helper/test-match-trees.o t/helper/test-mergesort.o t/helper/test-mktemp.o t/helper/test-oid-array.o t/helper/test-oidmap.o t/helper/test-online-cpus.o t/helper/test-parse-options.o t/helper/test-parse-pathspec-file.o t/helper/test-path-utils.o t/helper/test-pcre2-config.o t/helper/test-pkt-line.o t/helper/test-prio-queue.o t/helper/test-proc-receive.o t/helper/test-progress.o t/helper/test-reach.o t/helper/test-read-cache.o t/helper/test-read-graph.o t/helper/test-read-midx.o t/helper/test-ref-store.o t/helper/test-regex.o t/helper/test-repository.o t/helper/test-revision-walking.o t/helper/test-run-command.o t/helper/test-scrap-cache-tree.o t/helper/test-serve-v2.o t/helper/test-sha1.o t/helper/test-sha256.o t/helper/test-sigchain.o t/helper/test-simple-ipc.o t/helper/test-strcmp-offset.o t/helper/test-string-list.o t/helper/test-submodule-config.o t/helper/test-submodule-nested-repo-config.o t/helper/test-subprocess.o t/helper/test-trace2.o t/helper/test-urlmatch-normalization.o t/helper/test-userdiff.o t/helper/test-wildmatch.o t/helper/test-windows-named-pipe.o t/helper/test-write-cache.o t/helper/test-xml-encode.o xdiff/xdiffi.o xdiff/xemit.o xdiff/xhistogram.o xdiff/xmerge.o xdiff/xpatience.o xdiff/xprepare.o xdiff/xutils.o fuzz-commit-graph.o fuzz-pack-headers.o fuzz-pack-idx.o http.o http-walker.o remote-curl.o
LIB_H=(C) (at (sparc-sun-solaris2.5.1), 09:52:57 1 1993-1998 1998 2, 4.3.17 Andrei Bucharest, Copyright Foundation, Foundation; Free GIT GNU General Hulubei Inc. Interactive Jun License Pitis, Public Romania Software Tools Tudor Written add-interactive.h advice.h alias.h alloc.h and and/or any apply.h archive.h as attr.h banned.h bisect.h blame.h blob.h block-sha1/sha1.h bloom.h branch.h builtin.h bulk-checkin.h bundle.h by cache-tree.h cache.h can chdir-notify.h checkout.h chunk-format.h color.h column.h commit-graph.h commit-reach.h commit-slab-decl.h commit-slab-impl.h commit-slab.h commit.h compat/apple-common-crypto.h compat/bswap.h compat/compiler.h compat/mingw.h compat/msvc.h compat/nedmalloc/malloc.c.h compat/nedmalloc/nedmalloc.h compat/obstack.h compat/poll/poll.h compat/precompose_utf8.h compat/regex/regex.h compat/regex/regex_internal.h compat/sha1-chunked.h compat/terminal.h compat/vcbuild/include/sys/param.h compat/vcbuild/include/sys/time.h compat/vcbuild/include/sys/utime.h compat/vcbuild/include/unistd.h compat/vcbuild/include/utime.h compat/win32.h compat/win32/alloca.h compat/win32/dirent.h compat/win32/lazyload.h compat/win32/path-utils.h compat/win32/pthread.h compat/win32/syslog.h config.h connect.h connected.h convert.h credential.h csum-file.h decorate.h delta-islands.h delta.h diff-merges.h diff.h diffcore.h dir-iterator.h dir.h either entry.h environment.h ewah/ewok.h ewah/ewok_rlw.h exec-cmd.h fetch-negotiator.h fetch-pack.h fmt-merge-msg.h free fsck.h fsmonitor.h gettext.h git-compat-util.h gpg-interface.h graph.h grep.h hash-lookup.h hash.h hashmap.h help.h http.h is it iterator.h json-writer.h khash.h kwset.h later levenshtein.h line-log.h line-range.h linear-assignment.h list-objects-filter-options.h list-objects-filter.h list-objects.h list.h ll-merge.h lockfile.h log-tree.h ls-refs.h mailinfo.h mailmap.h mem-pool.h merge-blobs.h merge-ort-wrappers.h merge-ort.h merge-recursive.h mergesort.h midx.h modify negotiator/default.h negotiator/noop.h negotiator/skipping.h notes-cache.h notes-merge.h notes-utils.h notes.h object-store.h object.h of oid-array.h oidmap.h oidset.h option) or pack-bitmap.h pack-objects.h pack-revindex.h pack.h packfile.h parallel-checkout.h parse-options.h patch-ids.h path.h pathspec.h pkt-line.h ppc/sha1.h pretty.h prio-queue.h progress.h promisor-remote.h prompt.h protocol-caps.h protocol.h prune-packed.h published quote.h range-diff.h reachable.h rebase-interactive.h rebase.h redistribute ref-filter.h reflog-walk.h refs.h refs/packed-backend.h refs/ref-cache.h refs/refs-internal.h refspec.h remote.h replace-object.h repository.h rerere.h reset.h resolve-undo.h revision.h run-command.h send-pack.h sequencer.h serve.h sha1dc/sha1.h sha1dc/ubc_check.h sha1dc_git.h sha256/block/sha256.h sha256/gcrypt.h shallow.h shortlog.h sideband.h sigchain.h simple-ipc.h software; sparse-index.h split-index.h strbuf.h streaming.h string-list.h strmap.h strvec.h sub-process.h submodule-config.h submodule.h tag.h tar.h tempfile.h terms the thread-utils.h tmp-objdir.h trace.h trace2.h trace2/tr2_cfg.h trace2/tr2_cmd_name.h trace2/tr2_dst.h trace2/tr2_sid.h trace2/tr2_sysenv.h trace2/tr2_tbuf.h trace2/tr2_tgt.h trace2/tr2_tls.h trailer.h transport-internal.h transport.h tree-walk.h tree.h under unicode-width.h unix-socket.h unix-stream-server.h unpack-trees.h upload-pack.h url.h urlmatch.h userdiff.h utf8.h varint.h version version. version.h walker.h wildmatch.h worktree.h wt-status.h xdiff-interface.h xdiff/xdiff.h xdiff/xdiffi.h xdiff/xemit.h xdiff/xinclude.h xdiff/xmacros.h xdiff/xprepare.h xdiff/xtypes.h xdiff/xutils.h you your
GENERATED_H= command-list.h config-list.h
Makefile:2515: *** multiple target patterns. Stop.
-bash-4.4$
Upvotes: 1
Views: 260
Reputation: 377
Solaris 11 includes many common open source utilities, including git
. The stock versions will be better supported than anything you compile yourself, but if you do want to do that, the framework that the Solaris engineers use to build them can be found at https://github.com/oracle/solaris-userland. See https://github.com/oracle/solaris-userland/blob/master/components/git/Makefile for the details.
I don't know how easy it is for people outside the Solaris engineering org to do the build using the Userland framework (when I worked there, there was a fair amount of one-time setup, though I think most of that is documented in some fashion in the repo), and doing so is certainly not officially supported, but you should be able to look at that Makefile
to figure out what the required build tools are, what options are used, what environment variables need to be set, etc, as well as use the patches that are applied to the official builds (in the patches
directory).
Whether doing any of that will help you with your specific problem, I can't tell (it's not clear if making git
refer to git
instead of the Interactive Tools command was enough to get your build to succeed), but if you or anyone else needs some assistance in building open source tools on Solaris, this repo should be your first stop.
Upvotes: 2
Reputation: 101041
There's no way to know from this. It all depends on what the values of the OBJECTS
, LIB_H
, and GENERATED_H
variables are. You can try adding things like $(info OBJECTS=$(OBJECTS))
into your makefile to print these values.
This error is described in the GNU make manual which says about this one:
These errors are generated for malformed static pattern rules (see Syntax of Static Pattern Rules). [It] means there are multiple pattern characters (%) in the target-pattern part [...].
Looks like some of the filenames detected by GNU make contain percent %
characters in them; make does not like that.
Also when asking about GNU make issues, especially on non-Linux platforms, it's helpful to provide the version of GNU make you're using (make --version
)--it's helpful everywhere but on Linux systems most people are using the latest or close to it. On other systems people might be using very old versions.
ETA
Well, I can't quite explain why you're seeing this exact error but the root of the problem is clear. If you look at the contents of LIB_H
you'll see there's all kinds of crap in there related to copyrights, version info, etc. and not just filenames:
LIB_H=LIB_H=(C) (at (sparc-sun-solaris2.5.1), 09:52:57 1 1993-1998 1998 2, 4.3.17 Andrei Bucharest, Copyright Foundation, Foundation; Free GIT GNU General Hulubei Inc. Interactive Jun License Pitis, Public Romania Software Tools Tudor Written add-interactive.h ...
It's clear that this variable is intended to have only filenames in it, and not this other junk. Apparently some tool on your system is "helpfully" generating a bunch of extra output that is not expected.
This value is filled in via this statement:
LIB_H := $(sort $(patsubst ./%,%,$(shell git ls-files '*.h' ':!t/' ':!Documentation/' 2>/dev/null || \
$(FIND) . \
-name .git -prune -o \
-name t -prune -o \
-name Documentation -prune -o \
-name '*.h' -print)))
Of these, I suspect the culprit is your version of git
, which is maybe not the "standard" Git but something else?
If you run the command:
git ls-files '*.h' ':!t/' ':!Documentation/' 2>/dev/null
from your shell prompt (in this Git repo) do you see this copyright output shown?
Upvotes: 3