- samtools_src = os.path.abspath( sys.argv[2] )
- if not os.path.exists( samtools_src ): raise IOError( "samtools src dir `%s` does not exist." % samtools_src )
-
- cfiles = glob.glob( os.path.join( samtools_src, "*.c" ) )
- hfiles = glob.glob( os.path.join( samtools_src, "*.h" ) )
- ncopied = 0
- for p in cfiles + hfiles:
- f = os.path.basename(p)
- if f in samtools_exclude: continue
- if os.path.exists( os.path.join( samtools_dest, f )): continue
- shutil.copy( p, samtools_dest )
- ncopied += 1
- print "installed latest source code from %s: %i files copied" % (samtools_src, ncopied)
+ if len(sys.argv) < 4: raise ValueError("missing PATH to tabix source directory")
+
+ for destdir, srcdir, exclude in zip(
+ (samtools_dest, tabix_dest),
+ sys.argv[2:4],
+ (samtools_exclude, tabix_exclude)):
+
+ srcdir = os.path.abspath( srcdir )
+ if not os.path.exists( srcdir ): raise IOError( "samtools src dir `%s` does not exist." % srcdir )
+
+ cfiles = glob.glob( os.path.join( srcdir, "*.c" ) )
+ hfiles = glob.glob( os.path.join( srcdir, "*.h" ) )
+ ncopied = 0
+ for new_file in cfiles + hfiles:
+ f = os.path.basename(new_file)
+ if f in exclude: continue
+ old_file = os.path.join( destdir, f )
+ if os.path.exists( old_file ):
+ md5_old = hashlib.md5("".join(open(old_file,"r").readlines())).digest()
+ md5_new = hashlib.md5("".join(open(new_file,"r").readlines())).digest()
+ if md5_old == md5_new: continue
+ raise ValueError( "incompatible files for %s and %s" % (old_file, new_file ))
+
+ shutil.copy( new_file, destdir )
+ ncopied += 1
+ print "installed latest source code from %s: %i files copied" % (srcdir, ncopied)