summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/llnl/util/symlink.py16
-rw-r--r--var/spack/repos/builtin/packages/perl/package.py6
2 files changed, 9 insertions, 13 deletions
diff --git a/lib/spack/llnl/util/symlink.py b/lib/spack/llnl/util/symlink.py
index d6e4651557..6c55d74f66 100644
--- a/lib/spack/llnl/util/symlink.py
+++ b/lib/spack/llnl/util/symlink.py
@@ -11,10 +11,11 @@ from sys import platform as _platform
from llnl.util import lang
-from spack.util.executable import Executable
-
is_windows = _platform == 'win32'
+if is_windows:
+ from win32file import CreateHardLink
+
def symlink(real_path, link_path):
"""
@@ -53,16 +54,7 @@ def _win32_junction(path, link):
path = os.path.join(parent, path)
path = os.path.abspath(path)
- command = "mklink"
- default_args = [link, path]
- if os.path.isdir(path):
- # try using a junction
- default_args.insert(0, '/J')
- else:
- # try using a hard link
- default_args.insert(0, '/H')
-
- Executable(command)(*default_args)
+ CreateHardLink(link, path)
@lang.memoized
diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py
index e44a711d45..eec1927622 100644
--- a/var/spack/repos/builtin/packages/perl/package.py
+++ b/var/spack/repos/builtin/packages/perl/package.py
@@ -15,6 +15,7 @@
import os
import platform
import re
+import sys
from contextlib import contextmanager
from llnl.util.lang import match_predicate
@@ -23,7 +24,7 @@ from llnl.util.symlink import symlink
from spack import *
from spack.operating_systems.mac_os import macos_version
-is_windows = str(spack.platforms.host()) == 'windows'
+is_windows = sys.platform == 'win32'
class Perl(Package): # Perl doesn't use Autotools, it should subclass Package
@@ -330,6 +331,8 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package
if perl_lib_dirs:
perl_lib_path = ':'.join(perl_lib_dirs)
env.prepend_path('PERL5LIB', perl_lib_path)
+ if is_windows:
+ env.append_path('PATH', self.prefix.bin)
def setup_dependent_build_environment(self, env, dependent_spec):
self._setup_dependent_env(env, dependent_spec,
@@ -361,6 +364,7 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package
def setup_build_environment(self, env):
if is_windows:
+ env.append_path('PATH', self.prefix.bin)
return
spec = self.spec