[racket] how to declare dependency on Racket 6.0?

From: Matthew Butterick (mb at mbtype.com)
Date: Sat Jul 5 13:47:46 EDT 2014

I'm starting to think you have some talent for this computer stuff.



On Jul 5, 2014, at 1:41 AM, Matthew Flatt <mflatt at cs.utah.edu> wrote:

> I made that repair in response to your report, but since I wasn't able
> to provoke the error, I thought I was probably on the wrong track.
> 
> At Fri, 4 Jul 2014 12:19:57 -0700, Matthew Butterick wrote:
>> 1) I've changed my dependency to 'base'. (I don't need a nice error, I just 
>> need to block v5 users from installing the package.)
>> 
>> 
>> 2) As for the earlier problem, I'm pretty sure it had to do with the "racket" 
>> mapping being null:
>> 
>> https://github.com/plt/racket/commit/50715f7bda4bf9b745a47c4b3853ee48cc247198
>> 
>> Because the installer was throwing an error about getting a null argument when 
>> it expected a list, like this:
>> 
>>> raco setup: --- checking package dependencies ---
>>> car: contract violation
>>> expected: pair?
>>> given: '()
>>> context...:
>>>  /Users/MB/git/racket/racket/collects/setup/private/pkg-deps.rkt:283:2: 
>> check-mod!
>>> ...
>> 
>> 
>> And the error was coming from the same file, pkg-deps.rkt.
>> 
>> 
>> I just rebuilt from git, and reinstalled my updated package, and things seem 
>> back to normal.
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> On Jul 3, 2014, at 9:15 PM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
>> 
>>> That should work, although it's better to declare a dependency on
>>> "base" instead of "racket":
>>> 
>>> (define deps '(("base" #:version "6.0") ... )
>>> 
>>> You should generally declare a dependency on "base", anyway.
>>> 
>>> 
>>> At least, that's the right way for v6.0 and later. If the goal is to
>>> get a nice error message from v5.3.x, then you have to
>>> 
>>> * use the old format without `#:version`:
>>> 
>>>      (define deps '(("base" "6.0") ... )
>>> 
>>> * use `#lang setup/infotab` instead of `#lang info`
>>>  for the "info.rkt" file, and
>>> 
>>> * declare the dependency on "racket", after all, since "base" didn't
>>>   exist as a package in v5.3.x:
>>> 
>>>      (define deps '(("racket" "6.0") ... )
>>> 
>>> 
>>> For a while in v6.0.x, there were some problems with dependency
>>> checking in `raco setup` when a package declares a dependency on
>>> "racket". Otherwise, even though declaring a versioned dependency on
>>> "base" is better, declaring a dependency on "racket" should work. Can
>>> you say more about how it went wrong?
>>> 
>>> 
>>> At Thu, 3 Jul 2014 16:22:56 -0700, Matthew Butterick wrote:
>>>> On closer inspection, it seems possible that my recent install problems were 
>> a 
>>>> side effect of Racket being installed as a package dependency by my Pollen 
>>>> package, where the info.rkt contains this line: 
>>>> 
>>>> (define deps '(("racket" #:version "6.0") ... )
>>>> 
>>>> Is this the wrong way to declare this kind of dependency? Basically I just 
>> want 
>>>> to signal that the package will not work with Racket 5.x.x.
>>>> ____________________
>>>> Racket Users list:
>>>> http://lists.racket-lang.org/users
>> 
>> ____________________
>>  Racket Users list:
>>  http://lists.racket-lang.org/users



Posted on the users mailing list.