Adding support for z/OS in gnupg and related libraries
Werner Koch
wk at gnupg.org
Wed Aug 5 15:52:05 CEST 2009
On Mon, 3 Aug 2009 19:58, amul.shah at fnis.com said:
> [amul:2] We are using both libgcrypt and gpg. Ideally I would have
> compiled gpg 2.x, but we have had better success on various platforms
> (AIX, Solaris, HPUX) with 1.4.x. We had issues compiling some of the
> libraries needed for the 2.x version.
GnuPG-2 requires a more modern Unix that GnuPG-1. That is not to say
that Solaris, AIX and HPUX aren't modern Unices. There are just some
little things which need to be adjusted and we usually don't have such a
system for tests.
> [amul:2] IMHO, after the port we just went through, it's best to compile
> Unix applications as ASCII and let z/OS do its conversion magic.
> Working with Unicode adds another layer of complexity.
There must have been a reason that IBM added that magic ASCII support ;-).
> [amul:2] sorry, USS means "Unix System Services", one of the names the
> POSIX environment goes by. See the following link for more information.
> http://www-03.ibm.com/servers/eserver/zseries/zos/unix/
Right. It is 10 years since I last worked a bit on a MVS and the USS
(not sure whether it was already called this back then).
> [amul:2] I spent some time with libtool, but I didn't write down what I
> tried. I'll get back to you with some more information.
Libtool is a nasty beast but it has the advantage that if you get it
right for your platform all software can take advantage of it.
> [amul:2] configure.ac is my area of inexperience.
Just ask me or let me know what you need.
> [amul:2] xlc supports "-I", but it picks up those options _after_ its
> default search path. Confused me to no end when I was trying to
> compile. There are xlc configuration options that you can customize
> (like having a .bashrc, but for xlc) to fix this.
I feared that. What about mangling the vac.cfg and passing a new one
via -F to xlc. It might be possible to extract the -I option from that
file build a new one and pass the extracted -I option on the command
line after our own -I. It might fail if one of the system include files
requires the system memory.h - bad. I think I once had a simialr
problem with OS/2.
So what about changing all
#include "memory.h"
to
#include "../include/memory.h
we might then need to change the name of the include directory as well.
Would that work?
Looking closer at it, this is a problem of gpg 1.4 and not one of
libgcrypt. The strange thing is that libgcrypt includes a memory.h but
does not provide one - thus the system memory.h is used. Must be a
leftover from an earlier version.
I will fix that in libgcrypt 1.5.
> [amul:2] so something like an alias that is a nop on other platforms
> would do the trick.
Something like this (see the FIXME):
===================================================================
--- defs.inc (revision 5106)
+++ defs.inc (working copy)
@@ -112,6 +112,16 @@
# cleanup_files="$cleanup_files $*"
#}
+
+# Special fucntion for zOS.
+my_chtag () {
+ #FIXME: Is there an envvar to test for the OS or do we
+ # need to resort to a configure test
+ #if test "$FOO" = "bar"; then
+ # chtag -tc ISO8859-1 $1
+ #fi
+}
+
have_pubkey_algo () {
if ../g10/gpg --homedir . --version | grep "Pubkey:.*$1" >/dev/null
then
Index: conventional-mdc.test
===================================================================
--- conventional-mdc.test (revision 5106)
+++ conventional-mdc.test (working copy)
@@ -9,6 +9,7 @@
# *BSD's dd can't cope with a count of 0
if test "$i" = "0"; then
: >z
+ my_chtag z
else
dd if=data-80000 of=z bs=1 count=$i 2>/dev/null
fi
================================
>>> +#include "platform_pragma.h"
>>> #include <config.h>
>>>
>>
>> This platform_pragma.h file should be included by config.h so that
>> there is no need to chnage all source files. config.h is created by
>> configure.
>>
>
> [amul:2] I'll move that to confih.h.
That's done in configure.ac by adding a line to
AH_TOP([
#ifndef GNUPG_CONFIG_H_INCLUDED
#define GNUPG_CONFIG_H_INCLUDED
])
or using AH_VERBATIM. Easy.
>> This is done using a CLEAN target in Makefile.am
>>
>
> [amul:2] Ok, I'll take a look at the Makefile.am.
You would add something like:
CLEANFILES = prepared.stamp x y yy z out err $(DATA_FILES) \
plain-1 plain-2 plain-3 trustdb.gpg *.lock .\#lk* \
*.test.log gpg_dearmor gpg.conf \
pubring.gpg secring.gpg pubring.pkr secring.skr
DISTCLEANFILES = pubring.gpg~ random_seed
there is also a MOSTLEANFILES target.
>> assignments to the FSF. We should discuss the terms off-list.
>>
>
> [amul:2] sure, we can do that. I thought saying that the code is GPL is
> good enough.
The GNU project requires copyright assignments or dislaimers for all
core software. Without that legal BS I may not include changes into
the package (you may distrubute your own of course, but then you have
the burden of maintaining it). Let's take this off-list.
> [amul:2] The below project right?
> http://www.gnu.org/software/gettext/
>
> [amul:2] I'll make sure I send that project a patch.
Right. It may take a while for a new release. In the meantime we can
apply the patches to the copy in GnuPG.
> [amul:2] Thanks. For future reference, here's the link. I should have
> thought about that.
> http://www.gnu.org/prep/standards/html_node/Formatting.html
It is not a hard rule anyway and all authors have different tastes. I
just make sure that some basic formatting is right.
>> This is better handled using a configure test.
>>
>
> [amul:2] How would that work?
--- configure.ac (revision 1400)
+++ configure.ac (working copy)
@@ -571,7 +571,7 @@
##################################
AC_HEADER_STDC
-AC_CHECK_HEADERS(unistd.h sys/select.h)
+AC_CHECK_HEADERS(unistd.h sys/select.h sys/msg.h)
##########################################
#### Checks for typedefs, structures, ####
--- src/ath.h (revision 1400)
+++ src/ath.h (working copy)
@@ -32,6 +32,9 @@
# include <sys/time.h>
# endif
# include <sys/types.h>
+# ifdef HAVE_SYS_MSG_H
+# include <sys/msg.h> /* (e.g. for zOS) */
+# endif
# include <sys/socket.h>
#endif /* !_WIN32 */
#include <gpg-error.h>
Already commited.
Shalom-Salam,
Werner
--
Die Gedanken sind frei. Auschnahme regelt ein Bundeschgesetz.
More information about the Gnupg-devel
mailing list