(Category) Xinuos/ SCO comp.unix.sco.programmer FAQ.
This services tries to provide answers to the Frequently Asked Questions in news:comp.unix.sco.programmer.

Since it is based on traffic in that group, it has a definite slant toward the SCO (Caldera) UNIX/OpenDesktop/OpenServer product families. However coverage is given to the UnixWare 7(OpenUNIX 8)/OpenServer 6 and OpenServer Development Kit (UDK) as well.

It doesn't try to cover the same ground as the existing FAQs such as

  The comp.sco.misc FAQ
        http://aplawrence.com/SCOFAQ/
  The comp.unix.programmer FAQ  
        http://www.meetingtomorrow.com/cms-category/unix-programming  
  Csh Programming Considered Harmful
        http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
  Raw IP Networking FAQ
        http://www.whitefang.com/rin/
  The UnixWare 7/OpenUNIX 8/OpenServer 6 FAQ.
        http://www.zenez.com/cgi-bin/ou8faq/faq
  SCO Community Open Source Software FAQ and Misc.
        http://www.zenez.com/cgi-bin/scooss/faq
The UnixWare FAQ http://www.freebird.org/faq/ The UnixWare 1.x and 2.0 Programmer FAQ http://www.freebird.org/faq/developer.html Caldera Support Knowledge Base http://support.caldera.com/caldera
or many of the other great FAQs available at
        http://www.faqs.org

It is strongly encouraged that the answers in here address SCO (Caldera) UNIX -specific issues.

It is run from the Faq-O-Matic accessable at
http://www.zenez.com/cgi-bin/scoprogfaq/faq
, which means you can create your own entries and amplify or correct and answers that are here.


Notes to contributors:

   You will need to go to the appearance link at the bottom and click on
   it.  You then select show and show all and then accept.  This will allow 
   you to see the options available.  You choose the option you want and 
   a new screen will come up asking for your email address and password. 
   You must have an authenticated email address and password.  If you have
   one just enter it and continue.  If you do not will need to be added, 
   a email address and password is required to add or make changes to this 
   FAQ.  Please help us maintain this FAQ as it is for the entire group.    
   When entering "natural text" where you still want some control over the
   formatting (as this section) note that blank lines must really be blank
   (not tabs, not spaces) to start a new paragraph.

Subcategories:
(Category) SCO Development Environments.
(Category) Hardware related programming
(Category) Packaging for SCO OS's
(Category) Known bugs in SCO Programming Environments.
(Category) Third-party Languages and Development Tools for SCO Platforms
(Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0
(Category) How to Find FAQ
[New Answer in "Xinuos/ SCO comp.unix.sco.programmer FAQ."]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. :
SCO Development Environments.
Insert useful description here. What's in this group? Why does it exist? What doesn't belong here?

Right now, this group tends to be sort of a "catch-all".

It is important to remember that robertl or gerberb are not the FAQ maintainer. YOU are the FAQ maintainer. If you're tired of answering a question or seeing it answered in news:comp.unix.sco.programmer it is your duty as a good net.citizen to plonk the answer into this FAQ.

As you find useful information for programming on SCO OS's, Please add it to this FAQ. THANKS!
robertlipe@usa.net, gerberb@zenez.com

Answers in this category:
(Answer) I have a 3.2v4.2 (or earlier) based system. I don't have a compiler. What are my options?
(Answer) I have a 3.2v4 OS and the SCO 3.2v4 DS. I'm trying to build something and seem to be missing headers and libraries.
(Answer) I have an OpenServer based system. I don't have a compiler. What are my options?
(Answer) I tried to build GCC on OpenServer 5 and it burst into flames.
(Answer) Issues with GDB on OpenServer and UnixWare.
(Answer) How can I build XENIX or DOS binaries on my OpenServer system?
(Answer) Can I generate binaries that run on older sysem on OpenServer?
(Answer) Will ELF binaries compiled on OpenServer run on anything else?
(Answer) Link errors on functions like gethostbyaddr, gethostbyname
(Answer) How do I read or traverse directories within a program?
(Answer) How can I detect null references in my program?
(Answer) Where is alloca()?
(Answer) Purify or other malloc checkers.
(Answer) How can I read kernel data through /dev/kmem in a user program?
(Answer) How to detect SCO product or version at compile time?
(Answer) How to write dialers
(Answer) POSIX Timers
(Answer) How do I play nice with UUCP locking?
(Answer) SCO CC and foo.cc
(Answer) Which C compiler delivers the best performance?
(Answer) POSIX threads or threads for Unixware 7, OpenServer 6 and/or OpenServer 5.0.X and ODT 3.0?
(Answer) Where to get STL for SCO C++?
(Answer) Software packaging and distribution options for OpenServer & earlier releases
(Answer) Issues if you develop on 5.0.4 and run on earlier OpenServer
(Answer) Issues when compiling on OpenServer, executing on 3.2v4 or earlier
(Answer) C++: Using STL in a library and I get link errors from it - Now what?
(Answer) C++: I'm building C++ source with the UDK and I get warnings about 'omission of explicit type is nonstandard ("int" assumed)'
(Answer) Where to get ANSI/ISO C++ standard library for SCO?
(Answer) My existing C++ code doesn't compile under UDK C++!
(Answer) Recommended books on UNIX internals
(Category) Using FSU Pthreads on SCO systems
(Answer) OLD GDS (as on Skunkware) vs. New GCC 2.95.X or GCC 3.0.X
(Answer) Building Shared libraries with GCC or SCO cc
(Answer) Will UnixWare 2.1 or 7.0 run ibcs/OpenServer binaries?
(Answer) Building GCC 2.8.0 on OpenServer results in alloca link failure early during the build.
(Answer) I installed GDS or GCC binary kit and nothing works.
(Answer) When I run gcc on osr5 I get "cc: installation problem, cannot exec `cpp': No such file or directory"
(Answer) Building Perl5.005_03
(Answer) Build DBI with gcc after building perl5.005_03 with SCO cc
(Answer) What's the UDK link order for building Motif programs?
(Answer) Is UDK C++ thread safe?
(Answer) On osr5 when I dlopen a shared library I get "symbol unresolved" errors
(Answer) Often used or need Flags when using compilers
(Answer) I am having trouble building and running an application with gcc, but someone else is not.
(Answer) Assembler overview; differences of "AT&T" vs. "Intel" syntax
(Answer) What popular compilers are available?
(Answer) Gnu pthreads pth-1.2.2 passes all tests on OSR 5.0.5
(Answer) How do I get BerkeleyDB.3.1 to compile on OpenServer 5.0.X and UnixWare 7.X.X?
(Answer) OpenServer 5.0.X, Error as or ld illegal option --b or as: TO FIX: Usage: [-Qyn] [-VTRmn] [-Ydm,dir] [-o outfile] [-t target] file. What is wrong?
(Answer) What patches are needed for OpenSSL 0.9.6b for UnixWare or OpenUNIX 8?
(Answer) How do I fix Msql-Mysql-modules-1.2216 problem with __deregister_frame_info?
(Answer) What is need to compile MySQL on SCO Operating Systems (OS) OpenServer and UnixWare 7.X.x?
(Answer) Resources on the SCO web site.
(Answer) How do I determine which development System is best for me to use?
(Answer) How do I determine what dynamic libraries an application depends upon?
(Answer) How do I do Java programming?
(Answer) How do I do Java native code (JNI) programming?
(Answer) Why are there two threads APIs on UnixWare? Which should I use?
(Answer) How do I do XML programming?
(Answer) How do I do Web Services (SOAP) programming?
(Answer) What J2EE implementations or Java app servers are available?
(Answer) About C language and Oracle C API
[New Answer in "SCO Development Environments."]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
I have a 3.2v4.2 (or earlier) based system. I don't have a compiler. What are my options?
If you really want to be able to compile anything, buy the SCO Development system. That version (and earlier) of SCO UNIX did not come with the needed libraries or headers to allow use of third party compilers. While some people on the net have put together packages to allow you to compile minimal programs, there are still lots of problems in the area of networking and X that remain unresolved. Before you buy the compilers for this old version of the OS, you should probably consider the upgrade to OpenServer.
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
I have a 3.2v4 OS and the SCO 3.2v4 DS. I'm trying to build something and seem to be missing headers and libraries.
In that version of the OS, the TCP/IP and NFS development systems were not included in the DS, but were bundled as separate packages. You have to either get the "TCP/IP Development Kit" and the "NFS Develoment" kit or consider the upgrade paths mentioned above. These will give you, for example, libsocket.
robertlipe@usa.net
There were always bundled DS's (ODT DS) corresponding to the same-time-release Unix, TCP, NFS, etc. DS's. Unfortunately, packaging was such that if you had standalone Unix + TCP, you needed standalone Unix DS, TCP DS. Couldn't use Unix + ODT DS, nor ODT + Unix DS (though the latter might actually have worked, I forget). So if you're trying to buy a DS now, you need to be aware of the many opportunities to buy the wrong thing.
From Bela Lubkin, minor editing by robertl
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
I have an OpenServer based system. I don't have a compiler. What are my options?
If you're using Free OpenServer and comply with the licensing requirements, install the Free OpenServer compiler from the same CD. You cannot install the Free OpenServer compiler on a commercially licensed OpenServer.

SCO's OpenServer Development system is available as a commercially supported product and includes two compilers, debuggers, and tools such as the custom distribution mastering toolkit. For more information, see http://www.sco.com/developer/products.htm. The SCO part number for SCO OpenServer Development System (media and license) is SA105-UX74-5.0.

OpenServer includes all the necessary libraries, headers, man pages, and the linker to allow the user of third party develoment systems. One such system is the GNU Development System that's available on the Skunkware CD or the newer version available on Robert Lipe's home page and mirrored on SCO's Web site. This kit includes make, the assemblers, the debuggers, and everything you need for a functional development environment.
This kit is available at ftp://ftp.zenez.com/pub/zenez/gcc and has documentation at ftp://ftp.zenez.com/pub/zenez/gcc/sco_ds.html and a little FAQ of its own (that should ultimately be smooshed into this one) at ftp://ftp.zenez.com/pub/zenez/gcc/gds_faq.html .

robertlipe@usa.net

See also http://www.sco.com/developers/products/devkits.html.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
I tried to build GCC on OpenServer 5 and it burst into flames.
It is time to start using newer version of gcc. Take a look at ftp://ftp2.sco.com/pub/


This is left for historical purposes.

The first FSF release of GCC to include the necessary support to host or target OpenServer was 2.8.0. EGCS has supported OpenServer 5 since the epoch. Anything before this requires a patched version of GCC.
Robert Lipe did the port of the GNU tools that appears on the Skunkware '96 CD and on ftp://ftp2.sco.com/pub/Skunk96 or the old site ftp://ftp.sco.com . It is not a simple matter of 'configure ; make install'. It's a complicated product to build and unless you're planning to slog around in compiler internals, you really want to use the available binary kits.
It is time that you start using a newer gcc. Please see ftp://ftp2.sco.com/pub/skunkware . This is also mirrored on ftp://ftp.sco.com/skunkware . It is required that you install the necessary libraries and headers as described in the documention for that package that is in the "sco_ds.html" file at those URLs.

The major contributors of the OpenServer code in GCC (Kean Johnston and Robert Lipe) are active members of the EGCS development team. EGCS is an enhanced GNU compiler system. EGCS contains complete support for OpenServer 5 in both COFF and ELF modes and has received much attention and testing. See http://gcc.gnu.org for more details.

GCC does include support for 3.2v4.2 and earlier SCO releases, though it requires the SCO development system be installed.
EGCS also includes support for UnixWare 7 and for UDK.
robertlipe@usa.net, gerberb@zenez.com

GCC 2.8.0, released in 01/98, almost has functioning support for the OpenServer family of products. There is another entry in this FAQ that contains the necessary directions to circumvent the problem.
robertlipe@usa.net
In recent years, GCC 2.95.3 has packaged and supported for OSR5 (and UW7 as well). No GCC 3.x is as of yet provided by SCO.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Issues with GDB on OpenServer and UnixWare.
OpenServer 5 support in GDB was sneaked into GDB 4.16 at the last minute and suffered from some problems. You must run


configure --target=i486-unknown-sco3.2v5.0.0elf'

to get a gdb that recognizes both COFF and ELF.

Generally, you'll be better off using a GDB from Skunkware or building a newer version. 4.17 and 4.18 seem to work well.
robertlipe@usa.net

GDB 4.17 works well on OpenServer.

robertlipe@usa.net
GDB 4.18 seems to work OK for OpenServer. For UnixWare 7, you must either configure --target=i686-UnixWare7-sysv42mp or apply a minor patch to configure.tgt.
robertlipe@usa.net
If you are using gdb (or the native debugger) on Openserver and you get warnings of the form "no debugging symbols" on an ELF executable even though you are sure you gave specified -g on the object and executable build lines make sure that *all* the objects ( and libraries) going into the executable are also ELF format.
The devsys will make ELF executables if any of the incoming objects are ELF. Any COFF files are converted to ELF format in passing but in the process symbol and debug information is removed from the resulting executable.
All COFF objects -> COFF executable with symbol info All ELF objects -> ELF executable with symbol info Mixed ELF/COFF objects -> ELF executable - symbol info stripped.
hops@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How can I build XENIX or DOS binaries on my OpenServer system?
By purchasing the "Xenix/DOS Cross Development Supplement". The SCO part number for the media and license is SA575-UX72-5.0.
This gives you the Microsoft based tools that comprised the earlier development systems repackaged to work on OpenServer.
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Can I generate binaries that run on older sysem on OpenServer?
Yes, if you constrain yourself to use only features that existed in the older versions. For example, you can't use mmap(S) (A feature new in OpenServer) and expect it to work on older versions. You should also read the man page for cc(CP) for related issues.

There are some bugs in the handling of POSIX terminal handling that affect this ability. #FIXME# more details.
robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Will ELF binaries compiled on OpenServer run on anything else?
If compiled with the "UnixWare/OpenServer Development Kit" (UDK), binaries can run on any current SCO operating system. These tools can be hosted on OpenServer, UnixWare 2, or UnixWare 7. Binaries compiled with those tools that use no non-conforming facilities can run on any of these systems.
Linux and the BSD familes can run many OpenServer and UnixWare binaries via their ibcs2 support.
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Link errors on functions like gethostbyaddr, gethostbyname
For the unresolved functions, do a 'man functionname'. For example, a 'man gethostbyaddr' shows
  gethostbyname(SLIB)
  *******************
____________________________________________________________________________ gethostbyname, gethostbyaddr, sethostent, endhostent, herror, hstrerror -- get network host entry
gethostbyname- get network host entry by name
gethostbyaddr- get network host entry by address
[ ... ]
  Syntax
  ======
cc . . . -lsocket
#include <netdb.h>


This man page tells us that we must #include <netdb.h> before using these functions and that we must be sure that our cc line links against the socket library by having a '-lsocket' at the end.

This same technique should be applied to any link error that you feel the system really does know about but you just don't know where it is.
robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How do I read or traverse directories within a program?
ftw(S) will traverse and recurse a path, calling a function of your creation on each object found.

If you just want to open a directory and read it, you must use the functions described in directory(S) such as opendir(S) and readdir(S). In OpenServer, you can no longer read directories like a file.
robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How can I detect null references in my program?
On OpenServer, there are two kernel global variables of interest in /etc/conf/pack.d/kernel/space.c that may be set.

If notice_null_refs is non-zero, a kernel message will be generated when a program attempts to reference the page with a virtual address of zero.

If signal_null_refs is non-zero, the kernel will detect zero page references and deliver a signal to the process, killing it and likely leaving a core dump for analysis.

TLS594, available at ftp://ftp.sco.com/TLS allows finer control of these actions.




robertlipe@usa.net

On UnixWare 7, the 'nullptr' command can enable, disable, or trap null pointer references on a per-uid basis. On UW7 before 7.1.0, many system utilities (vi, more, pg) become unstable if nullptr disable is ineffect.
robertlipe@usa.net
With UW7.1, the MALLOC_CHECKS environment variable can be set to cause page zero to be unreadable. See malloc(3C). This works on a per-process basis. Note that since page zero must first be read to turn off access, when "nullptr disable" has been set, this MALLOC_CHECKS setting will cause a process to die when it first gets into malloc() code.
dfp@sco.com
Beginning with UnixWare 7.1.3 see also memtool(1) for dealing with null pointers and related memory bug checks.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Where is alloca()?
Add -lPW to your link line to get alloca()
robertlipe@usa.net
Note that for UDK C++, alloca() is not supported.

(This is because it is incompatible with an efficient exception handling implementation. Note that better alternatives to alloca() exist in C++, such as the vector class in the draft standard library or the Block class in UDK Standard Components.)
jls@sco.com

If you really need an alloca() to build something and are willing to
live with the above and can't find one anywhere else 
many of the gnu software sources include one.

bash-1.14.6/lib/malloc/alloca.c
bash-1.14.6/lib/malloclib/alloca.c
bash-2.0/lib/malloc/alloca.c 
diff-2.6/alloca.c
diffutils-2.7/alloca.c 
fileutils-3.16/lib/alloca.o
find-3.6/lib/alloca.c
findutils-4.1/lib/alloca.c
gawk/gawk-3.0.3/alloca.c
make-3.75/alloca
readline/alloca.c 
sed-2.05/alloca.c
tar-1.12/lib/alloca.c
hops@sco.com
Heres an asm version (from lxrun) 
alloca.s
        .text
        .globl  alloca
        .align  4
alloca:
        popl    %edx            / return address
        popl    %eax            / nbytes
        movl    %esp,%ecx
        subl    %eax,%esp       / calculate new esp
        andl    $-4,%esp        / make sure stack is 4 byte aligned
        movl    %esp,%eax       / return pointer to new memory in eax
        pushl   8(%ecx)         / copy saved registers 
        pushl   4(%ecx)
        pushl   0(%ecx)
        pushl   %ecx            / we need to push a fake argument here
                                / since alloca's caller will attempt to
                                / clean up the stack

        jmp     *%edx           / return

It'll build on Osr5 and UW7 with a simple Makefile rule referring to 
alloca.o
hops@sco.com
In the UDK and in UW7, there is an intrinsic version of alloca() built into the compiler. It is enabled via -Kalloca.
dfp@sco.com
The UDK C++ compiler does now support -Kalloca as well. I think this change was made as of UW 7.1.0 or thereabouts.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Purify or other malloc checkers.
On Jan 19, 1996, Larry Phelps said:

I know of two such products for SCO Unix these:

    Insure++:
        Parasoft Corporation
        2031 South Myrtle Avenue
        Monrovia, CA 91016
        Phone: (818) 305-0041
        Fax:   (818) 305-9048
        Email: insure@parasoft.com
        HTTP:  http://www.parasoft.com

    Sentinel:
        AIB Software Corporation
        1145 Herndon Parkway
        Herndon, Virginia 22070
        Phone: (703) 787-7700
        Fax:   (703) 787-7720
        Email: info@aib.com 
        HTTP:  http://www.aib.com
robertlipe@usa.net
checkergcc exists for linux. Could probably be ported to SCO systems.
robertlipe@usa.net
For C++, the UnixWare 2.x and UDK Standard Components has a memory checking tool called 'fs'. It's not as powerful or transparent as commercial tools such as Purify, but it's better than nothing.


jls@sco.com

On UnixWare 7 and on UDK, the standard malloc library has instrumentation that can be turned on at runtime. If you export MALLOC_CHECKS, you can control the tests that are performed on the heap.
UnixWare 7.1.0 has even more instrumentation and can deliver a SIGSEGV (conveniently trapping you into a debugger) at the bus cycle that delivers the bounds exception.
robertlipe@usa.net
Electric Fence from Bruce Parens works just fine on OpenServer. I don't really know that it offers anything above the MALLOC_CHECKS tests in the system libraries.
robertlipe@usa.net
dmalloc (www.dmalloc.com) works fine with OSR5.
john@kuwait.net
Beginning with UnixWare 7.1.3 there is the "memtool" tool, which does a lot of the memory error detection work that commercial tools like Purify do. See http://uw713doc.sco.com/en/man/html.1/memtool.1.html or the memtool(1) man page on your system.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How can I read kernel data through /dev/kmem in a user program?
This can be a powerful technique, but it is also horribly non-portable. Kernel data structures can and do change between releases, so your program may break.

The basic idea is to call nlist(S) with the table of kernel symbols you wish to examine. nlist will then fill in the addresses of those symbols. You can then open /dev/kmem, use the addresses to lseek(), then issue a read(). On systems that have mmap() available, this is a good use for it.

You can look at the sources of programs like u386mon for examples of how to do this.
An OpenServer-specific extension is the tab(HW) driver. See that man page and string(HW), and look in /dev/table and /dev/string to see how it works. This only works for a small fixed subset of kernel data.

robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How to detect SCO product or version at compile time?
Ordinarily, this is a bad idea. Rather than basing your code on "am I on OpenServer or not?", you're typically more interested in, say, "do I have mmap(S) or not?" Programs like GNU autoconf provide a powerful way to test for features.

The SCO provided compilers and the GCC's that are truly OpenServer-aware all provide a manifest "_SCO_DS" that is set to one when targeting SCO OpenServer.



robertlipe@usa.net

That having been said heres some code that attempts to detect the various SCO
platforms upto and including Gemini - It will probably report UDK on 
Osr5 and UW as Gemini I.

#include <stdio.h>

main()
{
#if defined(_SCO_DS)
   printf("OpenServer\n");
#elif defined(__UNIXWARE__)
   printf("UnixWare gcc\n");
#elif defined(__USLC__)
#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ == 199409
   printf("Gemini I cc\n");
#else
   printf("UnixWare cc\n");
#endif
#elif defined(M_UNIX)
   printf("ODT 3 or earlier\n");
#else
   printf("Other platform\n");
#endif
}   
hops@sco.com
Heres a slight update that understands UW7 CC

#include <stdio.h>
   
main()
{
#if defined(_SCO_DS)
   printf("OpenServer\n");
#elif defined(__UNIXWARE__)
   printf("UnixWare gcc\n");
#elif defined(__USLC__)
# if defined( __STDC_VERSION__ ) && __STDC_VERSION__ == 199409
   printf("Gemini I cc (UW7 and UDK)\n");
# else
#    if defined(__SCO_VERSION__)
   printf("Gemini I CC (UW7 and UDK)\n");
#    else
   printf("UnixWare cc\n");
#    endif  /* SCO_VERSION */
# endif     /* STDC_VERSION */
#elif defined(M_UNIX)
   printf("ODT 3 or earlier\n");
#else
   printf("Other platform\n");
#endif


/*  uw7 ccs */
#if defined(__SCO_VERSION__)
   printf("__SCO_VERSION__ is %ld\n", __SCO_VERSION__);
#endif

}  
hops@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How to write dialers
look at ecu, XC
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
POSIX Timers
mkdev suds.

They are buggy. Many TAs available on this subject.
robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How do I play nice with UUCP locking?
/usr/spool/uucp/LCK.ttyxx, suid uucp, look at xc, ecu, others. Include url.
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
SCO CC and foo.cc
Some earlier SCO C++ compilers do not accept some commonly used C++ source
file suffixes, such as .cc.  In this case the solution is to give the option

        CC +.cc ...

Note that more recent OpenServer CC commands do accept .cc and other common
suffixes, as do the UnixWare 2.x and UDK CC commands.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Which C compiler delivers the best performance?
There are at least four popular compilers on SCO OpenServer and two for UnixWare.

1) /bin/cc is based on the USL cc, not the Microsoft cc that shipped with earlier SCO products. This is actually a respectable compiler. It generates very good code, has a reliable optimizer, and is pretty quick and solid. You can control optimizations with the -O flags and can fine tune the optimizations with the -K options.

