Re: Order of execution of a one-file builder
Bill Deegan <[email protected]>
| Newsgroups | gmane.comp.programming.tools.scons.user |
|---|---|
| Message-ID | <CAEyG4CGV8mk1JROGXQHpQaWXPc=KAug=U9_=sAg-qS-bwCoBxA@mail.gmail.com> |
Another way to do this would be to alter the Installer() builder to optionally do the signing step based on KEYFILE and PASSWORD being set. That might be a better solution. On Tue, Nov 22, 2022 at 10:08 AM Matthew Marinets < [email protected]> wrote: > Rather than a builder, you can refactor your action into a SCons Action > object, then use AddPostAction (or AddPreAction if you want and action to > run before another one). > > > > So if signing happens after your Install builder, something like: > > my_sign_action = Action(string_or_python_function, > print_str) > > installed_exe = env.Install(target_exe, source_exe) > > env.AddPostAction(installed_exe, my_sign_action) > > > > Hope this helps! > > —Matthew > > > > *From:* Scons-users <[email protected]> *On Behalf Of *Javier > Llopis > *Sent:* November 22, 2022 08:57 > *To:* SCons users mailing list <[email protected]> > *Subject:* [Scons-users] Order of execution of a one-file builder > > > > Hello All, > > > > I have written a builder around SignTool.exe, a program that comes with > Visual Studio which digitally signs an executable or a DLL, and have > included it in the build system for a piece of software that I have written. > > The problem is that the input and output of the builder are the same file, > i.e. the builder just runs SignTool on the source[0] parameter and the > target is the same file which can create the problem below. > > This is my code (the relevant parts): > > # on SConscript > instexe = env.Installer(installer_name, "InstallEncVPG.nsi") # NSIS > builder from Contributed Builders page > if must_sign: > env.Sign(instexe, KEYFILE=keyfile, PASSWORD=password) > env["installer"] = instexe > Return("env") > > #on SConstruct > env = SConscript("Installer/SConscript", exports=["env"]) > Install("distrib", env["installer"]) > > Since the input and output are the same, scons apparently doesn't seem to > know when a file is 'ready'. > > > > The issue I am running into is that the actions are done in the wrong > order: The 'instexe' is built on SConscript, then Install copies it to the > 'distrib' directory on SConstruct, then Sign on SConscript signs it on the > original directory, so the installer on 'distrib' is unsigned. > > > > I cannot reproduce the issue on a smaller script. I tried to write an > illustrative, simpler example but then the issue doesn't happen. Only on > the big builds. > > Is there any way I can force an order of execution? > > TIA > > > > J > _______________________________________________ > 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