[Scons-users] help with deleting or cleaning files
Damien Hocking
damien at khubla.com
Mon Sep 28 00:34:02 EDT 2020
Thanks Bill, I'll try this.
Damien
On 2020-09-27 4:55 p.m., Bill Deegan wrote:
> Clean() doesn't return a Node.
>
> From Manpage:
>
> This specifies a list of files or directories which should be removed
> whenever the targets are specified with the|-c|command line option.
> The specified targets may be a list or an individual target. Multiple
> calls to*|Clean|*are legal, and create new targets or add files and
> directories to the clean list for the specified targets.
>
> So debugclean and debuginstall1 will both be None.
>
> Clean just marks the file to be removed when you run `scons -c`
>
>
> This should do what you're looking for (minus dummy file creation...
> See gist:
> https://gist.github.com/bdbaddog/949eaa3c566cdb5a4d8c0fcb5e96b5e5
>
>
>
> On Sun, Sep 27, 2020 at 12:44 PM Mats Wichmann <mats at wichmann.us
> <mailto:mats at wichmann.us>> wrote:
>
> On 9/27/20 12:15 PM, Damien wrote:
> > All,
> >
> > As part of our installers, we put a set of dlls (or so's) into a
> > directory, to go into one of our products. Because of the way this
> > product is shipped, the dlls go into a directory that's not debug or
> > release, it just has the binaries. When we're doing debug builds and
> > testing, the debug dlls go into that directory and when we're doing
> > release testing, the release versions go in there. I'd like to
> automate
> > removing the debug dlls if we do a release build and vice versa,
> right
> > now we do that by hand, which is silly.
> >
> > I thought we could do this with env.Clean(...) but that appears
> not to
> > be the case. Here's a cut down example in an SConscript:
> >
> > dbgfilelist [
> > 'concrt140d.dll',
> > 'msvcp140d.dll',
> > 'vccorlib140d.dll',
> > 'vcomp140.dll',
> > 'vcruntime140d.dll'
> > ]
> >
> > relfilelist = [
> > 'concrt140.dll',
> > 'msvcp140.dll',
> > 'vccorlib140.dll',
> > 'vcomp140.dll',
> > 'vcruntime140.dll'
> > ]
> >
> > if thisenv['BUILDTYPE'] == 'DEBUG':
> > thisenv['INSTALLDIR'] = thisenv['BINDIR'] +
> > '/../../interfaces/binaries/x64'
> > releaseclean = thisenv.Clean(thisenv['INSTALLDIR'], [x for
> x in
> > relfilelist])
> > releaseinstall1 = thisenv.Install(thisenv['INSTALLDIR'],
> > [os.path.join(thisenv['BINDIR'], x) for x in dbgfilelist])
> > Default(releaseclean + releaseinstall1)
> > else:
> > thisenv['INSTALLDIR'] = thisenv['BINDIR'] +
> > '/../../interfaces/binaries/x64'
> > debugclean = thisenv.Clean(thisenv['INSTALLDIR'], [x for x in
> > dbgfilelist])
> > debuginstall1 = thisenv.Install(thisenv['INSTALLDIR'],
> > [os.path.join(thisenv['BINDIR'], x) for x in relfilelist])
> > Default(debugclean + debuginstall1)
> >
> > When I try this, SCons says: TypeError: unsupported operand
> type(s) for
> > +: 'NoneType' and 'list': for the Default setup. I always
> thought you
> > could just add Actions but obviously I'm doing something wrong.
>
> I'd take the message seriously: something is None when you're not
> expecting it. Tracing that down (some print statements, maybe)
> should
> help you figure out if you're accessing things that aren't defined for
> the buildtype you're doing and that's why they're None, or whether
> some
> step got missed somewhere.
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto: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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20200927/d536de8c/attachment-0001.html>
More information about the Scons-users
mailing list