"AVFS is a system, which enables all programs to look inside archived or compressed files, or access remote files without recompiling the programs or changing the kernel. At the moment it supports floppies, tar and gzip files, zip, bzip2, ar and rar files, ftp sessions, http, webdav, rsh/rcp, ssh/scp." http://www.inf.bme.hu/~mszeredi/avfs/ Avfs is very useful and having it in Gentoo GNU/Linux would be very nice. Please, add it. Reproducible: Always Steps to Reproduce: 1. 2. 3. The latest release (0.9.3) can be downloaded from http://sourceforge.net/projects/avf.
Created attachment 14940 [details] First attempt at an ebuild I hacked together an ebuild for this that seems to work fine for me. It just uses the generic init script, I didn't make a gentoo-specific one.
Created attachment 14963 [details] Updated ebuild, includes a Gentoo-style init script Touched up the ebuild and set it to install a Gentoo-style init script.
Created attachment 14964 [details] init script, to be placed in the files dir
Created attachment 17057 [details] Tarball of ebuild with supporting files Changed init script dependency to net, since avfs needs to be restarted when you restart net. Created a tarball to make things easier.
It is possible to use --enable-libxml instead of --disable-webdav. Ebuild works fine here :-) Perhaps I will find the time to make a /etc/bash-completion.d/avfs -file, so cd /path/archive<TAB> works
I'll commit this in sometime soon, I just need to check that this works with my patch for the 2.6 headers.
Uhm, does this mean there is hope you add some functionality to 2.6.x so this can be used with it? AVFS wont compile with vanilla-2.6.x, so this would be great. Just asking, though; don't want you to waste time on testing this with 2.6.x if you didn't add something special.
Yes. I've already got it compile on 2.4/2.6 // 2.6/2.4 header/kernel variations, I just need to convert the makefiles to kbuild so that it'll compile in the right format for 2.6 and so it's usable.
I thought avfs overrides some system calls inside the kernel, which isn't allowed anymore with 2.6. Don't want to bug you, but is there something already I could have a look at? ^^
I get this error: # ACCEPT_KEYWORDS="~x86" emerge avfs .... .... gcc -I../include -DCODAINCLUDE=\"/usr/src/linux/include/linux/coda.h\" -mcpu=i686 -O2 -pipe -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -c -o dispatch.o dispatch.c In file included from /usr/src/linux/include/linux/coda.h:102, from dispatch.c:27: /usr/include/linux/time.h:9: error: redefinition of `struct timespec' /usr/include/linux/time.h:88: error: redefinition of `struct timeval' /usr/include/linux/time.h:93: error: redefinition of `struct timezone' /usr/include/linux/time.h:119: error: redefinition of `struct itimerspec' /usr/include/linux/time.h:124: error: redefinition of `struct itimerval' dispatch.c:322: error: syntax error before '*' token dispatch.c: In function `look_info': dispatch.c:326: error: `id' undeclared (first use in this function) dispatch.c:326: error: (Each undeclared identifier is reported only once dispatch.c:326: error: for each function it appears in.) dispatch.c: At top level: dispatch.c:348: error: syntax error before '*' token dispatch.c: In function `look_name': dispatch.c:352: error: `id' undeclared (first use in this function) dispatch.c: At top level: dispatch.c:361: error: syntax error before '*' token dispatch.c: In function `ref_fid': dispatch.c:363: error: `fid' undeclared (first use in this function) dispatch.c: At top level: dispatch.c:369: error: syntax error before '*' token dispatch.c: In function `unref_fid': dispatch.c:371: error: `fid' undeclared (first use in this function) dispatch.c: At top level: dispatch.c:401: error: syntax error before "ViceFid" dispatch.c: In function `create_file': dispatch.c:406: error: `parentid' undeclared (first use in this function) dispatch.c:409: error: `filename' undeclared (first use in this function) dispatch.c:411: error: `newid' undeclared (first use in this function) dispatch.c: In function `purge_file': dispatch.c:430: error: structure has no member named `Volume' dispatch.c:431: error: structure has no member named `Vnode' dispatch.c:432: error: structure has no member named `Unique' dispatch.c: In function `zap_file': dispatch.c:449: error: structure has no member named `Volume' dispatch.c:450: error: structure has no member named `Vnode' dispatch.c:451: error: structure has no member named `Unique' dispatch.c: At top level: dispatch.c:585: error: syntax error before "ViceFid" dispatch.c: In function `close_file': dispatch.c:588: error: `of' undeclared (first use in this function) dispatch.c:594: error: `ofp' undeclared (first use in this function) dispatch.c:596: error: `fid' undeclared (first use in this function) dispatch.c: In function `send_to_child': dispatch.c:1061: error: structure has no member named `cred' dispatch.c:1062: error: structure has no member named `cred' dispatch.c: At top level: dispatch.c:1143: error: syntax error before "ViceFid" dispatch.c: In function `send_with_path': dispatch.c:1149: error: `id' undeclared (first use in this function) dispatch.c:1151: error: `req' undeclared (first use in this function) dispatch.c:1157: error: `filename' undeclared (first use in this function) dispatch.c:1159: error: `path2' undeclared (first use in this function) dispatch.c:1165: error: `reqsize' undeclared (first use in this function) dispatch.c: In function `process_kernel_req': dispatch.c:1251: error: structure has no member named `Volume' dispatch.c:1252: error: structure has no member named `Vnode' dispatch.c:1253: error: structure has no member named `Unique' dispatch.c:1315: error: structure has no member named `cred' dispatch.c:1315: error: structure has no member named `cred' dispatch.c:1526: warning: deprecated use of label at end of compound statement make[1]: ** [dispatch.o] Erro 1 make[1]: Leaving directory `/var/tmp/portage/avfs-0.9.3/work/avfs-0.9.3/avfscoda' make: ** [all] Erro 2 !!! ERROR: sys-apps/avfs-0.9.3 failed. !!! Function src_compile, Line 38, Exitcode 2 !!! Make failed ################ # emerge info Portage 2.0.50-r10 (default-x86-2004.0, gcc-3.3.3, glibc-2.3.3.20040420-r1, 2.6.5-mm6) ================================================================= System uname: 2.6.5-mm6 i686 mobile AMD Athlon(tm) XP2400+ Gentoo Base System version 1.4.16 distcc 2.13 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled] Autoconf: sys-devel/autoconf-2.59-r4 Automake: sys-devel/automake-1.8.3 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CFLAGS="-mcpu=i686 -O2 -pipe" CHOST="i686-pc-linux-gnu" COMPILER="" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3/share/config /usr/lib/mozilla/defaults/pref /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-mcpu=i686 -O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs ccache sandbox" GENTOO_MIRRORS="http://gentoo.osuosl.org http://distro.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j3" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="3dnow X aalib acpi acpi4linux alsa amd apache2 apm avi berkdb cdr crypt cups directfb dvd encode esd ethereal faad ffmpeg foomaticdb gd gdbm geoip gif gphoto2 gpm gtk gtk2 imagemagick imlib java jpeg ldap libg++ libwww mad mikmod mmx mozilla moznocompose moznoirc mpeg mpeg4 mysql ncurses net nls odbc oggvorbis opengl openssh oss pam pcmcia pdflib perl png postgres ppds python quicktime radeon readline ruby samba sdl slang spell sse ssl svga tcltk tcpd truetype usb x86 xine xml2 xmms xv xvid zlib"
OK, I'm closing this as WONTFIX for the reason that avfs does not seem to be maintained / developed upon any further upstream (as well as the website listed in the ebuild no longer being functional) and as such I think it would not be beneficial to have this package in Portage - since it does not support 2.6 kernels, for example. If this issue is fixed, then please by all means reopen this bug and I will gladly reconsider adding this to Portage. Thanks!
AVFS is back from the dead and I have been testing it. HOWEVER, it will only work with sys-fs/fuse and fuse compiled into or as a kernel module. This is not bad and greatly simplifies implementation because: 1) PRELOAD won't work with glibc >2.1 2) AVFSCODA requires lots of patches, it requires CODA and all the client and server packages which really complicates things. Some have had success with CODA. I was not able to get it working. 3) Not many programs, if any at all, use the AVFS shared libraries. They work though. In order to get AVFS running, it is necessay to pull the CVS version only. cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/avf login cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/avf co -P avfs Then, DON'T make or configure anything. Change to the fuse directory and type ./compile.sh. Since I am only testing, I did not copy the one file created: avfsd. I ran it in place as user. In order to make this work, the user needs to create a directory ~/.avfs. Then, there is a file in the scripts directory called mountavfs: #!/bin/sh MntDir=${HOME}/.avfs grep -q "avfsd ${MntDir}" /proc/mounts || { echo Mounting AVFS on $MntDir... avfsd $MntDir } Be sure the kernel fuse modules are loaded (modprobe fuse) or compiled into the kernel. If you run this from the fuse directory, ../scripts/mountavfs there will be a new mount point similar to this: avfsd on /home/peter/.avfs type fuse (rw,nosuid,nodev,user=peter) Then, to read any compressed file, simply cat or open $HOME/.avfs/[filename]#. The only difference when using fuse is that the AVFS docs seem to want you to test it with ls /#avfsstat which won't work. Instead use ls $HOME/.avfs/#avfsstat peter@mars ~ $ ls /#avfsstat ls: /#avfsstat: No such file or directory peter@mars ~ $ ls $HOME/.avfs/#avfsstat cache copyright debug http_proxy logfile modules version Obviously, this hack is dependent on a qualified user to correctly set this up. I cannot think of an elegant way for an ebuild to set up a user account. I can only think of having example files and scripts the user can have run in his/her profile on login. Any ebuild attempt on this would have to: 1) pull the AVFS CVS 2) check that fuse is installed (fuse will check for the kernel module) 3) somehow hack the compile.sh so it will use CFLAGS and any user compile settings. 4) copy the one resulting file, avfsd to /usr/sbin 5) have lots of einfo messages telling the user how to add this to his/her login script because the daemon cannot be loaded at boot time (unless you foolishly want to use a root-owned .avfs file). 6) create a sample startup script which adds a test for the ~/.avfs directory. Perhaps adding something like this to the above script: [ ! -d ~/.avfs ] && mkdir ~/.avfs IMHO creating an ebuild out of this would be quirky at best. Hopefully, this roadmap will help interested parties and maybe when AVFS gets more developed an ebuild will be forthcoming. Personally, I hope they are able to get the PRELOAD feature working again since that would be the best solutiuon. Sort of like the way libtrash works -- intercepting file move and delete calls. The bug owner or project maintainer may wish to reopen this bug so that others can continue to comment on it. Unless someone else beats me to it, I will try and construct some sort of ebuild with supporting documentation. HTH
Reopen for considering the possibility of use avfs with fuse.
Let me correct one statement. avfs DOES need to be configured and maked because the fuse compile script will link in the static library which must exist. So, even though it won't be used, the library lib/.libs/libavfs.a must be there. Even though the end result is one file, the entire project must be compiled first. So, after pulling the cvs, do autoheader, autoconf, configure, make. Then cd fuse ./compile.sh (which will leave avfsd in place) then ../scripts/mountavfs which will mount ~/.avfs by default or ignore it if it is already mounted, OR report an error if ~/.avfs does not exist.
Created attachment 73262 [details] sys-fs/avfs/avfs-0.9999.ebuild marked as -* since this code is from CVS. User should place in /usr/local/portage/sys-fs/avfs and adjust package.keywords accordingly. Also download the following file README.avfs-fuse which explains how to use the package. Works for me! Bug reporter or maintainer may wish to change the title of this bug to sys-fs/avfs-0.9999 (NEW EBUILD) to make clear what we are doing here. I moved to sys-fs instead of sys-apps since it is a vfs daemon not an application. I'll leave it to the maintainer for final placement and setting an appropriate keyword.
Created attachment 73263 [details] sys-fs/avfs/files/README.avfs-fuse Important README that explains usage. Place in sys-fs/avfs/files directory for inclusion.
Created attachment 73272 [details] sys-fs/avfs/files/README.avfs-fuse Corrects website URL for avfs and a small grammar error :(
Created attachment 73296 [details] sys-fs/avfs/avfs-0.9999.ebuild Correct compile option (actually, just clarified it since the default was OK) and changed installation of docs since the README file I wrote is now included in the CVS tree. No need for the README-avfs-fuse file anymore. Sorry for all the updates, but I would like everything to be correct. Feedback is appreciated.
Changing the title this bug as sugested in comment #15.
Anyone try this one out yet? I have been using it for a week with no surprises or issues. I have been active with the developers and am hoping they will resurrect their work on avfs to get the PRELOAD features working. It would be nice for users not to have to kludge around with virtual directories. No need for coda since fuse works. I hope the maintainers will consider adding this to portage. It is a very lightweight and universal solution which could apply to all WMs. It's as fast and easy as when using mc. Cheers!
Created attachment 73956 [details] sys-fs/avfs/avfs-0.9999.ebuild Adds additional script from cvs for unloading daemon as well as updated documentation. Any movement on evaluating this for inclusion in the portage tree? Works really well for me.
Just to let you know that it does work form me.
*** Bug 115274 has been marked as a duplicate of this bug. ***
Stefan Schweizer (genstef) had recommended using a date limited method of pulling CVS. This makes sense since it will allow users to revert to an earlier version if there are problems due to new "features." So, a new ebuild series based on avfs-0.9.6 is introduced. It uses the _p suffix to denote patches. Unfortunately, upstream has the same version in production AND in CVS. So, the new ebuild assumes cvs changes are patches. When/if this changes, the _p will become _pre. So for now, the new series will be: avfs-0.9.6_p20060301. This version work fine (for me anyway). Another small change Stefan recommended was making the scripts document subdirectory installed using docinto and dodoc, not insinto/doins which I had done. I am hoping it will be put into the portage tree soon. Feeback?
Created attachment 81164 [details] avfs-0.9.6_p20060301.ebuild new ebuild series - date limited.
thanks, fixed