diff options
author | Chris Johns <chrisj@rtems.org> | 2013-04-21 18:36:36 +1000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2013-04-21 18:36:36 +1000 |
commit | ec5674403d650d209684e9fd809db2c0e26ee553 (patch) | |
tree | 3cbf00cc329578d80f0f9cbd73a6a71615aa3525 /doc | |
parent | Fix the ZIP label. (diff) | |
download | rtems-source-builder-ec5674403d650d209684e9fd809db2c0e26ee553.tar.bz2 |
Add source and patches section.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/source-builder.txt | 106 |
1 files changed, 103 insertions, 3 deletions
diff --git a/doc/source-builder.txt b/doc/source-builder.txt index fa124e7..c5e495b 100644 --- a/doc/source-builder.txt +++ b/doc/source-builder.txt @@ -598,6 +598,109 @@ Both types of configuration files use the \'#' character as a comment character. Anything after this character on the line is ignored. There is no block comment. +Source and Patches +~~~~~~~~~~~~~~~~~~ + +The RTEMS Source Builder provides a flexible way to manage source. Source and +patches are declare in configurations file using the +source+ and +patch+ +directives. There are a single line containing a Universal Resource Location or +URL and can contain macros and shell expansions. The <<_prep,%prep>> section +details the source and patch directives + +The URL can reference remote and local source and patch resources. The +following schemes are provided: + +'http':: Remote access using the HTTP protocol. +'https':: Remote access using the Secure HTTP protocol. +'ftp:: Remote access using the FTP protocol. +'git:: Remote access to a GIT repository. +'cvs:: Remote access to a CVS repository. +'file:: Local access to an existing source directory. + +HTTP, HTTPS, and FTP +^^^^^^^^^^^^^^^^^^^^ + +Remote access to TAR files is provided using HTTP, HTTPS and FTP protocols. The +full URL provided is used to access the remote file including any query +components. The URL is parsed to extract the file component and the local +source directory is checked for that file. If the file is located the remote +file is not downloaded. Currently no other checks are made. If a download fails +you need to manually remove the file from the source directory and start the +build process again. + +The URL can contain macros. These are expand before issuing the request to +download the file. The GNU GCC compiler source URL is: + +------------------------------------------------------------- +Source0: ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-%{gcc_version}.tar.bz2 +------------------------------------------------------------- + +The type of compression is automatically detected from the file extension. The +supported compression formats are: + +`gz`:: GNU ZIP +`bzip2`:: BZIP2 ?? +`zip`:: ?? +'xy':: XY ?? + +The output of the decompression tool is feed to the standard `tar` utility and +unpacked into the build directory. + +If the URL references the GitHub API server 'https://api.github.com/' a tarball +of the specified version is download. For example the URL for the STLINK +project on GitHub and version is: + +------------------------------------------------------------- +%define stlink_version 3494c11 +Source0: https://api.github.com/repos/texane/stlink/texane-stlink-%{stlink_version}.tar.gz +------------------------------------------------------------- + +the TAR file is downloaded and used. + +GIT +^^^ + +A GIT repository can be cloned and used as source. The GIT repository resides +in the 'source' directory under the `git` directory. You can edit, update and +use the repository as you normally do and the results will used to build the +tools. This allows you to prepare and test patches in the build environment the +tools are built in. The GIT URL only supports the GIT protocol. You can control +the repository via the URL by appending options and arguments to the GIT +path. The options are delimited by `?` and option arguments are delimited from +the options with `=`. The options are: + +`branch`:: Checkout the specified branch. +`pull`:: Perform a pull to update the repository. +`fetch`:: Perform a fetch to get any remote updates. +`reset`:: Reset the repository. Useful to remove any local changes. You can +pass the `hard` argument to force a hard reset. + +------------------------------------------------------------- +Source0: git://gcc.gnu.org/git/gcc.git?branch=gcc-4_7-branch?reset=hard +------------------------------------------------------------- + +This will clone the GCC git repository and checkout the 4.7-branch and perform +a hard reset. + +CVS +^^^ + +A CVS repository can be checked out. CVS is more complex than GIT to handle +because of the modules support. This can effect the paths the source ends up +in. The CVS URL only supports the CVS protocol. You can control the repository +via the URL by appending options and arguments to the CVS path. The options are +delimited by `?` and option arguments are delimited from the options with +`=`. The options are: + +`module`:: The module to checkout. +`src-prefix`:: The path into the source where the module starts. +`tag`:: The CVS tag to checkout. +`date`:: The CVS date to checkout. + +------------------------------------------------------------- +Source0: cvs://pserver:anoncvs@sourceware.org/cvs/src?module=newlib?src-prefix=src +------------------------------------------------------------- + Macros and Defaults ~~~~~~~~~~~~~~~~~~~ @@ -968,12 +1071,9 @@ package with local modifications. The following example is taken from the ------------------------------------------------------------- %ifn %{defined Source0} Source0: ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-%{gcc_version}.tar.bz2 - VersionContro0: git clone git://gcc.gnu.org/git/gcc.git <1> %endif ------------------------------------------------------------- -<1> The version control macro is currently not implemented. - You could optionally have a few source files that make up the package. For example GNU's GCC was a few tar files for a while and it is now a single tar file. Support for multiple source files can be conditionally implemented with |