aboutsummaryrefslogtreecommitdiffstats
path: root/tools/squashfs
diff options
context:
space:
mode:
Diffstat (limited to 'tools/squashfs')
-rw-r--r--tools/squashfs/Makefile8
-rw-r--r--tools/squashfs/patches/100-lzma.patch4
-rw-r--r--tools/squashfs/patches/110-no_nonstatic_inline.patch11
-rw-r--r--tools/squashfs/patches/120-add-fixed-timestamp-support.patch79
-rw-r--r--tools/squashfs/patches/130-include_sysmacros.patch20
5 files changed, 118 insertions, 4 deletions
diff --git a/tools/squashfs/Makefile b/tools/squashfs/Makefile
index 473c5265108..385cf69d9d7 100644
--- a/tools/squashfs/Makefile
+++ b/tools/squashfs/Makefile
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2006-2012 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@@ -7,11 +7,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=squashfs
+PKG_CPE_ID:=cpe:/a:phillip_lougher:squashfs
PKG_VERSION:=3.0
PKG_SOURCE:=$(PKG_NAME)$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/squashfs
-PKG_MD5SUM:=9fd05d0bfbb712f5fb95edafea5bc733
+PKG_HASH:=39dbda43cf118536deb746c7730b468702d514a19f4cfab73b710e32908ddf20
PKG_CAT:=zcat
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)$(PKG_VERSION)
@@ -20,6 +21,9 @@ include $(INCLUDE_DIR)/host-build.mk
define Host/Compile
$(MAKE) -C $(HOST_BUILD_DIR)/squashfs-tools \
+ CC="$(HOSTCC)" \
+ CFLAGS="$(HOST_CFLAGS) -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I." \
+ CXX="$(CXX)" \
LZMAPATH=$(STAGING_DIR_HOST)/lib \
mksquashfs-lzma unsquashfs-lzma
endef
diff --git a/tools/squashfs/patches/100-lzma.patch b/tools/squashfs/patches/100-lzma.patch
index e3b2a3a89c1..73f6a4e0552 100644
--- a/tools/squashfs/patches/100-lzma.patch
+++ b/tools/squashfs/patches/100-lzma.patch
@@ -1,6 +1,6 @@
--- a/squashfs-tools/Makefile
+++ b/squashfs-tools/Makefile
-@@ -7,6 +8,9 @@ all: mksquashfs unsquashfs
+@@ -7,6 +7,9 @@ all: mksquashfs unsquashfs
mksquashfs: mksquashfs.o read_fs.o sort.o
$(CC) mksquashfs.o read_fs.o sort.o -lz -o $@
@@ -10,7 +10,7 @@
mksquashfs.o: mksquashfs.c squashfs_fs.h mksquashfs.h global.h sort.h
read_fs.o: read_fs.c squashfs_fs.h read_fs.h global.h
-@@ -16,4 +20,9 @@ sort.o: sort.c squashfs_fs.h global.h so
+@@ -16,4 +19,9 @@ sort.o: sort.c squashfs_fs.h global.h so
unsquashfs: unsquashfs.o
$(CC) unsquashfs.o -lz -o $@
diff --git a/tools/squashfs/patches/110-no_nonstatic_inline.patch b/tools/squashfs/patches/110-no_nonstatic_inline.patch
new file mode 100644
index 00000000000..8e288f336e0
--- /dev/null
+++ b/tools/squashfs/patches/110-no_nonstatic_inline.patch
@@ -0,0 +1,11 @@
+--- a/squashfs-tools/mksquashfs.c
++++ b/squashfs-tools/mksquashfs.c
+@@ -1347,7 +1347,7 @@ struct inode_info *lookup_inode(struct s
+ }
+
+
+-inline void add_dir_entry(char *name, char *pathname, struct dir_info *sub_dir, struct inode_info *inode_info, void *data, struct dir_info *dir)
++static inline void add_dir_entry(char *name, char *pathname, struct dir_info *sub_dir, struct inode_info *inode_info, void *data, struct dir_info *dir)
+ {
+ if((dir->count % DIR_ENTRIES) == 0)
+ if((dir->list = realloc(dir->list, (dir->count + DIR_ENTRIES) * sizeof(struct dir_ent *))) == NULL)
diff --git a/tools/squashfs/patches/120-add-fixed-timestamp-support.patch b/tools/squashfs/patches/120-add-fixed-timestamp-support.patch
new file mode 100644
index 00000000000..e2f4bb2e049
--- /dev/null
+++ b/tools/squashfs/patches/120-add-fixed-timestamp-support.patch
@@ -0,0 +1,79 @@
+--- a/squashfs-tools/mksquashfs.c
++++ b/squashfs-tools/mksquashfs.c
+@@ -117,6 +117,9 @@ unsigned int inode_bytes = 0, inode_size
+ char *data_cache = NULL;
+ unsigned int cache_bytes = 0, cache_size = 0, inode_count = 0;
+
++/* override all timestamps */
++time_t fixed_time = -1;
++
+ /* in memory directory data */
+ #define I_COUNT_SIZE 128
+ #define DIR_ENTRIES 32
+@@ -1554,6 +1557,11 @@ void dir_scan(squashfs_inode *inode, cha
+ perror(buffer);
+ return;
+ }
++
++ /* override timestamp of lstat if fixed_time is given */
++ if(fixed_time != -1)
++ inode_info->buf.st_mtime = fixed_time;
++
+ if(sorted)
+ sort_files_and_write(dir_info);
+ dir_scan2(inode, dir_info);
+@@ -1582,6 +1590,10 @@ struct dir_info *dir_scan1(char *pathnam
+ perror(buffer);
+ continue;
+ }
++
++ if(fixed_time != -1)
++ buf.st_mtime = fixed_time;
++
+ if(excluded(filename, &buf))
+ continue;
+
+@@ -1621,6 +1633,9 @@ int dir_scan2(squashfs_inode *inode, str
+ char *dir_name = dir_ent->name;
+ unsigned int inode_number = ((buf->st_mode & S_IFMT) == S_IFDIR) ? dir_ent->inode->inode_number : dir_ent->inode->inode_number + dir_inode_no;
+
++ if(fixed_time != -1)
++ buf->st_mtime = fixed_time;
++
+ if(dir_ent->inode->inode == SQUASHFS_INVALID_BLK) {
+ switch(buf->st_mode & S_IFMT) {
+ case S_IFREG:
+@@ -1898,6 +1913,16 @@ int main(int argc, char *argv[])
+ exit(1);
+ }
+ }
++ } else if(strcmp(argv[i], "-fixed-time") == 0) {
++ if(++i == argc) {
++ ERROR("%s: -fixed-time missing a timestamp\n", argv[0]);
++ exit(1);
++ }
++ fixed_time = strtoll(argv[i], &b, 10);
++ if(*b != '\0') {
++ ERROR("%s: -fixed-time has an invalid number\n", argv[0]);
++ exit(1);
++ }
+ } else if(strcmp(argv[i], "-noI") == 0 ||
+ strcmp(argv[i], "-noInodeCompression") == 0)
+ noI = TRUE;
+@@ -1967,6 +1992,7 @@ printOptions:
+ ERROR("-all-root\t\tmake all files owned by root\n");
+ ERROR("-force-uid uid\t\tset all file uids to uid\n");
+ ERROR("-force-gid gid\t\tset all file gids to gid\n");
++ ERROR("-fixed-time timestamp\tset all timestamps to timestamp\n");
+ ERROR("-le\t\t\tcreate a little endian filesystem\n");
+ ERROR("-be\t\t\tcreate a big endian filesystem\n");
+ ERROR("-nopad\t\t\tdo not pad filesystem to a multiple of 4K\n");
+@@ -2190,7 +2216,7 @@ printOptions:
+ sBlk.block_size = block_size;
+ sBlk.block_log = block_log;
+ sBlk.flags = SQUASHFS_MKFLAGS(noI, noD, check_data, noF, no_fragments, always_use_fragments, duplicate_checking);
+- sBlk.mkfs_time = time(NULL);
++ sBlk.mkfs_time = fixed_time != -1 ? fixed_time : time(NULL);
+
+ restore_filesystem:
+ write_fragment();
diff --git a/tools/squashfs/patches/130-include_sysmacros.patch b/tools/squashfs/patches/130-include_sysmacros.patch
new file mode 100644
index 00000000000..f0149d6f65f
--- /dev/null
+++ b/tools/squashfs/patches/130-include_sysmacros.patch
@@ -0,0 +1,20 @@
+--- a/squashfs-tools/mksquashfs.c
++++ b/squashfs-tools/mksquashfs.c
+@@ -30,6 +30,7 @@
+ #include <unistd.h>
+ #include <stdio.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
+--- a/squashfs-tools/unsquashfs.c
++++ b/squashfs-tools/unsquashfs.c
+@@ -25,6 +25,7 @@
+ #define FALSE 0
+ #include <stdio.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>