LZMA in Buldroot.
Hi folks.
Since I have patches for lzma compressed initrds (ext2 root filesystem) I added BR2_PACKAGE_LZMA_HOST and moved the package/lzma/ to toolchain/lzma and made it just as sstrip. (and tmake, which I've also added).
about initrd kernel patches; I've attached one for 2.6.15.4 but if there are interest I'll maintain patches for newer versions aswell.
I also have patches for lzma compressed kernel but only for i386 (I need it for ARM but have met some challenges.).
Thanks to Ming-Ching Tiew for making the kernel patches.
Thomas.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lzma-buildroot.diff.gz
Type: application/octet-stream
Size: 2439 bytes
Desc: not available
Url : http://busybox.net/lists/buildroot/attachments/20061003/0f04042b/attachment.obj
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 3 lines · Bernhard Fischer
I'm curious why you moved it around? This should not be necessary, just depend on lzma-host for $(image).lzma, like so:
I wasn't sure about that myself but sstrip was done like this, so I moved it.
I have no problems with making a patch that does not move it but why was sstrip done this way?
the libraries are done from the package directory but they are the same in staging and target (except for stripping) but here we are talking about two sifferent binaries, one compiled for the host and one for the target.
this was at least my guess on the reason behind putting sstrip in in the toolchain part.
(my sstrip, or rather elfkickers package, which was never included in buildroot was in the package directory but then sstrip showed up in toolchain.)
I've kept building of lzma-host in toolchain since we have to build two different sets.
patch attached.
Thomas.
Quoted 4 lines
+$(EXT2_BASE).lzma: lzma-host $(EXT2_BASE)
(quoted diff) +2
-0+ $(STAGING_DIR)/bin/lzma -vc $(EXT2_BASE) > $(EXT2_BASE).lzma +
Quoted 15 lines
Please send an updated patch.
TIA,
BernhardQuoted 11 lines
about initrd kernel patches; I've attached one for 2.6.15.4 but if there are interest I'll maintain patches for newer versions aswell.
I also have patches for lzma compressed kernel but only for i386 (I need it for ARM but have met some challenges.).
Thanks to Ming-Ching Tiew for making the kernel patches.
Thomas.
-------------- next part --------------
ext2/ext2root.mk +7 -0
@@ -66,6 +66,10 @@ EXT2_TARGET := $(EXT2_BASE) endif +ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_LZMA)),y) +EXT2_TARGET := $(EXT2_BASE).lzma +endif + $(EXT2_BASE): host-fakeroot makedevs genext2fs - at find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true; @rm -rf $(TARGET_DIR)/usr/man
@@ -102,6 +106,9 @@ $(EXT2_BASE).gz: $(EXT2_BASE) @gzip --best -fv $(EXT2_BASE) +$(EXT2_BASE).lzma: lzma-host $(EXT2_BASE) + @$(STAGING_DIR)/bin/lzma -vc $(EXT2_BASE) > $(EXT2_BASE).lzma + EXT2_COPYTO := $(strip $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_COPYTO))) # " stupid syntax highlighting does not like unmatched quote from above line
lzma/lzma.mk +58 -29
124 lines not on this page · raw message
lzma/Config.in +8 -7
@@ -1,14 +1,15 @@ -config BR2_PACKAGE_LZMA - bool "lzma" +config BR2_PACKAGE_LZMA_TARGET + bool "Install lzma for the target system" default n help - Compression utility. + lzma utils on the target http://tukaani.org/lzma/ -config BR2_PACKAGE_LZMA_TARGET_HEADERS - bool "lzma headers in target" +config BR2_PACKAGE_LZMA_HOST + bool "Install lzma for the host/build system" default n - depends on BR2_PACKAGE_LZMA help - Put headers files in the target. + lzma utils + + http://tukaani.org/lzma/
Quoted 11 lines · Thomas Lundquist
Quoted 3 lines · Bernhard Fischer
I'm curious why you moved it around? This should not be necessary, just depend on lzma-host for $(image).lzma, like so:
I wasn't sure about that myself but sstrip was done like this, so I moved it.
I have no problems with making a patch that does not move it but why was sstrip done this way?
Quoted 7 lines
the libraries are done from the package directory but they are the same in staging and target (except for stripping) but here we are talking about two sifferent binaries, one compiled for the host and one for the target.
this was at least my guess on the reason behind putting sstrip in in the toolchain part.
We only have to make sure that we don't pickup the wrong objects, that should be all.
Quoted 7 lines
(my sstrip, or rather elfkickers package, which was never included in buildroot was in the package directory but then sstrip showed up in toolchain.)
I've kept building of lzma-host in toolchain since we have to build two different sets.
Yes, that's fine.
Quoted 2 lines
patch attached.
See comment below.
Quoted 41 lines
Thomas.
Quoted 4 lines
+$(EXT2_BASE).lzma: lzma-host $(EXT2_BASE)
(quoted diff) +2
-0+ $(STAGING_DIR)/bin/lzma -vc $(EXT2_BASE) > $(EXT2_BASE).lzma +Quoted 15 lines
Please send an updated patch.
TIA,
BernhardQuoted 11 lines
about initrd kernel patches; I've attached one for 2.6.15.4 but if there are interest I'll maintain patches for newer versions aswell.
I also have patches for lzma compressed kernel but only for i386 (I need it for ARM but have met some challenges.).
Thanks to Ming-Ching Tiew for making the kernel patches.
Thomas.
Index:
target/ext2/ext2root.mk
===================================================================ext2/ext2root.mk +0
-0@@ -66,6 +66,10 @@ EXT2_TARGET := $(EXT2_BASE)endif
ext2/ext2root.mk +4
-0+ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_LZMA)),y) +EXT2_TARGET := $(EXT2_BASE).lzma +endif +$(EXT2_BASE): host-fakeroot makedevs genext2fs
- at find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true; @rm -rf $(TARGET_DIR)/usr/man
ext2/ext2root.mk line 111
Quoted 6 lines
ext2/ext2root.mk +3
-0@@ -102,6 +106,9 @@ $(EXT2_BASE).gz: $(EXT2_BASE) @gzip --best -fv $(EXT2_BASE) +$(EXT2_BASE).lzma: lzma-host $(EXT2_BASE) + @$(STAGING_DIR)/bin/lzma -vc $(EXT2_BASE) > $(EXT2_BASE).lzma +
reminds me that we may want to lzma the other filesystems too, later on.
Quoted 129 lines
ext2/ext2root.mk +0
-0EXT2_COPYTO := $(strip $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_COPYTO))) # " stupid syntax highlighting does not like unmatched quote from above lineIndex:
package/lzma/lzma.mk
===================================================================lzma/lzma.mk +0
-0@@ -6,7 +6,8 @@LZMA_VER:=4.32.0beta3
LZMA_SOURCE:=lzma-$(LZMA_VER).tar.gz
LZMA_SITE:=http://tukaani.org/lzma/lzma/lzma.mk +2
-1-LZMA_DIR:=$(BUILD_DIR)/lzma-$(LZMA_VER) +LZMA_HOST_DIR:=$(TOOL_BUILD_DIR)/lzma-$(LZMA_VER) +LZMA_TARGET_DIR:=$(BUILD_DIR)/lzma-$(LZMA_VER)LZMA_CFLAGS:=$(TARGET_CFLAGS)
ifeq ($(BR2_LARGEFILE),y)
LZMA_CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64lzma/lzma.mk +0
-0@@ -18,13 +19,47 @@$(DL_DIR)/$(LZMA_SOURCE):
$(WGET) -P $(DL_DIR) $(LZMA_SITE)/$(LZMA_SOURCE)-$(LZMA_DIR)/.source: $(DL_DIR)/$(LZMA_SOURCE)
lzma/lzma.mk +40
-5- $(ZCAT) $(DL_DIR)/$(LZMA_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - toolchain/patch-kernel.sh $(LZMA_DIR) package/lzma/ lzma\*.patch - touch $(LZMA_DIR)/.source +###################################################################### +# +# lzma host +# +###################################################################### -$(LZMA_DIR)/.configured: $(LZMA_DIR)/.source - (cd $(LZMA_DIR); rm -f config.cache ;\ +$(LZMA_HOST_DIR)/.source: $(DL_DIR)/$(LZMA_SOURCE) + zcat $(DL_DIR)/$(LZMA_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(LZMA_HOST_DIR) toolchain/lzma/ lzma\*.patch + touch $(LZMA_HOST_DIR)/.source + +$(LZMA_HOST_DIR)/.configured: $(LZMA_HOST_DIR)/.source + (cd $(LZMA_HOST_DIR); rm -f config.cache ;\ + CC="$(HOSTCC)" \ + ./configure \ + --prefix=/ \ + ); + touch $(LZMA_HOST_DIR)/.configured; + +$(LZMA_HOST_DIR)/src/lzma/lzma: $(LZMA_HOST_DIR)/.configured + $(MAKE) -C $(LZMA_HOST_DIR) all + touch -c $@ + +$(STAGING_DIR)/bin/lzma: $(LZMA_HOST_DIR)/src/lzma/lzma + $(MAKE) DESTDIR=$(STAGING_DIR) -C $(LZMA_HOST_DIR) install + +lzma_host: uclibc $(STAGING_DIR)/bin/lzma + +###################################################################### +# +# lzma target +# +###################################################################### + +$(LZMA_TARGET_DIR)/.source: $(DL_DIR)/$(LZMA_SOURCE) + zcat $(DL_DIR)/$(LZMA_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + toolchain/patch-kernel.sh $(LZMA_TARGET_DIR) toolchain/lzma/ lzma\*.patch + touch $(LZMA_TARGET_DIR)/.source + +$(LZMA_TARGET_DIR)/.configured: $(LZMA_TARGET_DIR)/.source + (cd $(LZMA_TARGET_DIR); rm -f config.cache ;\$(TARGET_CONFIGURE_OPTS) \ CFLAGS="$(TARGET_CFLAGS) $(LZMA_CFLAGS)" \ ac_cv_func_malloc_0_nonnull=yes \lzma/lzma.mk +9
-15@@ -33,37 +68,31 @@ --host=$(GNU_TARGET_NAME) \ --build=$(GNU_HOST_NAME) \ --prefix=/usr \ - --exec-prefix=$(STAGING_DIR)/usr/bin \ - --libdir=$(STAGING_DIR)/lib \ - --includedir=$(STAGING_DIR)/include \ + --exec-prefix=$(TARGET_DIR)/usr/bin \ + --libdir=$(TARGET_DIR)/lib \ + --includedir=$(TARGET_DIR)/include \ --disable-debug \ $(DISABLE_NLS) \ $(LZMA_LARGEFILE) \ ); - touch $(LZMA_DIR)/.configured; + touch $(LZMA_TARGET_DIR)/.configured; -$(LZMA_DIR)/src/lzma/lzma: $(LZMA_DIR)/.configured - $(MAKE) -C $(LZMA_DIR) all +$(LZMA_TARGET_DIR)/src/lzma/lzma: $(LZMA_TARGET_DIR)/.configured + $(MAKE) -C $(LZMA_TARGET_DIR) all touch -c $@ -$(STAGING_DIR)/bin/lzma: $(LZMA_DIR)/src/lzma/lzma - -cp -dpf $(LZMA_DIR)/src/lzma/lzma $(STAGING_DIR)/bin/; - touch -c $(STAGING_DIR)/bin/lzma - -$(TARGET_DIR)/bin/lzma: $(STAGING_DIR)/bin/lzma - cp -dpf $(STAGING_DIR)/bin/lzma $(TARGET_DIR)/bin/; +$(TARGET_DIR)/usr/bin/lzma: $(LZMA_TARGET_DIR)/src/lzma/lzma + -cp -dpf $(LZMA_TARGET_DIR)/src/lzma/lzma $(TARGET_DIR)/bin/; -$(STRIP) --strip-unneeded $(TARGET_DIR)/bin/lzma touch -c $(TARGET_DIR)/bin/lzma -#lzma-headers: $(TARGET_DIR)/bin/lzma +lzma_target: uclibc $(TARGET_DIR)/usr/bin/lzma -lzma: uclibc $(TARGET_DIR)/bin/lzma - lzma-source: $(DL_DIR)/$(LZMA_SOURCE)lzma-clean:
lzma/lzma.mk +2
-2- rm -f $(TARGET_DIR)/bin/lzma - -$(MAKE) -C $(LZMA_DIR) clean + rm -f $(TARGET_DIR)/usr/bin/lzma + -$(MAKE) -C $(LZMA_TARGET_DIR) cleanlzma-dirclean:
rm -rf $(LZMA_DIR)lzma/lzma.mk +2
-2@@ -73,9 +102,9 @@ # Toplevel Makefile options # ############################################################# -ifeq ($(strip $(BR2_PACKAGE_LZMA)),y) -TARGETS+=lzma +ifeq ($(strip $(BR2_PACKAGE_LZMA_HOST)),y) +TARGETS+=lzma_hostendif
lzma/lzma.mk line 81
Quoted 3 lines
lzma/lzma.mk +0
-3-#ifeq ($(strip $(BR2_PACKAGE_LZMA_TARGET_HEADERS)),y) -#TARGETS+=lzma-headers -#endif
Should be added as an option rather than removed..
lzma-headers: $(TARGET_DIR)/usr/bin/lzma
-cp -dpf the_lzma.h $(TARGET_DIR)/usr/include/
thanks,
Quoted 35 lines
lzma/lzma.mk +3
-0+ifeq ($(strip $(BR2_PACKAGE_LZMA_TARGET)),y) +TARGETS+=lzma_target +endifIndex: package/lzma/Config.in
===================================================================lzma/Config.in +8
-7@@ -1,14 +1,15 @@ -config BR2_PACKAGE_LZMA - bool "lzma" +config BR2_PACKAGE_LZMA_TARGET + bool "Install lzma for the target system" default n help - Compression utility. + lzma utils on the target http://tukaani.org/lzma/ -config BR2_PACKAGE_LZMA_TARGET_HEADERS - bool "lzma headers in target" +config BR2_PACKAGE_LZMA_HOST + bool "Install lzma for the host/build system" default n - depends on BR2_PACKAGE_LZMA help - Put headers files in the target. + lzma utils + + http://tukaani.org/lzma/_______________________________________________
buildroot mailing list
buildroot at uclibc.org
http://busybox.net/mailman/listinfo/buildroot
Quoted 6 lines · Bernhard Fischer
ext2/ext2root.mk line 111
Quoted 4 lines
+$(EXT2_BASE).lzma: lzma-host $(EXT2_BASE)
ext2/ext2root.mk +2
-0+ @$(STAGING_DIR)/bin/lzma -vc $(EXT2_BASE) > $(EXT2_BASE).lzma +reminds me that we may want to lzma the other filesystems too, later on.
there are patches for lzma compressed squashfs around. I haven't found any for 3.0 tho.
Quoted 9 lines
lzma/lzma.mk line 81
Quoted 5 lines
lzma/lzma.mk +0
-4-#lzma-headers: $(TARGET_DIR)/bin/lzma -#ifeq ($(strip $(BR2_PACKAGE_LZMA_TARGET_HEADERS)),y) -#TARGETS+=lzma-headers -#endifShould be added as an option rather than removed..
lzma-headers: $(TARGET_DIR)/usr/bin/lzma-cp -dpf the_lzma.h $(TARGET_DIR)/usr/include/
as snipped out from the original lzma.mk, it's commented out which is why I removed it.
do you still want it?
Thomas.
Quoted 21 lines · Thomas Lundquist
Quoted 6 lines · Bernhard Fischer
ext2/ext2root.mk line 111
Quoted 4 lines
+$(EXT2_BASE).lzma: lzma-host $(EXT2_BASE)
ext2/ext2root.mk +2
-0+ @$(STAGING_DIR)/bin/lzma -vc $(EXT2_BASE) > $(EXT2_BASE).lzma +reminds me that we may want to lzma the other filesystems too, later on.
there are patches for lzma compressed squashfs around. I haven't found any for 3.0 tho.
Quoted 9 lines
lzma/lzma.mk line 81
Quoted 5 lines
lzma/lzma.mk +0
-4-#lzma-headers: $(TARGET_DIR)/bin/lzma -#ifeq ($(strip $(BR2_PACKAGE_LZMA_TARGET_HEADERS)),y) -#TARGETS+=lzma-headers -#endifShould be added as an option rather than removed..
lzma-headers: $(TARGET_DIR)/usr/bin/lzma-cp -dpf the_lzma.h $(TARGET_DIR)/usr/include/
Quoted 1 line
as snipped out from the original lzma.mk, it's commented out which is
Yes, i left it commented out. I had (and still have) trouble with c++ due to an alleged bug with libtool on my ubuntu devel host. Probably i'll ditch that install and go back to what i usually run as a sensible base to work on.
Quoted 3 lines
why I removed it.
do you still want it?
Yes, i do and will add it too when i have verified and applied your diff. No timeframe on checking it, though.
If you find the time to add the rule for the header(s), then i'll blindly apply your take 3 patch see if i need any additional changes. I don't know if anybody except me does currently use lzma via buildroot on their targets, so i do not feel obligued to be exceptionally stable at that end..
What do you think?
Quoted 5 lines · Bernhard Fischer
Quoted 2 lines
as snipped out from the original lzma.mk, it's commented out which is
Yes, i left it commented out. I had (and still have) trouble with c++ due to an alleged bug with libtool on my ubuntu devel host.
I don't think you're the only one.
BTW; we should have uClibc++ available in buildroot. maybe I'll look at it. (I haven't seen it, maybe I'm just blind?)
Quoted 8 lines
Yes, i do and will add it too when i have verified and applied your diff. No timeframe on checking it, though.
If you find the time to add the rule for the header(s), then i'll blindly apply your take 3 patch see if i need any additional changes. I don't know if anybody except me does currently use lzma via buildroot on their targets, so i do not feel obligued to be exceptionally stable at that end..
I use LZMA on my target (ARM9 but also floppyfw, which is intel and buld using a devkit build by buildroot...), so you're not the only one :=)
BTW, I had lzma in buildroot some time ago but I've been using the SDK directly and not the lzma-utils, which are a derivative. I have to admit I am a bit unsure if lzma-utils is the right thing altho it's more compatible option wise. (which could be fixed by a wrapper script).
but now we use lzma-utils and I am digressing alot.
You can, if you want to, wait with applying the patch and I'll verify it myself (have to admit I havent after moving it from toolchain to package.) and also add the lzma-headers back in.
Thomas.
Quoted 2 lines · Thomas Lundquist
BTW; we should have uClibc++ available in buildroot. maybe I'll look at it. (I haven't seen it, maybe I'm just blind?)
I think that you are right, there is no uClibc++ in buildroot yet. Until now, i hesitated to look at adding it since i do not know how intrusive it is wrt using it for the toolchain..
Quoted 3 lines
You can, if you want to, wait with applying the patch and I'll verify it myself (have to admit I havent after moving it from toolchain to package.) and also add the lzma-headers back in.
That would be great, please do so :)
cheers,
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): [email protected]
Thomas,
Quoted 5 lines · Thomas Lundquist
Quoted 2 lines · Bernhard Fischer
Excellent; looking forward to it
ok, here it is, lzma only and it does produce a rootfs.
I'm sorry, but i now see that i almost forgot to check your patch in. Applied as r16495, thanks!
Quoted 4 lines · Bernhard Fischer
Yes, i left it commented out. I had (and still have) trouble with c++ due to an alleged bug with libtool on my ubuntu devel host. Probably i'll ditch that install and go back to what i usually run as a sensible base to work on.
<rant>
It took me a while to figure out what libtool was for, but one of my coworkers explained that the purpose of the thing is to make sure that shared libraries work as well on Sun and AIX and Hurd and such as they do on Linux.
You'd think that they'd do this by improving library support on other platforms rather than breaking Linux's shared library support (at least if you use libtool) until the other platforms don't look so bad in comparison. But that's not the FSF way. In the land of the blind, the one-eyed must have that eye poked out in the name of fairness and equality.
There is absolutely no reason to use libtool on Linux, and it regularly breaks when you're cross-compiling from Linux to Linux on different processors.
</rant>
Rob
Signature · 1 line
Never bet against the cheap plastic solution.
Quoted 12 lines · Rob Landley
Quoted 4 lines · Bernhard Fischer
Yes, i left it commented out. I had (and still have) trouble with c++ due to an alleged bug with libtool on my ubuntu devel host. Probably i'll ditch that install and go back to what i usually run as a sensible base to work on.
<rant>
It took me a while to figure out what libtool was for, but one of my coworkers explained that the purpose of the thing is to make sure that shared libraries work as well on Sun and AIX and Hurd and such as they do on Linux.
Quoted 8 lines
You'd think that they'd do this by improving library support on other platforms rather than breaking Linux's shared library support (at least if you use libtool) until the other platforms don't look so bad in comparison. But that's not the FSF way. In the land of the blind, the one-eyed must have that eye poked out in the name of fairness and equality.
There is absolutely no reason to use libtool on Linux, and it regularly breaks when you're cross-compiling from Linux to Linux on different processors.
Just to clarify, i'm talking about the gcc internal copy of libtool that seems to misbehave for me. I'm _not_ using libtool to create a library for use in buildroot.
Quoted 2 lines
</rant>