scsh-users
[Top] [All Lists]

scsh-5.0.1 install failure

To: scsh-bugs@martigny.ai.mit.edu
Subject: scsh-5.0.1 install failure
From: William Pippin <pippin@cis.ohio-state.edu>
Date: Wed, 24 Jun 1998 15:45:18 -0400 (EDT)
Cc: pippin@cis.ohio-state.edu
I'm running Red Hat linux 5.0, and am unable to build scsh-5.0.1

The .configure works fine, but the build stops during the make.

The first error is a disagreement about how listen() should be declared:

% gcc -c -I./cig -I./scsh/regexp -DHAVE_CONFIG_H -I. -I. -g -O -o 
scsh/network.o scsh/network.c
% scsh/network.c: In function `df_listen':
% scsh/network.c:60: conflicting types for `listen'
% /usr/include/sys/socket.h:169: previous declaration of `listen'
% make: *** [scsh/network.o] Error 1

which is easy to fix by removing the declaration:

*** network.c   Wed Jun 24 15:41:58 1998
--- network.c.new       Wed Jun 24 15:41:48 1998
***************
*** 57,63 ****

  scheme_value df_listen(long nargs, scheme_value *args)
  {
!     extern int listen(int , int );
      scheme_value ret1;
      int r1;

--- 57,63 ----

  scheme_value df_listen(long nargs, scheme_value *args)
  {
! /*  extern int listen(int , int ); */
      scheme_value ret1;
      int r1;

The second is both more difficult to fix and more pervasive.  It's a
problem with the signal mask type, and the first place it shows up
is during compilation of scsh/sighandlers1.c:

% gcc -c -I./cig -I./scsh/regexp -DHAVE_CONFIG_H -I. -I. -g -O -o 
scsh/sighandlers1.o scsh/sighandlers1.c
% scsh/sighandlers1.c: In function `set_procmask':
% scsh/sighandlers1.c:44: incompatible types in assignment
% scsh/sighandlers1.c:47: invalid operands to binary >>
% scsh/sighandlers1.c: In function `get_procmask':
% scsh/sighandlers1.c:58: invalid operands to binary >>
% scsh/sighandlers1.c:58: invalid operands to binary &
% make: *** [scsh/sighandlers1.o] Error 1

Here are the macros that won't compile, from sigset.h

/* Convert between a lo24/hi integer-pair bitset and a sigset_t value.
** These macros are OS-dependent, and must be defined per-OS.
*/

#define make_sigset(maskp, hi, lo) (*maskp=((hi)<<24)|(lo))

/* Not a procedure: */
#define split_sigset(mask, hip, lop) \
        ((*(hip)=(mask>>24)&0xff), \
         (*(lop)=(mask&0xffffff)))

sigset.h is from scsh/linux, and, through the symlink, in scsh/machine

% ls -l scsh/machine
lrwxrwxrwx   1 src      users           7 Jun 24 15:36 scsh/machine -> ./linux

At this point I decided to pass the buck.  I believe this problem will also
show up a few files later, in
scsh/jcontrol1.c and
scsh/jcontrol2.c, since they also use the sigset_t type, and it doesn't seem
to cast well.

Thanks, 

Bill Pippin

<Prev in Thread] Current Thread [Next in Thread>
  • scsh-5.0.1 install failure, William Pippin <=