Re: [Tack-devel] new PowerPC tests: ack-ptest
Brought to you by:
dtrg
From: George K. <ke...@gm...> - 2016-11-10 02:58:42
|
On Wed, Nov 9, 2016 at 11:26 AM, Nelson H. F. Beebe <be...@ma...> wrote: > However, before it can receive wide testing and use, ack really needs > a new top-level main program that presents a POSIX-compatible compiler > interface... I believe that ack -E needs to work, ack -lm needs to work. Right now, they don't work. POSIX seems to define both -E and -lm. Also, ack's own build system uses both -E and -lm, so it must be impossible now for ack to compile itself. Current ack ignores unknown options (including -E). I believe that ack needs to reject unknown options with an error message. > I attempted a build of the snapshot on a freshly-installed Mac OS X > 10.11.6 (El Capitan) system, where the default C compiler is named > gcc, but is really clang under the hood. The build fails... Thank you for trying! So far I have not heard that ack can run on OS X. I forgot to say that I don't run ack on OS X. I use my kernigh-osx branch to cross-compile binaries for OS X from my machine running OpenBSD/amd64. Manoël Trapier tried to run ack on OS X in 2013. He doesn't seem to have had much success. His code is in the to_ansi branch of https://github.com/Godzil/ack Because clang hates to compile old C code, the branch tried to convert the code to ANSI C, by declaring return types and prototypes for functions. My own PowerPC system with Mac OS X 10.4.11 and Xcode 2.5 is so old that it has an authentic gcc, not clang. I might have a better chance of a successful compile. But there's another problem: some ack tools use brk() and sbrk() to allocate memory. Apple's brk() and sbrk() didn't work, so Manoël Trapier provided (in modules/src/sbrk/sbrk_emu.c) an emulation of brk() and sbrk() around calloc(), based on an example from D A Gwyn. I now have a different emulation of brk() and sbrk() in plat/osx/libsys/brk.c of my kernigh-osx branch, where ack cross-compiles to OS X. It can't link with Apple's libraries, so I must provide my own brk() and sbrk() for use with ack libc. I emulate them around mmap() and mprotect(). > Build attempts were unsuccessful on Ubuntu 16.04.1 LTS (Xenial Xerus) > and TrueOS (a FreeBSD 12 offshoot). During those builds, I got > numerous complaints like this: > > Circular /tmp/ack-build/build.make <- /tmp/ack-build/build.make dependency dropped. > > and > > Makefile:81: target 'w' given more than once in the same rule > Makefile:81: target '-f' given more than once in the same rule > Makefile:81: target '/tmp/ack-build/build.make' given more than once in the same rule This might be a problem with ackbuilder's back end for make. I use the back end for ninja because ackbuilder detects that my machine has ninja. So my ack-build/ contains build.ninja, not build.make. I might not install ninja on every machine where I try to build ack, so I might encounter this problem later. --George Koehler |