init repo.
This commit is contained in:
290
third_party/curl/packages/vms/curl_gnv_build_steps.txt
vendored
Normal file
290
third_party/curl/packages/vms/curl_gnv_build_steps.txt
vendored
Normal file
@@ -0,0 +1,290 @@
|
||||
From File: curl_gnv_build_steps.txt
|
||||
|
||||
Copyright (C) John Malmberg
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
SPDX-License-Identifier: ISC
|
||||
|
||||
Currently building Curl using GNV takes longer than building Curl via DCL.
|
||||
The GNV procedure actually uses the same configure and makefiles that
|
||||
Unix builds use.
|
||||
|
||||
Building CURL on OpenVMS using GNV requires GNV V2.1-2 or the updated
|
||||
images that are available via anonymous FTP at encompasserve.org in the gnv
|
||||
directory. It also requires the GNV Bash 4.2.45 kit as an update from the
|
||||
same location or from the sourceforge.net GNV project.
|
||||
|
||||
The HP C 7.x compiler was used for building the GNV version.
|
||||
|
||||
The source kits are provided in backup savesets inside of the PCSI install kit.
|
||||
|
||||
Backup save sets are currently the only distribution medium that I can be
|
||||
sure is installed on a target VMS system that will correctly unpack files
|
||||
with extended character sets in them. You may need to adjust the ownership
|
||||
of the restored files, since /Interchange/noconvert was not available at the
|
||||
time that this document was written.
|
||||
|
||||
[gnv.common_src]curl_*_original_src.bck is the original source of the curl kit
|
||||
as provided by the curl project. [gnv.vms_src]curl-*_vms_src.bck, if present,
|
||||
has the OpenVMS specific files that are used for building that are not yet in
|
||||
the curl source kits for that release distributed https://curl.se
|
||||
|
||||
These backup savesets should be restored to different directory trees on
|
||||
an ODS-5 volume(s) which are referenced by concealed rooted logical names.
|
||||
|
||||
SRC_ROOT: is for the source files common to all platforms.
|
||||
VMS_ROOT: is for the source files that are specific to OpenVMS.
|
||||
Note, you should create the VMS_ROOT: directory tree even if it is
|
||||
initially empty. This is where you should put edits if you are
|
||||
making changes.
|
||||
LCL_ROOT: is manually created to have the same base and sub-directories as
|
||||
SRC_ROOT: and VMS_ROOT:
|
||||
|
||||
The logical name REF_ROOT: may be defined to be a search list for
|
||||
VMS_ROOT:,SRC_ROOT:
|
||||
|
||||
The logical name PRJ_ROOT: is defined to be a search list for
|
||||
LCL_ROOT:,VMS_ROOT:,SRC_ROOT:
|
||||
|
||||
For the make install process to work, it must have write access to the
|
||||
directories referenced by the GNU: logical name.
|
||||
|
||||
In future releases of GNV, and with GNV Bash 4.3.30 installed, this name
|
||||
should be GNV$GNU:
|
||||
|
||||
As directly updating those directories would probably be disruptive to other
|
||||
users of the system and require elevated privilege, this can be handled by
|
||||
creating a separate directory tree to install into which can be referenced
|
||||
by the concealed rooted logical name new_gnu:. A concealed logical name of
|
||||
OLD_GNU: can be set up to reference the real GNV directory tree.
|
||||
|
||||
Then a local copy of the GNU/GNV$GNU logical names can be set up as a search
|
||||
list such as NEW_GNU:,OLD_GNU:
|
||||
|
||||
The directory NEW_GNU:[usr] should be created. The make install phase should
|
||||
create all the other directories.
|
||||
|
||||
The make install process may abort if curl is already because it can not
|
||||
uninstall the older version of curl because it does not have permission.
|
||||
|
||||
The file stage_curl_install.com is used set up a new_gnu: directory tree
|
||||
for testing. The PCSI kitting procedure uses these files as input.
|
||||
|
||||
These files do not create the directories in the VMS_ROOT and LCL_ROOT
|
||||
directory trees. You can create them with commands similar to:
|
||||
|
||||
$ create/dir lcl_root:[curl]/prot=w:re
|
||||
$ copy src_root:[curl...]*.dir -
|
||||
lcl_root:[curl...]/prot=(o:rwed,w:re)
|
||||
$ create/dir vms_root:[curl]/prot=w:re
|
||||
$ copy src_root:[curl...]*.dir -
|
||||
vms_root:[curl...]/prot=(o:rwed,w:re)
|
||||
|
||||
One of the ways with to protect the source from being modified is to have
|
||||
the directories under src_root: owned by a user or resource where the build
|
||||
username only has read access to it.
|
||||
|
||||
|
||||
Note to builders:
|
||||
|
||||
GNV currently has a bug where configure scripts take a long time to run.
|
||||
Some of the configure steps take a while to complete, and on a 600 Mhz
|
||||
DS10 with IDE disks, taking an hour to run the CURL configure is normal.
|
||||
|
||||
The following messages can be ignored and may get fixed in a future version
|
||||
of GNV. The GNV$*.OPT files are used to find the libraries as many have
|
||||
different names on VMS than on Unix. The Bash environment variable
|
||||
GNV_CC_QUALIFIERS can override all other settings for the C Compiler.
|
||||
|
||||
? cc: No support for switch -warnprotos
|
||||
? cc: Unrecognized file toomanyargs
|
||||
? cc: Warning: library "ssl" not found
|
||||
? cc: Warning: library "crypto" not found
|
||||
? cc: Warning: library "gssapi" not found
|
||||
? cc: Warning: library "z" not found
|
||||
u unimplemented switch - ignored
|
||||
|
||||
|
||||
With these search lists set up and the properly, curl can be built by
|
||||
setting your default to PRJ_ROOT:[curl.packages.vms] and then issuing
|
||||
either the command:
|
||||
|
||||
$ @pcsi_product_gnv_curl.com
|
||||
|
||||
or
|
||||
|
||||
$ @build_gnv_curl.com.
|
||||
|
||||
The GNV configure procedure takes considerably longer than the DCL build
|
||||
procedure takes. It is of use for testing the GNV build environment, and
|
||||
may not have been kept up to date.
|
||||
|
||||
The pcsi_product_gnv_curl.com needs the following logical names which
|
||||
are described in the section below:
|
||||
|
||||
gnv_pcsi_producer
|
||||
gnv_pcsi_producer_full_name
|
||||
stage_root
|
||||
vms_root1 (Optional if vms_root is on a NFS volume)
|
||||
src_root1 (Optional if src_root is on a NFS volume)
|
||||
|
||||
The pcsi_product_gnv_curl.com is described in more detail below. It does
|
||||
the following steps. The build steps are only done if they are needed to
|
||||
allow using either DCL or GNV based building procedures.
|
||||
|
||||
$ @build_vms list
|
||||
|
||||
$ @gnv_link_curl.com
|
||||
|
||||
$ @build_gnv_curl_release_notes.com
|
||||
|
||||
$ @backup_gnv_curl_src.com
|
||||
|
||||
$ @build_gnv_curl_pcsi_desc.com
|
||||
|
||||
$ @build_gnv_curl_pcsi_text.com
|
||||
|
||||
$ @stage_curl_install remove
|
||||
$ @stage_curl_install
|
||||
|
||||
Then builds the kit.
|
||||
|
||||
The build_gnv_curl.com command procedure does the following:
|
||||
|
||||
$ @setup_gnv_curl_build.com
|
||||
|
||||
$ bash gnv_curl_configure.sh
|
||||
|
||||
$ @clean_gnv_curl.com
|
||||
|
||||
$ bash make_gnv_curl_install.sh
|
||||
|
||||
$ @gnv_link_curl.com
|
||||
|
||||
$ @stage_curl_install.com
|
||||
|
||||
$ purge new_gnu:[*...]/log
|
||||
|
||||
To clean up after a GNV based build to start over, the following commands are
|
||||
used:
|
||||
|
||||
$ bash
|
||||
bash$ cd ../..
|
||||
bash$ make clean
|
||||
bash$ exit
|
||||
|
||||
Then run the @clean_gnv_curl.com. Use the parameter "realclean" if you are
|
||||
going to run the setup_gnv_curl_build.com and configure script again.
|
||||
|
||||
$ @clean_gnv_curl.com realclean
|
||||
|
||||
If new public symbols have been added, adjust the file gnv_libcurl_symbols.opt
|
||||
to have the new symbols. If the symbols are longer than 32 characters,
|
||||
then they will need to have the original be exact case CRC shortened and
|
||||
an alias in upper case with CRC shortened, in addition to having an exact
|
||||
case truncated alias and an uppercase truncated alias.
|
||||
|
||||
The *.EXE files are not moved to the new_gnu: directory.
|
||||
|
||||
After you are satisfied with the results of your build, you can move the
|
||||
files from new_gnu: to old_gnu: at your convenience.
|
||||
|
||||
Building a PCSI kit for an architecture takes the following steps after
|
||||
making sure that you have a working build environment.
|
||||
|
||||
Note that it requires manually creating two logical names as described
|
||||
below. It is intentional that they be manually set. This is for
|
||||
branding the PCSI kit based on who is making the kit.
|
||||
|
||||
1. Make sure that you have a staging directory that can be referenced
|
||||
by the path STAGE_ROOT:[KIT]
|
||||
|
||||
2. Edit the file curl_release_note_start.txt or other text files to
|
||||
reflect any changes.
|
||||
|
||||
3. Define the logical name GNV_PCSI_PRODUCER to indicate who is making
|
||||
the distribution. For making updates to an existing open source
|
||||
kit you may need to keep the producer the same.
|
||||
|
||||
4. Define the logical name GNV_PCSI_PRODUCER_FULL_NAME to be your full
|
||||
name or full name of your company.
|
||||
|
||||
5. If you are producing an update kit, then update the file
|
||||
vms_eco_level.h by changing the value for the VMS_ECO_LEVEL macro.
|
||||
This file is currently only used in building the PCSI kit.
|
||||
|
||||
6. Edit the file PCSI_GNV_CURL_FILE_LIST.TXT if there are new files added
|
||||
to the kit. These files should all be ODS-2 legal filenames and
|
||||
directories.
|
||||
|
||||
A limitation of the PCSI kitting procedure is that when selecting files,
|
||||
it tends to ignore the directory structure and assumes that all files
|
||||
with the same name are the same file, so every file placed in the kit
|
||||
must have a unique name. Then a procedure needs to be added to the kit
|
||||
to create an alias link on install and remove the link on remove.
|
||||
|
||||
Since at this time curl does not need this alias procedure, the steps
|
||||
to automatically build it are not included here.
|
||||
|
||||
While newer versions of PCSI can support ODS-5 filenames, not all versions
|
||||
of PCSI on systems that have ODS-5 filenames do. So as a post install
|
||||
step, the PCSI kit built by these steps does a rename to the correct
|
||||
case as a post install step.
|
||||
|
||||
7. Edit the build_curl_pcsi_desc.com and build_curl_pcsi_text.com if you
|
||||
have changed the version of ZLIB that curl is built against.
|
||||
|
||||
8. Prepare to backup the files for building the kit.
|
||||
|
||||
Note that if src_root: or vms_root: are NFS mounted disks, the
|
||||
step of backing up the source files will probably hang or fail.
|
||||
|
||||
You need to copy the source files to VMS mounted disks and create
|
||||
logical names SRC_ROOT1 and VMS_ROOT1 to work around this to
|
||||
reference local disks. Make sure src_root1:[000000] and
|
||||
vms_root1:[000000] exist and can be written to.
|
||||
|
||||
The command procedure compare_curl_source can be used to check
|
||||
those directories and keep them up to date.
|
||||
|
||||
@compare_curl_source.com SRCBCK UPDATE
|
||||
|
||||
This compares the reference project source with the backup
|
||||
staging directory for it and updates with any changes.
|
||||
|
||||
@compare_curl_source.com VMSBCK UPDATE
|
||||
|
||||
This compares the VMS specific source with the backup
|
||||
staging directory for it and updates with any changes.
|
||||
|
||||
Leave off "UPDATE" to just check without doing any changes.
|
||||
|
||||
If you are not using NFS mounted disks and do not want to have a
|
||||
separate directory for staging the sources for backup make sure
|
||||
that src_root1: and vms_root1: do not exist.
|
||||
|
||||
9. Build the PCSI kit with @pcsi_product_gnv_curl.com
|
||||
|
||||
The following message is normal:
|
||||
%PCSI-I-CANNOTVAL, cannot validate
|
||||
EAGLE$DQA0:[stage_root.][kit]VMSPORTS-AXPVMS-CURL-V0731-0-1.PCSI;1
|
||||
-PCSI-I-NOTSIGNED, product kit is not signed and therefore has
|
||||
no manifest file
|
||||
|
||||
This will result in an uncompressed kit for the target platform.
|
||||
On Alpha and Integrity, the pcsi_product_gnv_curl.com can be used with
|
||||
the "COMPRESSED" parameter to build both a compressed and uncompressed
|
||||
kits.
|
||||
|
||||
Good Luck.
|
||||
Reference in New Issue
Block a user