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
|
"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 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.
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.
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 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.
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.
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 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.
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?