1
0
mirror of https://github.com/moparisthebest/curl synced 2025-02-28 09:21:50 -05:00

packages/vms: update VMS build files

VMS modified files either missing from a previous commit and changes
to remove references to CVS repositories.
This commit is contained in:
John Malmberg 2013-08-08 13:11:29 +02:00 committed by Yang Tse
parent 058b86e6f3
commit 27f8c93daf
8 changed files with 307 additions and 67 deletions

View File

@ -340,18 +340,64 @@ $ file = "[]config_vms.h"
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[]config.h"
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[]curl-config."
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[]libcurl.pc"
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[.lib.cxx_repository]cxx$demangler_db."
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[.src.cxx_repository]cxx$demangler_db."
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[.lib]config_vms.h"
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[...]curl_crtl_init"
$ if f$search("''file'.lis") .nes. "" then delete/log 'file'.lis;*
$ if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
$ file = "[...]gnv$curlmsg"
$ if f$search("''file'.lis") .nes. "" then delete/log 'file'.lis;*
$ if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
$ if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
$ file = "[...]curlmsg"
$ if f$search("''file'.lis") .nes. "" then delete/log 'file'.lis;*
$ if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
$ if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
$ file = "[...]report_openssl_version"
$ if f$search("''file'.lis") .nes. "" then delete/log 'file'.lis;*
$ if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
$ if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
$ file = "[...]hp_ssl_release_info.txt"
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[...]gnv_libcurl_xfer.mar_exact"
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[...]gnv_libcurl_xfer"
$ if f$search("''file'.lis") .nes. "" then delete/log 'file'.lis;*
$ if f$search("''file'.obj") .nes. "" then delete/log 'file'.obj;*
$ if f$search("''file'.opt") .nes. "" then delete/log 'file'.opt;*
$ file = "[...]curl-*_original_src.bck"
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[...]curl-*_vms_src.bck"
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[...]curl-*.release_notes"
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[...]*curl*.pcsi$desc"
$ if f$search(file) .nes. "" then delete/log 'file';*
$ file = "[...]*curl*.pcsi$text"
$ if f$search(file) .nes. "" then delete/log 'file';*
$!
$ if clean_all .eq. 0 then goto Common_Exit
$ endif
$!
$!
$ if clean_all .ne. 0
$ then
$ file = "[...]gnv$libcurl"
$ if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
$ if f$search("''file'.map") .nes. "" then delete/log 'file'.map;*
$ if f$search("''file'.dsf") .nes. "" then delete/log 'file'.dsf;*
$ file = "[.src]curl"
$ if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
$ if f$search("''file'.map") .nes. "" then delete/log 'file'.map;*
$ if f$search("''file'.dsf") .nes. "" then delete/log 'file'.dsf;*
$ prods = proc_dev_dir - delim + ".ALPHA" + delim + "*.*;*"
$ if (f$search(prods) .nes. "") then delete /log 'prods'
$ prods = proc_dev_dir + "ALPHA" + ".DIR;1"
@ -367,6 +413,9 @@ $ if (f$search(prods) .nes. "") then delete /log 'prods'
$ prods = proc_dev_dir + "VAX"+ ".DIR;1"
$ if (f$search(prods) .nes. "") then set prot=o:rwed 'prods'
$ if (f$search(prods) .nes. "") then delete /log 'prods'
$ file = "[...]macro32_exactcase"
$ if f$search("''file'.exe") .nes. "" then delete/log 'file'.exe;*
$ if f$search("''file'.jnl") .nes. "" then delete/log 'file'.jnl;*
$ goto Common_Exit
$ endif
$!

View File

@ -211,6 +211,15 @@ $!
$ file = "lcl_root:[.packages.vms]macro32_exactcase.exe"
$ if f$search(file) .nes. "" then delete 'file';*
$!
$ file = "lcl_root:[.packages.vms]report_openssl_version.exe"
$ if f$search(file) .nes. "" then delete 'file';*
$!
$ file = "lcl_root:[.packages.vms]hp_ssl_release_info.txt"
$ if f$search(file) .nes. "" then delete 'file';*
$!
$ file = "lcl_root:[.src]curl.exe"
$ if f$search(file) .nes. "" then delete 'file';*
$!
$all_exit:
$!
$! Put the default back.

View File