2) icc ships with the SCO DS and is based on the Intel Reference Compiler. This compiler can generate amazing code and very good warnings and diagnostics about your source. It can generate Pentium Pro specific optimizations. The price you pay for all this optimization is high in terms of compile time. It can be slow to build your program.

3) gcc is part of the GNU ds. It generates code that is comparable to the quality of the /bin/cc output. The warnings and diagnostics are good. Optimizations can be controlled via the -O, -m, and -f flags.

4) UDK compiler. See the below for more information on the developement kits available for SCO OS's.

http://www.sco.com/developers/products/devkits.html

All three compilers are ANSI C by default, with options to fall back to K&R.

If you're looking for a "magic bullet" from the compiler to speed up your program by an order of magnitude, just by using a different one or by wiggling some compiler switches, don't. Only after you've highly tuned your algorithms and implementation should you even worry about compiler performance. Even then, you should be prepared to stare at the compiler output and run extensive tests before making an informed decision.




robertlipe@usa.net, gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
POSIX threads or threads for Unixware 7, OpenServer 6 and/or OpenServer 5.0.X and ODT 3.0?
Unixware has UI (UNIX International) threads. UnixWare 7.0.1 and higher support POSIX (P1003.1c) threads.

OpenServer 6 has UI (UNIX International) threads and supports POSIX (P1003.1c) threads.

OpenServer 5.0.X has DCE threads which can be purchased in the US at 800-SCO-UNIX or any authorized SCO UNIX reseller/dealer. This is very expensive.

There are two possible GPL treads options available. Both were originally submitted by ARTURO MONTES <mitosys@colomsat.net.co> Thanks!! There is a pthreads package on Skunkware 97. Custom installable media images for the OpenServer pthreads Skunkware package are at :

http://www.sco.com/skunkware/osr5/libraries/pthreads/VOLS.tar

This is proven's 1.60 Beta 5 Posix threads implementation ported to SCO OpenServer 5.0.X!

The second is FSU threads.

http://moss.csc.ncsu.edu/~mueller/pthreads/

A modified to work with OpenServer is available at

ftp://www.zenez.com/pub/zenez/prgms/threads.tar.gz

You need to use GDS in Skunkware 95 (95q4c). This is necessary because GNU GCC 2.7.2 in Skunkware 97 hasn't GNU as.
Currently, there is an alpha version of MySQL working with FSU threads. Tests are currently ongoing.

FSU Threads and Open Server 3.0 or Open Desktop 3.0
FSU pthreads can be compiled with SCO 4.2!! Use a good port of GCC 2.5.X
gerberb@zenez.com, robertlipe@usa.net

OpenServer 5.0.7 mp3/up3/supp3 has a UDK libthread.so.1 threads library. This can be used to write threaded applications using the UDK development tools. It contains both POSIX and UI API interfaces.

This is still a user-space threads library (because OSR5 has no kernel threads); it is a version of the UnixWare 7 libthread, modified to operate under the assumption that the number of available LWPs is always one (which is the case with no kernel threads).

Thus, you will see no performance benefit from using this threads library on MP systems. However, it does have better asynch I/O and libc synchronization than other OSR5 third-party user-space libraries (FSU, Pth) and so is recommended for use in UDK-based applications. The Java 1.4.2 implementation on OSR5 mp3/up3/supp3 also uses this new UDK libthread.
jls@sco.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Where to get STL for SCO C++?
Here's the modern answer. Beginning with the UDK 7.1.1b release in Nov 2000, a full and high-quality implementation the entire C++ Standard Library, including all of STL, has been available as part of the SCO UDK product for both UnixWare 7 and OpenServer 5. There is no need to look anywhere else for STL.

The sections that follow are for historical interest only, or perhaps for people on very old versions of OSR5 or UW7.
jls@sco.com

Here's the short answer. STL is not part of the UDK yet, but we're working on it. In the meantime, use the good freeware STL from Silicon Graphics. A packaged version of SGI STL 3.11, adapted for use with the UDK C++ compiler, is on Skunkware at http://www.sco.com/skunkware/devtools/index.htm#stl . See the README.SCO inside there for a description of how to use it.
jls@sco.com
Here's the long answer.

