[M3devel] program vs. Program

Olaf Wagner wagner at elegosoft.com
Mon May 10 17:40:15 CEST 2010


Quoting Tony Hosking <hosking at cs.purdue.edu>:

> program is not supposed to ship anything, right?

program ships to the /pkg/TARGET directory, while
Program shipts to /bin.

> Only Program should do that.
>
> On 10 May 2010, at 05:37, Jay K wrote:
>
>> 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?

Probably simplest solution, but not really what I would expect.

>>  - never ship "program" -- not runable within the package store

Would be a non-compatible change.

>>  - drop in wrapper .sh files that set/append LD_LIBRARY_PATH?

Strange.

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

Why not use the correct paths via $ORIGIN? For program they are
of course different than for Program. Too difficult?

Not yet sure what we should do,

Olaf


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



-- 
Olaf Wagner -- elego Software Solutions GmbH
                Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95
    http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194




More information about the M3devel mailing list