h1. C library For a while Dyson uses illumos libc, *not* GNU libc. h3. More libraries to link Some functions, expected to be in libc, really are in libsocket, libnsl and libresolv. Also Dyson uses GNU libiconv. Workaround:
$ cat /usr/lib/x86_64-illumos/libc.so
INPUT(libc.so.1 AS_NEEDED(-lsocket -lnsl -lresolv -liconv))
Note, that this breaks sunld (illumos link editor). The same trick is used in Debian for libncurses. h3. Less libraries to link librt, libphtread, libdl are dummy ("filters"). There is not need to link with these libraries, all functions expected to be in these libraries are in libc or ld.so.1 (not worry either). h3. Extended attributes There are specific functions to work with extended attributes of files. These functions involve illumos library libnvpair. Functions known from Linux are provided by libattr (see #59). See [[particular recipes]]. h1. Filesystem layout h3. /bin is a symbolic link to /usr/bin illumos and Solaris have been using it for a long time. GNU/Linux "is going":http://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge to use it too. But now in Debian @/bin@ and @/usr/bin@ are separated. So additional modifications are required for some "low-level" packages like "sed", "ed", all shells, etc. h3. Debian multiarch * @x86_64-illumos@ for Dyson on x86_64 (64-bit) processors * @i386-illumos@ for Dyson on x86 (32-bit) processors (this distribution does not exist) So Dyson on amd64 has directories @/lib/x86_64-illumos@ and @/usr/lib/x86_64-illumos@. h3. Manpages layout Some packages (e. g. "sudo") detect "SunOS" and put manpages in different directories, and @dh_install@ cannot find some manpages after that. Debian man page layout (aka GNU-style) is prefered. h1. Toolchain h3. Default compiler is GCC 9 The first version of GCC supporting "@x86_64-pc-solaris2.11@ hosts":http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39150 is 4.7 h3. GNU linker (ld) from GNU binutils is the default linker Some packages fondly expect that if @uname@ returns "SunOS", the linker is the SunOS linker. It is wrong, see for example: # https://fedorahosted.org/augeas/ticket/289, # https://bugzilla.gnome.org/show_bug.cgi?id=685626, # http://bugs.debian.org/689656. kbuild used to pass the "@-i@" to the linker; for sun ld this means "Ignore the LD_LIBRARY_PATH", for GNU ld - "Incremental link". h1. Init system is SMF h3. Logrotate rules need attention Some rules for logrotate run init-scripts for sysvinit, e. g. Apache and Lighttpd. See http://git.osdyson.ru/dh-smf.git