Re: LIS build limitation
Dan Gora <[email protected]> Fri, 24 Jun 2005 09:44:14 -0700 (PDT)
| Newsgroups | gmane.linux.kernel.streams |
|---|---|
| Message-ID | <[email protected]> |
Hi Jerry,
If you want to use a LGPL version of LiS, you cannot use Brian's
version, since his is GPL. I am porting the GCOM (LGPL) version of
LiS right now to SuSE 9.3 which uses a 2.6.11.4-20a kernel. I ran
into the same compile problem which I fixed with the patches below.
Also it looks like you are suppling the wrong directory for the
directory to the kernel source. Usually this is /usr/src/linux, but
some distros don't have that link set up. On my SuSE 9.3 machine
here it's /usr/src/linux-2.6.11.4-20a (note: for SuSE distros you
have to explicitly set this directory because the method to guess the
kernel source directory in the configure script is broken on 2.6 SuSE
distros, it guesses /usr/src/linux-2.6.11.4-20a-obj, which doesn't
work.).
This first compile time problem is because they have changed the pipe
structure in /usr/src/linux/include/linux/pipe_fs_i.h in 2.6.10-RC10:
Note: This may break pipe operation (I doubt it, but maybe...). I
haven't tested it yet because we don't use it.
--- linux-mdep.c.old 2005-06-23 16:10:48.000000000 -0300
+++ linux-mdep.c 2005-06-23 16:13:38.000000000 -0300
@@ -2576,8 +2576,11 @@
i->i_pipe = kmalloc(sizeof(struct pipe_inode_info), GFP_KERNEL);
if (i->i_pipe) {
init_waitqueue_head(PIPE_WAIT(*i));
- PIPE_BASE(*i) = NULL;;
- PIPE_START(*i) = PIPE_LEN(*i) = 0;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11)
+ PIPE_BASE(*i) = NULL;
+ PIPE_LEN(*i) = 0;
+#endif
+ PIPE_START(*i) = 0;
PIPE_READERS(*i) = PIPE_WRITERS(*i) = 0;
#if !defined(KERNEL_2_5)
PIPE_WAITING_READERS(*i) = PIPE_WAITING_WRITERS(*i) = 0;
You also have to change head/linux/exports.c because they finally
removed the definition of EXPORT_SYMBOL_NOVERS in 2.6.11:
--- exports.c.old 2005-06-23 16:24:19.000000000 -0300
+++ exports.c 2005-06-23 16:25:12.000000000 -0300
@@ -48,6 +48,11 @@
#define __NO_VERSION__ 1 /* 2.2 kernel needs this */
#include <linux/module.h>
+#ifndef EXPORT_SYMBOL_NOVERS
+/* This was finally ripped out of the Linux Kernel in 2.6.11 */
+#define EXPORT_SYMBOL_NOVERS(sym) EXPORT_SYMBOL(sym)
+#endif
+
#include <sys/stream.h>
#include <sys/poll.h>
#include <sys/lislocks.h>
You'll probably have to patch these by hand rather than using these
patch files because the old file is not the original LiS 2.18.0 file
but a file that had already been modified by us (Adax, Inc).
We are still planning on contributing all of our changes to LiS
2.18.0 to the LGPL LiS release, but some minor things have been
broken along the way to make things work on the various kernel
versions. All of the major functionality works and in fact all of
our product line on Linux uses it. Some things we just don't use
however, like all of the TLI library, pipes, etc and have not tested.
I'd like to get a version cleaned up that at least preserves all of
the old LiS functionality on 2.4 kernels before doing a public
release of all of our changes.
If you look in the archives however I've been posting the changes
that we've been making in bits in pieces, so hopefully you can get
something together that works.
Hope this helps
-dan
--- Jerry Stahl <[email protected]> wrote:
> Hi,
>
> I have an application that was originally developed on Sun Solaris
> and is currently in the process of being ported to Fedora Core 3
> Linux (FC3). The application will require the Linux streams
> library, in particular, there are parts of the application that use
> the fattach() function. I have 2 kernel releases (2.6.9-1.667 and
> 2.6.11-1.27.FC3) loaded in FC3 that I have tried to build the LIS
> streams library against and for each kernel used, I have run into
> errors during each build attempt. I have followed the web site
> instructions specifically for the 2.6 kernels.
> Any help or suggestions on what should be done to get a successful
> build would be appreciated. Below is my system output from running
> "make" on the library.
>
>
> Thanks
>
> J.S.
>
>
*********************************************************************************************************
>
> [root@KLASS-DEV LiS-2.18]# make
>
> LiS Configure script version 2.100 10/11/04 invoked from main
> makefile
>
> CONFIG=/usr/src/LiS-2.18/config.in
>
> package=LiS
>
> prefix=/usr
>
> execprefix=/usr
>
> includedir=/usr/include
>
> libdir=/usr/lib
>
> bindir=/usr/bin
>
> sbindir=/usr/sbin
>
> sysconfdir=/etc
>
> datadir=/usr/share
>
> pkgincludedir=/usr/include/LiS
>
> pkglibdir=/usr/lib/LiS
>
> pkgdatadir=/usr/share/LiS
>
> pkgsrcdir=/usr/src/LiS
>
> mandir=/usr/share/man
>
> modsubdir=misc
>
>
>
> How do you want to configure STREAMS?
>
> l = to run in the Linux kernel
>
> u = to run in user level
>
> q = to run under QNX (may not work)
>
> Please enter your choice [default: l] l
>
> Are you using the native Linux C compiler (y) or are you
> cross-compiling using a different compiler (n)?
>
> Native C (y) or cross-compile (n)? [default: y] y
>
> Do you intend to run LiS on this machine with the currently running
> kernel? [default: y] n
>
> Enter directory location of your kernel source
>
> [default: /usr/src/linux] /lib/modules/2.6.11-1.27_FC3/build
>
> In file included from <command line>:1:
>
> /lib/modules/2.6.11-1.27_FC3/build/include/linux/config.h:6:2:
> #error including kernel header in userspace; use the glibc headers
> instead!
>
> No kernel support for SMP detected.
>
> In file included from <command line>:1:
>
> /lib/modules/2.6.11-1.27_FC3/build/include/linux/config.h:6:2:
> #error including kernel header in userspace; use the glibc headers
> instead!
>
> In file included from <command line>:1:
>
> /lib/modules/2.6.11-1.27_FC3/build/include/linux/config.h:6:2:
> #error including kernel header in userspace; use the glibc headers
> instead!
>
> Kernel support for mod-versions detected.
>
> In file included from <command line>:1:
>
> /lib/modules/2.6.11-1.27_FC3/build/include/linux/config.h:6:2:
> #error including kernel header in userspace; use the glibc headers
> instead!
>
> Kernel support for IP version 6 detected.
>
> In file included from <command line>:1:
>
> /lib/modules/2.6.11-1.27_FC3/build/include/linux/config.h:6:2:
> #error including kernel header in userspace; use the glibc headers
> instead!
>
> Kernel support for IP version 6 modules detected.
>
> In file included from <command line>:1:
>
> /lib/modules/2.6.11-1.27_FC3/build/include/linux/config.h:6:2:
> #error including kernel header in userspace; use the glibc headers
> instead!
>
> Kernel compiled using register passing for parameters
>
> Which version of the kernel are you building for? [default:
>
> 2.6.11-1.27_FC3]
>
> After building STREAMS, do you want kernel loadable modules
> installed?
>
> This allows you to load it by typing in "insmod streams".
>
> y = install it for module loading
>
> n = just leave modules for later "make modules_install"
>
> Please enter y or n [default: y] y
>
> Module installation directory will be
> /lib/modules/2.6.11-1.27_FC3/misc
>
> When you make STREAMS, do you want to use backward compatible
> constants in the file stropts.h? If you answer No (the default) you
> will get constants that are compatible with UnixWare and Solaris,
> but which differ somewhat from previous versions of LiS. If you
> answer Yes you will get constants that are compatible with previous
> versions of LiS but somewhat incompatible with UnixWare and
> Solaris. If you intend to run application programs that were
> compiled with LiS-2.6 or earlier then they have the old constants
> compiled into them and you should answer Yes to this question.
>
> y = LiS backward compatible constants in stropts.h
>
> n = UnixWare/Solaris compatible constants in stropts.h Please enter
> y or n [default: n] n
>
> When you make STREAMS, do you want to use Solaris style cmn_err?
>
> In Solaris the newline goes on the end of the message. For SVR4
> style cmn_err the newline goes on the beginning.
>
> y = Solaris style cmn_err
>
> n = SVR4 style cmn_err
>
> Please enter y or n [default: n] y
>
> When you make STREAMS, do you want to compile for source level
> debugging?
>
> This is most useful when STREAMS is linked into the kernel and the
> gdbstub patch is installed in the kernel for kernel source level
> debugging.
>
> y = set up for source level debugging
>
> n = no source level debugging
>
> Please enter y or n [default: n] y
>
> Do you want to use shared libraries?
>
> If you select static linking, you will get larger binaries that run
> by themselves. If you select dynamic linking, the binaries will be
> smaller but you will have to install the shared libraries in a
> directory that is in your LD_LIBRARY_PATH environment variable.
>
> y = use dynamic linking with shared libraries
>
> n = use static linking
>
> Please enter y or n [default: y] y
>
> When you make STREAMS, do you want to use int type for CPU flags?
>
> Responding 'n' is more portable but may cause warnings when you
> compile your driver code.
>
> y = int type for CPU flags
>
> n = unsigned long type for CPU flags Please enter y or n [default:
> y] y
>
> When you make STREAMS, do you want LiS to be compiled in production
> mode?
>
> In this mode LiS will not audit queue, msg pointer, and internal
> LiS queue structure sanity for every STREAMs function call. It will
> also use faster kernel allocations for messages.
>
> Responding 'y' is more appropriate for production environments
> Responding 'n' is more appropriate for development environments
> with verified modules/drivers.
>
> y = Production mode
>
> n = Development mode
>
> Please enter y or n [default: y] y
>
> Using "gcc -O2 -mpreferred-stack-boundary=2" 3.4.3 as the C
> compiler
>
> GET_EMPTY_INODE=new_inode((LIS_SB))
>
> CLEAN libc/linux
>
> CLEAN head/linux
>
> CLEAN drivers/str/linux
>
> CLEAN util/linux
>
> CLEAN pkg
>
> CLEAN modules
>
> CC util/linux/strconf
>
> STRCONF include/sys/LiS/config.h
>
> DEP libc/linux
>
> DEP head/linux
>
> DEP drivers/str/linux
>
> DEP util/linux
>
> DEP libc/linux
>
> DEP head/linux
>
> DEP drivers/str/linux
>
> DEP util/linux
>
> <WD> libc/linux
>
> <CC> gcc -c -Wall -Wstrict-prototypes -fno-strict-aliasing -Wno-
>
> sign-compare -fno-common -ggdb -O -mpreferred-stack-boundary=2 -
> DLISMODVERS -I/usr/src/LiS-2.18/include -
> I/lib/modules/2.6.11-1.27_FC3/build/include -
> I/lib/modules/2.6.11-1.27_FC3/build/include/asm/mach-generic -
> I/lib/modules/2.6.11-1.27_FC3/build/include/asm/mach-default
> -DRCVOID - DSOLARIS_STYLE_CMN_ERR -DUSE_KMEM_CACHE -DUSE_KMEM_TIMER
> - D__KERNEL_SYSCALLS__
>
> CC libc/linux/getpmsg.o
>
> CC libc/linux/getmsg.o
>
> CC libc/linux/putpmsg.o
>
> CC libc/linux/putmsg.o
>
> CC libc/linux/fattach.o
>
> CC libc/linux/fdetach.o
>
> CC libc/linux/isastream.o
>
> CC libc/linux/pipe.o
>
> LD libc/libLiS.so
>
> LD libc/libpLiS.so
>
> AR libc/libLiS.a
>
> ar: creating /usr/src/LiS-2.18/libc/libLiS.a
>
> RANLIB libc/libLiS.a
>
> <WD> util/linux
>
> <CC> gcc -DLINUX -Wall -Wstrict-prototypes -fno-strict-aliasing -
>
> Wno-sign-compare -fno-common -ggdb -O -mpreferred-stack-boundary=2
> - DLISMODVERS -I/usr/src/LiS-2.18/include -
> I/lib/modules/2.6.11-1.27_FC3/build/include -
> I/lib/modules/2.6.11-1.27_FC3/build/include/asm/mach-generic -
> I/lib/modules/2.6.11-1.27_FC3/build/include/asm/mach-default
> -DRCVOID - DSOLARIS_STYLE_CMN_ERR -DUSE_KMEM_CACHE -DUSE_KMEM_TIMER
>
> CC util/linux/streams
>
> CC util/linux/makenodes
>
> CC util/linux/timetst
>
> CC util/linux/strtst
>
> CC util/linux/polltst
>
> CC util/linux/ldltest
>
> CC util/linux/ldlconfig
>
> CC util/linux/test
>
> CC util/linux/test2
>
> CC util/linux/fattach
>
> CC util/linux/fdetach
>
> CC util/linux/oc
>
> CC util/linux/rwf
>
> CC util/linux/mkfifo
>
> CC util/linux/psfd
>
> CC util/linux/pafd
>
> CC util/linux/thrtst
>
> <WD> drivers/str/linux
>
> <CC> gcc -DLiS -mregparm=3 -DLINUX -D__KERNEL__ -DMODVERSIONS -Wall
>
> -Wstrict-prototypes -fno-strict-aliasing -Wno-sign-compare
> -fno-common - ggdb -O -mpreferred-stack-boundary=2 -DLISMODVERS -
> I/usr/src/LiS-2.18/include
> -I/lib/modules/2.6.11-1.27_FC3/build/include
>
> -I/lib/modules/2.6.11-1.27_FC3/build/include/asm/mach-generic -
> I/lib/modules/2.6.11-1.27_FC3/build/include/asm/mach-default
> -DRCVOID - DSOLARIS_STYLE_CMN_ERR -DUSE_KMEM_CACHE -DUSE_KMEM_TIMER
>
> CC drivers/str/linux/relay.o
>
> CC drivers/str/linux/clone.o
>
> CC drivers/str/linux/fifo.o
>
> CC drivers/str/linux/loop.o
>
> CC drivers/str/linux/minimux.o
>
> CC drivers/str/linux/printk.o
>
> CC drivers/str/linux/sad.o
>
> CC drivers/str/linux/connld.o
>
> CC drivers/str/linux/ip_strm_mod.o
>
> LD drivers/str/linux/drivers.o
>
> <WD> head/linux
>
> <CC> gcc -DLiS -D__KERNEL__ -DVERSION_2 -mregparm=3 -Wall -Wstrict-
>
> prototypes -fno-strict-aliasing -Wno-sign-compare -fno-common -ggdb
> -O -
>
> mpreferred-stack-boundary=2 -DLISMODVERS
> -I/usr/src/LiS-2.18/include -
> I/lib/modules/2.6.11-1.27_FC3/build/include -
> I/lib/modules/2.6.11-1.27_FC3/build/include/asm/mach-generic -
> I/lib/modules/2.6.11-1.27_FC3/build/include/asm/mach-default
> -DRCVOID - DSOLARIS_STYLE_CMN_ERR -DUSE_KMEM_CACHE -DUSE_KMEM_TIMER
> -DLINUX - DUSE_KTHREAD -DMODVERSIONS -DMODULE
>
> CC head/linux/head.o
>
> CC head/linux/dki.o
>
> CC head/linux/msg.o
>
> CC head/linux/mod.o
>
> /usr/src/LiS-2.18/head/mod.c: In function `lis_find_strdev':
>
> /usr/src/LiS-2.18/head/mod.c:1252: warning: `inter_module_put' is
> deprecated (declared at
> /lib/modules/2.6.11-1.27_FC3/build/include/linux/module.h:581)
>
> CC head/linux/buffcall.o
>
> CC head/linux/mdep.o
>
> In file included from /usr/src/LiS-2.18/head/mdep.c:26:
>
> /usr/src/LiS-2.18/head/linux-mdep.c: In function
> `lis_fifo_info_new':
>
> /usr/src/LiS-2.18/head/linux-mdep.c:2546: error: structure has no
> member named `base'
>
> /usr/src/LiS-2.18/head/linux-mdep.c:2547: error: structure has no
> member named `len'
>
> make[2]: *** [mdep.o] Error 1
>
> make[1]: *** [/usr/src/LiS-2.18/head/linux/streamshead.o] Error 2
>
> make: *** [.config_mk] Error 2
>
> [root@KLASS-DEV LiS-2.18]#
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com