> Date: Sat, 15 Feb 2014 09:58:02 -0300 > From: Fernando de Oliveira <fam...@yahoo.com.br> > To: BLFS Support List <blfs-support@linuxfromscratch.org> > Subject: Re: [blfs-support] Iced Tea 2.4.1 and iced tea 2.4.5 sed unknown > option to `s' > > Em 15-02-2014 08:29, akhiezer escreveu: > >> From blfs-support-boun...@linuxfromscratch.org Fri Feb 14 13:19:25 2014 > >> Date: Fri, 14 Feb 2014 10:13:47 -0300 > >> From: Fernando de Oliveira <fam...@yahoo.com.br> > >> To: BLFS Support List <blfs-support@linuxfromscratch.org> > >> Subject: Re: [blfs-support] Iced Tea 2.4.1 and iced tea 2.4.5 sed unknown > >> option to `s' > >> > > . > > . > >> > >> I am trying to understand this better, and have found that configure and > >> configure.ac have mentions to lsb_release. I am trying to understand if > >> it is a required, recommended or optional dependency. However, in one > >> machine I do not have it installed and it gives me linux-gnu and builds > >> fine, so, I am intending to add as optional. > >> > >> What do you all think about this? I cannot understand why Christopher's > >> is getting n/a. > >> > >> In the following, I am writing some observations and guesses. > >> > >> In configure, for 2.4.4, which is a build dir still in place in yet > >> another machine, I see: > >> > >> {{{ > >> if test -n "$ac_tool_prefix"; then > >> # Extract the first word of "${ac_tool_prefix}lsb_release", so it can > >> be a program name with args. > >> set dummy ${ac_tool_prefix}lsb_release; ac_word=$2 > >> { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 > >> $as_echo_n "checking for $ac_word... " >&6; } > >> if ${ac_cv_path_LSB_RELEASE+:} false; then : > >> $as_echo_n "(cached) " >&6 > >> else > >> case $LSB_RELEASE in > >> [\\/]* | ?:[\\/]*) > >> ac_cv_path_LSB_RELEASE="$LSB_RELEASE" # Let the user override the test > >> with a path. > >> ;; > >> *) > >> as_save_IFS=$IFS; IFS=$PATH_SEPARATOR > >> }}} > >> > >> > >> Also, I noticed that he is building at /opt, so probably as root. I have: > >> > >> {{{ > >> $ xzgrep -C6 distro_name > >> /home/fernando/Downloads/blfs/OpenJDK-1.7.0.51-2.4.5-2014.01.29-18h12m38s.log.xz > >> rm -f > >> /home/fernando/tmp/paco-build-2014.01.29-18h12m38s/icedtea-2.4.5/generated.build/sun/misc/Version.java > >> rm -f > >> /home/fernando/tmp/paco-build-2014.01.29-18h12m38s/icedtea-2.4.5/generated.build/sun/misc/Version.java.temp > >> /bin/sed -e 's/@@launcher_name@@/java/g' \ > >> -e 's/@@java_version@@/1.7.0_51-blfs/g' \ > >> -e 's/@@java_runtime_version@@/1.7.0_51-blfs-b31/g' \ > >> -e 's/@@jdk_derivative_name@@/IcedTea 2.4.5/g' \ > >> -e 's/@@distro_name@@/Linux From Scratch/g' \ > >> -e 's/@@distro_package_version@@/'7u51-2.4.5-blfs'/g' \ > >> -e 's/@@java_runtime_name@@/OpenJDK Runtime Environment/g' \ > >> -e 's/@@jdk_revid@@//g' \ > >> -e 's/@@hotspot_revid@@//g' \ > >> ../../../src/share/classes/sun/misc/Version.java.template > > >> /home/fernando/tmp/paco-build-2014.01.29-18h12m38s/icedtea-2.4.5/generated.build/sun/misc/Version.java.temp > >> make[5]: Leaving directory > >> `/home/fernando/tmp/paco-build-2014.01.29-18h12m38s/icedtea-2.4.5/openjdk-boot/jdk/make/java/version' > >> }}} > >> > >> I remember having sometime ago problems with PATH, for some packages, if > >> I build as root, and for those, I have a line in the script: > >> > >> source /etc/profile > >> > >> and the PATH is well defined, because he needs: > >> > >> export CLASSPATH=.:/usr/share/java && > >> export PATH="$PATH:/opt/OpenJDK-1.7.0.51-bin/bin" > >> > >> or similar, if the binary is another one, i.e., the binary has to be in > >> the path, and, in my case, it is provided by: > >> > >> /etc/profile.d/openjdk.sh > >> > >> which is defined in OJDK/Icedtea BLFS page. > >> > > > > > > Yes, tracing through the code indicates that the problem may be > > stemming from 'lsb_release -is' outputting 'n/a' (others on web have > > reported various breakages - not just re icedtea - that seem to stem > > from lsb_release using 'n/a' as a return value - and the code that uses > > said output not sanitising its own input). > > > > > > The following is working from blfs-svn ('OpenJDK-1.7.0.51/IcedTea-2.4.5' > > , 'http://www.linuxfromscratch.org/blfs/view/svn/general/openjdk.html'), > > but should be similar for blfs-7.4 (I've broken/re-wrapped some of the > > longer outputted lines): > > ---- > > (0) # Unpack src tarballs into . for the purposes of following greps. NB > > that this is not making any suggestion on how you should unpack > > stuff for the build: follow the book for that, of course. > > > > (1) grep -r '@@distro_name@@' . > > ./jdk-9db88c18e114/make/java/version/Makefile: > > -e 's/@@distro_name@@/$(DISTRO_NAME)/g' \ > > > > (2) grep -r 'DISTRO_NAME' . > > ./icedtea-2.4.5/Makefile.am: > > echo "DISTRO_NAME=$(DIST_NAME)" > > >>openjdk/jdk/make/common/shared/Defs.gmk ; > > ./icedtea-2.4.5/Makefile.in: > > echo "DISTRO_NAME=$(DIST_NAME)" > > >>openjdk/jdk/make/common/shared/Defs.gmk ; > > ./jdk-9db88c18e114/make/java/version/Makefile: > > -e 's/@@distro_name@@/$(DISTRO_NAME)/g' \ > > > > (3) grep -r 'DIST_NAME' . > > ./icedtea-2.4.5/Makefile.am: > > echo "DISTRO_NAME=$(DIST_NAME)" > > >>openjdk/jdk/make/common/shared/Defs.gmk ; > > ./icedtea-2.4.5/ChangeLog: DIST_NAME to build. > > ./icedtea-2.4.5/configure:DIST_NAME > > ./icedtea-2.4.5/configure: DIST_NAME="$($LSB_RELEASE -is | sed > > 's/^"//;s/"$//')" > > ./icedtea-2.4.5/configure: DIST_NAME="$build_os" > > ./icedtea-2.4.5/acinclude.m4: DIST_NAME="$($LSB_RELEASE -is | sed > > 's/^"//;s/"$//')" > > ./icedtea-2.4.5/acinclude.m4: DIST_NAME="$build_os" > > ./icedtea-2.4.5/acinclude.m4:AC_SUBST(DIST_NAME) > > ./icedtea-2.4.5/Makefile.in:DIST_NAME = @DIST_NAME@ > > ./icedtea-2.4.5/Makefile.in: > > echo "DISTRO_NAME=$(DIST_NAME)" > > >>openjdk/jdk/make/common/shared/Defs.gmk ; > > > > (4) grep -lrE 'LSB_RELEASE|build_os' . > > ./icedtea-2.4.5/ChangeLog > > ./icedtea-2.4.5/configure > > ./icedtea-2.4.5/acinclude.m4 > > ./icedtea-2.4.5/Makefile.in > > ./icedtea-2.4.5/configure.ac > > > > (5) From the files in '(4)', you can see that build_os is only set > > if there's no LSB_RELEASE / lsb_release *detected* (which doesn't > > necessarily mean that you've not got it present). > > > > I'd suggest tracing the execution of './configure ...' to verify that > > the variables it's using, and the code paths that it thus follows, > > are what you're expecting them to be. A crude but simple & effective > > way to do that, is to stick in 'echo ....' lines at judicious places, > > mainly in './icedtea-2.4.5/configure' - and with, per earlier post > > today, appropriate marker text strings so that you can readily > > grep/locate them from the logged output &/or stdout/stderr. > > ---- > > > > > > > > hth, > > akh > > > > > > > > > > > > -- > > > > Many thanks again, akh. Read quickly your mail (obliged to do other > things, as I wrote earlier), and seems very good analysis indeed. > > > But still spent some time with this, reading the config.log (it is fast > to do it to this point). > > In one machine, I have: > > {{{ > DIST_ID='Custom build (Sat Feb 15 08:33:10 BRT 2014)' > DIST_NAME='linux-gnu' > }}} > > In another: > > {{{ > DIST_ID='Linux From Scratch, package '\''7u51-2.4.4-blfs'\''' > DIST_NAME='Linux From Scratch' > }}} > > First one does not have lsb_release, second one does: > > $ env LC_ALL=C which lsb_release > which: no lsb_release in > (/usr/local/bin:/bin:/sbin:/usr/sbin:/opt/gnome/bin:/opt/ant/bin:/opt/openjdk/bin:/opt/qt/bin:/usr/bin:/usr/X11R6/bin) > > $ grep -ri linux-gnu /etc/ 2>/dev/null > /etc/gtk-2.0/gtk.immodules:# ModulesPath = > /root/.gtk-2.0/2.10.0/i686-pc-linux-gnu/immodules:/root/.gtk-2.0/2.10.0/immodules:/root/.gtk-2.0/i686-pc-linux-gnu/immodules:/root/.gtk-2.0/immodules:/usr/lib/gtk-2.0/2.10.0/i686-pc-linux-gnu/immodules:/usr/lib/gtk-2.0/2.10.0/immodules:/usr/lib/gtk-2.0/i686-pc-linux-gnu/immodules:/usr/lib/gtk-2.0/immodules > > I cannot believe that it is taking > > Second machine: > > $ which lsb_release > /usr/bin/lsb_release > > $ lsb_release -ds > "Linux From Scratch" > > > Configure search for DIST_NAME in: > > { $as_echo "$as_me:${as_lineno-$LINENO}: checking build identification" >&5 > $as_echo_n "checking build identification... " >&6; } > if test -n "$LSB_RELEASE"; then > lsb_info="$($LSB_RELEASE -ds | sed 's/^"//;s/"$//')" > if test "x$PKGVERSION" = "xnone"; then > DIST_ID="Built on $lsb_info ($(date))" > else > DIST_ID="$lsb_info, package $PKGVERSION" > fi > DIST_NAME="$($LSB_RELEASE -is | sed 's/^"//;s/"$//')" > else > DIST_ID="Custom build ($(date))" > DIST_NAME="$build_os" > fi > > Thus, it should be able to find using the variable build_os, which seems > to be defined in configure at: > > # Remember, the first character of IFS is used to create $*, > # except with old shells: > build_os=$* > > Value is defined everywhere, including Makefile, only after configure is > run: > > Makefile:build_os = linux-gnu > config.status:S["build_os"]="linux-gnu" > config.log:build_os='linux-gnu' > > I still do not understand how it gets this value. > > I have to stop, now. >
(Yes, likewise here doing this in parallel.) I think that it looks like Christopher (OP) config _is_ finding and executing 'lsb_release -is' (& likely also 'lsb_release -ds'), and it's the 'lsb_release -is' that's returning the 'n/a' - iirc usually from/via '/etc/lsb_release' or similar. Christopher, can you confirm if your build environment does have 'lsb_release -is', and if so what does it output? And similarly for 'lsb_release -ds' ? For ref: ---- $ grep -r 'n/a' ./lsb-release-1.4/ ./lsb-release-1.4/lsb_release:MSG_NA="n/a" ./lsb-release-1.4/lsb_release: echo -e "$MSG_LSBVER$LSB_VERSION" # at least "n/a" ./lsb-release-1.4/lsb_release.examples:LSB Version: n/a $ $ grep -r MSG_NA ./lsb-release-1.4/ ./lsb-release-1.4/lsb_release:MSG_NA="n/a" ./lsb-release-1.4/lsb_release: [ -z "$LSB_VERSION" ] && LSB_VERSION=$MSG_NA ./lsb-release-1.4/lsb_release: [ -z "$DISTRIB_ID" ] && DISTRIB_ID=$MSG_NA ./lsb-release-1.4/lsb_release: [ -z "$DISTRIB_RELEASE" ] && DISTRIB_RELEASE=$MSG_NA ./lsb-release-1.4/lsb_release: [ -z "$DISTRIB_CODENAME" ] && DISTRIB_CODENAME=$MSG_NA ./lsb-release-1.4/lsb_release: [ -z "$DISTRIB_ID" ] && DISTRIB_ID=$MSG_NA ./lsb-release-1.4/lsb_release: [ -z "$DISTRIB_RELEASE" ] && DISTRIB_RELEASE=$MSG_NA ./lsb-release-1.4/lsb_release: [ -z "$DISTRIB_CODENAME" ] && DISTRIB_CODENAME=$MSG_NA ./lsb-release-1.4/lsb_release: DISTRIB_ID=$MSG_NA ./lsb-release-1.4/lsb_release: && DISTRIB_RELEASE=$MSG_NA ./lsb-release-1.4/lsb_release: && DISTRIB_CODENAME=$MSG_NA $ ---- rgds, akh -- -- http://linuxfromscratch.org/mailman/listinfo/blfs-support FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page