@ -43,7 +43,7 @@ $! The copy directory is vms_root:[project_name]
$! The UPDATE parameter is ignored.
$!
$! This setting is used to make sure that the working vms directory
$! and the CVS checkout directory have the same contents.
$! and the repository checkout directory have the same contents.
$!
$! If P1 is "SRCBCK" then this
$! The source directory tree is: src_root:[project_name]
@ -55,7 +55,7 @@ $!
$! This is to make sure that the backup save set for the unmodified
$! source is up to date.
$!
$! If your CVS checkout is not on an NFS mounted volume, you do not
$! If your repository checkout is not on an NFS mounted volume, you do not
$! need to use this option or have the logical name src_root1 defined.
$!
$! If P1 is "VMSBCK" then this changes the two directories:
@ -195,8 +195,6 @@ $ ref_name = f$parse(ref_spec,,,"NAME")
$ ref_type = f$parse(ref_spec,,,"TYPE")
$!
$!
$ if f$locate(".CVS]", ref_dir) .lt. f$length(ref_dir) then goto loop
$
$ rel_path = ref_dir - "[" - ref_base_dir
$! rel_path_len = f$length(rel_path) - 1
$! delim = f$extract(rel_path_len, 1, rel_path)
@ -336,12 +334,6 @@ $!
$ wrk_skip = 0
$ ref_utype = f$edit(ref_type,"UPCASE")
$ ref_ufname = f$edit(ref_fname,"UPCASE")
$ if ref_ufname .eqs. "CVS.DIR" then wrk_skip = 1
$ if ref_fname .eqs. ".cvsignore" then wrk_skip = 1
$ if ref_fname .eqs. "Entries." then wrk_skip = 1
$ if ref_fname .eqs. "Repository." then wrk_skip = 1
$ if ref_fname .eqs. "Root." then wrk_skip = 1
$!
$!
$ if wrk_skip .eq. 0
$ then

View File

@ -1,7 +1,5 @@
From File: curl_gnv_build_steps.txt
$Id$
Copyright 2009, John Malmberg
Permission to use, copy, modify, and/or distribute this software for any
@ -23,7 +21,7 @@ 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.
same location or from the sourceforge.net GNV project.
The HP C 7.x compiler was used for building the GNV version.
@ -51,14 +49,15 @@ VMS_ROOT: is for the source files that are specific to OpenVMS.
LCL_ROOT: is manually created to have the same base and sub-directories as
SRC_ROOT: and VMS_ROOT:
The logical name REF_ROOT: is defined to be a logical name that is a search
list for VMS_ROOT:,SRC_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 logical name that is a search
list for LCL_ROOT:,REF_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.2.45 installed, this name
should be GNV$GNU:
@ -71,9 +70,15 @@ 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 will
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:
@ -131,13 +136,13 @@ This command procedure does the following:
$ @gnv_link_curl.com
$ purge new_gnu:[*...]/log
$ @stage_curl_install.com
$ purge new_gnu:[*...]/log
To clean up after a build to start over, the following commands are used:
$ bash
bash$ export GNV_DISABLE_DCL_FALLBACK=1
bash$ cd ../..
bash$ make clean
bash$ exit
@ -161,6 +166,10 @@ files from new_gnu: to old_gnu: at your convenience.
Building a PCSI kit for an archictecture 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]
@ -174,9 +183,9 @@ making sure that you have a working build environment.
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 define the logical name
GNV_PCSI_PATCHLEVEL to the letter E followed by a number. Do not
use a patch level for kits built from the daily CVS snapshot.
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
@ -196,15 +205,49 @@ making sure that you have a working build environment.
step, the PCSI kit built by these steps does a rename to the correct
case as a post install step.
7. Build the PCSI kit with @pcsi_product_gnv_curl.com
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 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]JEM-AXPVMS-CURL-D0719-6-1.PCSI;1
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 both compressed and uncompressed kits for the target
platform.
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.

View File

@ -278,7 +278,8 @@ and before installing Curl.
$PRODUCT EXTRACT FILE -
/select=(ssl$libcrypto_shr32.exe,ssl$libssl_shr32.exe)-
/source=device:[dir] -
/destination=device:[vms$common.gnv.lib]
/options=noconfirm -
/destination=device:[vms$common.gnv.lib] SSL
The [vms$common.sys$startup}curl_startup.com procedure will then configure
libcurl to use these shared images instead of the system ones.

View File

@ -136,7 +136,7 @@ $! We encode the snapshot date into the version as an ECO since a daily
$! can never have an ECO.
$!
$! version_type = 'V' for a production release, and 'D' for a build from a
$! daiy CVS snapshot.
$! daiy snapshot of the curl source.
$ majorver = f$element(0, ".", raw_version)
$ minorver = f$element(1, ".", raw_version)
$ raw_update = f$element(2, ".", raw_version)

View File

