[Scons-users] InstallVersionedLibrary sometimes fails when symlinking

Managan, Rob managan1 at llnl.gov
Tue Jun 18 11:51:13 EDT 2013


I just got a test added and made a pull request. Your email had me look at
this again and I just updated the fork to include a potential fix.

Please try it out and is there a way to make a simple test case?

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Rob Managan email managan at llnl.gov
LLNL phone: 925-423-0903
P.O. Box 808, L-095 FAX: 925-422-3389
Livermore, CA 94551-0808





On 6/18/13 5:34 AM, "Andrew C. Morrow" <andrew.c.morrow at gmail.com> wrote:


>Hi Rob -

>

>Any update on the dependency tracking issues with InstallVersionedLibrary?

>

>Thanks,

>Andrew

>

>

>On Mon, Jun 3, 2013 at 11:41 AM, Managan, Rob <managan1 at llnl.gov> wrote:

>> Hi Andrew,

>>

>> Good catch. They probably are not cleaned as well. Let me see what is

>> involved to fix that.

>>

>> Rob

>>

>> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

>> Rob Managan email managan at llnl.gov

>> LLNL phone: 925-423-0903

>> P.O. Box 808, L-095 FAX: 925-422-3389

>> Livermore, CA 94551-0808

>>

>>

>> On 6/2/13 10:13 AM, "Andrew C. Morrow" <andrew.c.morrow at gmail.com>

>>wrote:

>>

>>

>> This is most likely related to the above, but it also appears that the

>> installed symlinks are not captured by FindInstalledFiles, which means

>>that

