Difference between revisions of "Building Modules"

From ReactOS Wiki
Jump to: navigation, search
 
(19 intermediate revisions by 11 users not shown)
Line 1: Line 1:
'''work in progress by Z98'''
+
There are many applications, tests, and extra subsystems in the ReactOS SVN.
 +
We don't include them because they're usually not part of everyday's development/testing/use.
  
There are many applications, tests, and extra subsystems in the ReactOS SVN. Most are not included by default by the build server and require a few easy steps.
+
== Available Modules ==
 +
We currently have the following modules in the SVN Tree:
  
== Technical Information ==
+
* ''' rosapps ''' – Various non-core applications, like additional screensavers, devutils and cmdutils.
In "reactos/modules" or "reactos\modules", depending on whether you're on a UNIX or Windows system, are two files, ''empty.rbuild'' and ''directory.rbuild''. The Build system will read the ''directory.rbuild'' file and look if the subfolders named in this file exist.
+
* ''' rostests ''' - Home of our testing framework (Winetests and Rostests), which includes API conformance tests (both usermode and kernelmode APIs), plus the automatic application testing suite (based on AutoHotkey)
 +
* '''wallpapers''' – Several wallpapers for ReactOS Desktop.
  
If a folder exists, the Build System will process its ''directory.rbuild'' file. Otherwise it will fall back to the ''empty.rbuild'' file.
+
== Downloading the Modules ==
 +
The following example will show how to download the "rostests" module. To download any other module follow the same steps but using the name of the desired module.
 +
==== Step 1 ====
  
== Integrating a module ==
+
Find the <tt>reactos\modules</tt> (Windows) or <tt>reactos/modules</tt> (Unix) folder
If you want to integrate a module into the build, it's the easiest to copy the appropriate folder into the "modules" directory.
 
  
 +
[[File:ReactosModules.png]]
 +
==== Step 2 ====
 +
As we want to download the "rostests" module create a folder named <tt>rostests</tt>.
  
If you already downloaded a module into another directory and want to keep it there (e.g. for updating it via SVN), you can also create a symbolic link to that directory. This also saves disk space.
+
==== Step 3 ====
 +
Right click in that new folder and select checkout("SVN Checkout..")
  
