Hi,

I'm running into weird, intermittent behavior with raco update.  
Occasionally, I will run:

raco pkg update --deps search-auto --update-deps PACKAGE-A

Near the beginning of the log, I see something like this:

The following out-of-date packages are listed as dependencies of PACKAGE-A 
and they will be automatically updated:
   PACKAGE-B
   PACKAGE-C
   PACKAGE-B
   PACKAGE-D
   etc.
   etc.

Note that PACKAGE-B appears twice.  After this, there is a bunch of normal 
raco logging, all of which ends with the following failure:

Uninstalling to prepare re-install of PACKAGE-B
Moving PACKAGE-B to trash: /path/to/trash
Uninstalling to prepare re-install of PACKAGE-B
raco pkg install: package not currently installed
   package: PACKAGE-B
   current scope: user

It fails because it tries to uninstall PACKAGE-B twice in a row.  The next 
time I run raco update everything works fine -- because the first failure 
left the machine in a state where PACKAGE-B is no longer installed.  

Now of course my PACKAGE-A doesn't explicitly list PACKAGE-B twice as a 
dependency.  Yet, somehow, raco does pick it up twice.  I'm trying to 
figure out why this would happen.

Note that this doesn't *usually* happen.  And I have *not* been able to 
reproduce it reliably on a single machine.

Oddly enough, though, it does happen to me relatively frequently because I 
maintaining a few hundred machines with Racket on them.  Lately I've been 
killing the raco update whenever there are duplicates in the list of 
packages; and I've quarantined a few of these machines to try to figure out 
if something is misconfigured about them.  I haven't found anything yet, 
but if someone can suggest something to check, I would be appreciative.

The only clues I do have are:


1) The packages that are listed as duplicates tend to be involved in some 
kind of diamond shape in the larger dependency graph: e.g.


PACKAGE-A depends on LEFT and RIGHT.

And LEFT and RIGHT both depend on PACKAGE-B.


Obviously, that should work.  And it usually does. Still, whenever the 
error does happen, the diamond structure always seems to be there.


2) The error seems to happen on computers where I am switching some package 
in the dependency graph from a catalog installation to a github repo 
installation.  I'm not sure if this could contribute to raco deciding that 
two packages with the same name are actually different and, for some 
reason, trying to update them both.


I was hoping that someone with a deeper understanding of Racket 
dependencies might be able to suggest a theory or some kind of test I can 
run to help build a theory.  Obviously, I am missing something.

Thanks in advance,
Stephen

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to