Some months ago I asked if anybody managed to compile LilyPond in a computer which has a MIPS architecture: http://lists.gnu.org/archive/html/lilypond-user/2009-12/msg00127.html
In the meanwhile I bought a MIPSel netbook (Lemote Yeeloong) and successfully compiled lilypond in gNewSense 3 (based on Debian stable). I'm wondering if it is worth having a mipsel package on lilypond.org (when 2.14 comes out, maybe). I'd be happy to do it, if I can. A chance to help and learn something new. Here's what I've done: git clone git://github.com/janneke/gub.git cd gub bin/gub lilypond-installer But I have a problem with librestrict (attached librestrict.log): ######################################################################### Tail of target/tools/log/librestrict.log >>>>>>>> ./xstatconv.c:224: error: 'struct stat' has no member named '__pad2' ./xstatconv.c:266: error: 'struct stat' has no member named '__unused4' ./xstatconv.c:269: error: 'struct stat' has no member named '__unused5' Command barfed: cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c <<<<<<<< Tail of target/tools/log/librestrict.log *** Failed target: tools::librestrict ########################################################################## Just in case, I attach also target/tools/build/librestrict-1.9.a/xstatconv.c How can I fix it? Thanks, Federico PS (a report on a different subject) I've read that you have changed the ./configure in 2.13.21 In previous versions, when I run ./autogen.sh, ./configure failed to recognise my architecture, even though some information were printed on terminal (can't remember) and especially: `uname -m mips64` Since this version I don't have this warning. Maybe next time I can try removing the --build=mips64 option and see what happen.
* Starting build: Sun May 16 17:08:13 2010 must rebuild: tools::librestrict *** Checksum mismatch: diff (librestrict, tools) --- /home/fede/src/gub/target/tools/packages/librestrict.checksum 0000 +++ THIS BUILD Sun May 16 17:06:31 2010 @@ -1,1 +1,217 @@ -0000 +UpdateSourceDir(not tracking) *** Checksum mismatch: diff (librestrict, tools) --- /home/fede/src/gub/target/tools/packages/librestrict.checksum 0000 +++ THIS BUILD Sun May 16 17:06:31 2010 @@ -1,1 +1,217 @@ -0000 +UpdateSourceDir(not tracking) +Dump +/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a +untar +Dump +/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a +patch +rm -rf /home/fede/src/gub/target/tools/build/librestrict-1.9.a +ShadowTree +/home/fede/src/gub/librestrict +/home/fede/src/gub/target/tools/build/librestrict-1.9.a +Dump +/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a +shadow +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && cat restrict-open.c > restrict-all.c +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-exec.so restrict-exec.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-exec.so restrict-exec.c +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-open.so restrict-open.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-open.so restrict-open.c +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-all.so restrict-all.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-all.so restrict-all.c +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && mv librestrict-all.so librestrict.so +Dump +/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a +compile +rm -rf /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && mkdir -p /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/lib && cp -p librestrict*.so /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/lib +Func + def install (logger, lst): + for file in lst: + if os.path.exists (file): + cmd = self.expand (''' +mkdir -p %(install_root)s/license +cp %(file)s %(install_root)s/license/%(name)s +''', locals ()) + loggedos.system (logger, cmd) + return + +(['/home/fede/src/gub/target/tools/src/librestrict-1.9.a/COPYING', '/home/fede/src/gub/target/tools/src/librestrict-1.9.a/COPYING.LIB', '/home/fede/src/gub/target/tools/src/librestrict-1.9.a/LICENSE', '/home/fede/src/gub/target/tools/src/librestrict-1.9.a/LICENCE'],) +MapLocate + def installed_la_fixup (logger, la): + (dir, base) = os.path.split (la) + base = base[3:-3] + dir = re.sub (r"^\./", "/", dir) + + loggedos.file_sub (logger, [(''' *-L *[^\"\' ][^\"\' ]*''', ''), + (self.expand ('''( |=|\')(/[^ ]*usr/lib|%(targetdir)s.*)/lib([^ \'/]*)\.(a|la|so)[^ \']*'''), + '\\1-l\\3 '), + ('^old_library=.*', + self.expand ("""old_library='lib%(base)s.a'""", env=locals ())), + ], + la) + if self.settings.platform.startswith ('mingw'): + + loggedos.file_sub (logger, [('library_names=.*', + self.expand ("library_names='lib%(base)s.dll.a'", env=locals ()))], + la) + +/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root +lib*.la +rm -f /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root/home/fede/src/gub/target/tools/root/usr/info/dir /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root/home/fede/src/gub/target/tools/root/usr/info/dir.old /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root/home/fede/src/gub/target/tools/root/usr/share/info/dir /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root/home/fede/src/gub/target/tools/root/usr/share/info/dir.old /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root/home/fede/src/gub/target/tools/root/usr/cross/info/dir /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root/home/fede/src/gub/target/tools/root/usr/cross/info/dir.old /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root/home/fede/src/gub/target/tools/root/usr/cross/share/info/dir /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root/home/fede/src/gub/target/tools/root/usr/cross/share/info/dir.old +Dump +/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a +install +tar -C /home/fede/src/gub/target/tools/src --exclude "*~" --exclude "*.orig" -zcf /home/fede/src/gub/target/tools/packages/librestrict-1.9.a-src.tools.tar.gz librestrict-1.9.a +Dump +/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a +src_package +MapLocate + def rewire (logger, file): + if os.path.islink (file): + s = os.readlink (file) + if s.startswith ('/') and self.settings.system_root not in s: + new_dest = os.path.join (self.settings.system_root, s[1:]) + loggedos.remove (logger, file) + loggedos.symlink (logger, new_dest, file) + +/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root +* +PackageGlobs +/ +/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root +/home/fede/src/gub/target/tools/root +/home/fede/src/gub/target/tools/packages/librestrict-1.9.a.tools.gup +Dump +/home/fede/src/gub/target/tools/packages/librestrict.tools.hdr +CPATH= +CPLUS_INCLUDE_PATH=/home/fede/src/gub/target/tools/root/usr/include +C_INCLUDE_PATH=/home/fede/src/gub/target/tools/root/usr/include +LD_LIBRARY_PATH=/home/fede/src/gub/target/tools/root +LD_PRELOAD= +LIBRARY_PATH=/home/fede/src/gub/target/tools/root/usr/lib +PATH=/home/fede/src/gub/target/tools/root/usr/bin:/home/fede/src/gub/target/tools/root/usr/cross/bin:/home/fede/src/gub/target/tools/root/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/games +PERL5LIB=foo:/home/fede/src/gub/target/tools/root/usr/lib/perl5/5.10.0:/home/fede/src/gub/target/tools/root/usr/lib/perl5/5.10.0/mipsel-linux:/home/fede/src/gub/target/tools/root/usr/share/autoconf +__module__=librestrict +_created_name=librestrict +allbuilddir=/home/fede/src/gub/target/tools/build +alllogdir=/home/fede/src/gub/log +allsrcdir=/home/fede/src/gub/target/tools/src +alltargetdir=/home/fede/src/gub/target +architecture=tools +autodir=/home/fede/src/gub/target/tools/src/librestrict-1.9.a +ball_suffix=-1.9.a +basename=librestrict-1.9a +bits=32 +branch= +build_architecture=mipsel-linux +build_bits=32 +build_cpu=mipsel +build_dependencies_string=system::gcc +build_hardware_bits=32 +build_number=0 +build_os=linux +build_platform=linux-mipsel +builddir=/home/fede/src/gub/target/tools/build/librestrict-1.9.a +category= +checksum_file=/home/fede/src/gub/target/tools/packages/librestrict.checksum +compile_command=cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && cat restrict-open.c > restrict-all.c +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-exec.so restrict-exec.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-exec.so restrict-exec.c +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-open.so restrict-open.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-open.so restrict-open.c +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-all.so restrict-all.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-all.so restrict-all.c +cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && mv librestrict-all.so librestrict.so +compile_command_native=make -j2 prefix=/home/fede/src/gub/target/tools/root/usr +compile_flags= +config_cache_file=/home/fede/src/gub/target/tools/build/librestrict-1.9.a/config.cache +config_cache_overrides= +configure_binary=/home/fede/src/gub/target/tools/src/librestrict-1.9.a/configure +configure_command= sh /home/fede/src/gub/target/tools/src/librestrict-1.9.a/configure --prefix=/home/fede/src/gub/target/tools/root/usr --enable-shared --enable-static --disable-silent-rules CFLAGS=-I/home/fede/src/gub/target/tools/root/usr/include LDFLAGS='-L/home/fede/src/gub/target/tools/root/usr/lib -Wl,-rpath -Wl,\$$ORIGIN/../lib -Wl,-rpath -Wl,/home/fede/src/gub/target/tools/root/usr/lib ' +configure_flags= --prefix=/home/fede/src/gub/target/tools/root/usr --enable-shared --enable-static --disable-silent-rules +configure_prefix=/home/fede/src/gub/target/tools/root/usr +configure_variables= CFLAGS=-I/home/fede/src/gub/target/tools/root/usr/include LDFLAGS='-L/home/fede/src/gub/target/tools/root/usr/lib -Wl,-rpath -Wl,\$$ORIGIN/../lib -Wl,-rpath -Wl,/home/fede/src/gub/target/tools/root/usr/lib ' +conflicts_string=;librestrict;librestrict-exec;librestrict-exec-open;librestrict-exec-open-stat;librestrict-exec-stat;librestrict-open;librestrict-open-stat;librestrict-stat;coreutils;bash +core_prefix=/home/fede/src/gub/target/tools/root/usr/cross/core +cpu=tools +cpu_count=1 +cpu_count_str=1 +cross_allsrcdir=/home/fede/src/gub/target/tools/src/cross +cross_dir=/cross +cross_packages=/home/fede/src/gub/target/tools/packages/cross +cross_prefix=/home/fede/src/gub/target/tools/root/usr/cross +cross_statusdir=/home/fede/src/gub/target/tools/status/cross +debian_branch=stable +dependencies_string=; +description= +downloads=/home/fede/src/gub/downloads +fakeroot=fakeroot -i -s +fakeroot_cache= +file_name=librestrict-1.9a.tar +full_version=1.9.a +gtk_version=2.8 +gubdir=/home/fede/src/gub +gubdir_prefix=/home/fede/src/gub +install_command= mkdir -p /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/lib && cp -p librestrict*.so /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/lib +install_flags= DESTDIR=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root install +install_flags_destdir_broken= bindir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/bin aclocaldir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/share/aclocal datadir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/share exec_prefix=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr gcc_tooldir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr includedir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/include infodir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/share/info libdir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/lib libexecdir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/lib mandir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/share/man prefix=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr sysconfdir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr/etc tooldir=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr +install_prefix=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root//home/fede/src/gub/target/tools/root/usr +install_root=/home/fede/src/gub/target/tools/install/librestrict-1.9.a-root +installdir=/home/fede/src/gub/target/tools/install +job_spec=-j2 +libs= +logdir=/home/fede/src/gub/target/tools/log +make_flags=prefix=/home/fede/src/gub/target/tools/root/usr +name=librestrict +name_version=librestrict-1.9.a +nsisdir=/home/fede/src/gub/nsis +os=tools +package_arch=mipsel +packages=/home/fede/src/gub/target/tools/packages +packaging_suffix_dir=/home/fede/src/gub/target/tools/root +patchdir=/home/fede/src/gub/patches +platform=tools +platform_uploads=/home/fede/src/gub/uploads/tools +prefix_dir=/usr +pretty_name=Librestrict_nomake +root_dir=/root +rpath=-Wl,-rpath -Wl,\$$ORIGIN/../lib -Wl,-rpath -Wl,/home/fede/src/gub/target/tools/root/usr/lib +so_extension=.so +so_version=1 +source_checksum=1.9.a +source_name=librestrict +sourcefiledir=/home/fede/src/gub/sourcefiles +specdir=/home/fede/src/gub/gub/specs +split_ball=/home/fede/src/gub/target/tools/packages/librestrict-1.9.a.tools.gup +split_hdr=/home/fede/src/gub/target/tools/packages/librestrict.tools.hdr +split_name=librestrict +src_package_ball=/home/fede/src/gub/target/tools/packages/librestrict-1.9.a-src.tools.tar.gz +src_package_uploads=/home/fede/src/gub/target/tools/packages +srcdir=/home/fede/src/gub/target/tools/src/librestrict-1.9.a +stamp_file=/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a +statusdir=/home/fede/src/gub/target/tools/status +sub_name= +system_cross_prefix=/home/fede/src/gub/target/tools/root/usr/cross +system_prefix=/home/fede/src/gub/target/tools/root/usr +system_root=/home/fede/src/gub/target/tools/root +target_architecture=mipsel-linux +target_bits=32 +target_cpu=mipsel +target_gcc_flags= +target_os=linux +target_platform=tools +targetdir=/home/fede/src/gub/target/tools +toolchain_prefix= +tools_cross_prefix=/home/fede/src/gub/target/tools/root/usr/cross +tools_prefix=/home/fede/src/gub/target/tools/root/usr +tools_root=/home/fede/src/gub/target/tools/root +tools_root_dir=/tools/root +uploads=/home/fede/src/gub/uploads +vc_branch= +vc_branch_suffix= +version=1.9.a +workdir=/home/fede/src/gub +workdir_prefix=/home/fede/src/gub +rm -rf /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root +Dump +/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a +package +rm -rf /home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root +rm -rf /home/fede/src/gub/target/tools/src/librestrict-1.9.a /home/fede/src/gub/target/tools/build/librestrict-1.9.a building package: tools::librestrict *** Stage: download (librestrict, tools) *** Stage: untar (librestrict, tools) invoking rm -rf /home/fede/src/gub/target/tools/src/librestrict-1.9.a /home/fede/src/gub/target/tools/build/librestrict-1.9.a /home/fede/src/gub/target/tools/install/librestrict-1.9.a-root Running dump_file ('untar', '/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a', 'w') {'permissions': 420} *** Stage: patch (librestrict, tools) Running dump_file ('patch', '/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a', 'w') {'permissions': 420} *** Stage: shadow (librestrict, tools) invoking rm -rf /home/fede/src/gub/target/tools/build/librestrict-1.9.a Running shadow ('/home/fede/src/gub/librestrict', '/home/fede/src/gub/target/tools/build/librestrict-1.9.a', False) {} Running dump_file ('shadow', '/home/fede/src/gub/target/tools/status/librestrict-1.9.a-1.9.a', 'w') {'permissions': 420} *** Stage: compile (librestrict, tools) invoking cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && cat restrict-open.c > restrict-all.c invoking cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-exec.so restrict-exec.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-exec.so restrict-exec.c invoking cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-open.so restrict-open.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-open.so restrict-open.c invoking cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c In file included from restrict-stat.c:106: ./xstatconv.c: In function '__xstat_conv': ./xstatconv.c:54: error: 'struct stat' has no member named '__pad1' ./xstatconv.c:63: error: 'struct stat' has no member named '__pad2' ./xstatconv.c:90: error: 'struct stat' has no member named '__unused4' ./xstatconv.c:93: error: 'struct stat' has no member named '__unused5' ./xstatconv.c: In function '__xstat32_conv': ./xstatconv.c:192: error: 'struct stat' has no member named '__pad1' ./xstatconv.c:224: error: 'struct stat' has no member named '__pad2' ./xstatconv.c:266: error: 'struct stat' has no member named '__unused4' ./xstatconv.c:269: error: 'struct stat' has no member named '__unused5' In file included from restrict-stat.c:106: ./xstatconv.c: In function '__xstat_conv': ./xstatconv.c:54: error: 'struct stat' has no member named '__pad1' ./xstatconv.c:63: error: 'struct stat' has no member named '__pad2' ./xstatconv.c:90: error: 'struct stat' has no member named '__unused4' ./xstatconv.c:93: error: 'struct stat' has no member named '__unused5' ./xstatconv.c: In function '__xstat32_conv': ./xstatconv.c:192: error: 'struct stat' has no member named '__pad1' ./xstatconv.c:224: error: 'struct stat' has no member named '__pad2' ./xstatconv.c:266: error: 'struct stat' has no member named '__unused4' ./xstatconv.c:269: error: 'struct stat' has no member named '__unused5' Command barfed: cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c Traceback (most recent call last): File "bin/gub", line 233, in exceptional_build build (settings, options, files) File "bin/gub", line 229, in build b.build_source_packages (names) File "bin/../gub/buildrunner.py", line 334, in build_source_packages self.spec_build (spec_name) File "bin/../gub/buildrunner.py", line 262, in spec_build deferred_runner.execute_deferred_commands () File "bin/../gub/runner.py", line 167, in execute_deferred_commands cmd.execute (self.logger) File "bin/../gub/commands.py", line 75, in execute ignore_errors=self.ignore_errors) File "bin/../gub/loggedos.py", line 93, in system raise misc.SystemFailed (m) SystemFailed: Command barfed: cd /home/fede/src/gub/target/tools/build/librestrict-1.9.a && gcc -W -Wall -fno-stack-protector -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c || gcc -W -Wall -I. -fPIC -shared -o librestrict-stat.so restrict-stat.c
/* Convert between the kernel's `struct stat' format, and libc's. Copyright (C) 1991,1995-1997,2000,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include <errno.h> #include <sys/stat.h> #include <kernel_stat.h> #ifdef STAT_IS_KERNEL_STAT /* Dummy. */ struct kernel_stat; #else #include <string.h> #if !defined __ASSUME_STAT64_SYSCALL || defined XSTAT_IS_XSTAT64 int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf) { switch (vers) { case _STAT_VER_KERNEL: /* Nothing to do. The struct is in the form the kernel expects. We should have short-circuted before we got here, but for completeness... */ *(struct kernel_stat *) ubuf = *kbuf; break; case _STAT_VER_LINUX: { struct stat *buf = ubuf; /* Convert to current kernel version of `struct stat'. */ buf->st_dev = kbuf->st_dev; #ifdef _HAVE_STAT___PAD1 buf->__pad1 = 0; #endif buf->st_ino = kbuf->st_ino; buf->st_mode = kbuf->st_mode; buf->st_nlink = kbuf->st_nlink; buf->st_uid = kbuf->st_uid; buf->st_gid = kbuf->st_gid; buf->st_rdev = kbuf->st_rdev; #ifdef _HAVE_STAT___PAD2 buf->__pad2 = 0; #endif buf->st_size = kbuf->st_size; buf->st_blksize = kbuf->st_blksize; buf->st_blocks = kbuf->st_blocks; #ifdef _HAVE_STAT_NSEC buf->st_atim.tv_sec = kbuf->st_atim.tv_sec; buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec; buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec; buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec; buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec; buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec; #else buf->st_atime = kbuf->st_atime; buf->st_mtime = kbuf->st_mtime; buf->st_ctime = kbuf->st_ctime; #endif #ifdef _HAVE_STAT___UNUSED1 buf->__unused1 = 0; #endif #ifdef _HAVE_STAT___UNUSED2 buf->__unused2 = 0; #endif #ifdef _HAVE_STAT___UNUSED3 buf->__unused3 = 0; #endif #ifdef _HAVE_STAT___UNUSED4 buf->__unused4 = 0; #endif #ifdef _HAVE_STAT___UNUSED5 buf->__unused5 = 0; #endif } break; default: __set_errno (EINVAL); return -1; } return 0; } #endif int __xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf) { #ifdef XSTAT_IS_XSTAT64 return __xstat_conv (vers, kbuf, ubuf); #else switch (vers) { case _STAT_VER_LINUX: { struct stat64 *buf = ubuf; /* Convert to current kernel version of `struct stat64'. */ buf->st_dev = kbuf->st_dev; #ifdef _HAVE_STAT64___PAD1 buf->__pad1 = 0; #endif buf->st_ino = kbuf->st_ino; #ifdef _HAVE_STAT64___ST_INO buf->__st_ino = kbuf->st_ino; #endif buf->st_mode = kbuf->st_mode; buf->st_nlink = kbuf->st_nlink; buf->st_uid = kbuf->st_uid; buf->st_gid = kbuf->st_gid; buf->st_rdev = kbuf->st_rdev; #ifdef _HAVE_STAT64___PAD2 buf->__pad2 = 0; #endif buf->st_size = kbuf->st_size; buf->st_blksize = kbuf->st_blksize; buf->st_blocks = kbuf->st_blocks; #ifdef _HAVE_STAT64_NSEC buf->st_atim.tv_sec = kbuf->st_atim.tv_sec; buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec; buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec; buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec; buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec; buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec; #else buf->st_atime = kbuf->st_atime; buf->st_mtime = kbuf->st_mtime; buf->st_ctime = kbuf->st_ctime; #endif #ifdef _HAVE_STAT64___UNUSED1 buf->__unused1 = 0; #endif #ifdef _HAVE_STAT64___UNUSED2 buf->__unused2 = 0; #endif #ifdef _HAVE_STAT64___UNUSED3 buf->__unused3 = 0; #endif #ifdef _HAVE_STAT64___UNUSED4 buf->__unused4 = 0; #endif #ifdef _HAVE_STAT64___UNUSED5 buf->__unused5 = 0; #endif } break; /* If struct stat64 is different from struct stat then _STAT_VER_KERNEL does not make sense. */ case _STAT_VER_KERNEL: default: __set_errno (EINVAL); return -1; } return 0; #endif } int __xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf) { switch (vers) { case _STAT_VER_LINUX: { /* Convert current kernel version of `struct stat64' to `struct stat'. */ buf->st_dev = kbuf->st_dev; #ifdef _HAVE_STAT___PAD1 buf->__pad1 = 0; #endif #ifdef _HAVE_STAT64___ST_INO # if __ASSUME_ST_INO_64_BIT == 0 if (kbuf->st_ino == 0) buf->st_ino = kbuf->__st_ino; else # endif { buf->st_ino = kbuf->st_ino; if (sizeof (buf->st_ino) != sizeof (kbuf->st_ino) && buf->st_ino != kbuf->st_ino) { __set_errno (EOVERFLOW); return -1; } } #else buf->st_ino = kbuf->st_ino; if (sizeof (buf->st_ino) != sizeof (kbuf->st_ino) && buf->st_ino != kbuf->st_ino) { __set_errno (EOVERFLOW); return -1; } #endif buf->st_mode = kbuf->st_mode; buf->st_nlink = kbuf->st_nlink; buf->st_uid = kbuf->st_uid; buf->st_gid = kbuf->st_gid; buf->st_rdev = kbuf->st_rdev; #ifdef _HAVE_STAT___PAD2 buf->__pad2 = 0; #endif buf->st_size = kbuf->st_size; /* Check for overflow. */ if (sizeof (buf->st_size) != sizeof (kbuf->st_size) && buf->st_size != kbuf->st_size) { __set_errno (EOVERFLOW); return -1; } buf->st_blksize = kbuf->st_blksize; buf->st_blocks = kbuf->st_blocks; /* Check for overflow. */ if (sizeof (buf->st_blocks) != sizeof (kbuf->st_blocks) && buf->st_blocks != kbuf->st_blocks) { __set_errno (EOVERFLOW); return -1; } #ifdef _HAVE_STAT_NSEC buf->st_atim.tv_sec = kbuf->st_atim.tv_sec; buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec; buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec; buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec; buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec; buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec; #else buf->st_atime = kbuf->st_atime; buf->st_mtime = kbuf->st_mtime; buf->st_ctime = kbuf->st_ctime; #endif #ifdef _HAVE_STAT___UNUSED1 buf->__unused1 = 0; #endif #ifdef _HAVE_STAT___UNUSED2 buf->__unused2 = 0; #endif #ifdef _HAVE_STAT___UNUSED3 buf->__unused3 = 0; #endif #ifdef _HAVE_STAT___UNUSED4 buf->__unused4 = 0; #endif #ifdef _HAVE_STAT___UNUSED5 buf->__unused5 = 0; #endif } break; /* If struct stat64 is different from struct stat then _STAT_VER_KERNEL does not make sense. */ case _STAT_VER_KERNEL: default: __set_errno (EINVAL); return -1; } return 0; } #endif
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user