Bug 587391

Summary: New gc release breaks kaya build
Product: [Fedora] Fedora Reporter: Jochen Schmitt <jochen>
Component: gcAssignee: Rex Dieter <rdieter>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: low    
Version: rawhideCC: rdieter, sochotni
Target Milestone: ---Keywords: Triaged
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-05-03 17:01:40 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 555493    
Attachments:
Description Flags
patch to adjust to new gc api
none
Compiled Prelude.k none

Description Jochen Schmitt 2010-04-29 19:24:53 UTC
The current release of gc in rawhide (release gc-7.2-0.1 caused a FTBFS of koji (Please refer to BZ #555493).

The reason is a changed API of the function GC_free_space_divisor which caused a failure of the build.

Koni accept that a call of GC_free_space_divisor with a new value may return the old value.

Best Regards:

Jochen Schmitt

Comment 1 Jochen Schmitt 2010-04-29 19:31:37 UTC
Please s/koji/kaya/g

Comment 2 Rex Dieter 2010-04-29 19:44:42 UTC
oi, looks fun, I'll take a look.

Comment 3 Rex Dieter 2010-04-29 19:45:05 UTC
bonus item #1:  I get to
yum install happy
:)

Comment 4 Rex Dieter 2010-04-29 20:18:27 UTC
Created attachment 410224 [details]
patch to adjust to new gc api

First try at quick-n-dirty patch to fix build issue.  Though, still fails in test063 due to DSOImplicitLinking

I'll ping gc upstream to inquire if the api change here was intentional.

Comment 5 Jochen Schmitt 2010-05-02 19:37:17 UTC
Created attachment 410846 [details]
Compiled Prelude.k

Comment 6 Jochen Schmitt 2010-05-02 19:38:54 UTC
The issue is, that GC_set_free_space_divisor was called from a function which except a return value, so your suggested patch doesn't works for me. I have uploaded the C code which was produced during the compilation of Prelude.k

Comment 7 Rex Dieter 2010-05-02 19:48:27 UTC
Define how it doesn't work?  I'm not familiar with this, so you'll have to explicitly explain it.

Comment 8 Rex Dieter 2010-05-02 19:49:54 UTC
To be clear, the build/compilation of kaya completed for me with the aforemtioned patch, which is part of why I'm a little confused by your comment.

Comment 9 Rex Dieter 2010-05-02 19:50:27 UTC
and, I can post a scratch build with the patch if you want.

Comment 10 Rex Dieter 2010-05-02 20:15:56 UTC
ok, I see this too then,

posix/scgi.ks:      old = gcSetFSD(20); gc(); void(gcSetFSD(old));
which would need adjustments, as well as any other code expecting a return value, sure.

Comment 11 Rex Dieter 2010-05-02 20:45:42 UTC
OK, looks like there's a new api for getting this value, according to gc.h

GC_API void GC_CALL GC_set_free_space_divisor(GC_word);
GC_API GC_word GC_CALL GC_get_free_space_divisor(void);

See the new GC_get_free_space_divisor call.

Comment 12 Rex Dieter 2010-05-03 17:01:40 UTC
upstream gc responded that the change in api is intentional.  There is
GC_VERSION_MAJOR/MINOR defined in gc_version.h , 
So, wrapping the new api in something like
#if GC_VERSION_MAJOR >= 7 && GC_VERSION_MINOR >= 2
...
#endif
is possible, but not sure how/if ghc supports cpp #if statements. ?

So, let's bounce this back to bug #555493, and consider this notabug (I guess), as I don't think reverting the gc api is a good idea at this point.

I'll work on another patch to implement a new gcGetFSD function to match the newer api.