Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/curl/packages/vms/curl_gnv_build_steps.txt @ 3:2c135c81b16c
MERGE: upstream PyMuPDF 1.26.4 with MuPDF 1.26.7
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:44:09 +0200 |
| parents | b50eed0cc0ef |
| children |
comparison
equal
deleted
inserted
replaced
| 0:6015a75abc2d | 3:2c135c81b16c |
|---|---|
| 1 From File: curl_gnv_build_steps.txt | |
| 2 | |
| 3 Copyright 2009, 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 procecure 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. |
