Testing ports/patches on non-i386 (such as amd64)

Chuck Swiger cswiger at mac.com
Sun Jun 20 10:40:44 PDT 2004


Daniel Roethlisberger wrote:
> What's the best way to handle such a situation as port maintainer?
> Should I file a PR asking for a committer to test my patches? Or should
> I find someone able and willing to do some testing for me through other
> means, such as posting patches to this list? Or should I just go ahead
> and have the untested patches committed, and wait for the bento logs to
> tell me about success or failure? (I don't particularly like this one).
> Any other options?

If you want to make sure your port works properly on the SPARC or Alpha, for 
example, having access to a machine of that type is very helpful.  You might 
ask on the appropriate freebsd-sparc, freebsd-alpha, etc mailing list whether 
someone will test your port or give you a login so you can do the testing 
yourself.

If noone responds, it's likely that you can not worry about that platform 
until someone does run your port and does run into a problem.  :-)

In the meantime, you can make changes to the software in a fashion that are 
platform-independent using C99 concepts; use portable datatypes such as 
intXX_t's rather than depending on sizeof(short) = 2 and sizeof(int) = 4, etc, 
particularly in struct's which are persisted in data files or sent over the 
network; you can avoid depending on fancy platform-specific analysis like GNU 
autoconf [1]; compile using -Wall and fix any warnings, pay attention to 
implicit conversions and casting when dereferencing pointers, etc.

While you're there, one can also herd the code towards using snprintf() rather 
than sprintf() to try to avoid buffer overflows, using malloc() and [*gasp*] 
actually checking it's return value, rather than using automaticly allocated 
arrays on the stack, and so forth.  None of this is rocket science.  There's a 
lot of sloppy code of there, though...

-- 
-Chuck

[1]: The notion of conditional code which depends on actual tests of the local 
platforms capabilities is fine, to the extent that doing so is actually 
useful.  However, autoconf has long since passed the point of being the tail 
wagging the dog in that it often takes longer to run ./configure than it does 
to actually build the program itself, when every ./configure run contains 
hundreds of lines of the same tests as every other, when the program code 
contains a maze of twisty little #ifdefs, all alike, when testing for 
sizeof(int) and the like encourages people to write code which depends on 
these conditionals rather than simply using a portable approach from the 
start, testing the maximum size of the argument list (and wasting lots of CPU 
time doing so) and hardcoding that value into the executable when that 
"maximum size" may well change if someone switches which shell they use or 
recompile the kernel, etc.

[ I guess I pressed one of my own buttons here.  :-) ]


More information about the freebsd-ports mailing list