diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-01-04 20:59:43 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-01-04 20:59:43 +0200 |
commit | 4eee688d1ff5059db3d40af26df188b90368589c (patch) | |
tree | ec41262bc000d83e3db63d3c8d812bcccaa29b63 /vms/gawk_build_steps.txt | |
parent | e7214165a06bc1f4d9c6bdffc6b2b060beb6afee (diff) | |
download | egawk-4eee688d1ff5059db3d40af26df188b90368589c.tar.gz egawk-4eee688d1ff5059db3d40af26df188b90368589c.tar.bz2 egawk-4eee688d1ff5059db3d40af26df188b90368589c.zip |
Update copyright years in VMS files, add packaging scripts.
Diffstat (limited to 'vms/gawk_build_steps.txt')
-rw-r--r-- | vms/gawk_build_steps.txt | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/vms/gawk_build_steps.txt b/vms/gawk_build_steps.txt new file mode 100644 index 00000000..b3bb281b --- /dev/null +++ b/vms/gawk_build_steps.txt @@ -0,0 +1,220 @@ +From File: gawk_build_steps.txt + +Building GAWK on OpenVMS for use with GNV requires a current HP C compiler +and MMK. + +The HP C 7.x compilers were used for building on Alpha and Itanium. +The Compaq C 6.4 compiler is being used on VAX. + +MMK was obtained from https://github.com/endlesssoftware/mmk + +Several special things were done in this port of Gawk to VMS to make it +easier to keep it up to date with the Unix version. + +Note the GNV$ prefix is registered for the GNV project to prevent name +collisions with other products and packages. This is a VMS convention. + +The files are stored with GNV_ instead of GNV$ most open source source +code maintainers do not want to files with $ in their source repositories. + +The build procedure will copy the files to have the GNV$ names as needed. + +1. The original GNU Gawk source files are in their own directory tree which +is never written to by the build process. This directory is kept up to date +with the current official patches. See below about the how this is done +with logical names. + +2. A file vms_eco_level.h is used to set the ECO of the package. The +vms_eco_level.h needs to be set back to zero if the version or patch level +of the GNU Unix source is changed. This file is currently only used +by the kit building procedure. + +The source kits are provided in backup savesets inside of the PCSI install kit. + +Backup save sets are currently the only distribution medium that I can be +sure is installed on a target VMS system that will correctly unpack files +with extended character sets in them. You may need to adjust the ownership +of the restored files for kits on Alpha/Itanium VMS versions 8.1 and earlier. + +On VAX, the filenames will be as seen on the VAX system, typically with non +ODS-2 characters and case changes prefixed with $ characters. + +[gnv.common_src]gawk_*_original_src.bck is the original source of the +gawk kit as provided by the GNV project. +[gnv.vms_src]gawk-*_vms_src.bck, if present, has the changed files that +are used for building that are not yet in the gawk source kits +distributed by the GNU gawk project. + +These backup savesets should be restored to different directory trees on +an ODS-5 volume(s) which are referenced by concealed rooted logical names, +unless on VAX, where either an NFS or ODS-2 volume can be used. + +SRC_ROOT: is for the source files common to all platforms. This can be a + read only copy of the files from a change control repository. + + In my build environment, the TRUNK_ROOT:[gawk] is the + same directory as src_root:[gawk]. TRUNK_ROOT:[gawk] is a + checkout of the gawk repository used for the build. + +VMS_ROOT: is for the files that were changed from the repository copy of + SRC_ROOT: + + Note, you should create the VMS_ROOT: directory tree even if it is + initially empty. This is where you should put edits if you are + making changes. + + In my build environment, the source_root:[gnu_vms.gawk] is a + directory with the checked out code and vms_root:[gawk] is + a copy with any local modifications. + + The command procedure compare_gawk_source.com will report any + differences in the source_root:[gnu_vms.gawk] directory and the + vms_root:[gawk] directory. If the source_root: logical is not + defined, it will translate the logical name src_root to do the + effective of src_root:[gawk.-.-.gnu_vms.gawk] to find the + VMS specific code CVS checkout based on where the checkout for + the GNU source is expected to be. + +LCL_ROOT: is manually created to have the same base and sub-directories as + SRC_ROOT: and VMS_ROOT: This is for the architecture specific + binaries and other files created during the build. + +The logical name REF_ROOT: is optionally defined to be a logical name that +is a search list for VMS_ROOT:,SRC_ROOT: + +The logical name PRJ_ROOT: is defined to be a logical name that is a search +list for LCL_ROOT:,REF_ROOT: + +The VMS_ROOT and LCL_ROOT directory trees can be created with commands +similar to: + + $ create/dir lcl_root:[gawk]/prot=w:re + $ copy src_root:[gawk...]*.dir - + lcl_root:[gawk...]/prot=(o:rwed,w:re) + $ create/dir vms_root:[gawk]/prot=w:re + $ copy src_root:[gawk...]*.dir - + vms_root:[gawk...]/prot=(o:rwed,w:re) + +One of the ways with to protect the source from being modified is to have +the directories under src_root: owned by a user or resource where the build +username only has read access to it. + +Edit the file gawk_release_note_start.txt or other text files to reflect +any changes. + +Edit the file PCSI_GAWK_FILE_LIST.TXT if there are new files added to the +kit. These files should all be ODS-2 legal filenames and directories. + +Note that if src_root: or vms_root: are NFS mounted disks, the +step of backing up the source files will probably hang or fail. + +You need to copy the source files to VMS mounted disks and create +logical names SRC_ROOT1 and VMS_ROOT1 to work around this to to +reference local disks. Make sure src_root1:[000000] and +vms_root1:[000000] exist and can be written to. + +The command procedure compare_gawk_source can be used to check +those directories and keep them up to date. + + @[.vms]compare_gawk_source.com SRCBCK UPDATE + + This compares the reference GNU source with the backup + staging directory for it and updates with any changes. + + @[.vms]compare_gawk_source.com VMSBCK UPDATE + + This compares the VMS specific source with the backup + staging directory for it and updates with any changes. + + Leave off "UPDATE" to just check without doing any changes. + + If you are not using NFS mounted disks and do not want to have a + separate directory for staging the sources for backup make sure + that src_root1: and vms_root1: do not exist. + +The kits will be built in the directory STAGE_ROOT:[KIT], which must be +writable to the build procedure. + +Define the logical name GNV_PCSI_PRODUCER to indicate who is making the +distribution. + +Define the logical name GNV_PCSI_PRODUCER_FULL_NAME to be your full name +or full name of your company. + +These two GNV_PCSI_* logical names need to be manually defined to indicate +the "branding" to differentiate the source of the kit. + +A limitation of the PCSI kitting procedure is that when selecting files, it +tends to ignore the directory structure and assumes that all files with the +same name are the same file, so every file placed in the kit must have a +unique ODS-2 legal name. Then a procedure needs to be added to the kit to +create an alias link on install and remove the link on remove. + +While newer versions of PCSI can support ODS-5 filenames, not all verions +of PCSI on systems that have ODS-5 filenames do. So as a post install step, +the PCSI kit built by these steps does a rename to the correct case. + +With these search lists set up and the logical names described, Gawk can +be built and kitted by setting your default to PRJ_ROOT:[gawk] +and then issuing the command: + + $ @[.vms]pcsi_product_gawk.com + +First it will build the binaries by using MMK utility. The case of the +parameter may be significant on ODS-5. + + $ mmk/descrip=[.vms]descrip.mms gawk + +Then for Alpha and Itanium, it will build the dynamic extensions. + + $ mmk/descrip=[.vms]descrip.mms extensions + +To clean up after a build to start over, run mmk with the target spotless. + + $ mmk/descrip=[.vms]descrip.mms spotless + +The files are installed into a NEW_GNU directory for staging by running the +procedure stage_gawk_install.com. This copies the binaries and creates +alias links to them. + + $ @[.vms]stage_gawk_install.com remove + $ @[.vms]stage_gawk_install.com + +On the VAX platform, the staged files are needed for building the PCSI +kit, as the VAX source was staged on an NFS volume, which encodes the +filenames that have any upper case or special symbols in them. + +To remove the staged files, the procedure is run again with the parameter +"REMOVE". This makes sure that the alias links are removed. + +The names and contents of the PCSI files requires that the version of +gawk be encoded in a special format. This is done by: + + @[.vms]make_pcsi_gawk_kit_name.com + +The release notes are built from the release note start, readme files and +this file: + + @[.release]build_gawk_release_notes.com + +Then the backup the source kits. + +Building a PCSI kit for an architecture takes the following steps after +making sure that you have a working build environment. + +On VAX, the product command always prompts to the terminal for a confirmation. + +If there is another kit for this same version of gawk, but for a different +base platform or operating system version, the product command will prompt +to the terminal to select which one to compress. + + The following message is normal: + %PCSI-I-CANNOTVAL, cannot validate + EAGLE$DQA0:[stage_root.][kit]GNV-AXPVMS-GAWK-V--1.PCSI;1 + -PCSI-I-NOTSIGNED, product kit is not signed and therefore has + no manifest file + +This will result in both compressed and uncompressed kits for the target +platform. + +Good Luck. |