In the meantime I figured out that the structures that were defined not in main.rkt file but in another one got serialized properly. So I moved all definitions in a separate file, and now it works.
(running from DrRacket) ((2) 5 (((lib "bibdcc/structs.rkt") . deserialize-info:order-v0) ((lib "bibdcc/structs.rkt") . deserialize-info:book-v0) -- Éric On Mar 29, 2011, at 1:21 PM, Matthew Flatt wrote: > Are you starting the program by running "main.rkt" in DrRacket or with > something like > > racket main.rkt [in the "bibdcc" directory] > > ? > > > If so, do you get a different result using > > racket -l bibdcc > > ? > > > > > At Tue, 29 Mar 2011 14:16:33 -0400, Eric Tanter wrote: >> Sorry I still don't get it. >> >> Here's what I've tried: >> - moved my application files to the user collects directory of my system. >> - made the proper dir/subdir structure >> - use only (require myapp/mod1) kind of requires >> >> (It works ok) >> >> Now if I serialize some structures in a file, they still get absolute path >> names. >> Eg.: >> ((2) 5 ((#"/Users/etanter/Library/Racket/5.1/collects/bibdcc/main.rkt" . >> deserialize-info:order-v0) >> >> I must be missing something. Any idea? >> >> Thanks, >> >> -- Éric >> >> >> On Mar 28, 2011, at 10:33 PM, Matthew Flatt wrote: >> >>> At Mon, 28 Mar 2011 18:28:02 -0400, Eric Tanter wrote: >>>> I'm not sure I understand what you mean by "collection-based library". >>>> >>>> The structs are part of an app I'm building from scratch. >>>> For now I have a couple of .rkt files, some of which define the structs in >>>> question, and I import them in the main module with (require "foo.rkt"), >> etc. >>> >>> I mean in a library that you require like >>> >>> (require mystuff/foo) >>> >>> or >>> >>> (require (planet ....)) >>> >>> instead of >>> >>> (require "foo.rkt") >>> >>> >>> Or a relative-path `require' is ok from some other module in the same >>> collection, as long as a collection path is used at some point. >>> >>> >>> >>>> On Mar 28, 2011, at 5:22 PM, Matthew Flatt wrote: >>>> >>>>> At Mon, 28 Mar 2011 17:36:22 -0400, Eric Tanter wrote: >>>>>> I'm playing with serializable structs and noticed that the absolute path >> of >>>>>> the source rkt definition is inserted in the representation (I'm writing >>>>>> structs out to a file). >>>>>> The problem is that if I then move my application to a server for >>>> deployment, >>>>>> all serialized structs cannot be deserialized anymore. If I >>>>>> edit/replace, >>>> it >>>>>> works, but I assume this is not the right way to proceed. >>>>>> >>>>>> What is the best way to obtain "portable" serialized structs? >>>>> >>>>> If the struct is defined in a collection-based library, then the >>>>> serialized form will use the collection path instead of a filesystem >>>>> path. I think that's the only way currently to make the information >>>>> path-independent. >>>>> >>>>> >>>> >>>> >>>> _________________________________________________ >>>> For list-related administrative tasks: >>>> http://lists.racket-lang.org/listinfo/users >>> > _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users

