Return to curl_gnv_build_steps.txt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / packages / vms |
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.