otherjoel/try-pollen

Error compiling feed.xml.pp after a Pollen/Racket upgrade

rwmpelstilzchen opened this issue · 5 comments

Hi,

I updated my system (Arch Linux, using pacman -Syu). As a part of the process, Racket was upgraded to version 7.7 and I had to re-install Pollen. After that, compiling this repository (make all) seems to work fine until it produces this error message upon compiling feed.xml.pp and then halts:

[truncated]

raco pollen render feed.xml.pp
pollen: rendering feed.xml.pp
pollen: rendering /feed.xml.pp
path->complete-path: second argument is not a complete path
  first argument: #<path:pollen.rkt>
  second argument: #<path:posts/>
  context...:
   /home/me/.racket/7.7/pkgs/pollen/pollen/setup.rkt:21:0: get-path-to-override
   /home/me/.racket/7.7/pkgs/pollen/pollen/setup.rkt:48:11: poly-targets
   /home/me/.racket/7.7/pkgs/pollen/pollen/private/file-utils.rkt:176:11: ->markup-source-path
   /home/me/documents/www/sandbox/digitalwords.net/try-pollen/feed.xml.pp:135:0: syndicate?
   /usr/share/racket/collects/racket/private/list.rkt:256:2: filter
   "/home/me/documents/www/sandbox/digitalwords.net/try-pollen/feed.xml.pp": [running body]
   temp35_0
   for-loop
   run-module-instance!
   do-dynamic-require
   /home/me/.racket/7.7/pkgs/pollen/pollen/private/cache-utils.rkt:67:0: path->hash
   /home/me/.racket/7.7/pkgs/pollen/pollen/private/cache-utils.rkt:124:2: generate-dest-file
   /usr/share/racket/collects/file/cache.rkt:63:2: fetch-and-continue
   /usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt:555:3
   /home/me/.racket/7.7/pkgs/pollen/pollen/private/cache-utils.rkt:114:0: cache-ref!
   /usr/share/racket/collects/racket/private/more-scheme.rkt:376:2: hash-ref!
   ...
make: *** [makefile:84: feed.xml] Error 1

I’m not sure how to fix this and where the problem actually lies.

I came accross the problem trying to compile my own Pollen website, as I based my feed.xml.pp on yours (thanks! 💐).

Júda

This seems like it might be cache-related. The files in your project cache (the compiled subfolder(s)) are compiled with a particular version of Racket and a particular version of Pollen. If either of those things change (as they have in your case) the compiled/cached copies of your programs will not match and you’ll see strange errors from deep within the guts of Pollen.

So it’s possible you can clear this up by doing raco pollen reset (or make zap if you’re using a variant of my makefile) and then make all again.

But it might also be that some part of my project isn’t compatible with newer versions of Pollen. I will take a look and fix if so.

I just cleared the cache using make zap and even cloned the repo anew, but I still get the same error. Can you compile it with the newest versions of Racket and Pollen?

I tracked it down, looks like this is due to an issue in recent Pollen versions. Keep an eye on that issue for the fix.

Thank you very much for the effort! 🙂

The upstream fix is in and I’ve verified this project’s feed.xml.pp builds cleanly again. Thanks for the report!

Also, a tip: since this was written, Pollen has added its own get-markup-source function that is smart about finding poly sources and ensuring the result is an existing file. You can remove the get-markup-source function from feed.xml.pp to make it use Pollen’s version.