Snider, Tim wrote:
I'm attempting to cross compile, build, and collect files to install
Lustre and run on a separate machine.
According to the documentation and web pages Lustre can be installed in
an alternate directory path according to the web pages and configure
using the --prefix, --exec-prefix, --with-lustre options when configure
is run.
For me the configure script seems to be ignoring those options.
Sorry about the delay in responding, on the road. hopefully I can help.
Is this really a true cross-compile? (different CPU arch, requires
different compilers?) If so, I'd say it's
highly unlikely to work, as we have never supported other arches and we
don't cross-compile. (Unless you are a Cray XT3)
2 unique problems occur depending on if I build as a normal user or as root.
Environment settings for both user and root builds are:
LINUX=/home/tsnider/linux-2.6.18.3
GCC_EXEC_PREFIX=/home/tsnider/tsLustre/lustre-1.5.95
CFLAGS="-I/cross/armv5l-linux/include -g -O2"
GCC=/cross/armv5l-linux/bin:/cross/libexec/gcc/armv5l-linux/3.4.4
EXEC_PREFIX=/home/tsnider/tsLustre/lustre-1.5.95
CC=/cross/armv5l-linux/bin:/cross/libexec/gcc/armv5l-linux/3.4.4
LUSTRE=/home/tsnider/tsLustre/lustre-1.5.95
A common configuration command is also used:
sh configure --host=armv5l-linux --target=armv5l-linux
--with-linux=/home/tsnider/linux-2.6.18.3 --disable-l iblustre
--prefix=/home/tsnider/lustre2/installLustre/ --
--exec-prefix=/home/tsnider/lustre2/installLustre//
In your config.log I see:
configure:1447: checking build system type
configure:1465: result: x86_64-redhat-linux-gnu
That doesn't look like a cross-compile. You should not need or
use the --host and --target options.
According to my understanding the --with-linux, --prefix, and
--exec-prefix should cause Lustre executables/files
to be installed in the specified alternate path.
--with-linux indicates where the kernel source is (needed to compile
modules) I don't think it changes where the bits are installed.
"Normal user" make issue:
As a normal user "make install" tries to copy files to the system
path /lib/modules/2.6.18.3......
Make errors out (as expected) since a normal user can't modify system
paths/files.
I assumed that one of the alternate paths would be used since they
were specified during configure, but they weren't.
There are 2 main possibilities for sources of the problem:
A. pilot error (probably)
B. Configure (& associated scripts) ignore the alternate
path options.
C. the GNU configure goop (--prefix,etc ) applies to user-space
programs, afaik anytime we build kernel modules we use the Linux kernel
build system, which is called by our Makefiles, and thus kernel modules
are installed in a directory that matches the kernel source suppled.
( as an aside, i dunno how you make Linux put kernel modules anyplace
_other than /lib/modules..)
Was the kernel source you pointed to set up for the cross-compile?
Why doesn't mkinstalldirs redirect the install path to the one
specified by the --with-linux, --prefix, or --exec-prefix
option that was given during configure? Am I missing something or do
the configure scripts need to be investigated?
"Root" make issue:
I understand from the manual and read me files that RPMs can not be
made for distros other than redhat or sles.
What distro do you need? We build on anything that is remotely
redhat-ish (Centos, Fedora) If your build system is
x86_64-redhat-linux-gnu, 'make rpms' should Just Work.
"make install" will build lustre. It appears that installation path
directives are ignored. The attached file
shows that makinstalldirs behaves inconsistently. Sometimes it installs
in the specified path and other times it
installs in the system path.
/bin/sh ../../../mkinstalldirs /lib/modules/2.6.18.3/kernel/net/lustre
/bin/sh ../../mkinstalldirs
/bin/sh ../../mkinstalldirs
/bin/sh ../../mkinstalldirs /home/tsnider/lustre2/installLustre//lib
/bin/sh ../../mkinstalldirs /lib/modules/2.6.18.3/kernel/fs/lustre
For cross compilation and installation on another machine files should
be in a common place so they can
be packaged, in some manner, and sent to the target machine.
I'd like to know how to correctly specify options to do this. Or do the
auto config/make scripts need
work in order for this to work?
The best way to do this with current Lustre is 'make rpms'
As root "make install" Details of errors are below.
Other minor things:
1. files have to modified during build, the patches don't seem to be
entirely complete.
That's quite possible with these 1.6 betas, please post specific errors
to lustre-devel and the 1.6 beta team will catch them.
2. Configure spits out the following warning:
configure: WARNING: If you wanted to set the --build type, don't use
--host.
If a cross compiler is detected then cross compile mode will be used.
3. a few warnings appear for 2.6 port / implemnentation stuff:
/home/tsnider/lustre2/lustre-1.5.95/lustre/obdecho/echo_client.c:650:2:
warning: #warning "echo_client_ubrw() needs to be ported on 2.6 yet"
/home/tsnider/lustre2/lustre-1.5.95/lustre/obdfilter/lproc_obdfilter.c:392:2:
warning: #warning "port on 2.6 -bzzz"
I don't think these errors are meaningful. echo_client is used for
testing only.
Any help someone can give is appreciated. I don't know if it's possible
to do what I'd like to do. The attached file contains the console output
from configure and build commands.
Key questions - what CPU arch are you attempting to build for?
Best Regards
cliffw
Thanks,
Timothy Snider
Storage Architect
Strategic Planning, Technology and Architecture
LSI Logic Corporation
3718 North Rock Road
Wichita, KS 67226
(316) 636-8736
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>_
------------------------------------------------------------------------
_______________________________________________
Lustre-discuss mailing list
[email protected]
https://mail.clusterfs.com/mailman/listinfo/lustre-discuss
_______________________________________________
Lustre-discuss mailing list
[email protected]
https://mail.clusterfs.com/mailman/listinfo/lustre-discuss