Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Fwd: Make-3.79 Complile error RedHat6.2Beta]

164 views
Skip to first unread message

Christopher R. Thompson

unread,
May 29, 2000, 3:00:00 AM5/29/00
to

-------- Original Message --------
From: "Christopher R. Thompson" <Chris...@Mail.TfJC.Com>
Subject: Make-3.79 Complile error RedHat6.2Beta
To: help...@gnu.org

See the following attachments for diagnostics compiling make-3.79 on a
486 running RedHat6.2Beta.

chris.config
chris.make

Paul D. Smith

unread,
May 31, 2000, 3:00:00 AM5/31/00
to Christopher R. Thompson
%% "Christopher R. Thompson" <Chris...@Sally.TfJC.Com> writes:

crt> remote-cstms.c: In function `start_remote_job_p':
crt> remote-cstms.c:86: `DB_EXTRA' undeclared (first use in this function)
crt> remote-cstms.c:86: (Each undeclared identifier is reported only once
crt> remote-cstms.c:86: for each function it appears in.)

This has already been fixed for the next release.

Change both occurrences of DB_EXTRA in remote-cstms.c to DB_JOBS and
that should solve the problem.

--
-------------------------------------------------------------------------------
Paul D. Smith <psm...@baynetworks.com> Network Management Development
"Please remain calm...I may be mad, but I am a professional." --Mad Scientist
-------------------------------------------------------------------------------
These are my opinions---Nortel Networks takes no responsibility for them.

Christopher R. Thompson

unread,
Jun 2, 2000, 3:00:00 AM6/2/00
to
FYI: Appears to be working A. O.K. now. See attached.
chris.check2

Christopher R. Thompson

unread,
Jun 6, 2000, 3:00:00 AM6/6/00
to
make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent
make rule.

Does anyone know what this message means.

I ran ...

make -j 6 dep >chris.dep 2>&1&

and got this message. It did not compile in parallel and I can not find
any reference to JOBSERVER anywhere in the documentation. Except for
--disable-job-server in ./configure which I did not set. What exactly is
the "parent make rule" it may be refering to? I tried +j1 but it thought
+j1 was a target!

Thanks From, Chris.

Paul D. Smith

unread,
Jun 6, 2000, 3:00:00 AM6/6/00
to
%% "Christopher R. Thompson" <Chris...@Mail.TfJC.Com> writes:

crt> make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent
crt> make rule.

crt> Does anyone know what this message means.

It means your makefiles aren't using the appropriate syntax when
invoking sub-makes.

crt> make -j 6 dep >chris.dep 2>&1&

crt> and got this message. It did not compile in parallel and I can
crt> not find any reference to JOBSERVER anywhere in the
crt> documentation. Except for --disable-job-server in ./configure
crt> which I did not set. What exactly is the "parent make rule" it
crt> may be refering to? I tried +j1 but it thought +j1 was a target!

See the GNU make manual, chapter "Errors Generated by Make":

`warning: jobserver unavailable: using -j1. Add `+' to parent make rule.'
In order for `make' processes to communicate, the parent will pass
information to the child. Since this could result in problems if
the child process isn't actually a `make', the parent will only do
this if it thinks the child is a `make'. The parent uses the
normal algorithms to determine this (*note How the `MAKE' Variable
Works: MAKE Variable.). If the makefile is constructed such that
the parent doesn't know the child is a `make' process, then the
child will receive only part of the information necessary. In
this case, the child will generate this warning message and
proceed with its build in a sequential manner.

Let me know if that doesn't clarify things.

--
-------------------------------------------------------------------------------
Paul D. Smith <psm...@gnu.org> Find some GNU make tips at:
http://www.gnu.org http://www.ultranet.com/~pauld/gmake/

Christopher R. Thompson

unread,
Jun 6, 2000, 3:00:00 AM6/6/00
to
OK. It must then be calling a program called scripts/mkdep.