>> Package (if I'm reading it correctly) won't package the symlinks.

>>

>> Thanks,

>> Andrew

>>

>>

>>

>> On Sat, Jun 1, 2013 at 2:09 PM, Andrew C. Morrow

>><andrew.c.morrow at gmail.com>

>> wrote:

>>>

>>>

>>> Hi Rob -

>>>

>>> Sorry it took me a couple days to get back to this. I just tried out

>>>your

>>> branch. The good news is that the issue with the build failing due to

>>>errors

>>> while symlinking is fixed, so that is a big help.

>>>

>>> While experimenting with the fix though, I've noticed another issue.

>>>Using

>>> the same test case as before:

>>>

>>> $ python $MYSCONS/script/scons.py --prefix=$(pwd)/install install

>>> SCons import failed. Trying to run from source directory

>>> scons: Reading SConscript files ...

>>> scons: done reading SConscript files.

>>> scons: Building targets ...

>>> Install file: "build/foo.hpp" as "install/include/foo.hpp"

>>> g++ -o build/foo.os -c -fPIC build/foo.cpp

>>> g++ -o build/libfoo.0.1.2.dylib -dynamiclib -current_version 0.1.2

>>> -compatibility_version 0.1.2 -undefined dynamic_lookup build/foo.os

>>> Install file: "build/libfoo.0.1.2.dylib" as

>>> "install/lib/libfoo.0.1.2.dylib"

>>> scons: done building targets.

>>>

>>> Everything builds OK. Lets remove the symlink in the install directory:

>>>

>>> $ rm install/lib/libfoo.dylib

>>>

>>> Rerunning the build claims install is up to date:

>>>

>>> $ python $MYSCONS/script/scons.py --prefix=$(pwd)/install install

>>> SCons import failed. Trying to run from source directory

>>> scons: Reading SConscript files ...

>>> scons: done reading SConscript files.

>>> scons: Building targets ...

>>> scons: `install' is up to date.

>>> scons: done building targets.

>>>

>>> And the file was not re-created:

>>>

>>> $ ls install/lib/libfoo.dylib

>>> ls: install/lib/libfoo.dylib: No such file or directory

>>>

>>> The same effect is observed removing libfoo.dylib from the build

>>> directory. So it appears that there are some dependency edges that are

>>>not

>>> being captured correctly.

>>>

>>> Thanks,

>>> Andrew

>>>

>>>

>>>

>>> On Thu, May 30, 2013 at 2:08 PM, Managan, Rob <managan1 at llnl.gov>

>>>wrote:

>>>>

>>>> Andrew,

>>>>

>>>> I have a proposed fix at

>>>>https://bitbucket.org/managan/scons_versionedlib

>>>> .

>>>> Let me know if it works for you.

>>>> I added code to delete any existing symlink before creating them

>>>>again.

>>>> That was how it failed for me even if the error message seemed to say

>>>> something else. I also made sure the symlinks in the install

>>>>directory were

>>>> set up the same as in the build directory. Not sure how that ever was

>>>> different.

>>>>

>>>> I need to add a test case before generating a pull request but this

>>>> should be good to go.

>>>>

>>>> Rob

>>>>

>>>> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

>>>> Rob Managan email managan at llnl.gov

>>>> LLNL phone: 925-423-0903

>>>> P.O. Box 808, L-095 FAX: 925-422-3389

>>>> Livermore, CA 94551-0808

>>>>

>>>>

>>>> On 5/27/13 10:46 PM, "William Deegan" <bill at baddogconsulting.com>

>>>>wrote:

>>>>

>>>> Andrew,

>>>>

>>>> On May 27, 2013, at 10:04 PM, Andrew C. Morrow

>>>> <andrew.c.morrow at gmail.com> wrote:

>>>>

>>>>

>>>> On Mon, May 27, 2013 at 11:03 PM, William Deegan

>>>> <bill at baddogconsulting.com> wrote:

>>>>>

>>>>> Andrew,

>>>>>

>>>>> Were you able to repro this? If so, should I file a ticket?

>>>>>

>>>>>

>>>>> Unfortunately, very busy IRL at the moment so haven't had a chance to

>>>>> try it out.

>>>>> Lots of work leading up to a conference, once that's over (6/6) I'll

>>>>> have some time to take a look at this.

>>>>

>>>>

>>>> Sounds good. I just wanted to make sure it didn't get missed. Built in

>>>> support for versioned shared libraries is a really useful feature and

>>>>I'd

>>>> very much like to use it. I'm sure I'm not the only one.

>>>>

>>>>>

>>>>>

>>>>>

>>>>> Also, is there some documentation on the SCons bugfix and release

>>>>>cycle?

>>>>> I've noticed that there are only infrequently 'z +1' releases of

>>>>>SCons

>>>>> x.y.z. If the problem with InstallVersionedLibrary is legitimate,

>>>>>should I

>>>>> expect to see a fix in a to-be-released-somewhat-soonish SCons 2.3.1

>>>>>bugfix

>>>>> release, or longer term in some future SCons 2.4 release?

>>>>>

>>>>>

>>>>>

>>>>> SCons is a volunteer run open source project.

>>>>> If you want to ensure that a fix is made, you'll either have to

>>>>>submit a

>>>>> fix, hope that someone in the community picks up the issue and fixes

>>>>>it, or

>>>>> finance a consultant to resolve the issue for you.

>>>>

>>>>

>>>> I'm aware of the nature of the project. Still, this is a feature

>>>> documented in the SCons manual pages. Someone loved this feature

>>>>enough to

>>>> shepherd it through development, code review, testing, documentation,

>>>>and

>>>> release.

>>>>

>>>>

>>>> Though all of this is true, that doesn't guarantee that the developer

>>>>of

>>>> any feature is immediately available to address a bug.

>>>>

>>>>

>>>>>

>>>>> In general we will release a new version either when something

>>>>>notable

>>>>> has been fixed or if there's been a sufficient number of small fixes.

>>>>> If a fix is submitted for your issue (assuming it's not user error

>>>>> (which from a cursory glance it doesn't look like it is)), then it

>>>>>would be

>>>>> in the next release.

>>>>

>>>>

>>>> Right, but "next release" at which revision level, and on (roughly)

>>>>what

>>>> time scale? Without some insight into the release process, intended

>>>> schedule, defect triage process, backport policy, etc., it is

>>>>difficult to

>>>> reason about whether I should abandon my attempts to use this new

>>>>feature or

>>>> not. Even if I were to debug this particular issue and submit a patch

>>>>as you

>>>> have suggested, the adoption of that fix into a published release may

>>>>not

>>>> mesh with my own release schedule. I'm not complaining - I merely

>>>>want to

>>>> better understand: If I or someone else submitted a patch tonight,

>>>>would it

>>>> likely land in a 2.3.1 release in one month, or in a 2.4.0 in 6

>>>>months, or

>>>> something else entirely?

>>>>

>>>>

>>>> If this is a bug in an existing feature (and assuming the fix doesn't

>>>> require breaking compatability), then the fix would show in the next

>>>>minor

>>>> release published after a fix is accepted.

>>>> This likely means 2.3.1, however if other less trivial (assuming the

>>>>fix

>>>> is fairly trivial) changes have already landed in the main branch,

>>>>then it

>>>> might appear in the 2.4.0 branch.

>>>> There is not direct correlation between a 2.3.1 release or a 2.4.0

>>>> release and a timeline.

>>>>

>>>>

>>>>

>>>>>

>>>>> Also keep in mind all the work is done in a public mercurial repo

>>>>>hosted

>>>>> on bitbucket, so as soon as anyone published a fix you can try it

>>>>>against

>>>>> your build, and use that code if it resolves your issue.

>>>>

>>>>

>>>> That works well for projects that I plan to build for myself. However,

>>>> for open source projects which use SCons as the publicly facing build

>>>>system

>>>> it is not a realistic solution to require downstream consumers to use

>>>>the

>>>> SCons mainline or manually patch their SCons installs. Such projects

>>>>are

>>>> constrained to use the demonstrably working subset of the official

>>>>SCons

>>>> releases that make their way into distribution and language package

>>>> repositories. Potentially, a project could drag in the entire slug of

>>>>fixed

>>>> code and redefine the InstallVersionedLibrary, but this has different

>>>> problems.

>>>>

>>>>

>>>> Fair enough.

>>>> Note however that SCons can be run in place with a scons-local

>>>>package,

>>>> so you could unpackage a build scons-local package from the latest

>>>>code and

>>>> check that into your project until such time as the needed fix is

>>>>released.

>>>>

>>>> Hope that helps.

>>>>

>>>> In the meantime, it looks like Rob is hot on the trail of this

>>>>issue.. so

>>>> stay tuned.

>>>>

>>>> -Bill

>>>>

>>>> _______________________________________________

>>>> Scons-users mailing list

>>>> Scons-users at scons.org

>>>> http://four.pairlist.net/mailman/listinfo/scons-users

>>>>

>>>

>>

>>

>> _______________________________________________

>> Scons-users mailing list

>> Scons-users at scons.org

>> http://four.pairlist.net/mailman/listinfo/scons-users

>>

>_______________________________________________

>Scons-users mailing list

>Scons-users at scons.org

>http://four.pairlist.net/mailman/listinfo/scons-users




More information about the Scons-users mailing list