[Scons-users] InstallVersionedLibrary sometimes fails when symlinking
Managan, Rob
managan1 at llnl.gov
Mon Jun 24 14:24:02 EDT 2013
Andrew,
I will try to take a look at this week. I should disclose that I know
almost nothing about the Package builder so I will be relying heavily on
your notesŠ.
Thanks for the feedback!
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
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/24/13 11:13 AM, "Andrew C. Morrow" <andrew.c.morrow at gmail.com> wrote:
>Hi Rob -
>
>I found some time to experiment with this again. I've posted my
>example project to:
>https://github.com/acmorrow/scons-versioned-lib-demo
>
>There are a few issues:
>
>1) I don't see that the issue with rebuilding the symlink in the
>install or build directory if it is manually removed is fixed.
>2) The change to _INSTALL_TARGETS.extend needs, I think, to place its
>arguments in brackets (see README and or NOTE 2)
>3) Because InstallVersionedLib doesn't return all of the artifacts (I
>think) there is no way to apply different tags to each artifact (e.g.
>the dev link goes in a -dev package, and the hard file and soname
>symlink go in the main package). See (README or NOTEs 1 and 3).
>
>Also, there appears to be an issue with how Package works with targz,
>since it always encodes the variant directory and packaging directory
>into the tarfiles, instead of capturing only the $PREFIX path. FWIW, I
>also think it would be useful to instruct Package to not include any
>of the $PREFIX, for cases where the project is relocatable in the
>filesystem due to all targets having proper $ORIGIN settings in RPATH,
>etc. Just a thought. Perhaps there is already a way to do this.
>
>Thanks,
>Andrew
>
>
>
>On Tue, Jun 18, 2013 at 11:51 AM, Managan, Rob <managan1 at llnl.gov> wrote:
>> 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
>>
>> _______________________________________________
>> 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