/|\

Welcome to the Slackware Documentation Project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
slackware:slackbuild_scripts [2012/08/20 09:13 (UTC)]
vharishankar [Overview]
slackware:slackbuild_scripts [2012/08/26 13:20 (UTC)]
cmyster [Creating SlackBuild scripts]
Line 1: Line 1:
 ====== SlackBuild scripts ====== ====== SlackBuild scripts ======
  
-A SlackBuild script is a shell script that automates the process of configuring, compiling and creating a Slackware package (*.tgz, *.txz, *.tbz files) from source archives. +A SlackBuild script is a shell script (usually Bourne shell compatible) that automates the process of configuring, compiling and creating a Slackware package (*.tgz, *.txz, *.tbz files) from source archives. 
  
 ===== Overview ===== ===== Overview =====
  
-The basic process of creating a Slackware package from source can be summarized as follows, while details may vary from one build system to another:+The basic process of creating a Slackware package from source can be summarized as follows, while details may vary from one build system to another.
  
   - Uncompress the source archive (usually .tar.gz or .tar.bz2 file) into a "work directory."   - Uncompress the source archive (usually .tar.gz or .tar.bz2 file) into a "work directory."
-  - Configure the source.+  - Create a ''slack-desc'' file, with the description of the software in the correct format. 
 +  - Configure the source, and apply patches if needed.
   - Compile/build the source and generate the binaries.   - Compile/build the source and generate the binaries.
-  - Install the program to a temporary directory. +  - Install the program to a temporary directory. This step may be a little bit tricky, depending on how the ''make install'' (or similar functionality) of the build system works. In standard GNU Makefiles, the ''DESTDIR'' variable passed to the ''make install'' command should be sufficient. In non-standard Makefiles and build systems which don't support that option, this might involve patching the ''Makefile'' (or similar file) or editing a build configuration setting of the build system
-  - Copy the program documentation and other necessary files to the appropriate subdirectories in the temporary directory.+  - Copy the program documentation and other necessary files (including post-installation scripts) to the appropriate subdirectories in the temporary installation directory. These locations should adhere to default directory structure used by Slackware to store applications installed by the package manager, viz. inside the ''/usr/'' folder.  
   - Use the ''makepkg'' utility from the temporary directory (installation location) to create a Slackware package that can then be installed using the ''installpkg'' utility.   - Use the ''makepkg'' utility from the temporary directory (installation location) to create a Slackware package that can then be installed using the ''installpkg'' utility.
 +
 +While the above steps can be done by hand, the process is tedious, sometimes complex, and involves typing in a lot of commands. Automating the process by a shell script allows the user to share the process with the community at large. It also makes sense to use and modify existing SlackBuild scripts for upgrading the same program to a newer version.
 +===== Creating SlackBuild scripts =====
 +
 +A good hands-on tutorial on creating a SlackBuild script can be found [[http://www.slackwiki.com/Writing_A_SlackBuild_Script|here]], and there are also a few [[http://slackbuilds.org/templates/|templates]] available to get a feeling for what is needed from a script.
 +
 +However, software may be written in different programming languages, use different build systems, or may even simply be written in an interpreted programming language with no obvious way to "install" it. In such cases, many steps involved in writing a SlackBuild script will differ from the standard way. Blindly copying and pasting commands from other SlackBuild scripts may or may not work.
 +
 +It is recommended that anybody who wishes to write a SlackBuild script, study and understand the build system of a software project before attempting to write a SlackBuild script for it. A degree of proficiency in writing shell scripts is also a definite benefit, as it is the practice to use Bourne shell compatible scripts for SlackBuilds. Ideally, simple C projects which use the standard GNU Make system is a good way to start practicing writing SlackBuild scripts.
 +<note tip>For new script writers, it is a good idea to perform the above steps manually to create the package from source, before actually writing a SlackBuild script. This reduces the chances of bugs and unexpected behaviour in the script.</note>
 +
 +Submitting SlackBuild scripts to a public repository such as http://www.slackbuilds.org may additionally require adherence to certain conventions and coding standards. For instance, it would be necessary for the script to determine the target architecture at runtime rather than hard-coding it into the script. These standards attempt to make SlackBuild scripts as portable as possible.
 ===== External Links ===== ===== External Links =====
  
-  * http://www.slackbuilds.org/+  * SlackBuilds - http://www.slackbuilds.org/ 
 +  * Templates - http://slackbuilds.org/templates/ 
 +===== Sources ===== 
 +  * Originally written by  [[wiki:user:vharishankar|V.Harishankar]] for the SlackDocs Wiki Project

In Other Languages
QR Code
QR Code slackware:slackbuild_scripts (generated for current page)