Opened 7 years ago
Closed 7 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:
- The build directory isn't considered when looking for static extensions.
- 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 7 years ago by
comment:2 Changed 7 years ago by
Owner: | set to evhan |
---|---|
Status: | new → accepted |
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 7 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
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.