diff options
author | Seth R. Johnson <johnsonsr@ornl.gov> | 2021-07-01 03:12:05 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-01 09:12:05 +0200 |
commit | d0bbe18c79fe0e581e6711531f3c6a1770f17d89 (patch) | |
tree | 72256f35214708c7fb79190405e5300494ac2142 | |
parent | ca538e18a493cd1fc5be1c6b64c7935dda76dea7 (diff) | |
download | spack-d0bbe18c79fe0e581e6711531f3c6a1770f17d89.tar.gz spack-d0bbe18c79fe0e581e6711531f3c6a1770f17d89.tar.bz2 spack-d0bbe18c79fe0e581e6711531f3c6a1770f17d89.tar.xz spack-d0bbe18c79fe0e581e6711531f3c6a1770f17d89.zip |
vim: use value variant and update config script (#24554)
This changes several conflicting variants to a single
multi-value variant, and uses conflicts instead of raising InstallError.
(With clingo, requesting +gui automatically selects features=huge!)
I have also rearranged the dependencies for clarity and simplified the
conifgure args.
-rw-r--r-- | var/spack/repos/builtin/packages/vim/package.py | 119 |
1 files changed, 43 insertions, 76 deletions
diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py index e44ae484ff..dad889c992 100644 --- a/var/spack/repos/builtin/packages/vim/package.py +++ b/var/spack/repos/builtin/packages/vim/package.py @@ -17,6 +17,7 @@ class Vim(AutotoolsPackage): homepage = "http://www.vim.org" url = "https://github.com/vim/vim/archive/v8.1.0338.tar.gz" + maintainers = ['sethrj'] version('8.2.2541', sha256='2699dfe87b524169e7390f0b383c406cb77a9fde7431665d3b9b80964d8d5daf') version('8.2.1201', sha256='39032fe866f44724b104468038dc9ac4ff2c00a4b18c9a1e2c27064ab1f1143d') @@ -30,110 +31,76 @@ class Vim(AutotoolsPackage): version('8.0.0134', sha256='1b3e3e7d187eed55cbdb0a1dae6b8f3b885005fbae84222420877d7afa3b2310') version('7.4.2367', sha256='a9ae4031ccd73cc60e771e8bf9b3c8b7f10f63a67efce7f61cd694cd8d7cda5c') - feature_sets = ('huge', 'big', 'normal', 'small', 'tiny') - for fs in feature_sets: - variant(fs, default=False, description="Use '%s' feature set" % fs) + _features = ('huge', 'big', 'normal', 'small', 'tiny') + variant('cscope', default=False, description="build with cscope support") + variant('features', default='normal', description="feature set", + values=_features, multi=False) + variant('gui', default=False, description="build with gui (gvim)") + variant('lua', default=False, description="build with Lua") + variant('perl', default=False, description="build with Perl") variant('python', default=False, description="build with Python") - depends_on('python', when='+python') - variant('ruby', default=False, description="build with Ruby") - depends_on('ruby', when='+ruby') + variant('x', default=False, description="use the X Window System") - variant('lua', default=False, description="build with Lua") - depends_on('lua', when='+lua') + for _f in _features[1:]: + conflicts('+gui', when='features=' + _f, + msg='+gui requires features=huge') - variant('perl', default=False, description="build with Perl") - depends_on('perl', when='+perl') + depends_on('findutils', type='build') + depends_on('ncurses', when='@7.4:') - variant('cscope', default=False, description="build with cscope support") depends_on('cscope', when='+cscope', type='run') - - provides('xxd') - - # TODO: Once better support for multi-valued variants is added, add - # support for auto/no/gtk2/gnome2/gtk3/motif/athena/neXtaw/photon/carbon - variant('gui', default=False, description="build with gui (gvim)") - variant('x', default=False, description="use the X Window System") + depends_on('lua', when='+lua') + depends_on('perl', when='+perl') + depends_on('python', when='+python') + depends_on('ruby', when='+ruby') + depends_on('fontconfig', when="+gui") depends_on('libx11', when="+x") depends_on('libsm', when="+x") depends_on('libxpm', when="+x") depends_on('libxt', when="+x") depends_on('libxtst', when="+x") - depends_on('ncurses', when="@7.4:") - depends_on('findutils', type='build') - depends_on('fontconfig', when="+gui") + provides('xxd') def configure_args(self): spec = self.spec - feature_set = None - for fs in self.feature_sets: - if "+" + fs in spec: - if feature_set is not None: - raise InstallError( - "Only one feature set allowed, specified %s and %s" - % (feature_set, fs)) - feature_set = fs - if '+gui' in spec: - if feature_set is not None: - if feature_set != 'huge': - raise InstallError( - "+gui variant requires 'huge' feature set, " - "%s was specified" % feature_set) - feature_set = 'huge' - if feature_set is None: - feature_set = 'normal' - - configure_args = ["--enable-fail-if-missing"] + args = ["--enable-fail-if-missing"] + + def yes_or_no(variant): + return 'yes' if spec.variants[variant].value else 'no' if '+termlib' in spec['ncurses']: - configure_args.append("--with-tlib=tinfow") + args.append("--with-tlib=tinfow") else: - configure_args.append("--with-tlib=ncursesw") + args.append("--with-tlib=ncursesw") - configure_args.append("--with-features=" + feature_set) + args.append("--with-features=" + spec.variants['features'].value) if '+python' in spec: - if 'python@3:' in self.spec: - configure_args.append("--enable-python3interp=dynamic") - configure_args.append("--enable-pythoninterp=no") + if spec['python'].version >= Version('3'): + args.append("--enable-python3interp=dynamic") + args.append("--enable-pythoninterp=no") else: - configure_args.append("--enable-python3interp=no") - configure_args.append("--enable-pythoninterp=dynamic") + args.append("--enable-python3interp=no") + args.append("--enable-pythoninterp=dynamic") else: - configure_args.append("--enable-python3interp=no") + args.append("--enable-python3interp=no") - if '+ruby' in spec: - configure_args.append("--enable-rubyinterp=yes") - else: - configure_args.append("--enable-rubyinterp=no") + args.extend([ + "--enable-gui=" + ('auto' if '+gui' in spec else 'no'), + "--enable-luainterp=" + yes_or_no('lua'), + "--enable-perlinterp=" + yes_or_no('perl'), + "--enable-rubyinterp=" + yes_or_no('ruby'), + ]) + args.extend(self.enable_or_disable('cscope')) + args.extend(self.with_or_without('x')) if '+lua' in spec: - configure_args.append("--enable-luainterp=yes") - configure_args.append("--with-lua-prefix=%s" % spec['lua'].prefix) - else: - configure_args.append("--enable-luainterp=no") - - if '+perl' in spec: - configure_args.append("--enable-perlinterp=yes") - else: - configure_args.append("--enable-perlinterp=no") - - if '+gui' in spec: - configure_args.append("--enable-gui=auto") - else: - configure_args.append("--enable-gui=no") - - if '+x' in spec: - configure_args.append("--with-x") - else: - configure_args.append("--without-x") - - if '+cscope' in spec: - configure_args.append("--enable-cscope") + args.append("--with-lua-prefix=" + spec['lua'].prefix) - return configure_args + return args # Tests must be run in serial def check(self): |