Annotation of embedaddon/curl/packages/vms/curl_gnv_build_steps.txt, revision 1.1.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>