[Scons-users] Hierarchical builds not possible (TAR/RPM packaging)

Werner Reisberger wr at pure.ch
Fri Jan 7 10:16:33 EST 2022


On 2022-01-05 19:13, Bill Deegan wrote:
> I'll try and take a look at your example repo over the next few days
> and see I can get it to work.
> -Bill

Thanks Bill. As I wrote, I can build a rpm in a sub directory when I 
alter the intermediate tar file with "--transform ..." flags but this 
hack works only on Centos 8 so far.

I would had to dig deep into the code to understand what goes on here 
but my python knowledge is too limited.

--Werner

> On Wed, Jan 5, 2022 at 7:42 AM Mats Wichmann <mats at wichmann.us> wrote:
> 
>> On 1/5/22 01:39, Werner Reisberger wrote:
>> 
>>> BTW: You advise against using SConscriptChdir(1) but this isn't
>> working
>>> anyway. I couldn't see any effect using this call with any
>> parameters.
>>> 
>>> I also think that the statement on the SCons man page (in the
>>> SConscriptChdir chapter) is wrong:
>>> 
>>>>>> By default, scons changes its working directory to the
>> directory in
>>>>>> which each subsidiary SConscript file lives.
>>> 
>>> According to the tests I did the below quoted statement on the
>> SCons
>>> user page is right.
>>> 
>>> I regard man pages as reference for the usage of a tool. They
>> should be
>>> as clear and error free as possible.
>>> 
>>> --Werner
>> 
>> Sure.  I've been on a campaign to improve the docs over the past
>> couple
>> of years, and we'll fix up what's unclear here. The challenge being
>> to
>> figure how to say what's needed completely but still somewhat
>> concisely..
>> The below will probably fail the concise test, fwiw.
>> 
>> Part of the problem is both statements are true as far as they go,
>> and
>> there's context involved.
>> 
>> The statement about by default changing directories refers to the
>> scan
>> phase of operation.  As a given SConscript is processed, it is
>> processed
>> in the context of the directory in which is appears, unless you
>> told it
>> not to.  Although it's not the most insctructive example in the
>> world,
>> there's a test that shows this in action:
>> 
>> 
> https://github.com/SCons/scons/blob/master/test/SConscript/SConscriptChdir.py
>> [1]
>> 
>> The SConscriptChdir stuff is only for the script scanning phase,
>> when
>> you are capturing information, it has no effect during the build
>> phase.
>> 
>> The information collected during the processing of an SConscript is
>> mainly captured in the form of Nodes, of which SCons builds a tree
>> -
>> that's the objective of the scan phase. If you asked for a program
>> "app"
>> to be built from source file "app.c", there will be a Node for
>> each.
>> The app.c node is able to refer to the disk file since it exists,
>> while
>> the app node captures that it depends on the app.c node, and that a
>> particular builder is needed if app (if the disk file exists) is
>> out of
>> date with respect to that node (plus lots more information).
>> 
>> The nodes include how to locate themselves relative to the project
>> root,
>> so when it comes time for the build phase, the User Guide statement
>> about staying at the top level *when commands are issued* can be
>> true,
>> because the information exists to do so.  In fact the section
>> heading of
>> the user guide section you pointed to is actually restating the
>> manpage
>> claim about SConscripts in different wording:
>> 
>> 14.2 Path Names Are Relative to the SConscript Directory
>> 
>> The packaging code for rpm is particularly convoluted because
>> there's a
>> standard SCons-type build, where some external tool is called, but
>> that
>> tool is rpmbuild, which processes the specfile which that SCons run
>> has
>> constructed, which contains instructions to call scons again in the
>> form of:
>> 
>> %install
>> scons --install-sandbox="$RPM_BUILD_ROOT" "$RPM_BUILD_ROOT"
>> 
>> So now the challenge is to sort out how to make the docs better,
>> and
>> what all is broken in the packaging code in general and rpm
>> packaging
>> specifically.  Clearly the Tag code has problems.
>> 
>> _______________________________________________
>> Scons-users mailing list
>> Scons-users at scons.org
>> https://pairlist4.pair.net/mailman/listinfo/scons-users [2]
> 
> 
> Links:
> ------
> [1]
> https://github.com/SCons/scons/blob/master/test/SConscript/SConscriptChdir.py
> [2] https://pairlist4.pair.net/mailman/listinfo/scons-users
> 
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users


More information about the Scons-users mailing list