[okl4-developer] OKL4 2.1: naming the build directory after themachine

Geoffrey Lee glee at ok-labs.com
Tue Jul 15 01:45:04 EST 2008


On Mon, Jul 14, 2008 at 05:39:19PM +0200, Frank Kaiser wrote:


Hi Frank

In the 2.1 release you can use build_dir=\"gumstix\" when building
for gumstix, for example.  This is a known issue that will
be addressed in a future release.

	-gl

> Hello
> 
>  
> 
> I think I've found a solution for my name clash problem. There is a way
> to check what the dictionary of command line parameters returns. Classes
> and some other types have the builtin attribute '__name__' to return the
> object's name as a string:
> 
>         self.build_dir = handle_arg("BUILD_DIR", "#build")
> 
>         if hasattr(self.build_dir, "__name__"):
> 
>             self.build_dir = self.build_dir.__name__
> 
> This works for all 3 cases: naming the directory after the machine,
> using another name, or not using the BUILD_DIR parameter.
> 
> Maybe there are other ways to fix the problem: proposal are welcome.
> 
>  
> 
> Regards
> 
> Frank
> 
> From: developer-bounces at okl4.org [mailto:developer-bounces at okl4.org] On
> Behalf Of Frank Kaiser
> Sent: Monday, July 14, 2008 2:39 PM
> To: developer at okl4.org
> Subject: [okl4-developer] OKL4 2.1: naming the build directory after
> themachine
> 
>  
> 
> Hello
> 
>  
> 
> When I compile my new platform I tried to give the build directory the
> same nam as the machine by invoking the build script this way:
> 
> tools/build.py MACHINE=sam9263 PROJECT=iguana BUILD_DIR=sam9263
> 
> However, that does not work. This is the response:
> 
> scons: Reading SConscript files ...
> 
> /home/fka/Projects/COQOS/L4/OKL4/okl4_2.1/tools/build.py:287 Error: type
> object 'sam9263' has no attribute 'startswith'
> 
> Here the relevant lines of the script:
> 
>         def handle_arg(name, default):
> 
>             ret = kargs.get(name, default)
> 
>             if name in kargs: del kargs[name]
> 
>             return ret
> 
>  
> 
>         self.build_dir = handle_arg("BUILD_DIR", "#build")
> 
>         if not self.build_dir.startswith('#'):
> 
>             self.build_dir = '#' + self.build_dir
> 
> The only explanation for this odd error message is that 'sam9263' is not
> treated as a string but as an object reference to the class 'sam9263'
> defined in my platform script 'machines.py'. An attempt to quote the
> BUILD_DIR parameter has no effect:
> 
> tools/build.py MACHINE=sam9263 PROJECT=iguana BUILD_DIR="sam9263"
> 
> The result is the same error.
> 
> Trying to convert the symbol 'sam9263' to a string by this assignment
> 
>         self.build_dir = str(handle_arg("BUILD_DIR", "#build"))
> 
> starts compilation into the directory <class 'machines.sam9263'>, which
> is not what I want. Finally the build stops with an error message:
> 
> [IDL ] <class
> 'machines.sam9263'>/iguana_server/object/libs_iguana/include/interfaces/
> iguana_serverloop.c
> 
> sh: class: No such file or directory
> 
> scons: *** [<class
> 'machines.sam9263'>/iguana_server/object/libs_iguana/include/interfaces/
> iguana_serverloop.c] Error 1
> 
> scons: building terminated because of errors.
> 
> I think this is a specialty of Python. The keyword/value paring in a
> dictionary apparently allows almost anything as a value, and if the
> given value is the identifier of a class, then Python assumes that the
> class is meant. That mechanism is quite effective when choosing the
> hardware platform. First the script reads all available 'machines.py',
> and then simply by using the class name with the MACHINE parameter the
> platform to be compiled is selected.
> 
> So the question remains: has anyone an idea to enforce the string
> treatment of the BUILD_DIR value?
> 
>  
> 
> Regards
> 
> Frank
> 

> _______________________________________________
> Developer mailing list
> Developer at okl4.org
> https://lists.okl4.org/mailman/listinfo/developer


-- 




More information about the Developer mailing list