OS-SCO-OpenSource-DevelopmentSystem

From KRayWiki
Jump to: navigation, search

A description of a SCO OpenServer 5.0.7 open source project development system

See Also: 
OS-SCO-OpenSource
OS-SCO


User Environment

A summary of possibly pertinent user environment follows:

  1. As a rule, development occurs from within a BASH shell.
    Logon, then $ bash --login.
    ~/.bashrc has no development-specific settings.
    ~/.bash_profile does have a few pertinent settings.
    ACCEPT_INFERIOR_RM_PROGRAM=yes
    export ACCEPT_INFERIOR_RM_PROGRAM
    CPATH=${HOME}/include
    export CPATH
    CFLAGS="-static"
    export CFLAGS
    PKG_CONFIG_PATH=${HOME}/lib/pkgconfig
    -or-
    PKG_CONFIG_PATH=${HOME}/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
    export PKG_CONFIG_PATH
  2. Search paths
    PATH
    ${HOME}/bin:/usr/local/bin:/usr/local/sbin:/usr/gnu/bin:/bin:/etc:/sbin:/usr/bin:/usr/sbin:/usr/java/bin:/usr/bin/X11
    MANPATH
    ${HOME}/share/man:${HOME}/man:/usr/local/share/man:/usr/man:/usr/gnu/man:/usr/X11R6/man
  3. Tool chain updates
    automake 1.8.5, 1.9.6, 1.10.3, 1.11.6, 1.12.6, 1.13.4, 1.14.1, 1.15.1, 1.16.1
    1.16.1 is used by default; 1.9.6 has been used successfully.
    autoconf 2.69
    binutils 2.20.1a
    gcc 2.95.3, 3.4.6
    The vendor-supplied gcc (2.95.3) is used by default; gcc 3.4.6 (with autotool and other utility updates) is required for some builds; updated gcc utilities were built with a version suffix (i.e. gcc-3.4.6) so they safely reside alongside the vendor-supplied build tools.
    libtool 2.4.2
    2.4.3-2.4.6 present some build challenges; older versions are viable; 1.5.24 has been used successfully.
    m4 1.4.17
    1.4.18 presents some build challenges; older versions are viable; 1.4.9 has been used successfully.
    make 4.2.1
    Some older versions are viable; 3.82 has been used successfully.
  4. Updated build resources are available:
    libgcrypt 1.8.4
    To build this package, it is necessary to disable tests (as is also the case for libgpg-error); tests are disabled with a patch.
    CAVEAT: This was built as a potential pre-requisite for libssh2; openssl was used in lieu of libgcrypt, so this package was not tested through actual use.
    libgpg-error 1.34
    Older versions are also viable. 1.33 was also built.
    CAVEAT: This was built as a potential pre-requisite for libgcrypt; openssl was used in lieu of libgcrypt, so this package was not tested through actual use.
    libssh2 1.8.0
    To build on this platform, a patched-in typedef is required; 1.2.4 has been used successfully.
    popt 1.13
    Newer versions fail to link due to missing strtoll
    Conceptually, gnulib's strtoll could facilitate building a newer version.
    zlib 1.2.11
  5. Various updated tools are used in lieu of older, vendor-supplied utilities:
    curl 7.63.0
    curl 7.63.0 (i686-pc-sco3.2v5.0.7) libcurl/7.63.0 OpenSSL/1.0.2q zlib/1.2.11 libssh2/1.8.0
    Release-Date: 2018-12-12
    Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
    Features: NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS-proxy
    curl 7.61.0 and up are known to build without intervention.
    curl 7.60.0 builds with a patch submitted to the curl project for inclusion in 7.61.0.
    grep 2.25 (or, 2.7)
    2.26 and above experience configure issues:
    getprogname.c:181:4: #error "getprogname module not ported to this OS"
    openssh
    OpenSSH_7.7p1, OpenSSL 1.0.2o
    openssl 1.0.2q
    Python 2.5.6
    sudo 1.6.9p23
    xz 5.0.8

NOTE: The whole set of tools listed may not all be required, but to help someone replicate these results, but it is hoped that the list facilitates understanding how one might go about reproducing the builds in the event that sequence-dependencies are not documented. The FTP site resources were built on a system that already had a set of upgraded tools not necessarily matching that latest versions in the list above, so even though the packages were built in a particular order, that order will not necessarily reflect the sequences in which the base SCO system was built up (thought it is not that far off being correct).

