quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

curl_gnv_build_steps.txt (11428B)


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