The collected works of stuart - Page 1

Hmm - as mentioned in the last post here it looks as if something changed after 6.5.22 which broke NewTek's (horrible) load/save mechanism.

strace of the LW binary shows it doing:

Code:
execve("/sbin/sh", ["sh", "-c", "fsel >/tmp/fsel.result \"Scenes\" \"\" \"*\" \"Load Scene File\" \"/usr/lightwave\""] ... ) = 0 <0.002254>


I also notice that there's a few calls labelled as being to SYS_191 which results in an ENOSYS and several to SYS_78, SYS_202, SYS_203, SYS_207, SYS_208, which I guess are just fucntions that strace doesn't know about (or are deprecated?)

stracing the fsel binary with the same parameters resutls in setting up of SHM, reading from a socket, and SegFaulting.

I've uploaded this for viewing here

Could someone who's not yet upgraded beyond 6.5.22 please try tracing the fsel process (or, at least, taking a copy of /tmp/fsel.result), to see what it outputs. If someone could also trace the Save dialog too then hopefully, it will then be possible to replace the fsel binary with another that actually works.

The commands seem to be:

Code:
execve("/sbin/sh", ["sh", "-c", "fsel >/tmp/fsel.result \"Scenes\" \"\" \"*\" \"Load Scene File\" \"/usr/lightwave\""]
execve("/sbin/sh", ["sh", "-c", "fsel >/tmp/fsel.result \"Scenes\" \"\" \"*\" \"Save Scene File\" \"/usr/lightwave\""]
execve("/usr/lightwave/Bin/fsel", ["fsel", "Scenes", "", "*", "Save Scene File", "/usr/lightwave"]


Note that the final one ("Save As") isn't invoked via "sh -c", unlike other other two.
nvukovlj wrote:
LW 5.6 works fine on IRIX 6.5.22


Is there any chance that you could strace the process, and get us a copy of the /tmp/fsel.result file output by the File Selector?
nvukovlj wrote:
Can you give me the parameters that you have used (and on what process) in order that I recreate the same environment ?


strace is available from http://freeware.sgi.com/ , and I ran:
Code:
strace -vvfFtTs 1024 -o /usr/tmp/LW.strace /usr/lightwave/bin/LW

... and then immediately selected Load, Save, or Save As from the File menu. The output file can then be searched for instances of "fsel".

In terms of the file in /tmp/, perhaps the best way to grab it is to write a quick script or program to output its contents whenever it changes - perhaps "tail -F /tmp/fsel.result"?
mia wrote:
Thanks, I coded it myself, a 2 minutes job, which explains why it's so ugly. I can't promise I would do a nicer version since I'm really too busy these days... maybe if I can find the time someday. I'm glad it worked for you tho.


Could you post your source?
mia wrote:
Oh, I would need to clean it first, it's really nasty in there, I really did it fast.


Don't feel you have to clean it up - all I really want to see are the bare bones of what fsel receives from LW, and what it outputs. That, and any hint in the construction the UI would be interesting too...
My Octane has 6.5.27 installed, and I've recently found that I can't drop down to single user mode. What seems to be happening is that sulogin is correctly invoked and asks for a password, but then segfaults if the correct password is entered.

If I run sulogin from a shell, it always prints "Login incorrect" even if I do enter the correct root password. Shadow passwords are enabled... I don't know if this makes a difference.

When sulogin crashes it does create a core file, but I'm not sure how to analyse these on IRIX... using gdb I get:

Code: Select all

$ gdb
GNU gdb 5.3
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "mips-sgi-irix6.5".
(gdb) core core.postinst_detected
Core was generated by `sulogin'.
Program terminated with signal 11, Segmentation fault.
warning: Warning: GDB can't find the start of the function at 0xfa49ce0.

GDB is unable to find the start of the function at 0xfa49ce0
and thus can't determine the size of that function's stack frame.
This means that GDB may be unable to access that stack frame, or
the frames below it.
This problem is most likely caused by an invalid program counter or
stack pointer.
However, if you think GDB should simply search farther back
from 0xfa49ce0 for code which looks like the beginning of a
function, you can increase the range of the search using the `set
heuristic-fence-post' command.
#0  0x0fa49ce0 in ?? ()
(gdb) bt
#0  0x0fa49ce0 in ?? ()
warning: Warning: GDB can't find the start of the function at 0x10001ba0.


Any suggestions of how I might pull more useful information from this core, or what else I can try to actually get single user mode working?
I'm going to try reinstalling eoe.sw.base, which provides /sbin/sulogin...
cjones wrote: I've got an octane that I was planning upgrading from 6.5.21 to .27.... so I'd very much like to hear how your problem works out stuart!


Well, it's fixed - but I'm not quite sure how!

I changed root's entry from a shadow password to a standard one in /etc/passwd, and also reinstalled 6.5.27 eoe.sw.base (and then any patches to 6.5.27, just in case)

After rebooting, I could drop into single user mode - so the problem is fixed. However, something had reverted root to having a shadow password - so this may have been a red herring.

Cheers,
Stuart
If someone really fancies a challenge, id Software have just released the full Quake III Source code under the GPL, as reported on slashdot .

(Now I know we already have a beta, but a proper Nekoware build of the completed game with the VPro glitches fixed would be seriously cool!)
These are real wish-list items, but if anyone could manage:

mplayer-1.0_pre7
xine

... then I'd be eternally greatful!

Cheers,

Stu
When using SGI's bash (2.05) or any version of bash (2 or 3) on other systems, the command:

Code: Select all

$ /usr/gnu/bin/bash -c 'A=$(( 2 + 3 )); echo $A'
5


... produces, as expected, the result "5".

However, using bash-3 from Nekoware. I get:

Code: Select all

$ /usr/nekoware/bin/bash -c 'A=$(( 2 + 3 )); echo $A'
2: command not found


... which seems to indicate that bash isn't parsing the line correctly.

Could anyone who reads this quickly try this on their own SGI, and see what happens. I'm interested if IRIX release or architecture makes a difference. I've an Octane running 6.5.28.

(I also see this problem when using an auto-compiled bash from NetBSD's pkgsrc or OpenPKG's source RPM. However, another developers using MIPSpro 7.3.1.2m reports that OpenPKG's build works for him (compiled with CFLAGS=-O). I have MIPSpro 7.3.4m, and compiled with significant optimisations.)

Which is a good point - what are (or, indeed, are there) the standard optimisation options/CFLAGS used for building Nekoware builds?

Cheers,

Stuart
This is odd - I've just rebuilt bash from scratch with "--enable-dparen-arithmetic" specifically passed to configure, and yet still the above syntax doesn't work.

Code: Select all

+ CFLAGS='-c99 -O2 -n32 -mips4 -r12000 -apo -float_const -use_readonly_const -TARG:isa=mips4:platform=ip30:processor=r12000 -TENV:zeroinit_in_bss=ON -DEFAULT:platform=ip30 -OPT:fast_io=ON:Olimit=8192:reorg_common=ON:swp=ON -LNO:auto_dist=ON:fusion_peeling_limit=8:gather_scatter=2 -woff 1174,1183,1552'
+ LDFLAGS='-Wl,-v -Wl,-s -Wl,-x -n32 -mips4 -rdata_shared -Wl,-allow_jump_at_eop'
+ ./configure --cache-file=./config.cache --prefix=/usr/local --disable-multibyte --without-gnu-malloc --disable-minimal-config --enable-alias --enable-arith-for-command --enable-array-variables --enable-bang-history --enable-brace-expansion --enable-command-timing --enable-cond-command --enable-cond-regexp --enable-directory-stack --enable-dparen-arithmetic --enable-extended-glob --enable-help-builtin --enable-history --enable-job-control --enable-net-redirections --enable-process-substitution --enable-progcomp --enable-prompt-string-decoding --enable-readline --enable-select --enable-separate-helpfiles --disable-rpath --disable-nls --without-curses
configure: loading cache ./config.cache
checking build system type... mips-sgi-irix6.5
checking host system type... mips-sgi-irix6.5
checking for emacs... no
checking for xemacs... no

Beginning configuration for bash-3.0-release for mips-sgi-irix6.5

checking for gcc... cc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... no
checking whether cc accepts -g... yes
checking for cc option to accept ANSI C... none needed
checking for strerror in -lcposix... no
checking how to run the C preprocessor... cc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for _LARGE_FILES value needed for large files... no
checking for a BSD-compatible install... ./support/install.sh -c
checking for ar... ar
checking for ranlib... :
checking for bison... bison -y
checking whether make sets $(MAKE)... yes
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking whether byte ordering is bigendian... yes
checking for preprocessor stringizing operator... yes
checking for working long double with more range or precision than double... yes
checking for function prototypes... yes
checking whether char is unsigned... yes
checking whether NLS is requested... no
checking for msgfmt... no
checking for gmsgfmt... :
checking for xgettext... no
checking for msgmerge... no
checking for off_t... yes
checking for size_t... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for getpagesize... yes
checking for working mmap... yes
checking whether we are using the GNU C Library 2.1 or newer... no
checking whether integer division by zero raises SIGFPE... no
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unsigned long long... yes
checking for inttypes.h... yes
checking whether the inttypes.h PRIxNN macros are broken... no
checking for non-GNU ld... /bin/ld
checking if the linker (/bin/ld) is GNU ld... no
checking for shared library run path origin... done
checking argz.h usability... no
checking argz.h presence... no
checking for argz.h... no
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking nl_types.h usability... yes
checking nl_types.h presence... yes
checking for nl_types.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for unistd.h... (cached) yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking for feof_unlocked... yes
checking for fgets_unlocked... no
checking for getc_unlocked... yes
checking for getcwd... yes
checking for getegid... yes
checking for geteuid... yes
checking for getgid... yes
checking for getuid... yes
checking for mempcpy... no
checking for munmap... yes
checking for putenv... yes
checking for setenv... no
checking for setlocale... yes
checking for stpcpy... no
checking for strcasecmp... yes
checking for strdup... yes
checking for strtoul... yes
checking for tsearch... yes
checking for __argz_count... no
checking for __argz_stringify... no
checking for __argz_next... no
checking for __fsetlocking... no
checking for iconv... yes
checking for iconv declaration...
extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for nl_langinfo and CODESET... yes
checking for LC_MESSAGES... yes
checking for bison... bison
checking version of bison... 1.25, bad
checking whether NLS is requested... no
checking whether to use NLS... no
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking whether time.h and sys/time.h may both be included... yes
checking for inttypes.h... (cached) yes
checking for unistd.h... (cached) yes
checking for stdlib.h... (cached) yes
checking stdarg.h usability... yes
checking stdarg.h presence... yes
checking for stdarg.h... yes
checking varargs.h usability... yes
checking varargs.h presence... yes
checking for varargs.h... yes
checking for limits.h... (cached) yes
checking for string.h... (cached) yes
checking for memory.h... (cached) yes
checking for locale.h... (cached) yes
checking termcap.h usability... no
checking termcap.h presence... no
checking for termcap.h... no
checking termio.h usability... yes
checking termio.h presence... yes
checking for termio.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for stddef.h... (cached) yes
checking for stdint.h... (cached) yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking grp.h usability... yes
checking grp.h presence... yes
checking for grp.h... yes
checking for strings.h... (cached) yes
checking regex.h usability... yes
checking regex.h presence... yes
checking for regex.h... yes
checking sys/ptem.h usability... no
checking sys/ptem.h presence... no
checking for sys/ptem.h... no
checking sys/pte.h usability... no
checking sys/pte.h presence... no
checking for sys/pte.h... no
checking sys/stream.h usability... yes
checking sys/stream.h presence... yes
checking for sys/stream.h... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking for sys/param.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking for sys/stat.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/times.h usability... yes
checking sys/times.h presence... yes
checking for sys/times.h... yes
checking for sys/types.h... (cached) yes
checking sys/wait.h usability... yes
checking sys/wait.h presence... yes
checking for sys/wait.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking for working alloca.h... (cached) yes
checking for alloca... (cached) yes
checking whether getpgrp requires zero arguments... yes
checking whether setvbuf arguments are reversed... no
checking for vprintf... yes
checking for _doprnt... yes
checking for working strcoll... yes
checking return type of signal handlers... void
checking for __setostype... no
checking for wait3... yes
checking for isinf... no
checking for mkfifo... yes
checking for dup2... yes
checking for select... yes
checking for getdtablesize... yes
checking for getgroups... yes
checking for gethostname... yes
checking for setdtablesize... no
checking for getpagesize... (cached) yes
checking for killpg... yes
checking for lstat... yes
checking for getpeername... yes
checking for sbrk... yes
checking for getrlimit... yes
checking for getrusage... yes
checking for gettimeofday... yes
checking for waitpid... yes
checking for tcgetpgrp... yes
checking for readlink... yes
checking for rename... yes
checking for bcopy... yes
checking for bzero... yes
checking for confstr... yes
checking for sysconf... yes
checking for pathconf... yes
checking for setenv... (cached) no
checking for putenv... (cached) yes
checking for unsetenv... no
checking for setlinebuf... yes
checking for setvbuf... yes
checking for setlocale... (cached) yes
checking for strchr... yes
checking for tcgetattr... yes
checking for uname... yes
checking for ulimit... yes
checking for tzset... yes
checking for siginterrupt... yes
checking for memmove... yes
checking for ttyname... yes
checking for times... yes
checking for getaddrinfo... yes
checking for gethostbyname... yes
checking for getservbyname... yes
checking for getservent... yes
checking for inet_aton... yes
checking for vsnprintf... yes
checking for snprintf... yes
checking for vasprintf... no
checking for asprintf... no
checking for fnmatch... yes
checking for regcomp... yes
checking for regexec... yes
checking for isascii... yes
checking for isblank... yes
checking for isgraph... yes
checking for isprint... yes
checking for isspace... yes
checking for isxdigit... yes
checking for getcwd... (cached) yes
checking for strcasecmp... (cached) yes
checking for strerror... yes
checking for strftime... yes
checking for strpbrk... yes
checking for memset... yes
checking for strstr... yes
checking for strtod... yes
checking for strtol... yes
checking for strtoul... (cached) yes
checking for strtoll... yes
checking for strtoull... yes
checking for strtoimax... yes
checking for strtoumax... yes
checking whether confstr is declared... yes
checking whether printf is declared... yes
checking whether sbrk is declared... yes
checking whether strcpy is declared... yes
checking whether strsignal is declared... no
checking whether strtold is declared... yes
checking for broken strtold... yes
checking for declaration of strtoimax... yes
checking for declaration of strtol... yes
checking for declaration of strtoll... yes
checking for declaration of strtoul... yes
checking for declaration of strtoull... yes
checking for declaration of strtoumax... yes
checking for sys/time.h... (cached) yes
checking for unistd.h... (cached) yes
checking for alarm... yes
checking for working mktime... no
checking for argz.h... (cached) no
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking for malloc.h... (cached) yes
checking stdio_ext.h usability... no
checking stdio_ext.h presence... no
checking for stdio_ext.h... no
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for getpagesize... (cached) yes
checking for working mmap... (cached) yes
checking for __argz_count... (cached) no
checking for __argz_next... (cached) no
checking for __argz_stringify... (cached) no
checking for dcgettext... no
checking for mempcpy... (cached) no
checking for munmap... (cached) yes
checking for stpcpy... (cached) no
checking for strcspn... yes
checking for strdup... (cached) yes
checking for wctype.h... (cached) no
checking for wchar.h... (cached) no
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking for mbsrtowcs... (cached) no
checking for mbrtowc... yes
checking for mbrlen... yes
checking for wctomb... yes
checking for wcwidth... yes
checking for wcsdup... no
checking for mbstate_t... yes
checking for nl_langinfo and CODESET... yes
checking for dlopen in -ldl... yes
checking for dlopen... yes
checking for dlclose... yes
checking for dlsym... yes
checking whether sys_siglist is declared... no
checking for uid_t in sys/types.h... yes
checking type of array argument to getgroups... gid_t
checking for off_t... (cached) yes
checking for mode_t... yes
checking for uid_t in sys/types.h... (cached) yes
checking for pid_t... yes
checking for size_t... (cached) yes
checking for ssize_t... yes
checking for time_t... yes
checking for long long... long long
checking for unsigned long long... unsigned long long
checking return type of signal handlers... (cached) void
checking for char... yes
checking size of char... 1
checking for short... yes
checking size of short... 2
checking for int... yes
checking size of int... 4
checking for long... yes
checking size of long... 4
checking for char *... yes
checking size of char *... 4
checking for double... yes
checking size of double... 8
checking for long long... yes
checking size of long long... 8
checking for u_int... yes
checking for u_long... yes
checking for bits16_t... no
checking for u_bits16_t... no
checking for bits32_t... no
checking for u_bits32_t... no
checking for bits64_t... no
checking for ptrdiff_t... yes
checking whether stat file-mode macros are broken... no
checking whether #! works in shell scripts... yes
checking whether the ctype macros accept non-ascii characters... yes
checking if dup2 fails to clear the close-on-exec flag... no
checking whether pgrps need synchronization... no
checking for type of signal functions... posix
checking for sys_errlist and sys_nerr... yes
checking for sys_siglist in system C library... yes
checking for _sys_siglist in signal.h or unistd.h... yes
checking for _sys_siglist in system C library... yes
checking whether signal handlers are of type void... yes
checking for clock_t... yes
checking for sigset_t... yes
checking for quad_t... no
checking for intmax_t... yes
checking for uintmax_t... yes
checking for socklen_t... yes
checking for size and type of struct rlimit fields... rlim_t
checking for struct termios.c_line... no
checking for struct termio.c_line... yes
checking for struct dirent.d_ino... yes
checking for struct dirent.d_fileno... no
checking for struct dirent.d_namlen... no
checking for struct winsize in sys/ioctl.h and termios.h... sys/ioctl.h
checking for struct timeval in sys/time.h and time.h... yes
checking for struct stat.st_blocks... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for struct tm.tm_zone... no
checking for tzname... yes
checking for struct timezone in sys/time.h and time.h... yes
checking for the existence of strsignal... no
checking if opendir() opens non-directories... no
checking whether ulimit can substitute for getdtablesize... yes
checking to see if getenv can be redefined... no
checking if getcwd() will dynamically allocate memory... no
checking for presence of POSIX-style sigsetjmp/siglongjmp... present
checking whether or not strcoll and strcmp differ... no
checking for standard-conformant putenv declaration... no
checking for printf floating point output in hex notation... yes
checking if signal handlers must be reinstalled when invoked... no
checking for presence of necessary job control definitions... present
checking for presence of named pipes... present
checking whether termios.h defines TIOCGWINSZ... yes
checking for TIOCSTAT in sys/ioctl.h... no
checking for FIONREAD in sys/ioctl.h... yes
checking for speed_t in sys/types.h... no
checking whether getpw functions are declared in pwd.h... yes
checking for unusable real-time signals due to large values... no
checking for tgetent... no
checking for tgetent in -ltermcap... yes
checking which library has the termcap functions... using libtermcap
checking whether /dev/fd is available... standard
checking whether /dev/stdin stdout stderr are available... absent
checking for default mail directory... /var/mail
checking shared object configuration for loadable builtins... supported
updating cache ./config.cache
configure: creating ./config.status
config.status: creating Makefile
config.status: creating builtins/Makefile
config.status: creating lib/readline/Makefile
config.status: creating lib/glob/Makefile
config.status: creating lib/intl/Makefile
config.status: creating lib/malloc/Makefile
config.status: creating lib/sh/Makefile
config.status: creating lib/termcap/Makefile
config.status: creating lib/tilde/Makefile
config.status: creating doc/Makefile
config.status: creating support/Makefile
config.status: creating po/Makefile.in
config.status: creating examples/loadables/Makefile
config.status: creating examples/loadables/perl/Makefile
config.status: creating pathnames.h
config.status: creating config.h
config.status: executing default-1 commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
config.status: executing default commands


... all of which looks okay to me.

The only other things which look at all suspect are:
    WARNINGs for "textdomain" and "bindtextdomain" saying "The indicated expression has no effect."
    WARNINGs that /usr/include/stdint.h and /usr/include/inttypes.h contain incompatible type definitions(!)
and
    WARNINGs at linking-stage that lib/tilde/libtilde.a and lib/readline/libhistory.a aren't used for resolving any symbol.


Any ideas... ?
zappa wrote: This ist strange, since building from scratch works fine for me. Maybe some gccism active there, since I'm building with gcc. Can you take a look into config.h, if DPAREN_ARITHMETIC is indeed defined?


Yeah - I'm confused: DPAREN_ARITHMETIC is set in config.h, and yet commands which make use of the syntax don't work.

I've even been through and fixed every single WARNING that MIPSpro throws out (except for the binddomain and bindtextdomain ones, but I don't think they're significant).

By default, configure sets config.h to include both <stdint.h> and <inttypes.h> which clash with each other, and I changed config.h to address this. It made no difference...

I tried to look at putting some debugging in to see where things are going wrong, but DPARENS_ARITHMETIC appears in so many of the source files that I don't know where to concentrate.

In any case, I couldn't get paren arithmetic to work at all with MIPSpro (7.4.3m) :(

To assess the depth of this problem, could anyone who reads this please run the command from my initial post, and help to confirm:

* Does this problem affect only me, only people using 6.5.28, or all versions of IRIX on all machines (using neko_bash)?

Assuming more than just me are affected, the next step would be to see whether building with GCC on the same machine works or not...
nekonoko wrote: Might be worthwhile to apply the bash-3.0 patches and see if that resolves anything


Good thought - but this was with bash-3.00.16, which incorporates the latest patches.

voidfoo wrote: it seems that one char is eaten by some unknown


You're a genius! Well spotted ;)

So I guess the next question is: Can anyone see why this is happening... ?
I'm working through this one now with one of the bash maintainers ... current thoughts are a GCC-ism that's been missed, or bison doing something silly.

I'll report back with any updates - but if anyone has any further thoughts then please post!

docelic - what version of the compilers are you using? I've an unconfirmed report that 7.3.1m generates working bash binaries, whereas my 7.3.4m definitely doesn't

Cheers,

Stuart
irixpgmr wrote:
Does anyone have any ideas on how to get around the password length problem. I would like to increase my usable password length to more than 8 characters. Has anyone figured out how to do this?


IIRC, the GUI password/secuirty tools limit you to 8 characters, but the good old UNIX "passwd" utility doesn't impose any arbitrary* length restrictions.

So, the best thing to do is probably to run "pwconv" (to setup/synchronise shadow passwords) and then use "passwd" to set the passwords for any accounts you need.

* although I think there is still a maximum of 255 characters
nekosync-1.2 is now available from here !

If you don't know what nekosync is or does, then these previous threads should help to explain things:

Updated: nekosync-1.1
micq 0.5.1 - firefox 1.5.0.1rc1 - sylpheed 2 b5

Changes:
    As per the 2nd link above, nekosync can now fetch from an unlimited number of directories or sites - great for people who want to mirror Foetz' packages;
    A couple of minor mistakes in default values were corrected;
    nekosync now contains real version information; ;)
    nekosync now has a proper command-line interface.


The biggest change is the addition of a command-line interface, meaning that you can make one-off configuration changes without editing any files (and, indeed, with enough typing nekosync can now be used without any configuration file). " nekosync --help " will list all of the available options, and " nekosync --show " will show what the current value of these options are: " nekosync --show=default " will show the built-in values, " nekosync --show=file " will show the values stored in the active configuration file, and " nekosync --show " or " nekosync --show=actual " will show the values that will actually be used.

The centre column of " --show " output is the command-line option used to set the value in question, and a coloured exclamation mark means that a specified binary or directory doesn't exist or can't be read/written to/executed.
Whoops - I've just spotted a stupid mistake I made when I added command-line support to nekosync, which means that if you specify " --get " or " --sync " on the command line, any mirror location read from your config file is stomped on - so nothing happens unless you also specify a mirror at the same time. This is now fixed, and " nekosync.pl --sync " now works as expected.

I've created an updated package, which is available from here .

If you run " nekosync.pl --version " then the latest version will return " 1.2-5 " - please upgrade if you are using any other nekosync version, as the latest releases have much improved verification features, meaning that you won't now lose any data in the event of a network glitch or partially-updated index on the server.
Earlier today I uploaded I uploaded nekosync 1.2-6 .

Changes:
    Fixed a couple of "undefined value" warning when the download mirror is dead or dies during transfer (which I was able to test extensively on nekochan.net today :D );
    nekosync now lists the number of the package being downloaded, so you can judge its progress more easily;
    nekosync.conf updated to version 1.3 - the layout is more logical, and "check" functionality added;
    Added a new check, enabled by default, that will automatically let you know if there is a newer release of nekosync available (so I don't need to keep spamming the forum... )


The update check downloads a single tiny file from my server to see what the latest version of nekosync is - no personal data is stored or sent at any time, in any form. Furthermore, nekosync will only tell you if there is an update - it will not download updates automatically.

You can check for updates without sync'ing by running " nekosync.pl --checkonly "
  • Exactly what errors do you see when running nekosync (if any)?
  • What is the output of "nekosync --show"
  • What is the base version of your config file (first line of nekosync.conf - which should be 1.3)
  • What are your settings for $safe and $pretend?
  • Did you create the dist/inst directories yourself, or did you let nekosync do it? Are you running nekosync as the same user as you first ran it with?
  • Do the permissions on your dist/inst directories look sensible?
If you're still having problems, could you run "nekosync --verbose --debug" and email me the output?

Cheers,

    Stuart
I've fixed those initial " Use of uninitialized value " warnings now, and I've spotted an error with selecting which rsync binary to use. Additionally, the output of " --show " has been improved to highlight possible problems more clearly.

Updates can be downloaded now - run " nekosync --checkonly " to see them!

You don't seem to have altered the " $configured " line in the config file above - did you run " nekosync --configured "? Where did you install the configuration file (with the latest version of nekosync, this information is included in the " --show " output)?

Could you email me the output of nekosync when run with " --debug --verbose " as arguments, please?
D'oh! That " Use of uninitialized value " (which is harmless) was in the rsync detection code I just added. I reckon they're all fixed now - prove me wrong with the next release ;)

Bear in mind that nekosync (currently) uses bash to discover the location of the required utilities - so you must have bash installed and either in your PATH , run nekosync with the " --path " option, or set $gnupath in the config file.

Speaking of which, nekosync looks for its config file in ~/.nekosync.conf , /usr/nekoware/etc/nekosync.conf , and finally /etc/nekosync.conf - so your (edited) config should be placed in one of these three locations.

In any case, if you run " nekosync --show " then it will highlight any problems with an exclamation mark and colour (if run on an xterm/aterm/etc.) - which is a real help in diagnosing problems.
Well spotted... that was, er, a deliberate mistake of course. Just to check you were ... erm ... paying attention :oops:

In other news: nekosync 1.2r8 - now in glorious technicolour!
nekonoko wrote: That's correct - it's my personal project at this point.


If you'd like nekosync to allow mirroring from this archive, then all that's needed is a descript.ion file with MD5 sums, and everything'll just work (using either the $mirror or $extra configuration directives, or the --mirror or --extra command-line options).

Having said that, if you'd prefer to protect your bandwidth and wait until the mirrors have a copy of the data, then that's completely understandable :)
I've got a DCD and two monitors, whch appear as Channels 0 and 1.

What'd be useful is if, rather than having iconbar stuck on Channel 0, I could choose instead to have it centred on Channel 1 (which tends to be less crowded) or centred over the two.

(Apologies if this can already be done - a quick perusal of the manpage seemed to suggest not, but I could have missed something)

Infact, what'd be really great would be a "dualchannel" option, which would ensure that no icon was ever chopped in half over different monitors (by extending the bar off-centre when an odd number of icons are present) - and perhaps even by drawing an additional border down the centre of the bar, so that there's a break between the two screens. That'd look fantastic ;)

(Might it be possible to allow the iconbar to be dragged to any position on an edge of the root window, automatically detect where Channel boundaries lie, and add a border/break at that point? This sounds like a pretty major undertaking - but it sure would be cool!)
I've had to disable root-mirroring (plexing) on 6.5.29, because IRIX incorrectly failed to mark the drives as clean when unmounting on reboot, so the entire array had to be rebuilt on every restart.

Admittedly, I almost never reboot my Octane - but I had problems after a power-failure when my Octane took about 45 minutes to reboot, and my boss wasn't impressed :(

I logged a bug with SGI about this, and a few months ago they did say that the fix would be in 6.5.30 - but I don't see any mention of it here (although "Changes to in-core extent list" might be a candidate)

Here's hoping...
I think freeciv2 is broken - it seems to have neko_audiofile.sw.lib as a dependancy, but the nekoware archive only contains a neko_libaudiofile.sw.lib.

Additionally, running swmgr over the entire archive - current and beta - I get a further conflict:

neko_dia requires neko_perl.modules.xml_parser

... which doesn't seem to exist, either (needs to be updated to neko_perl_xml_parser.sw.eoe?)
joerg wrote:
Stuart please test it if its now install and runing.


Yup - that's fine now. Thanks!
Oh, FFS - as a registered SGI Developer, I have access to 6.5.30.
Do I get patch 7110? ... no.

That'd obviously make far too much sense :evil:

Could someone please PM me an accessible download location?
Errm... you're right!

All of the files in the archive are named "*6529m*"?!

And I've just spent all night downloading them :cry:
I didn't need to run newaliases, but I am betting the following message in my SYSLOG:

Code: Select all

Aug 20 19:16:19 4D:octane /usr/etc/eventmond[868]: Subscription repository '/var/emgr/subscr.eventmond' contains bad entries (not loaded).
Aug 20 19:16:19 4D:octane /usr/etc/eventmond[868]: Invoke eventmond with -R option to remove these entries permanently.
Aug 20 19:16:19 4D:octane /usr/etc/eventmond[868]: EmgrCmdEventProcessor() - sendto(EMGRE:-1) ret = -1, errno = 2, No such file or directory.


I'll have to see if it comes back once I reboot.

Yet again, this release has minor issues on systems with seperate root and usr partitions: There are some binaries on the root partition which depend on libraries on the usr partition, and the symlinks in /var/www/ are one element too short.

I'm just relabelling my disks to see whether the XVM revive problem is now fixed... if it is, then I declare this release a success!
For a whie now, I've been running pkgsrc from NetBSD on IRIX to build packages from scratch, thus ensuring that they're fully optimised for my machine.

I'll record the necessary changes in this thread, so that anyone who's interested can also play with pkgsrc without lots of head=scratching and problems.
First up, my mk.conf . I have this in /usr/bsd/etc/, and a symlink pointing here in /etc.

These settings configure pkgsrc to exist in /usr/bsd/src, owned by netbsd:netbsd. Running pkgsrc as a non-root user is a great idea when used as a secondary package manager, to ensure that no OS files can be overwritten - although pkgsrc is actually very good at ensuring that this doesn't happen.

(I also changed the permissions on /usr/bsd to netbsd:sys, so that the necessary top-level directories can be created)

Code: Select all

.ifdef BSD_PKG_MK       # begin pkgsrc settings

OPSYS=                  IRIX
ABI=                    32
PKGSRC_COMPILER=        mipspro

IMAKEOPTS+=             -DBuildN32 -DSgiISA32=4

UNPRIVILEGED=           YES
UNPRIVILEGED_USER=      netbsd
UNPRIVILEGED_GROUP=     netbsd
BINOWN=                 netbsd
BINGRP=                 netbsd
ROOT_USER=              netbsd
ROOT_GROUP=             netbsd
SHAREOWN=               netbsd
SHAREGRP=               netbsd
CHOWN=                  true
CHGRP=                  true

LOCALBASE=              /usr/bsd
VARBASE=                ${LOCALBASE}/var
X11BASE=                /usr
PKGMANDIR=              man

PKG_DBDIR=              ${VARBASE}/db/pkg
WRKOBJDIR=              ${VARBASE}/tmp
INSTALL=                ${LOCALBASE}/bin/install-sh
FETCH_CMD=              ${LOCALBASE}/bin/ftp
RCD_SCRIPTS_DIR=        ${PKG_SYSCONFBASEDIR}/rc.d

PKGVULNDIR=             ${LOCALBASE}/src/distfiles
PKGREPOSITORY=          ${VARBASE}/tmp
PKG_SUFX=               .tbz

#USE_TOOLS=             no

PKG_TOOLS_BIN=          ${LOCALBASE}/sbin

TOOLS_PLATFORM.install?=${LOCALBASE}/bin/install-sh
TOOLS_PLATFORM.awk?=    ${LOCALBASE}/bin/gawk
TOOLS_PLATFORM.sed?=    ${LOCALBASE}/bin/gnu-sed
TOOLS_PLATFORM.pax?=    ${LOCALBASE}/bin/pax
TOOLS_PLATFORM.tar?=    ${LOCALBASE}/bin/gnu-tar
TOOLS_PLATFORM.mtree?=  ${LOCALBASE}/sbin/mtree

AWK=                    ${LOCALBASE}/bin/gawk
CMP=                    ${LOCALBASE}/bin/cmp
ECHO=                   ${LOCALBASE}/bin/echo
EXPR=                   ${LOCALBASE}/bin/expr
FGREP=                  ${LOCALBASE}/bin/fgrep
FIND=                   ${LOCALBASE}/bin/find
GREP=                   ${LOCALBASE}/bin/grep
PAX=                    ${LOCALBASE}/bin/pax
SED=                    ${LOCALBASE}/bin/sed
SETENV=                 ${LOCALBASE}/bin/env
SORT=                   ${LOCALBASE}/bin/sort

#SED=                   ${LOCALBASE}/bin/nbsed

TMPDIR=                 ${VARBASE}/tmp

CDROM_PKG_URL_DIR=      /CDROM

# pkgsrc build options:
# Update options
NOCLEAN=                YES
REINSTALL=              YES
# Clean options
CLEANDEPENDS=           YES

#PKGSRC_MESSAGE_RECIPIENTS?=    netbsd
#PKGSRC_RUN_TEST?=      YES

PASSIVE_FETCH=          YES
FAILOVER_FETCH=         YES
MASTER_SORT=            .ac.uk .co.uk .org.uk .net .com .org
SETGIDGAME?=            YES
SMART_MESSAGES=         YES

DEFAULT_SERIAL_DEVICE=  /dev/ttyd1

ACCEPTABLE_LICENSES+=   IDEA-licence
ACCEPTABLE_LICENSES+=   ms-ttf-license
ACCEPTABLE_LICENSES+=   no-commercial-use

# Use flags:
DEFANG_USER?=           nobody
DEFANG_GROUP?=          nogroup

GNU_PROGRAM_PREFIX?=    gnu-
KRB5_PREFIX?=           k
USE_INET6?=             YES

PAPERSIZE=              A4

PKG_JVM=                sun-jdk14
PKG_JVM_DEFAULT=        sun-jdk14
PKG_JAVA_HOME=          /usr/java2

PKG_DEFAULT_OPTIONS+=    arping1
PKG_DEFAULT_OPTIONS+=    freetype
PKG_DEFAULT_OPTIONS+=    inet6
PKG_DEFAULT_OPTIONS+=    x11

PKG_OPTIONS.aalib+=      ncurses slang
PKG_OPTIONS.allegro+=    esound
PKG_OPTIONS.gaim+=       audio gnutls -gtkspell -nas perl -silc tcl
PKG_OPTIONS.gawk+=       portals
PKG_OPTIONS.gkrellm+=    ssl
PKG_OPTIONS.gqmpeg+=    -gqmpeg-japanese -gqmpeg-russian
PKG_OPTIONS.heimdal+=    kerberos-prefix-cmds
PKG_OPTIONS.libmikmod+=  esound
PKG_OPTIONS.perl+=      -threads
PKG_OPTIONS.pinfo+=      pinfo-native-curses
PKG_OPTIONS.scummvm+=   -x11
PKG_OPTIONS.SDL+=       -arts -nas
PKG_OPTIONS.smpeg+=      gtk-player opengl-player
PKG_OPTIONS.vim+=        cscope

#.if exists(${LOCALBASE}/bin/dfdisk)
#FETCH_CMD=             ${LOCALBASE}/bin/dfdisk fetch
#.endif

.endif                  # end pkgsrc settings


Note that the PKG_OPTIONS only cover packages I've actually installed, and that the Java related stuff doesn't work just yet...

Also note that the TOOLS_PLATFORM and command settings should be commented out until these binaries actually exist!
Next up, create a " netbsd " user and group. I set the user's home to /usr/bsd/src (e.g. the pkgsrc root directory) with bash (3.1, compiled from source manually with GCC to ensure that it's not broken) as the defautl shell.

In their home directory, this user then has the following .bashrc (and a corresponding .bash_profile entry to source it):

Code: Select all

# For pkgsrc usage, set initial environment...

PS1="\u@\h \w # "
export PS1

alias vi='DISPLAY="" vim'
alias ls='ls --color=auto -hF'
alias grep='grep --colour'

PAGER=less
export PAGER

FTP_PASSIVE=1
export FTP_PASSIVE

sysman="/usr/catman:/usr/share/man:/usr/share/catman"
optman="/opt/man:/opt/modules/2.2.2.5/man"
sgiman=" /usr/freeware/catman:/var/sgi_apache/server/man"

bsdman="/usr/bsd/catman:/usr/bsd/man:/usr/bsd/lib/perl5/man:/usr/bsd/lib/perl5/site_perl/man:/usr/bsd/lib/perl5/vendor_perl/man"
nekoman="/usr/nekoware/man:/usr/nekoware/ssl/man"
gentooman="/usr/gentoo/man"

localman="/usr/local/man:/usr/local/games/bzflag-1.10.7/man"

MANPATH="$bsdman:$sysman:$optman:$sgiman:$nekoman:$gentooman:$localman"
export MANPATH

unset sysman optman sgiman bsdman nekoman gentooman localman zeusman

MANFMTCMD="groff -Tascii -man"
export MANFMTCMD

PATH="/usr/bsd/sbin:/usr/bsd/bin:/usr/freeware/sbin:/usr/gnu/bin:/usr/freeware/bin:/usr/bsd:/usr/sbin:$PATH"
export PATH

XAPPLRESDIR=/usr/bsd/lib/X11/app-defaults
export XAPPLRESDIR

PKGSRCDIR=/usr/bsd/src
export PKGSRCDIR

common="-O2 -n32 -mips4 -r14000 -apo -float_const -use_readonly_const -TARG:isa=mips4:platform=ip30:processor=r14000 -TENV:zeroinit_in_bss=ON -OPT:fast_io=ON:Olimit=8192:reorg_common=ON:swp=ON -LNO:auto_dist=ON:fusion_peeling_limit=8:gather_scatter=2 -woff 1174,1183,1185,1552,3970,3968"

bsdcompat="-D_BSD_COMPAT"
bsdfull="-D_BSD_TYPES -D_BSD_TIME" # -D_BSD_SIGNALS : Breaks use of <sigaction.h>

namespace="-LANG:exceptions=OFF:libc_in_namespace_std=OFF"

CC=cc
# Using "c99" as the C compiler ensures C99 mode,
# but breaks libtool.
#CC=c99
CXX=CC

CPPFLAGS="-I/usr/bsd/include"
CFLAGS="-c99 $common"
CXXFLAGS="$common -FE:eliminate_duplicate_inline_copies:template_in_elf_section $namespace"
LDFLAGS="-Wl,-v -Wl,-s -Wl,-x -n32 -mips4 -rdata_shared -Wl,-allow_jump_at_eop -Wl,-rpath,/usr/bsd/lib"
export CC CXX CPPFLAGS CFLAGS CXXFLAGS LDFLAGS

unset common bsdcompat bsdfull namespace

NOWARN="-woff 1009,1014,1110,1116,1185,1188,1204,1230,1233 -Wl,-woff,85,-woff,84"
export NOWARN

LD_LIBRARY_PATH=/usr/lib
LD_LIBRARYN32_PATH=/usr/lib32:/usr/bsd/lib:/usr/gnu/lib
LD_LIBRARY64_PATH=/usr/lib64
export LD_LIBRARY_PATH LD_LIBRARYN32_PATH LD_LIBRARY64_PATH

TMP=/usr/bsd/var/tmp
TEMP=$TMP
export TMP TEMP

alias pkgdep="pkgdep -I $PKGSRCDIR/INDEX"
alias pkg_info="pkg_info -K /usr/bsd/var/db/pkg"

# set vi:nowrap


Note that, with this script in place, man pages won't work until groff is installed. Without it, on the other hand, some man pages won't render at all.

The netbsd user then has the following crontab:

Code: Select all

#
# Update NetBSD/pkgsrc and its vulnerabilities list
#
5       5       *       *       *       [ -x /usr/bsd/bin/cvs ] && ( cd /usr/bsd/src && CVSROOT="[email protected]:/cvsroot" CVS_RSH="ssh" /usr/bsd/bin/cvs -q update -dP ; )
0       6       *       *       *       [ -x /usr/bsd/sbin/download-vulnerability-list ] && /usr/bsd/sbin/download-vulnerability-list >/dev/null 2>&1
5       6       *       *       *       [ -x /usr/bsd/sbin/audit-packages ] && /usr/bsd/sbin/audit-packages
6       6       *       *       *       [ -x /usr/bsd/sbin/pkg_chk ] && PATH="/usr/bsd/bin:/usr/bsd/sbin:$PATH" PKGSRCDIR="/usr/bsd/src" /usr/bsd/sbin/pkg_chk -sun 2>&1

# set vi:nowrap
Once the pkgsrc distribution has been downloaded, the following patches need to be applied.

To ensure that the work/.buildlink directories have both lib and lib32 directories:

Code: Select all

--- mk/buildlink3/bsd.buildlink3.mk.dist        2006-08-27 00:09:45.845085881 +0100
+++ mk/buildlink3/bsd.buildlink3.mk     2006-08-27 00:11:51.032943401 +0100
@@ -486,8 +486,10 @@
${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${BUILDLINK_X11_DIR}
${_PKG_SILENT}${_PKG_DEBUG}${LN} -sf ${BUILDLINK_DIR} ${BUILDLINK_X11_DIR}
.endif
+       ${_PKG_SILENT}${_PKG_DEBUG}${LN} -sf ${BUILDLINK_DIR} ${BUILDLINK_DIR}/bsd
${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${BUILDLINK_DIR}/include
${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${BUILDLINK_DIR}/lib${LIBABISUFFIX}
+       ${_PKG_SILENT}${_PKG_DEBUG}${LN} -sf ${BUILDLINK_DIR}/lib${LIBABISUFFIX} ${BUILDLINK_DIR}/lib

# The following variables are all optionally defined and control which
# package files are symlinked into ${BUILDLINK_DIR} and how their names


It's a little noisy, but to prevent subtle parsing errors:

Code: Select all

--- mk/tools/tools.IRIX.mk.dist 2006-08-27 00:20:33.388323401 +0100
+++ mk/tools/tools.IRIX.mk      2006-08-31 14:05:11.740552720 +0100
@@ -3,7 +3,12 @@
# System-supplied tools for the IRIX operating system.

TOOLS_PLATFORM.[?=             [                       # shell builtin
-TOOLS_PLATFORM.awk?=           /usr/bin/nawk
+#TOOLS_PLATFORM.awk?=          /usr/bin/nawk
+.if exists(/usr/gnu/bin/gawk)
+TOOLS_PLATFORM.awk?=           /usr/gnu/bin/gawk
+.else
+TOOLS_PLATFORM.awk?=           /usr/freeware/bin/gawk
+.endif
TOOLS_PLATFORM.basename?=      /sbin/basename
TOOLS_PLATFORM.cat?=           /sbin/cat
TOOLS_PLATFORM.chgrp?=         /sbin/chgrp


To fix many instances where configure can't find a C++ preprocessor:

Code: Select all

--- mk/compiler.mk.dist 2006-08-27 00:07:33.194539401 +0100
+++ mk/compiler.mk      2006-08-27 00:01:54.501870921 +0100
@@ -174,7 +174,8 @@
.endif
.if empty(USE_LANGUAGES:Mc++)
PKG_CXX:=              ${_FAIL_WRAPPER.CXX}
-ALL_ENV+=              CXXCPP=${CPP:Q} # to make some Autoconf scripts happy
+#ALL_ENV+=             CXXCPP=${CPP:Q} # to make some Autoconf scripts happy
+ALL_ENV+=              CXXCPP="CC -E"
override-tools: ${_FAIL_WRAPPER.CXX}
.endif
.if empty(USE_LANGUAGES:Mfortran)


Add a missing include, mainly for building the INDEX file:

Code: Select all

--- mk/endian.mk.dist   2006-08-27 00:13:23.456731081 +0100
+++ mk/endian.mk        2006-08-27 00:14:36.635545721 +0100
@@ -30,7 +30,8 @@
.  endif

MACHINE_ENDIAN!=                                                       \
-       { ${ECHO} "\#include <${_ENDIAN_H}>";                           \
+       { ${ECHO} "\#include <standards.h>";                            \
+         ${ECHO} "\#include <${_ENDIAN_H}>";                           \
${ECHO} "\#ifndef BYTE_ORDER";                                \
${ECHO} "\#ifdef _BIG_ENDIAN";                                \
${ECHO} "\#define BYTE_ORDER 4321";                           \


... and finally, make sure that we don't try to check what OS we're on without first including the platform-specific files:

Code: Select all

--- mk/oss.buildlink3.mk.dist   2006-08-27 00:15:37.773963081 +0100
+++ mk/oss.buildlink3.mk        2006-08-27 00:16:30.285935881 +0100
@@ -35,6 +35,7 @@

.if !empty(OSS_BUILDLINK3_MK:M+)
LIBOSSAUDIO?=          ${BUILDLINK_LDADD.oss}
+.include "bsd.prefs.mk"
.  if (${OPSYS} == "Linux") && exists(/dev/dsp)
DEVOSSAUDIO?=          /dev/dsp
DEVOSSSOUND?=          /dev/dsp


Some problems still remain which I've not been able to fix yet... there's a cosmetic issue where builds will output something along the lines of "work/.buildlink/wrapper/bin/cc[50]: Not found" a number of times, but this to be caused by a malformed logging statement in one of the pkgsrc .mk files, and doesn't look like anything serious.

More problematic is that meta-packages (which only pull in other real packages) don't work - they will always mis-detect that the first package they depend on is not present (even if it is), and will then rebuild it - but complain when it gets to the installation stage that the package is already present. This happens even if the dependant package is first uninstalled. This can also be worked around by simple installing the constituent packages and ignoring the meta-package, but this is messy.
The are many packages which don't compile by default with MIPSpro on IRIX, many of which require only changes to the pkgsrc Makefile. This is especially true when building with the " -apo " Auto-parallelisation option, which causes binaries to addiitonally require being linked to libmp.so . This is often solved by adding:

Code: Select all

LDFLAGS.IRIX+= -lmp
... to the Makefile. If this doesn't work, then:

Code: Select all

LIBS.IRIX+= -lmp
... is worth a try.

A final note on APO - there are some things it just can't handle. If the build process faults with a segfault followed by an internal compiler error, then running the most recent invocation of $CC/$CXX again without APO, and it will succeed and the build can continue from where it left off - ghostscript-gnu is a good example of this. gtk2 , on the other hand, will generate these faults for every object in the gdk subdirectory... in this case, removing all instances of "-apo" from the Makefile is much easier.

So far, I've found the following packages which won't build on IRIX/MIPSpro without source code changes:

devel/gettext
devel/gettext-tools
fonts/ttmkfdir2
net/ORBit2
archivers/zip
audio/flac
audio/gqmpeg
audio/speex
audio/vorbis-tools
chat/bitlbee
chat/gaim
graphics/freetype-lib
graphics/freetype-utils
lang/perl5
misc/pinfo
misc/watch
multimedia/libmpeg2
pkgtools/p5-pkgsrc-Dewey
print/ghostscript
security/gnutls
sysutils/findutils
sysutils/gnome-vfs2
textproc/libxml
x11/xterm

... and note that any version of bash3 built on MIPSpro will not work correctly - there's something in there which only likes GCC (the build will complete and bash will run, but some syntax will not be parsed correctly. For example, "echo $(( 3 + 4 ))" should output "7", not "4: command not found".
devel/gettext and devel/gettext-tools include a horrible macro which is GNU-specific, and then even more fragile tests to try to determine if you're using a compiler which doesn't like this (which seems, frankly, to be most of them - including Apple's GCC!)

I've tried to get this fixed, but the MIPSpro fix applied in-tree doesn't actually solve the problem (although possibly due to miscommunication on my part...)

The necessary patch to be applied after invoking "bmake patch" in the devel/gettext and devel/gettext-tools directories are:

Code: Select all

--- work/gettext-0.14.6/gettext-tools/src/po-lex.c.dist 2006-08-31 15:33:19.927792640 +0100
+++ work/gettext-0.14.6/gettext-tools/src/po-lex.c      2006-08-26 21:12:36.337875040 +0100
@@ -66,14 +66,9 @@
lex_pos_ty gram_pos;
int gram_pos_column;

-
/* Error handling during the parsing of a PO file.
These functions can access gram_pos and gram_pos_column.  */

-#if !defined __sgi && !(__STDC__ && \
-      ((defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __DECC) \
-       || (defined __GNUC__ && __GNUC__ >= 2 && !defined __APPLE_CC__)))
-
/* CAUTION: If you change this function, you must also make identical
changes to the macro of the same name in src/po-lex.h  */

@@ -132,9 +127,6 @@
po_error (EXIT_FAILURE, 0, _("too many errors, aborting"));
}

-#endif
-
-
/* The lowest level of PO file parsing converts bytes to multibyte characters.
This is needed
1. for C compatibility: ISO C 99 section 5.1.1.2 says that the first


Code: Select all

--- work/gettext-0.14.6/gettext-tools/src/po-lex.h.dist 2006-08-31 15:33:19.968316720 +0100
+++ work/gettext-0.14.6/gettext-tools/src/po-lex.h      2006-08-26 21:12:36.340589840 +0100
@@ -70,85 +70,8 @@
Switch this on or off.  */
extern void po_lex_pass_obsolete_entries (bool flag);

-
-/* ISO C 99 is smart enough to allow optimizations like this.
-   Note: OpenVMS 7.3 cc pretends to support ISO C 99 but chokes on '...'.  */
-#if __STDC__ && (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __DECC)
-
-/* CAUTION: If you change this macro, you must also make identical
-   changes to the function of the same name in src/po-lex.c  */
-
-# define po_gram_error(fmt, ...)                                           \
-  do {                                                                     \
-    char *totalfmt = xasprintf ("%s%s", "%s:%lu:%d: ", fmt);               \
-    error_with_progname = false;                                           \
-    po_error (0, 0, totalfmt, gram_pos.file_name,                          \
-             (unsigned long) gram_pos.line_number, gram_pos_column + 1,    \
-             __VA_ARGS__ + 0);                                             \
-    error_with_progname = true;                                                    \
-    free (totalfmt);                                                       \
-    if (*fmt == '.')                                                       \
-      --error_message_count;                                               \
-    else if (error_message_count >= gram_max_allowed_errors)               \
-      po_error (1, 0, _("too many errors, aborting"));                     \
-  } while (0)
-
-/* CAUTION: If you change this macro, you must also make identical
-   changes to the function of the same name in src/po-lex.c  */
-
-# define po_gram_error_at_line(pos, fmt, ...)                              \
-  do {                                                                     \
-    error_with_progname = false;                                           \
-    po_error_at_line (0, 0, (pos)->file_name, (pos)->line_number,          \
-                     fmt, __VA_ARGS__ + 0);                                \
-    error_with_progname = true;                                                    \
-    if (*fmt == '.')                                                       \
-      --error_message_count;                                               \
-    else if (error_message_count >= gram_max_allowed_errors)               \
-      po_error (1, 0, _("too many errors, aborting"));                     \
-  } while (0)
-
-/* GCC is also smart enough to allow optimizations like this.  */
-#elif __STDC__ && defined __GNUC__ && __GNUC__ >= 2 && !defined __APPLE_CC__ \
-       && !defined __sgi
-
-/* CAUTION: If you change this macro, you must also make identical
-   changes to the function of the same name in src/po-lex.c  */
-
-# define po_gram_error(fmt, args...)                                       \
-  do {                                                                     \
-    char *totalfmt = xasprintf ("%s%s", "%s:%d:%d: ", fmt);                \
-    error_with_progname = false;                                           \
-    po_error (0, 0, totalfmt, gram_pos.file_name, gram_pos.line_number,            \
-             gram_pos_column + 1 , ## args);                               \
-    error_with_progname = true;                                                    \
-    free (totalfmt);                                                       \
-    if (*fmt == '.')                                                       \
-      --error_message_count;                                               \
-    else if (error_message_count >= gram_max_allowed_errors)               \
-      po_error (1, 0, _("too many errors, aborting"));                     \
-  } while (0)
-
-/* CAUTION: If you change this macro, you must also make identical
-   changes to the function of the same name in src/po-lex.c  */
-
-# define po_gram_error_at_line(pos, fmt, args...)                          \
-  do {                                                                     \
-    error_with_progname = false;                                           \
-    po_error_at_line (0, 0, (pos)->file_name, (pos)->line_number,          \
-                     fmt , ## args);                                       \
-    error_with_progname = true;                                                    \
-    if (*fmt == '.')                                                       \
-      --error_message_count;                                               \
-    else if (error_message_count >= gram_max_allowed_errors)               \
-      po_error (1, 0, _("too many errors, aborting"));                     \
-  } while (0)
-
-#else
extern void po_gram_error (const char *fmt, ...);
extern void po_gram_error_at_line (const lex_pos_ty *pos, const char *fmt, ...);
-#endif
-

/* Contains information about the definition of one translation.  */
struct msgstr_def


devel/gettext-asprintf also fails to build: The configure script strips "-LANG:exceptions=OFF:libc_in_namespace_std=OFF" from the supplied CXXFLAGS, the lack of which in turn prevents C++ code from seeing stdarg.h's va_list definition.

The cheating way to fix this is:

Code: Select all

--- work/gettext-0.14.6/gettext-runtime/libasprintf/vasprintf.h.dist 2006-08-31 16:03:12.846440200 +0100
+++ work/gettext-0.14.6/gettext-runtime/libasprintf/vasprintf.h      2006-08-31 16:03:28.959791000 +0100
@@ -21,6 +21,7 @@

/* Get va_list.  */
#include <stdarg.h>
+typedef char *va_list;

#ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later.  */
Nihilus wrote: To get netpbm working do this:

Code: Select all

2) cd /usr/pkgsrc/devel/netpbm cvs update -dP -D20050801


The latest working version of NetPBM is 10.29, from Makefile revision 1.125, 2005/09/20.

All of the 10.3x releases break because no pm_error symbol is defined.
fontconfig needs a small patch to fix dumb GNU-isms:

Code: Select all

--- fccache.c.dist 2006-09-10 00:30:00.000000000 +0100
+++ fccache.c      2006-09-12 12:48:56.956367480 +0100
@@ -809,7 +809,7 @@
* Hokey little macro trick to permit the definitions of C functions
* with the same name as CPP macros
*/
-#define args(x...)         (x)
+#define args(...)          (__VA_ARGS__)

const FcChar8 *
FcCacheDir args(const FcCache *c)


During the build process, a file named "fcaliastail.h" is generated... which by default contains one "#if" directive and 181 "#endif"s. For obvious reasons, the MIPSpro preprocessor barfs at this. All except the last of these "#endif"s need removing - it's probably best to use sed or awk.
Nihilus wrote: Works with MIPSPRO IFF -O1 is set.


I can't reproduce this, unfortunately. Certainly, bash-3.2 with -O1 the test suite looks better - but for me it also hangs during the "run-printf" tests.

I built using:

Code: Select all

CC="cc" CFLAGS="-O1 -n32 -mips4 -woff 1174,1183,1185,1552" LDFLAGS="-Wl,-v -Wl,-s -n32 -mips4" ./configure --enable-alias --enable-arith-for-command --enable-array-variables --enable-bang-history --enable-brace-expansion --enable-command-timing --enable-cond-command --enable-cond-regexp --enable-debugger --enable-directory-stack --enable-disabled-builtins --enable-dparen-arithmetic --enable-extended-glob --enable-help-builtin --enable-history --enable-job-control --enable-net-redirections --enable-process-substitution --enable-progcomp --enable-prompt-string-decoding --enable-readline --enable-select --enable-xpg-echo-default
(e.g. very minimal flags)

Looking at the differences between the "/tmp/xx" output from the test suite before hanging, the expected values are:

Code: Select all

4.20
4.20
4.2
4.20
4.20
4.2
4.200000E+00
4.200000e+00
4.2E+00
4.2e+00
... whereas my last output from my test-suite before hanging is:

Code: Select all

0.00
0.00
0.0
0.00
0.00
0.0
-INF
-inf
-INF
-inf
... so I'm wondering if some form of floating-point exception is causing the hang.

Nihilus , could you confirm exactly what configure options you used, and what the content of your /etc/compiler.defaults file is?