wok-current rev 909
Squashfs: split kernel module and userland tools.
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Jun 15 18:44:02 2008 +0000 (2008-06-15) |
parents | 674428d9fabf |
children | 7f4b6a1eec61 |
files | squashfs-module/receipt squashfs/receipt squashfs/stuff/squashfs-patch-2.6.25 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/squashfs-module/receipt Sun Jun 15 18:44:02 2008 +0000 1.3 @@ -0,0 +1,29 @@ 1.4 +# SliTaz package receipt. 1.5 + 1.6 +PACKAGE="squashfs-module" 1.7 +VERSION="3.3" 1.8 +CATEGORY="base-system" 1.9 +SHORT_DESC="Linux squashfs module." 1.10 +MAINTAINER="pascal.bellard@slitaz.org" 1.11 +WEB_SITE="http://$PACKAGE.sourceforge.net/" 1.12 +WANTED="squashfs" 1.13 + 1.14 +# Rules to gen a SliTaz package suitable for Tazpkg. 1.15 +genpkg_rules() 1.16 +{ 1.17 + kver=$(grep "kernel version" ../linux/linux-*/.config) 1.18 + kver=${kver##* } 1.19 + EXTRAVERSION=_$kver 1.20 + cp -a $src/_pkg/lib $fs 1.21 +} 1.22 + 1.23 +# Post install/remove commands for Tazpkg. 1.24 +post_install() 1.25 +{ 1.26 + depmod -a -b "$1/" 1.27 +} 1.28 + 1.29 +post_remove() 1.30 +{ 1.31 + depmod -a 1.32 +}
2.1 --- a/squashfs/receipt Sun Jun 15 18:08:57 2008 +0200 2.2 +++ b/squashfs/receipt Sun Jun 15 18:44:02 2008 +0000 2.3 @@ -3,12 +3,12 @@ 2.4 PACKAGE="squashfs" 2.5 VERSION="3.3" 2.6 CATEGORY="base-system" 2.7 -SHORT_DESC="Linux squashfs module and userland tools." 2.8 +SHORT_DESC="Linux squashfs userland tools." 2.9 MAINTAINER="pascal.bellard@slitaz.org" 2.10 WEB_SITE="http://$PACKAGE.sourceforge.net/" 2.11 TARBALL="squashfs$VERSION.tgz" 2.12 WGET_URL="$SF_MIRROR/$PACKAGE/$TARBALL" 2.13 -DEPENDS="zlib" 2.14 +DEPENDS="zlib squashfs-module" 2.15 BUILD_DEPENDS="zlib-dev patch" 2.16 2.17 # Rules to configure and make the package. 2.18 @@ -17,6 +17,7 @@ 2.19 local kver 2.20 local patch_dir 2.21 2.22 + ln -s . $src 2.23 # get kernel version 2.24 if [ ! -d ../linux/taz ]; then 2.25 tazwok cook linux 2.26 @@ -26,7 +27,13 @@ 2.27 2.28 # Select patch according to kernel version 2.29 patch_dir=${PACKAGE}${VERSION}/kernel-patches/linux-${kver%.*} 2.30 - if [ -f ${PACKAGE}${VERSION}/kernel-patches/linux-$kver ]; then 2.31 + i=${patch_dir##*.} 2.32 + while [ ! -d ${patch_dir%.*}.$i ]; do 2.33 + [ "$i" = "0" ] && break 2.34 + i=$(($i - 1)) 2.35 + done 2.36 + patch_dir=${patch_dir%.*}.$i 2.37 + if [ -d ${PACKAGE}${VERSION}/kernel-patches/linux-$kver ]; then 2.38 patch_dir=${PACKAGE}${VERSION}/kernel-patches/linux-$kver 2.39 fi 2.40 if [ ! -d $patch_dir ]; then 2.41 @@ -36,7 +43,7 @@ 2.42 [ -d _kernel ] && rm -rf _kernel 2.43 mkdir _kernel 2.44 cd _kernel 2.45 - ln -s ../../linux/linux-$kver* src 2.46 + ln -fs ../../linux/linux-$kver* src 2.47 2.48 # Copy files to be patched in local aera 2.49 # Do not alter kernel sources !! 2.50 @@ -46,7 +53,16 @@ 2.51 done 2.52 2.53 # Apply squashfs patches in local aera 2.54 - patch -p1 < ../$patch_dir/${PACKAGE}${VERSION}-patch 2.55 + #patch -p1 < ../$patch_dir/${PACKAGE}${VERSION}-patch 2.56 + echo "Apply $patch_dir..." 2.57 + awk 'BEGIN { keep=1} /^---/ { keep=(index($0,"/fs/squashfs/") || index($0,"/include/linux/"))} { if (keep) print }' < \ 2.58 + ../$patch_dir/${PACKAGE}${VERSION}-patch | patch -p1 2.59 + 2.60 + extra_patch=stuff/squashfs-patch-${kver%.*} 2.61 + if [ -e ../$extra_patch ]; then 2.62 + echo "Apply $extra_patch..." 2.63 + patch -p1 < ../$extra_patch || return 1 2.64 + fi 2.65 2.66 # Move every files in fs/squashfs directory 2.67 mv include/linux/* fs/squashfs 2.68 @@ -56,6 +72,10 @@ 2.69 sed -e 's/CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE/3/g' > $i < $i.$$ 2.70 done 2.71 2.72 + # Apply lzma patches 2.73 +# echo "Apply stuff/lzma.u.." 2.74 +# patch -p0 < ../stuff/lzma.u 2.75 + 2.76 # Build kernel module 2.77 make -C src/. SUBDIRS=$(pwd)/fs/squashfs/ CONFIG_SQUASHFS=m modules 2.78 cd .. 2.79 @@ -76,13 +96,13 @@ 2.80 # Rules to gen a SliTaz package suitable for Tazpkg. 2.81 genpkg_rules() 2.82 { 2.83 - cp -a _pkg/* $fs 2.84 + cp -a _pkg/usr _pkg/sbin $fs 2.85 } 2.86 2.87 # Post install/remove commands for Tazpkg. 2.88 post_install() 2.89 { 2.90 - depmod -a -b /$1 2.91 + depmod -a -b "$1/" 2.92 } 2.93 2.94 post_remove()
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/squashfs/stuff/squashfs-patch-2.6.25 Sun Jun 15 18:44:02 2008 +0000 3.3 @@ -0,0 +1,161 @@ 3.4 +diff -x .gitignore -Nurp linux-2.6.25-rc7.orig/fs/squashfs/inode.c linux-2.6.25-rc7.new/fs/squashfs/inode.c 3.5 +--- linux-2.6.25-rc7.orig/fs/squashfs/inode.c 2008-04-05 00:19:09.000000000 +0100 3.6 ++++ linux-2.6.25-rc7.new/fs/squashfs/inode.c 2008-04-05 00:22:44.000000000 +0100 3.7 +@@ -1,7 +1,7 @@ 3.8 + /* 3.9 + * Squashfs - a compressed read only filesystem for Linux 3.10 + * 3.11 +- * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007 3.12 ++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 3.13 + * Phillip Lougher <phillip@lougher.demon.co.uk> 3.14 + * 3.15 + * This program is free software; you can redistribute it and/or 3.16 +@@ -37,7 +37,10 @@ 3.17 + 3.18 + int squashfs_cached_blks; 3.19 + 3.20 +-static void vfs_read_inode(struct inode *i); 3.21 ++static struct dentry *squashfs_fh_to_dentry(struct super_block *s, 3.22 ++ struct fid *fid, int fh_len, int fh_type); 3.23 ++static struct dentry *squashfs_fh_to_parent(struct super_block *s, 3.24 ++ struct fid *fid, int fh_len, int fh_type); 3.25 + static struct dentry *squashfs_get_parent(struct dentry *child); 3.26 + static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode); 3.27 + static int squashfs_statfs(struct dentry *, struct kstatfs *); 3.28 +@@ -78,15 +81,9 @@ static struct super_operations squashfs_ 3.29 + .remount_fs = squashfs_remount 3.30 + }; 3.31 + 3.32 +-static struct super_operations squashfs_export_super_ops = { 3.33 +- .alloc_inode = squashfs_alloc_inode, 3.34 +- .destroy_inode = squashfs_destroy_inode, 3.35 +- .statfs = squashfs_statfs, 3.36 +- .put_super = squashfs_put_super, 3.37 +- .read_inode = vfs_read_inode 3.38 +-}; 3.39 +- 3.40 + static struct export_operations squashfs_export_ops = { 3.41 ++ .fh_to_dentry = squashfs_fh_to_dentry, 3.42 ++ .fh_to_parent = squashfs_fh_to_parent, 3.43 + .get_parent = squashfs_get_parent 3.44 + }; 3.45 + 3.46 +@@ -630,42 +627,72 @@ static squashfs_inode_t squashfs_inode_l 3.47 + out: 3.48 + return SQUASHFS_INVALID_BLK; 3.49 + } 3.50 +- 3.51 + 3.52 +-static void vfs_read_inode(struct inode *i) 3.53 ++ 3.54 ++ 3.55 ++static struct dentry *squashfs_export_iget(struct super_block *s, 3.56 ++ unsigned int inode_number) 3.57 + { 3.58 +- struct squashfs_sb_info *msblk = i->i_sb->s_fs_info; 3.59 +- squashfs_inode_t inode = squashfs_inode_lookup(i->i_sb, i->i_ino); 3.60 ++ squashfs_inode_t inode; 3.61 ++ struct inode *i; 3.62 ++ struct dentry *dentry; 3.63 + 3.64 +- TRACE("Entered vfs_read_inode\n"); 3.65 ++ TRACE("Entered squashfs_export_iget\n"); 3.66 + 3.67 +- if(inode != SQUASHFS_INVALID_BLK) 3.68 +- (msblk->read_inode)(i, inode); 3.69 ++ inode = squashfs_inode_lookup(s, inode_number); 3.70 ++ if(inode == SQUASHFS_INVALID_BLK) { 3.71 ++ dentry = ERR_PTR(-ENOENT); 3.72 ++ goto failure; 3.73 ++ } 3.74 ++ 3.75 ++ i = squashfs_iget(s, inode, inode_number); 3.76 ++ if(i == NULL) { 3.77 ++ dentry = ERR_PTR(-EACCES); 3.78 ++ goto failure; 3.79 ++ } 3.80 ++ 3.81 ++ dentry = d_alloc_anon(i); 3.82 ++ if (dentry == NULL) { 3.83 ++ iput(i); 3.84 ++ dentry = ERR_PTR(-ENOMEM); 3.85 ++ } 3.86 ++ 3.87 ++failure: 3.88 ++ return dentry; 3.89 ++} 3.90 ++ 3.91 ++ 3.92 ++static struct dentry *squashfs_fh_to_dentry(struct super_block *s, 3.93 ++ struct fid *fid, int fh_len, int fh_type) 3.94 ++{ 3.95 ++ if((fh_type != FILEID_INO32_GEN && fh_type != FILEID_INO32_GEN_PARENT) || 3.96 ++ fh_len < 2) 3.97 ++ return NULL; 3.98 ++ 3.99 ++ return squashfs_export_iget(s, fid->i32.ino); 3.100 ++} 3.101 ++ 3.102 ++ 3.103 ++static struct dentry *squashfs_fh_to_parent(struct super_block *s, 3.104 ++ struct fid *fid, int fh_len, int fh_type) 3.105 ++{ 3.106 ++ if(fh_type != FILEID_INO32_GEN_PARENT || fh_len < 4) 3.107 ++ return NULL; 3.108 ++ 3.109 ++ return squashfs_export_iget(s, fid->i32.parent_ino); 3.110 + } 3.111 + 3.112 + 3.113 + static struct dentry *squashfs_get_parent(struct dentry *child) 3.114 + { 3.115 + struct inode *i = child->d_inode; 3.116 +- struct inode *parent = iget(i->i_sb, SQUASHFS_I(i)->u.s2.parent_inode); 3.117 +- struct dentry *rv; 3.118 + 3.119 + TRACE("Entered squashfs_get_parent\n"); 3.120 + 3.121 +- if(parent == NULL) { 3.122 +- rv = ERR_PTR(-EACCES); 3.123 +- goto out; 3.124 +- } 3.125 +- 3.126 +- rv = d_alloc_anon(parent); 3.127 +- if(rv == NULL) 3.128 +- rv = ERR_PTR(-ENOMEM); 3.129 +- 3.130 +-out: 3.131 +- return rv; 3.132 ++ return squashfs_export_iget(i->i_sb, SQUASHFS_I(i)->u.s2.parent_inode); 3.133 + } 3.134 + 3.135 +- 3.136 ++ 3.137 + SQSH_EXTERN struct inode *squashfs_iget(struct super_block *s, 3.138 + squashfs_inode_t inode, unsigned int inode_number) 3.139 + { 3.140 +@@ -1257,7 +1284,6 @@ static int squashfs_fill_super(struct su 3.141 + if (read_inode_lookup_table(s) == 0) 3.142 + goto failed_mount; 3.143 + 3.144 +- s->s_op = &squashfs_export_super_ops; 3.145 + s->s_export_op = &squashfs_export_ops; 3.146 + 3.147 + allocate_root: 3.148 +@@ -2124,7 +2150,7 @@ static int __init init_squashfs_fs(void) 3.149 + if (err) 3.150 + goto out; 3.151 + 3.152 +- printk(KERN_INFO "squashfs: version 3.3 (2007/10/31) " 3.153 ++ printk(KERN_INFO "squashfs: version 3.3-CVS (2008/04/04) " 3.154 + "Phillip Lougher\n"); 3.155 + 3.156 + err = register_filesystem(&squashfs_fs_type); 3.157 +@@ -2187,6 +2213,6 @@ static void destroy_inodecache(void) 3.158 + 3.159 + module_init(init_squashfs_fs); 3.160 + module_exit(exit_squashfs_fs); 3.161 +-MODULE_DESCRIPTION("squashfs 3.2-r2-CVS, a compressed read-only filesystem"); 3.162 ++MODULE_DESCRIPTION("squashfs 3.3, a compressed read-only filesystem"); 3.163 + MODULE_AUTHOR("Phillip Lougher <phillip@lougher.demon.co.uk>"); 3.164 + MODULE_LICENSE("GPL");