Hello,

right now the Live CD Makefiles are equivalent to shell scripts. I mean that all targets are always remade, and the need to actually build a package, download a file, ... is checked at shell level, not at makefile level.

Also the current system has a drawback that if one editor bumps a package version, others don't pick up the command to rebuild that package (what happens is: the nev version of foo is downloaded, but /usr/bin/foo is in place, therefore the package doesn't get rebuilt). For ./configure arguments changing, the situation is even worse: nothing is done automatically to reflect that change.

Another drawback is that in order to forcibly rebuild a package, a file must be removed from the chroot. I already made a mistake and deleted my /bin/ls outside of chroot. I don't want to make this mistake again. There must be a safer method to forcibly rebuild a package.

Attached is a patch that adds a restructured Makefile for a sample package "byacc" (in fact I will need that package in /usr in the utf8 branch soon, because it is a dependency for the OpenI18n testsuite). The only installed file is /usr/local/bin/yacc, so it is easy to delete.

This makefile checks the need to download and build the package by using make rules, not @if... constructs. Try changing the VRS variable and see how the package gets re-downloaded and re-built. Touch Makefile to forcibly rebuild byacc.

Drawback: this works reliably only if svn doesn't set timestamps on downloaded files. Is there any option for this?

--
Alexander E. Patrakov
Index: Makefile
===================================================================
--- Makefile    (revision 353)
+++ Makefile    (working copy)
@@ -176,6 +176,7 @@
 
 post-bash: ch-file ch-libtool ch-bzip2 ch-diffutils ch-kbd ch-e2fsprogs 
ch-grep ch-grub ch-gzip \
        ch-hotplug ch-man ch-make ch-module-init-tools ch-patch ch-procps 
ch-psmisc ch-shadow \
+       ch-byacc \
        ch-sysklogd ch-sysvinit ch-tar ch-udev ch-util-linux ch-environment
 
 blfs: ch-openssl ch-wget ch-reiserfsprogs ch-xfsprogs ch-nano ch-joe ch-screen 
ch-curl ch-zip \
@@ -552,6 +553,10 @@
        make -C $(PKG)/$@ chroot
        make unmount
 
+byacc: prep-chroot
+       make -C $(PKG)/$@ chroot
+       make unmount
+
 sysklogd: prep-chroot 
        make -C $(PKG)/$@ chroot
        make unmount
@@ -1153,6 +1158,9 @@
 ch-shadow: popdev
        make -C $(PKG)/shadow stage2
 
+ch-byacc: popdev
+       make -C $(PKG)/byacc stage2
+
 ch-sysklogd: popdev
        make -C $(PKG)/sysklogd stage2
 
Index: packages/byacc/Makefile
===================================================================
--- packages/byacc/Makefile     (revision 0)
+++ packages/byacc/Makefile     (revision 0)
@@ -0,0 +1,32 @@
+# byacc makefile
+NM=byacc
+VRS=20040328
+#VRS=20050505
+DIR=$(NM)-$(VRS)
+FILE=$(DIR).tgz
+URL=ftp://invisible-island.net/$(NM)/$(FILE)
+
+$(FILE):
+       $(WGET) $(URL)
+
+chroot:
+       @chroot "$(MP)" $(chenv2) 'cd $(ROOT) && make ch-$(NM) $(chbash2)'
+
+stage2: Makefile $(FILE)
+       @echo ""
+       @echo "=====> Building $(NM) in chroot"
+       @echo ""
+       unpack $(FILE)
+       $(MAKE) -C $(DIR) -f ../Makefile compile-stage2
+       $(MAKE) clean
+       touch stage2
+
+compile-stage2:
+       ./configure --prefix=/usr/local
+       make
+       make install
+
+clean:
+       rm -rf $(DIR)
+
+.PHONY: chroot compile-stage2 clean
-- 
http://linuxfromscratch.org/mailman/listinfo/livecd
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to