SynoCommunity / spksrc

Cross compilation framework to create native packages for the Synology's NAS
https://synocommunity.com
Other
3.03k stars 1.23k forks source link

GIT 2.7.4-7 and SickRage update #2202

Closed flyescke closed 8 years ago

flyescke commented 8 years ago

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

GoodOmens83 commented 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).

Dr-Bean commented 8 years ago

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...

GoodOmens83 commented 8 years ago

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.

Dr-Bean commented 8 years ago

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.

GoodOmens83 commented 8 years ago

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.

Dr-Bean commented 8 years ago

Did you export TC_TARGET first, e.g. ENV += TC_TARGET = $(TC_TARGET) in cross/git/Makefile?

Dr-Bean commented 8 years ago

@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.

flyescke commented 8 years ago

Updated and tested, seems to be working again! Thx guys!

Dr-Bean commented 8 years ago

Perfect, thanks for the feedback. Let's close this one.