When installing from the FTP site binary distribution tarballs, the sequence in which the archives were built may influence the end state of the system in that, for example, /usr/local/share/info/dir contains information related to prior builds. If the most recently tarball made is installed last, even if not all tarballs are ultimately deployed, the resulting build environment most closely matches the reference development system itself. That said, as long as the dir files are rebuilt, install order likely has little impact on the system. (In the case of libraries, most software is statically linked to simplify deployment and avoid potential issues with older, vendor-supplied libraries.) This list documents the order that the FTP site packages were built and deployed:

  1. automake 1.8.5 -> 1.16.1 in ascending version order.
  2. m4 1.4.17
  3. autoconf 2.69
  4. libtool 2.4.2
  5. make 4.2.1
  6. gcc 3.4.6
  7. xz 5.0.8
  8. grep 2.25
  9. binutils 2.20.1a
  10. popt 1.13
  11. libgpg-error 1.34
  12. libgcrypt 1.8.4
  13. zlib 1.2.11
  14. openssl 1.0.2q
  15. libssh2 1.8.0
  16. curl 7.63.0
  17. Python 2.5.6
  18. (TBD)

While the order also likely approximates the original package upgrades with respect to SCO-supplied tools, the actual order the development tools were first build was not clearly set down. If one attempts to reproduce this environment by building from source on a base SCO install (described below), it is possible that build-order issues could arise in the event that prerequisites and dependencies required a different order that was not recorded carefully enough. In other words, one may have to experiment a bit with build order if it is difficult to reproduce build results.

Note that gcc-3.4.6 was actually built first, though it is somewhat unclear whether that success depended on building other tool updates. Despite its availability, the SCO-provided gcc was generally used where practical to do so.

To rebuild /usr/local/info/dir and /usr/local/share/info/dir files that may be impacted by installation of these tar files, use a procedure something like this:

for fldr in /usr/local/info /usr/local/share/info; \ do \ if [ -d "${fldr}" ]; \ then \ test -e ${fldr}/dir && rm -f ${fldr}/dir; \ find ${fldr} -type f \ -exec install-info --info-dir=${fldr} {} \; ; \ test -e ${fldr}/dir && chmod 644 ${fldr}/dir; \ echo; \ echo "Rebuilt: '${fldr}/dir'"; \ echo; \ fi; \ done

Installed Packages

The following list helps define what vendor-specific packages are present on the systems used to build free software source packages. The list does not necessarily paint the complete picture, as a number of the software listed below is configured to take precedence over some of the vendor-supplied tools.

custom

The following list was obtained from the Software tab of the "custom" utility.

Extended Shells (ver 1.4.1Ab) FSUpthreads - POSIX 1003.1c threads implementation (ver 3.14) GNU Development Tools (ver 5.0.7Kj) GNU Development Tools (ver 5.0.7g) Java 2 1.3.1_22 Plugin (ver 1.3.1Va) Java 2 1.3.1_22 Runtime Environment (ver 1.3.1Va) Java 2 1.3.1_22 Software Development Kit (ver 1.3.1Va) SCO OpenServer Development System (ver 5.2.0Aa) SCO OpenServer Enterprise System (ver 5.0.7Hw) patchck - package management tool (ver 18051503) OSS672A - OpenServer 5 Network Header File Update (ver 1.0.0) OSS673A - OSR 5.0.7 SCSI Floppy Driver supplement (ver 1.0.0) P535239A - pmd security fix (ver 1.0.0) SCO OpenServer Release 5.0.7 Maintenance Pack 5 (ver 1.0.0Mc)

pkginfo

From a pkginfo point of view, installed packages are:

system OSRcmppkg UDK Compatibility Module for SCO OpenServer utilities grep grep -- Search input for matching patterns system j2jre131 J2SE Runtime Environment 1.3.1 system j2jre142 J2SE Runtime Environment 1.4.2 utilities j2plg131 J2SE 1.3.1 - Java Plug-in system j2pls131 Java 2 Standard Edition, version 1.3.1, Demos & Debug system j2sdk131 Java 2 Standard Edition, version 1.3.1 system libC UnixWare Runtime C++ Library system libc Runtime C Library system libm UnixWare Runtime Math Library system libthread Runtime Thread Library package patchck patchck - package management tool utilities sudo sudo, sudoedit -- execute a command as another user package sysinfo sysinfo - information gathering tool system urwfonts (URW)++ Free X11 Fonts system xorgurw (URW)++ Free X11 Fonts utilities xz XZ Utils -- General purpose data compression utilities The following software packages have been installed: UDK Compatibility Module for SCO OpenServer UDK Compatibility Runtime Set for SCO OpenServer grep -- Search input for matching patterns J2SE Runtime Environment 1.3.1 J2SE Runtime Environment 1.4.2 J2SE 1.3.1 - Java Plug-in Java 2 Standard Edition, version 1.3.1, Demos & Debug Java 2 Standard Edition, version 1.3.1 UnixWare Runtime C++ Library Runtime C Library UnixWare Runtime Math Library Runtime Thread Library patchck - package management tool sudo, sudoedit -- execute a command as another user sysinfo - information gathering tool XZ Utils -- General purpose data compression utilities