On 3/13/07, Jonas Karlsson <[EMAIL PROTECTED]> wrote:
> 2007/3/12, Michael Homer <[EMAIL PROTECTED]>:
> > On 3/9/07, Michael Homer <[EMAIL PROTECTED]> wrote:
> > > On 3/9/07, Jonas Karlsson <[EMAIL PROTECTED]> wrote:
> > > >
> > > > A feature that I think would be nice is to see why an application is
> > > > in the list, i.e. what application that had that dependency.
> > > Good idea. I will add that, possibly for the release after this one
> > > since it may not be simple.
> > >
> > > I'm actually not sure how well the addition of uninstalled
> > > dependencies to the tree is working - it's more of a happy accident of
> > > the sorting algorithm than by design at this point. If you notice any
> > > bugs with it let me know. In particular, I've just realised that I
> > > don't think their own dependencies are included in the calculations.
>
> I haven't found any real bugs in the sorting algorithm, but what I had
> in mind was to get a list of applications that pulled in an
> application in to the list, next to the listed application.
There isn't really room for that, but Freshen -V -i program does give
you that list. The problem with putting it directly into the list,
aside from just a space issue, is that it's expensive to generate -
essentially the only way to do it is to run through the entire dataset
and search.

I will try adding it in the list for N-tagged programs only, at
verbose and above, and see how it comes out.
>
> > Ok. So I've done pretty much all of that, tested it, it all seems to
> > be functioning. If there are no major problems, I'll tag this as 2.1
> > final and get a recipe out as well.
>
> I still get some error when an older version then the available is
> symlinked as current:
>
> Freshen: Attempting to fetch recipe dependencies for Xorg
> GetRecipe: Recipe for Xorg none not found
> Freshen: Attempting to fetch package dependencies for Xorg 7.2-r1
There was a bug in how it compared versions pulled from /F/C/R. It may
have caused this - I don't think it's related to which version is
symlinked current though, since it looked for a valid package version.

Freshen will assume that the newest installed version is symlinked in
at all times, since otherwise it'll try to install it, but that will
cause errors if something depends on that newer version and can't find
it. All the ways around that are a bit of a hack.
>
> And Freshen died with this error:
>
> Freshen: Notice: dependency file for KDE-Libs has incorrect
> capitalisation on NAS
> Freshen: Freshen: Error: undefined method `set?' for nil:NilClass
> [NoMethodError]
>
> When I looked into it I can find no recipe for NAS, so I guess that's
> the problem. However the error message isn't that descriptive. :)
> After I ran 'GetRecipe KDE-Libs' the error got away, so my guess it
> that that dependency listing is in an old version of the recipe, but I
> couldn't find any KDE-Libs recipe or installed package of KDE-Libs
> that listed that dependency, so I don't know where Freshen got that
> from.
>
> I got the same error from another package, GLSavers-NR:
>
> Freshen: Notice: dependency file for GLSavers-NR has incorrect
> capitalisation on Nvidia
> Freshen: Freshen: Error: undefined method `set?' for nil:NilClass
> [NoMethodError]
>
> The strange thing is that I cannot see what application made Freshen
> try to look at this recipe/package. There's no application that has
> GLSavers-NR as dependency afaik. I tried to grep for it, but couldn't
> find anything. Here's where that dependency list thing I suggested
> would come in handy. 'Freshen --info GLSavers-NR' dies with
>
> Freshen: Generating list of installed programs...
> Freshen: Freshen: Error: undefined method `each' for nil:NilClass
> [NoMethodError]
>
> so I can't tell what's wrong.
The "incorrect capitalisation" error isn't always true; it's just a
guess, since that was the most common way it came up (for me). It
emits that, and then searches /Programs and all the recipe directories
for entries with the same name ignoring case, then assumes that's the
correct name and tries again until it runs out of possibilities. If it
doesn't find one at all it dies, since it can't possibly resolve the
tree without complete data.

Try `grep GLSavers-NR /tmp/dependencies-*` and see what you get.
That'll show you if a package dependency file has pulled it in. If
not, it's possible that it's already installed, or at least that
/Programs/GLSavers-NR exists.

Add "--debug" to your parameters, or put "verbosity=debug" into your
config file and it'll generate backtraces. That will help find where
the error is.

I will put a hold on the 2.1 release while I sort these out - thanks
for the testing, it's always difficult to handle the edge cases that
don't come up on my system.

There's also a problem right now in that Mesa and Xorg both depend on
each other, and so it dies on a circular dependency. I'm not sure how
I'll deal with that. For now I have special-cased it to remove Xorg
from Mesa's dependencies.

I have uploaded a new package to
http://gobo.wotfun.com/Freshen--2.0.9991--i686.tar.bz2 - it should go
some way towards resolving those problems, I hope. I think some of
them will still come up, but with backtraces I'll be able to fix them.
> >
> > Package attached. Configuration file change is the addition of the
> > fetchAllPackageLists option.
> >
> > By the way, in creating the package I got a pile of errors in this form:
> > /Programs/Scripts/2.6.3/bin/../Functions/File: line 130:
> > /Programs/Freshen/2.0.999/Resources/FileHash: Permission denied
> > `sudo CreatePackage` did not help. So the package is not signed, so it
> > probably needs a manual SymlinkProgram after installation. It seems
> > from looking in Functions/File that that would mean packages can only
> > be created as root, since $hashfile will never be world-writable. `|
> > $sudo_exec tee -a "$hashfile" > /dev/null`?
>
> What was your permissions? $sudo_exec should be set to "sudo -u #0"
> and should therefore be able to write to that file as long as any user
> has write permissions. But packages without signature is better than
> packages with invalid signatures, as the former will be symlinked at
> install while the latter will have to be manually symlinked.
The full block is:
$sudo_exec ListProgramFiles --files "$file_prefix" | grep -v
"Resources/FileHash" | while read file
do
   $sudo_exec sha1sum "$file" >> "$hashfile"
done
My reading of that is that ListProgramFiles is run sudo and sha1sum is
run sudo, and not the while block - if it were, sudo on sha1sum would
be unnecessary. That means that >> is done as the executing user, not
root, and the executing user may not have write permissions
Running as sudo doesn't do anything to help though, exactly the same
errors occur. /Programs/Freshen/2.0.999/Resources is drwxr-xr-x all
the way up the tree, owned by root.

The package I just uploaded is signed, but I had to chmod a+w
/P/Freshen/2.0.9991/Resources manually to do it, which isn't a problem
in practice, now that I know to do it.
-Michael
_______________________________________________
gobolinux-devel mailing list
gobolinux-devel@lists.gobolinux.org
http://lists.gobolinux.org/mailman/listinfo/gobolinux-devel

Reply via email to