Csound Csound-dev Csound-tekno Search About

Re: [Cs-dev] Build system refactoring

Date2008-03-27 00:14
From"Michael Gogins"
SubjectRe: [Cs-dev] Build system refactoring
I agree with Steven that keeping the old SConstruct going for the time being 
is a good idea.

And I certainly agree that the build system needs refactoring!

Regards,
Mike

----- Original Message ----- 
From: "Steven Yi" 
To: "Developer discussions" 
Sent: Wednesday, March 26, 2008 7:58 PM
Subject: Re: [Cs-dev] Build system refactoring


> Hi Felipe,
>
> I think this would be very useful work, but also have a hard time
> visualizing at the moment.  I think it might be useful if you were
> commit your work early but under a different name, SConstruct2
> perhaps, so that we could see in code what you are working on and also
> to see how this would impact development going forward.  Plus we could
> switch between the current build file and the SConstruct2 file using
> -f, which would be good for testing.
>
> Are you planning SConscript files for each library then?  (If so, I
> think that would be a very good thing.)
>
> Thanks,
> steven
>
> On Wed, Mar 26, 2008 at 4:32 PM, Felipe Sateler  
> wrote:
>> I'd like to start breaking down SConstruct into several smaller 
>> SConscript
>>  files, the idea being that it should be easier to maintain. The change 
>> should
>>  be done incrementally, so that the build system doesn't block any kind 
>> of
>>  work (eg, having to wait for a full transition to add a new opcode).
>>
>>  To accomplish this, one would have to explicitly export and import 
>> variables
>>  across the different files (if done right, the SConstruct would be the 
>> only
>>  one that would export variables, and the SConscripts would import only 
>> the
>>  variables they need).
>>  However, there are a few utility functions that are used across all of
>>  SConstruct, and functions can't be exported. I see 3 ways out of this
>>  problem:
>>
>>   1. Define the functions in all files that need them.
>>   2. Define a module that contains all the functions and is imported by 
>> all
>>     SConscripts and SConstruct.
>>   3. Define a class in SConstruct that contains all the functions, and 
>> then
>>     instantiate it and export that variable.
>>
>>  Of these options, 1 is pretty much a no-no, since it involves repeating 
>> the
>>  functions in different files; 2 is reasonable, but requires additional 
>> code
>>  to clean up python-compiled files; and 3 feels somewhat hackish, but 
>> should
>>  work. I'm inclined towards 3, but I'm not sure.
>>
>>  After this has been done, all targets should be easier to maintain, and 
>> maybe
>>  do other improvements should be easier to do as well (such as definining 
>> a
>>  target that builds the source package).
>>
>>  How would the files interact after this reworking? The main SConstruct 
>> file
>>  would export, among other things, the common environment, the options 
>> object
>>  and the configure context. Each file would then test for whatever it 
>> needs
>>  (yes, this involves repeated checks, but it doesn't matter because they 
>> are
>>  cached) and act accordingly (build targets, etc). They should also take 
>> care
>>  of installing files where and when necessary. Defining options is also 
>> the
>>  responsability of each SConscript, unless an option involves several
>>  SConscripts, in which case it should be defined in SConstruct.
>>
>>  Is it OK if I go ahead with this? Any comments (specially on what to do 
>> about
>>  utility functions)?
>>  Note that this will probably take some time to finish, so probably a 
>> couple of
>>  csound versions would have a relatively inconsistent system (some stuff 
>> in
>>  SConscripts, other stuff in SConstruct).
>>
>>  --
>>  Felipe Sateler
>>
>> -------------------------------------------------------------------------
>>  Check out the new SourceForge.net Marketplace.
>>  It's the best place to buy or sell services for
>>  just about anything Open Source.
>> 
>> http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
>> _______________________________________________
>>  Csound-devel mailing list
>>  Csound-devel@lists.sourceforge.net
>>  https://lists.sourceforge.net/lists/listinfo/csound-devel
>>
>>
>
> -------------------------------------------------------------------------
> Check out the new SourceForge.net Marketplace.
> It's the best place to buy or sell services for
> just about anything Open Source.
> http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
> _______________________________________________
> Csound-devel mailing list
> Csound-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/csound-devel 


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Csound-devel mailing list
Csound-devel@lists.sourceforge.net