[cl-pdf-devel] compile and load-time dependency on *cl-pdf-base-directory* considered harmful (was: Re: cl-pdf is moving to github)

Marc Battyani marc.battyani at fractalconcept.com
Sat Mar 30 04:39:31 UTC 2013


Hi Dave,

I committed this to the github cl-pdf repos. Thanks!

Marc

On 28/3/13 15:15 , Dave Cooper wrote:
>
>
> To follow up, here is a subsequent patch for cl-pdf which smooths
> things out a bit more (I'm attaching both the 0001 patch and the 0002
> patch).
>
> Soon I will send a patch to the cl-typesetting list also, which
> implements a similar fix for cl-typesetting. 
>
>
>
> On Wed, Mar 27, 2013 at 12:45 AM, Dave Cooper
> <david.cooper at genworks.com <mailto:david.cooper at genworks.com>> wrote:
>
>
>     Hi Marc,
>
>     Thank you for the feedback. 
>
>     Ok, here is my proposed patch for this issue. It defers the
>     loading of fonts in chart.lisp until runtime, and adds a file
>     zzinit.lisp which contains an initialize! function as well as a
>     confirmation (with warning) if any of the *afm-files-directories*
>     do not exist. This confirmation is invoked at the toplevel so you
>     will see a warning during compile and/or load if the afm
>     directories are not existing, with suggestion to run the
>     initialize! function at runtime before trying to use cl-pdf
>     functions. 
>
>     This patch was made with 
>
>      git format-patch
>
>     so you should be able to apply it to a local clone of the master
>     branch with 
>
>      git apply
>     0001-Make-it-so-cl-pdf-can-load-without-afm-directory-the.patch
>
>
>
>
>     On Tue, Mar 26, 2013 at 11:04 PM, Marc Battyani
>     <marc.battyani at fractalconcept.com
>     <mailto:marc.battyani at fractalconcept.com>> wrote:
>
>         Hi Dave,
>
>
>         On 26/3/13 21:49 , Dave Cooper wrote:
>>         Hi All,
>>
>>          I'm not sure if I should put this on this mailing list or as
>>         an Issue on the new Github site (where I could claim "First!" : )
>         Well I have no idea either and I have to look at how this
>         works on github. Anyway this mailing list on common-lisp.net
>         <http://common-lisp.net> works well and is really low volume
>         so probably it's not useful to change for now. That said I
>         would be interested to here if people have more informed
>         opinions on that.
>
>>         How many of you have seen this error at some point during
>>         your time using cl-pdf:
>>
>>          "Error: Font Helvetica not Found" 
>>
>>         As you probably know, one of the things which can cause this
>>         is when cl-pdf is being loaded from a compiled fasl which is
>>         not in the location of the source codebase, and the source
>>         codebase is no longer available at the location where it was
>>         during compiling.
>>
>>         So my basic question is: does anyone have suggestions what to
>>         do about *cl-pdf-base-directory* and
>>         *cl-typesetting-base-directory* so that a fasl or built
>>         runtime can be used without the depending on the original
>>         absolute pathname to afm/ directory, etc. still existing as
>>         they were during compilation? As it is currently, the full
>>         hardcoded pathname of the *cl-pdf-base-directory* and
>>         *cl-typesetting-base-directory* are baked into a compiled
>>         fasl. I understand this used to work from *load-truename*
>>         instead of *compile-file-truename*, and the hardcoding of
>>         compile-time source location was introduced as a "fix" for
>>         the fact that ASDF started using output-translations which
>>         resulted in the fasl being loaded not being in the source
>>         location. But this "fix" still assumes that the sources are
>>         always going to be available in their original location every
>>         time a fasl is loaded, which I consider to be a fragile
>>         assumption. 
>>
>>         For me, the ideal solution would be: 
>>
>>          1. First of all, don't have any compile-time or load-time
>>         dependencies on these variables at all. As it is now, only
>>         chart.lisp in cl-pdf appears to depend on
>>         *afm-files-directories* -- couldn't this stuff be deferred to
>>         runtime? For cl-typesetting I'm not sure what are the
>>         dependencies at compile and load time, but I speculate that
>>         they are few. 
>>
>>          2. Provide an "initialize!" function for use at runtime
>>         startup, which is supposed to establish base directory
>>         locations for afm/ directory etc.
>>         Then it would be (as it rightfully should be) the
>>         responsibility of any runtime application which is using
>>         cl-pdf to set the *-base-directory* variables and call the
>>         initialize! function as part of its "restart" function, much
>>         the same way as many applications normally have to initialize
>>         themselves at startup to find the location of outside
>>         resources (e.g. webserver applications have to be set with
>>         the location of static files for publishing, etc). 
>>
>>         Before I go any deeper into this direction I just wanted to
>>         get any feedback that current users have about this issue.
>>         And let me know if it should be opened as an Issue on the
>>         github project or stay on this mailing list.
>         Seems good for me. Anyway as you mentioned, probably everybody
>         had to integrate that into some initialization function.
>
>>         Best Regards
>>
>>          Dave
>>
>>         P.S. Are there plans to bring cl-typesetting to github as
>>         well, side-by-side with cl-pdf?
>         Sure! I wanted to clean them up somewhat like I have done with
>         cl-pdf but maybe I should move all this to github and clean it
>         later.
>         I'm also planning to modernize my web framework and put it on
>         github too but this will take some time.
>
>         Cheers,
>
>         Marc
>
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cl-pdf-devel/attachments/20130330/ff8900ba/attachment.html>


More information about the cl-pdf-devel mailing list