Annotation of src/usr.bin/sudo/PORTING, Revision 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.