Opened 6 years ago

Closed 6 years ago

#1468 closed defect (fixed)

Static extensions with inter-component dependencies must be installed twice

Reported by: evhan Owned by: evhan
Priority: major Milestone: 5.0
Component: core tools Version: 5.0.0
Keywords: Cc:
Estimated difficulty:

Description

If an egg has one file a.scm that depends on another b.scm, the first time the egg is built the generated link file a.link won't include b.o. Subsequent builds work fine, once the extension has been installed.

There are two reasons for this:

  1. The build directory isn't considered when looking for static extensions.
  2. Even if it were, object files in the build directory are created with names that include "static" (e.g. b.static.o), which aren't found when looking for static objects (e.g. b.o). They are installed without the "static" bit, so once they're in the repository everything works OK.

I think the fix for item 1 is to make find-static-extension consider ##sys#setup-mode just like find-dynamic-extension already does, and to prepend the current directory to the search path when it's enabled. (It should also append it when disabled, for consistency with its dynamic counterpart.)

I'm less sure what to do about item 2.

Change History (3)

comment:1 Changed 6 years ago by felix winkelmann

In setup mode, we could also accept a .static.o file extension, when the file exists, but I'm not sure how much uglyness this introduces.

comment:2 Changed 6 years ago by evhan

Owner: set to evhan
Status: newaccepted

That approach doesn't look too bad, I should have something working soon.

Another option would be to put the object files we want to keep around for installation in a subdirectory as they're built, but I think that would be more complicated since it would then have to be created, added to the library path, etc.

comment:3 Changed 6 years ago by felix winkelmann

Resolution: fixed
Status: acceptedclosed
Note: See TracTickets for help on using tickets.