>
>dep-files: scripts/mkdep archdep include/linux/version.h new-genksyms
> scripts/mkdep init/*.c > .depend
> scripts/mkdep `find $(FINDHPATH) -follow -name \*.h ! -name modversions.h -print` > .hdepend
># set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i fastdep ;done
># let this be made through the fastdep rule in Rules.make
> $(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)"
>
>MODVERFILE :=
>
>ifdef CONFIG_MODVERSIONS
>
>MODVERFILE := $(TOPDIR)/include/linux/modversions.h
>
>depend dep: dep-files $(MODVERFILE)
>
...

But I still don't understand what I need to plus (+).

I tried

export MAKE="make -j6"

to no avail either.

Do I need to change to

>
>dep-files: $(MAKE) scripts/mkdep archdep include/linux/version.h new-genksyms
> $(MAKE) scripts/mkdep init/*.c > .depend
> $(MAKE) scripts/mkdep `find $(FINDHPATH) -follow -name \*.h ! -name modversions.h -print` > .hdepend
># set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i fastdep ;done
># let this be made through the fastdep rule in Rules.make
> $(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)"
>
>MODVERFILE :=
>
>ifdef CONFIG_MODVERSIONS
>
>MODVERFILE := $(TOPDIR)/include/linux/modversions.h
>
>depend dep: $(MAKE) dep-files $(MODVERFILE)
>

???

Paul D. Smith

unread,
Jun 6, 2000, 3:00:00 AM6/6/00
to Christopher R. Thompson
%% "Christopher R. Thompson" <Chris...@Mail.TfJC.Com> writes:

crt> OK. It must then be calling a program called scripts/mkdep.

Only if that invokes GNU make.

That error should only be generated by an invocation of GNU make which
was invoked "inappropriately" as a child of another GNU make, invoked
with -jN where N>1.

>> dep-files: scripts/mkdep archdep include/linux/version.h new-genksyms
>> scripts/mkdep init/*.c > .depend
>> scripts/mkdep `find $(FINDHPATH) -follow -name \*.h ! -name modversions.h -print` > .hdepend

>> $(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)"

Are you _sure_ it's this rule that's printing the error? This looks OK
to me: having $(MAKE) mentioned in the build script is enough for the
parent make to consider that rule an invocation of a child make.

If you gave a little more context to the error you're getting, since you
don't use @ to suppress the output, it should be simple to see which
make command is causing the problem.

crt> But I still don't understand what I need to plus (+).

The + goes at the beginning of a command line (like @ or -) that you
want to indicate is a submake invocation, if it doesn't have a reference
to the $(MAKE) variable in it directly. The section of the GNU make
manual that I quoted to you has a link to another section that discusses
all of this.

-----

I should have asked you first thing: what version of GNU make are you
using? There was a bug in GNU make 3.78 that might have caused this
behavior, which is why 3.78.1 was released just a week or so after 3.78.

Second, you should be careful that you're not overwriting the MAKE
or MAKEFLAGS variables in your makefile anywhere.

If you can't figure it out you'll have to provide a small, complete
example illustrating the problem, so I can try to reproduce it.

Christopher R. Thompson

unread,
Jun 7, 2000, 3:00:00 AM6/7/00
to
"Paul D. Smith" wrote:
>
> %% "Christopher R. Thompson" <Chris...@Mail.TfJC.Com> writes:
>
> crt> OK. It must then be calling a program called scripts/mkdep.
>
> Only if that invokes GNU make.
>
> That error should only be generated by an invocation of GNU make which
> was invoked "inappropriately" as a child of another GNU make, invoked
> with -jN where N>1.
>

Ok, this is what's bugging me because I thought that when the -jN option
was invoked on the first command line make. That process would then
invoke N number of child makes which it "does" seem to do. I think that
the Makefile here fires up a new make when it descends down a
subdirectory. Where I am confused is wether or not I need to specify
+gcc, +ld, +etc... or simply $(MAKE) gcc, $(MAKE) ld, $(MAKE) etc... I
didn't think that it would be necessary to change those items like that.
Maybe the -jN option is getting passed here for some reason. I'll try
export MAKE="make -j1" and then start a "make -j6" from the command
line.

This is a linux kernel makefile. I'm running make-3.79 with the DB_JOBS
fix you sent me last week. The make check works without a hitch, except
that it didn't appear to export any of the four test makes to another
"customs" cpu. The linux Makefile has a lot of strange (to me)
dependancy stuff in it. It really doesn't need to run parallel 'cause it
only takes 4 or 5 minutes. It's just that I would like to know "why" it
doesn't work.
The main "make bzimage" and the "make modules", which I haven't tried
yet, can take several hours. Thus the interest in make-3.79-customs. I
would have tried pmake but I wasn't sure I wanted to convert all of the
Makefiles. Make works just fine (if I can get it to do parallel-customs,
or pvm, or something).

btw the -j6 option works in that there are definitly 6 make processes
running, but they are all running on just one computer. None of 'em get
exported. Maybe because I didn't suid root make after building? No I
just suid'd it and it still don't work right.

here's a ps with -j4


1010 pts/0 S 0:03 \_ bash
5489 pts/0 S 0:01 \_ make -j4 dep
5509 pts/0 S 0:02 | \_ make _sfdep_kernel _sfdep_drivers
_sfdep_mm _sfdep_fs _sfdep_net _sfdep_ipc _sfdep_lib _sfdep
5522 pts/0 S 0:01 | \_ make -C drivers fastdep
5533 pts/0 S 0:01 | | \_ make _sfdep_block
_sfdep_char _sfdep_net _sfdep_misc _sfdep_sound _sfdep_pci _sfdep_s
5543 pts/0 R 0:01 | | \_ make -C block fastdep
5524 pts/0 S 0:01 | \_ make -C fs fastdep
5540 pts/0 S 0:01 | | \_ make _sfdep_coda
_sfdep_minix _sfdep_ext2 _sfdep_fat _sfdep_msdos _sfdep_vfat _sfdep_
5550 pts/0 R 0:00 | | \_ make -C coda fastdep
5530 pts/0 S 0:01 | \_ make -C net fastdep
5545 pts/0 R 0:01 | | \_ make _sfdep_802
_sfdep_ax25 _sfdep_bridge _sfdep_core _sfdep_ethernet _sfdep_ipv4 _sf
5547 pts/0 R 0:00 | \_ make -C lib fastdep
5549 pts/0 R 0:00 \_ ps -axfw
4616 ? S< 0:05 customs -verbose -master -allow 192.168.50.5
-allow 192.168.50.3 -allow 127.0.0.1 -allow 192.168.50.1 -lo

There is also an attachment at the end that shows the full command
lines. Doesn't look like any -j's are getting passed on.

Another funny thing is that if customs is not running on some machine.
make fails with rpc errors. Is this normal? I would have thought that it
might have just run in single machine mode.

> >> dep-files: scripts/mkdep archdep include/linux/version.h new-genksyms
> >> scripts/mkdep init/*.c > .depend
> >> scripts/mkdep `find $(FINDHPATH) -follow -name \*.h ! -name modversions.h -print` > .hdepend
> >> $(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)"
>
> Are you _sure_ it's this rule that's printing the error? This looks OK
> to me: having $(MAKE) mentioned in the build script is enough for the
> parent make to consider that rule an invocation of a child make.
>

No.. I am not sure at all. It's probably down in some subdirectory
somewhere. The thing is, is that it pops up on the stdout almost first
thing. Look at url:ftp://ftp.tfjc.com/pub/linux-2.2.14/chris.dep

This was generated with the following commands.

export MAKE="make -j1"
make -j4 dep > chris.dep 2>&1&

notice it says

make: exporting to Sally.TfJC: Root execution not allowed

I was executing "not" as root... Oh yeh I set the suid bit like the
readme said.

I'll set it off now. Notice that now it does not say exporting at the
begining.

url:ftp://ftp.tfjc.com/pub/linux-2.2.14/chris.dep2

process tree url:ftp://ftp.tfjc.com/pub/linux-2.2.14/chris.ps3

> If you gave a little more context to the error you're getting, since you
> don't use @ to suppress the output, it should be simple to see which
> make command is causing the problem.
>

I hesitate to post the full debug output cause it's quite lengthy. But
you should be able to see everything at this
URL:ftp://ftp.tfjc.com/pub/linux-2.2.14/

Here is a cut out from the 10meg chris.dep.debug with the area of
interest.

<snip>

Trying implicit prerequisite
`/usr/src/linux-2.2.14-knfs/include/linux/SCCS/s.modversions.h'.
No implicit rule found for
`/usr/src/linux-2.2.14-knfs/include/linux/modversions.h'.
Finished prerequisites of target file
`/usr/src/linux-2.2.14-knfs/include/linux/modversions.h'.
No need to remake target
`/usr/src/linux-2.2.14-knfs/include/linux/modversions.h'.
Finished prerequisites of target file `dep'.
The prerequisites of `dep' are being made.
Pruning file `dep-files'.
Pruning file `/usr/src/linux-2.2.14-knfs/include/linux/modversions.h'.
Live child 0x080ca0c0 (new-genksyms) PID 2826
Live child 0x080b6098 (include/linux/version.h) PID 2825
Live child 0x080c29b0 (archdep) PID 2824
make[1]: Entering directory `/usr/src/linux-2.2.14-knfs/arch/i386/boot'


make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent

make rule.
Got a SIGCHLD; 1 unreaped children.
Reaping winning child 0x080b6098 PID 2825
Rpc_Call: 6, 0x8078304, 0x1, 6, 0xbfffe020, 8, 0x8071a44, 2, 0x806e724
Rpc_EventCreate: event 8094068, now = 960341781.601124 + 2.500000 =
960341784.101124
RpcQueueEvent: event 8094068 (timeout = 960341784.101124)
RpcResend: resending 558583295: 1 left
Rpc_Wait: read(40), write(0), except(0), to(2.498100)
Rpc_Wait: read(40), write(0), except(0)
Rpc_Wait: stream 6: read
RpcHandleStream: reply to 558583295:
RpcHandleStream: error 5
Rpc_EventDelete: event 8094068
Rpc_Call: returning 5
Customs won't export: Access denied
Updating makefiles....
Considering target file `Makefile'.
Looking for an implicit rule for `Makefile'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.o'.

<snip>

> crt> But I still don't understand what I need to plus (+).
>
> The + goes at the beginning of a command line (like @ or -) that you
> want to indicate is a submake invocation, if it doesn't have a reference
> to the $(MAKE) variable in it directly. The section of the GNU make
> manual that I quoted to you has a link to another section that discusses
> all of this.
>

The docs I found on + said to use it to extend/add characters to a
variable. I think I now understand what you mean. It went right over my
head before.

> -----
>
> I should have asked you first thing: what version of GNU make are you
> using? There was a bug in GNU make 3.78 that might have caused this
> behavior, which is why 3.78.1 was released just a week or so after 3.78.
>

3.79 with the BEST_JOBS thing fixed.



> Second, you should be careful that you're not overwriting the MAKE
> or MAKEFLAGS variables in your makefile anywhere.

Probably is... will check and fix. I assume that only the first command
line make process needs the -jN flag. Submakes will use -j1.

> If you can't figure it out you'll have to provide a small, complete
> example illustrating the problem, so I can try to reproduce it.
>

Aparently I am mostly having problems with customs. I'll figure out the
Makefile stuff in time (I think). But even when I went back and reran
the make-3.79 check with debug on... I can see where it gave the same
export access denied error message, and then reported that the
parallelism checked ok. (I erroneously assumed that because it failed
when customs "was not" running, and then checked "ok" when customs "was"
running, that jobs "were" being exported).

This is probably correct (multi tasking parallelism instead of SMP
parallelism). It is my problem to figure out why customs won't export.
(#$%^%$#)!

Maybe I should go back and work on pvm-make? I'm not real happy about
the security implementation in customs anyway. I've got it set to "allow
everything access 0 ALL" which of course is unacceptable even if it did
work.

Thanks again, Chris.

chris.ps2

Paul D. Smith

unread,
Jun 7, 2000, 3:00:00 AM6/7/00
to Christopher R. Thompson
%% "Christopher R. Thompson" <Chris...@Mail.TfJC.Com> writes:

crt> Ok, this is what's bugging me because I thought that when the -jN
crt> option was invoked on the first command line make. That process
crt> would then invoke N number of child makes which it "does" seem to
crt> do.

No. -jN means that N _jobs_ can be running concurrently. A job is NOT
a sub-make (or, not only a submake): a job is _any_ target that make
might build.

Thus, if you had this makefile:

all: one two

one two: ; @echo $@ +; sleep 2; echo $@ -

And you ran it without any -j, you'd see this sequential output:

echo one +
echo one -
echo two +
echo two -

If you ran that make with -j2 (or more), you'd see this parallel output:

echo one +
echo two +
echo one -
echo two -

Note that we have only one invocation of make here, there is no "N
number of child makes" or anything like that.

crt> I think that the Makefile here fires up a new make when it
crt> descends down a subdirectory. Where I am confused is wether or
crt> not I need to specify +gcc, +ld, +etc... or simply $(MAKE) gcc,
crt> $(MAKE) ld, $(MAKE) etc... I didn't think that it would be
crt> necessary to change those items like that.

You seem confused about what "+" does. The section of the GNU make
manual describing it is "How the `MAKE' Variable Works".

GNU make needs to know which of the commands it runs are actually
submakes, and which are just compilations, links, whathaveyou. It has
two ways to discover that:

1) If the command script contains the variable $(MAKE) (note this must
be the actual string $(MAKE) or ${MAKE}; that variable cannot be
embedded into some other variable), then make assumes the command
will invoke a submake.

2) If your command line invokes a submake but doesn't include a direct
reference to the $(MAKE) variable, you can add the "+" token to the
beginning of the command line (as you'd add "@" for silent or "-"
for ignore errors). Then make will know the command will invoke a
submake.

If make decides the command is a submake and you've used -jN where N>1,
it will set up the capability to communicate about how many jobs are
running before invoking the submake.

If it decides the command is _not_ a submake, it won't set that up.

If make decides the command is _not_ a submake, and it didn't set things
up, but the command really _does_ turn out to be a submake, then the
submake will notice that things aren't set up correctly and it will
complain with the error you're seeing.

Is that more clear?

crt> Maybe the -jN option is getting passed here for some reason. I'll
crt> try export MAKE="make -j1" and then start a "make -j6" from the
crt> command line.

You really shouldn't ever override the MAKE variable. It will almost
always cause you heartburn and pain.

Just Say No!

crt> The make check works without a hitch, except that it didn't
crt> appear to export any of the four test makes to another "customs"
crt> cpu.

I hate to say it, but you're really on your own when it comes to the
customs stuff. I have never used it personally, not even once. I just
don't have any advice for you, really.

crt> stuff in it. It really doesn't need to run parallel 'cause it
crt> only takes 4 or 5 minutes. It's just that I would like to know
crt> "why" it doesn't work. The main "make bzimage" and the "make
crt> modules", which I haven't tried yet, can take several hours.

?!?!?!

What kind of system do you have? Even on my lowly P100/32M firewall box
at home it takes well under an hour to build a 2.2.x kernel from
scratch, including modules.

crt> There is also an attachment at the end that shows the full command
crt> lines. Doesn't look like any -j's are getting passed on.

You can't tell from here. Make communicates the command line of the
parent to the children via the environment, not via the command line.
You'd need to echo $(MAKEFLAGS) in the children to see what arguments
they're being invoked with.

One thing you should try is first compiling GNU make _without_ any
customs support, just a generic version, and seeing if -j works with
that. I've never tested the new jobserver feature with customs support
so I have no idea how or if it works.

>> If you gave a little more context to the error you're getting, since you
>> don't use @ to suppress the output, it should be simple to see which
>> make command is causing the problem.

crt> I hesitate to post the full debug output cause it's quite lengthy.

I didn't mean debugging output, I just meant the normal make output; you
posted only the actual line of the error itself; I was looking for a few
lines of context before and after that error line.

crt> Pruning file `/usr/src/linux-2.2.14-knfs/include/linux/modversions.h'.
crt> Live child 0x080ca0c0 (new-genksyms) PID 2826
crt> Live child 0x080b6098 (include/linux/version.h) PID 2825
crt> Live child 0x080c29b0 (archdep) PID 2824
crt> make[1]: Entering directory `/usr/src/linux-2.2.14-knfs/arch/i386/boot'
crt> make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.

OK, so here it's pretty obvious that the make rule that's invoking make
in the /usr/src/linux-2.2.14-knfs/arch/i386/boot directory does not
contain the variable $(MAKE) or start with "+", so the make running that
rule doesn't expect it to be a submake invocation. When it is, the
submake prints that warning. Find the makefile that runs make in that
directory, and see what the rule is.

Strangely enough, the MAKELEVELS variable here is 1! I don't understand
why that should be. All I can think of is that the makefiles are
resetting the environment somehow; that's very bad mojo.

>> Second, you should be careful that you're not overwriting the MAKE
>> or MAKEFLAGS variables in your makefile anywhere.

crt> Probably is... will check and fix. I assume that only the first command
crt> line make process needs the -jN flag. Submakes will use -j1.

If you see the above error message, that make (and its children) will
use -j1. All other makes should communicate together to allow up to N
jobs to be running amongst all the makes; that's what the jobserver
feature in 3.78 does.

crt> Maybe I should go back and work on pvm-make?

Again, I can't really advise you on this. I've never used or tried
either one. However, PVM does appear to be a more robust and
well-maintained implementation than customs. On the other hand, the PVM
interface to make isn't part of the standard distribution right now (of
course, since I don't test customs, either, maybe that doesn't make much
different, in reality :).

Christopher R. Thompson

unread,
Jun 7, 2000, 3:00:00 AM6/7/00
to
"Paul D. Smith" wrote: A great many things about make!

Thanks Much. This was extremly enlightening. I won't be posting further
until I've got things fixed. I understand the -jN and submake things
now. I was under the misconception about make communicating with
submakes. Not looking at the code yet I imagined the jobs interface
having something to do with cpu loadavg or something. Now I see the
light.

The -j1 error/warning I was getting should be trivial to fix up in the
makefile. There are aparently other issues with the linux kernel
makefile that I will be getting into as well. I'll be looking at it
closely in the coming weeks.

I am currently confident that there is not a problem with make here.
It's an implementation problem in the Makefile and with my customs
setup. This is a Redhat6.1Beta and I've just downloaded the pmake source
with customs. I'll dig in and see what I can find.

Oh. per your question. The setup here is 486-66 24Meg Ram 550MB 8bit
scsi disk firewall, 486-50 16Meg Ram 580MB ide disk firewall, 486-100
52Meg Ram 33GB ide disk playtoy server, Mom's Windoze 3.11 pentium-75
o'clocked 100Mhz socket-3 72Meg Ram 3GB ide-buggy disk w/nfs-root
mounted linux. All networked 10base-T and thinlan and running the
RedHat6.1Beta. Pentium-333's and Athalons are down the wire in the next
couple of months as well as turning a couple of machines into RT-Linux
Analog signal monitors.

1-hour minimum kernel complie. (current kernel)
1-hour minimum modules complie. (current kernel)

I usually have to do several, and I hate long coffee breaks.

I would like also to get into the linux kernel development cycle so I am
really motivated to get this working.

Thanks again for all of you help.

>
-------------------------------------------------------------------------------
> Paul D. Smith <psm...@gnu.org> Find some GNU make tips at:
> http://www.gnu.org http://www.ultranet.com/~pauld/gmake/
> "Please remain calm...I may be mad, but I am a professional." --Mad Scientist

All the BEST from, Christopher R. Thompson -- Glad

Christopher R. Thompson

unread,
Jun 7, 2000, 3:00:00 AM6/7/00
to
BTW Paul, I have trouble navigating with gnu-info for some reason (have
not really taken the time to learn it because I am usually trying to
learn something else whenever I have to get into it).

I found a Great Make manual on your page at ultranet in the link below.
Kudos to a job well done.

I personally am going to take the full text version of it and replace or
add it to the make man page, which is much easier to use (for me).

Paul D. Smith

unread,
Jun 7, 2000, 3:00:00 AM6/7/00
to
%% "Christopher R. Thompson" <Chris...@Sally.TfJC.Com> writes:

crt> BTW Paul, I have trouble navigating with gnu-info for some reason
crt> (have not really taken the time to learn it because I am usually
crt> trying to learn something else whenever I have to get into it).

It'll only take you about 10 minutes; there are only about 10 commands.

n - next section
p - previous section
u - up to parent section
m <item> - down to subsection (menu) <item>
l - back to last section (you can keep going back with more "l"'s)
f - follow a link (see below)
s - search
i - jump to an index entry
t - top of current manual
d - directory of all manuals

Page with SPC/Backspace or PgUp/PgDn or arrows or whatever.

To follow a link, use "f" and choose the link you want, or put the
cursor on the link and hit RET to select it. If you're reading from
within Emacs (the best way to do it) you can click on links and menu
items and up/next/prev buttons with mouse-2 to select them.

If you SPC past the end of a section it will automatically take you to
the next section (you can start at the top and just keep hitting SPC,
and you'll read through the manual in order as if you were reading it
like a book--very handy).

crt> I found a Great Make manual on your page at ultranet in the link
crt> below. Kudos to a job well done.

That's _the_ GNU make manual, albeit an older version (for some reason
they've never gotten around to putting up the newer versions). My page
just has a link to the www.gnu.org site where the manual is available.

crt> I personally am going to take the full text version of it and
crt> replace or add it to the make man page, which is much easier to
crt> use (for me).

Yikes! The GNU make manual is >150 pages, printed in a 12pt
variable-width font. It don't like to even think about how large a
plaintext copy would be. Certainly too large to be usable as a man
page, IMO. Plus, you lose all the structure and links.

If you're OK with the HTML format, you can get the latest version of
texinfo from the ftp.gnu.org site and build that; it will format Texinfo
files (like the GNU make manual) into various output formats, and as of
texinfo 4.0 one of those is HTML.

However, Info is 1,000x better for reading manuals than HTML. Ugh.

Christopher R. Thompson

unread,
Jun 7, 2000, 3:00:00 AM6/7/00
to
"Paul D. Smith" wrote:
>
> It'll only take you about 10 minutes; there are only about 10 commands.
>
> n - next section
> p - previous section
> u - up to parent section
> m <item> - down to subsection (menu) <item>
> l - back to last section (you can keep going back with more "l"'s)
> f - follow a link (see below)
> s - search
> i - jump to an index entry
> t - top of current manual
> d - directory of all manuals
>

This helps. Probably what bugs me is the keyboard mapping. It's seems a
lot like emacs which is also on my learning tree todo list. I could
probably change it I'm just not real motivated to do so. I can usually
search for what I need which gets the job done mostly.

> Page with SPC/Backspace or PgUp/PgDn or arrows or whatever.
>

> Yikes! The GNU make manual is >150 pages, printed in a 12pt
> variable-width font. It don't like to even think about how large a
> plaintext copy would be. Certainly too large to be usable as a man
> page, IMO. Plus, you lose all the structure and links.

I know... The bash man page is about 90 pages long and I have to wait 5
or 10 seconds for the stupid thing to load. But I still like it.

>
> If you're OK with the HTML format, you can get the latest version of
> texinfo from the ftp.gnu.org site and build that; it will format Texinfo
> files (like the GNU make manual) into various output formats, and as of
> texinfo 4.0 one of those is HTML.
>

Right. I've also started a project (incomplete) to put the man pages on
my web server using the man2html program but I droped it in favor of
other more pressing things.



> However, Info is 1,000x better for reading manuals than HTML. Ugh.
>

0 new messages