View on GitHub

IRAF Community Distribution

IRAF maintained by the community

Home | Installation | Packages | X11IRAF | PyRAF | Forum

hodge@stsci.edu wrote on Oct 23, 2000

>From the help for mkpkg, and from the existing mkpkg.sf.* files,
it looks as if the "$special" feature in mkpkg only allows setting
special options for compiling, not for linking.  Is this the case?
One could certainly change LFLAGS, but this would apply to all
packages, rather than to an individual one.  Is it possible to
specify a link option for individual packages using $special or
some other feature of mkpkg?

The situation is that on Tru64 Unix, IRAF uses the -taso option to
force addresses to fit into 31 bits.  As a result of this, according
to the DEC documentation, malloc can only allocate up to 256 Mb.  A
workaround is to link with -non_shared, which allows allocating up to
one Gb.  See:
http://tru64unix.compaq.com/faqs/publications/base_doc/DOCUMENTATION/V51_HTML/ARH9VCTE/TITLE.HTM
section A.2, "Using the -taso Option".

A new option has been added to calstis that requires that more than
256 Mb be allocated at one time.  Using this option, calstis runs out
of memory on Tru64 when built with the same mkpkg as is used on Solaris,
but it works if -/non_shared is added to LFLAGS.  I can add
"$ifeq (MACH, alpha) ..." to the calstis mkpkg file, but it seems to me
that it would be better if tests on machine type were restricted to such
files as stsdas$lib/mkpkg.inc, rather than being scattered around in
various packages where they are needed.

Phil

Mike Fitzpatrick wrote on Oct 24, 2000

> From the help for mkpkg, and from the existing mkpkg.sf.* files,
> it looks as if the "$special" feature in mkpkg only allows setting
> special options for compiling, not for linking.  Is this the case?
> One could certainly change LFLAGS, but this would apply to all
> packages, rather than to an individual one.  Is it possible to
> specify a link option for individual packages using $special or
> some other feature of mkpkg?

	The special files list is only scanned during an update of library
modules and not in the final linking of an executable (which is normally
done with a '$link' directive), so in short it can't be done using the
mkpkg.sf files for a package.  Probably what you would need to do for this
is an "$ifeq (MACH, alpha) ..." for calstis as you say, and either reset
the LFLAGS locally or use it to add the flags to the link line directly.
You could also use this in the package lib$mkpkg.inc file to reset LFLAGS
for the entire package but this is overkill since it's only needed for one
task.
	Note that the Alpha iraf shared library also imposes a max size 
for the process of something like 553Mb so you might also want to link
using "-z" for processes using the -/non_shared trick to work around the
pointer size (calstis already does this, but in general ....).

-Mike

Last post on Oct 24, 2000