[BACK]Return to PORTING CVS log [TXT][DIR] Up to [local] / src / usr.bin / sudo

Annotation of src/usr.bin/sudo/PORTING, Revision 1.1.1.1

1.1       millert     1: Sudo porting hints
                      2: ==================
                      3:
                      4: Before trying to port sudo to a new architecture, please join the
                      5: sudo-workers mailing list (see the README file) and ask if anyone
                      6: has a port working or in-progress.  Sudo should be fairly easy to
                      7: port.  Since it uses a configure script, most of the work should
                      8: be done for you.
                      9:
                     10: If your OS is an SVR4 derivative (or some approximation thereof), it may
                     11: be sufficient to tell configure you are runnng SVR4, something like:
                     12:     configure foo-bar-sysv4
                     13: where foo is the hardware architecture and bar is the vendor.
                     14:
                     15: A possible pitfall is getdtablesize(2) which is used to get the
                     16: maximum number of open files the process can have.  If an OS has
                     17: the POSIX sysconf(2) it will be used instead of getdtablesize(2).
                     18: ulimit(2) or getrlimit(2) can also be used on some OS's.  If all
                     19: else fails you can use the value of NOFILE in <sys/param.h>.
                     20:
                     21: Sudo tries to clear the environment of dangerous envariables like
                     22: LD_* to prevent shared library spoofing.  If you are porting sudo
                     23: to a new OS that has shared libraries you'll want to mask out the
                     24: variables that allow one to change the shared library path.  See
                     25: badenv_table() in sudo.c to see how this is done for various OS's.
                     26:
                     27: It is possible that on a really weird system, tgetpass() may not
                     28: compile.  (The most common cause for this is that the "fd_set" type
                     29: is not defined in a place that sudo expects it to be.  If you can
                     30: find the header file where "fd_set" is typedef'd, have tgetpass.c
                     31: include it and send in a bug report.)
                     32: Alternately, tgetpass.c may compile but not work (nothing happens
                     33: at the Password: prompt).  It is possible that your C library
                     34: contains a broken or unusable crypt() function--try linking with
                     35: -lcrypt if that exists.  Another possibility is that select() is
                     36: not fully functional; running configure with --with-password-timeout=0
                     37: will disable the use of select().
                     38:
                     39: If you are trying to port to a system without standard Berkeley
                     40: networking you may find that interfaces.c will not compile.  This
                     41: is most likely on OS's with STREAMS-based networking.  It should be
                     42: possible to make it work by modifying the ISC streams support
                     43: (see the _ISC #ifdef's).  However, if you don't care about ip address
                     44: and network address support, you can just run configure with the
                     45: --without-interfaces flag to get a do-nothing load_interfaces() stub function.
                     46:
                     47: If you port sudo to a new architecture, please send the output of
                     48: "configure", the config.log file and your changes to:
                     49:     sudo@courtesan.com
                     50:
                     51: If you are unable to get sudo working, and you are willing to
                     52: give me an account on a machine, send mail to sudo@courtesan.com.
                     53: Note, however, that I can't make any promises.