Bug 23112 - sys-fs/avfs-0.9999 (NEW EBUILD)
Bug#: 23112 Product:  Gentoo Linux Version: unspecified Platform: All
OS/Version: Linux Status: RESOLVED Severity: enhancement Priority: P2
Resolution: FIXED Assigned To: kernel@gentoo.org Reported By: j.romildo@gmail.com
Component: Ebuilds
URL: 
Summary: sys-fs/avfs-0.9999 (NEW EBUILD)
Keywords:  EBUILD
Status Whiteboard: 
Opened: 2003-06-19 08:59 0000
Description:   Opened: 2003-06-19 08:59 0000
"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.

------- Comment #1 From Jeremy Naylor 2003-07-23 15:18:27 0000 -------
Created an attachment (id=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.

------- Comment #2 From Jeremy Naylor 2003-07-24 12:40:58 0000 -------
Created an attachment (id=14963) [details]
Updated ebuild, includes a Gentoo-style init script

Touched up the ebuild and set it to install a Gentoo-style init script.

------- Comment #3 From Jeremy Naylor 2003-07-24 12:43:16 0000 -------
Created an attachment (id=14964) [details]
init script, to be placed in the files dir

------- Comment #4 From Jeremy Naylor 2003-09-04 06:14:25 0000 -------
Created an attachment (id=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.

------- Comment #5 From Thomas R. (TRauMa) 2003-09-25 20:30:19 0000 -------
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

------- Comment #6 From Tim Yamin (RETIRED) 2004-02-02 10:23:45 0000 -------
I'll commit this in sometime soon, I just need to check that this works with my
patch for the 2.6 headers.

------- Comment #7 From Thomas R. (TRauMa) 2004-02-03 08:20:45 0000 -------
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.

------- Comment #8 From Tim Yamin (RETIRED) 2004-02-03 08:38:00 0000 -------
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.

------- Comment #9 From Thomas R. (TRauMa) 2004-02-22 20:15:55 0000 -------
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? ^^

------- Comment #10 From Enderson Tadeu S. Maia (RETIRED) 2004-09-03 12:06:16 0000 -------
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"

------- Comment #11 From Tim Yamin (RETIRED) 2004-09-17 14:55:46 0000 -------
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!

------- Comment #12 From Peter Hyman 2005-11-20 05:36:02 0000 -------
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


------- Comment #13 From José Romildo Malaquias 2005-11-20 06:44:41 0000 -------
Reopen for considering the possibility of use avfs with fuse.

------- Comment #14 From Peter Hyman 2005-11-20 08:52:27 0000 -------
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.

------- Comment #15 From Peter Hyman 2005-11-20 11:56:40 0000 -------
Created an attachment (id=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.

------- Comment #16 From Peter Hyman 2005-11-20 11:57:40 0000 -------
Created an attachment (id=73263) [details]
sys-fs/avfs/files/README.avfs-fuse

Important README that explains usage. Place in sys-fs/avfs/files directory for
inclusion.

------- Comment #17 From Peter Hyman 2005-11-20 14:37:48 0000 -------
Created an attachment (id=73272) [details]
sys-fs/avfs/files/README.avfs-fuse

Corrects website URL for avfs and a small grammar error :(

------- Comment #18 From Peter Hyman 2005-11-21 05:24:57 0000 -------
Created an attachment (id=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.

------- Comment #19 From José Romildo Malaquias 2005-11-21 10:20:33 0000 -------
Changing the title this bug as sugested in comment #15.

------- Comment #20 From Peter Hyman 2005-11-28 07:19:56 0000 -------
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!

------- Comment #21 From Peter Hyman 2005-12-02 15:08:19 0000 -------
Created an attachment (id=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.

------- Comment #22 From José Romildo Malaquias 2005-12-03 04:38:08 0000 -------
Just to let you know that it does work form me.

------- Comment #23 From Jakub Moc (RETIRED) 2005-12-12 01:44:32 0000 -------
*** Bug 115274 has been marked as a duplicate of this bug. ***

------- Comment #24 From Peter Hyman 2006-03-02 17:25:38 0000 -------
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?

------- Comment #25 From Peter Hyman 2006-03-02 17:26:37 0000 -------
Created an attachment (id=81164) [details]
avfs-0.9.6_p20060301.ebuild

new ebuild series - date limited.

------- Comment #26 From Stefan Schweizer 2006-03-03 02:26:08 0000 -------
thanks, fixed