There are four commercial sources for the Standard Template Library: 
     Modena,      ( modena@netcom.com )
     Rogue Wave   ( http://www.roguewave.com ),
     Dinkumware   ( http://www.dinkumware.com )
 and 
     ObjectSpace  (http://www.objectspace.com/toolkits/ ).

These vendors generally sell the STL either on an OEM basis to compiler vendors,
or as part of large site licenses. In other words, it's hard to get a single
user license, especially for SCO platforms. 

There is also an up-to-date, public domain version of STL: 

     Silicon Graphics  ( http://www.sgi.com/Technology/STL )

This is the best bet for using on SCO platforms. We have a packaged version
of it for UDK C++; see the "short answer" above.

Note: As of July 1997, the ObjectSpace STL is now also available free for
commercial use. However the ObjectSpace download page only offers it in packaged
form and for only a few platforms. The Solaris 2.5 and Windows 95 versions have
been downloaded and unpacked but they are tailored for the compilers on those
platforms and efforts to build them show that it would be a lot of work to get
them to compile with the UDK C++ compiler (partly because every C++ compiler
supports different new features right now, and partly because the
auto-configuration tool they use is not included in these distributions). 
I can't unpack their MIPS/Irix version, which is the only one compiled 
against an EDG-based compiler, because their install tool is an executable 
program.  ObjectSpace has told me in e-mail that they have no plans to 
distribute a source code only, configuration-tool-included version of their 
STL, so I can't be too hopeful of making use of it on SCO platforms

In addition, versions 2.6.2 and later of libg++ (the GNU C++ library) include at
least a part of the STL that works with GNU C++. However as of egcs libg++ 
has been trashed and has been replaced by the SGI version.

There is also the original public domain version from Hewlett-Packard that is
still available, but it is inferior to the current one from SGI, from which it
is based. (Alex Stepanov, the inventor of STL, now works for SGI.)



OpenServer and UnixWare 2.x C++

The native OpenServer 5.0 C++ compiler is Cfront-based, and thus will have an
impossible time compiling most STLs. At one time, ObjectSpace said that their
STL had been specially modified to compile with Cfront, in which case OSR5 C++
should work. Don't know if this is still the case. 

We have not recently tested any of the STLs against the native UnixWare 2.0 or 2.1 C++
compilers. At one time they all could build, but the STL code may now be assuming more
advanced compiler features. 

In both cases, you're *much* better off moving to the UDK, because it supports many more of
the advanced template features that STL relies upon and takes advantage of. 

robertlipe@usa.net, hops@sco.com, jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Software packaging and distribution options for OpenServer & earlier releases
My advice, at this point, is "just say no" to CDMT. The CDMT tools generate a format known as SSO's that can only be read by OpenServer that is an evolutionary dead end. They're not going to be supported in UnixWare 7, and they're not supported by the OS versions prior to OpenServer. Walk away while you can. I would be remiss to not point out the widespread public opinion that SSO's, custom+, cdmt, and the rest of this way of life are, uh, not going to win any popularity contests.

There is a TLS on ftp://ftp.sco.com/TLS/tls602.ltr that contains some more information on how to make SSOs if you insist.

There is a TLS on ftp://ftp.sco.com/TLS/tls036.ltr that contains the Software Mastering Toolkit (SMT) that lets you build "classic custom" volumes that will install on any SCO Unix release.



robertlipe@usa.net, steved@ussinc.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Issues if you develop on 5.0.4 and run on earlier OpenServer
Bela Lubkin, in the newsgroup, wrote:

The OpenServer 5.0.4 development system adds a few function calls which were absent in 5.0.0 and 5.0.2. Most of these were actually intended to be in 5.0.0, but weren't ready in time. Kernel support for all of them is already present in 5.0.0, so programs compiled in 5.0.4 would work on 5.0.0, except that there are potential shared library issues.

Of the new functions in 5.0.4, only four of them represent new entry points in the shared libraries. These are fattach(), fdetach(), makecontext(), and mkstemp(). As long as you don't call any of those, I can think of no reason that your programs compiled on 5.0.4 would not work on 5.0.0/5.0.2.

If you *do* call any of those functions, your programs will only work if you avoid calling the dynamic shared object versions of the functions. There are three ways to do so:


1. Compile COFF binaries (the default compilation mode). Advantages:
if you stick to the right subset of system calls, COFF binaries
will work on SCO Unix 3.2v4.2 and earlier; also, statically links
in functions which will work on 5.0.0/5.0.2 kernels, but which are
not in the shared objects on those systems. Disadvantage: binaries
much larger.


2. Compile static ELF binaries (`cc -belf -dn`). Advantage:
statically links in functions which will work on 5.0.0/5.0.2
kernels, but which are not in the shared objects on those systems.
Disadvantage: binaries much larger.


3. Compile dynamic ELF binaries (`cc -belf`), but statically link in
those functions. Technique:


$ mkdir /tmp/newlib
$ cd /tmp/newlib
$ ar xv /usr/lib/libc.a fattach.o fdetach.o makectxt.o mktemp.o
$ ar rv libstatic-stuff.a *.o
$ mv libstatic-stuff.a /local/lib
...
$ cc -belf foo.o bar.o -L/local/lib -lstatic-stuff -o foo


Advantage: preserves binary size advantage (and cross-OS-
compatibility) of dynamic ELF, while avoiding symbols that won't
resolve on 5.0.0/5.0.2. Disadvantage: more effort.

>Bela<


robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Issues when compiling on OpenServer, executing on 3.2v4 or earlier
This contribution is a conversation between Samuel Liddicott
sam@campbellsci.co.uk and Bela Lubkin belal@sco.com

 Sam>> Am I right in understaning from your message that a program might
 Sam>> conceivably compile to COFF and fail to run on 3.2v4.2? Even if its all
 Sam>> staticly linked (however you do it [I'm a delphi man]). If so then 
 Sam>> I need lot of thought.

 Bela> Your understanding is correct.

 Bela> System calls are made by calling a generic kernel entry point with a
 Bela> system call number in a register.  Newer system call numbers will be
 Bela> rejected by the old kernel.  There is no compile-time protection against
 Bela> this.  If a program calls one of the newer system call numbers on an
 Bela> older kernel, it will get a signal (SIGSYS) and die, unless it's
 Bela> arranged to trap or ignore that signal.

 Bela> [about readv/writev]: the main place it's likely to matter is in network
 Bela> programs.  writev, in particular, helps ensure that data is sent as a
 Bela> single network packet instead of many smaller ones.  Could be a serious
 Bela> performance issue if the program thinks it's using a real writev and
 Bela> tries to take advantage of it.  A well-written program will probably
 Bela> have something like:

 Bela>   #ifdef HAVE_WRITEV
 Bela>   ... code that uses writev
 Bela>   #else
 Bela>   ... code that constructs a buffer and calls write() once
 Bela>   #endif

 Bela> So it would be better if they didn't find writev() at all.  But other
 Bela> programs may not have such ifdefs, or they may be using writev just for
 Bela> convenience and wouldn't be harmed by a multi-write implementation.
 Sam>> As far as fattach or fdir go, if a program "CAN" be compiled for 3.2v4.2
 is
 Sam>> it then presumed that there are compiled time #def's to stop it trying t
o
 Sam>> use those functions? Which I just set (perhaps by hand if a configure
 Sam>> script got it wrong?)

 Bela> No, that's the whole point of this discussion.  You can freely call
 Bela> these things and nothing will stop you, except the program will fall on
 Bela> its face on 3.2v4.2.

 Sam>> Otherwise, presumably I just wait for the errors to come up at compile
 Sam>> time, and see why, look for any compile time flags to choose the right
 Sam>> version, if not plug in my own and send in a patch?
 Sam>> Finally, have I missed any gotchas, in which it might seem to work, but
 Sam>> fail? [Presume I have done what you said and compiled a library that has
n't
 Sam>> IDEA: What can I do with the "best no-devsys devsys" as found in
 Sam>> kuso.shef.ac.uk? Maybe IT has the right libraries, which might WORK and
 Sam>> STOP a configure script detecting these dodgy calls?

 Bela> The SCO XENIX/DOS Cross Development Supplement will
 Bela> work in that respect.  It provides a compilation environment which uses
 Bela> its own libraries, which have none of the new functions.  Essentially
 Bela> the ODT 3.0 libraries, though perhaps some bugs were fixed.

 Bela> Meanwhile, as I said, here is a script which implements some form of
 Bela> back-portability ftp://ftp.armory.com/~filbo/makelibv42.
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
C++: Using STL in a library and I get link errors from it - Now what?
I'm building a static library and the link errors seem to reference things 
from the STL that were used in the library - what gives ?

One possibility is that the necessary instantiations weren't done when
you formed your library.  Try using the "CC -Tprelink_objects" command on
the .o's that go into the library, before doing the "ar" step that forms
its archive.  Like this:

        CC -c a.C b.C c.C
        CC -Tprelink_objects a.o b.o c.o
        ar rv libfoo.a a.o b.o c.o

I can't be sure this will solve your problem but it's the first thing
to try.

Diagnostics coming out of STL are legendary for being hard to understand ...
   
hops@sco.com
The above CC -Tprelink_objects step is generally necessary when preparing an archive that contains internal template instantiations.
There is a known problem in doing this. If multiple archives are being linked against, it is quite possible that you will get multiple definition errors coming from common template instantiations occurring in multiple .o files. We are currently working on a solution for this problem in our next release. For work-arounds, you either have to restructure your source files, or build with CC -Tlocal (which will blow up object sizes significantly).
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
C++: I'm building C++ source with the UDK and I get warnings about 'omission of explicit type is nonstandard ("int" assumed)'
The error is that "implicit int" is no longer allowed in C++.

Assuming you don't want to fix up the source, but just want to get rid
of the diagnostics, here is a technique to suppress the warning messages :

        1) Get the compiler to tell you what the error numbers are when 
                diagnostics are displayed using 
                -Wf,--display_error_number

                        CC -c -Wf,--display_error_number whatever.C

        2) Modify the build with switches to suppress that diagnostic.                          
-Wf,--diag_suppress -Wf,838

                        CC -c -Wf,--diag_suppress -Wf,838 -c whatever.C

e.g. 
CC -c -Wf,--display_error_number w.C
"w.C", line 1: warning #838-D: omission of explicit type is nonstandard ("int"
assumed)
CC -c -Wf,--diag_suppress -Wf,838 -c w.C
hops@sco.com
As of the UW 7.1 UDK, this general technique for selectively suppressing warning messages is documented in the CC man page.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Where to get ANSI/ISO C++ standard library for SCO?
As of the UDK 7.1.1b release in Nov 2000, a full high-quality threads-safe supported version of the entire ANSI/ISO C++ Standard Library is available as part of the UDK development kit for UnixWare 7 and OpenServer 5. There is no need to look anywhere else.

The entries below are for historical interest only or possibly for people using really old versions of UW7 or OSR5.
jls@sco.com

The UDK C++ compiler does not yet contain a full implementation of
the draft ANSI/ISO C++ Standard library.  In addition to the
Standard Template Library (STL), which is covered by a separate
FAQ entry, the new standard library includes:

   * language support and diagnostic classes
   * new, templatized versions of the iostreams and complex classes that
     were in the old de facto AT&T standard library
   * a number of new facilities, such as strings, locales, and valarrays
     (for Fortran-wannabe numeric computation).

The current SCO UDK C++ fully implements the language support and diagnostic
classes (clauses 18 and 19 of the draft standard).

The current SCO UDK C++ does not implement the new standard versions of the
iostreams and complex classes, but rather still contains the old
non-templatized versions, slightly updated for new types such as bool.

The current SCO UDK C++ does not implement any of the new facilities.

Three commercial STL vendors -- Modena, Rogue Wave, and Dinkumware -- also
market full standard library implementations, but on an OEM or large site
basis, that is generally not available for SCO platforms.

There are free implementations of the following parts of the library.
(If these links get out of date, try consulting the comp.std.c++ FAQ at
http://reality.sgi.com/employees/austern_mti/std-c++/faq.html#C6
for where to get them from.)

string

A partial implementation of the string class is available that Modena wrote;
it is at http://aw.com/cp/musser-saini-source.html .

The file bstring.h in it needs one change to compile under UDK C++: change
the #ifndef __BOOL_DEFINED on line 36 to

     #ifndef _BOOL

The ObjectSpace free STL distribution also includes a string implementation,
but building it has the same problems as building their STL (see above).

valarray

A partial implementation of valarray is available that Daveed Vandevoorde
wrote; it is at ftp://ftp.cs.rpi.edu/pub/vandevod/Valarray . The Rel2_0Beta2
version there needs one change to compile with the UDK C++ compiler: add the
lines

     #ifdef __USLC__         /* SCO UDK C++ */
     #   define COMPILER_RECOGNIZED
     #endif

at line 43 of file valplat.h.

jls@sco.com
EGCS, the Enhanced GNU Compilation System includes the SGI implementation of STL and the necessary modifications to make it work with EGCS.
EGCS is available at http://egcs.cygnus.com.
robertlipe@usa.net
The SGI STL 3.11 is now available for UDK C++ platforms in packaged form on Skunkware, with modifications made that are necessary to compile under UDK C++.
In addition to STL, this contains implementations of the string, bitset, and auto_ptr classes from the ANSI/ISO C++ standard library.
To get it, go to http://www.sco.com/skunkware/devtools/index.html#stl .
  

jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
My existing C++ code doesn't compile under UDK C++!
There are a number of source and binary compatibility issues that arise when moving applications built with SCO OpenServer C++ or SCO UnixWare 2.x C++ to the new SCO UDK C++ compiler.

These are discussed in a white paper published in SCO CoreDump Volume 6, located at http://www.sco.com/developer/core6/c++.htm .


jls@sco.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Recommended books on UNIX internals
Most text from Bela Lubkin (belal@sco.com)

There are many excellent Unix internals books. Look for:

John Lions, " Lions' Commentary on Unix 6th Edition with Source Code", Peer to Peer Communications, 1996 ISBN 1-57398-013-7. This title was long-suppressed by AT&T until SCO bought the rights to System V and therefore became the copyright owner of Sixth Edition as well, and allowed it to be published. More info is at http://www.peer-to-peer.com/catalog/opsrc/lions.html.

Maurice J. Bach, "The Design of the UNIX Operating System", Prentice Hall 1986. ISBN 0-13-201799-7. Based on SVR3.0, but still sets the standards for the books on SVR4.0 and BSD. Often used as a textbook.

Steve Pate, "Unix Internals: a Practical Approach" Covers SCO OpenServer Release 5 internals.

Berny Goodheart & James Cox, "The Magic Garden Explained: The internals of UNIX SystemV Release 4.0", Prentice Hall, 1994 ISBN 0-13-098138-9. Builds on the Bach book but contains information on vnodes, unified VM system, and other things new to SVR4.


Leffler, McKusick, Karels, Quarterman, "The Design and Implementation of the 4.3BSD UNIX Operating System", Addison Wesley, 1990, ISBN 0-201-06196-1. This is the famed "Devil Book", named after the cute little demon on the cover named "Chuck". It is to 4.3BSD what Bach is to SVR3.


McKusick, Bostic, Karels, Quarterman, "The Design and Implementation of the 4.4BSD Operating System", Addison Wesley, 1996, ISBN 0-201-54979-4. An updated version of the above. Reflects innovations in 4.4BSD.


Uresh Vahalia, "UNIX Internals: The New Frontiers", Prentice Hall, 1996, ISBN 0-13-101908-2. Covers many of the new strains of UNIX that are unique including SVR4.2, Solaris, Digital UNIX, 4.4BSD, and Mach. Topics include kernel multithreading, multiprocessor and realtime systems, journaling filesystem, and modern memory management.


[Append to This Answer]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Using FSU Pthreads on SCO systems
Issues and answers for people using FSU Pthreads on SCO Systems
Most of these come from the maintainer of FSU Pthreads for OpenServer, ARTURO MONTES.
robertlipe@usa.net
Subcategories:
Answers in this category:
(Answer) Are SCO development libraries reentrant in FSU pthreads?
(Answer) Using FSU pthreads my memory grows and grows. What is happening?
(Answer) Can I use FSU pthreads as a shared library?
(Answer) Which system calls are FSU pthread aware?
(Answer) How can I build FSU pthreads on my OpenServer system?
(Answer) FSU threads 3.14 can be download on ftp.zenez.com
[New Answer in "Using FSU Pthreads on SCO systems"]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. : (Category) Using FSU Pthreads on SCO systems :
Are SCO development libraries reentrant in FSU pthreads?
The answer is almost YES, if SCO claims that its libraries function are reentrant they must be reentrant with FSU pthreads. FSU pthreads on OpenServer tries to use the SCO scheme to make reentrant library.
ARTURO MONTES
robertlipe@usa.net
Can anyone clarify this answer? I can't parse it.
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. : (Category) Using FSU Pthreads on SCO systems :
Using FSU pthreads my memory grows and grows. What is happening?
FSU pthreads use GNU malloc package. You must link your FSU pthreads software with GNU malloc provided with FSU. In other way you will get the previous error. Link with libmalloc.a or with gmalloc.o in FSU pthreads.
ARTURO MONTES
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. : (Category) Using FSU Pthreads on SCO systems :
Can I use FSU pthreads as a shared library?
Yes. FSU pthreads come in two flavors: static library and shared library. However, when you use FSU pthreads shared library must to take care of the library order in the command linker line. FSU pthreads use some function in socket library, but FSU make some of them pthread aware. Use always -lgthreads -lsocket -lgthreads, to always use FSU pthreads socket reentrant functions.
ARTURO MONTES
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. : (Category) Using FSU Pthreads on SCO systems :
Which system calls are FSU pthread aware?
They are: read, write, getmsg, connect, accept, select and wait system calls.
ARTURO MONTES
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. : (Category) Using FSU Pthreads on SCO systems :
How can I build FSU pthreads on my OpenServer system?
Run ./configure in threads/src directory and select the SCO OpenServer option. This command copies Makefile.SCO5 to Makefile. Run make and everything is OK. To install in default /usr/include directory, login as root and cd to thread/src directory, run make install.
ARTURO MONTES
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. : (Category) Using FSU Pthreads on SCO systems :
FSU threads 3.14 can be download on ftp.zenez.com
You can download it from ftp.zenez.com with the link below.


ftp://ftp.zenez.com/pub/zenez/prgms/FSU-pthreads-3.14.tar.gz

gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
OLD GDS (as on Skunkware) vs. New GCC 2.95.X or GCC 3.0.X
To find out what GCC and developer tools are available take a look at

http://www.sco.com/developers/products/devkits.html


The main GCC site is...

http://gcc.gnu.org

EGCS and GCC merged. SCO now has many Gnu binaries available.


Skunkware is available at
ftp://ftp2.sco.com/pub/


The Below is for historical purposes.

---------------------OLD----------------------------------------------------

Now that GDS looks like it's getting dusty, and there are shiny new releases on ftp://ftp2.caldera.com/pub .
Please start using the newer GCC. GCC Advantages relative to GDS

GCC contains newer optimizations and can generate hotter code for some input.

GCC is a much newer G++ base and much more closely reflects the state of a useful C++ implementation.
This below is left for historical purposes.

GDS as found on ftp://ftp2.caldera.com/pub/Skunk96
It's prebuilt and custom installable, so anyone can make it go with very little effort.

It's self-contained and absolutely works well without the native DS. Assemblers, debuggers, and all that stuff are all there and they just work.

It has much air-time - it's on probably thousands of machines around the planet and robertl has almost a dozen postcards to prove it. :-)

Disadvantages of GDS relative to either EGCS or GCC.

It's based on the 2.7-ish GCC which does have some problems on x86 targets with higher optimization levels. However, many people have compiled many megabytes of code and never encountered any of these problems.

It's based on the 2.7-ish GCC which means that it reflects the level of C++ that was implemented in GCC at that time. It certainly does not track the standards as they exist in '98 very well.

It's an evolutionary dead end. This package works very well, but the better road to take is to be sure that the newer packages all "just build" from this one rather than trying to make more releases fo this one that track all the component revisions.

Robert Lipe, the author of the OpenServer specific parts of GDS, was involved very heavily with the OpenServer specific parts of EGCS. EGCS is available at http://gcc.gnu.com and mirrors. Kean Johnston also joined in the fun and together, they spent about a billion hours each hammering on this code. It, too, has good things and bad things.


EGCS Advantages relative to GDS

EGCS contains newer optimizations and can generate hotter code for some input.

EGCS is a much newer G++ base and much more closely reflects the state of a useful C++ implementation in 1997.

See also:

http://gcc.gnu.org


EGCS Disadvantages relative to GDS

Not currently custom-installable. Key members of the Skunkware team are believed to be working on it.

Currently requires the SCO assembler. No, getting clever and stealing the assembler out of the GDS will get you nowhere. 5.0.4 allegedly includes the assembler. 5.0.0 and 5.0.2 definitely do not. So if you don't have the SCO DS and you have 5.0.0 or 5.0.2, this is a problem.

Non-trivial resources required to bootstrap it. It takes rjlhome (dual-processor P100) about two hours and almost 200Mb to do a full 'make bootstrap'.

A full comparison of EGCS vs. GCC can be found at http://gcc.gnu.org/faq.html. I prefer EGCS becuase it's a more open environment, archives of the lists are on-line, and it is a much more integrated package - all the C++ libraries (as well as g77 and objective-c) are there and tested weekly on dozens of targets. I really feel it's a better tested release.

I could probably come up with more compelling reasons to further confuse the issue, but I think if I had to optimize the heuristics used, it would be, "If you don't have the SCO DS, stay with the GDS right now." Given a choice between EGCS and GCC, I'd used EGCS.
Ultimately, someone will take the time to make EGCS work well with the free assemblers so that a binary distribution of EGCS would be useful for the 5.0.0 and 5.0.2 users. I just haven't had the time to do it, but I can point someone with suitable motivation to a couple of docs I've written on the issues involved.
robertlipe@usa.net, gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Building Shared libraries with GCC or SCO cc
[ Answer by Bela and Robertl ] 

                  SCO cc            GDS               EGCS or GCC >= 2.8.0
              ==============  ===============   ==============================
      Make things to go into .so
              -belf -KPIC         -belf -fpic             -fpic

      Make a .so
              -belf -G            -belf -G                -G

      Use a .so
              -belf               -belf                   

Everything is identical between SCO's cc and GDS except the spelling 
of the "generate position-independent code" option.

GCC 2.8.0 and EGCS 1.0 default to ELF, making the flag to emit ELF 
unnecessary.   

 
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Will UnixWare 2.1 or 7.0 run ibcs/OpenServer binaries?
The short answer is "yes".
UnixWare 2.1.x still has all of the iBCS compatibility support in it and will run OpenServer COFF binaries. You will, however, have to avoid using any of the newer OpenServer features in your program since the level of COFF support that exists in UnixWare 2.1.x is approximately equivalent to SCO ODT 3.0.

UnixWare 7 product has a much higher level of compatibility with OpenServer and should be able to run pretty much any OpenServer binary (either COFF or ELF), except ones which rely on some very specific knowledge of OpenServer (eg debuggers, file system repair utilities / defragmenters, or programs which interact directly with the C2 security features and libprot)

UnixWare 7 also comes with a development environment (the UDK) which enables you to build ELF binaries which will run on UnixWare 7 *and* on UnixWare 2.1.x *and* OpenServer 5.x (in the latter two cases this requires the installation of a set of comaptibility libraries on the target platform, but these are provided and are freely available).

For future development work you may find that the UDK is the best way to go since it gives you compatibility across all three platforms and access to the latest versions of the language tools (C, C++, Java) and debuggers etc.

Answer by Michael Davidson in comp.unix.sco.programmer.
robertlipe@usa.net

Note that UnixWare 7.0.1 removed support for XENIX x.out binaries. These aren't ibcs or OpenServer binaries but are an older standard.
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Building GCC 2.8.0 on OpenServer results in alloca link failure early during the build.
GCC 2.8.0 is a distraction. Use EGCS (http://egcs.cygnus.com) or GCC 2.8.1.
robertlipe@usa.net
GCC 2.8.0 finally shipped. Yippie! So you grabbed it, saw that OpenServer is finally a supported target, did the configure, typed 'make bootstrap' and watched it die within seconds on the following error:
 
 cc   -DIN_GCC      -DHAVE_CONFIG_H  -o cccp cccp.o cexp.o prefix.o \
   version.o obstack.o ` case "cc " in "cc") echo "alloca.o" ;; esac `
 undefined                       first referenced
  symbol                             in file
 alloca                              cccp.o
 ld fatal: Symbol referencing errors. No output written to cccp
 gmake: *** [cccp] Error 13

Bummer.

There is one solution and one workaround. The problem is in config/i386/x-sco5. Edit the line that looks like it reads "CC = cc" and remove the trailing space after the last lowercase c. After you've done this, you'll need to rerun configure so that it can rebuild all the Makefiles. If you look at the above compilation line more carefully you will see that there is an extra space and that is resulting in alloca.o not being linked into the resulting executable.

Alternately, you can just type "CC=/bin/cc make bootstrap" and not have to edit anything.
A patch to cure this was submitted to the GCC team on the day that GCC 2.8.0 was released.



robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
I installed GDS or GCC binary kit and nothing works.
All of the binary distributions for GCC on OpenServer have instructions with them. Reading those instructions really is a pretty good idea. All these kits require the SCO-provided libraries, headers, and related tools.
Citing the instructions for GDS that are found at ftp://ftp.zenez.com/pub/zenez/gcc/sco_ds.html :
Invoke custom
    Select "Install New" option from the "Software" menu. 
Follow the prompts to steer custom toward the original media you used to install OpenServer 5.
Select Application Development Libraries and Linker. Install it all. This will give you the libraries, headers, and man pages.

robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
When I run gcc on osr5 I get "cc: installation problem, cannot exec `cpp': No such file or directory"
You ( or more likely configure) are running gcc with -belf and the gcc version doesn't understand it. (gcc 2.7.2.3)

change the Makefile or configure script setup from -b elf to -m elf (or remove it altogether)
The default is to use -m elf

hops@sco.com, gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Building Perl5.005_03
Perl 5.005_03 builds cleanly with OSR 5.0.5 cc. Make sure you have installed rs505a, oss497a, and oss499a.
I have found you need ftp://ftp.zenez.com/pub/zenez/perl5/h2ph.PL. This file needs to be placed in the utils directory instead of the one there. Then do a perl h2ph.PL and copy the file to /usr/local/bin.


I have found that this patch to Config.pm in
/usr/local/lib/perl5/5.00503/i386-sco/Config.pm
will allow a person to build perl with SCO cc and then use gcc to build all the other modules. This is needed for MySQL. The SCO cc will not work with MySQL. The patch is at ftp://ftp.zenez.com/pub/zenez/perl5/Config.pm.patch .


To build Perl5.005_03 on UnixWare 7.1.0 you will need these files ftp://ftp.zenez.com/pub/zenez/perl5/Configure.patch-perl5.005_03 and ftp://ftp.zenez.com/pub/zenez/perl5/svr5.sh. You need to put the svr5.sh file in the hints directory and run patch on Configure.
patch < Configure.patch-perl5.005_03
gerberb@zenez.com

I found this news comment on the exct problem I am attempting to solve. However, the link to the patch is invalid
ftp://ftp.zenez.com/pub/zenez/perl5/h2ph.PL
Where else can I obtain this information?
Please note temporarily ftp.zenez.com is down. I have had some financial problems. The important files are now on...
ftp://ftp.lerctr.org/pub/zenez/ Thanks to Larry Rosenman ler@lerctr.org

fpm@flash.net, gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Build DBI with gcc after building perl5.005_03 with SCO cc
If you want to install DBI on OSR 5.0.5 and you built perl with cc
you need to edit the Makefile in DBI-xxx and each subdirectory.
OLD gcc or SCO cc                    New
CC = cc -belf (gcc -belf -fpic)      gcc
CCCDLFLAGS = -KPIC -W1,-Bexport      CCCDLFLAGS = -fpic
CCDLFAGS = -wl,-Bexport              CCDLFLAG =
LD = ld (gcc -belf -G -fpic)         LD = gcc -G -fpic
LDFLAGS = -L/usr/local/lib           LDFLAGS = -L/usr/local/lib
LD = ld (gcc -belf -G -fpic)         LD = gcc -G -fpic
OPTIMISE = Od                        OTIMISE = O1

OLD
CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include

NEW
CCCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include

This is because the Perl dynaloader will not load the `DBI' modules
if they were compiled with `icc' or `cc'.

You can find a patch for DBI-1.06 at
http://www.zenez.com/zenez/perl5/DBI.patch or
ftp://ftp.zenez.com/pub/zenez/perl5/DBI.patch

$ gunzip DBI-1.06.tar.gz
$ tar xvf DBI-1.06.tar
$ cd DBI-1.06
$ cp /from/download/location/DBI.patch .
$ perl Makefile.PL
$ patch < DBI.patch
$ make
$ make test
$ make install
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
What's the UDK link order for building Motif programs?
-lXm -lXt -lXext -lX11 -lSM -lICE -lsocket -lnsl
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Is UDK C++ thread safe?
Yes. In particular:

Assuming you compile with CC -Kthread, the generated code from the compiler is thread safe. This includes static local variables with dynamic initialization expressions, which require special guards in this case.

Assuming you also link with CC -Kthread, the language support runtime routines are thread safe. This means that things like exception handling, new/delete, and static init/ctor/dtor processing all work correctly in the presence of threads.

The C++ Standard Library is also safe for multithreaded applications. This means that: all internal data structures in the library are protected against simultaneous access; simultaneous access to distinct containers is safe; and simultaneous read-only access to a shared container is safe. Simultaneous access to a shared container with at least one thread writing, however, must be protected by the application through the use of mutual exclusion primitives.

   
The older pre-standard iostreams classes, and the old C++ Standard Components classes, both of which are provided for compatibility with existing applications, are not thread-safe.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
On osr5 when I dlopen a shared library I get "symbol unresolved" errors
Assuming no other problems and the symbols complained of 
are from libc this is normally 
due to the dll referring to symbols that are provided statically
in the linktime libc.so and not in the dynamic (runtime linked) libc.so.1.

This works fine for shared libraries that are implicitly loaded ( specified as -l on link line) since the needed static symbols are loaded into the executable.
If the dll is explicitly loaded (using dlload) and the symbols haven't been otherwise referenced in the executable it will fail to resolve the symbol and the dlopen() call will fail with dlerror complaining about symbol resolution.

Such static symbols can be identified as symbols that occur in a nm dump of
/usr/lib/libc.so and that do not occur in one of /usr/lib/libc.so.1

Workarounds are to ensure that the static symbols are referenced in code in the executable that does the dlopen (in an uncalled dummy routine) or (better) to 
pull the static objects from /usr/lib/libc.so and explicitly link them into 
the dll when its generated.

This can be seen in building tcl and TclX. The normal builds work fine using their own interpreters but if the tclX library is tcl loaded from the tcl
interpreter (tclsh) you get a symbol resolution error initially on 
random (and if thats surmounted then getpriority and then _fsync).

heres some partial shell script that makes a tclx dll with the needed static symbols
 
# pull .o's containing needed static symbols from libc.so and put in archive
FILELIST='random.o getpriority.o v3_fsync.o'
ar xv /usr/lib/libc.so $FILELIST
ar qv st_syms.a $FILELIST
rm -f $FILELIST

# make dll with static symbols included
cc -G -o libtclx8.1.so tclXbsearch..o    tclXchmod..o     tclXcmdInit..o \
        .... ( rest of .o's elided) ....
   tclXstring..o     tclXsocket..o    tclXunixCmds..o   tclXutil..o   \
        ./st_syms.a
hops@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Often used or need Flags when using compilers
If you use OSR 5.0.5 cc/Robert Lipes old gcc or Egcs 1.0.X and gcc 2.95
you may need to edit the Makefile in top and each subdirectory.
SCO cc or OLD gcc                    New (Note it defaults to -melf)
CC = cc -belf (gcc -belf -fpic)      gcc
CCCDLFLAGS = -KPIC -W1,-Bexport      CCCDLFLAGS = -fpic
CCDLFAGS = -wl,-Bexport              CCDLFLAG =
LD = ld (gcc -belf -G -fpic)         LD = gcc -G -fpic
LDFLAGS = -L/usr/local/lib           LDFLAGS = -L/usr/local/lib
LD = ld (gcc -belf -G -fpic)         LD = gcc -G -fpic
OPTIMISE = Od                        OTIMISE = O1

OLD
CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include

NEW
CCCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
I am having trouble building and running an application with gcc, but someone else is not.
Support Level Supplements (SLS) can make a difference in the build of gcc. If you are having problems and someone else is not find out the differences in the SLS installed.
I personally recommend installing all patches listed on the SCO ftp site. ftp://ftp.sco.com/SLS/README.OSR5.Supplements or ftp://ftp.sco.com/SLS/README.UW7.Supplements
After you have added all the patches you want, rebuild and recompile your applications.
This has fixed some problems people were having.
gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Assembler overview; differences of "AT&T" vs. "Intel" syntax
There is no doc that I know of that describes the assembler syntax used
by the assemblers in the modern UNIX products.  Mostly, it's understood
via a combination of studying what the native compiler emits and UNIX
"folklore" about how UNIX assemblers have always worked.  The (sad)
state of affairs is that people that should be writing assembler code
just seem to be able to figure these things out.  No, I won't pretend
that's a good answer or one that we should be proud of.  Darwinism
shouldn't be justification for doc failures.

You can learn a lot about the assembler syntax by watching how the 
compiler writes assemblers.   Start with a tiny program:

        int x;
        main()
        {
                x = 0x1234;
        }

Compile it with -S and then look at the resulting .s file.  This will
show you how to make symbols global, how to separate text and data,
how to represent constants, and those three of four other "gotta know"
things.


Now, to complete the earlier setup, we'll visit history.  

When Intel or any other CPU vendor releases a family of processors,
they almost always have an assembler written for it.  The syntax for
that assembler is used the examples in their databooks and is therefore
a very handy thing to be able to read and possibly write.  Now the
Intel assembler syntax for IA32 (nee x86) isn't a very pretty thing,
but it was definitely the first kid on this block.  This is known as
"Intel assembler syntax" and is the syntax used by most X86 assemblers
including MASM last time I looked.

In the mid '80's AT&T decided to flirt with porting UNIX to those
286 and 386 thingies, but decided to contract out some of the work.
Assemblers are pretty boring, so that work went to either Microport
or Interactive Systems Corp as legend has it.  (These were the days
when both these companies were known as porting houses and not as
shrink-wrapped UNIX vendors.)  They saw the Intel syntax and gagged.  So
they created their own assembler that was similar to some existing UNIX
assembler - perhaps it was as much to simplify their port as it was out
of "purity" of the language.  This became known as "AT&T/386 assembler
syntax" and is the syntax used by all the UNIX assemblers for x86 that I
know of including the GNU assembler.

Other than being completely different, they're quite similar.  To move
'1' into 32 bit memory address x, one would use:

        movl $1, x              / AT&T syntax - move long, immed 1 -> x
                                / "word" = 16 bits, "long" = 32.
or
        move dword ptr x, $1    / Intel syntx.  dbl word ptnr x <- immed 1
                                / "word" = 16 bits, so "dword" = 32.


In AT&T syntax, the name of the opcode (movb, movw, movl) signfies
the width of the operands.  In Intel syntax, it's the funky qualifier
thingies in the middle that achieves the same.  There's also the minor
difference that the direction is backwards between the two.   

So, if you find an Intel book on assembler syntax  it will do you some
good for an AT&T-based assembler but you have to read it in a mirror and
remember to always do conversions on every line you read.
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
What popular compilers are available?
The OpenServer Development System (a.k.a. "the native development system" or "/bin/cc") is an optional SCO product. It contains a C compiler and a Cfront based C++ compiler. (This means it won't compile modern C++ code.) It provides a complete development environment (make, as, ld, headers, libraries, X11 dev, etc.) This is the kit that must be used for device driver development on OpenServer. It can generate ELF or COFF, defaulting to COFF.

GCC is available for free in source form from GNU mirrors (http://egcs.cygnus.com) or in binary form from http://www.sco.com/skunkware. It provides compilers for C, modern C++, Java, Fortran 77, Objective C, and Chill. If you are using OpenServer and don't have the OpenServer Development System installed, you must be sure to install the Linkers and Libraries kit as described in the documentation of the GCC binary kit. On OpenServer, this kit can generate ELF or COFF and defaults to ELF. On UnixWare, it supports ELF only.

The UDK is a next-generation development environment that is an optional product from SCO. It includes C and a modern C++ compiler. It can generate binaries that will run on OpenServer, UnixWare 2, and UnixWare 7 when appropriate runtimes are installed. This is the only available devsys for UW7. It emits ELF only which makes it unsuitable for OpenServer device drivers or generating binaries that run on pre-OpenServer SCO OSes such as ODT.

GCC can be built from source to provide the "universal binary" features of the UDK following the directions in the source distribution. No known binary kits are available at this time. Doing this does require you have a licensed copy of the UDK.
robertlipe@usa.net

See also http://www.sco.com/developers/products/devkits.html.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Gnu pthreads pth-1.2.2 passes all tests on OSR 5.0.5
Gnu pthreads from ftp://prep.ai.mit.edu/pub/gnu/pth/pth-1.2.2.tar.gz builds and passes all tests cleanly on OSR 5.0.5
gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How do I get BerkeleyDB.3.1 to compile on OpenServer 5.0.X and UnixWare 7.X.X?
You will need autoconf. You can down load the configure.in patch at

ftp://ftp.zenez.com/pub/zenez/prgms/BDB-configure.in.patch

You will need to patch the configure.in file in the dist directory with this patch.

gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
OpenServer 5.0.X, Error as or ld illegal option --b or as: TO FIX: Usage: [-Qyn] [-VTRmn] [-Ydm,dir] [-o outfile] [-t target] file. What is wrong?
This is usually caused by using the gnu assembler instead of the SCO assembler. I recommend using the SCO assembler. I rename my gnu as and ld to as.org and ld.org. It is usually found in /usr/local/i?86-pc-sco3.2v5.0.X where ? is 3,4,5,6 and X is your version of SCO Unix. Skunkware gcc x would be 5 or 6.
gerberb@zenez.com
This is only an issue for OpenServer. The above answer is incorrect for UnixWare and OpenUNIX.
It's also why the installation instructions (http://gcc.gnu.org/install/specific.html#ix86-*-sco3.2v5*) say:
The native SCO assembler that is provided with the OS at no charge is normally required. If, however, you must be able to use the GNU assembler (perhaps you're compiling code with asms that require GAS syntax) you may configure this package using the flags --with-gnu-as. You must use a recent version of GNU binutils; versions past 2.9.1 seem to work well. In general, the --with-gnu-as option isn't as well tested as the native assembler.
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
What patches are needed for OpenSSL 0.9.6b for UnixWare or OpenUNIX 8?
You will need to get and patch your source code with...
    ftp://ftp.zenez.com/pub/zenez/prgms/openssl-0.9.6b-patches.tar.gz
Good Luck,
gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How do I fix Msql-Mysql-modules-1.2216 problem with __deregister_frame_info?
This symbol is in the -lgthreads library so after you have done a perl Makefile.PL

You need to cd to the mysql and edit the Makefile add -lgthreads to these two below.


EXTRALIBS = -L/usr/local/mysql/lib/mysql -lgthreads -lmysqlclient -lm -lz -L/usr/local/gcc-2.95.3/lib/gcc-lib/i386-pc-sco3.2v5.0.6/2.95.3 -lgcc LDLOADLIBS = -L/usr/local/mysql/lib/mysql -lgthreads -lmysqlclient -lm -lz -L/usr/local/gcc-2.95.3/lib/gcc-lib/i386-pc-sco3.2v5.0.6/2.95.3 -lgcc

gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
What is need to compile MySQL on SCO Operating Systems (OS) OpenServer and UnixWare 7.X.x?
Please take a look at.

http://www.zenez.com/B/general/mysql.html

OpenServer 5.0.X

The public http location of FSU threads is now at

http://moss.csc.ncsu.edu/~mueller/pthreads/

The offical download from this for SCO OS's is at

ftp://ftp.zenez.com/pub/zenez/prgms/FSU-threads.tar.gz

You will need the following

    1.  FSU threads.  
    2.  gcc-2.95.2 or newer.
    3.  gnu make-3.79.1
    4.  perl 5.003_03 or newer.
You can get a FSU threads binary from

ftp.zenez.com/pub/zenez/prgms/

The important files from ftp.zenez.com are also backed up on

ftp://ftp.lerctr.org/pub/zenez
Larry Rosenman has important ftp stuff on ftp://ftp.lerctr.org/pub/zenez . I wish to thank them both.

gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Resources on the SCO web site.
Please take a look at the SCO website. Because of a virus www.sco.com is at www.thescogroup.com .
Developer Page.

http://www.sco.com/developers/
http://www.thescogroup.com/developers/

Products for developers.

http://www.sco.com/developers/products/devkits.html
http://www.thescogroup.com/developers/products/devkits.html

Moving to a SCO OS.

http://www.sco.com/developers/migration/
http://www.thescogroup.com/developers/migration/

gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How do I determine which development System is best for me to use?
SCO has a web page to assist with this question...

http://www.sco.com/developers/products/devkits.html


gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How do I determine what dynamic libraries an application depends upon?
The "ldd" command will tell you, assuming that the application's library paths are already set up (either by the way it is built, or because LD_LIBRARY_PATH specifies the paths).

But frequently this is not the case, so use the "dump -Lv" command on the application executable and look for "NEEDED" entries. These are the dynamic libraries the executable depends upon. Repeat the command for these libraries, recursively, and you'll find all the dynamic library dependencies.
jls@sco.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How do I do Java programming?
All SCO OpenServer and UnixWare operating systems come with full implementations of the Java 2 Standard Edition Software Development Kit (often referred to as the JDK). See http://www.sco.com/developers/java/products/ for what the latest J2SE version is for your OSR5 or UW7 platform.

To find out how to build and run Java applications on SCO UNIX systems, look at /usr/java/ReleaseNotes.html on your system. This will describe any SCO-specific details about Java on that system, and will contain links to the appropriate Sun Java documentation for everything else.

If you have installed the right packages, you can also see demos of Java applications on your system in /usr/java/demo/.
jls@sco.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How do I do Java native code (JNI) programming?
Java native code programming means a Java application calling a C or C++ function, or a C or C++ main program invoking a Java virtual machine and application.

In general JNI programming should be done using the UDK compilers on both SCO OpenServer and UnixWare. In certain circumstances the GCC compilers may be used on UnixWare, but not OpenServer. Details on all of this are in the SCO Java release notes in /usr/java/ReleaseNotes.html on your system.

Be sure to look at the "mk" scripts in /usr/java/demo/native/, as they will show you the right way to build and run JNI code on SCO platforms.
jls@sco.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
Why are there two threads APIs on UnixWare? Which should I use?
UnixWare 7 has two threads APIs: SVR4/UI threads and POSIX threads (sometimes also known as pthreads). Both are implemented in UnixWare's libthread threads library and associated system headers. The two have generally similar sets of functionality and generally can interoperate on UnixWare.

SVR4/UI was a Unix International (mostly Sun and AT&T/USL) effort at defining a threads API. It has calls of the form thr_create() et al. You will see this API used in some existing UnixWare and Solaris applications.

POSIX is a later, more standards-based threads API. It has calls of the form pthread_create() et. al. You will see this API used in most applications today across a broad range of platforms.

POSIX threads is definitely the API to use, unless you are working in an existing code base that already uses SVR4/UI threads.
jls@sco.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How do I do XML programming?
SCO OpenServer 5.0.7 supp 3 and UnixWare 7.1.4 now contain full support for XML parsing and building XML-based applications in five languages: C, C++, Java, Perl, and PHP. For UnixWare these XML parsers are provided by various packages in the SCOx components scox-enb and scox-uw package sets. For OpenServer some of these XML parsers are part of the base libraries and some come with the SCOx components.
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
How do I do Web Services (SOAP) programming?
SCO OpenServer 5.0.7 supp 3 and UnixWare 7.1.4 have support for SOAP- and XML-based Web Services programming in five languages: C, C++, Java, Perl, and PHP.

The packages that provide these libraries and tools are contained within the SCOX Components scox-uw package set on UnixWare and the equivalent on OpenServer.

If you are interested in web services programming, a good place to start is with the package scoxldemo, which places simple web services client program demos for the five languages into the directory /usr/lib/scox/language_demos/. This will give you a good start on what web services calls look like from each language, and on what commands are needed to build and run them.
jls@sco.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
What J2EE implementations or Java app servers are available?
BEA WebLogic Server 8.1 has been certified for (native, not LKP) UnixWare 7.1.4 and Java 1.4.2.

UnixWare 7 developers report good success running the open source JBoss J2EE implementation. SCO is working on packaging it, to start with for their Smallfoot (embedded UnixWare) toolkit.

Some J2EE implementations have been certified for UnixWare 7 in the past, e.g. Novell Silverstream on UnixWare 7 with LKP.

Bear in mind that you don’t always need the whole enchilada! For just Java servlets and JSP, use the Tomcat package that comes with both SCO OpenServer 5.0.7 supp 3 and UnixWare 7.1.4. JDBC usually comes from your database vendor. Java-based SOAP/XML Web Services can be run using the Apache SCOx Components included with OpenServer 5.0.7 supp3 and UW 7.1.4.
jls@sco.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) SCO Development Environments. :
About C language and Oracle C API
ÎÒÏëÓÃOracle C api ºÍC ×öÒ»¸öСµÄϵͳ£¬Èç¹ûÔÚsco unix 5.0.7ÏÂÃæ¿ÉÒÔʵÏÖÂ𣬠OracleÊÇ·ñÌṩÁËÕâ¸öCµÄapi½Ó¿ÚÄØ£¿
i have a little english, but use chinese!
[Append to This Answer]
heruoyong@163.com
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. :
Hardware related programming
Questions and answers about device driver and other hardware programming.


It is important to remember that robertl is not the FAQ maintainer. YOU are the FAQ maintainer. If you're tired of answering a question or seeing it answered in comp.unix.sco.programmer it is your duty as a good net.citizen to plonk the answer into this FAQ.
robertlipe@usa.net

Answers in this category:
(Answer) How can I write my own device driver for SCO?
(Answer) How can I read or set modem signals on a serial port?
(Answer) How can I directly read or write the parallel port to use it for input or to control my non-printer devices?
(Answer) How can I access to I/O ports or card memory from my program?
(Answer) How can I write directly to the console like I do in DOS?
(Answer) Can UnixWare device drivers be written in C++?
[New Answer in "Hardware related programming"]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Hardware related programming :
How can I write my own device driver for SCO?
There are several available resources.


"Writing UNIX Device Drivers" by George Pajari (Addison Wesley) has some general how-to information and brief coverage of x86 topics.

SCO driver book.

SCO makes available the Advanced Hardware Developer's Kit This is the definitive guide for SCO-specific topics such as Kernel debuggers, Network drivers, Video drivers, and BTLDs that are not covered in any other place. If you're doing device drivers on or for SCO systems, you need this.

To order, visit: http://www3.sco.com/Products/layered/develop/ahdk.htm . You can also use the online version that SCO provides at: http://www2.sco.com:1996/dochome.html .
robertlipe@usa.net

The documentation, sample drivers, and some test tools are availiable for direct download from http://www.sco.com/hdk . It is the complete AHDK. The SURF kernel monitor is inside the ndtests package.
smallshaw@cs.man.ac.uk, robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Hardware related programming :
How can I read or set modem signals on a serial port?
If your goal is simply to block an open until DCD comes high (i.e, you're writing a dialer) just open the uppercase device like /dev/tty1A or /dev/ttyA01.

If your goal is to get hardware flow control to work, look at the man pages for termio(M) and pay attention to the RTSFLOW and CTSFLOW bits.

If your goal is to detect when DCD goes away, use the uppercase device as described above and be sure that CLOCAL is clear. This will deliver a SIGHUP to you when DCD drops.
If your goal is to be able to wiggle DTR (not RTS), you might look at the description of B0 in termio. In my experience, this is poorly implemented in a number of serial drivers becuase it's poorly specified. For example, it's only implied that DTR gets raise again once a non-zero bit rate is specified. It's similarly unclear what the bitrate actually _is_ while you're in this mode, so if you need to process characters while DTR is low in this mode, it can be somewhat of a crapshoot.
If you really, really, want to directly read and write the modem control lines on a serial port, you have two options.

Many third party serial boards provide drivers that support the TIOCMGET and TIOCMSET ioctls. Most of the Digi intelligent serial board provide these ioctls.

Gert Doering has modified the FAS serial driver to add support for the TIOCMGET and TIOCMSET ioctls. This patch can be found at: ftp://ftp.leo.org/pub/comp/os/unix/networking/mgetty/fas-2.12-TIOCMGET.patch
Don't be fooled by the presence of these ioctls in <sys/termio.h> or be tempted to futz with -D_SVID3. They are unsupported in any SCO provided serial driver through and including the OpenServer 5.0.4 products.



robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Hardware related programming :
How can I directly read or write the parallel port to use it for input or to control my non-printer devices?
With the SCO provided drivers through and including OpenServer 5.0.4 family, you cannot directly manipulate or read the bits in the printer port. You can communicate with custom equipment by providing your own device driver.

This functionality is believed to exist in the Linux parallel port driver, so you could perhaps port that driver or at least use it as a starting place.


robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Hardware related programming :
How can I access to I/O ports or card memory from my program?
UNIX is about sharing. While it may seem militant that it won't let you (a mere user program) go out and reset the disk controller and reprogram the interrupt controller at will, it's good for you. Honest. There is more information on doing this in this section of the FAQ.

However, if you're well disciplined, have only one instance of a program talking to the device, you don't need interrupts, and are willing to accept some responsibility, it is possible to do it from user space. The classic example of this is the X server.

On 5.0.0d and later it is possible to mmap() /dev/kmem into user space to talk to memory addressable hardware.

To talk to I/O space is a little trickier. You can call V86_IOPL to open up permissions for inb and outb from user space. This can be a little hazardous, as it allows all I/O accesses. Alternately, you can either create your own device driver to do the ins and outs for you or you can use minor numbers 3,4,5 of the major number of the mm driver (the driver for /dev/null, mem, and kmem) to access memory as bytes, halfwords, and words, respectively. Remember that you must re-seek the I/O address each time. If you are going to do this, it is wise to encapsulate this into functions with the usual in/out[bwl] names. This is utterly undocumented and unsupported.
robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Hardware related programming :
How can I write directly to the console like I do in DOS?
This is a degenerate case of the above question. As surely as you write your program to do this, someone will have an incompatible card, will want it to run under X, or will need it from a graphic or text terminal.

If your application is text, you should write your app to use curses(S). If it's graphical, coding it for X windows would be a better choice.

If you insist on doing it yourself, look for tls015.* ftp://ftp.sco.com/TLS/ . Just please don't do it in code you're going to distribute to others.



robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Hardware related programming :
Can UnixWare device drivers be written in C++?
Yes, albeit with some restrictions and guidelines. See http://uw713doc.sco.com/en/HDK_basics/CTOC-cplus_top.html.
jls@sco.com
[Append to This Answer]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. :
Packaging for SCO OS's
This is a guide to packaging your programs to install on SCO OS's
gerberb@zenez.com
Subcategories:
(Category) What is the SCO Product Engineering Toolkit (PET)?
(Category) Packaging with CDMT
(Category) Package Management with Software Development Tools (UnixWare 7/OpenServer 6)
(Category) Metapkg

Answers in this category:

(Answer) What is the recommended Packaging Tool?
(Answer) How to use Metapkg
(Answer) Porting Guide (OpenServer 6)
(Answer) Upgrading from OpenServer 5.0.X to OpenServer 6.0.

[New Answer in "Packaging for SCO OS's"]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's :
What is the SCO Product Engineering Toolkit (PET)?
PET is a retired tool kit for Unix 3.2v4.x, Open Server/Open Desktop 1.0, 2.0 and 3.0 and XENIX.
 
The SCO Product Engineering Toolkit (PET) Release 4.0 is shipped with the Open Desktop Development System and is incorporated as a set of packages with the SCO UNIX System V/386 Release 3.2 Development System Version 2.0.
The PET automates the process of creating custom installable applications and device drivers. The PET consists of utilities, configuration files, example init, prep and removal scripts, along with on-line manual pages.
The tools that will be most frequently used are the shell scripts docut, mkcuts and mkflops. Other tools are: diskimage, fdfit, mkmaster, mkperm, pkgsize, volno and hocheck, most of which are called by one of the first two utilities. A brief description of each follows:
Utility Description ------------------------------------------------------ docut Creates an application distribution and generates a mkmaster script for manual control. mkcuts Creates custom installable distributions and can create disk images and a sum list. mkflops Creates output floppy disks using disk images created by mkcuts or diskimage. mkperm Creates a product permission list and is executed when docut is run. fdfit Fits file archives onto media volumes and is called by mkcuts. diskimage Creates disk images for rapid copying of the distribution files and is called by mkcuts. pkgsize Updates size information for package in special permlist comment and is called by mkcuts. volno Updates volume number information for files and is called by mkcuts. hocheck Compares permlist with current and past distributions.
The PET consists of the following configuration files:
/etc/default/petkit /usr/lib/petkit/site_variables /etc/fdformats
The PET also contains example init, prep, and example XENIX and UNIX device driver scripts. These files are: /usr/lib/petkit/samples/init.sample /usr/lib/petkit/samples/prep.sample
/usr/lib/petkit/samples/xenix.idd/init.idd /usr/lib/petkit/samples/xenix.idd/install.xxd /usr/lib/petkit/samples/xenix.idd/xxd.rmv
/usr/lib/petkit/samples/unix.idd/init.idd /usr/lib/petkit/samples/unix.idd/prep.xxd /usr/lib/petkit/samples/unix.idd/xxd.rmv /usr/lib/petkit/samples/unix.idd/install.xxd
The PET is also capable of creating compressed distributions.
For additional information on the PET refer to the SCO Product Engineering Toolkit Guide.

gerberb@zenez.com
Subcategories:

Answers in this category:
(Answer) Packaging for Unix 3.2v4.x, Open Server/Open Desktop 1.0, 2.0, and 3.0

[New Answer in "What is the SCO Product Engineering Toolkit (PET)? "]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's : (Category) What is the SCO Product Engineering Toolkit (PET)? :
Packaging for Unix 3.2v4.x, Open Server/Open Desktop 1.0, 2.0, and 3.0
This is now a retired tool set.
gerberb@zenez.com
[Append to This Answer]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's :
Packaging with CDMT
This is taken from the online SCO documentation.
  http://osr600doc.sco.com/en/manCDMT/CONTENTS.html

Custom Distribution Mastering Toolkit (CDMT)

Intro

    introduction to Custom Distribution Mastering Toolkit utilities 
ccs
    component control script 
ccsSetup
    standard shell functions library 
ccsUpgradeTool
    merge contents of old configuration file with newer version 
cdmtArchive
    generate custom-installable archives from the $CDMT_DIR/sso hierarchy 
cdmtCompress
    populate $CDMT_DIR/sso with compressed component distribution files 
cdmt.config
    specify default CDMT configuration 
cdmtConvert
    convert list of relative pathnames to CDMT input files 
cdmtInput
    CDMT input files 
cdmtParse
    create the SSO databases from the CDMT input files 
cqs
    component query script 
customSched
    schedule event for custom outside of the standard phase model 
dosfloppy
    place a custom-installable distribution image on an existing DOS floppy filesystem 
ssoPatch
    map new version or component into an SSO member file 
ssoPathMap
    allow shell program to interpret a patch area

gerberb@zenez.com
Subcategories:

Answers in this category:
(Answer) CDMT is the old tool for packaging on OpenServer 5.0.X
(Answer) SCO Software Manager (custom)

[New Answer in "Packaging with CDMT"]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's : (Category) Packaging with CDMT :
CDMT is the old tool for packaging on OpenServer 5.0.X
CDMT was the old tool for packaging on OpenServer 5.0.7.
  http://osr600doc.sco.com/en/manCDMT/CONTENTS.html

gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's : (Category) Packaging with CDMT :
SCO Software Manager (custom)
This is taken from the SCO online documentation.
  http://osr600doc.sco.com/en/man/html.ADM/custom.ADM.html

custom(ADM) custom -- install, remove, or list software products and components
Command syntax /etc/custom [ -h machine ]
/etc/custom [ -h machine ] -G all | index | last | summary
/etc/custom [ -h machine ] -p product -b | -d | -e | -l | -r |-t | -w [ package ... ]
/etc/custom [ -h machine ] -p product -A | -i | -L | -u [ package ... ] [ -N machine ] [ -gnQ ] [ -m device | -F image_file ... | -z image_directory ]
/etc/custom [ -h machine ] [ -p product ] -D | -E | -R [ package ]
/etc/custom [ -h machine ] [ -p product ] -D | -E | -R package
/etc/custom [ -h machine ] [ -p product ] [ -v type [ package ... ] ] [ -x ]
/etc/custom [ -h machine ] -V [ -x ]
The syntax above covers all the new features of custom, and should be used for all new custom products. However, custom also recognizes the following syntax, so that old-format custom command lines (for example, in existing programs or scripts) continue to work:
/etc/custom -a package ... [ -m device ] /etc/custom -s prd -i [ package ... ] [ -m device ] /etc/custom -s prd -l | -r [ package ... ] Desktop syntax Double-click on the Software Manager icon.
(The default location of the Software Manager icon is in the System Administration window.) Description With the custom utility, you can selectively install or remove portions of the UNIX system or other products, list the files of a product, and verify file permissions, ownership, size, and other details. You can manage the software on both local and remote machines.
You can use the standard custom command line to install single-volume products (such as drivers) from DOS-format floppies.
The custom utility presents SCO OpenServer products in the following hierarchy:

    * The product itself, composed of one or more parcels, packages, or components.
* The components, each one a unit of software that cannot be split into smaller units for distribution. A component is organized into a hierarchical tree of packages.
* The packages, each one a unit of software that can be installed or removed. A package can contain other packages, and each package is ultimately composed of files.
Each product and component has its own version number. A package inherits the version number of its parent component.
An example of a product is the SCO OpenServer(TM) Enterprise System, which consists of many components. One of these components is the TCP/IP runtime system, which in turn consists of packages such as the PPP runtime utilities, the TCP administration package, and several others.
SCO products may also contain parcels, which are groups of related packages pulled together from several different components. For example, the manual pages for all the components of the SCO OpenServer system might be gathered into a parcel called Online Man Pages.
Only root can run custom. custom runs either interactively or non-interactively. Command options This section describes the command line for the new custom format. For information on the old-format command line (retained for backwards compatibility), see the ``Old-format command options'' section in this manual page. Do not use the old command-line options in new programs or scripts.
Each command line in the new custom format must specify exactly one action using one of these options: -A, -b, -d, -D, -e, -E -G, -i, -l, -L, -r, -R, -t, -u, -v, -V, or -w.
You can specify packages (or whole components) with the -A, -d, -D, -e, -E, -i, -l, -L, -r, -R, -u, and -v options. Use spaces to separate package names (for example, SCO:Unix:BASE SCO:Unix:CSH). If you list package names, custom acts on just those packages. If you list component names, custom acts on all the packages in each component.
When you use -p product followed by an option without any packages, the specified action affects the entire product. When you list packages, the specified action affects the listed packages only.
Note that if you use -D, -E, or -R without -p product, a package or component must be specified.
custom accepts the following options:

-A [ package ... ]

    apply a software patch to a product. The patch can come from distribution media or from a server. package must be the name of the patch, and -p product must name the product with which the patch is distributed, not the product to which the patch is applied. 
-b [ package ... ]
    export the listed packages. 
-d [ package ... ]
    disable part or all of a product. (Disabled software cannot be run locally, but is still available for networked installation.) Follow this option with a list of packages to disable part of a product. If you do not specify a package list, custom disables the entire product. 
-D [ package ]
    disable an applied software patch. (Disable rolls back a patch from the client-side configuration files, but not from the shared-side binary files.) 
-e [ package ... ]
    enable part or all of a loaded product. (Enabling completes the final phases of installation, so that the software can be used.) Follow this option with a list of packages to enable part of a product. If you do not specify a package list, custom enables the entire product. 
-E [ package ]
    enable an applied software patch. (Enable re-applies a patch to the client-side configuration files, after the patch has been disabled.) 
-G all
    display the details of all tasks in the custom logfile. custom logs a procedure each time you invoke one of these options: -A, -b, -d, -D, -e, -E, -i, -l, -L, -r, -R, -t, -u, -v, -V,-w. 
-G index
    display the details of a specific task in the custom logfile, where index is the index of the task, as shown in the summary. 
-G last
    display the details of the last (most recent) task in the custom logfile. 
-G summary
    list a summary of all tasks (such as installations and removals) in the custom logfile. 
-i [ package ... ]
    install or re-install part or all of a product. Follow this option with a list of packages to install part of a product. If you do not specify a package list, custom installs the entire product. 
-l [ package ... ]
    list some or all of the files in a product. Follow this option with a list of packages to list part of a product. If you do not specify a package list, custom lists the entire product. 
-L [ package ... ]
    install part or all of a product through the load phase only, making it available for enabling or fully installing on another machine across the network. (Loaded software is not configured for use.) Follow this option with a list of packages to load part of a product. If you do not specify a package list, custom loads the entire product.
If package is the name of a software patch, then -p product must name the product with which the patch is distributed, not the product to which the patch is applied.
-p product
    specify the product or parcel on which custom acts. The product name consists of a vendor part and a product code part separated by a colon (for example, SCO:odtps). You can also specify multiple products for installation. 
-r [ package ... ]
    remove part or all of a product. Follow this option with a list of packages to remove part of a product. If you do not specify a package list, custom removes the entire product.
If package is the name of a loaded software patch, custom unloads that patch. In this case, -p product must name the product with which the patch is distributed, not the product to which the patch is applied.
-R [ package ]
    roll back an applied software patch. (Rollback reverses the -A apply option, but does not unload a patch that is actually loaded on the system.) package must name the software component that contains the patch.
You can only roll back the most-recently applied patch. Run custom -R several times in succession to roll back more than one patch.
-t [ package ... ]
    unexport the listed packages. 
-u [ package ... ]
    upgrade part or all of a currently installed product. Use this option without an argument to upgrade only the currently installed packages. Follow the option with a list of packages to install additional packages of the same product. 
-v type [ package ... ]
    verify system software, where type is quick, thorough, config, symlinks, or strict. Depending on the type specified, -v and -V check for broken or missing symbolic links, and incorrect file permissions, owner, group, and number of hard links. (To fix these discrepancies automatically, include the -x.) The verification can also check for missing files and for incorrect file type, checksum, and size. (These discrepancies cannot be fixed with the -x option -- these must be fixed manually after exiting custom.) You can use your backups or the customextract(ADM) utility to restore missing files.

    quick
        check for broken or missing symbolic links, incorrect file permissions, owner, group, and number of hard links. Does not report on size or checksum changes for configuration (non-shared) files, because these often change as part of normal operation. It does not verify checksums for shared files, nor does it remove a ``corrupt'' setting in the custom database. 
thorough verify the checksums for shared files in the selected packages, in addition to the checks made during the quick option. This option removes a ``corrupt'' setting from the custom database.
config report checksum changes for configuration (non-shared) files, showing which configuration files have changed since installation. Also verifies permissions, owner, group, number of hard links, symbolic link target, export location, file type, and size for each configuration file in the selected packages.
symlinks report symbolic links that should link a file from /opt or /var/opt to an external directory, but are broken or missing. A weekly cron job runs this option on the entire system and mails the report to root.
strict report all discrepancies, including expected discrepancies such as changed configuration files and missing optional files. This option can take a long time.

-V

    same as -v, except it verifies the entire product. 
-x
    fix file permissions, ownership, and other details.
Use -x with the -v and -V options.
-w [ package ... ]
    change product or component database(s) to match how the files currently appear on the system. This is a very dangerous procedure.
Follow this option with a list of packages to change just the part of the database covering specific packages. If you do not specify a package list, custom changes the entire product or component database.
These options specify an installation source other than the default media device:

-F image_file ...

    specify a list of image files to use in place of removable media. Use full pathnames for the image files.
You can use -F with the -i, -L, and -u options.
-m device
    specify an installation media device other than the default device, /dev/rinstall. (/dev/rinstall is also called the 0 device, as in /dev/fd0.) The device argument must be a valid block or character device name.
You can use -m with the -i, -L, and -u options.
-z image_directory
    specify a directory of image files to use in place of removable media. Use the directory's full pathname.
You can use -z with the -i, -L, and -u options.
These options let you manage software on another machine or install software from another machine:

-h machine

    execute custom on the specified machine (or ``host''), for networked software management. 
-N machine
    specify a machine on the network serving as the source of the software to be installed. The software can be installed or loaded on the named machine or can reside on removable media or in image files on the named machine.
You must supply a password when prompted.
These options are used by the Installation Query Manager (IQM):

-g

    display the (post-IQM) progress messages of the initial system load in graphical mode. 
-n
    prevent custom from prompting the user to insert media. 
-Q
    specify that custom is being executed from the IQM. 
Desktop options Entering:
custom [ -h machine ]
without any other options or arguments runs a completely interactive custom session. The -h option executes the session on the specified machine.
The custom Software Manager window appears with a list of the software products currently installed on your local host. Each line gives the product name and release number, a symbol indicating the installation state of the product, and a symbol indicating whether you can view the packages of the product.
From this window, you can:
    * Access a remote system (from the Host menu)
* Exit custom (from the Host menu)
* Run the installation task (from the Software menu)
The installation procedure takes you through several windows, which prompt you to name the type of media (or the source machine) you are installing from, choose a full or partial installation, and (if choosing a partial installation) select the packages to install.
* Remove products or packages (from the Software menu)
After you select the packages for removal from the Software Manager window, additional windows prompt you to confirm the removal and remind you of any dependencies.
* Verify (and optionally fix) file permissions, ownership, and other details (from the Software menu)
The verify procedure prepares a report of any discrepancies found between the files on the system and the corresponding product or component database. The procedure then offers any or all of the following choices: print the report, save the report to a file, and correct discrepancies.
* Examine the files, dependencies, applied patches, PRD value, version number, size, and installation state of products or packages (from the Software menu)
* Load software (from the Software menu, under Advanced Options)
The load procedure resembles the installation procedure, but the software is only copied from the media, and is not configured for use.
* Update a product or component database (from the Software menu, under Advanced Options)
This is a very dangerous procedure.
* Apply, roll back, load, unload, or view patches on installed software (from the Software menu)
* View the components and packages in a product (by double-clicking on a list item, or from the View menu)
Old-format command options The information in this section should only be used to administer programs or scripts that were written under an old version of custom.
Each old custom command line must specify a set and an action (unless it uses the -a action option, which does not require a set).
The set determines which component custom acts on. The set option is:

-s prd

    specify the prd value (short product code) of the product you want custom to act on. 
Include only one action option on each command line. For action options that accept a package list, list the package names as they appear on the package definition lines (marked by #@) in the component perms list (for example, BASE CSH). Separate the package names with spaces.
The action options are:

-a package ...

    install part or all of a new product. -a does not require an accompanying set specifier, but you must specify a package list following the option. To install the entire new product, specify the ALL package. 
-i [ package ... ]
    install or re-install part or all of a set. Follow this option with a list of packages to install part of a set. If you do not specify a package list, custom installs the entire set. 
-l [ package ... ]
    list some or all of the files in a set. Follow this option with a list of packages to list part of a set. If you do not specify a package list, custom lists the entire set. 
-r [ package ... ]
    remove part or all of a set. Follow this option with a list of packages to remove part of a set. If you do not specify a package list, custom removes the entire set. 
You can also specify an alternative media device:

-m device

    specify an installation media device other than the default device, /dev/rinstall. (/dev/rinstall is also called the 0 device, as in /dev/fd0.) The device argument must be a valid block or character device name.
You can use -m with the -i and -a options.
Examples To install the CORE and XDEV packages of the UNIX Development System component (unixds) of the Open Desktop Development System product (ods), enter:
custom -p SCO:ods -i SCO:unixds:CORE SCO:unixds:XDEV
To upgrade the previously installed packages of the ods product, using the /dev/rinstall1 drive, enter:
custom -p SCO:ods -u -m /dev/rinstall1
To install the entire ods product from the remote machine mcgee, enter:
custom -N mcgee -p SCO:ods -i
To install the entire ods product from the image directory /u/user1/ods/archives/TAPE, enter:
custom -p SCO:ods -i -z /u/user1/ods/archives/TAPE
To install the entire ods product from a list of image files, enter:
custom -p SCO:ods -i -F /u/user1/product1/file1 /u/user1/product1/file2
To remove the CORE and XDEV packages of the unixds component of the ods product, enter:
custom -p SCO:ods -r SCO:unixds:CORE SCO:unixds:XDEV
Examples in the old format To install the CORE and XDEV packages of the Development System component (unixds) of the Open Desktop Development System product (odtds), enter:
custom -s unixds -i CORE XDEV
To install the TCPSRC package of whatever new product is in the /dev/rinstall1 drive, enter:
custom -a TCPSRC -m /dev/rinstall1
Warning The product database and component databases define what files exist in a product, where they reside, what their permissions are, and everything else that determines the product's behavior. Therefore, if you change a product or component database with the -w option (or the Update database graphical option), you change the product itself. You no longer have the same product you installed, and the only way to return to the original product is to reinstall. Limitations custom does not let you manipulate individual files. If, for example, a file becomes damaged or destroyed, you must use customextract(ADM) to install individual files. When using custom on the console to install a new package, if you select CD-ROM for the media without a CD in the CD-ROM driver, an error message prints on top of the screen, garbling the custom display. You should be able to correct this problem by forcing the screen to redraw with <Ctrl>R. Files

/var/opt/K/SCO/SoftMgr/*/custom/custom.log

    custom log file 
History The main changes to custom (new command line options, new syntax, and a new graphical interface) are detailed in the ``Description'' and ``Options'' sections of this manual page. Read those sections carefully.
Some of the specific changes to watch for include:
    * custom now accepts single-volume products (such as drivers) on DOS-format floppies.
* custom no longer uses ``Services'' or ``Service Components.''
* The command line for old-format custom no longer includes these options: -d (specifying the Development System set), -o (specifying the Operating System set), -b (enforcing dependencies specified in bundled products), or -v (specifying verbose output).
See also customquery(ADM), df(C), du(C), fixperm(ADM), hierarchy(M), customextract(ADM), installpkg(ADM), perms(F), xinstall(ADM)
``Installing and managing software components'' in Installing and removing software Standards conformance custom is conformant with Intel386 Binary Compatibility Specification, Edition 2 (iBCSe2); it is an extension to AT&T System V developed by The Santa Cruz Operation, Inc.
gerberb@zenez.com
[Append to This Answer]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's :
Package Management with Software Development Tools (UnixWare 7/OpenServer 6)
Software development tools

Below is the location on the SCO site for Software Development Tools.

  http://uw714doc.sco.com/en/SDK_tools/CONTENTS.html

This is for UnixWare 7.1.x and OpenServer 6
gerberb@zenez.com

Subcategories:

Answers in this category:
(Answer) Orignal Tools for UnixWare 7.1.4

[New Answer in "Package Management with Software Development Tools (UnixWare 7/OpenServer 6)"]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's : (Category) Package Management with Software Development Tools (UnixWare 7/OpenServer 6) :
Orignal Tools for UnixWare 7.1.4
The .pkg format was the original tool set for UnixWare 7.1.X.
gerberb@zenez.com
[Append to This Answer]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's :
Metapkg
Metapkg is the new tool for creating packages for OpenServer 5.0.X, OpenServer 6, and UnixWare 7.1.4.
gerberb@zenez.com
Subcategories:

Answers in this category:
(Answer) What is Metapkg.
(Answer) Using Metapkg to create custom and pkgadd installable packages.

[New Answer in "Metapkg"]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's : (Category) Metapkg :
What is Metapkg.
Metapkg creates the installable packages for OpenServer 5.0.7, OpenServer 6, and UnixWare 7. It is the prefered tool.
gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's : (Category) Metapkg :
Using Metapkg to create custom and pkgadd installable packages.
From the presentation at the SCO TEC Forum 2008
  This was presented by Ron Record and John Wolfe of SCO.
Their entire presentation is at
http://www.sco.com/2008forum/presentations/Record_Wolfe_Packaging_Tools_OSR6_UW714.pdf

Below is the instructions from the presentation. Special Thanks go to both Ron Record and John Wolfe.

Download and install the latest metapkg media images

  ftp://ftp2.sco.com/pub/skunkware/osr6/vols/

Metapkg documentation is installed in

  /usr/share/doc/packages/metapkg/
Metapkg examples are installed in
  /usr/share/doc/packages/metapkg/examples/
Metapkg convenience scripts are installed in
  /usr/share/doc/packages/metapkg/scripts/
The metapkg and reman binaries as well as mkcdmt and mkpkgadd symbolic links are installed in /usr/bin/

 Create input directory and populate dist directory
Create dist/cntl/ scripts, if any
Create <package name>.mkcdmt control file
Specify non-default permissions and ownership
Symbolic links specified as additional exports
Dependencies and updated versions listed here
Run mkcdmt. For example:
mkcdmt -f -h -d `pwd` -P gimp \ -D "GNU Image Manipulation Program" \ -V 2.2.7Sb -p `pwd`/gimp.mkcdmt
Run make

Sample Metapkg Control File.

 prepare ("Checking and preparing distribution") {
 auto_compress_texinfo();
 auto_format_mansource();
 auto_strip(TRUE,TRUE);
 }
 package ("/", "${METAPKG_DESCRIPTION}", "QT3") {
 file ("/usr/lib/qt3/mkspecs/unixware-cc/qmake.conf") {
 access (SERVER);
 }
 file ("/usr/lib/qt3/lib/libqt-mt.so.3.3.8") {
 addexport ("/usr/lib/qt3/lib/libqt-mt.so", normal);
 }
 }
 component ("qt3", "${METAPKG_VERSION}", "${METAPKG_DESCRIPTION}") {
 dependency ("SCO:gwxlibs");
 upgrades("^3.3.5*");
 }

Shortcut Scripts

 See /usr/share/doc/packages/metapkg/scripts/
 Create a gzip'd tar archive of the distribution files relative to / and name 
 it <package name>-<version>-dist.tar.gz
Place the gzip'd tar archive in the /dist/ directory that the setup shell script points to
Create an empty directory <package name> in the packaging directory and cd into it
Run ../setup
Run the listlinks script to create entries for symbolic links in the file /tmp/<package name>-symlinks
Edit <package name>.mkcdmt adding the above file to the “package” section. Run “MakeCDMT” then “make”


CDMT/Metapkg Documentation

 CDMT documentation
http://osr600doc.sco.com/en/manCDMT/CONTENTS.html
SCO Software Manager (custom) documentation
http://osr600doc.sco.com/en/man/html.ADM/custom.ADM.html
Installing and Managing Software Components
http://osr600doc.sco.com/en/INS_install/swaN.admin.html
Installing/Managing Software Over a Network
http://osr600doc.sco.com/en/INS_install/swnetN.netinstall.html
Metapkg documentation
ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/metapkg/doc
Porting Guide:
http://www.sco.com/support/docs/openserver/600/porting/osr6portingTOC.html
Upgrade Guide:
http://www.sco.com/support/docs/openserver/600/upgrade/index.html
Online Documentation and Late News
http://www.sco.com/support/docs/openserver
OpenServer 6 Support Download Page:
http://www.sco.com/support/update/download/product.php?pfid=12&prid=20
SCO “Legend” Mailing List: Public
Legend-subscribe@list.sco.com
legend@sco.com
Porting/Migration Alias:
osr5to6@sco.com
Knowledge base: http://wdb1.sco.com/kb/search


[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's :
What is the recommended Packaging Tool?
Metapkg is the recommended tool set.
  ftp://ftp2.sco.com/pub/skunkware/osr5/devtools/metapkg/doc/

 Name    Size    Last Modified
 File:README.txt         1 KB    07/27/2007      12:00:00 AM
 File:cdmt.txt           3 KB    07/27/2007      12:00:00 AM
 File:changes.txt        7 KB    07/27/2007      12:00:00 AM
 File:control.txt       45 KB    07/27/2007      12:00:00 AM
 File:pkgadd.txt         4 KB    07/27/2007      12:00:00 AM
 File:usage.txt          7 KB    07/27/2007      12:00:00 AM
 File:xml.txt            1 KB    07/27/2007      12:00:00 AM

gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's :
How to use Metapkg
MetaPKG Command Line Usage


MetaPKG has several command line options that are required, and many more that control the way in which packages are generated. This document describes the main driver program's command line options. Each backend driver can add options of its own.

Preparation

Before invoking MetaPKG, you must ensure that your distribution tree is laid out in a very specific manner. Many of these paths are hard-coded into MetaPKG, so be careful with file and directory names.

MetaPKG starts its work in a BASE DIRECTORY. Lets call this $BASE. This directory is expected to contain at least a directory called dist/. Lets call this directory $DIST. This is the directory that contains the software you want to distribute in a package. For historical reasons, and showing its CDMT lineage, $BASE is also expected to contain a directory called input/, which we will call $INPUT. This is the directory in which all of the packaging files will be generated. It is the input into the packaging system.

The files in $DIST are typically the results of doing `make install'. MetaPKG knows how to deal with two types of distribution tree: flat and productized. A flat $DIST is one that contains only a single package, and will likely contain direcories called `/usr/bin' or `/usr/lib' etc. This type of structure is used when you are packaging one single program as an installable product. A productized $DIST is one that contains multiple programs, each of which will be a package in its own right, grouped into one or more components. In this case each subdirectory under $DIST contains a discrete package which has its own `/usr/bin' or `/usr/lib' etc. MetaPKG uses the name of each subdirectory to contruct a default package name, which can be changed in a MetaPKG control script. Unless otherwise instructed, MetaPKG will create a single component which contains all of the packages. You can invoke MetaPKG in `component mode', in which case each subdirectory under $DIST will create a new component containing a single package. Using the control script, you can fine tune this to any degree you like, creating components that group packages together in any way you chose.

Please note that the arguments here can also all be set via a control script file. All except for the -p argument, which names the control file, and the -d argument, which sets $BASE.

Required Arguments

-d directory

  Sets $BASE to the specified directory. Remember $BASE must contain the
-P string
  Sets the product name to the specified STRING. The string must be valid
  for the chosen backend driver (see below).
-C string
  Sets the component code to STRING. The STRING must be valid for the
  chosen backend driver. If you are not running MetaPKG in component mode,
  this is simply the default component name to which any dangling packages
  (packages that were not explicitly added to a component in the control
  script) will be assigned.
-D string
  Sets the description of the product to STRING.
-V string
  Sets the version of the product to STRING. This must be a valid version
  for the backend driver.
-B name
  Sets the backend driver to the driver specified by NAME.  Use the -?
  argument to list all of the compiled in backends. This option may be
  omitted if the `metapkg' binary is linked to a name that automatically
  selects a backend driver. For example, if invoked as `mkcdmt', the
  `cdmt' driver will automatically be selected, or if invoked as `mkpkg',
  the `pkgadd' driver will automatically be selected. See the documentation
  on each driver for the list of names that each one recognises.
Optional Arguments ------------------
-p file
  Use the specified FILE as a control script file.
-f
  Indicates that $DIST is a flat hierarchy. That is, it contains only a
  single package.
-c
  Sets `multiple component' mode. Indicates that $DIST has more than one
  package, and rather than making a single component that includes all
  of the packages, make a component for each directory found, which contains
  a single package that is the contents of the directory.
-i
  Instructs MetaPKG to use the permissions exactly as they are found in
  $DIST. Usually, MetaPKG guesses the correct ownership and permissions.
  This flags indicates that that work has already been done in preparing
  the $DIST directory.
-m
  Usually, manual page source files are omitted. This tells MetaPKG to
  include manual page source files in the installable product.
-v
  Usually, MetaPKG guesses the correct disposition for files. This option
  tells MetaPKG to treat all files as `variable' files, or files that can
  have their contents changed.
-s
  The reciprocal of -v. Instructs MetaPKG to make all files `static'.
-r
  For backends that support it, instruct MetaPKG to make all files
  available early (in the CDMT backend for example, means to always
  export files in the REGISTER phase).
-M name[=value]
  Defines macro NAME. If no VALUE is specified, set it to the value `1'.
  Otherwise, set it to the specified VALUE. Such macros are only useful
  to the control script.
-I list
  Control auto-preparation functions. This option has a different meaning
  depending on whether or not a control file is being used. If a control
  file *is* being used, the LIST is a list of auto-preparation functions
  to ignore, even if they are specified in the control file. If there is
  no control file being used, LIST indicates the list of auto-preparation
  functions to execute before processing each package. The list can be
  one or more of the following, each separated by a comma:
    automan   - do (or do not) automatically format man pages
    autotexi  - do (or do not) automatically compress TeXinfo files
    autostrip - do (or do not) strip and mcs -d all binaries
    reman     - do not obey explicit reman directives in the control file
    texifo    - do not obey explicit texinfo directives in the control file
    exec      - do not obey exec or script directives in the control file
    all       - all of the above.
-W
  Indicates that any warning messages are OK, and that MetaPKG should go
  ahead and produce output files regardless of the warnins.
-X level file
  Sets debugging to the specified LEVEL, and to be redirected to the given
  FILE. The higher the LEVEL, the more verbose the debugging output.
-N
  Normally MetaPKG will automatically add inter-package and inter-component
  dependencies as they are defined in the control file. This option will
  stop that from happening, and you should ensure that all dependencies are
  correctly set in the control file.
-?
  Displays the program usage information, lists the defined backends and
  the program and backend version numbers.

gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's :
Porting Guide (OpenServer 6)
SCO online Porting Guide
  http://www.sco.com/support/docs/openserver/600/porting/osr6portingTOC.html

gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Packaging for SCO OS's :
Upgrading from OpenServer 5.0.X to OpenServer 6.0.
This is the online docs from SCO.

  http://www.sco.com/support/docs/openserver/600/upgrade/index.html

gerberb@zenez.com
[Append to This Answer]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. :
Known bugs in SCO Programming Environments.
This sections lists known problems and when possible, workarounds for SCO programming environments including SCO's compilers, Visual Tcl, Java, and scripting.

It is important to remember that robertl is not the FAQ maintainer. YOU are the FAQ maintainer. If you're tired of answering a question or seeing it answered in comp.unix.sco.programmer it is your duty as a good net.citizen to plonk the answer into this FAQ.


robertlipe@usa.net

Answers in this category:
(Answer) C++ program chokes on time functions
(Answer) 3.2v4 /bin/ar mangles archives with full pathnames
(Answer) icc and byteorder.h
(Answer) I found a bug in the compiler.
(Answer) SCO-3.2v4.2 include file fixes for MySQL
(Answer) Why doesn't gethostbyname() return the IP address correctly when dynamically linked?
(Answer) Patches for gcc-3.3.1 for OpenServer 5.0.x
[New Answer in "Known bugs in SCO Programming Environments."]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Known bugs in SCO Programming Environments. :
C++ program chokes on time functions
Detail the missing extern "C" stuff in headers, how to fix.

FIxed in OpenServer 5.0.4.
robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Known bugs in SCO Programming Environments. :
3.2v4 /bin/ar mangles archives with full pathnames
doctor doctor
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Known bugs in SCO Programming Environments. :
icc and byteorder.h
edit to test __i386
robertlipe@usa.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Known bugs in SCO Programming Environments. :
I found a bug in the compiler.
Yes, there are some. It's far more likely there's an error in your program.

describe how to diagnose if it really is or not.
robertlipe@usa.net

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Known bugs in SCO Programming Environments. :
SCO-3.2v4.2 include file fixes for MySQL
The fixes I have found that are need for SCO UNIX 3.2v4.2 are available at:

ftp://ftp.zenez.com/pub/zenez/prgms/SCO-3.2v4.2-includes.tar.gz
Have fun.
gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Known bugs in SCO Programming Environments. :
Why doesn't gethostbyname() return the IP address correctly when dynamically linked?
When gethostbyname() was used in a dynamic library with a dependency
on libsocket and libc it failed to return the IP address correctly in
hostent->h_addr_list[0], giving 255.255.255.255 instead of the correct
address for my machine, frodo, of 192.168.0.130.

The library code is in libbad.c and the test driver in t0001.c below.
When compiled this way, it failed.

cc -w3 -g -c -belf -o t0001dynlib.o t0001.c
cc -w3 -g -c -belf -o libbaddynlib.o libbad.c
cc -G -belf -o libbaddynlib.so libbaddynlib.o -lsocket -lc
LD_RUN_PATH=$PWD cc -belf -o asdynlib-fail t0001dynlib.o -L$PWD -lbaddynlib 

When compiled this way (without the -lsocket/-l on the dynamic library line it)
it worked.

cc -w3 -g -c -belf -o t0001dynlib.o t0001.c
cc -w3 -g -c -belf -o libbaddynlib.o libbad.c
cc -G -belf -o libbaddynlib.so libbaddynlib.o 
LD_RUN_PATH=$PWD cc -belf -o asdynlib-works t0001dynlib.o -L$PWD -lbaddynlib -lsocket -lc

I had this problem on OpenServer 5.0.6a with version 5.1.2A of the linker.
To fix I applied oss646a and that seemed to fix everything.  Presumably the
same fix will work for 5.0.5a, although I couldn't test the original working
version as that would not compile without -lsocket -lc for the dynamic
library.

os001:jonm $ cat libbad.c
#include <netdb.h>
struct hostent *my_gethostbyname(char *name) {
        struct hostent *my_hostent;

        my_hostent = gethostbyname(name);

        return my_hostent;
}

os001:jonm $ cat t0001.c
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

int main(void) {
        int errs = 0;
        struct hostent *h;
        struct hostent *my_gethostbyname(char*);

        h = my_gethostbyname("localhost");
        if (h == NULL) {
                fprintf(stderr, "localhost FAIL - gethostbyname\n");
                errs++;
        } else if (h->h_addr[0] == -1 && h->h_addr[1] == -1 &&
            h->h_addr[2] == -1 && h->h_addr[3] == -1) {
                fprintf(stderr, "localhost FAIL - IP address\n");
                errs++;
        } else {
                fprintf(stderr, "localhost OK - %d.%d.%d.%d\n",
                    h->h_addr[0], h->h_addr[1], h->h_addr[2], h->h_addr[3]);
        }

        h = my_gethostbyname("frodo");
        if (h == NULL) {
                fprintf(stderr, "frodo FAIL - gethostbyname\n");
                errs++;
        } else if (h->h_addr[0] == -1 && h->h_addr[1] == -1 &&
            h->h_addr[2] == -1 && h->h_addr[3] == -1) {
                fprintf(stderr, "frodo FAIL - IP address\n");
                errs++;
        } else {
                fprintf(stderr, "frodo OK - %s\n", inet_ntoa(*(struct in_addr *)h->h_addr));
        }

        return (errs != 0);
}
jonm@alchemetrics.co.uk
cobrakings@263.net
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Known bugs in SCO Programming Environments. :
Patches for gcc-3.3.1 for OpenServer 5.0.x
Thanks to Kean
Here is what you need...

Download gcc from ftp.gnu.org

 ftp://ftp.gnu.org/gnu/gcc/gcc-3.3.1.tar.gz
 
You need to download these patches and patch gcc-3.3.1
 ftp://ftp.zenez.com/pub/zenez/prgms/331patch.bz2
bunzip2 331patch.gz2
apply patch
In the gcc-3.3.1 directory I make an "osr5" directory. cd into that and then execute: CC=gcc CFLAGS=-O2 CXX=g++ CXXFLAGS=-O2 NM=gnm ../configure \
   --with-gnu-as \
   --with-as=/usr/gnu/bin/as \
   --disable-shared \
   --with-system-zlib \
   --enable-multilib \
   --host=i586-pc-sco3.2v5.0 \
   --build=i586-pc-sco3.2v5.0
This assumes you have my latest GNU Development Tools package installed and that /usr/gnu/bin appears on your PATH *before* /usr/local/bin. This passes the vast majority of its internal DejaGNU tests. Its about the best shape GCC has been in on OSR5 in a long while. But there are problems, especially with C++. The way they handle template instantiation is awkward. You may find you need to link C++ programs and shared libraries with -Wl,-z -Wl,multidefs. The real solution is for us to change our link editor to recognize these .gnu.linkonce sections and obey them, or to get the GNU link editor working on OSR5, something I am fairly close to getting right but it is still a way off. But at least this gets you most of the way there. I am curious to know how this works out for you.
This set of patches adds full support for gjc, the GNU Java Compiler.
Kean.
gerberb@zenez.com
[Append to This Answer]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. :
Third-party Languages and Development Tools for SCO Platforms
These answers list third-party language and development tools that are available on various SCO platforms.

This information comes from vendors' web pages, product sheets, etc. Please update the information if you have more current knowledge.

Usually, platforms later than those listed will also work. So if you see a product listed for OpenServer 5.0.4 or UnixWare 7, you can likely assume the product runs on OpenServer 5.0.5 or UnixWare 7.1 as well.

Sometimes vendors have listings for a generic "SVR4 Intel", which means it will usually run on UnixWare 2 or UnixWare 7, or less commonly, for a generic "SVR3 Intel", which means it will probably run on SCO UNIX or OpenServer.

Finally, when in doubt, ask the vendor.
gerberb@zenez.com, jls@sco.com

Subcategories:

Answers in this category:
(Answer) What COBOL compilers are available for SCO?
(Answer) What Fortran compilers are available for SCO?
(Answer) What Ada compilers are available for SCO?
(Answer) What about BASIC, Pascal, or Modula-2 for SCO?
(Answer) What CORBA implementations are available for SCO?
(Answer) What 4GLs are available for SCO?
(Answer) What IDEs are available for SCO?
(Answer) SCOTruss by Troy DeJongh and Eric Sybesma
(Answer) Comeau C/C++ supports Standard C++for SCO (Caldera) OS's

[New Answer in "Third-party Languages and Development Tools for SCO Platforms"]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Third-party Languages and Development Tools for SCO Platforms :
What COBOL compilers are available for SCO?
Micro Focus v4.1 (Object COBOL); v4 (COBOL 85)
        OSR5.0.x, UW 2.1.2, UW 7 (with ptf7013), SCO UNIX
        http://www.microfocus.com

ACUCOBOL v4.1.0CL (COBOL 85)
        OSR5.0.x, UW 2.0, SCO UNIX, Xenix
        http://www.acucobol.com

Liant RM/COBOL 85 v6.6.1
        "on SCO UNIX"
        http://www.liant.com
        
jls@sco.com
Customers have also reported that Fujistu COBOL, formerly for PCs, is now available for UNIX (presumably including SCO) as well.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Third-party Languages and Development Tools for SCO Platforms :
What Fortran compilers are available for SCO?
Edinburgh Portable Compilers (EPC) Fortran 90
        UW 2.x
        http://www.epc.com
g77 (GNU Fortran 77)
        OSR5, UW7 from Skunkware egcs distribution
        http://www.sco.com/skunkware , http://egcs.cygnus.com
Microway NDP Fortran 77
        x86 UNIX V.3 and V.4
        http://www.microway.com

jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Third-party Languages and Development Tools for SCO Platforms :
What Ada compilers are available for SCO?
Ada 95
        Janus/A95 v. 3.1.0 for SCO UNIX 3.2
        GNU-based GNAT ( http://www.gnat.com )
                has a UnixWare 7 port

Ada 83
        Alsys for OSR5, SVR4 Intel, SCO UNIX 3.2
        IntegrAda, Janus/Ada, VADS, Green Hills for SCO UNIX 3.2
        http://www.adaresource.org
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Third-party Languages and Development Tools for SCO Platforms :
What about BASIC, Pascal, or Modula-2 for SCO?
BASIC
        Thoroughbred Software Business BASIC
        http://www.tbred.com

Pascal
        EPC Pascal for UW 2.x; http://www.epc.com
        MicroWay NDP Pascal for x86 UNIX V.3, V.4; http://www.microway.com

Modula-2
         EPC Modula-2 for UW 2.x; http://www.epc.com
jls@sco.com
Bbx4 and /or Visual Pro5, both upwards compatible to Thouroughbred's SMC basic ( (and has conversion tools for SMC) see http:/www.basis.com
A.Sas@katwijkfarma.nl
CET Basic. Info at http://www.phaseonesystems.com
jmdubois@free.fr
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Third-party Languages and Development Tools for SCO Platforms :
What CORBA implementations are available for SCO?
First the commercial ones....

Iona Orbix (C++)
        Orbix v. 2.3c on UW 7.0.1, UW 2.1.2
        Orbix v. 3 not yet in QA process for SCO platforms
        http://www.iona.com

Iona OrbixWeb (Java)
        OrbixWeb v. 3.1 on JDK 1.1.3u
        Later versions on JDK 1.1.7A under test

PeerLogic (ex-ICL) DAIS on UW 7
        (the only ORB officially released for UW 7)
        http://www.peerlogic.com/products/dais/f_dais.htm
        also DAIS J2 for JDK 1.1.x

Inprise VisiBroker, as part of UW7 Netscape Enterprise
        ORB is exposed via IIOP interface

Inprise VisiBroker for Java on JDK 1.1.5 or higher
        http://www.inprise.com/visibroker

Expersoft CORBAplus, Java Edition on JDK 1.1.x
        http://www.expersoft.com


Now some freeware ones....

OmniORB2 v. 2.5.0 on Skunkware 98 for OSR5
        we are trying to get better threading with v. 2.7.0

Chorus COOL-ORB
        once on OSR5, now discontinued?

MICO

ILU     ftp://ftp.parc.xerox.com/pub/ilu

Corbus  http://www.bbn.com/products/dpom/corbus.htm

Electra http://www.olsen.ch/~maffeis/electra.html
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Third-party Languages and Development Tools for SCO Platforms :
What 4GLs are available for SCO?
Oracle Developer 2000 v. 2.1
        UW7, UW 2.1.2
        http://www.oracle.com

Informix Dynamic 4GL v. 2.10
        UW7, OSR5; earlier version OSR5, UW 2.1.2
        http://www.informix.com

Unify ACELL IDS 4GL
        OSR5.0.4; earlier version UW 2.1, SCO UNIX
        http://www.unify.com

Recital 8.0 Unix Developer
        OSR5.0.0, UW 2.1.1, SCO UNIX 3.2v4.2
        http://www.recital.com; single-user non-commercial is free
jls@sco.com
I've been told by customers that the Informix 4GL also runs on OSR5 and Xenix.
Customers have used the Ingres 4GL, as well as ICL DMS.
The Sybase 4GL is also thought to work on OSR5.
In general, if a database itself is supported on a SCO platform, then it's likely (though not necessarily certain) an acommpanying 4GL does as well.
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Third-party Languages and Development Tools for SCO Platforms :
What IDEs are available for SCO?
TakeFive SNiFF+
        full-featured, support C/C++/Java IDE for UW7
        http://www.takefive.com
        ftp://ftp.takefive.com/pub/SNiFF/patches/3.0.2 for UDK debugger integration

Sun Java WorkShop (for programmers), Sun Java Studio (for power end-users)
        through 1998, both in UDK (UW7, OSR5, UW2)
        new version in 1999 becoming "open source" -- will become available on Skunkware.

Freeware alternatives (working on getting into Skunkware):
        Code Crusader, http://www.cco.caltech.edu/~jafl/jcc/ , inspired by Metrowerks
        RHIDE, http://www.tu-chemnitz.de/~sho/rho/rhide-1.4/rhide.html , inspired by Borland
        xwpe-alpha, http://www.rpi.edu/~payned/xwpe/ , inspired by Borland
        gIDE, http://gide.pn.org , based on freeware GTK+ toolkit
        more development resources at http://tx.us.mirrors.freshmeat.net/appindex/development/
jls@sco.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Third-party Languages and Development Tools for SCO Platforms :
SCOTruss by Troy DeJongh and Eric Sybesma
Eric Sybesma and Troy DeJongh have written scotruss a program that gives truss-like capablilites for the SCO Operating System.
The latest version can be found at http://pobox.com/~troyd/
http://pobox.com/~troyd/scotruss.tar.gz gzip'ed http://pobox.com/~troyd/scotruss.tar.Z compress'ed
Troy DeJongh can be reached via email at troyd@pobox.com
gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Third-party Languages and Development Tools for SCO Platforms :
Comeau C/C++ supports Standard C++for SCO (Caldera) OS's
Comeau C/C++ supports Standard C++, Standard C90, and Standard C99, and is available for the different SCO operating systems. For more info check

   http://www.comeaucomputing.com


Comeau Computing <comeau@comeaucomputing.com>
gerberb@zenez.com

[Append to This Answer]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. :
Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0
Information to help with OpenServer, UnixWare and OpenUNIX.
gerberb@zenez.com
Subcategories:

Answers in this category:
(Answer) Latest Versions of SCO OS's are OpenServer is 5.0.7, UnixWare is 7.1.4, SCO Linux 4.0, OpenServer 6.
(Answer) Perl5.005_03 patches and additions for UnixWare 7.1.0
(Answer) Patches for Roxen Challenger 1.3.X
(Answer) Where can I find information on migration from OpenServer to UnixWare or OpenUNIX ?
(Answer) To compile MySQL-3.23.56 on UnixWare 7.1.x or OpenUNIX 8.0.0 you will need these patches.
(Answer) Openssl-0.9.6i patch for OpenServer 5.0.X.
(Answer) How do I get openssl-.0.9.6x to compile and make shared libraries on OpenServer 5.0.X, UnixWare 7.1.X and OpenUNIX 8.0.0?
(Answer) How do I make a test for a SCO OS for preprocessor in ..., code specific to SCO Operating Systems.
(Answer) How can I get cvs-1.11.5 to compile?
(Answer) What is needed for MySQL-4.0.X to compile on OpenServer 5.0.X?
(Answer) How do I get gnupg to compile for SCO OS's?

[New Answer in "Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0"]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
Latest Versions of SCO OS's are OpenServer is 5.0.7, UnixWare is 7.1.4, SCO Linux 4.0, OpenServer 6.
The latest versions just released by SCO are
OpenServer 5.0.7, OpenServer 5.0.7V,
UnixWare Version 7.1.4,
OpenServer 6.0.
 For more information check http://www.sco.com/

SCO has gone back to the name UnixWare from OpenUNIX 8.0.0(UnixWARE 7.1.2).
gerber@zenez.com, gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
Perl5.005_03 patches and additions for UnixWare 7.1.0
The patches for this are available at
ftp://www.zenez.com/pub/zenez/prgms/perl5.005_03-patches/
There are three files. Configure.patch to patch Configure in the top level of the distribution. sco.sh.patch to patch hints/sco.sh
svr5.sh A new file that goes in hints to allow building with cc or gcc with or with out threads. To get threads with gcc you must use gcc-2.95.1 or newer.
gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
Patches for Roxen Challenger 1.3.X
The following are the patches required to get roxen Challenger 1.3.x through the latest 1.3.122 to compile and work. These are for configure.in

ftp://ftp.zenez.com/pub/zenez/prgms/roxen_1.3.x.patches.tar.gz
To installed them cd to roxen directroy.
Copy files to the roxen directory and gunzip them.
tar xf roxen.1.3.x.patches.tar
run autoconf in the top level and in pike/0.6/src directrories.
Make sure your OSR 5.0.X kernel NOFILES is set to 2048 or more and your UnixWare 7.1.X kernel HFNOLIM is set to 4096.
gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
Where can I find information on migration from OpenServer to UnixWare or OpenUNIX ?
SCO has removed the portal. There is information on.
http://www.sco.com/


Please search the SCO site.
gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
To compile MySQL-3.23.56 on UnixWare 7.1.x or OpenUNIX 8.0.0 you will need these patches.
The patches are on ftp.zenez.com in pub/zenez/prgms/mysql-3.23.56-patches-ou8.

ftp://ftp.zenez.com/pub/zenez/prgms/mysql-3.23.56-patches-ou8/

These are not needed in newer versions of MySQL. Like MySQL-4.X.X or MySQL-5.X.X.
gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
Openssl-0.9.6i patch for OpenServer 5.0.X.
The following is a patch that helps performance on OpenServer 5.0.x. It was provided by Kean Johnston <jkj@sco.com>


The patch is available at

ftp://ftp.zenez.com/pub/zenez/prgms/openssl-0.9.6i-osr5.patches.gz

Good Luck,
<jkj@sco.com>
gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
How do I get openssl-.0.9.6x to compile and make shared libraries on OpenServer 5.0.X, UnixWare 7.1.X and OpenUNIX 8.0.0?
You run Configure with one of the following options.

UnixWare 7
unixware-7 unixware-7-gcc unixware-7-pentium unixware-7-pentium_pro unixware-7-shared unixware-7-gcc-shared

 $ ./Configure unixware-7-shared
 $ make
 $ make test
 # make install

Then I created and installed the shared libraries with...

 $ shlib/svr5-shared.sh
 $ shlib/svr5-shared-installed.sh

Updated shlib files can be had at...

ftp://ftp.zenez.com/pub/zenez/prgms/svr5-shared.sh ftp://ftp.zenez.com/pub/zenez/prgms/svr5-shared-installed ftp://ftp.zenez.com/pub/zenez/prgms/svr5-shared-gcc.sh


OpenUNIX
OpenUNIX-8 OpenUNIX-8-gcc OpenUNIX-8-pentium OpenUNIX-8-pentium_pro OpenUNIX-8-shared OpenUNIX-8-gcc-shared I used Configure OpenUNIX-8-shared....

 $ ./Configure OpenUNIX-8-shared
 $ make
 $ make test
 # make install

Then I created and installed the shared libraries with...

 $ shlib/svr5-shared.sh
 $ shlib/svr5-shared-installed.sh

Updated shlib files can be had at...

ftp://ftp.zenez.com/pub/zenez/prgms/svr5-shared.sh ftp://ftp.zenez.com/pub/zenez/prgms/svr5-shared-installed ftp://ftp.zenez.com/pub/zenez/prgms/svr5-shared-gcc.sh


OpenServer 5.0.X
sco5-cc sco5-cc-pentium sco5-cc-shared sco5-gcc sco5-gcc-shared

 $ ./Configure sco5-gcc-shared
 $ make
 $ make test
 # make install

Then I created and installed the shared libraries with...

 $ shlib/svr5-shared.sh
 $ shlib/svr5-shared-installed.sh

Updated shlib files can be had at...
ftp://ftp.zenez.com/pub/zenez/prgms/sco5-shared.sh ftp://ftp.zenez.com/pub/zenez/prgms/sco5-shared-installed ftp://ftp.zenez.com/pub/zenez/prgms/sco5-shared-gcc.sh


Openssl-0.9.7 shlib files are available at

ftp://ftp.zenez.com/pub/zenez/prgms/openssl-0.9.7-shlib/


Good Luck,


gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
How do I make a test for a SCO OS for preprocessor in ..., code specific to SCO Operating Systems.
I use the following and put the specific defines needed between the if and endif


I have found that is only works with the SCO native compilers.

 This one can be used for UnixWare 7.1.4 and OpenServer 6.  It is good
 to detect them from OpenServer 5.0.7.
# if defined(__USLC___)
This is the best for general SCO OS detection. # if defined(__SCO_VERSION__) # endif


This seems to work with all compilers, but check.

 # if defined(_SCO_DS)
 
 # endif

gerberb@zenez.com
[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
How can I get cvs-1.11.5 to compile?
You need the following patches.


 ftp://ftp.zenez.com/pub/zenez/prgms/INSTALL.patch
 ftp://ftp.zenez.com/pub/zenez/prgms/diff-system.h.patch
 ftp://ftp.zenez.com/pub/zenez/prgms/lib-system.h.patch
 ftp://ftp.zenez.com/pub/zenez/prgms/src-buffer.c.patch
 ftp://ftp.zenez.com/pub/zenez/prgms/src-buffer.h.patch

These file need to be changed in the diff, lib and src directories.

gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
What is needed for MySQL-4.0.X to compile on OpenServer 5.0.X?
You need the latest version of FSU-threads.
This version is no longer needed. MySQL-4.0.20 will compile and work with the orignal FSUtreads 3.14.

There is currently a test version of FSU-threads-3.14a.tar.gz on

ftp://ftp.zenez.com/pub/zenez/prgms/FSU-threads-3.14a.tar.gz

The above is needed for MySQL-4.0.17, and MySQL-4.0.18.

Please use
ftp://ftp.zenez.com/pub/zenez/prgms/FSU-threads.tar.gz

gerberb@zenez.com

[Append to This Answer]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) Misc for OpenServer 5.0.X/ Unixware 7.x.x / OpenUNIX 8.x.x/ OpenServer 6.0 :
How do I get gnupg to compile for SCO OS's?
GnuPG use asm unless it is disabled. To get gnuPG to compile try using.
 ./configure --disable-asm

gerberb@zenez.com
[Append to This Answer]
(Category) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. :
How to Find FAQ
Please look for the FAQ on http://www.zenez.com/cgi-bin/scoprogfaq/faq
gerber@zenez.com, gerberb@zenez.com
Subcategories:

Answers in this category:
(Answer) Also look on http://www.zenez.com/cgi-bin/scoprogfaq/faq

[New Answer in "How to Find FAQ"]
(Answer) (Category) Xinuos/ SCO comp.unix.sco.programmer FAQ. : (Category) How to Find FAQ :
Also look on http://www.zenez.com/cgi-bin/scoprogfaq/faq
[Append to This Answer]
This document is: http://www.zenez.com/cgi-bin/scoprogfaq/faq?file=1
[Search] [Appearance] [Show Top Category Only]
This is a Faq-O-Matic 2.721.