File: MAINTENANCE

package info (click to toggle)
libcurses-perl 1.45-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 896 kB
  • sloc: ansic: 9,185; perl: 1,485; makefile: 10
file content (134 lines) | stat: -rw-r--r-- 4,363 bytes parent folder | download
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
These are notes for the maintainer.

Steps to release:

  - Update ChangeLog file with description of new stuff and release date.

  - Update version number in Curses.pm (search for VERSION).

  - Test the build:

    make realclean
    Set up environment variables, c-config.h if required.
    perl Makefile.PL PANELS MENUS FORMS
    make
    perl -Mblib -MCurses -e1
    perl demo

  - Make a tarball:

    $ make dist
    $ mv Curses-1.33.tar.gz /tmp/

  - Upload via pause.perl.org.  Use "upload a file to CPAN" link.  You have to
    login to make that link appear.  PAUSE gives you various options for
    uploading, tells you how to follow the progress of the uploading and
    indexing, and sends you emails about it.

    Or do:

       $ cpan-upload-http -verbose -user ... -mailto ... \
         /tmp/Curses-1.33.tar.gz
       (Get cpan-upload-http from CPAN)

    It goes into CPAN in the directory belonging to the user who uploaded it.

  - PAUSE will automatically extract the README file from the tarball
    and install it as e.g. Curses-1.33.readme

  - PAUSE will open the tarball automatically and index the packages it finds
    in there by name (Curses::Window, Curses::Screen, etc.).


For Bryan's Rhino test system:

  Copy hints/c-linux.ncurses.h as c-config.h and edit it
  to say #include "/usr/include/form.h" instead of <form.h>


GEN
---

The package is designed to have all the distributed code files
(Curses.pm, CursesFun.c, etc.) generated by the programs in gen.tar .
This is supposed to handle the myriad Ncurses functions with less
tedium than manually editing the files.

However, Bryan doesn't know how the Gen stuff works, so he has been
making the small updates necessary directly to the distributed files.
But the changes are modest, so it should be possible some day to
generate new files, diff to see what changed, and put those changes
into the Gen programs.

Originally, what is in gen.tar was a directory named 'gen' in the Curses
package on CPAN, and CPAN unfortunately indexes the Perl modules in there as
public modules.  And because make.Curses.pm contains the perldoc stuff for
Curses.pm, people have even been misled into using that unmaintained file
for documentation of the functions in Curses.pm.

Since I don't know how to stop CPAN from doing that, I solved that problem
by tarring up the directory.


ppport.h
--------

You generate this by running the function Devel::PPPort::WriteFile().

There shouldn't be any need to generate a new one unless there are
updates to the Devel::PPPort package.

A comment in ppport.h says it was generated by Perl 5.006002.  That's
a lie.


HOW SYMBOL EXISTENCE DETECTION WORKS
------------------------------------

Part of 'make' is determining which Curses functions, etc. exist in the
target system's Curses library.

It runs the program 'testsyms' to do this.

'testsyms' is hardcoded to take the file 'list.syms' as input.  That file
lists the symbols for which to test.

'testsyms' does a test compile, and if the compile fails, assumes it is
because the symbol for which it was testing is not in the Curses library.
The program it compiles is one of the following, depending upon what kind of
symbol 'list.syms' says it is:

  testsym.c
  testint.c
  testtyp.c

The output of 'testsyms' is hardcoded to 'CursesDef.h'.  Each line of that
looks like

#define C_ADDCH                 /* Does function 'addch' exist?              */

or

#undef  C_ADDCH                 /* Does function 'addch' exist?              */

depending on whether 'testsyms' found the symbol to exist.

THERE IS A SPECIAL CASE for "w" symbols.  Where the symbol starts with "w"
(e.g. "waddch"), the C_ macro name in CursesDef.h omits the "w"
(e.g. "C_ADDCH").

Curses.c #includes CursesDef.h and subsequently #includes CursesFun.c
CursesFun.c uses the definition from CursesDef.h of C_ADDCH to decide whether
to build into the Perl module a function for 'addch'.  CursesFun.c is a long
file with a section for every Curses function that we know, defining
a Perl XS function for it such as 'XS_Curses_addch'.

N.B. CursesFun.c get #included by Curses.c.  It cannot be compiled itself.

Curses.c also includes CursesBoot.c, which contains a line for every
function we know about and binds the Perl function (e.g. Curses::addch)
to the C XS function (e.g. 'XS_Curses_addch').

In some cases,