summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/cdfs-libre/PKGBUILD40
-rw-r--r--libre/cdfs-libre/cdfs-3.0.patch274
-rw-r--r--libre/cdfs-libre/cdfs-3.2.patch12
-rw-r--r--libre/cdfs-libre/cdfs-3.4.patch12
-rw-r--r--libre/cdfs-libre/cdfs.install14
5 files changed, 352 insertions, 0 deletions
diff --git a/libre/cdfs-libre/PKGBUILD b/libre/cdfs-libre/PKGBUILD
new file mode 100644
index 000000000..77d7f73dc
--- /dev/null
+++ b/libre/cdfs-libre/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id$
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: J. Santiago Hirschfeld <jsantiagoh@yahoo.com.ar>
+# Maintainer (Parabola): André Silva <emulatorman@lavabit.com>
+
+_pkgname=cdfs
+pkgname=cdfs-libre
+pkgver=2.6.27
+pkgrel=27
+pkgdesc="File system module libre that 'exports' all tracks and boot images on a CD as normal files."
+arch=(i686 x86_64)
+url="http://www.elis.UGent.be/~ronsse/cdfs/"
+license=('GPL')
+makedepends=('linux-libre-headers')
+replaces=('cdfs')
+conflicts=('cdfs')
+provides=("cdfs=${pkgver}")
+install=cdfs.install
+source=("http://www.elis.UGent.be/~ronsse/cdfs/download/$pkgname-$pkgver.tar.bz2"
+ "cdfs-3.0.patch"
+ "cdfs-3.2.patch"
+ "cdfs-3.4.patch")
+md5sums=('ac64c014a90e3c488394832ea29605b3'
+ 'aba7da94a9dcbb8a93ea423cb6958fef'
+ 'e934407b3460257a301822ffc4ab3933'
+ '9215e7bdac728bd2f889fb525e543454')
+
+build() {
+ _kernver=`pacman -Q linux-libre | cut -d . -f 2 | cut -f 1 -d -`
+ depends=("linux-libre>=3.${_kernver}" "linux-libre<3.`expr ${_kernver} + 1`")
+ _kernverfull=`cat /usr/lib/modules/extramodules-3.${_kernver}-LIBRE/version`
+
+ cd $srcdir/$pkgname-$pkgver
+ patch -p1 <$srcdir/cdfs-3.0.patch
+ patch -p1 <$srcdir/cdfs-3.2.patch
+ patch -p1 <$srcdir/cdfs-3.4.patch
+ make KDIR=/usr/lib/modules/${_kernverfull}/build
+ install -Dm0644 cdfs.ko $pkgdir/usr/lib/modules/extramodules-3.${_kernver}-LIBRE/cdfs.ko
+ sed -i "s|extramodules-.*-LIBRE|extramodules-3.${_kernver}-LIBRE|" $startdir/cdfs.install
+}
diff --git a/libre/cdfs-libre/cdfs-3.0.patch b/libre/cdfs-libre/cdfs-3.0.patch
new file mode 100644
index 000000000..445a28970
--- /dev/null
+++ b/libre/cdfs-libre/cdfs-3.0.patch
@@ -0,0 +1,274 @@
+diff -wbBur cdfs-2.6.27/cddata.c cdfs-2.6.27.my/cddata.c
+--- cdfs-2.6.27/cddata.c 2009-12-21 17:04:03.000000000 +0300
++++ cdfs-2.6.27.my/cddata.c 2011-07-24 21:18:44.000000000 +0400
+@@ -83,7 +83,7 @@
+ #else
+ .mmap = generic_file_readonly_mmap,
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
+- .sendfile = generic_file_sendfile
++// .sendfile = generic_file_sendfile
+ #else
+ .splice_read = generic_file_splice_read
+ #endif
+diff -wbBur cdfs-2.6.27/root.c cdfs-2.6.27.my/root.c
+--- cdfs-2.6.27/root.c 2009-12-21 16:38:31.000000000 +0300
++++ cdfs-2.6.27.my/root.c 2011-07-25 13:16:59.000000000 +0400
+@@ -32,19 +30,14 @@
+ * Added code to transform /proc/cdfs into a sequential synthetic file. *
+ *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+-
+ #include <linux/seq_file.h>
+-
+-#ifndef OLD_KERNEL
+ #include <linux/statfs.h>
+-#endif
++#include <linux/sched.h>
+
+ extern struct seq_operations cdfs_operations;
+ extern struct _track_info *dummy_track_p;
+
+-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24)
+ struct inode *cdfs_iget(struct super_block *sp, unsigned long ino);
+-#endif
+ /*============================================================================*
+ * cdfs_open() *
+ * Description: *
+@@ -115,15 +108,8 @@
+
+ /********************************************************************/
+
+-#ifdef OLD_KERNEL
+-static struct super_block * cdfs_mount(struct super_block *sb, void *data, int silent){
+- kdev_t dev = sb->s_dev;
+- int i, j, t;
+- struct cdrom_tochdr hdr;
+-#else
+ static int cdfs_fill_super(struct super_block *sb, void *data, int silent){
+ int i, t;
+-#endif
+ struct cdrom_tocentry entry;
+ int no_audio=0, no_data=0;
+ cd * this_cd;
+@@ -131,24 +117,13 @@
+
+ PRINT("cdfs_mount\n");
+
+-#ifdef OLD_KERNEL
+- MOD_INC_USE_COUNT;
+-
+- set_blocksize(dev, CD_FRAMESIZE); // voor bread met ide-cd
+-#else
+ sb_set_blocksize(sb, CD_FRAMESIZE); // voor bread met ide-cd
+-#endif
+
+ sb->s_blocksize = CD_FRAMESIZE;
+ sb->s_blocksize_bits = 11;
+
+ if (!(this_cd = cdfs_info(sb) = kmalloc(sizeof(cd), GFP_KERNEL))){
+-#ifdef OLD_KERNEL
+- MOD_DEC_USE_COUNT;
+- return NULL;
+-#else
+ return -ENOMEM;
+-#endif
+ }
+
+ this_cd->mode = MODE;
+@@ -160,13 +135,8 @@
+
+ // Initialize cache for maximum sector size
+ if (!(this_cd->cache = kmalloc(CD_FRAMESIZE_RAWER*CACHE_SIZE, GFP_KERNEL))) {
+-#ifdef OLD_KERNEL
+- MOD_DEC_USE_COUNT;
+- return NULL;
+-#else
+ kfree(cdfs_info(sb));
+ return -ENOMEM;
+-#endif
+ }
+
+ // Cache is still invalid
+@@ -183,23 +153,13 @@
+ if (this_cd->toc_scsi){
+ if (cdfs_toc_read_full(sb)){
+ printk("TOC read failed\n");
+-#ifdef OLD_KERNEL
+- MOD_DEC_USE_COUNT;
+- return NULL;
+-#else
+ goto invalid;
+-#endif
+ }
+ } else {
+ //if (cdfs_ioctl(sb, CDROMREADTOCHDR, (unsigned long)&hdr)){
+ if (cdfs_toc_read(sb)){
+ printk("cdfs_toc_read failed\n");
+-#ifdef OLD_KERNEL
+- MOD_DEC_USE_COUNT;
+- return NULL;
+-#else
+ goto invalid;
+-#endif
+ }
+ }
+
+@@ -365,11 +325,7 @@
+ sb->s_flags |= MS_RDONLY;
+ sb->s_op = &cdfs_ops;
+ /* always get inode status */
+-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24)
+ retinode=cdfs_iget(sb, 0);
+-#else
+- retinode=iget(sb, 0);
+-#endif
+ if ( IS_ERR(retinode) )
+ return PTR_ERR(retinode);
+
+@@ -379,16 +335,12 @@
+
+ cdfs_proc_cd = this_cd;
+
+-#ifdef OLD_KERNEL
+- return sb;
+-#else
+ return 0;
+
+ invalid:
+ kfree(this_cd->cache);
+ kfree(cdfs_info(sb));
+ return -EINVAL;
+-#endif
+ }
+
+ /************************************************************************/
+@@ -410,27 +362,12 @@
+ // Remove /proc entry
+ cdfs_proc_cd = NULL;
+ kfree(cdfs_info(sb));
+-
+-#ifdef OLD_KERNEL
+- MOD_DEC_USE_COUNT;
+-#endif
+-
+ }
+
+ /************************************************************************/
+
+-#ifdef OLD_KERNEL
+-static int cdfs_statfs(struct super_block *sb, struct statfs *buf) {
+- cd * this_cd = cdfs_info(sb);
+-#else
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
+ static int cdfs_statfs(struct dentry *d, struct kstatfs *buf) {
+ cd * this_cd = cdfs_info(d->d_sb);
+-#else
+-static int cdfs_statfs(struct super_block *sb, struct kstatfs *buf) {
+- cd * this_cd = cdfs_info(sb);
+-#endif
+-#endif
+ PRINT("rmfs_statfs\n");
+
+ buf->f_type = CDFS_MAGIC;
+@@ -460,11 +397,7 @@
+
+ /************************************************************************/
+
+-#ifdef OLD_KERNEL
+-static struct dentry * cdfs_lookup(struct inode *dir, struct dentry *dentry){
+-#else
+ static struct dentry * cdfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd){
+-#endif
+ struct inode * inode;
+ int i;
+ cd * this_cd = cdfs_info(dir->i_sb);
+@@ -480,15 +413,9 @@
+ /* Use goto and read inode with iget()/cdfs_iget() */
+ /* Thanks to David Howells for patch and Master class in his mail */
+ found:
+-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24)
+ inode = cdfs_iget(dir->i_sb, i);
+ if (IS_ERR(inode))
+ return ERR_CAST(inode);
+-#else
+- inode = iget(dir->i_sb, i);
+- if (!inode)
+- return ERR_PTR(-ENOMEM);
+-#endif
+ d_add(dentry, inode);
+ return NULL;
+ }
+@@ -529,12 +456,8 @@
+ i->i_fop = &cdfs_dir_operations;
+ } else { /* file */
+ i->i_size = this_cd->track[i->i_ino].size;
+-#ifdef OLD_KERNEL
+- i->i_mtime = i->i_atime = i->i_ctime = this_cd->track[i->i_ino].time;
+-#else
+ i->i_mtime.tv_sec = i->i_atime.tv_sec = i->i_ctime.tv_sec = this_cd->track[i->i_ino].time;
+ i->i_mtime.tv_nsec = i->i_atime.tv_nsec = i->i_ctime.tv_nsec = 0;
+-#endif
+ i->i_mode = this_cd->mode;
+ if ((this_cd->track[i->i_ino].type==DATA) && this_cd->track[i->i_ino].iso_size) {
+ i->i_fop = &cdfs_cddata_file_operations;
+@@ -587,33 +510,21 @@
+ /******************************************************************/
+
+ static struct super_operations cdfs_ops = {
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
+- .read_inode = cdfs_read_inode,
+-#endif
+ .put_super = cdfs_umount,
+ .statfs = cdfs_statfs
+ };
+
+-#ifdef OLD_KERNEL
+-static DECLARE_FSTYPE_DEV(cdfs_fs_type, FSNAME, cdfs_mount);
+-#else
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
+-static int cdfs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, struct vfsmount *mnt) {
+- return get_sb_bdev(fs_type, flags, dev_name, data, cdfs_fill_super, mnt);
+-#else
+-static struct super_block *cdfs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data) {
+- return get_sb_bdev(fs_type, flags, dev_name, data, cdfs_fill_super);
+-#endif
+-}
++//static int cdfs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, struct vfsmount *mnt) {
++// return get_sb_bdev(fs_type, flags, dev_name, data, cdfs_fill_super, mnt);
++//}
+
+ static struct file_system_type cdfs_fs_type = {
+ .owner = THIS_MODULE,
+ .name = "cdfs",
+- .get_sb = cdfs_get_sb,
++// .get_sb = cdfs_get_sb,
+ .kill_sb = kill_block_super,
+ .fs_flags = FS_REQUIRES_DEV
+ };
+-#endif
+
+ /******************************************************/
+
+@@ -621,10 +532,6 @@
+ MODULE_DESCRIPTION("CDfs: a CD filesystem");
+ MODULE_LICENSE("GPL");
+
+-#ifdef OLD_KERNEL
+-EXPORT_NO_SYMBOLS;
+-#endif
+-
+ /******************************************************************/
+
+ static int __init cdfs_init(void) {
+@@ -676,11 +583,7 @@
+
+ if (!options) return;
+
+-#ifdef OLD_KERNEL
+- for (this_char = strtok(options,","); this_char; this_char = strtok(NULL,",")) {
+-#else
+ while ((this_char = strsep(&options,",")) != NULL) {
+-#endif
+
+ if (!strcmp(this_char,"single"))
+ this_cd->single=TRUE;
diff --git a/libre/cdfs-libre/cdfs-3.2.patch b/libre/cdfs-libre/cdfs-3.2.patch
new file mode 100644
index 000000000..b4ea610b5
--- /dev/null
+++ b/libre/cdfs-libre/cdfs-3.2.patch
@@ -0,0 +1,12 @@
+diff -wbBur cdfs-2.6.27/root.c cdfs-2.6.27.my/root.c
+--- cdfs-2.6.27/root.c 2009-12-21 16:38:31.000000000 +0300
++++ cdfs-2.6.27.my/root.c 2012-01-18 11:23:03.000000000 +0400
+@@ -517,7 +517,7 @@
+
+ i->i_uid = this_cd->uid;
+ i->i_gid = this_cd->gid;
+- i->i_nlink = 1;
++ i->__i_nlink = 1;
+ i->i_op = &cdfs_inode_operations;
+ i->i_fop = NULL;
+ i->i_data.a_ops = NULL;
diff --git a/libre/cdfs-libre/cdfs-3.4.patch b/libre/cdfs-libre/cdfs-3.4.patch
new file mode 100644
index 000000000..8e66bd85c
--- /dev/null
+++ b/libre/cdfs-libre/cdfs-3.4.patch
@@ -0,0 +1,12 @@
+diff -wbBur cdfs-2.6.27/root.c cdfs-2.6.27.my/root.c
+--- cdfs-2.6.27/root.c 2009-12-21 16:38:31.000000000 +0300
++++ cdfs-2.6.27.my/root.c 2012-06-15 17:09:27.000000000 +0400
+@@ -375,7 +375,7 @@
+
+ PRINT("retinode = %ld\n", retinode->i_ino);
+
+- sb->s_root = d_alloc_root(retinode);
++ sb->s_root = d_make_root(retinode);
+
+ cdfs_proc_cd = this_cd;
+ \ No newline at end of file
diff --git a/libre/cdfs-libre/cdfs.install b/libre/cdfs-libre/cdfs.install
new file mode 100644
index 000000000..1c3cb4f8e
--- /dev/null
+++ b/libre/cdfs-libre/cdfs.install
@@ -0,0 +1,14 @@
+post_install() {
+ EXTRAMODULES='extramodules-3.5-LIBRE'
+ depmod $(cat /usr/lib/modules/$EXTRAMODULES/version)
+}
+
+post_upgrade() {
+ EXTRAMODULES='extramodules-3.5-LIBRE'
+ depmod $(cat /usr/lib/modules/$EXTRAMODULES/version)
+}
+
+post_remove() {
+ EXTRAMODULES='extramodules-3.5-LIBRE'
+ depmod $(cat /usr/lib/modules/$EXTRAMODULES/version)
+}