60 lines
		
	
	
		
			No EOL
		
	
	
		
			2.2 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			No EOL
		
	
	
		
			2.2 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <chapter xmlns="http://docbook.org/ns/docbook"
 | |
|       xmlns:xlink="http://www.w3.org/1999/xlink"
 | |
|       xmlns:xi="http://www.w3.org/2001/XInclude"
 | |
|       version="5.0"
 | |
|       xml:id='sec-standard-environment'>
 | |
| 
 | |
| <title>The Standard Environment</title>
 | |
| 
 | |
| 
 | |
| <para>The standard environment is used by passing it as an input
 | |
| called <envar>stdenv</envar> to the derivation, and then doing
 | |
| 
 | |
| <programlisting>
 | |
| source $stdenv/setup</programlisting>
 | |
| 
 | |
| at the top of the builder.</para>
 | |
| 
 | |
| <para>Apart from adding the aforementioned commands to the
 | |
| <envar>PATH</envar>, <filename>setup</filename> also does the
 | |
| following:
 | |
| 
 | |
| <itemizedlist>
 | |
| 
 | |
|   <listitem><para>All input packages specified in the
 | |
|   <envar>buildInputs</envar> environment variable have their
 | |
|   <filename>/bin</filename> subdirectory added to <envar>PATH</envar>,
 | |
|   their <filename>/include</filename> subdirectory added to the C/C++
 | |
|   header file search path, and their <filename>/lib</filename>
 | |
|   subdirectory added to the linker search path.  This can be extended.
 | |
|   For instance, when the <command>pkgconfig</command> package is
 | |
|   used, the subdirectory <filename>/lib/pkgconfig</filename> of each
 | |
|   input is added to the <envar>PKG_CONFIG_PATH</envar> environment
 | |
|   variable.</para></listitem>
 | |
| 
 | |
|   <listitem><para>The environment variable
 | |
|   <envar>NIX_CFLAGS_STRIP</envar> is set so that the compiler strips
 | |
|   debug information from object files.  This can be disabled by
 | |
|   setting <envar>NIX_STRIP_DEBUG</envar> to
 | |
|   <literal>0</literal>.</para></listitem>
 | |
| 
 | |
| </itemizedlist>
 | |
| 
 | |
| </para>
 | |
| 
 | |
| <para>The <filename>setup</filename> script also exports a function
 | |
| called <function>genericBuild</function> that knows how to build
 | |
| typical Autoconf-style packages.  It can be customised to perform
 | |
| builds for any type of package.  It is advisable to use
 | |
| <function>genericBuild</function> since it provides facilities that
 | |
| are almost always useful such as unpacking of sources, patching of
 | |
| sources, nested logging, etc.</para>
 | |
| 
 | |
| <para>The definitive, up-to-date documentation of the generic builder
 | |
| is the source itself, which resides in
 | |
| <filename>pkgs/stdenv/generic/setup.sh</filename>.</para>
 | |
| 
 | |
| <xi:include href="custom-builder.xml" />
 | |
| <xi:include href="debug-build.xml" />
 | |
| 
 | |
| </chapter> |