Closed flyescke closed 8 years ago
Seems that now the build environment is x64 the flag XDL_FAST_HASH in https://github.com/git/git/blob/master/config.mak.uname is picking up for everything (because git checks the build environment to use that feature and not the host environment).
That option does not work for QoriQ (or other possible powerpc environments):
http://lists.openembedded.org/pipermail/openembedded-devel/2014-September/098024.html
Also listed in the Makefile for git:
Define XDL_FAST_HASH to use an alternative line-hashing method in the diff algorithm. It gives a nice speedup if your processor has fast unaligned word loads. Does NOT work on big-endian systems! Enabled by default on x86_64.
Patch:
https://dev.openwrt.org/browser/packages/net/git/patches/200-disable_fasthash.patch?rev=37239
@Dr-Bean : Another option might be to just patch in the host variable instead of uname_M so this will be set properly for x86_64 hosts. Not really sure how to do this (unless you can apply patches for only certain arches).
How nice. Let's patch it out for now. We could presumably see if replacing $(uname_M)
with $(TC_TARGET)
works, but otoh we've managed without the functionality so far...
Not around to test but do you think replacing ifeq ($(uname_M),x86_64)
with ifeq ($(findstring $(ARCH),$(x64_ARCHES)),$(ARCH))
work? Or would I also need to include include ../../mk/spksrc.cross-cc.mk
.
This is the only place I can find $(uname_M)
in the git source.
Well, let's translate uname_M
and x86_64
to variables spksrc provides. How about this:
Instead of using uname
, use $(TC_TARGET)
. Instead of x86_64
, we can compare against the equivalent value that TC_TARGET
sets for x86_64 arches: x86_64-pc-linux-gnu
.
Easy, and probably the most stable solution we can implement.
Hmm I've tried playing around for a while. $(TC_TARGET)
is blank in config.mak.uname
. $(ARCH)
produces a value but $(x64_ARCHES)
does not.
I'll open a PR soon that just patches out that line. I can play around with getting something to pick up properly later - but fixing this bug should be a priority and just removing that bit of code is the easiest solution.
Did you export TC_TARGET first, e.g. ENV += TC_TARGET = $(TC_TARGET)
in cross/git/Makefile?
@flyescke A new set of git
packages has been published. Can you update, and report back if your issue has been fixed please?
Note that it may take a couple of hours until the package shows up in Package Center due to serverside caching.
Updated and tested, seems to be working again! Thx guys!
Perfect, thanks for the feedback. Let's close this one.
Hi,
Since I've updated the GIT package to 2.7.4-7 I'm getting errors in SickRage when I try to update the application. Could this be related to the new version or should I log this with SickRage? I have a Synology DS413 btw.
git: xdiff/xutils.c:358: xdl_hash_record: Assertion `*ptr == '\n'' failed. error: merge died of signal 6, treat as error for now
Kind regards,
Kevin