[ros-dev] [ros-diffs] [mpiulachs] 46862: My first commit in avery long time. I'm releasing the source code of my C#implementation of Rbuild by popular demand :) I would havepreferred to release the code under a BSD licence but thereis a small

Marc Piulachs marc.piulachs at live.com
Sun Apr 18 03:02:22 CEST 2010


Hi!

One suggestion: this <module name="notepad" type="win32gui..." syntax should be sooner or later converted to <win32gui name="notepad" ... It's not only a cosmetic change but to take advantage of object inheritance.

This would be mapped to :

    [TaskName("win32gui")]
    public class Win32GUI: UserModeModuleTask
    {
            ...
    }

This would simplificate a lot of checks and hacks, code like :

            if ((Module.Type == ModuleType.Win32CUI) ||
                (Module.Type == ModuleType.Win32DLL) ||
                (Module.Type == ModuleType.Win32GUI) ||
                (Module.Type == ModuleType.Win32OCX) ||
                (Module.Type == ModuleType.Win32SCR))
            {

would be simplified to:

  if (module is IUserMode) { ... }  -> (UserModeModuleTask implementing the IUserMode interface)

or:

            if ((libModule.Type != ModuleType.NativeDLL) &&
                (libModule.Type != ModuleType.Win32DLL) &&
                (libModule.Type != ModuleType.StaticLibrary) &&
                (libModule.Type != ModuleType.ObjectLibrary) &&
                (libModule.Type != ModuleType.Kernel) &&
                (libModule.Type != ModuleType.KernelModeDLL) &&
                (libModule.Type != ModuleType.KernelModeDriver) &&
                (libModule.Type != ModuleType.KeyboardLayout) &&
                (libModule.Type != ModuleType.RpcServer) &&
                (libModule.Type != ModuleType.RpcClient) &&
                (libModule.Type != ModuleType.RpcProxy) &&
                (libModule.Type != ModuleType.HostStaticLibrary))
            {
to

if(module.GetType().IsSubclassOf(typeof(LibraryModule)) { ...}

Also, every time a new module type (like in this case IdlInterface) is added a bunch of switch(module.Type) staments have to be edited to reflect the changes, and trust me .. there are a lot of them! with this change it would 'just work' with little to no effort.

As a side benefit different module types have different allowed attributes that currently cannot be validated without a bunch of if staments (not very elegant!). With this change invalid or not appropiate attributes can be detected and reported back to the user.

Regards,
Marc


From: Samuel serapion 
Sent: Sunday, April 18, 2010 2:15 AM
To: ReactOS Development List 
Subject: Re: [ros-dev] [ros-diffs] [mpiulachs] 46862: My first commit in avery long time. I'm releasing the source code of my C#implementation of Rbuild by popular demand :) I would havepreferred to release the code under a BSD licence but thereis a small


I got it to run... looks like some rbuild files where a bit broken... patch is attached.

dependency is this: http://dev.skybound.ca/download.aspx?product=VisualStyles


2010/4/17 Sir Gallantmon (ニール・ゴンパ) <ngompa13 at gmail.com>

  Does this work under Mono? AFAIK, Mono supports C# 3.5 and C# 4.0 language features.... so...?


  On Sat, Apr 17, 2010 at 7:56 AM, Aleksey Bragin <aleksey at reactos.org> wrote:

    Official URL for that component is http://dev.skybound.ca/download.aspx
    Just for reference, it indeed crashes when running the HTML report backend, I'm investigating this in the free time.

    WBR,
    Aleksey. 


    On Apr 14, 2010, at 6:41 PM, Ged Murphy wrote:


      It partially works.
      Can't build the designer due to a Skybound.VisualStyles dependency. I assume we get that from here? http://windowsclient.net/downloads/folders/controlgallery/entry1590.aspx

      It then crashes when running the html report

      Just in case you were interested....

      Ged.

      -----Original Message-----
      From: ros-diffs-bounces at reactos.org [mailto:ros-diffs-bounces at reactos.org] On Behalf Of mpiulachs at svn.reactos.org
      Sent: 13 April 2010 23:00
      To: ros-diffs at reactos.org
      Subject: [ros-diffs] [mpiulachs] 46862: My first commit in a very long time. I'm releasing the source code of my C# implementation of Rbuild by popular demand :) I would have preferred to release the code under a BSD licence but there is a small portion of ancient

      Author: mpiulachs
      Date: Tue Apr 13 23:59:21 2010
      New Revision: 46862

      URL: http://svn.reactos.org/svn/reactos?rev=46862&view=rev
      Log:
      My first commit in a very long time. I'm releasing the source code of my C# implementation of Rbuild by popular demand :) I would have preferred to release the code under a BSD licence but there is a small portion of ancient Nant GPL code that would have been to be rewritten first.

      There are two executables (SysGen.Designer) and (SysGen.Make)

      SysGen.Designer is a windows forms tool that allows to generate customized reactos images, it is similar in concept to Windows CE Platfom Builder. SysGen.Make is the actual Rbuild clone, It has three main parts, the .rbuild file parser + in-memory tree representation, the backends , and the auto generated files. The Mingw backend used to work 1'5 years ago and produced a 100% valid makefile.auto but have to be updated to be able to build a recent revision. Rewriting parts of it to take advantage of C# 3.5 extension methods would probably reduce the code by 50%. The other two parts are quite stable.

      This code was only a proof of concept and was never intended to be released so there is a ton of unpolished code and hacks required by the current C++ implementation that should be removed.

      How to test it:

      Select SysGen.Make as the Start-up Project in Visual Studio and edit Program.cs to point to the correct path to ReactOS-i386.rbuild Edit SysGenEngine.cs:639 to enable/disable specific backends, The HtmlBackend in \SysGen.BuildEngine\Backends\Html\HtmlBackend.cs is a very simple illustration of how powerful this framework is.

      Happy hacking!




      _______________________________________________
      Ros-dev mailing list
      Ros-dev at reactos.org
      http://www.reactos.org/mailman/listinfo/ros-dev



    _______________________________________________
    Ros-dev mailing list
    Ros-dev at reactos.org
    http://www.reactos.org/mailman/listinfo/ros-dev



  _______________________________________________
  Ros-dev mailing list
  Ros-dev at reactos.org
  http://www.reactos.org/mailman/listinfo/ros-dev





--------------------------------------------------------------------------------


_______________________________________________
Ros-dev mailing list
Ros-dev at reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.reactos.org/pipermail/ros-dev/attachments/20100418/b372243e/attachment-0001.htm>


More information about the Ros-dev mailing list