[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: getting dpkg-shlibdeps to work on the Hurd



On Sat, 18 May 2002, Marcus Brinkmann wrote:

> > 1: dpkg is asked to search for a pattern in it's file database.
> > 2: the pattern is split into a file pattern and dir pattern(split on '/')
> > 3: a file pattern search is done.
> > 4: for all matches from (3), get the realpath(3) of the file.
> > 5: use the dir pattern from (1) to search this new directory list.
>
> This will work very well.  Faster than a realpath() is to do a stat()
> and compare the st_dev and st_inode numbers.  Both together uniquely
> identify a file in the system.  Of course, as with realpath, you can not
> cache the values in the database, but at least it reduces the cost to one
> stat for each file result.  If you look for files like changelog.gz or
> copyright, there will be a lot of files to compare against, but for the vast
> majority of file names the number of results from (3) should be quite small.

Not all filesystems have sane st_dev and st_inode numbers.

> > The one thing I can't decide upon, is when listing the matches, is if the real
> > path of the file should be shown, or the path as stored in the dpkg database.
>
> [snip] interesting talk about which path to output

Interesting food for thought, we shall have to keep this in mind.

> > * Much more complex search algorithm.
>
> It's a bit more complex, but it should refactor nicely (eg, what you need in
> (3) above should be possible to do with the current code, and then the
> filter has to be added on top of it).

So, now  just have to con someone to write the patch. :)

> Ah, this sounds nice, I am looking forward to it.  I have to admit that
> currently I am trained to just use grep on /var/lib/dpkg/info/*.list if
> I need it right quick.

For instance, one could break each path on '/', and then index all the parts
in a hash.  Then, when give a pattern to search on, break it on '/' as well,
and combine the unique search results.

Doing something like this in perl would be simplistic.  C is more complex, of
course.

I may be able to use my debbugs index generators(in perl) for this task.



-- 
To UNSUBSCRIBE, email to debian-dpkg-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: