[Scons-users] Newbie questions

syost at triad.rr.com syost at triad.rr.com
Wed Apr 26 14:38:30 EDT 2017


The former:  ('include1,include2')   


---- Bill Deegan <bill at baddogconsulting.com> wrote: 
> do you mean
> env.Environment(CPPPATH='include1,include2')
> or
> env.Environment(CPPPATH=['include1','include2'])
> ?
> 
> On Wed, Apr 26, 2017 at 11:10 AM, <syost at triad.rr.com> wrote:
> 
> > Thanks!   The "-I." was indeed being added by the existence of my include
> > (Add my basedir and '-I.' shows up in the gcc -v output, remove my include
> > and it goes away).
> >
> > But..
> >
> > Your usage of the phrase "environment" made me realize that maybe I forgot
> > to append the includes in the package level SConscript . But DRAT!   I had
> > already done that.   But I noticed I  done it different.   So I changed it
> > to the way I did it in the project level SConscript and viol'a! it worked.
> >  So to recap
> >
> > env.Environment(CPPPATH='include1,include2') did NOT work in my package
> > level SConscript
> >
> > but
> >
> > MYINCLUDE=['include1',include2']
> > env=Environment()
> > env.Append(CPPPATH=MYINCLUDE) DID work
> >
> >
> > Also.....
> >
> >
> > This custom builder only processed my first *.sc file
> >
> >      env.UDBPrecompile(Glob('*.sc')
> >
> > But this worked worked perfect:
> >
> > for filename in Glob('*.sc'):
> >      env.UDBPrecompile(filename)
> >
> > I don't understand why (remember, I'm just just a python wannabe).   Can
> > anyone explain why?
> >
> >
> > Thanks!!!!!!
> >
> > ---- William Blevins <wblevins001 at gmail.com> wrote:
> > > That may not be a substitution. That is the default CPPPATH, so it may be
> > > that you aren't passing through the correct env. SCons will not modify
> > abs
> > > paths to be relative to my knowledge.
> > >
> > > On Apr 26, 2017 10:22 AM, <syost at triad.rr.com> wrote:
> > >
> > > > Sorry for the delay, but I doubled down on reviewing the generated
> > files
> > > > and found that while they will walk the repository and build
> > > > anything/everything in sight, (or I can specify a package), it will not
> > > > walk for the SConscript files.   You have to specify them individually
> > in a
> > > > python list of what are considered "source" directories.   My lack of
> > > > python experience kept me from noticing that initially.  Some code to
> > do
> > > > that should be simple enough.
> > > >
> > > > I am now struggling with the  next hurdle we ran across in some
> > packages:
> > > > gcc not finding some include files properly.  Something in the Append
> > step:
> > > >
> > > > INCLUDES = ['project/base', ...some more includes ]
> > > > env.Append(CPPPATH=INCLUDES)
> > > >
> > > > is converting "/project/base" to "." .   In other words the gcc command
> > > > has "-I." instead of "-I/project/base"
> > > >
> > > > That substitution seems to be tripping up any qualified include that is
> > > > not absolute to the root of the filesystem(like
> > /opt/openssl/include/des.h
> > > > works), or is not a simple <file.h> or "file.h"(which both work).  In
> > other
> > > > words, its tripping up any include that is relative to the project
> > base(ie
> > > > #include <com/XXXX/ss/functionalarea/program1/file.h> which does
> > indeed
> > > > exist in /project/base/com/XXXX/ss/functionalarea/program1/ but gcc
> > can't
> > > > find).
> > > >
> > > > Any ideas would be welcome but I'm sure its still my inexperience with
> > > > python and scons so I will continue digging to this.
> > > >
> > > > Thanks!
> > > >
> > > > ---- Bill Deegan <bill at baddogconsulting.com> wrote:
> > > > > Can you pastebin the generated SConstruct and a sample(s) of
> > SConscripts?
> > > > > -Bill
> > > > >
> > > > > On Sat, Apr 22, 2017 at 4:28 AM, <syost at triad.rr.com> wrote:
> > > > >
> > > > > > Thanks Bill,
> > > > > >
> > > > > > Not near the laptop right now but Python 2.7 I believe installs
> > with
> > > > > > Ubuntu 16.04 which I am running.   I know it is not python 3.x
> > because
> > > > you
> > > > > > have to type "python3" to run it.
> > > > > >
> > > > > > The underlying packages have nothing in terms of SCons artifacts -
> > > > just to
> > > > > > the top repository level.   I then added an SConscript to a single
> > > > package
> > > > > > as a guinea pig while I wrote a builder for a database
> > precompilation
> > > > > > step.   This never was read.   Here is the directory structure:
> > > > > >
> > > > > > myrepo   S*.py* files and SConstruct and SConscript (as generated
> > by
> > > > > > SConsolidator) are here.
> > > > > > ------com
> > > > > > ----------company
> > > > > > -----------------ss
> > > > > > -------------------functionalarea1
> > > > > > ----------------------------------program11    (trying to add
> > > > SConscript
> > > > > > here for special pre-compile steps)
> > > > > > ----------------------------------program.1N
> > > > > > -------------------functionalarea2
> > > > > > ----------------------------------program21
> > > > > > ----------------------------------program.2N
> > > > > > .....and so on.......
> > > > > >
> > > > > >
> > > > > > If my PWD is "myrepo" and I type "scons -k" I actually get lots of
> > > > > > successful package builds through the tree (or packages fail for
> > > > > > predictable and understandable reasons). In this scenario program11
> > > > > > compiles like any other but fails to include my special SConscript
> > > > > > steps(and print statements prove it is never read).   Also, if I
> > type
> > > > scons
> > > > > > -k com/company/ss/functionalarea1/program11 it will build fine
> > too -
> > > > but
> > > > > > once again it builds without including my SConscript
> > > > > >
> > > > > > If I change my PWD to "program11", add a SConstruct, and then type
> > > > "scons
> > > > > > -k" my SConscript is properly read.   But of course, then I would
> > have
> > > > to
> > > > > > build separately for several hundred packages since most will have
> > > > special
> > > > > > linking, special compiler flags, special DB steps, or post steps(ie
> > > > perms),
> > > > > > install directives, etc.  Not ideal and not what I was hoping for.
> > > > > >
> > > > > >
> > > > > > Bottom line is the SConstruct generated by SConsolidator at the top
> > > > > > "myrepo" directory seems (again - not a python expert) to include
> > the
> > > > > > necessary logic to walk the subdirs and call SConscript() for each
> > > > > > SConscript() it finds but they actually seem to be ignored.  So I
> > > > figured I
> > > > > > am doing something wrong and hoped you folks could help.
> > > > > >
> > > > > > Thanks in advance!!
> > > > > >
> > > > > >
> > > > > > ---- Bill Deegan <bill at baddogconsulting.com> wrote:
> > > > > > > Spencer,
> > > > > > >
> > > > > > > Greetings and welcome!
> > > > > > >
> > > > > > > So the underlying packages already had a SCons based build
> > system?
> > > > > > > Or did you generate one for each package and then are trying to
> > wrap
> > > > them
> > > > > > > with a SConstruct on top?
> > > > > > >
> > > > > > > Also what platform? Which version of python? Which version of
> > SCons?
> > > > > > >
> > > > > > >
> > > > > > > -Bill
> > > > > > >
> > > > > > > On Fri, Apr 21, 2017 at 1:22 PM, Spencer Yost <
> > syost at triad.rr.com>
> > > > > > wrote:
> > > > > > >
> > > > > > > > I am setting up a new development environment for work, and I
> > am
> > > > > > seriously
> > > > > > > > looking at SCons as a replacement for our Frankenstein build
> > system
> > > > > > that we
> > > > > > > > currently have. I like what I see so far but I'm having some
> > > > trouble
> > > > > > > > understanding the underlying architecture.
> > > > > > > >
> > > > > > > > Note1:  I have been experimenting quite a bit, and I have read
> > the
> > > > > > users
> > > > > > > > guide and man pages
> > > > > > > >
> > > > > > > > Note 2:  I'm an experienced C and C++ developer  but I've never
> > > > touched
> > > > > > > > Python  before.
> > > > > > > >
> > > > > > > > Note 3:  Our code base has approximately 10K-15K files, found
> > in
> > > > > > several
> > > > > > > > hundred packages in a hierarchical reverse domain organization.
> > > > This
> > > > > > is
> > > > > > > > set up in one git repository.
> > > > > > > >
> > > > > > > > So I installed Scons on my Ubuntu laptop and SCons builds a
> > lot of
> > > > > > > > packages out of box quite nicely.
> > > > > > > >
> > > > > > > > But some files and packages need to be treated specially before
> > > > they
> > > > > > can
> > > > > > > > be built.   The Sconstruct  file (originally generated by
> > > > > > SConsolidator in
> > > > > > > > eclipse) appears like scons will look for sconscript files  in
> > each
> > > > > > > > individual package, but it doesn't.  Any SConscript file I
> > place
> > > > in an
> > > > > > > > individual package for extra processing, does not appear to be
> > > > read.
> > > > > > > >
> > > > > > > > The only way I seem to be able to build a package with an
> > > > SConscript
> > > > > > file
> > > > > > > > is to also create an SConstruct file, and build using that
> > package
> > > > as
> > > > > > my
> > > > > > > > current base directory.
> > > > > > > >
> > > > > > > >
> > > > > > > > Am I mistaken? Should I not be able to include a separate
> > > > SConscript
> > > > > > file
> > > > > > > > in each package for the individual needs of the individual
> > package
> > > > yet
> > > > > > > > initiate the build from the top of the hierarchy?
> > > > > > > >
> > > > > > > > Thanks in advance!
> > > > > > > >
> > > > > > > > PS:  Same thing happens if I try to build from Eclipse with
> > > > > > SConsolidator.
> > > > > > > >
> > > > > > > > Spencer Yost
> > > > > > > > _______________________________________________
> > > > > > > > Scons-users mailing list
> > > > > > > > Scons-users at scons.org
> > > > > > > > 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
> > > >
> >
> > _______________________________________________
> > 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