aboutsummaryrefslogtreecommitdiff
path: root/local/src/README
blob: 7ca0cb0fe8babebbddb26c7160d038040c2a507d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
LOCAL -- Locally added tasks and packages.

    The LOCAL package is a place to put locally added tasks and packages
without modifying the standard IRAF system (and thereby complicating future
updates and so on).  The LOCAL provided with the distributed system is a
template package provided to make it as easy as possible for user sites to
set up their own custom LOCAL packages.

To create a custom LOCAL package:

    [1] Copy the template package directory tree (iraf$local) to a new
	directory somewhere outside the iraf directories.  DO NOT MODIFY
	THE TEMPLATE LOCAL, CREATE AN EXTERNAL COPY AND MODIFY THAT INSTEAD.
	This is necessary to ensure that your custom local is unaffected by
	updates to the core IRAF system.

    [2]	Edit the pathame of local in the "reset local = ..." statement in the
	IRAF file hlib$extern.pkg, replacing the "iraf$local/" by the host
	pathname of the root directory of your custom LOCAL.  Be sure to
	include the trailing / on UNIX systems, or escape $ and [ on VMS
	systems.  All references to LOCAL will now refer to your custom
	version of LOCAL, rather than to the template version provided with
	the distributed system.

To add a new task to LOCAL:

    [1] Add the source and parameter file if any to this directory, e.g.,
	mytask.x, mytask.par.

    [2] Add the name of the new task to x_local.x.  Any number of tasks may
	be added to the package in this way.

		task	pavg	= t_pavg,
			mytask	= t_mytask

    [3] Add the manual page for the task to the `doc' subdirectory, e.g.,
	file doc/mytask.hlp.  Add entries for the new task to local.hd
	(so that HELP can find the new manual page) and local.men (so that
	the task will be listed when `help local' is entered).  Load the
	softools package and run `mkhelpdb' to recompile the help database
	else HELP will not know about the new manual page.

	cl> mkhelpdb local$lib/root.hd local$lib/helpdb.mip

    [4] Add an entry for all source files to the library member list in
	the mkpkg file in this directory.  List any include files referenced
	in the source file to the right of the source file name.
		
		libpkg.a:
			pavg.x		<imhdr.h>
			mytask.x
			;

    [5] Add an entry for the new task in local.cl, so that the CL will
	know about the new task when the LOCAL package is loaded.  Prefix
	the task name with a dollar sign ($mytask) if the new task does
	not have an associated parameter (.par) file.

		task	pavg,
			mytask	= "local$src/x_local.e"

    [6] Enter the command `mkpkg -p local' to compile and link the new package
	executable `x_local.e'.  After testing the new task, install the new
	package executable in bin$ with the command `mkpkg -p local install'.

You should now be able to load the LOCAL package in the CL, and run the new
task, or get help for any of the LOCAL package tasks.

Any number of tasks may be added to your custom LOCAL package in this fashion.
Host programs and IMFORT programs may also be added, modifying the task
statements and mkpkg compile/link instructions appropriately (if used).
Subpackages should be used to group like tasks if the LOCAL grows large
enough.  For more information on program development in IRAF, refer to the
SOFTOOLS package help pages for xc, mkpkg, etc., the SPP/VOS technical
documentation, the IMFORT manual, and so on.