Annotation of embedaddon/curl/packages/vms/curl_gnv_build_steps.txt, revision 1.1
1.1 ! misho 1: From File: curl_gnv_build_steps.txt
! 2:
! 3: Copyright 2009 - 2020, John Malmberg
! 4:
! 5: Permission to use, copy, modify, and/or distribute this software for any
! 6: purpose with or without fee is hereby granted, provided that the above
! 7: copyright notice and this permission notice appear in all copies.
! 8:
! 9: THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 10: WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 11: MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 12: ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 13: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 14: ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
! 15: OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 16:
! 17: Currently building Curl using GNV takes longer than building Curl via DCL.
! 18: The GNV procedure actually uses the same configure and makefiles that
! 19: Unix builds use.
! 20:
! 21: Building CURL on OpenVMS using GNV requires GNV V2.1-2 or the updated
! 22: images that are available via anonymous FTP at encompasserve.org in the gnv
! 23: directory. It also requires the GNV Bash 4.2.45 kit as an update from the
! 24: same location or from the sourceforge.net GNV project.
! 25:
! 26: The HP C 7.x compiler was used for building the GNV version.
! 27:
! 28: The source kits are provided in backup savesets inside of the PCSI install kit.
! 29:
! 30: Backup save sets are currently the only distribution medium that I can be
! 31: sure is installed on a target VMS system that will correctly unpack files
! 32: with extended character sets in them. You may need to adjust the ownership
! 33: of the restored files, since /Interchange/noconvert was not available at the
! 34: time that this document was written.
! 35:
! 36: [gnv.common_src]curl_*_original_src.bck is the original source of the curl kit
! 37: as provided by the curl project. [gnv.vms_src]curl-*_vms_src.bck, if present,
! 38: has the OpenVMS specific files that are used for building that are not yet in
! 39: the curl source kits for that release distributed https://curl.haxx.se
! 40:
! 41: These backup savesets should be restored to different directory trees on
! 42: an ODS-5 volume(s) which are referenced by concealed rooted logical names.
! 43:
! 44: SRC_ROOT: is for the source files common to all platforms.
! 45: VMS_ROOT: is for the source files that are specific to OpenVMS.
! 46: Note, you should create the VMS_ROOT: directory tree even if it is
! 47: initially empty. This is where you should put edits if you are
! 48: making changes.
! 49: LCL_ROOT: is manually created to have the same base and sub-directories as
! 50: SRC_ROOT: and VMS_ROOT:
! 51:
! 52: The logical name REF_ROOT: may be defined to be a search list for
! 53: VMS_ROOT:,SRC_ROOT:
! 54:
! 55: The logical name PRJ_ROOT: is defined to be a search list for
! 56: LCL_ROOT:,VMS_ROOT:,SRC_ROOT:
! 57:
! 58: For the make install process to work, it must have write access to the
! 59: directories referenced by the GNU: logical name.
! 60:
! 61: In future releases of GNV, and with GNV Bash 4.3.30 installed, this name
! 62: should be GNV$GNU:
! 63:
! 64: As directly updating those directories would probably be disruptive to other
! 65: users of the system and require elevated privilege, this can be handled by
! 66: creating a separate directory tree to install into which can be referenced
! 67: by the concealed rooted logical name new_gnu:. A concealed logical name of
! 68: OLD_GNU: can be set up to reference the real GNV directory tree.
! 69:
! 70: Then a local copy of the GNU/GNV$GNU logical names can be set up as a search
! 71: list such as NEW_GNU:,OLD_GNU:
! 72:
! 73: The directory NEW_GNU:[usr] should be created. The make install phase should
! 74: create all the other directories.
! 75:
! 76: The make install process may abort if curl is already because it can not
! 77: uninstall the older version of curl because it does not have permission.
! 78:
! 79: The file stage_curl_install.com is used set up a new_gnu: directory tree
! 80: for testing. The PCSI kitting procedure uses these files as input.
! 81:
! 82: These files do not create the directories in the VMS_ROOT and LCL_ROOT
! 83: directory trees. You can create them with commands similar to:
! 84:
! 85: $ create/dir lcl_root:[curl]/prot=w:re
! 86: $ copy src_root:[curl...]*.dir -
! 87: lcl_root:[curl...]/prot=(o:rwed,w:re)
! 88: $ create/dir vms_root:[curl]/prot=w:re
! 89: $ copy src_root:[curl...]*.dir -
! 90: vms_root:[curl...]/prot=(o:rwed,w:re)
! 91:
! 92: One of the ways with to protect the source from being modified is to have
! 93: the directories under src_root: owned by a user or resource where the build
! 94: username only has read access to it.
! 95:
! 96:
! 97: Note to builders:
! 98:
! 99: GNV currently has a bug where configure scripts take a long time to run.
! 100: Some of the configure steps take a while to complete, and on a 600 Mhz
! 101: DS10 with IDE disks, taking an hour to run the CURL configure is normal.
! 102:
! 103: The following messages can be ignored and may get fixed in a future version
! 104: of GNV. The GNV$*.OPT files are used to find the libraries as many have
! 105: different names on VMS than on Unix. The Bash environment variable
! 106: GNV_CC_QUALIFIERS can override all other settings for the C Compiler.
! 107:
! 108: ? cc: No support for switch -warnprotos
! 109: ? cc: Unrecognized file toomanyargs
! 110: ? cc: Warning: library "ssl" not found
! 111: ? cc: Warning: library "crypto" not found
! 112: ? cc: Warning: library "gssapi" not found
! 113: ? cc: Warning: library "z" not found
! 114: u unimplemented switch - ignored
! 115:
! 116:
! 117: With these search lists set up and the properly, curl can be built by
! 118: setting your default to PRJ_ROOT:[curl.packages.vms] and then issuing
! 119: either the command:
! 120:
! 121: $ @pcsi_product_gnv_curl.com
! 122:
! 123: or
! 124:
! 125: $ @build_gnv_curl.com.
! 126:
! 127: The GNV configure procedure takes considerably longer than the DCL build
! 128: procedure takes. It is of use for testing the GNV build environment, and
! 129: may not have been kept up to date.
! 130:
! 131: The pcsi_product_gnv_curl.com needs the following logical names which
! 132: are described in the section below:
! 133:
! 134: gnv_pcsi_producer
! 135: gnv_pcsi_producer_full_name
! 136: stage_root
! 137: vms_root1 (Optional if vms_root is on a NFS volume)
! 138: src_root1 (Optional if src_root is on a NFS volume)
! 139:
! 140: The pcsi_product_gnv_curl.com is described in more detail below. It does
! 141: the following steps. The build steps are only done if they are needed to
! 142: allow using either DCL or GNV based building procedures.
! 143:
! 144: $ @build_vms list
! 145:
! 146: $ @gnv_link_curl.com
! 147:
! 148: $ @build_gnv_curl_release_notes.com
! 149:
! 150: $ @backup_gnv_curl_src.com
! 151:
! 152: $ @build_gnv_curl_pcsi_desc.com
! 153:
! 154: $ @build_gnv_curl_pcsi_text.com
! 155:
! 156: $ @stage_curl_install remove
! 157: $ @stage_curl_install
! 158:
! 159: Then builds the kit.
! 160:
! 161: The build_gnv_curl.com command procedure does the following:
! 162:
! 163: $ @setup_gnv_curl_build.com
! 164:
! 165: $ bash gnv_curl_configure.sh
! 166:
! 167: $ @clean_gnv_curl.com
! 168:
! 169: $ bash make_gnv_curl_install.sh
! 170:
! 171: $ @gnv_link_curl.com
! 172:
! 173: $ @stage_curl_install.com
! 174:
! 175: $ purge new_gnu:[*...]/log
! 176:
! 177: To clean up after a GNV based build to start over, the following commands are
! 178: used:
! 179:
! 180: $ bash
! 181: bash$ cd ../..
! 182: bash$ make clean
! 183: bash$ exit
! 184:
! 185: Then run the @clean_gnv_curl.com. Use the parameter "realclean" if you are
! 186: going to run the setup_gnv_curl_build.com and configure script again.
! 187:
! 188: $ @clean_gnv_curl.com realclean
! 189:
! 190: If new public symbols have been added, adjust the file gnv_libcurl_symbols.opt
! 191: to have the new symbols. If the symbols are longer than 32 characters,
! 192: then they will need to have the original be exact case CRC shortened and
! 193: an alias in upper case with CRC shortened, in addition to having an exact
! 194: case truncated alias and an uppercase truncated alias.
! 195:
! 196: The *.EXE files are not moved to the new_gnu: directory.
! 197:
! 198: After you are satisfied with the results of your build, you can move the
! 199: files from new_gnu: to old_gnu: at your convenience.
! 200:
! 201: Building a PCSI kit for an architecture takes the following steps after
! 202: making sure that you have a working build environment.
! 203:
! 204: Note that it requires manually creating two logical names as described
! 205: below. It is intentional that they be manually set. This is for
! 206: branding the PCSI kit based on who is making the kit.
! 207:
! 208: 1. Make sure that you have a staging directory that can be referenced
! 209: by the path STAGE_ROOT:[KIT]
! 210:
! 211: 2. Edit the file curl_release_note_start.txt or other text files to
! 212: reflect any changes.
! 213:
! 214: 3. Define the logical name GNV_PCSI_PRODUCER to indicate who is making
! 215: the distribution. For making updates to an existing open source
! 216: kit you may need to keep the producer the same.
! 217:
! 218: 4. Define the logical name GNV_PCSI_PRODUCER_FULL_NAME to be your full
! 219: name or full name of your company.
! 220:
! 221: 5. If you are producing an update kit, then update the file
! 222: vms_eco_level.h by changing the value for the VMS_ECO_LEVEL macro.
! 223: This file is currently only used in building the PCSI kit.
! 224:
! 225: 6. Edit the file PCSI_GNV_CURL_FILE_LIST.TXT if there are new files added
! 226: to the kit. These files should all be ODS-2 legal filenames and
! 227: directories.
! 228:
! 229: A limitation of the PCSI kitting procedure is that when selecting files,
! 230: it tends to ignore the directory structure and assumes that all files
! 231: with the same name are the same file, so every file placed in the kit
! 232: must have a unique name. Then a procedure needs to be added to the kit
! 233: to create an alias link on install and remove the link on remove.
! 234:
! 235: Since at this time curl does not need this alias procedure, the steps
! 236: to automatically build it are not included here.
! 237:
! 238: While newer versions of PCSI can support ODS-5 filenames, not all versions
! 239: of PCSI on systems that have ODS-5 filenames do. So as a post install
! 240: step, the PCSI kit built by these steps does a rename to the correct
! 241: case as a post install step.
! 242:
! 243: 7. Edit the build_curl_pcsi_desc.com and build_curl_pcsi_text.com if you
! 244: have changed the version of ZLIB that curl is built against.
! 245:
! 246: 8. Prepare to backup the files for building the kit.
! 247:
! 248: Note that if src_root: or vms_root: are NFS mounted disks, the
! 249: step of backing up the source files will probably hang or fail.
! 250:
! 251: You need to copy the source files to VMS mounted disks and create
! 252: logical names SRC_ROOT1 and VMS_ROOT1 to work around this to to
! 253: reference local disks. Make sure src_root1:[000000] and
! 254: vms_root1:[000000] exist and can be written to.
! 255:
! 256: The command procedure compare_curl_source can be used to check
! 257: those directories and keep them up to date.
! 258:
! 259: @compare_curl_source.com SRCBCK UPDATE
! 260:
! 261: This compares the reference project source with the backup
! 262: staging directory for it and updates with any changes.
! 263:
! 264: @compare_curl_source.com VMSBCK UPDATE
! 265:
! 266: This compares the VMS specific source with the backup
! 267: staging directory for it and updates with any changes.
! 268:
! 269: Leave off "UPDATE" to just check without doing any changes.
! 270:
! 271: If you are not using NFS mounted disks and do not want to have a
! 272: separate directory for staging the sources for backup make sure
! 273: that src_root1: and vms_root1: do not exist.
! 274:
! 275: 9. Build the PCSI kit with @pcsi_product_gnv_curl.com
! 276:
! 277: The following message is normal:
! 278: %PCSI-I-CANNOTVAL, cannot validate
! 279: EAGLE$DQA0:[stage_root.][kit]VMSPORTS-AXPVMS-CURL-V0731-0-1.PCSI;1
! 280: -PCSI-I-NOTSIGNED, product kit is not signed and therefore has
! 281: no manifest file
! 282:
! 283: This will result in an uncompressed kit for the target platform.
! 284: On Alpha and Integrity, the pcsi_product_gnv_curl.com can be used with
! 285: the "COMPRESSED" parameter to build both a compressed and uncompressed
! 286: kits.
! 287:
! 288: Good Luck.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>