compile the mex file on the fly
Dimitri Papadopoulos-Orfanos
dimitri.papadopoulos at CEA.FR
Tue Sep 1 03:00:36 CEST 2009
Hi,
I see a few FieldTrip files attempt to compile MEX files on the fly.
For example @uint64/abs.m:
% determine the name and full path of this function
funname = mfilename('fullpath');
mexsrc = [funname '.c'];
[mexdir, mexname] = fileparts(funname);
try
% try to compile the mex file on the fly
warning('trying to compile MEX file from %s', mexsrc);
cd(mexdir);
mex(mexsrc);
I fear this may fail when FieldTrip is installed on an application
server and run by users who cannot write into the FieldTrip directory.
I understand this is a reasonable fallback for exotic platforms which
lack the proper MEX file. It is also a good way to always have the MEX
file rebuilt after a change in the associated C file. Unfortunately it
also breaks FieldTrip installations on application servers - quite
common on 32-bit or 64-bit Linux using NFS. Making MEX files available
for such common platforms would fix this issue, wouldn't it? Also see my
previous "64-bit Linux" message.
I hope I'm not completely misunderstanding the issue at hand.
Here is a list of Matlab files which call mex() and their associated C
and MEX files:
@uint64/max.m
@uint64/max.c
@uint64/max.mexa64
@uint64/max.mexglx
@uint64/max.mexmac
@uint64/max.mexmaci
@uint64/max.mexw32
@uint64/min.m
@uint64/min.c
@uint64/min.mexa64
@uint64/min.mexglx
@uint64/min.mexmac
@uint64/min.mexmaci
@uint64/min.mexw32
@uint64/minus.m
@uint64/minus.c
@uint64/minus.mexa64
@uint64/minus.mexglx
@uint64/minus.mexmac
@uint64/minus.mexmaci
@uint64/minus.mexw32
@uint64/plus.m
@uint64/plus.c
@uint64/plus.mexa64
@uint64/plus.mexglx
@uint64/plus.mexmac
@uint64/plus.mexmaci
@uint64/plus.mexw32
@uint64/rdivide.m
@uint64/rdivide.c
@uint64/rdivide.mexa64
@uint64/rdivide.mexglx
@uint64/rdivide.mexmac
@uint64/rdivide.mexmaci
@uint64/rdivide.mexw32
@uint64/times.m
@uint64/times.c
@uint64/times.mexa64
@uint64/times.mexglx
@uint64/times.mexmac
@uint64/times.mexmaci
@uint64/times.mexw32
@uint64/abs.m
@uint64/abs.c
@uint64/abs.mexa64
@uint64/abs.mexmaci
fileio/private/mxDeserialize.m
fileio/private/mxDeserialize.c
fileio/private/mxDeserialize.mexa64
fileio/private/mxDeserialize.mexmac
fileio/private/mxDeserialize.mexw32
fileio/private/mxSerialize.m
fileio/private/mxSerialize.c
fileio/private/mxSerialize.mexa64
fileio/private/mxSerialize.mexglx
fileio/private/mxSerialize.mexmac
fileio/private/mxSerialize.mexw32
fileio/private/read_24bit.m
fileio/private/read_24bit.c
fileio/private/read_24bit.mexa64
fileio/private/read_24bit.mexglx
fileio/private/read_24bit.mexmac
fileio/private/read_24bit.mexmaci
fileio/private/read_24bit.mexw32
fileio/private/read_ctf_shm.m
fileio/private/read_ctf_shm.c
fileio/private/read_ctf_shm.mexa64
fileio/private/read_ctf_shm.mexglx
fileio/private/read_ctf_shm.mexmaci
fileio/private/write_ctf_shm.m
fileio/private/write_ctf_shm.c
fileio/private/write_ctf_shm.mexa64
fileio/private/write_ctf_shm.mexglx
fileio/private/write_ctf_shm.mexmaci
forwinv/private/meg_leadfield1.m
forwinv/private/meg_leadfield1.c
forwinv/private/meg_leadfield1.mexa64
forwinv/private/meg_leadfield1.mexglx
forwinv/private/meg_leadfield1.mexmac
forwinv/private/meg_leadfield1.mexmaci
forwinv/private/meg_leadfield1.mexw32
forwinv/private/plgndr.m
forwinv/private/plgndr.c
forwinv/private/plgndr.mexa64
forwinv/private/plgndr.mexglx
forwinv/private/plgndr.mexmac
forwinv/private/plgndr.mexmaci
forwinv/private/plgndr.mexw32
private/write_ctf_shm.m
private/read_ctf_shm.m
private/meg_leadfield1.m
private/meg_leadfield1.c
private/meg_leadfield1.mexa64
private/meg_leadfield1.mexglx
private/meg_leadfield1.mexmac
private/meg_leadfield1.mexmaci
private/meg_leadfield1.mexw32
private/splint_gh.m
private/splint_gh.c
private/splint_gh.mexa64
private/splint_gh.mexglx
private/splint_gh.mexmac
private/splint_gh.mexmaci
private/splint_gh.mexw32
private/read_24bit.m
private/read_24bit.c
private/read_24bit.mexa64
private/read_24bit.mexglx
private/read_24bit.mexmac
private/read_24bit.mexmaci
private/read_24bit.mexw32
private/plgndr.m
private/plgndr.c
private/plgndr.mexa64
private/plgndr.mexglx
private/plgndr.mexmac
private/plgndr.mexmaci
private/plgndr.mexw32
classification/utilities/repop/repop.m
classification/utilities/repop/repop.c
classification/utilities/repop/repop.mexglx
classification/utilities/tprod/tprod.m
classification/utilities/tprod/tprod.c
classification/utilities/tprod/tprod.mexglx
@config/private/deepcopy.m
@config/private/deepcopy.c
@config/private/deepcopy.mexa64
@config/private/deepcopy.mexglx
@config/private/deepcopy.mexmac
@config/private/deepcopy.mexmaci
@config/private/increment.m
@config/private/increment.c
@config/private/increment.mexa64
@config/private/increment.mexglx
@config/private/increment.mexmac
@config/private/increment.mexmaci
@config/private/reset.m
@config/private/reset.c
@config/private/reset.mexa64
@config/private/reset.mexglx
@config/private/reset.mexmac
@config/private/reset.mexmaci
A few remarks:
1. Files private/write_ctf_shm.m and private/read_ctf_shm.m are
duplicates of fileio/private/read_ctf_shm.m and
fileio/private/read_ctf_shm.m and they are missing associated C files.
They are therefore broken. Shouldn't they be deleted?
2. I've left out all files in
fileio/@uint64/
since they directory is identical to:
@uint64/
3. When a *.c file is changed, does your distribution process rebuild
relevant MEX files before distribution? I guess not... In which case all
users using FieldTrip from an application server may be using outdated
MEX files.
Regards,
--
Dimitri Papadopoulos
CEA, I2BM, NeuroSpin
91191 Gif-sur-Yvette cedex, France
----------------------------------
The aim of this list is to facilitate the discussion between users of the FieldTrip toolbox, to share experiences and to discuss new ideas for MEG and EEG analysis. See also http://listserv.surfnet.nl/archives/fieldtrip.html and http://www.ru.nl/neuroimaging/fieldtrip.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4743 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20090901/5f747559/attachment.bin>
More information about the fieldtrip
mailing list