On Saturday 22 August 2009 22:30:37 CAI Qian wrote: > From: Mike Frysinger <[email protected]> > > On Friday 21 August 2009 07:57:39 CAI Qian wrote: > >> Test cases unshare failed to compile on systems without such a > >> syscall. I am unsure what the best way to handle it. The old ways are, > >> > >> * add a kernel version check in the unshare tests code. > >> > >> or > >> > >> * add a m4 rule. > >> * modify the unshare tests code to check if the macro, and add stub > >> functions if the macro is false. > >> > >> The first approach is unable to handle non-vanilla kernels. The second > >> approach needs to add stub functions which are unclean. What I would > >> like to do is, > >> > >> * add a m4 rule. > >> * modify unshare Makefile like this, > >> > >> ifdef HAVE_UNSHARE <-- if the syscall is present, compile the tests. > > > > the configure test should always be there if the code needs new > > headers (like sys/signalfd.h). if it's only a new syscall, then the > > configure test should only be for the new symbol (assuming one is > > provided). in all cases, the tests should be compiled. your proposal > > doesnt handle the case where the C library is in place, but the kernel > > is older so returns ENOSYS. > > OK, how about those two approaches? > > * add a stub C program to check if kernel returns ENOSYS. If so, returns > 1. Otherwise, 0. > * add a m4 rule to check the headers or/and functions. > * if ./configure found all headers and functions, and execute the stub > program to return 0, it will set HAVE_UNSHARE. > * modify unshare Makefile to complie it only if HAVE_UNSHARE set. > > or > > * add a m4 rule to check the headers or/and functions. > * if ./configure found all headers and functions, , it will set > HAVE_UNSHARE. > * modify the test code to deal with three situations. > * HAVE_UNSHARE = 0 > * HAVE_UNSHARE = 1 + ENOSYS > * HAVE_UNSHARE = 1 + no ENOSYS
in addition to the reasoning Garrett provided, this makes for a fairly complicated setup for no real gain. the solution i mentioned (and is being used) covers all known build/runtime issues. if you need a new C library function, check for it. if you need a new C library header, check for it. if a test may be run on an older system and thus the call fails with ENOSYS, the test must check for it and error out with TCONF (and a helper message). whether someone chooses to also add a runtime kernel version check (as can be seen in a few tests) is up to whoever feels like doing the work. -mike
signature.asc
Description: This is a digitally signed message part.
------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
