Hi Bruno The official name is NonStop Kernel.
Version number, hmm. There are several. First there are several different architectures, TNS (outdated), TNS/R (Risc, mips, almost outdated) and TNS/E (EPIC, Itanium). There's also NEO or Neoview, which basically is the same as EPIC. Both come in 2 flavours, the newer of either is a blades architecture OS versions are Cnn.mm (TNS), Dnn.mm (TNS/R, Hnn.mm and Jnn.mm (TNS/E), Nnn and Pnn (NEO) config.guess know only TNS/R. I've already submitted patches (to Ben Eliston, resp. [email protected]) to also recognize TNE(E and Neo. Here they go again: diff -u ./build-aux/config.guess.orig ./build-aux/config.guess --- ./build-aux/config.guess.orig 2010-09-29 15:10:40.000000000 -0500 +++ ./build-aux/config.guess 2010-09-28 11:22:46.000000000 -0500 @@ -1262,6 +1262,12 @@ *:QNX:*:4*) echo i386-pc-qnx exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; diff -u ./build-aux/config.sub.orig ./build-aux/config.sub --- ./build-aux/config.sub.orig 2009-06-15 04:05:11.000000000 -0500 +++ ./build-aux/config.sub 2010-09-28 11:22:01.000000000 -0500 @@ -830,6 +830,12 @@ np1) basic_machine=np1-gould ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; nsr-tandem) basic_machine=nsr-tandem ;; __TANDEM is the predefined C compiler macro, __hpux is not (that an different OS altogether) Refencence for the ACL APIs should be here: http://bizsupport1.austin.hp.com/bc/docs/support/SupportManual/c02128649/c02 128649.pdf and here: http://bizsupport1.austin.hp.com/bc/docs/support/SupportManual/c02492445/c02 492445.pdf /usr/include/sys/acl.h is the header file It contains a couple macros: /* cmd values used by acl() */ #define ACL_GET 0x01 /* get ACL */ #define ACL_SET 0x02 /* set ACL */ #define ACL_CNT 0x03 /* get ACL Count */ /* cmd values used by acl_save_restore() */ #define ACL_GETALL 0x04 /* get ACL */ #define ACL_SETALL 0x05 /* set ACL */ #define ACL_CNTALL 0x06 /* get ACL Count */ A struct: struct acl { int a_type; /* entry type */ uid_t a_id; /* user or group ID */ unsigned short a_perm; /* entry permissions */ }; Some more macros: /* * Values for acl entry type (a_type field) */ #define USER_OBJ 0x01 /* owner of the object */ #define USER 0x02 /* additional users */ #define GROUP_OBJ 0x04 /* group of the object */ #define GROUP 0x08 /* additional groups */ #define CLASS_OBJ 0x10 /* file group class entry */ #define OTHER_OBJ 0x20 /* other entry */ #define ACL_DEFAULT 0x10000 /* default entry */ #define DEF_USER_OBJ (ACL_DEFAULT | USER_OBJ)/* default object owner */ #define DEF_USER (ACL_DEFAULT | USER) /* default additional users */ #define DEF_GROUP_OBJ (ACL_DEFAULT | GROUP_OBJ)/* default owning group */ #define DEF_GROUP (ACL_DEFAULT | GROUP) /* default additional groups */ #define DEF_CLASS_OBJ (ACL_DEFAULT | CLASS_OBJ)/* default class entry */ #define DEF_OTHER_OBJ (ACL_DEFAULT | OTHER_OBJ)/* default other entry */ #define NACLBASE 4 /* number of "base" ACL entries */ /* (USER_OBJ, GROUP_OBJ, */ /* CLASS_OBJ, & OTHER_OBJ) */ #define NACLENTRIES 150 /* Total number of base + optional entries, */ /* arbitrarily selected to match HFS's # of */ /* optional entries (HFS only has 3 base */ /* entries; cf. NACLENTRIES in <sys/acl.h>) */ #define DONTCARE 0x40000 /* for pattern match */ #define IDDONTCARE 0x80000 /* for pattern match */ /* For source compatibility with HPUX, the following two NACLV aliases are provided: */ #define NACLVBASE NACLBASE /* For compatibility with HPUX */ #define NACLVENTRIES NACLENTRIES /* For compatibility with HPUX */ and some prototypes : /* Function prototypes */ int acl (char *, int, int, struct acl *); int aclsort (int, int, struct acl *); /* Following prototype provided for internal product use only */ int acl_save_restore (char *, int, int, char *); That should answer your question for defined symbols too. Your sample program: $ cat foo.c extern int acl (char *); int foo (const char *s) { return acl (s); } $ c89 -c foo.c extern int acl (char *); int foo (const char *s) { return acl (s); } ^ "/home/jojo/foo.c", line 1: error(252): argument of type "const char *" is incompatible with parameter of type "char *" 1 error detected in the compilation of "foo.c". c89: /usr/cmplr/ccombe exited, returning 2. $ Our compiler treats this as an error rather than a warning. Enough for today, I'll look into this again tomorrow... Bye, Jojo -----Original Message----- From: Bruno Haible [mailto:[email protected]] Sent: Wednesday, September 29, 2010 9:47 PM To: Schmitz, Joachim Cc: Paolo Bonzini; bug-gnulib Subject: Re: Fwd: sed porting trouble Hi Joachim, > > I'm trying to port sed-4.1.5 (and 4.2.1) to HP NonStop and I'm > > having a couple issues with it. This is an OS on which gnulib was never tested so far. Therefore I have to start with a few basic questions: - What is the official name of the OS? NonStop? NonStop OS? NonStop UX? Also the version number (for reference in gnulib documentation)? - What is the result of config.guess? $ sh build-aux/config.guess - What are the predefined C compiler macros? __TANDEM, what else? __hpux also? Then, three questions about the ACL support. First, where is a reference of the API? I need this info for updating <http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=doc/acl-resources .txt> - Which include files declares functions related to ACLs? - Which symbols are defined? Something like $ nm /usr/lib/libc.so | grep acl should provide the list. > > Some are due to our picky compiler (or a potential bug in either > > your code or out implementation of acl()) Just a test case: When you try to compile this file with "cc -c foo.c" ======================== foo.c ======================== extern int acl (char *); int foo (const char *s) { return acl (s); } ======================================================= what is the result? > > some due to differenences how > > POSIX ACLs are implemented here: gnulib contains a couple of unit tests for this code. sed-4.2.1 doesn't. Therefore I'd like to ask you to repeat your effort with this tarball: http://www.haible.de/bruno/gnu/acltestdir.tar.gz With your changes, does only the compilation pass, or does "make check" also pass? > > There is something strange going on in lib/stdlib.h, gives me a very > > strange error message: > > > > j...@\hpitug:/usr/local/Floss/sed-4.2.1 $ make make all-recursive > > Making all in lib make all-recursive source='btowc.c' > > object='btowc.o' libtool=no DEPDIR=.deps depmode=none bin/sh > > ../build-aux/depcomp cc -DHAVE_CONFIG_H -I. -I.. -I../lib -I.. > > -I../lib -I/usr/local/include -g -c btowc.c struct random_data ^ > > "/usr/local/Floss/sed-4.2.1/lib/../lib/stdlib.h", line 64: error(123): > > expected an expression > > { > > ^ > > "/usr/local/Floss/sed-4.2.1/lib/../lib/stdlib.h", line 65: error(111): > > expected a "]" > > { > > ^ > > "/usr/local/Floss/sed-4.2.1/lib/../lib/stdlib.h", line 65: error(158): > > expected a ";" > > 3 errors detected in the compilation of "btowc.c". > > c89: /usr/cmplr/ccombe exited, returning 2. > > *** Error code 1 > > > > In lib/stdlib.h.in, somewhere before 'struct random' it goes > > horribly wrong, haven't yet been able to spot where, might be in lib/stdint.h? Try to only preprocess the file: $ cc -DHAVE_CONFIG_H -I. -I.. -I../lib -I.. -I../lib -I/usr/local/include -g -E btowc.c > i.c and look at i.c. Here it should be easier to spot which tokens before 'struct random_data' are confusing the compiler. Bruno
