diff options
Diffstat (limited to 'tools/squashfs')
| -rw-r--r-- | tools/squashfs/Makefile | 8 | ||||
| -rw-r--r-- | tools/squashfs/patches/100-lzma.patch | 4 | ||||
| -rw-r--r-- | tools/squashfs/patches/110-no_nonstatic_inline.patch | 11 | ||||
| -rw-r--r-- | tools/squashfs/patches/120-add-fixed-timestamp-support.patch | 79 | ||||
| -rw-r--r-- | tools/squashfs/patches/130-include_sysmacros.patch | 20 |
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> |
