os400: build cli manual.

Use PASE perl to run manual generation scripts.

As PASE perl is not aware of all possible input file encoding, convert
all files to UTF-8 upon build start (this might be lengthy).

OS/400 terminal emulation may only offer 76 columns, thus a new -c
parameter has been added to the managen program, defining the allowed
width.

If perl is not available, omit generation and disable online manual.

Closes #14289
This commit is contained in:
Patrick Monnerat 2024-07-28 00:36:09 +02:00 committed by Daniel Stenberg
parent b446802feb
commit d14149e3ea
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
7 changed files with 101 additions and 4 deletions

View File

@ -33,6 +33,7 @@ EXTRA_DIST = README.md \
OS400/curl.inc.in \
OS400/initscript.sh \
OS400/config400.default \
OS400/make-docs.sh \
OS400/make-include.sh \
OS400/make-lib.sh \
OS400/make-src.sh \

View File

@ -39,6 +39,7 @@ setenv OUTPUT '*NONE' # Compilation output option.
setenv TGTRLS '*CURRENT' # Target OS release.
setenv IFSDIR '/curl' # Installation IFS directory.
setenv QADRTDIR '/QIBM/ProdData/qadrt' # QADRT IFS directory.
setenv PASEPERL '/QOpenSys/pkgs/bin/perl' # PASE Perl interpreter.
# Define ZLIB availability and locations.

View File

@ -69,6 +69,9 @@ if [ -f "${SCRIPTDIR}/config400.override" ]
then . "${SCRIPTDIR}/config400.override"
fi
# Check if perl available.
{ [ -n "${PASEPERL}" ] && [ -x "${PASEPERL}" ]; } || PASEPERL=
# Need to get the version definitions.
LIBCURL_VERSION=$(grep '^#define *LIBCURL_VERSION ' \

65
packages/OS400/make-docs.sh Executable file
View File

@ -0,0 +1,65 @@
#!/bin/sh
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
###########################################################################
#
# Documentation build script for the OS/400.
#
SCRIPTDIR=$(dirname "${0}")
. "${SCRIPTDIR}/initscript.sh"
[ -n "${PASEPERL}" ] || exit 0 # Perl needed for doc build.
cd "${TOPDIR}/docs" || exit 1
[ -d "${IFSDIR}/docs" ] || mkdir "${IFSDIR}/docs"
# Command line options.
(
cd cmdline-opts || exit 1
MANPAGE=curl.1
TEXTPAGE=curl.txt
get_make_vars Makefile.inc
rm -f "${IFSDIR}/docs/${MANPAGE}" "${IFSDIR}/docs/${TEXTPAGE}"
# Prepare online manual.
# shellcheck disable=SC2086
${PASEPERL} "${TOPDIR}/scripts/managen" -c 75 \
listhelp ${DPAGES} > "${TOPDIR}/src/tool_listhelp.c"
# Generate text manual and copy it to DB2.
# shellcheck disable=SC2086
${PASEPERL} "${TOPDIR}/scripts/managen" -I "${TOPDIR}/include" \
-c 75 ascii ${DPAGES} > "${IFSDIR}/docs/${TEXTPAGE}"
MEMBER="${LIBIFSNAME}/DOCS.FILE/MANUAL.MBR"
CMD="CPY OBJ('${IFSDIR}/docs/${TEXTPAGE}') TOOBJ('${MEMBER}')"
CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
CLcommand "${CMD}"
# Man page is useless as OS/400 has no man command.
# # shellcheck disable=SC2086
# ${PASEPERL} "${TOPDIR}/scripts/managen" -I "${TOPDIR}/include" \
# mainpage ${DPAGES} > "${IFSDIR}/docs/${MANPAGE}"
)

View File

@ -30,6 +30,15 @@ SCRIPTDIR=$(dirname "${0}")
cd "${TOPDIR}/src" || exit 1
# Check if built-in manual can be generated.
USE_MANUAL=
if [ -f "${IFSDIR}/docs/curl.txt" ] && [ -n "${PASEPERL}" ]
then "${PASEPERL}" ./mkhelp.pl < "${IFSDIR}/docs/curl.txt" > tool_hugehelp.c
USE_MANUAL="'USE_MANUAL'"
fi
# Get source lists.
# CURL_CFILES are in the current directory.
# CURLX_CFILES are in the lib directory and need to be recompiled because
@ -49,12 +58,12 @@ INCLUDES="'${TOPDIR}/lib'"
for SRC in ${CURLX_CFILES}
do MODULE=$(db2_name "${SRC}")
MODULE=$(db2_name "X${MODULE}")
make_module "${MODULE}" "${SRC}"
make_module "${MODULE}" "${SRC}" "${USE_MANUAL}"
done
for SRC in ${CURL_CFILES}
do MODULE=$(db2_name "${SRC}")
make_module "${MODULE}" "${SRC}"
make_module "${MODULE}" "${SRC}" "${USE_MANUAL}"
done

View File

@ -33,6 +33,18 @@ SCRIPTDIR=$(dirname "${0}")
cd "${TOPDIR}" || exit 1
# Make sure all files are UTF8-encoded.
# shellcheck disable=SC2038
find "${TOPDIR}" -type f -print | xargs ls -S | while read -r CCSID FILE
do if [ "${CCSID}" != 1208 ]
then CMD="CPY OBJ('${FILE}') TOOBJ('${FILE}') FROMCCSID(*OBJ)"
CMD="${CMD} TOCCSID(1208) DTAFMT(*TEXT) REPLACE(*YES)"
(CLcommand "${CMD}")
fi
done
# Create the OS/400 library if it does not exist.
if action_needed "${LIBIFSNAME}"
@ -117,7 +129,7 @@ fi
# Build in each directory.
# for SUBDIR in include lib src tests
for SUBDIR in include lib src
# for SUBDIR in include lib docs src tests
for SUBDIR in include lib docs src
do "${SCRIPTDIR}/make-${SUBDIR}.sh"
done

View File

@ -1196,6 +1196,12 @@ elsif($cmd eq "-I") {
$cmd = shift @ARGV;
goto check;
}
elsif($cmd eq "-c") {
# Column width
$colwidth = 0 + shift @ARGV;
$cmd = shift @ARGV;
goto check;
}
my @files = @ARGV; # the rest are the files