Re: Unexpected messge with configure
Bill Deegan <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAEyG4CG9qBjuEJQr=kDASSiGFTCj8=c3quP9GTEX0OzT98_ZCA@mail.gmail.com> |
Jason, That seems reasonable, but maybe not simple.. _Bill On Fri, Sep 7, 2018 at 2:10 PM Jason Kenny <[email protected]> wrote: > My first thoughts are that if we can tell if the result is cached to > return that value. If there are no cached values do the current behavior. I > am not sure how hard this would be however at the moment. > ideally the best behavior I think might be > > - configure item has no cached value. Error as we currently do > - configure item is cached, return the cached value > - if we can detect that it has changed and would normally re-execute > print a warning message that this is the case and note that the result of > the build may change when it really runs > - Not sure what to do with the cases of configuring items that > don't cache ( such as custom functions that the user might have defined in > a certain way ). > > Jason > ------------------------------ > *From:* Scons-users <[email protected]> on behalf of Bill > Deegan <[email protected]> > *Sent:* Friday, September 7, 2018 12:28 PM > *To:* SCons users mailing list > *Subject:* Re: [Scons-users] Unexpected messge with configure > > Jason, > > I'd say it's not a known issue, it's expected behavior. > See the docstring for the exception in question. > > What do you think SCons should do in this case? > The dry run would likely be affected by the results of any configure > checks which might write a file or run a process (both things which scons > is not supposed to do with --dry-run), so it's likely not possible to do a > dry-run with configure checks which write to the filesystem? > > -Bill > > class ConfigureDryRunError(SConfError): > """Raised when a file or directory needs to be updated during a Configure > process, but the user requested a dry-run""" > def __init__(self,target): > if not isinstance(target, SCons.Node.FS.File): > msg = 'Cannot create configure directory "%s" within a dry-run.' % str > (target) > else: > msg = 'Cannot update configure test "%s" within a dry-run.' % str(target) > SConfError.__init__(self,msg) > > > On Fri, Sep 7, 2018 at 1:20 PM Bill Deegan <[email protected]> > wrote: > > Mats, > > How long does: > scons --help non-existant-target > Take? > > -Bill > > On Fri, Sep 7, 2018 at 12:26 PM Mats Wichmann <[email protected]> wrote: > > On 09/07/2018 09:55 AM, Jason Kenny wrote: > > I was adding some configure logic to a build I am working on. When doing > a dry run i now get this error: > > > > scons: *** Cannot update configure test ".sconf_temp/conftest_0" within > a dry-run. > > File "./../scons-3.0.1/SCons/Script/SConscript.py", line 614, in __call__ > > > > Is this a known issue with using configure in scons? > > I've run into it (you'll find my name on such questions in the mailing > list archive, afair). > > When you stop and think about it, running a configure test which means > compiling code sort of doesn't fit the definition of "dry run", though. > > this is a gray area to my way of thinking. steps like cleaning, getting > help, and doing a dry-run are places where you don't want external work > to happen, just have scons go through the rules. but sometimes you > don't know what all the dependencies actually are before you've run some > of those steps. > > we'll wait for the actual experts to pipe up :) > > ====== > Aside: > on the project I'm trying to gradually bend into shape (it had lived for > a couple of years before I came around), which uses a variant directory > build, starting with the variant directory completely absent, "scons > --help" takes seven seconds, and leaves a variant directory with 12 > object files and four libraries built. I *KNOW* that's wrong, but I > haven't yet figured out how to fix it without either breaking > everything, or special-casing stuff all over the place like > > if not env.GetOption('help') and not env.GetOption('clean'): > > guess we could put GetOption('dry-run') in that list too (would we have > to include all of the variants of that name? -n, --no-exec, > --just-print, --dry-run, --recon) > > with 200+ sconscripts, adding those cases is not appealing. > > _______________________________________________ > Scons-users mailing list > [email protected] > https://pairlist4.pair.net/mailman/listinfo/scons-users > <https://nam03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpairlist4.pair.net%2Fmailman%2Flistinfo%2Fscons-users&data=02%7C01%7C%7C9710a3affd9d4dfcc70d08d614e76e4f%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636719381543572547&sdata=QVADywe8YsHd4BMjUt2rj1L%2F2NA3Sku%2F1LN9Sun12vo%3D&reserved=0> > > _______________________________________________ > Scons-users mailing list > [email protected] > https://pairlist4.pair.net/mailman/listinfo/scons-users > _______________________________________________ Scons-users mailing list [email protected] https://pairlist4.pair.net/mailman/listinfo/scons-users