On Windows, a symbolic link can be created on NTFS partitions with the [http://www.microsoft.com/technet/sysinternals/FileAndDisk/Junction.mspx Junction] utility. After you installed this utility, open a Command Prompt, jump to the "modules" directory and execute the following command:
+
[[File:RostestCheckout.png]]
  
  junction rosapps X:\reactos\rosapps
+
==== Step 4 ====
 +
The "URL of repository" of "rostest" is: svn://svn.reactos.org/reactos/trunk/rostests
  
In this case, I assume that you want to create a symbolic link to the "rosapps" module, which is located at X:\reactos\rosapps.
+
[[File:RostestSVN.jpg]]
  
Under Unix-based operating systems such as Linux, you can use the following command to create a symbolic link:
+
==== Step 5 ====
 +
Hit OK. It'll begin downloading the needed files. Compile as usual and you'll have the modules integrated in the ISO.
  
ln -s /home/user/reactos/rosapps rosapps
+
----
 +
If you want to download the ''rosapps'' or ''wallpaper'' module, just create a <tt>rosapps</tt> or <tt>wallpapers</tt> folder inside
 +
<tt>reactos/modules</tt> and use the following links as the URL of repository:
 +
* Rosapps: svn://svn.reactos.org/reactos/trunk/rosapps
 +
* Wallpaper: svn://svn.reactos.org/reactos/trunk/wallpapers
  
This example assumes that you want to create a symbolic link to the "rosapps" module, which is located at /home/user/reactos/rosapps.
+
== List available ninja targets ==
 +
To list available targets do:
 +
<code>
 +
ninja -t targets
 +
</code>
 +
or:
 +
<code>
 +
ninja -t targets >target_list
 +
</code>
 +
Select from there target for build or clean:
 +
<code>
 +
ninja <target1>_clean
 +
ninja <target1>
 +
</code>
  
== Modules ==
+
== Removing or Updating a Module ==
We currently have the following modules in the SVN Tree:
+
 
 +
If you '''remove''' a Module folder '''after''' CMake picks it up, it will not notice, until you tell it to ''reconfigure''.
 +
 
 +
The <tt>reconfigure</tt> command depends on the Build System you are using.
 +
 
 +
With '''''ninja''''' do:
 +
 
 +
<code>ninja rebuild_cache</code>
 +
 
 +
For other build systems use:
 +
 
 +
<code>nmake rebuild_cache</code>
 +
 
 +
or
  
* rosapps - Various applications such as a Paint replacement
+
<code>make rebuild_cache</code>
* rostests - Various tests to check for regressions
 
  
 +
== Technical information ==
 +
In  the <tt>reactos/modules</tt> or <tt>reactos\modules</tt> folder, depending on whether you're on a UNIX or Windows system, there is a file called  <tt>directory.cmake</tt>.
  
The following modules were removed from trunk some time ago. They are still in a branch called "unmaintained". As they probably don't work with newer ReactOS versions or didn't work at all, we don't support them.
+
The Build system will read the directory.cmake file and look if the subfolders named in this file exist.
 +
If a folder exists, the Build System will process its ''directory.cmake'' file. This way the folder gets integrated into the building process.
  
* os2 - An OS2 subsystem to run OS2 applications
+
[[Category:Building]]
* posix - A POSIX subsystem to run Unix applications
+
[[Category:Tutorial]]
* rosky - A SkyOS subsystem to run SkyOS applications
 
* vms - A VMS subsystem to run VMS applications
 

Latest revision as of 19:41, 10 August 2016

There are many applications, tests, and extra subsystems in the ReactOS SVN. We don't include them because they're usually not part of everyday's development/testing/use.

Available Modules

We currently have the following modules in the SVN Tree:

  • rosapps – Various non-core applications, like additional screensavers, devutils and cmdutils.
  • rostests - Home of our testing framework (Winetests and Rostests), which includes API conformance tests (both usermode and kernelmode APIs), plus the automatic application testing suite (based on AutoHotkey)
  • wallpapers – Several wallpapers for ReactOS Desktop.

Downloading the Modules

The following example will show how to download the "rostests" module. To download any other module follow the same steps but using the name of the desired module.

Step 1

Find the reactos\modules (Windows) or reactos/modules (Unix) folder

ReactosModules.png

Step 2

As we want to download the "rostests" module create a folder named rostests.

Step 3

Right click in that new folder and select checkout("SVN Checkout..")

RostestCheckout.png

Step 4

The "URL of repository" of "rostest" is: svn://svn.reactos.org/reactos/trunk/rostests

RostestSVN.jpg

Step 5

Hit OK. It'll begin downloading the needed files. Compile as usual and you'll have the modules integrated in the ISO.


If you want to download the rosapps or wallpaper module, just create a rosapps or wallpapers folder inside reactos/modules and use the following links as the URL of repository:

List available ninja targets

To list available targets do:

ninja -t targets

or:

ninja -t targets >target_list

Select from there target for build or clean:

ninja <target1>_clean
ninja <target1>

Removing or Updating a Module

If you remove a Module folder after CMake picks it up, it will not notice, until you tell it to reconfigure.

The reconfigure command depends on the Build System you are using.

With ninja do:

ninja rebuild_cache

For other build systems use:

nmake rebuild_cache

or

make rebuild_cache

Technical information

In the reactos/modules or reactos\modules folder, depending on whether you're on a UNIX or Windows system, there is a file called directory.cmake.

The Build system will read the directory.cmake file and look if the subfolders named in this file exist. If a folder exists, the Build System will process its directory.cmake file. This way the folder gets integrated into the building process.