Difference between revisions of "OS-SCO-OpenSource-DevelopmentSystem"

From KRayWiki
Jump to navigation Jump to search
m (Update information about libtool and link FTP location.)
m (Add python FTP site link and build sequence.)
 
(27 intermediate revisions by the same user not shown)
Line 22: Line 22:
 
#::: export CFLAGS
 
#::: export CFLAGS
 
#::: PKG_CONFIG_PATH=${HOME}/lib/pkgconfig
 
#::: PKG_CONFIG_PATH=${HOME}/lib/pkgconfig
 +
#:::: -or-
 +
#::: PKG_CONFIG_PATH=${HOME}/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
 
#::: export PKG_CONFIG_PATH
 
#::: export PKG_CONFIG_PATH
 
# Search paths
 
# Search paths
Line 29: Line 31:
 
#:: ${HOME}/share/man:${HOME}/man:/usr/local/share/man:/usr/man:/usr/gnu/man:/usr/X11R6/man
 
#:: ${HOME}/share/man:${HOME}/man:/usr/local/share/man:/usr/man:/usr/gnu/man:/usr/X11R6/man
 
# Tool chain updates
 
# Tool chain updates
#: gcc
 
#:: The vendor-supplied gcc 2.95.3 is used by default, but a locally built gcc-3.4.6 (deployed to the user's directory with autotool and other utility updates) and is required for some builds.  Updated gcc files are named with -3.4.6 suffix.
 
 
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/automake 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
 
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/automake 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.
 
#:: 1.16.1 is used by default; 1.9.6 has been used successfully.
 
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/autoconf autoconf] 2.69
 
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/autoconf autoconf] 2.69
#: binutils 2.20.1a
+
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/binutils binutils] 2.20.1a
#: gettext 0.14.5
+
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/gcc 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.
 
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/libtool libtool] 2.4.2
 
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/libtool 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.
 
#:: 2.4.3-2.4.6 present some build challenges; older versions are viable; 1.5.24 has been used successfully.
 
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/m4 m4] 1.4.17
 
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/m4 m4] 1.4.17
 
#:: 1.4.18 presents some build challenges; older versions are viable; 1.4.9 has been used successfully.
 
#:: 1.4.18 presents some build challenges; older versions are viable; 1.4.9 has been used successfully.
#: make 3.82
+
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/make make] 4.2.1
 +
#:: Some older versions are viable; 3.82 has been used successfully.
 +
# Updated build resources are available:
 +
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/gcrypt/libgcrypt 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.
 +
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/gcrypt/libgpg-error 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.
 +
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/libssh2 libssh2] 1.8.0
 +
#:: To build on this platform, a patched-in typedef is required; 1.2.4 has been used successfully.
 +
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/popt popt] 1.13
 +
#:: Newer versions fail to link due to missing strtoll
 +
#::: Conceptually, gnulib's [https://www.gnu.org/software/gnulib/manual/gnulib.html#strtoll strtoll] could facilitate building a newer version.
 +
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/zlib zlib] 1.2.11
 
# Various updated tools are used in lieu of older, vendor-supplied utilities:
 
# Various updated tools are used in lieu of older, vendor-supplied utilities:
#: curl
+
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/curl curl] 7.63.0
#:: curl 7.61.0 (i686-pc-sco3.2v5.0.7) libcurl/7.61.0 OpenSSL/1.0.2o zlib/1.2.11 libssh2/1.1
+
#:: 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
#: grep 2.7
+
#:: 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.
 +
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/grep 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
 
#:: OpenSSH_7.7p1, OpenSSL 1.0.2o
 
#:: OpenSSH_7.7p1, OpenSSL 1.0.2o
#: openssl 1.0.2o
+
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/openssl openssl] 1.0.2q
#: python 2.5.6
+
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/Python Python] 2.5.6
#: sudo 1.6.9p23
+
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/sudo sudo] 1.6.9p23
 +
#: [ftp://ftp.bulgrien.net/pub/sco/openserver-5.0.7/xz xz] 5.0.8
  
NOTE:  All newer tool and utility versions may not all prove essential.  In the face of difficulty with replicating build results, it is hoped that these disclosures may facilitate understanding and resolution.
+
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 itselfThat 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:
 +
 
 +
# automake 1.8.5 -> 1.16.1 in ascending version order.
 +
# m4 1.4.17
 +
# autoconf 2.69
 +
# libtool 2.4.2
 +
# make 4.2.1
 +
# gcc 3.4.6
 +
# xz 5.0.8
 +
# grep 2.25
 +
# binutils 2.20.1a
 +
# popt 1.13
 +
# libgpg-error 1.34
 +
# libgcrypt 1.8.4
 +
# zlib 1.2.11
 +
# openssl 1.0.2q
 +
# libssh2 1.8.0
 +
# curl 7.63.0
 +
# Python 2.5.6
 +
# (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:
 +
 
 +
<div style="background-color: #EEEEEE; border: dashed; border-width: 1px; font-family: courier; margin: 1em 2em; padding: 1ex; white-space: pre;"><nowiki>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
 +
</nowiki></div>
  
 
</blockquote>
 
</blockquote>
Line 60: Line 125:
  
 
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.
 
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 ==
 
== custom ==
Line 87: Line 151:
  
 
<div style="background-color: #EEEEEE; border: dashed; border-width: 1px; font-family: courier; margin: 1em 2em; padding: 1ex; white-space: pre;"><nowiki>system      OSRcmppkg      UDK Compatibility Module for SCO OpenServer
 
<div style="background-color: #EEEEEE; border: dashed; border-width: 1px; font-family: courier; margin: 1em 2em; padding: 1ex; white-space: pre;"><nowiki>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      j2jre131      J2SE Runtime Environment 1.3.1
 
system      j2jre142      J2SE Runtime Environment 1.4.2
 
system      j2jre142      J2SE Runtime Environment 1.4.2
Line 101: Line 166:
 
system      urwfonts      (URW)++ Free X11 Fonts
 
system      urwfonts      (URW)++ Free X11 Fonts
 
system      xorgurw        (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:
 
         The following software packages have been installed:
Line 106: Line 172:
 
UDK Compatibility Module for SCO OpenServer
 
UDK Compatibility Module for SCO OpenServer
 
UDK Compatibility Runtime Set 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.3.1
 
J2SE Runtime Environment 1.4.2
 
J2SE Runtime Environment 1.4.2
Line 118: Line 185:
 
sudo, sudoedit -- execute a command as another user
 
sudo, sudoedit -- execute a command as another user
 
sysinfo - information gathering tool
 
sysinfo - information gathering tool
 +
XZ Utils -- General purpose data compression utilities
 
</nowiki></div>
 
</nowiki></div>
  

Latest revision as of 22:58, 18 January 2019

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