@ -11,6 +11,11 @@ History:
15-MAR-2004, MSK, Updated to reflect the new files in this directory.
14-FEB-2005, MSK, removed config-vms.h_with* file comments
10-FEB-2010, SMS. General update.
14-Jul-2013, JEM, General Update, add GNV build information.
The release notes installed by the PCSI kit consist of this file and the
curl_gnv_build_steps.txt and other useful information.
Prerequisites:
@ -20,37 +25,161 @@ OpenSSL or hp SSL, if you want SSL support
What is Here:
This directory contains the following files:
This directory contains the following files for a DCL based build.
backup_gnv_curl_src.com This procedure backs up the source modules for
creating a PCSI kit.
build_curl-config_script.com
Procedure to create the curl-config script.
build_gnv_curl.com This procedure does a build of curl using the
GNV utilities and then uses DCL tools to build
the libcurl shared image. The setup_gnv_curl_build.com
procedure must be run first.
build_gnv_curl_pcsi_desc.com
This procedure builds the pcsi$desc file for
creating a PCSI based package.
build_gnv_curl_pcsi_text.com
This procedure builds the pcsi$text file for
creating a PCSI based package.
build_gnv_curl_release_notes.com
This procedure creates the release notes for
a PCSI kit based on curl_release_note_start.txt,
this readme file, and the curl_gnv_build_steps.txt
build_libcurl_pc.com Procedure to create a libcurl.pc file.
build_vms.com DCL based build procedure.
clean_gnv_curl.com This procedure cleans up the files generated by
a GNV based build.
config_h.com DCL based procedure used by build_vms.com
to run generate the curl_config.h file.
This is a generic procedure that does most
of the work for generating config.h files.
compare_curl_source.com Procedure to compare the working directory
with a repository directory or a backup staging
directory.
curl_crtl_init.c A special pre-initialization routine to for
programs to behave more Unix like when run
under GNV.
curl_gnv_build_steps.txt
Detailed instructions on how to built curl using
GNV and how to build the libcurl shared image and
PCSI kit.
curl_release_note_start.txt
The first part of the curl release notes.
curl_startup.com A procedure run at VMS startup to install the
libcurl shared image and to set up the needed
logical names.
build_vms.com Build procedure.
config-vms.h VMS-specific config.h.
curlmsg.h C header defining cURL status code macros.
curlmsg.msg Error message source for curlmsg.h and curlmsg.sdl.
curlmsg.sdl SDL source defining cURL status code constants.
curlmsg_vms.h Mapping of cURL status codes to VMS-form codes.
hpssl_alpha.opt LINK options file for HP SSL on Alpha.
hpssl_ia64.opt LINK options file for HP SSL on IA64.
hpssl_vax.opt LINK options file for HP SSL on VAX.
ldap.opt LINK options file for LDAP.
generate_config_vms_h_curl.com
DCL procedure to generate the curl specific
definitions for curl_config.h that config_h.com
can not properly generate.
generate_vax_transfer.com
DCL procedure to read an Alpha/IA64 symbol vector
linker option file and generate the VAX transfer
vector modules.
gnv_conftest.c_first A helper file for the configure script.
gnv_curl_configure.sh A script to run the configure script with the
options needed for VMS.
gnv_libcurl_symbols.opt The symbol vectors needed for Alpha and IA64
libcurl shared image.
gnv_link_curl.com Links the libcurl shared image and then links a curl
image to use the libcurl.
macro32_exactcase.patch The patch file needed to modify VAX Macro32 to be
case sensitive and case preserving.
Makefile.am cURL kit file list for this directory.
Makefile.in cURL kit makefile source for this directory.
openssl_alpha.opt LINK options file for OpenSSL on Alpha.
openssl_ia64.opt LINK options file for OpenSSL on IA64.
openssl_ssl_alpha.opt LINK options file for OpenSSL (SSL_ prefix) on Alpha.
openssl_ssl_ia64.opt LINK options file for OpenSSL (SSL_ prefix) on IA64.
openssl_ssl_vax.opt LINK options file for OpenSSL (SSL_ prefix) on VAX.
openssl_vax.opt LINK options file for OpenSSL on VAX.
make_gnv_curl_install.sh
Script to do a make install using GNV after running
the configure script.
make_pcsi_curl_kit_name.com
This generates the name of the PCSI kit based on
the version of curl being built.
pcsi_gnv_curl_file_list.txt
This is a text file describing what files should
be included in a PCSI kit.
pcsi_product_gnv_curl.com
This generates the PCSI kit after the libcurl
shared image has been made.
readme. This file.
report_openssl_version.c
Program to check that the openssl version is new
enough for building a shared libcurl image.
setup_gnv_curl_build.com
This procedure sets up symbols and logical names
for a GNV build environment and also copies some
helper files.
stage_curl_install.com This procedure sets up new_gnu: directory tree to
for testing the install and building the PCSI kit.
It takes a "remove" option to remove all the staged
files.
vms_eco_level.h This sets the ECO level for the PCSI kit name.
How to Build:
The (brute-force) builder is [.packages.vms]build_vms.com. Comments in
this procedure describe various optional parameters which enable or
disable optional program features, or which control the build in other
ways. Product files (.EXE, .H, .LIS, .MAP, .OBJ, .OLB, ...) should be
produced in an architecture-specific subdirectory under this directory
([.ALPHA], [.IA64], [.VAX]).
The GNV based build and the DCL based build procedures are not compatible
and you must make sure that none of the build files are present before
running a different type of build. Use the "REALCLEAN" option for
BUILD_VMS.COM and the "REALCLEAN" option for clean_gnv_curl.com.
The (brute-force) DCL based builder is [.packages.vms]build_vms.com.
Comments in this procedure describe various optional parameters which
enable or disable optional program features, or which control the build
in other ways. Product files (.EXE, .H, .LIS, .MAP, .OBJ, .OLB, ...)
should be produced in an architecture-specific subdirectory under this
directory ([.ALPHA], [.IA64], [.VAX]).
The file curl_gnv_build_steps.txt contains information on buildling using
the GNV tool kit, building a shared libcurl, and producting a PCSI kit for
distribution. The curl_gnv_build_steps.text is included in the release
notes file of the PCSI kit.
The building with 64 bit pointers does not currently work.
The build procedure will detect if HP OpenSSL, LDAP, and Kerberos are
installed and default to building with them.
The build procedure will also detect if a compatible ZLIB shared image
is installed from a PCSI kit and default to using it.
Example build commands:
@ -58,13 +187,42 @@ produced in an architecture-specific subdirectory under this directory
@ [.packages.vms]build_vms.com LARGE LDAP
submit /noprint [.packages.vms]build_vms.com /param = (LARGE, LDAP)
The build_vms.com procedure does not build the shared image file or the PCSI
kit. If you have built a curl with ZLIB and HPSSL support as well as if
LDAP and Kerberos installed, you can use the GNV_LINK_CURL.COM file.
The GNV_LINK_CURL.COM contains information on how to link and run with a newer
version of HP SSL than what may be install on an Alpha or IA64 based system.
To build the PCSI kit, follow the the instructions in the file
curl_gnv_build_steps.txt.
Other Notes:
This release fixes known bugs #22, and #57 in the [curl.docs]known_bugs.
file.
The libcurl formdata.c module and Curl tools post form now have some
understanding of VMS file types. Files will be posted in STREAM_LF format.
The Curl tool now has some understanding of VMS file types and will upload the
files in STREAM_LF fomat.
When CURL is uploading a VARIABLE format VMS file, it is less efficient as in
order to get the file size, it will first read the entire file once, and then
read the file again for the actual upload.
The Curl tool will now always download files into STREAM_LF format. Even if a
file by that name with a different format already exists. This is needed to
allow interrupted downloads to be continued.
The libcurl file module still does not understand VMS file types and requires
the input files to be in STREAM_LF to work propery.
The test suites are not supported as of 7.11.0.
The curlmsg.sdl and curlmsg.h files are generated from curlmsg.msg.
This is not done automatically, since the .MSG file is a hand edit
of the relevant stuff from the curl.h file. If you want to do this
yourself you'll need the SDL package from the freeware collection.

