Hello,

the status of the Live CD repository is rather bad.

1) glibc instructions in trunk match none of the available books

2) utf8 branch is out of date and doesn't build due to a missing tarball with RedHat patches (but please keep it for reference, it's the only branch that provided UTF-8 support and resulted in a released CD).

3) utf8-newmake never was built up to the end

4) sha1 sums for many packages don't match if one unpacks a big all-packages tar from lfs-matrix.net instead of downloading all packages

5) commands, visual effects and logging are not clearly separated in Makefiles. As a result, it takes more than one 80x25 screen to compare the commands in the Makefile and in the book

6) downloading of the SVN book to /usr/share/LFS-BOOK is broken

7) unionfs is still used, although device-mapper solution is already tested, but even it is in fact unnecessary in the utf8 branch: any reason for the need to write to /usr is a bug, and the font-related reason is resolved there by avoiding non-Xft based apps.

So, I merged everything from trunk and started fixing some of this mess in my utf8-newmake branch (but didn't commit yet, see below why).

The UTF-8 variant of the old book is available at http://www.linuxfromscratch.org/~alexander/lfs-book/ (only Chapters 5 and 6 are valid). Merging gcc4 changes here resulted only in two easily resolvable conflits. So I am currently updating my local copy of the utf8-newmake branch according to the merged instructions. I will put those instructions online after verification that nothing in LFS fails to build. Currently, I am at the beginning of Chapter 6, but I also applied the http://www.diy-linux.org/downloads/patches/gcc-4.0.1-volatile-fix-1.patch because it apparently better fixes the vgahw problem with Xorg and is closer to upsteram.

Also, I attempted to separate logging and visual effects from commands, by replacing the scripts/functions file with the attached one and cleaning up each Makefile from useless comments and logging by piping it through the following Perl script:

#!/usr/bin/perl

$/ = undef;
$input = <>;
$input =~ s/# ?=*\n//g;
$input =~ s/#\n//g;
$input =~ s/#.*?\\\/\n//g;
$input =~ s/#.*?Status Messages.*?\n//g;
$input =~ s/[EMAIL PROTECTED](call echo.*?\n//g;
$input =~ s/[EMAIL PROTECTED](OK\)\n//g;
$input =~ s/\t@/\t/g;
$input =~ s/ \>\>?.*?log 2\>\&1//g;
$input =~ s/ \\\n\t\n/\n/g;
print $input;

# EOF

(after this, one has to change sep_dir_build to sep_dir_build_noclean in tcl and binutils, and revamp the "make clean" logic in packages using sep_dir_build)

This cleanup resulted in more easily readable/verifiable commands and freed me from thinking about logging in each package's Makefile. However, committing this will result in a 300KB message and inability for me to merge things to/from trunk (but since Jeremy Huntwork said goodbye, that isn't a big problem). Also I am going to remove sha1 sum checking because of frequent (apparently bogus) mismatches (e.g. on make-3.80). Do you want this cleanup?

--
Alexander E. Patrakov
#==============================================================================
# Functions for use in the LiveCD Makefiles
#
# Authors: Jeremy Huntwork, Alexander Patrakov
# Date  : 2005-07-17
#==============================================================================

define echo_message
        @echo $(BRW)
        @echo 
================================================================================
        @echo $(BRW)$(1) $(ORANGE)$(NM)-$(VRS)$(BRW) for target $(ORANGE)[EMAIL 
PROTECTED](BRW)
        @echo 
================================================================================$(WHITE)
endef

define OK
        @echo $(GREEN)=====================================[ OK 
]=====================================$(WHITE)
endef

define std_build
        @$(call echo_message, Building)
        @unpack $(FILE) >$(DIR)[EMAIL PROTECTED] 2>&1
        @make -C $(DIR) -f ../Makefile compile-$@ >>$(DIR)[EMAIL PROTECTED] 2>&1
        @make clean >>$(DIR)[EMAIL PROTECTED] 2>&1
        @touch $@
endef

define std_build_noclean
        @$(call echo_message, Building)
        @unpack $(FILE) >$(DIR)[EMAIL PROTECTED] 2>&1
        @make -C $(DIR) -f ../Makefile compile-$@ >>$(DIR)[EMAIL PROTECTED] 2>&1
        @touch $@
endef

define sep_dir_build
        @$(call echo_message, Building)
        @unpack $(FILE) >$(DIR)[EMAIL PROTECTED] 2>&1
        @rm -rf $(NM)-build >>$(DIR)[EMAIL PROTECTED] 2>&1
        @mkdir -v $(NM)-build >>$(DIR)[EMAIL PROTECTED] 2>&1
        @$(MAKE) -C $(NM)-build -f ../Makefile compile-$@ >>$(DIR)[EMAIL 
PROTECTED] 2>&1
        @make clean >>$(DIR)[EMAIL PROTECTED] 2>&1
        @touch $@
endef

define sep_dir_build_noclean
        @$(call echo_message,Building)
        @unpack $(FILE) >$(DIR)[EMAIL PROTECTED] 2>&1
        @rm -rf $(NM)-build >>$(DIR)[EMAIL PROTECTED] 2>&1
        @mkdir -v $(NM)-build >>$(DIR)[EMAIL PROTECTED] 2>&1
        @$(MAKE) -C $(NM)-build -f ../Makefile compile-$@ >>$(DIR)[EMAIL 
PROTECTED] 2>&1
        @touch $@
endef

# This takes the form of 'download [filename] [url] [sha1sum]'
define download
        @cd $(SRC) ; if [ ! -f $(1) ] ; then $(WGET) $(2) ; \
         elif ! echo "$(3)  $(SRC)/$(1)" | sha1sum -c - >/dev/null 2>/dev/null 
; then \
         $(WGET) -c $(2) ; fi
        @if echo "$(3)  $(SRC)/$(1)" | sha1sum -c - >/dev/null 2>/dev/null ; 
then \
         echo $(BRW)sha1sum check on $(SRC)/$(1): $(GREEN)[ OK ]$(WHITE); \
         else echo $(BRW)sha1sum check on $(SRC)/$(1): $(RED)[ FAILED 
]$(WHITE); exit 1 ; fi
        @ln -sf $(SRC)/$(1) .
endef

%.gz %.tgz %.bz2 %.zip %.patch %.rules %.ttf:
        $(call download,$@,$(URL-$@),$(SHA-$@))

wget-list-entry:
        @echo $(URL-$(FILE)) >>$(MKTREE)/wget-list
        @echo $(URL-$(FILE1)) >>$(MKTREE)/wget-list
        @echo $(URL-$(FILE2)) >>$(MKTREE)/wget-list
        @echo $(URL-$(FILE3)) >>$(MKTREE)/wget-list
        @echo $(URL-$(FILE4)) >>$(MKTREE)/wget-list
        @echo $(URL-$(FILE5)) >>$(MKTREE)/wget-list
        @echo $(URL-$(PATCH)) >>$(MKTREE)/wget-list
        @echo $(URL-$(PATCH1)) >>$(MKTREE)/wget-list
        @echo $(URL-$(PATCH2)) >>$(MKTREE)/wget-list
        @echo $(URL-$(PATCH3)) >>$(MKTREE)/wget-list
        @echo $(URL-$(PATCH4)) >>$(MKTREE)/wget-list
        @echo $(URL-$(PATCH5)) >>$(MKTREE)/wget-list
        @echo $(URL-$(PATCH6)) >>$(MKTREE)/wget-list
        @echo $(URL-$(PATCH7)) >>$(MKTREE)/wget-list
-- 
http://linuxfromscratch.org/mailman/listinfo/livecd
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to