source: common/libs/func_wrt_Makefile@ bcbecc5

ablfs-more legacy trunk
Last change on this file since bcbecc5 was 5637b53, checked in by Pierre Labastie <pierre@…>, 7 years ago

override libelf->elfutils for getting the tarball name

  • Property mode set to 100644
File size: 11.8 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
[ef32ce5]39SU_LUSER = sudo -u \$(LUSER) -i sh -c
[962793a]40LUSER_HOME = \$(LHOME)/\$(LUSER)
[195ed9f]41PRT_DU = echo -e "\nKB: \`du -skx --exclude=\$(SCRIPT_ROOT) --exclude=lost+found \$(MOUNT_PT) \`\n"
[9bbb9c8]42PRT_DU_CR = echo -e "\nKB: \`du -skx --exclude=\$(SCRIPT_ROOT) --exclude=lost+found --exclude /var/lib / \`\n"
[195ed9f]43
[3e7ceed]44ADD_REPORT = $REPORT
45ADD_CUSTOM_TOOLS = $CUSTOM_TOOLS
46ADD_BLFS_TOOLS = $BLFS_TOOL
[7072e1f]47PKGMNGT = $PKGMNGT
[322226d]48WRAP_INSTALL = $WRAP_INSTALL
[1838bc7]49
50
[195ed9f]51export PATH := \${PATH}:/usr/sbin
52
53include makefile-functions
54
55EOF
56) > $MKFILE
57}
[fe30c61]58
59#=======================
60
61
[3cb4ef5b]62#==== PACKAGES NAMES AND VERSIONS ====
[fe30c61]63
64#----------------------------------#
65get_package_tarball_name() { #
66#----------------------------------#
[659be15]67 local script_name=`echo ${1} | sed -e 's@^[0-9]\{1\}-@@'`
[fe30c61]68
69 # The use of 'head' is necessary to limit the return value to the FIRST match..
70 # hopefully this will not cause problems.
71 #
72 case $script_name in
73 tcl) echo $(grep "^tcl" $JHALFSDIR/pkg_tarball_list | head -n1 )
74 ;;
[608fbe1]75 iputils) echo $(grep "^iputils" $JHALFSDIR/pkg_tarball_list | head -n1 )
76 ;;
[7214dad]77 powerpc-utils) echo $(grep "^powerpc-utils" $JHALFSDIR/pkg_tarball_list | head -n1 )
78 ;;
[3c38ab0]79 uClibc)
80 if [[ "${PROGNAME}" = "clfs3" ]]; then
81 echo $(grep "^uClibc-" $JHALFSDIR/pkg_tarball_list | head -n1 )
[7214dad]82 else
[3c38ab0]83 echo $(grep "^$script_name-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
[7214dad]84 fi
85 ;;
[fe30c61]86 linux-headers)
[31a37db]87 if [[ "${PROGNAME}" = "lfs" ]] || [[ "${PROGNAME}" = "hlfs" ]] || [[ "${PROGNAME}" = "clfs" ]]; then
[fe30c61]88 # Uses kernel headers directly
89 echo $(grep "^linux-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
90 else
[608fbe1]91 # CLFS{2,3} used to use massaged headers package
92 # echo $(grep "^linux-headers-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
93 echo $(grep "^linux-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
[fe30c61]94 fi
95 ;;
[d8006a00]96 expect) echo $(grep "^expect" $JHALFSDIR/pkg_tarball_list | head -n1 )
97 ;;
[608fbe1]98 e2fsprogs-libs) echo $(grep "^e2fsprogs" $JHALFSDIR/pkg_tarball_list | head -n1 )
99 ;;
[f0a31de]100 libcap) echo $(grep "^libcap" $JHALFSDIR/pkg_tarball_list | head -n1 )
101 ;;
[82808d1]102 util-linux-libs | util-linux-pass1) echo $(grep "^util-linux" $JHALFSDIR/pkg_tarball_list | head -n1 )
[608fbe1]103 ;;
[4b54394]104 xz-utils) echo $(grep "^xz" $JHALFSDIR/pkg_tarball_list | head -n1 )
[083e2fd]105 ;;
[7072e1f]106 sqlite) echo $(grep "^sqlite" $JHALFSDIR/pkg_tarball_list | head -n1 )
[083e2fd]107 ;;
108 udev) echo $(grep "^systemd" $JHALFSDIR/pkg_tarball_list | head -n1 )
109 ;;
[8099885]110 xml-parser) echo $(grep "^XML" $JHALFSDIR/pkg_tarball_list | head -n1 )
111 ;;
112 libdbus) echo $(grep "^dbus" $JHALFSDIR/pkg_tarball_list | head -n1 )
113 ;;
[203a64c]114 glibc) echo $(grep "^glibc" $JHALFSDIR/pkg_tarball_list | head -n1 )
[5637b53]115 ;;
116 libelf) echo $(grep "^elfutils" $JHALFSDIR/pkg_tarball_list | head -n1 )
[203a64c]117 ;;
[7072e1f]118 *) echo $(grep "^$script_name[_-][[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
[fe30c61]119 ;;
120 esac
121
122}
123
[3cb4ef5b]124#----------------------------------#
125get_package_version() { #
126#----------------------------------#
127# Those hacks may change depending on the invention of devs for tarball names.
128# Normally, we expect -digit to signal the beginning of the version field
129# but it may happen that there is no '-' (tcl, expect), that the version
130# field is ddd-d (pkg-config-lite-028-1, since sed is greedy, it finds only
131# the second dash) or that the first character of the version is not a digit
132# (iputils-s20121221)...
133 case ${1} in
134 tcl*|expect*|tzdata*|xmlts*|unzip*|lynx*)
135 echo ${1} | sed -e 's@^[^[:digit:]]*@@' \
136 -e 's@\(-src\)*\.tar.*@@'
137 ;;
138 iputils*) echo ${1} | sed -e 's@^.*-@@' \
139 -e 's@\.tar.*@@'
140 ;;
[203a64c]141 glibc*) echo ${1} | sed -e 's@^[^-]*-@@' \
142 -e 's@\.tar.*@@'
143 ;;
[3cb4ef5b]144 LVM*) echo ${1} | sed -e 's@^[^.]*\.@@' \
145 -e 's@\.tgz.*@@'
146 ;;
147 iproute*) echo ${1} | sed -e 's@^[^-]*-@@' \
148 -e 's@\.tar.*@@'
149 ;;
[3d96a65]150 pkg*|udev*|Singular*|XML*)
[3cb4ef5b]151 echo ${1} | sed -e 's@^.*[a-z]-\([[:digit:]]\)@\1@' \
152 -e 's@\.tar.*@@' \
153 -e 's@\.zip.*@@'
154 ;;
155 *) echo ${1} | sed -e 's@^.*[-_]\([[:digit:]]\)@\1@' \
156 -e 's@\.tar.*@@' \
157 -e 's@\.zip.*@@'
158 ;;
159 esac
160
161}
[fe30c61]162#=======================
163
164
165#==== TARGET HEADER ====
166
167#----------------------------------#
168LUSER_wrt_target() { # Create target and initialize log file
169#----------------------------------#
170 local i=$1
171 local PREV=$2
[3cb4ef5b]172 local version
173 if [ "$3" != "" ]; then
174 version=-$3
175 fi
[fe30c61]176(
177cat << EOF
178
179$i: $PREV
180 @\$(call echo_message, Building)
[75d6d1c]181${NO_PROGRESS} @export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID &
[3cb4ef5b]182 @echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@$version
183 @\$(PRT_DU) >>logs/\$@$version
[fe30c61]184EOF
185) >> $MKFILE.tmp
186}
187
188#----------------------------------#
189CHROOT_wrt_target() { # Create target and initialize log file
190#----------------------------------#
191 local i=$1
192 local PREV=$2
[3cb4ef5b]193 local version
194 if [ "$3" != "" ]; then
195 version=-$3
196 fi
[fe30c61]197(
198cat << EOF
199
200$i: $PREV
201 @\$(call echo_message, Building)
[75d6d1c]202${NO_PROGRESS} @export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID &
[3cb4ef5b]203 @echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@$version
204 @\$(PRT_DU_CR) >>logs/\$@$version
[fe30c61]205EOF
206) >> $MKFILE.tmp
207}
208
209#=======================
210
211
212#======== UNPACK =======
213
214#----------------------------------#
215LUSER_wrt_unpack() { # Unpack and set 'ROOT' var
216#----------------------------------#
217 local FILE=$1
218 local optSAVE_PREVIOUS=$2
219
220 if [[ "${optSAVE_PREVIOUS}" != "1" ]]; then
221(
222cat << EOF
223 @\$(call remove_existing_dirs,$FILE)
224EOF
225) >> $MKFILE.tmp
226 fi
227
228(
229cat << EOF
230 @\$(call unpack,$FILE)
231 @\$(call get_pkg_root_LUSER)
232EOF
233) >> $MKFILE.tmp
234}
235
236#----------------------------------#
237CHROOT_Unpack() { #
238#----------------------------------#
239 local FILE=$1
240 local optSAVE_PREVIOUS=$2
241
242 if [ "${optSAVE_PREVIOUS}" != "1" ]; then
243(
244cat << EOF
245 @\$(call remove_existing_dirs2,$FILE)
246EOF
247) >> $MKFILE.tmp
248 fi
249(
250cat << EOF
[1f81129]251 @\$(call unpack2,$FILE)
[fe30c61]252 @\$(call get_pkg_root2)
253EOF
254) >> $MKFILE.tmp
255}
256
257#=======================
258
259
260#===== TESTS LOGS ======
261
262#----------------------------------#
263LUSER_wrt_test_log() { # Initialize testsuite log file
264#----------------------------------#
[3cb4ef5b]265 local version
266 if [ "$2" != "" ]; then
267 version=-$2
268 fi
269 local TESTLOGFILE=$1$version
[fe30c61]270(
271cat << EOF
[6bb080e]272 @echo "export TEST_LOG=\$(TESTLOGDIR)/$TESTLOGFILE" >> envars && \\
[3cb4ef5b]273 echo "\$(nl_)\`date\`\$(nl_)" >\$(TESTLOGDIR)/$TESTLOGFILE
[fe30c61]274EOF
275) >> $MKFILE.tmp
276}
277
278#----------------------------------#
279CHROOT_wrt_test_log() { #
280#----------------------------------#
[3cb4ef5b]281 local version
282 if [ "$2" != "" ]; then
283 version=-$2
284 fi
285 local TESTLOGFILE=$1$version
[fe30c61]286(
287cat << EOF
[8f2c086]288 @echo "export TEST_LOG=\$(crTESTLOGDIR)/$TESTLOGFILE" >> envars && \\
[3cb4ef5b]289 echo "\$(nl_)\`date\`\$(nl_)" >\$(crTESTLOGDIR)/$TESTLOGFILE
[fe30c61]290EOF
291) >> $MKFILE.tmp
292}
293
294#=======================
295
296
297#======== RUN AS =======
298
299#----------------------------------#
300wrt_RunAsRoot() { # Some scripts must be run as root..
301#----------------------------------#
302 local MOUNT_ENV
[3cb4ef5b]303 local version
304 if [ "$2" != "" ]; then
305 version=-$2
306 fi
[8f2c086]307 local file=$1
[fe30c61]308
309 case ${PROGNAME} in
310 lfs ) MOUNT_ENV="LFS" ;;
311 clfs ) MOUNT_ENV="CLFS" ;;
312 clfs2 ) MOUNT_ENV="CLFS" ;;
313 clfs3 ) MOUNT_ENV="CLFS" ;;
314 hlfs ) MOUNT_ENV="HLFS" ;;
315 *) echo "undefined progname $PROGNAME"; exit 1 ;;
316 esac
317
318(
319cat << EOF
[68713c9]320 @export ${MOUNT_ENV}=\$(MOUNT_PT) && \\
[3cb4ef5b]321 ${PROGNAME}-commands/`dirname $file`/\$@ >>logs/\$@$version 2>&1 && \\
322 \$(PRT_DU) >>logs/\$@$version
[fe30c61]323EOF
324) >> $MKFILE.tmp
325}
326
327#----------------------------------#
[0210014]328LUSER_wrt_RunAsUser() { # Calculate time with perl, footer to log file
[fe30c61]329#----------------------------------#
330 local file=$1
[3cb4ef5b]331 local version
332 if [ "$2" != "" ]; then
333 version=-$2
334 fi
[fe30c61]335
336(
337cat << EOF
[68713c9]338 @source ~/.bashrc && \\
[3cb4ef5b]339 \$(CMDSDIR)/`dirname $file`/\$@ >> logs/\$@$version 2>&1 && \\
340 \$(PRT_DU) >>logs/\$@$version
[fe30c61]341EOF
342) >> $MKFILE.tmp
343}
344
345#----------------------------------#
346CHROOT_wrt_RunAsRoot() { #
347#----------------------------------#
348 local file=$1
[3cb4ef5b]349 local version
350 if [ "$2" != "" ]; then
351 version=-$2
352 fi
[fe30c61]353(
354cat << EOF
[68713c9]355 @source envars && \\
[3cb4ef5b]356 \$(crCMDSDIR)/`dirname $file`/\$@ >>logs/\$@$version 2>&1 && \\
357 \$(PRT_DU_CR) >>logs/\$@$version
[fe30c61]358EOF
359) >> $MKFILE.tmp
360
361}
362
363#=======================
364
365
366#====== COPY FSTAB =====
367
368#----------------------------------#
369LUSER_wrt_CopyFstab() { #
370#----------------------------------#
371(
372cat << EOF
[68713c9]373 @cp -v \$(MOUNT_PT)/sources/fstab \$(MOUNT_PT)/etc/fstab >>logs/\$@ 2>&1 && \\
[0210014]374 \$(PRT_DU) >>logs/\$@
[fe30c61]375EOF
376) >> $MKFILE.tmp
377}
378
379#----------------------------------#
380CHROOT_wrt_CopyFstab() { #
381#----------------------------------#
382(
383cat << EOF
[68713c9]384 @cp -v /sources/fstab /etc/fstab >>logs/\$@ 2>&1 && \\
[0210014]385 \$(PRT_DU_CR) >>logs/\$@
[fe30c61]386EOF
387) >> $MKFILE.tmp
388}
389
390#=======================
391
392
[93346ee]393#==== INSTALLED FILES LOGS ====
394
[f546320]395#----------------------------------#
396LUSER_wrt_TouchTimestamp() { #
397#----------------------------------#
398(
399cat << EOF
400 @\$(call touch_timestamp_LUSER)
401EOF
402) >> $MKFILE.tmp
403}
404
[93346ee]405#----------------------------------#
406CHROOT_wrt_TouchTimestamp() { #
407#----------------------------------#
408(
409cat << EOF
410 @\$(call touch_timestamp)
411EOF
412) >> $MKFILE.tmp
413}
414
[f546320]415#----------------------------------#
416LUSER_wrt_LogNewFiles() { #
417#----------------------------------#
[e639536]418 local name=`echo ${1} | sed 's/[0-9]-//'`
[f546320]419(
420cat << EOF
421 @\$(call log_new_files_LUSER,$name)
422EOF
423) >> $MKFILE.tmp
424}
425
[93346ee]426#----------------------------------#
427CHROOT_wrt_LogNewFiles() { #
428#----------------------------------#
[e639536]429 local name=`echo ${1} | sed 's/[0-9]-//'`
[93346ee]430(
431cat << EOF
432 @\$(call log_new_files,$name)
433EOF
434) >> $MKFILE.tmp
435}
436
437#=======================
438
439
[fe30c61]440#==== RM BUILD DIRS ====
441
442#----------------------------------#
443LUSER_RemoveBuildDirs() { #
444#----------------------------------#
[e639536]445 local name=`echo ${1} | sed 's/[0-9]-//'`
[fe30c61]446(
447cat << EOF
448 @\$(call remove_build_dirs,$name)
449EOF
450) >> $MKFILE.tmp
451}
452
453#----------------------------------#
454CHROOT_wrt_RemoveBuildDirs() { #
455#----------------------------------#
[e639536]456 local name=`echo ${1} | sed 's/[0-9]-//'`
[fe30c61]457(
458cat << EOF
459 @\$(call remove_build_dirs2,$name)
460EOF
461) >> $MKFILE.tmp
462}
463
464#=======================
465
466
467#======== TOUCH ========
468
469#----------------------------------#
470wrt_touch() { #
471#----------------------------------#
472(
473cat << EOF
474 @\$(call housekeeping)
475EOF
476) >> $MKFILE.tmp
477}
478
479#=======================
Note: See TracBrowser for help on using the repository browser.