[racket] serializable structs and portability

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Tue Mar 29 13:21:35 EDT 2011

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
> > 



Posted on the users mailing list.