From: <abe...@us...> - 2016-07-31 19:26:27
|
Revision: 7780 http://sourceforge.net/p/astlinux/code/7780 Author: abelbeck Date: 2016-07-31 19:26:25 +0000 (Sun, 31 Jul 2016) Log Message: ----------- host-squashfs, version bump to 4.3, only build what we need (gzip) Modified Paths: -------------- branches/1.0/package/squashfs/Config.in branches/1.0/package/squashfs/squashfs.mk Removed Paths: ------------- branches/1.0/package/squashfs/squashfs-4.2-no-gzip-fix.patch Modified: branches/1.0/package/squashfs/Config.in =================================================================== --- branches/1.0/package/squashfs/Config.in 2016-07-31 13:21:32 UTC (rev 7779) +++ branches/1.0/package/squashfs/Config.in 2016-07-31 19:26:25 UTC (rev 7780) @@ -10,29 +10,29 @@ if BR2_PACKAGE_SQUASHFS config BR2_PACKAGE_SQUASHFS_GZIP - bool "gzip support" - default y - select BR2_PACKAGE_ZLIB - help - Support GZIP compression algorithm + bool "gzip support" + default y + select BR2_PACKAGE_ZLIB + help + Support GZIP compression algorithm config BR2_PACKAGE_SQUASHFS_LZMA - bool "lzma support" - select BR2_PACKAGE_XZ - help - Support LZMA compression algorithm + bool "lzma support" + select BR2_PACKAGE_XZ + help + Support LZMA compression algorithm config BR2_PACKAGE_SQUASHFS_LZO - bool "lzo support" - select BR2_PACKAGE_LZO - help - Support LZO compression algorithm + bool "lzo support" + select BR2_PACKAGE_LZO + help + Support LZO compression algorithm config BR2_PACKAGE_SQUASHFS_XZ - bool "xz support" - select BR2_PACKAGE_XZ - help - Support XZ compression algorithm + bool "xz support" + select BR2_PACKAGE_XZ + help + Support XZ compression algorithm endif Deleted: branches/1.0/package/squashfs/squashfs-4.2-no-gzip-fix.patch =================================================================== --- branches/1.0/package/squashfs/squashfs-4.2-no-gzip-fix.patch 2016-07-31 13:21:32 UTC (rev 7779) +++ branches/1.0/package/squashfs/squashfs-4.2-no-gzip-fix.patch 2016-07-31 19:26:25 UTC (rev 7780) @@ -1,26 +0,0 @@ -[PATCH] squashfs-tools: unbreak builds without gzip support - -The initialization of gzip_comp_ops if gzip support is disabled is -missing 2 null pointers, causing the id element to be initialized to 0 -rather than ZLIB_COMPRESSION, which breaks all the compressor functions -as they loop until finding the correct element or id = 0. - -Signed-off-by: Peter Korsgaard <ja...@su...> ---- - squashfs-tools/compressor.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -Index: squashfs4.2/squashfs-tools/compressor.c -=================================================================== ---- squashfs4.2.orig/squashfs-tools/compressor.c -+++ squashfs4.2/squashfs-tools/compressor.c -@@ -27,7 +27,8 @@ - - #ifndef GZIP_SUPPORT - static struct compressor gzip_comp_ops = { -- NULL, NULL, NULL, NULL, NULL, NULL, ZLIB_COMPRESSION, "gzip", 0 -+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ZLIB_COMPRESSION, -+ "gzip", 0 - }; - #else - extern struct compressor gzip_comp_ops; Modified: branches/1.0/package/squashfs/squashfs.mk =================================================================== --- branches/1.0/package/squashfs/squashfs.mk 2016-07-31 13:21:32 UTC (rev 7779) +++ branches/1.0/package/squashfs/squashfs.mk 2016-07-31 19:26:25 UTC (rev 7780) @@ -1,10 +1,17 @@ -SQUASHFS_VERSION=4.2 -SQUASHFS_SOURCE=squashfs$(SQUASHFS_VERSION).tar.gz -SQUASHFS_SITE=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/squashfs +################################################################################ +# +# squashfs +# +################################################################################ -# no libattr in BR +SQUASHFS_VERSION = 4.3 +SQUASHFS_SOURCE = squashfs$(SQUASHFS_VERSION).tar.gz +SQUASHFS_SITE = http://downloads.sourceforge.net/project/squashfs/squashfs/squashfs$(SQUASHFS_VERSION) + SQUASHFS_MAKE_ARGS = XATTR_SUPPORT=0 +SQUASHFS_MAKE_ARGS += LZ4_SUPPORT=0 + ifeq ($(BR2_PACKAGE_SQUASHFS_LZMA),y) SQUASHFS_DEPENDENCIES += xz SQUASHFS_MAKE_ARGS += LZMA_XZ_SUPPORT=1 COMP_DEFAULT=lzma @@ -33,43 +40,43 @@ SQUASHFS_MAKE_ARGS += GZIP_SUPPORT=0 endif +# AstLinux only uses BR2_TARGET_ROOTFS_SQUASHFS4_GZIP=y +HOST_SQUASHFS_DEPENDENCIES = host-zlib -HOST_SQUASHFS_DEPENDENCIES = host-zlib host-lzo host-xz - -# no libattr/xz in BR HOST_SQUASHFS_MAKE_ARGS = \ XATTR_SUPPORT=0 \ - XZ_SUPPORT=1 \ - GZIP_SUPPORT=1 \ - LZO_SUPPORT=1 \ - LZMA_XZ_SUPPORT=1 + XZ_SUPPORT=0 \ + GZIP_SUPPORT=1 COMP_DEFAULT=gzip \ + LZ4_SUPPORT=0 \ + LZO_SUPPORT=0 \ + LZMA_XZ_SUPPORT=0 define SQUASHFS_BUILD_CMDS - $(TARGET_MAKE_ENV) $(MAKE) \ - CC="$(TARGET_CC)" \ - EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ - EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \ - $(SQUASHFS_MAKE_ARGS) \ - -C $(@D)/squashfs-tools/ + $(TARGET_MAKE_ENV) $(MAKE) \ + CC="$(TARGET_CC)" \ + EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ + EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \ + $(SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ endef define SQUASHFS_INSTALL_TARGET_CMDS - $(TARGET_MAKE_ENV) $(MAKE) $(SQUASHFS_MAKE_ARGS) \ - -C $(@D)/squashfs-tools/ INSTALL_DIR=$(TARGET_DIR)/usr/bin install + $(TARGET_MAKE_ENV) $(MAKE) $(SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ INSTALL_DIR=$(TARGET_DIR)/usr/bin install endef define HOST_SQUASHFS_BUILD_CMDS - $(HOST_MAKE_ENV) $(MAKE) \ - CC="$(HOSTCC)" \ - EXTRA_CFLAGS="$(HOST_CFLAGS)" \ - EXTRA_LDFLAGS="$(HOST_LDFLAGS)" \ - $(HOST_SQUASHFS_MAKE_ARGS) \ - -C $(@D)/squashfs-tools/ + $(HOST_MAKE_ENV) $(MAKE) \ + CC="$(HOSTCC)" \ + EXTRA_CFLAGS="$(HOST_CFLAGS)" \ + EXTRA_LDFLAGS="$(HOST_LDFLAGS)" \ + $(HOST_SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ endef define HOST_SQUASHFS_INSTALL_CMDS - $(HOST_MAKE_ENV) $(MAKE) $(HOST_SQUASHFS_MAKE_ARGS) \ - -C $(@D)/squashfs-tools/ INSTALL_DIR=$(HOST_DIR)/usr/bin install + $(HOST_MAKE_ENV) $(MAKE) $(HOST_SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ INSTALL_DIR=$(HOST_DIR)/usr/bin install endef $(eval $(call GENTARGETS,package,squashfs)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2016-10-01 19:54:13
|
Revision: 7872 http://sourceforge.net/p/astlinux/code/7872 Author: abelbeck Date: 2016-10-01 19:54:10 +0000 (Sat, 01 Oct 2016) Log Message: ----------- squashfs, host mksquashfs 4.3, cherry-pick two upstream fixes that has caused a failed build Ref: https://git.kernel.org/cgit/fs/squashfs/squashfs-tools.git/ Added Paths: ----------- branches/1.0/package/squashfs/squashfs-fix-2GB-limit-is_fragment.patch branches/1.0/package/squashfs/squashfs-mksquashfs-fix-race-condition.patch Added: branches/1.0/package/squashfs/squashfs-fix-2GB-limit-is_fragment.patch =================================================================== --- branches/1.0/package/squashfs/squashfs-fix-2GB-limit-is_fragment.patch (rev 0) +++ branches/1.0/package/squashfs/squashfs-fix-2GB-limit-is_fragment.patch 2016-10-01 19:54:10 UTC (rev 7872) @@ -0,0 +1,29 @@ +From 9c1db6d13a51a2e009f0027ef336ce03624eac0d Mon Sep 17 00:00:00 2001 +From: "Guan, Xin" <gua...@gm...> +Date: Sat, 13 Sep 2014 13:15:26 +0200 +Subject: Fix 2GB-limit of the is_fragment(...) function. + +Applies to squashfs-tools 4.3. + +Reported-by: Bruno Wolff III <br...@wo...> +Signed-off-by: Guan, Xin <gua...@gm...> +Signed-off-by: Phillip Lougher <ph...@sq...> +--- + squashfs-tools/mksquashfs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c +index f1fcff1..d221c35 100644 +--- a/squashfs-tools/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -2055,7 +2055,7 @@ struct file_info *duplicate(long long file_size, long long bytes, + + inline int is_fragment(struct inode_info *inode) + { +- int file_size = inode->buf.st_size; ++ off_t file_size = inode->buf.st_size; + + /* + * If this block is to be compressed differently to the +-- +cgit v0.12 Added: branches/1.0/package/squashfs/squashfs-mksquashfs-fix-race-condition.patch =================================================================== --- branches/1.0/package/squashfs/squashfs-mksquashfs-fix-race-condition.patch (rev 0) +++ branches/1.0/package/squashfs/squashfs-mksquashfs-fix-race-condition.patch 2016-10-01 19:54:10 UTC (rev 7872) @@ -0,0 +1,59 @@ +From de03266983ceb62e5365aac84fcd3b2fd4d16e6f Mon Sep 17 00:00:00 2001 +From: Phillip Lougher <ph...@sq...> +Date: Thu, 18 Sep 2014 01:28:11 +0100 +Subject: mksquashfs: fix rare race in fragment waiting in filesystem + finalisation + +Fix a rare race condition in fragment waiting when finalising the +filesystem. This is a race condition that was initially fixed in 2009, +but inadvertantly re-introduced in the latest release when the code +was rewritten. + +Background: + +When finalising the filesystem, the main control thread needs to ensure +all the in-flight fragments have been queued to the writer thread before +asking the writer thread to finish, and then writing the metadata. + +It does this by waiting on the fragments_outstanding counter. Once this +counter reaches 0, it synchronises with the writer thread, waiting until +the writer thread reports no outstanding data to be written. + +However, the main thread can race with the fragment deflator thread(s) +because the fragment deflator thread(s) decrement the fragments_outstanding +counter and release the mutex before queueing the compressed fragment +to the writer thread, i.e. the offending code is: + + fragments_outstanding --; + pthread_mutex_unlock(&fragment_mutex); + queue_put(to_writer, write_buffer); + +In extremely rare circumstances, the main thread may see the +fragments_outstanding counter is zero before the fragment +deflator sends the fragment buffer to the writer thread, and synchronise +with the writer thread, and finalise before the fragment has been written. + +The fix is to ensure the fragment is queued to the writer thread +before releasing the mutex. + +Signed-off-by: Phillip Lougher <ph...@sq...> +--- + squashfs-tools/mksquashfs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c +index 87b7d86..f1fcff1 100644 +--- a/squashfs-tools/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -2445,8 +2445,8 @@ void *frag_deflator(void *arg) + write_buffer->block = bytes; + bytes += compressed_size; + fragments_outstanding --; +- pthread_mutex_unlock(&fragment_mutex); + queue_put(to_writer, write_buffer); ++ pthread_mutex_unlock(&fragment_mutex); + TRACE("Writing fragment %lld, uncompressed size %d, " + "compressed size %d\n", file_buffer->block, + file_buffer->size, compressed_size); +-- +cgit v0.12 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |