[pacman-dev] multiple extraction from package

Xavier shiningxc at gmail.com
Mon Jul 9 15:10:13 EDT 2007


The last commit made me remind of a little issue I wanted to bring a few hours ago,
thanks Dan :)

grep "\.INSTALL" lib/libalpm/*.c
lib/libalpm/add.c:        } else if(strcmp(entryname, ".INSTALL") == 0) {
lib/libalpm/package.c:    } else if(strcmp(entry_name,  ".INSTALL") == 0) {
lib/libalpm/trans.c:    _alpm_unpack(installfn,tmpdir, ".INSTALL");
lib/libalpm/trans.c:    snprintf(scriptfn, PATH_MAX, "%s/.INSTALL", tmpdir);

The archive is read 3 times, in 3 different places.
In particular, the .INSTALL file is checked for existence in package.c , for
knowing the package has a scriptlet.
In trans.c , the .INSTALL file is extracted to /tmp/ for running the
preinstall scriptlet.
And in add.c , the .INSTALL file is extracted to $dbpath/local , which is by
the way causing some issues :
http://www.archlinux.org/pipermail/pacman-dev/2007-July/008693.html

I wonder if it wouldn't be possible to read the archive just in one place,
and extracting files just once.
Or well, I don't know what is the best way, extracting files to /tmp/ and
then moving them around (like for backup files), or extracting them several
times from the archive (like .INSTALL) , or maybe keeping the special dot files
from the archive in memory or something.

Well, it's not that important, but it's related to the issue in the link
above, that I would like to fix, so I just wanted to know if everyone was happy
with the current way pacman reads/extracts files from the archive.




More information about the pacman-dev mailing list