source: README.CUSTOM@ 93814d1

ablfs-more trunk
Last change on this file since 93814d1 was 2bd2fb8, checked in by Pierre Labastie <pierre.labastie@…>, 3 years ago

Replace $PROGNAME-commands with $COMMANDS

This allows to remove some references to PROGNAME

  • Property mode set to 100644
File size: 9.3 KB
RevLine 
[9a536f7]1 HOW TO ADD CUSTOM SCRIPTS TO THE JHALFS MAKEFILE
[93d32cf]2
[9a536f7]3
4 Normally JHALFS creates a Makefile containing only those scripts found in
[0fa52f2]5the {,B}LFS books. An automated construction tool cannot predict the
[9a536f7]6needs of every individual and requests are made "Can you add xxxx package".
7Rather than adding numerous package scripts and switches for each request it
8was easier to add a tool for the user(s) to code their own package needs.
9
[c7c32a3]10 There are two areas that can be customized: how the base system is built
11and what additional configurations and packages your hardware requires to be
12able to boot and run. Each of those areas are handled in a different way.
[f222bb8]13
14
15
[7b6ecc5]16 BASE SYSTEM CUSTOMIZATION
17
[c7c32a3]18 There are two ways to alter how the base system will be built:
[7b6ecc5]19
20 - Using a working copy of the book sources and editing the XML files.
21 This is the way used by book editors to test packages upgrades,
22 command changes, build order changes. etc.
23
24 This method requires you know very well the book sources and what
25 files need be edited. It will not be discussed here.
26
[c7c32a3]27 - Editing the generated build scripts to make any change you want.
[7b6ecc5]28 This is the method discussed below.
29
[f222bb8]30
31 EDITING THE BASE SCRIPTS
32
[c7c32a3]33 To begin with, the build scripts should be generated with book defaults. To
34do that, configure jhalfs activating any option you want included, but do not
35select "Run the Makefile" option.
[f222bb8]36
[2bd2fb8]37 Under the ${BUILD_DIR}/${SCRIPT_ROOT}/$COMMANDS directory
[f222bb8]38(using the defaults values to do an LFS build, that directory name is
39/mnt/build_dir/jhalfs/lfs-commands) you will find the default build scripts.
40
41 If all you want is modify, add, or remove some command from a package
[c7c32a3]42installation, for example to change its ./configure line, just edit the related
[f222bb8]43script. If changing or adding a patch, be sure to copy the new patch to the
44${BUILD_DIR}/sources directory. When done, run 'make' from inside the
45${BUILD_DIR}/${SCRIPT_ROOT} directory.
46
47
48 REPLACING OR INSERTING PACKAGES AND CHANGING BUILD ORDER
49
50 To remove a package from the system, just remove its script(s).
51
[c7c32a3]52 To change the version of some package, or to build a newer or older version
53than that in the book, edit ${BUILD_DIR}/${SCRIPT_ROOT}/pkg_tarball_list to
54change its tarball name and place the new tarball in the ${BUILD_DIR}/sources
55directory.
[f222bb8]56
57 To replace a package by an equivalent one, rename the replaced package script
58to reflect the new package name (for example, 102-man-db -> 102-man), edit the
[2257bd7]59script to make the required commands changes, place the new tarball in the
[f222bb8]60${BUILD_DIR}/sources directory, and edit ${BUILD_DIR}/${SCRIPT_ROOT}/pkg_tarball_list
[c7c32a3]61file to replace the removed package tarball name by the new package tarball
62name.
[f222bb8]63
64 To change the build order, rename the scripts changing the first 3-digits
[c7c32a3]65string until they are sorted in the way you want.
66
67 To insert a new package, for example to build Cracklib in order to build
68Shadow with Cracklib support, you should first decide before what package it
69needs to be installed, in this example 107-shadow. Then create a new script
70containing the needed commands, using an existing one as template, and name it
71with the same 3-digits string used for that mentioned default package, but
72adding another 1-digit string. In our example, the new script to build Cracklib
73before Shadow will be named 107-1-cracklib. This naming scheme allows inserting
74up to 10 scripts before each of the existing scripts. Place the tarball for
75the new package and required patches, if any, in ${BUILD_DIR}/sources and edit
[f222bb8]76${BUILD_DIR}/${SCRIPT_ROOT}/pkg_tarball_list to add the tarball name for that
77package.
78
[c7c32a3]79 When ready, launch again the jhalfs configuration interface. Make sure that
80exactly the same options are selected as when generating the default build
81scripts. Be sure that "Rebuild files" is unselected and select "Run the
82Makefile" if you want. Then select "Rebuild the Makefile". This will create a
83new Makefile based on the changes you made to the build scripts.
[7b6ecc5]84
85
86 ADDING POST-SYSTEM BUILD CONFIGURATION FILES AND EXTRA PACKAGES
87
88 The installation of BLFS packages is handled via blfs-tool and activated
[6acdc9c]89when you select the appropriate menu option. See README and README.BLFS for
[7b6ecc5]90more info.
91
[6acdc9c]92 The feature described below was added so users could install remaining
93configuration files, build the packages necessary to access the Internet
[c7c32a3]94or to support specific hardware, or to install basic utilities that are
95needed from the beginning, and was not intended to replace the BLFS
[7b6ecc5]96install system.
97
[9a536f7]98 LAYOUT
[c7c32a3]99 A new directory has been added to JHALFS tree which contains the
[9a536f7]100configuration scripts and a few examples. A switch has been added to the
[c7c32a3]101configuration file which enables/disables the inclusion of custom scripts.
[9a536f7]102
103 custom
[b7ea8ff]104 /config <-- where to put your scripts.
105 /examples <-- a few example scripts
106 template <-- ALL scripts MUST look like this
[9a536f7]107
108
109 NOTE::: You are responsible for including all dependencies and ensuring they
[c7c32a3]110 are built in the right order.
[9a536f7]111
112 1. To add a package to the final JHALFS Makefile you must first create a file
[9a86aa58]113 in the custom/config directory. The directory custom/config may need
114 to be created first.
[9a536f7]115 **All config files MUST follow the naming convention, xxx-PKG, where xxx
116 is the order number and PKG is the name of the package. The file naming
117 format is important as it defines the build order. The example shown
118 below has an order number 950 and log files will list in alphabetical
119 order in the /logs directory after blfs-tools scripts.
120 The simplest method is to copy the template file into the config directory
121 and rename it.
122
123 2. Populate the variables with the necessary values.
[2257bd7]124 Variable function is self explanatory. PATCH variables must be
125 numbered, starting at PATCH1 (up to PATCH10). If the md5 checksum value
126 is known, it can be added after the URL as in (quotes needed):
127 PATCH1="http://patch-host/patch-path xxxxxxx..."
128
129 3. Build commands
130 If the package you want to include is found in the BLFS
131 book then you only need to copy/paste the commands between the xEOFx
132 text, otherwise you will need to define the commands yourself.
[9a536f7]133 NOTE::: This script you just created is not usable directly but contains
134 all the information necessary for jhalfs to create a build script
135 and an entry in the jhalfs Makefile.
136
[2257bd7]137 4. As mentioned previously the build order is dictated by the 3 digit number
[9a536f7]138 in the file name. If a package has dependencies it must be numerically
139 larger than the dependency files.
[2257bd7]140 e.g. The package mc has glib as a dependency, so the build order is:
[9a536f7]141 950-glib
[2257bd7]142 951-mc
[9a536f7]143
[2257bd7]144 5. A config file for BLFS-bootscripts is already created as 999-blfs_bootscripts.
[9a536f7]145 If a package requires a bootscript to be installed add the cmd to this
146 file and NOT in the package script. The gpm script is included as an
[2257bd7]147 example of patch file and the need for a blfs bootscript.
148
149
150 EXAMPLES
151
152 Other examples can be found in custom/examples. They are dated and
153 unmaintained, but can be useful for creating your own scripts.
154
[9a536f7]155
156#--------- GLIB example -----------
157
158 #
159 # Filename syntax xxx-PKG ie. 950-glibc
160 # Create a file in the custom/config directory
161 # Populate the file using the following script as an example
162 #
[93d32cf]163
[9a536f7]164PKG="glib"
165PKG_VERSION="1.2.10"
166PKG_FILE="glib-1.2.10.tar.gz"
167URL="http://gd.tuwien.ac.at/graphics/gimp/gtk/v1.2/${PKG_FILE}"
168MD5="6fe30dad87c77b91b632def29dd69ef9"
169
[b7ea8ff]170 # The following code removes previously defined PATCHx variables
171for i in PATCH{1..10}; do
172 unset $i
173done
[9a536f7]174 # Patches are named PATCH[1..10]
175 # This information is used to download the patch only
176PATCH1="http://www.linuxfromscratch.org/patches/blfs/svn/glib-1.2.10-gcc34-1.patch 0077a1cce5e8a2231ac5a9b08c6263ba"
177
178
179 # NOTE::
180 # The convoluted scheme used to write out a temporary file is
181 # a work-around for embedded single and double quotes.
182
183( cat << "xEOFx"
184
185patch -Np1 -i ../glib-1.2.10-gcc34-1.patch &&
186./configure --prefix=/usr &&
187make
188make install &&
189chmod -v 755 /usr/lib/libgmodule-1.2.so.0.0.10
190
191xEOFx
192) > tmp
193
194
195#--------- GPM example -----------
196
197
198PKG="gpm"
199PKG_VERSION="1.20.1"
[f37d08b]200PKG_FILE="gpm-1.20.1.tar.bz2"
[9a536f7]201URL="ftp://arcana.linux.it/pub/gpm/gpm-1.20.1.tar.bz2"
202MD5="2c63e827d755527950d9d13fe3d87692"
[b7ea8ff]203for i in PATCH{1..10}; do
204 unset $i
205done
[9a536f7]206PATCH1=" http://www.linuxfromscratch.org/patches/blfs/svn/gpm-1.20.1-segfault-1.patch"
207PATCH2=" http://www.linuxfromscratch.org/patches/blfs/svn/gpm-1.20.1-silent-1.patch"
208
209
210( cat << "xEOFx"
211
212patch -Np1 -i ../gpm-1.20.1-segfault-1.patch &&
213patch -Np1 -i ../gpm-1.20.1-silent-1.patch &&
214./configure --prefix=/usr --sysconfdir=/etc &&
215LDFLAGS="-lm" make
216
217make install &&
218cp -v conf/gpm-root.conf /etc &&
219ldconfig
220
221# The normal cmd to install the boot script for gpm
222# --- PUT THIS CMD INSIDE 999-blfs_bootscripts
223#make install-gpm
224
225cat > /etc/sysconfig/mouse << "EOF"
226# Begin /etc/sysconfig/mouse
227
228MDEVICE="/dev/psaux"
229PROTOCOL="imps2"
230GPMOPTS=""
231
232# End /etc/sysconfig/mouse
233EOF
234
235xEOFx
236) > tmp
237
[e7655b2]238
239#--------- CMDS ONLY example -----------
240 # This is an example of a self contained cmd script
241 # There are no referenced to a package or package dir.
242 # This method is useful for creating user files/profiles/etc
243 # at build time.
[7b6ecc5]244
[e7655b2]245
246PKG=""
247PKG_VERSION=""
248PKG_FILE=""
249URL=""
250MD5=""
[b7ea8ff]251for i in PATCH{1..10}; do
252 unset $i
253done
[e7655b2]254PATCH1=""
255
256
257( cat << "xEOFx"
258
259echo "JUST A USELESS TRACE"
260
261xEOFx
262) > tmp
Note: See TracBrowser for help on using the repository browser.