When you `raco pkg install' a package that is already present as
an auto-installed package, the installation is promoted to
an explicitly installed package.
When you `raco pkg remove --demote' a package, then it is changed
from an explicitly installed package to an auto-installed package.
Combine `--demote' with `--auto' to remove a package only
if there are no dependencies, leaving it auto-installed otherwise.
The defaults (promote in the case of `install', not demote in the case
of `remove') are different because it seems more likely that you
really mean to remove a package when using `pkg remove', while it
seems likely that you just want to start using a package that happened
to be auto-installed already for `pkg install'.
Also, make the package scope inferred for `raco pkg' commands
that take a list of package names, and fix up lock handling and
error reporting.
* The first change is probably due to a difference in my $LANG, so it
might be better to set it to a known value for testing.
* The second change in an explanation about a corner case in the
installer that would be nice to fix, if it's still done in a similar
way.
In particular, using a shut down eventspace actually returns
the exn:fail exception instead of exn:misc, which does not
exist. Example:
#(struct:exn:fail start in timer%: current eventspace is shutdown:
#<eventspace> #<continuation-mark-set>)
Although not documented as such, the implementation used to return
form did not take the special meaning of #f into account. It seems
better to fix `syntax-local-lift-context' to match its documentation.
Use the `pkg-authors' and `pkg-desc' fields from "info.rkt"
when creating a catalog.
Also add an `archive-catalog' makefile target for assembling
archives (binary for native-library package, source others)
and a catalog in "build/archive".
Notably the following are not supported yet:
- `filesystem-change-evt` (likely needs separate base type)
- `port-progress-evt` (separate type, and how do you handle
`port-provides-progress-evts?`?)
- all other events that rely on progress events
Also, the events from racket/port don't work yet due
to a strange bug with bindings that have contracts imported
into TR's base environment
It was previously non-negative real, but the actual
implementation allows negative inputs. In addition, it's
harder to use the function in TR without a more permissive
type for the domain.