From 9970cb0dbf796e492d234d8a6cb5f0a918ee3c7f Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 11 Jul 2017 22:54:26 +0200 Subject: [PATCH] Add hostname in temporary filename (problem on clusters) --- Makefile | 2 +- src/libezfio_util.irp.f | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 5ac6182..88b078f 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ include make.config .PHONY: default clean veryclean archive default: make.config - cd src && $(MAKE) + cd src && BUILD_SYSTEM=make $(MAKE) clean: - bash -c "[[ -f lib/libezfio.a ]] && rm $$PWD/lib/*" diff --git a/src/libezfio_util.irp.f b/src/libezfio_util.irp.f index 3d6a9b0..1ab88b4 100644 --- a/src/libezfio_util.irp.f +++ b/src/libezfio_util.irp.f @@ -23,14 +23,21 @@ ! scemama@irsamc.ups-tlse.fr BEGIN_PROVIDER [ integer, PID ] -&BEGIN_PROVIDER [ character*(8), PID_str ] +&BEGIN_PROVIDER [ character*(256), PID_str ] implicit none BEGIN_DOC ! Current process ID END_DOC integer :: getpid + character*(240) :: hostname PID = getpid() write(PID_str,'(I8.8)') PID + call HOSTNM(hostname) + write(PID_str,'(A,''.'',I8.8,X)') trim(hostname), PID + PID_str = trim(PID_str) + print *, PID_str + call sleep(1) + END_PROVIDER logical function ezfio_exists(path) @@ -75,7 +82,7 @@ subroutine libezfio_openz(filename,mode,err) character*(*) :: filename, mode character*(1024) :: fifo integer :: err - fifo = trim(filename)//'.'//PID_str + fifo = trim(filename)//'.'//trim(PID_str) err=1 if (mode(1:1) == 'r') then @@ -97,7 +104,7 @@ subroutine libezfio_closez(filename,mode) END_DOC character*(*) :: filename, mode character*(1024) :: fifo - fifo = trim(filename)//'.'//PID_str + fifo = trim(filename)//'.'//trim(PID_str) if (mode(1:1) == 'w') then close(unit=libezfio_iunit) call system('gzip -c < '//trim(fifo)//' > '//trim(filename)) @@ -141,7 +148,7 @@ subroutine ezfio_write_%(type_short)s(dir,fil,dat) if (libezfio_read_only) then call ezfio_error(irp_here,'Read-only file.') endif - l_filename(1)=trim(dir)//'/.'//fil//'.'//PID_str + l_filename(1)=trim(dir)//'/.'//fil//'.'//trim(PID_str) l_filename(2)=trim(dir)//'/'//fil open(unit=libezfio_iunit,file=l_filename(1),form='FORMATTED',action='WRITE') write(libezfio_iunit,%(fmt)s) dat @@ -216,7 +223,7 @@ subroutine ezfio_write_array_%(type_short)s(dir,fil,rank,dims,dim_max,dat) if (libezfio_read_only) then call ezfio_error(irp_here,'Read-only file.') endif - l_filename(1)=trim(dir)//'/.'//fil//PID_str//'.gz' + l_filename(1)=trim(dir)//'/.'//fil//trim(PID_str)//'.gz' l_filename(2)=trim(dir)//'/'//fil//'.gz' err = 0