source: common/libs/func_wrt_Makefile@ 0d793a8

ablfs
Last change on this file since 0d793a8 was e639536, checked in by Pierre Labastie <pierre@…>, 13 years ago

Corrects Makefile generation when some script names are of the form
ddd-d-name, where d represent a digit. This is used for package management
and/or for adding custom scripts (see README)

  • Property mode set to 100644
File size: 9.0 KB
RevLine 
[fe30c61]1#!/bin/bash
2
3# $Id$
4
5#=== MAKEFILE HEADER ===
6
[195ed9f]7#----------------------------------#
8wrt_Makefile_header() { #
9#----------------------------------#
10(
11 cat << EOF
12# This file is automatically generated by jhalfs
[fe30c61]13# DO NOT EDIT THIS FILE MANUALLY
14#
[195ed9f]15# Generated on `date "+%F %X %Z"`
16
[aec4483]17
18SHELL = /bin/bash
[195ed9f]19
20SRC = /sources
21MOUNT_PT = $BUILDDIR
22PKG_LST = $PKG_LST
23LUSER = $LUSER
24LGROUP = $LGROUP
[962793a]25LHOME = $LHOME
[195ed9f]26SCRIPT_ROOT = $SCRIPT_ROOT
27
28BASEDIR = \$(MOUNT_PT)
29SRCSDIR = \$(BASEDIR)/sources
30CMDSDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/$PROGNAME-commands
[93346ee]31LOGDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/$LOGDIRBASE
32TESTLOGDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/$TESTLOGDIRBASE
[195ed9f]33
34crCMDSDIR = /\$(SCRIPT_ROOT)/$PROGNAME-commands
[93346ee]35crLOGDIR = /\$(SCRIPT_ROOT)/$LOGDIRBASE
36crTESTLOGDIR = /\$(SCRIPT_ROOT)/$TESTLOGDIRBASE
37crFILELOGDIR = /\$(SCRIPT_ROOT)/$FILELOGDIRBASE
[195ed9f]38
39SU_LUSER = su - \$(LUSER) -c
[962793a]40LUSER_HOME = \$(LHOME)/\$(LUSER)
[195ed9f]41PRT_DU = echo -e "\nKB: \`du -skx --exclude=\$(SCRIPT_ROOT) --exclude=lost+found \$(MOUNT_PT) \`\n"
42PRT_DU_CR = echo -e "\nKB: \`du -skx --exclude=\$(SCRIPT_ROOT) --exclude=lost+found / \`\n"
43
[3e7ceed]44ADD_REPORT = $REPORT
45ADD_CUSTOM_TOOLS = $CUSTOM_TOOLS
46ADD_BLFS_TOOLS = $BLFS_TOOL
[7072e1f]47PKGMNGT = $PKGMNGT
[1838bc7]48
49
[195ed9f]50export PATH := \${PATH}:/usr/sbin
51
52include makefile-functions
53
54EOF
55) > $MKFILE
56}
[fe30c61]57
58#=======================
59
60
61#==== PACKAGES NAMES ===
62
63#----------------------------------#
64get_package_tarball_name() { #
65#----------------------------------#
66 local script_name=`echo ${1} | sed -e 's@[0-9]\{1\}-@@'`
67
68 # The use of 'head' is necessary to limit the return value to the FIRST match..
69 # hopefully this will not cause problems.
70 #
71 case $script_name in
72 tcl) echo $(grep "^tcl" $JHALFSDIR/pkg_tarball_list | head -n1 )
73 ;;
[608fbe1]74 iputils) echo $(grep "^iputils" $JHALFSDIR/pkg_tarball_list | head -n1 )
75 ;;
[7214dad]76 powerpc-utils) echo $(grep "^powerpc-utils" $JHALFSDIR/pkg_tarball_list | head -n1 )
77 ;;
[3c38ab0]78 uClibc)
79 if [[ "${PROGNAME}" = "clfs3" ]]; then
80 echo $(grep "^uClibc-" $JHALFSDIR/pkg_tarball_list | head -n1 )
[7214dad]81 else
[3c38ab0]82 echo $(grep "^$script_name-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
[7214dad]83 fi
84 ;;
[fe30c61]85 linux-headers)
[31a37db]86 if [[ "${PROGNAME}" = "lfs" ]] || [[ "${PROGNAME}" = "hlfs" ]] || [[ "${PROGNAME}" = "clfs" ]]; then
[fe30c61]87 # Uses kernel headers directly
88 echo $(grep "^linux-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
89 else
[608fbe1]90 # CLFS{2,3} used to use massaged headers package
91 # echo $(grep "^linux-headers-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
92 echo $(grep "^linux-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
[fe30c61]93 fi
94 ;;
[d8006a00]95 expect) echo $(grep "^expect" $JHALFSDIR/pkg_tarball_list | head -n1 )
96 ;;
[608fbe1]97 e2fsprogs-libs) echo $(grep "^e2fsprogs" $JHALFSDIR/pkg_tarball_list | head -n1 )
98 ;;
99 util-linux-libs) echo $(grep "^util-linux" $JHALFSDIR/pkg_tarball_list | head -n1 )
100 ;;
[4b54394]101 xz-utils) echo $(grep "^xz" $JHALFSDIR/pkg_tarball_list | head -n1 )
102 ;;
[7072e1f]103 sqlite) echo $(grep "^sqlite" $JHALFSDIR/pkg_tarball_list | head -n1 )
104 ;;
105 *) echo $(grep "^$script_name[_-][[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
[fe30c61]106 ;;
107 esac
108
109}
110
111#=======================
112
113
114#==== TARGET HEADER ====
115
116#----------------------------------#
117LUSER_wrt_target() { # Create target and initialize log file
118#----------------------------------#
119 local i=$1
120 local PREV=$2
121(
122cat << EOF
123
124$i: $PREV
125 @\$(call echo_message, Building)
[75d6d1c]126${NO_PROGRESS} @export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID &
[fe30c61]127 @echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@
128 @\$(PRT_DU) >>logs/\$@
129EOF
130) >> $MKFILE.tmp
131}
132
133#----------------------------------#
134CHROOT_wrt_target() { # Create target and initialize log file
135#----------------------------------#
136 local i=$1
137 local PREV=$2
138(
139cat << EOF
140
141$i: $PREV
142 @\$(call echo_message, Building)
[75d6d1c]143${NO_PROGRESS} @export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID &
[6bb080e]144 @echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@
145 @\$(PRT_DU_CR) >>logs/\$@
[fe30c61]146EOF
147) >> $MKFILE.tmp
148}
149
150#=======================
151
152
153#======== UNPACK =======
154
155#----------------------------------#
156LUSER_wrt_unpack() { # Unpack and set 'ROOT' var
157#----------------------------------#
158 local FILE=$1
159 local optSAVE_PREVIOUS=$2
160
161 if [[ "${optSAVE_PREVIOUS}" != "1" ]]; then
162(
163cat << EOF
164 @\$(call remove_existing_dirs,$FILE)
165EOF
166) >> $MKFILE.tmp
167 fi
168
169(
170cat << EOF
171 @\$(call unpack,$FILE)
172 @\$(call get_pkg_root_LUSER)
173EOF
174) >> $MKFILE.tmp
175}
176
177#----------------------------------#
178CHROOT_Unpack() { #
179#----------------------------------#
180 local FILE=$1
181 local optSAVE_PREVIOUS=$2
182
183 if [ "${optSAVE_PREVIOUS}" != "1" ]; then
184(
185cat << EOF
186 @\$(call remove_existing_dirs2,$FILE)
187EOF
188) >> $MKFILE.tmp
189 fi
190(
191cat << EOF
[1f81129]192 @\$(call unpack2,$FILE)
[fe30c61]193 @\$(call get_pkg_root2)
194EOF
195) >> $MKFILE.tmp
196}
197
198#=======================
199
200
201#===== TESTS LOGS ======
202
203#----------------------------------#
204LUSER_wrt_test_log() { # Initialize testsuite log file
205#----------------------------------#
206 local TESTLOGFILE=$1
207(
208cat << EOF
[6bb080e]209 @echo "export TEST_LOG=\$(TESTLOGDIR)/$TESTLOGFILE" >> envars && \\
[10c8b78]210 echo "\$(nl_)\`date\`\$(nl_)" >\$(TESTLOGDIR)/\$@
[fe30c61]211EOF
212) >> $MKFILE.tmp
213}
214
215#----------------------------------#
216CHROOT_wrt_test_log() { #
217#----------------------------------#
218 local TESTLOGFILE=$1
219(
220cat << EOF
[8f2c086]221 @echo "export TEST_LOG=\$(crTESTLOGDIR)/$TESTLOGFILE" >> envars && \\
[6bb080e]222 echo "\$(nl_)\`date\`\$(nl_)" >test-logs/\$@
[fe30c61]223EOF
224) >> $MKFILE.tmp
225}
226
227#=======================
228
229
230#======== RUN AS =======
231
232#----------------------------------#
233wrt_RunAsRoot() { # Some scripts must be run as root..
234#----------------------------------#
235 local MOUNT_ENV
[8f2c086]236 local file=$1
[fe30c61]237
238 case ${PROGNAME} in
239 lfs ) MOUNT_ENV="LFS" ;;
240 clfs ) MOUNT_ENV="CLFS" ;;
241 clfs2 ) MOUNT_ENV="CLFS" ;;
242 clfs3 ) MOUNT_ENV="CLFS" ;;
243 hlfs ) MOUNT_ENV="HLFS" ;;
244 *) echo "undefined progname $PROGNAME"; exit 1 ;;
245 esac
246
247(
248cat << EOF
[68713c9]249 @export ${MOUNT_ENV}=\$(MOUNT_PT) && \\
[0210014]250 ${PROGNAME}-commands/`dirname $file`/\$@ >>logs/\$@ 2>&1 && \\
[fe30c61]251 \$(PRT_DU) >>logs/\$@
252EOF
253) >> $MKFILE.tmp
254}
255
256#----------------------------------#
[0210014]257LUSER_wrt_RunAsUser() { # Calculate time with perl, footer to log file
[fe30c61]258#----------------------------------#
259 local file=$1
260
261(
262cat << EOF
[68713c9]263 @source ~/.bashrc && \\
[0210014]264 \$(CMDSDIR)/`dirname $file`/\$@ >> logs/\$@ 2>&1 && \\
265 \$(PRT_DU) >>logs/\$@
[fe30c61]266EOF
267) >> $MKFILE.tmp
268}
269
270#----------------------------------#
271CHROOT_wrt_RunAsRoot() { #
272#----------------------------------#
273 local file=$1
274(
275cat << EOF
[68713c9]276 @source envars && \\
[0210014]277 \$(crCMDSDIR)/`dirname $file`/\$@ >>logs/\$@ 2>&1 && \\
[fe30c61]278 \$(PRT_DU_CR) >>logs/\$@
279EOF
280) >> $MKFILE.tmp
281
282}
283
284#=======================
285
286
287#====== COPY FSTAB =====
288
289#----------------------------------#
290LUSER_wrt_CopyFstab() { #
291#----------------------------------#
292(
293cat << EOF
[68713c9]294 @cp -v \$(MOUNT_PT)/sources/fstab \$(MOUNT_PT)/etc/fstab >>logs/\$@ 2>&1 && \\
[0210014]295 \$(PRT_DU) >>logs/\$@
[fe30c61]296EOF
297) >> $MKFILE.tmp
298}
299
300#----------------------------------#
301CHROOT_wrt_CopyFstab() { #
302#----------------------------------#
303(
304cat << EOF
[68713c9]305 @cp -v /sources/fstab /etc/fstab >>logs/\$@ 2>&1 && \\
[0210014]306 \$(PRT_DU_CR) >>logs/\$@
[fe30c61]307EOF
308) >> $MKFILE.tmp
309}
310
311#=======================
312
313
[93346ee]314#==== INSTALLED FILES LOGS ====
315
[f546320]316#----------------------------------#
317LUSER_wrt_TouchTimestamp() { #
318#----------------------------------#
319(
320cat << EOF
321 @\$(call touch_timestamp_LUSER)
322EOF
323) >> $MKFILE.tmp
324}
325
[93346ee]326#----------------------------------#
327CHROOT_wrt_TouchTimestamp() { #
328#----------------------------------#
329(
330cat << EOF
331 @\$(call touch_timestamp)
332EOF
333) >> $MKFILE.tmp
334}
335
[f546320]336#----------------------------------#
337LUSER_wrt_LogNewFiles() { #
338#----------------------------------#
[e639536]339 local name=`echo ${1} | sed 's/[0-9]-//'`
[f546320]340(
341cat << EOF
342 @\$(call log_new_files_LUSER,$name)
343EOF
344) >> $MKFILE.tmp
345}
346
[93346ee]347#----------------------------------#
348CHROOT_wrt_LogNewFiles() { #
349#----------------------------------#
[e639536]350 local name=`echo ${1} | sed 's/[0-9]-//'`
[93346ee]351(
352cat << EOF
353 @\$(call log_new_files,$name)
354EOF
355) >> $MKFILE.tmp
356}
357
358#=======================
359
360
[fe30c61]361#==== RM BUILD DIRS ====
362
363#----------------------------------#
364LUSER_RemoveBuildDirs() { #
365#----------------------------------#
[e639536]366 local name=`echo ${1} | sed 's/[0-9]-//'`
[fe30c61]367(
368cat << EOF
369 @\$(call remove_build_dirs,$name)
370EOF
371) >> $MKFILE.tmp
372}
373
374#----------------------------------#
375CHROOT_wrt_RemoveBuildDirs() { #
376#----------------------------------#
[e639536]377 local name=`echo ${1} | sed 's/[0-9]-//'`
[fe30c61]378(
379cat << EOF
380 @\$(call remove_build_dirs2,$name)
381EOF
382) >> $MKFILE.tmp
383}
384
385#=======================
386
387
388#======== TOUCH ========
389
390#----------------------------------#
391wrt_touch() { #
392#----------------------------------#
393(
394cat << EOF
395 @\$(call housekeeping)
396EOF
397) >> $MKFILE.tmp
398}
399
400#=======================
Note: See TracBrowser for help on using the repository browser.