Installing Old Active Networking Language PLAN

74 views Asked by At

Can someone please help me interpret this? I am trying to install PLAN (a Packet Language for Active Networks). From my terminal on Mac OS X 10.8.4:

hntvlan569:~ Scott_Andrew_Collins$ cd OCamlPLAN
hntvlan569:OCamlPLAN Scott_Andrew_Collins$ cd plan-3.22/
hntvlan569:plan-3.22 Scott_Andrew_Collins$ make
ocamlc.opt -pp "camlp4o pa_ifdef.cmo -DPLAN_UNSAFE -DPLANPORT_TCP -DC_CRYPTO" -w s 
-thread -I basis -I interpreter -I planet -I port -I util -I RIP -I resident -I 
arp -I csum -I frag -I net -I reliable -I dns -I exp -I flow -I security -I 
crypto -I builder -I snap -I apps -I common -c common/critical.ml -o 
common/critical.cmo Camlp4: Uncaught exception: DynLoader.Error ("pa_ifdef.cmo", 
"file not found in path")

Error while running external preprocessor
Command line: camlp4o pa_ifdef.cmo -DPLAN_UNSAFE -DPLANPORT_TCP -DC_CRYPTO
'common/critical.ml' > 
/var/folders/pm/m53jrwbd10x0q701d7sw2zrw0000gp/T/ocamlpp9101d0

make: *** [common/critical.cmo] Error 2
1

There are 1 answers

0
Jeffrey Scofield On

You don't say the version of OCaml you're using.

The missing file pa_ifdef.cmo is (perhaps obviously) a preprocessing plugin for camlp4. Looking through the OCaml releases on my system, I see that it was present (maybe in an unsupported form) under OCaml 3.12 but is not there for OCaml 4 (unless I missed it somehow). I suspect support for this plugin has been dropped.

I've used this plugin myself; its purpose is roughly the same as cpp, the C preprocessor. I.e., it does conditional compilation based on tests of flags supplied at compile time.

In recent years I've been lucky enough to do without conditional compilation, so I don't know the latest status of this facility. But it wouldn't surprise me at all if there were a similar plugin that works with the most recent OCaml compiler. So, one solution would be to look into the recent camlp4 and find the replacement.

If the compile-time conditions aren't used widely in your sources you could also go through and remove them.

Another choice would be to compile with an older version of OCaml.