Skip to content
Snippets Groups Projects
Commit 9c5c8b22 authored by Todd Gamblin's avatar Todd Gamblin
Browse files

Fix bug in `spack debug create-db-tarball`

- Fix a bug handling '/' characters in branch names.

- Make tarballs use a descriptive name for the top-level directory, not
  just `opt`.
parent f0edfa6e
No related branches found
No related tags found
No related merge requests found
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
############################################################################## ##############################################################################
import os import os
import re
from datetime import datetime from datetime import datetime
from glob import glob from glob import glob
...@@ -53,8 +54,12 @@ def _debug_tarball_suffix(): ...@@ -53,8 +54,12 @@ def _debug_tarball_suffix():
if not os.path.isdir('.git'): if not os.path.isdir('.git'):
return 'nobranch.nogit.%s' % suffix return 'nobranch.nogit.%s' % suffix
# Get symbolic branch name and strip any special chars (mainly '/')
symbolic = git( symbolic = git(
'rev-parse', '--abbrev-ref', '--short', 'HEAD', output=str).strip() 'rev-parse', '--abbrev-ref', '--short', 'HEAD', output=str).strip()
symbolic = re.sub(r'[^\w.-]', '-', symbolic)
# Get the commit hash too.
commit = git( commit = git(
'rev-parse', '--short', 'HEAD', output=str).strip() 'rev-parse', '--short', 'HEAD', output=str).strip()
...@@ -69,12 +74,23 @@ def create_db_tarball(args): ...@@ -69,12 +74,23 @@ def create_db_tarball(args):
tarball_name = "spack-db.%s.tar.gz" % _debug_tarball_suffix() tarball_name = "spack-db.%s.tar.gz" % _debug_tarball_suffix()
tarball_path = os.path.abspath(tarball_name) tarball_path = os.path.abspath(tarball_name)
with working_dir(spack.spack_root): base = os.path.basename(spack.install_path)
transform_args = []
if 'GNU' in tar('--version', output=str):
transform_args = ['--transform', 's/^%s/%s/' % (base, tarball_name)]
else:
transform_args = ['-s', '/^%s/%s/' % (base, tarball_name)]
wd = os.path.dirname(spack.install_path)
with working_dir(wd):
files = [spack.installed_db._index_path] files = [spack.installed_db._index_path]
files += glob('%s/*/*/*/.spack/spec.yaml' % spack.install_path) files += glob('%s/*/*/*/.spack/spec.yaml' % base)
files = [os.path.relpath(f) for f in files] files = [os.path.relpath(f) for f in files]
tar('-czf', tarball_path, *files) args = ['-czf', tarball_path]
args += transform_args
args += files
tar(*args)
tty.msg('Created %s' % tarball_name) tty.msg('Created %s' % tarball_name)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment