Re: [Scons-dev] Scons-dev Digest, Vol 57, Issue 9
OK, after the dust settled, I regret the tone of the message, but there's really nothing of interest in it for the users mailing list. This is really intended for the developers of Scons. For the last two months I've been looking for a build tool to build two things: Go programs and Docker images. I've considered and even to some extent wrote working builds in: - SCons - WAF - Gradle - tup - Blaze - Stag I didn't really try to use Make, but it's not difficult to see how that would fit into the picture. The unfortunate conclusion is that all these "tools" are very poorly engineered and some are also poorly executed. They lack some obvious basic functionality, they assume too much about what the user of the tool is trying to do, impose arbitrary restrictions unrelated to the task the user is trying to perform. Of all of this collection SCons appears to be the most tolerable option. I don't suppose you are interested in any sort of feedback on other tools, but there are some thing you might reconsider about SCons. This isn't about the user experience, this is about the code of the program and about the decisions which made it to be this way. 1. Classes with several dozens of methods. There really shouldn't be this many. 2. Comments and documentation are unhelpful. They are written from the perspective of someone who wrote the code, but they don't help the reader. There is no birds-eye overview of the system. (But, compared to the list above, at least you have some). 3. Everything happens "by chance", when you read the code you always need to guess the state of the object the method it is working with, this is including the class of the object and the values of several dozens of fields the object has: you pull a rope at one end, and from the other end firebreathing dragons begin to emerge. 4. Object's functionality is encoded into strings which are passed around at will and are next to impossible to track before the program is actually executed. 5. There isn't that much of codebase, but it is so immensely twisted that following the path of code execution is very difficult: you keep going in circles, you keep wondering about some functions with suggestive names never being called. 6. Lots of implicit assumptions, for whatever reason inputs and outputs are assumed to be actual files on filesystem. I've never seen this being the case, unless in helloworld examples. 7. Functionality is duplicated many times over. Why is there emitter and builder? Why is there action and command? Why are there factories, suffixes and scanners? Jobs and tasks? The code clarity could be greatly improved if these things are deduplicated. The answers might seem obvious to you as someone who wrote these, but if you try to don the hat of the reader, you'll see how they don't make sense. I don't intend for this message to grow into a discussion, I just put it here as a feedback on the state of the project as perceived by an external observer. But if you are interested, I can expand on the bullet points above. I understand that this much criticism is hard to take, especially from an unknown outsider. Anyhow, believe it or not, this was written in hopes to actually improve this program. Hope you'll see it that way. Best. Oleg On Mon, Sep 19, 2016 at 8:43 AM, <scons-dev-requ...@scons.org> wrote: > Send Scons-dev mailing list submissions to > scons-dev@scons.org > > To subscribe or unsubscribe via the World Wide Web, visit > https://pairlist2.pair.net/mailman/listinfo/scons-dev > or, via email, send a message with subject or body 'help' to > scons-dev-requ...@scons.org > > You can reach the person managing the list at > scons-dev-ow...@scons.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Scons-dev digest..." > > > Today's Topics: > >1. Don't want to use target as source... (Left Right) >2. Re: Don't want to use target as source... (Bill Deegan) > > > -- > > Message: 1 > Date: Sun, 18 Sep 2016 18:45:10 +0300 > From: Left Right <olegsivo...@gmail.com> > To: scons-dev@scons.org > Subject: [Scons-dev] Don't want to use target as source... > Message-ID: > <cajqbtgmecnwashhuzacnm1f2azjk953o42ehkbrninu4wux...@mail.gmail.com> > Content-Type: text/plain; charset=UTF-8 > > Hello, > > I'm trying to write a builder which doesn't take a file as a source. > The whole area of source_factory and target_factory in Builders is a > huge mess, and it's impossible to understand why things produce the > results they do. For instance, one extremely undesirable behavior, of > which I cannot find the source is that if the source isn't given, then > the target assumed to be the source. > > Basically, I
[Scons-dev] Don't want to use target as source...
Hello, I'm trying to write a builder which doesn't take a file as a source. The whole area of source_factory and target_factory in Builders is a huge mess, and it's impossible to understand why things produce the results they do. For instance, one extremely undesirable behavior, of which I cannot find the source is that if the source isn't given, then the target assumed to be the source. Basically, I need something that works like Library() builder. I tried to read the code, but after ten delegations of delegations to delegations to other delegations I've lost track. Even simpler. I want the source to be a directory. Not a file. I can write a scanner that generates all file names given the directory name, but I keep running into unrelated errors in Scons code which assume too much about what things can be built and the way to do that, and they are never right. Bottom line: isn't there any way to circumvent all the layers of needless abstraction on top of Node and Builder classes and just have access to the database and tasks / jobs? Example would help hundred times more than an explanation. Thanks. ___ Scons-dev mailing list Scons-dev@scons.org https://pairlist2.pair.net/mailman/listinfo/scons-dev
Re: [Scons-dev] Scons-dev Digest, Vol 56, Issue 3
Sorry, I know this is old, but after trying a few things... I still cannot find the place where your code checks if outputs are up to date. Below is the minimal example of what I tried based somewhat on SCons.Python.Value. import subprocess import os import SCons.Node def exists(env): return subprocess.call("command -v docker") == 0 def docker_build(target, source, env): copy = os.environ.copy() # do some stuff with environment docker_file = source[0].path ctx = source[0].get_dir().path out = subprocess.check_output( ["docker", "build", "--no-cache=true", "-q", "-t", tag, "-f", docker_file, ctx], env = copy) # some more stuff with output class DockerImage(SCons.Node.Node): # here I'm lost def generate(env): env["BUILDERS"]["Docker"] = env.Builder( target_factory = DockerImage, action = env.Action( docker_build, lambda t, s, e: "docker build: %s" % s[0].path)) I've overloaded every method I could find from Node, Base, File and Dir. The only method that get's called is the builder_set() - which does nothing valuable. However, if I make this an input node rather than output, then changed_since_last_build() does get called... I know that Executor is created for this builder and I know that __call__() of this builder is called just the same way any other builder would. But it's impossible to find why anything is called or when and what the expected result should be. I'd expect this to give an error, or to ignore the setting - instead, if I don't set target_factory - the builder always runs, and if I don't, then the builder always acts as if it is up to date. Bottom line: how do I implement "outputs up to date" check? I don't care if it's a lot of work, I just need something / someone to explain what makes this check. TIA. On Fri, Aug 5, 2016 at 8:43 AM, <scons-dev-requ...@scons.org> wrote: > Send Scons-dev mailing list submissions to > scons-dev@scons.org > > To subscribe or unsubscribe via the World Wide Web, visit > https://pairlist2.pair.net/mailman/listinfo/scons-dev > or, via email, send a message with subject or body 'help' to > scons-dev-requ...@scons.org > > You can reach the person managing the list at > scons-dev-ow...@scons.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Scons-dev digest..." > > > Today's Topics: > >1. Builder with custom decider and non-file based target (Left Right) >2. Re: Builder with custom decider and non-file based target > (Dirk B?chle) > > > -- > > Message: 1 > Date: Thu, 4 Aug 2016 14:55:21 +0300 > From: Left Right <olegsivo...@gmail.com> > To: scons-dev@scons.org > Subject: [Scons-dev] Builder with custom decider and non-file based > target > Message-ID: >
[Scons-dev] Builder with custom decider and non-file based target
Hello list. I'm trying to come up with a builder for Docker images. Docker images are built based on a Dockerfile template and a bunch of other sources one way or another related to the template. The output, however, isn't a file strictly speaking. The builder should combine two Docker operations: build+push, thus the final build artifact is the image residing in Docker registry (a server with it's own database, accessible via HTTP). What I'd like to accomplish is the following: 1. Create Docker Builder s.t. given the Dockerfile and other auxiliary files will call "docker build", then "docker push" to produce the build artifact and to put it in the Docker registry. 2. Prevent building images if a query to Docker registry for a previously built image succeeds. I'm now looking at target_factory of SCons.Builder, but I'm not sure this is the way to proceed. Please advise. Thanks. Oleg ___ Scons-dev mailing list Scons-dev@scons.org https://pairlist2.pair.net/mailman/listinfo/scons-dev
Re: [Scons-dev] Possible minor bug + how to get (or assign) a builder to a file node?
You can't stick a dictionary in a shell environment variable... Why would I want to pass dictionary to shell? I think about the build script as being a little program that is written in Python, not a list of commands to path to the shell. That's why I've chosen Python to begin with! It seems that you think that your build doesn't follow these rules, and as such want to build something else on top of SCons. If that's the case your path will be much more difficult (think square peg, round hole) Yes, it is different, of course it is! Is it entirely incompatible as you say?.. well, I need only very few things from SCons, and am willing to do the rest on my own, in the way I think better suits my needs, is that a crime? :) I'm absolutely not a Make person, I come from Ant / Maven background and think of building a project more in terms of those tools. I don't like Ant or Maven for not being real programming languages (writing more complex build scripts in either of them ends up in a lot of unrewarding labour, using low quality tools - no proper booleans, neither string manipulation, nor even math etc.) This is why Python. I used Python for writing little pre-processing scripts to build my own projects, but seeing how I'm repeating myself over and over again, I decided to invest more effort and make something reusable. Anyways, thank you for your patience, I'll try not to abuse it further! I agree with Bill; I don't think SCons as it exists now is going to serve your needs. It ought to be possible to build Flash with SCons ( http://www.wrwrwr.org/scons shows up when I google SCons flash) but I think you are looking for a type of process that is pretty different from how SCons is organized. I saw wrwrwr project, and that's why I decided to do it from scratch :) What that project is trying to do, is it's trying to do the compiler's job at locating the sources, for example. And it fails to do it at any non-trivial project. I mean, the compiler itself is too compilcated, to even try to predict what sources exactly will it use... But not only it is difficult, it is absolutely unnecessary... It can only handle some very small % of what compiler can do. I.e. you can barely pass a handful of options to the compiler by using it, while there's like ten times more, etc., etc. With all due respect, that project isn't usable as it is... Best. Oleg ___ Scons-dev mailing list Scons-dev@scons.org http://two.pairlist.net/mailman/listinfo/scons-dev
Re: [Scons-dev] Possible minor bug + how to get (or assign) a builder to a file node?
SCons can do this for you.. You can use something like this for your action: env['CCCOM'] = '${TEMPFILE($CC $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $CFLAGS $CCFLAGS $_CCCOMCOM)}' the ${TEMPFILE(?.)} will output the contents to a file to get around long compile line issues. Nope, that's not going to make it... the things to put into temp file need a lot of parsing, you can't just concatenate that. It's going to be couple hundreds lines of code. But I don't really need SCons to do this for me. This is something I feel confident I can handle myself. I would actually feel more comfortable doing this on my own. Is there a reason why I shouldn't? Here's an example of the file I'll have to generate: http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/flex-config.xml You should read this section: http://scons.org/doc/production/HTML/scons-user/c2092.html OK... now I see where the misunderstanding comes from. Well, I don't need this! :) I'll try to explain. I've chosen specifically SCons because it is written in Python. Python ideologically and syntactically is similar to AS (the language used in Flash). It is way more convenient to use Python to write build scripts, then say, Ant or Maven (at least for someone who uses Flash). Hold on. Most people who will be building the projects are programmers themselves, they are not users who need to build and install the software, like one would do with configure - make - make install process. Most of what comes out of Flash aren't programs (they are web applets), while there are few options to produce desktop applications, those are rare, and most of the times, users will get a compiled binary + installer and never build it on their own. This means that the use case of specifying additional options on the command line will be vanishingly rare / I don't even expect anyone to do it! What is most likely to happen is that users of the tool will write more elaborate build scripts, with a lot of custom Python code. So, I don't need / am not interested that much in reading command line options beyond what's already in place - no *real* user will ever use the program in that way. What I need is a comfortable interface for specifying the option in the build script. And, in my humble opinion, env. = Environment(variables = Variables(bar)) is better then env['FOO'] = bar which is still better then env['ENV']['FOO'] = bar Mainly because the first one allows documentation, and the second one is shorter. That's fine when compiling on the command line manually, but doesn't really scale to a repeatable process doe it? You need to think in terms of sources and targets, and flags which affect the generation of the command line. So if it's common for a user to specify --include-library, then you might make a variable FLEX_INC_LIBS, which then get's expanded using probably _concat (Here's an example from Default.py) '_LIBFLAGS' : '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}', Not a chance someone will call the build tool specifying these options every time on the command line! Not even once! :D I wasn't even imagining anything like that. In my ideal situation the build will look like so: env = Environment(tools = ['scons-flash'], ENV = {'FLEX_HOME' : '/home/wvxvw/Projects/Flex/4.6/' 'MXMLC_OPTIONS' : { 'debug': True, ... 'compiler' : { 'keep': True, ... 'fonts' : { 'font-manager': Blah ... ) env.Swf(source='./src/tests/Test.as', target='./bin/Test.swf', override_compiler_options = { ... }) I sure want to avoid having to interpolate options into strings. I.e. '$OPTION=value' is not good. The example below should illustrate what I would expect from users to be doing, when they need to include something. def gen_includes(): for (dirpath, dirnames, filenames) in os.walk(only_user_knows_where): directories = [d for d in dirnames if should_inculde(d)] return directories env.Flash(..., compiler_options = { 'include-library' : gen_includes() }) There's another particular inconvenience about options being strings in that compiler doesn't follow GNU rules for short / long options and how things should be read / understood. It's close, but it's incorrect, and it will conflict with the common way to do that. I.e. options never start with double hyphen, but there are short / long options, and they both can be followed by either space or equals sign (sometimes += too). That's something I'll have to parse on my own, unfortunately. http://scons.org/wiki/ToolsForFools I've read that. Not meaning to criticize, there are some parts of SCons code (I'm talking specifically about Action and perhaps Executor), which are, erm... very hard to use in a different setting. For the quick test it was easier to remove them, then to try to understand the particular
Re: [Scons-dev] What should I return from generator function?
The generator should return an Action or something that can be turned into an Action. See http://www.scons.org/doc/HTML/scons-user/x3755.html The only things that can be turned into Actions are a string (which is a command to be executed), or a python function (which gets run when the action is executed), or lists thereof. (see http://www.scons.org/doc/production/HTML/scons-api/index.html if you really care.) -- Gary Thanks for ongoing help, but I'm more puzzled then before :) _execute function runs from _inside_ the action. And the action that runs this function expects it to return... another action (this is a plausible scenario if actions have to be chained, but in my case they are not)? I actually could get it working, but in a way, which is probably very bad... I've overridden the _execute() function in BuilderBase and removed all mentions of generator and action + all calls that would cause any reference to either one of these. Now, I'm probably missing a whole lot of things, if I'm not using action or / and executor, but I fail to understand how to use them... One thing I'm concerned with is - it was trying to generate file nodes from the files, and this went down the drain too... was it important? How important is it? So, what are the consequences of not using any of these? To elaborate: a typical build process of a project is somewhat involved - you certainly cannot describe it as a single command-line operation (so action as string is not an option). And I'm having problems using a function inside the action for two reasons: - calling the function in this way doesn't let me access associated builder info (and this is the very important part of the process), while what it passes into action-function is not important / I could absolutely do without it. - I can only prevent the calling action from expecting me to return another action by weird hack in the BuilderBase. I'm specifically talking about _do_create_action - this function is called despite my best effort of avoiding it... ___ Scons-dev mailing list Scons-dev@scons.org http://two.pairlist.net/mailman/listinfo/scons-dev
Re: [Scons-dev] Possible minor bug + how to get (or assign) a builder to a file node?
1. What are your inputs? 2. What are your outputs? 3. How do you determine flags for compiling? Based on your previous emails: the compiler does almost all the job, it find the required sources by inferring from the code what it should be looking for So it parses the sources looking for info on it's dependencies? For instance, the compiler has a concept of modules, so it would compile a group of files, and then would compile a module using the first group in a similar way you'd use headers in C, when linking dynamic libraries. How does it determine the modules? Step 1: I've overridden _execute in FlashBuilderBase in order to be able to gather some important information about the project (often times Flash comes with Eclipse-style project files, so I'm parsing the project file, and interpret the information I find in it in a way it will be useful later during the build). Is the project file for all sources you're trying to compile, or per module, or some other grouping? As Gary stated in another email, you probably can use a separate environment per group of code to get the appropriate flags to them. -Bill The inputs fall under 5 major categories: - Eclipse-style project -- Flash Builder project -- FDT project These are usually XML files that describe a project, they contain compilation settings, maybe for multiple sub-projects, this is more like SLN files in MSVS. So, I'm parsing these and trying to come up with a way to run the compiler (+ some other tools some times) to replicate what would IDE do during the compilation process. - FlashDevelop project This is similar to Eclipse projects except for there may be multiple projects in the same directory. - Single source file as an input (possible variants are *.as, *.mxml or *.css) - Multiple source files or a manifest containing a list of files to compile. - AIR project is a kind of project which uses a special manifest file. Using this manifest file it packages what was compiled from other sources. - Documentation generator, this is very similar to multi-source one. The outputs may be: - a single SWF or SWC files (an applet binary or a library) - multiple codependent SWFs or SWCs. - documentation (multiple HTML files) - AIR executables, Android installers and iOS installers Flags for compiling: The compiler comes with a file with most of the defaults set in some way, there are these possible ways to override these defaults: - provide an additional (xml) file with settings (that's how I'm going to go about compilation). - specify these settings on command line when calling the compiler (in the worst case you risk to overload the command line, it may easily get too long). - read some of them from the source code - there are some particular compiler metadata that instructs it about project settings / parts (none of my concerns, the compiler will do here on its own) - some, however very few can be set as environment variables, this is not an idiomatic way to do it, and only very few (basically, only the compiler location and some Java-related settings) can be set in this way - again, none of my concerns. The script would however very likely need to read the compiler location from user in some way - it's uncommon to install compiler on PATH / alias it for availability or similar. It is rather more common to have multiple version installed simultaneously. So it parses the sources looking for info on it's dependencies? It's not that simple... some times you need to help it. I.e. you may force including a source, which isn't referenced directly from code, or you may ask it to not link statically a particular source, because you will provide it at runtime. And, in case when you compile a library, you will most certainly be looking for the list of sources on your own (just list all sources in a directory is what will do in most cases). How does it determine the modules? It knows certain classes that extend certain other classes to be the modules. But this is a lot of parsing! I'm not doing it no way! :) But if it comes in a shape of Eclipse project, I'll have that info from the project settings. Is the project file for all sources you're trying to compile, or per module, or some other grouping? Well, there are different kinds of projects... FlashDevelop projects have only one target per project and don't define modules. Only FlashBuilder or FDT projects do. In all other cases users would have to mimic what projects do on their own. I.e. they would define two projects as depending on each other etc. There's a lot more stuff I hoped to do at some point (alternative compilers, linkers, transcoders etc) but I won't go into details now. Re' environment. I'm not sure yet... can I somehow make users create a different environment, when they do Env()? To be honest, I can't find a way to change anything about this object, I took it for granted that this is what I'm to deal with. I
Re: [Scons-dev] Possible minor bug + how to get (or assign) a builder to a file node?
Can you back up a few steps and say what you're trying to do? (Note that you say you're creating a File Node, but the code you show is for a subclass of Builder, which is pretty odd.) Have you been through Chapter 18 of the User's Guide? http://www.scons.org/doc/production/HTML/scons-user/c3621.html -- Gary Thanks for reply. I'm probably that deep because of a mismatch in the regular way C or Java projects are built vs Flash. The thing is, managing sources is very simple in Flash (the compiler does almost all the job, it find the required sources by inferring from the code what it should be looking for), but there are many configuration settings that one should pass to compiler, which are given per project, or per certain part of the project. So, I'm much more interested in having a reference to the builder in the generator function, then the source file names (I can obtain the reference to the source files at any time, actually, and it's not very important), but I need to somehow transfer a lot of information with the group of files. For instance, the compiler has a concept of modules, so it would compile a group of files, and then would compile a module using the first group in a similar way you'd use headers in C, when linking dynamic libraries. Anyways, I think I can better explain my problem in terms of the code, which isn't working quite as I'd need it to. Step 0: I've extended BuilderBase with FlashBuilderBase and added this builder to env[BUILDERS]. Step 1: I've overridden _execute in FlashBuilderBase in order to be able to gather some important information about the project (often times Flash comes with Eclipse-style project files, so I'm parsing the project file, and interpret the information I find in it in a way it will be useful later during the build). Step 2: This information is saved in a FlashBuilderBase field. Step 3: The overriden _execute() calls super(FlashBuilderBase, self)._execute() Step 4: BuilderBase._execute() at some point calls self.action.batch_key(env or self.env, tlist, slist) Step 5: batch_key() calls my generator function. In that generator function I must have a reference to the builder which submitted the source files, but I can't because it is only in Step 6: that BuilderBase._execute() calls t.builder_set(self) - and this is too late :( because in my generator function I needed that source.builder would give me the reference to FlashBuilderBase. If I try to circumvent this by either calling t.builder_set(FlashBuilderBaseInstance) before generator function is called, it enters an infinite loop (why - I don't know yet) Also, if I try, in FlashBuilderBase self.src_builder = [self] - this enters infinite loop too. I could find a solution by making generator function capture the builder instance I need to acces in it, but this is super convoluted, and it also means that I would need a function per builder (while it could've been more generic). What could've helped - is if BuilderBase._execute() called t.builder_set(self) before it calls self.action.batch_key(env or self.env, tlist, slist) Sorry for a very long message! ___ Scons-dev mailing list Scons-dev@scons.org http://two.pairlist.net/mailman/listinfo/scons-dev
[Scons-dev] Creating an extension: where do I start?
Hello list, I tried SCons for several projects developed by other people and I like it very much. Though, I'd like to know it better, and from the inside too. I program mostly what is related to Flash, and so I would like to have an extension that can handle Flash compilation and other tools that come with it. My question is, could you point me to an example of such an extension, or give an insight to what needs to be done / what would be the best way to go about developing such extension? No time pressure / I'm doing this at my spare time, so if there's documentation / reading materials on how to do that - I'd like to read first :) Thanks. Oleg ___ Scons-dev mailing list Scons-dev@scons.org http://two.pairlist.net/mailman/listinfo/scons-dev
Re: [Scons-dev] Scons-dev Digest, Vol 5, Issue 24
On Sat, Sep 29, 2012 at 6:00 PM, scons-dev-requ...@scons.org wrote: Send Scons-dev mailing list submissions to scons-dev@scons.org To subscribe or unsubscribe via the World Wide Web, visit http://two.pairlist.net/mailman/listinfo/scons-dev or, via email, send a message with subject or body 'help' to scons-dev-requ...@scons.org You can reach the person managing the list at scons-dev-ow...@scons.org When replying, please edit your Subject line so it is more specific than Re: Contents of Scons-dev digest... Today's Topics: 1. Creating an extension: where do I start? (Left Right) 2. Re: Creating an extension: where do I start? (Dirk B?chle) -- Message: 1 Date: Sat, 29 Sep 2012 14:59:12 +0200 From: Left Right olegsivo...@gmail.com Subject: [Scons-dev] Creating an extension: where do I start? To: scons-dev@scons.org Message-ID: CAJQBtgmE-sLa+oTUTp5gda7WNwS4ZPphY0MRACu1=hk7kni...@mail.gmail.com Content-Type: text/plain; charset=ISO-8859-1 Hello list, I tried SCons for several projects developed by other people and I like it very much. Though, I'd like to know it better, and from the inside too. I program mostly what is related to Flash, and so I would like to have an extension that can handle Flash compilation and other tools that come with it. My question is, could you point me to an example of such an extension, or give an insight to what needs to be done / what would be the best way to go about developing such extension? No time pressure / I'm doing this at my spare time, so if there's documentation / reading materials on how to do that - I'd like to read first :) Thanks. Oleg -- Message: 2 Date: Sat, 29 Sep 2012 15:18:53 +0200 From: Dirk B?chle tshor...@gmx.de Subject: Re: [Scons-dev] Creating an extension: where do I start? To: scons-dev@scons.org Message-ID: 5066f53d.8090...@gmx.de Content-Type: text/plain; charset=ISO-8859-1; format=flowed On 29.09.2012 14:59, Left Right wrote: Hello list, I tried SCons for several projects developed by other people and I like it very much. Though, I'd like to know it better, and from the inside too. I program mostly what is related to Flash, and so I would like to have an extension that can handle Flash compilation and other tools that come with it. My question is, could you point me to an example of such an extension, or give an insight to what needs to be done / what would be the best way to go about developing such extension? No time pressure / I'm doing this at my spare time, so if there's documentation / reading materials on how to do that - I'd like to read first :) Thanks. Oleg ___ Scons-dev mailing list Scons-dev@scons.org http://two.pairlist.net/mailman/listinfo/scons-dev Hi Oleg, you could start with section 18. Writing Your Own Builders of the User Guide and http://scons.org/wiki/ToolsForFools , which deals with developing new builders and tools. Also, the index of out-of-core Tools http://scons.org/wiki/ToolsIndex can point you to some real examples, e.g. the Qt4 builders. This should give you a little to read over the weekend. ;) Best regards, Dirk -- ___ Scons-dev mailing list Scons-dev@scons.org http://two.pairlist.net/mailman/listinfo/scons-dev End of Scons-dev Digest, Vol 5, Issue 24 Oh, cool, Thanks Dirk. I'm taking a look at it. Best. Oleg ___ Scons-dev mailing list Scons-dev@scons.org http://two.pairlist.net/mailman/listinfo/scons-dev
Re: [Scons-dev] Creating an extension: where do I start?
Oh, cool, Thanks Dirk. I'm taking a look at it. Best. Oleg Sorry, replied to digest the first time. ___ Scons-dev mailing list Scons-dev@scons.org http://two.pairlist.net/mailman/listinfo/scons-dev