[ros-dev] rbuild problems/suggestions

Marc Piulachs marc.piulachs at codexchange.net
Sat Oct 6 22:23:55 CEST 2007


Having worked with rbuild for a few weeks I have identified some problems
that would like to share. I also would like to hear the developers' opinions
about all of these issues because I want to start working to solving them.

 

A) The behavior of the "include" + "directory" tags are inconsistent when an
"include" is placed inside a "directory" for 

example:

 

            Correct: (expected : ke/i386/boot.S)

 

                        <directory name="ke">

                                    <if property="ARCH" value="i386">

                                                <directory name="i386">

                                                            <file
first="true">boot.S</file>

 

 

            Incorrect: (expected : reactos/reactos.rbuild 

                            real : reactos/reactos/reactos.rbuild)

 

                        <directory name="reactos">

                                    <xi:include
href="reactos/reactos.rbuild" />

                        </directory>

 

            should be:

 

                        <directory name="reactos">

                                    <xi:include href="reactos.rbuild" />

                        </directory>

 

B) The "oldcrt" attribute is no longer used and can be removed.

 

C) The module types "Iso" , "LiveIso" , "IsoRegTest" and "LiveIsoRegTest"
are IMHO hacks introduced to be able use the makefile generation code.
rbuild is C++ so with a small code refactor they can be easly removed.

 

D) Any module is using the "EmbeddedTypeLib" module type , is really needed
or can be removed?

 

E) IMHO the "ElfExecutable" is incorrect . I posted my reasons some time
ago:

 

 
http://www.reactos.org/archives/public/ros-dev/2007-September/009770.html 

 
http://www.reactos.org/archives/public/ros-dev/2007-September/009771.html 

 
http://www.reactos.org/archives/public/ros-dev/2007-September/009779.html 

 

F) The module type "alias" is only used for HAL related modules and IMHO it
isn't requiered because the problem it tries to 

solve can be easly solved using "if" tags and conditional compilation.

 

 
http://www.reactos.org/archives/public/ros-dev/2007-September/009798.html 

 

There are several reasons for this change:

 

            - Currently every platform requires 3 new HAL modules. In the
future if new platforms are supported for example (X86 , XBOX , PPC , AMD64
, MIPS , IA64 , ARM ... ) 3 x 7 = 21 modules .. see what I'm saying?

            - It simplifies backends work. No need to include logic for
alias handling.

            - Conceptually wrong . every module represents a particular
functionality when you compile the module it should just reconfigure itself
to produce the appropriate image for the configured architecture .It a good
idea to have a true componentized operating system.

 

Regarding the ModuleType IMHO they should be used to provide information
that describes the module output/target not the build process! Iso , LiveIso
, Alias , ... all of them are meaningless they are not true metadata.

 

Long term enhancements:

 

X) tags like "linkerflag" or "compilerflag" are gcc/mingw specific and
should be replaced with other tags that provide the 

equivalent functionality using a more abstract aproach so other
backends/compilers could benefit from it. rbuild files should 

only describe the source code and the compilation process without including
specific information.

 

/Marc

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-dev/attachments/20071006/1ca1e028/attachment.html 


More information about the Ros-dev mailing list