[M3devel] program vs. Program

Jay K jay.krell at cornell.edu
Mon May 10 11:37:21 CEST 2010


Despite the length of this email, I don't think this is a big deal..


With the "origin/runpath" changes from a while ago, "program" "doesn't work", unless build_standalone.
At least on most systems. That is, you can't run the binary from its shipped location, in pkg.


We should consider: 
 - make program imply build_standalone? 
 - never ship "program" -- not runable within the package store  
 - drop in wrapper .sh files that set/append LD_LIBRARY_PATH? 
 - maybe the scheme I alluded to, which I'm pretty sure libtool implements sometimes, where you use full paths on the initial link, an then "ship/install" relink first, either with new full paths or with $ORIGIN.


An exception would be, like, how gcc uses libexec/cc1.
 If something in bin calls out to something in pkg, and either the file in pkg is build_standalone, or, well $ORIGIN sometimes
 is relative to the executable -- like on Mac OSX 10.4 with @executable_path, but this is probably too rare to consider.
And even if we have "private" executables in "pkg", build_standalone is still wasteful.


So we'd want to look through stuff like:


jbook2:cm3 jay$ grep ^program `find . | grep /m3makefile$` | grep -v examples | grep -v test
./caltech-parser/hack/src/m3makefile:program("dummy")
./doc/tutorial/ui/script/m3makefile:program ("script")
./m3-comm/tapi/src/m3makefile:program ("foo2")
./m3-db/db/demo/m3makefile:program("demo")
./m3-db/db/src/postgresql/demo/m3makefile:program("demo")
./m3-db/stable/example/src/m3makefile:program("example")
./m3-demo/sharedboard/boardclient/src/m3makefile:program ("boardclient")
./m3-demo/sharedboard/boardserver/src/m3makefile:program ("boardserver")
./m3-demo/sharedboard/calendar/src/m3makefile:program ("calendar")
./m3-libs/digraph/src/m3makefile:program(DiGraphTest)
./m3-libs/digraph/src/m3makefile:program(TopSortTest)
./m3-libs/synthesizer/example/chirp/src/m3makefile:program("chirp")
./m3-libs/synthesizer/example/echo/src/m3makefile:program("echo")
./m3-libs/synthesizer/example/entchen/src/m3makefile:program("entchen")
./m3-libs/synthesizer/example/filter/src/m3makefile:program("filter")
./m3-libs/synthesizer/example/inout/src/m3makefile:program("inout")
./m3-libs/synthesizer/example/oscillator/src/m3makefile:program("oscillator")
./m3-libs/synthesizer/example/plot/src/m3makefile:program("plot")
./m3-libs/synthesizer/example/rueckwaerts/src/m3makefile:program("rueckwaerts")
./m3-libs/synthesizer/example/sirene/src/m3makefile:program("sirene")
./m3-libs/synthesizer/example/stereo/src/m3makefile:program("stereo")
./m3-libs/synthesizer/example/stream/src/m3makefile:program("stream")
./m3-libs/wellfett/example/src/m3makefile:program("example")
./m3-pkgtools/pkgfprint/src/m3makefile:program("pkgfp")
./m3-pkgtools/pkgq/src/m3makefile:program("pkgq")
./m3-pkgtools/pkgsrv/src/m3makefile:program("packageserver")
./m3-pkgtools/pkgtool/src/m3makefile:program("packagetool")
./m3-sys/cm3/src/m3makefile:program ("cm3")
./m3-sys/cminstall/src/m3makefile:program ("cminstall")
./m3-sys/dll2lib/src/m3makefile:program ("dll2lib")
./m3-sys/libdump/src/m3makefile:program ("libdump")
./m3-sys/m3cgcat/src/m3makefile:program ("m3cgcat")
./m3-sys/m3cggen/src/m3makefile:program ("m3cggen")
./m3-sys/m3staloneback/src/m3makefile:program ("m3back")
./m3-tools/cmpfp/src/m3makefile:program ("cmpfp")
./m3-tools/cvsup/cvpasswd/src/m3makefile:program("cvpasswd")
./m3-tools/macapi/src/m3makefile:program("macapi")
./m3-ui/juno-2/juno-app/pkl-fonts/src/m3makefile:program        ("PklFonts")
./m3-ui/juno-2/juno-machine/linear/src/m3makefile:program("LinearTest")
./m3-ui/juno-2/juno-machine/nonlinear/src/m3makefile:program        ("NonLinearTest")
./m3-ui/juno-2/juno-machine/runtime/src/m3makefile:program        ("RuntimeTest")
./m3-ui/juno-2/juno-machine/solve/src/m3makefile:program        ("SolveTest")


At a quick glance, a lot can be ignored. Anything without quotes doesn't curently build.
m3-pkgtools doesn't currently build.
cm3 and cminstall are "special" -- and still, we shouldn't bother putting them in pkg.
m3back is never used; m3ccgen is standalone and rarely used
libdump I think is unused; dll2lib is unused.
This doesn't check if things are build_standalone, e.g. PklFonts.


 - Jay


 		 	   		  


More information about the M3devel mailing list