View File

@ -269,26 +269,14 @@ $ endif
$!
$!
$!
$! Need to build the GNV common init module.
$! Need to build the common init module.
$!-------------------------------------------
$ if f$search("[vms_common]vms_crtl_init_unix.obj") .nes. ""
$ init_obj = "[.packages.vms]curl_crtl_init.obj"
$ if f$search(init_obj) .eqs. ""
$ then
$! Common copy, which should be more up to date than the one in the kit.
$!------------------------------------------------------------------------
$ define/job gnv_vms_common [vms_common]
$ write sys$output "Using common vms_crtl_init_unix.obj"
$ else
$! For some reason the common files are missing so use the local copies
$!------------------------------------------------------------------------
$ define/job gnv_vms_common 'default_dir'
$ init_obj = "gnv_vms_common:vms_crtl_init_unix.obj"
$ if f$search(init_obj) .eqs. ""
$ then
$ cc'cflags' 'default_dir'vms_crtl_init.c-
/define=GNV_UNIX_TOOL=1/obj='init_obj'
$ purge 'init_obj'
$ rename 'init_obj' ;1
$ endif
$ cc'cflags' 'default_dir'curl_crtl_init.c/obj='init_obj'
$ purge 'init_obj'
$ rename 'init_obj' ;1
$ endif
$!
$all_exit: