
* SourceForge: Mirror Mixin Add a mixing class for direct `CNAME`s to sourceforge mirrors. Since the main gateway servers are often down, this could reduce timeouts and fetch errors for sourceforge.net hosted software. * SourceForge: unspectacular mirror replacement add mirrors to all sourceforge packages with trivial download logic. tested fetch of latest version of each of these packages with various mirrors before committing. * SourceForge: xz the author homepage is chronocially overrun and this is the offical upload with many mirrors.
89 lines
3.4 KiB
Python
89 lines
3.4 KiB
Python
# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
|
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
#
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
from spack import *
|
|
import os
|
|
|
|
|
|
class Tk(AutotoolsPackage, SourceforgePackage):
|
|
"""Tk is a graphical user interface toolkit that takes developing
|
|
desktop applications to a higher level than conventional
|
|
approaches. Tk is the standard GUI not only for Tcl, but for
|
|
many other dynamic languages, and can produce rich, native
|
|
applications that run unchanged across Windows, Mac OS X, Linux
|
|
and more."""
|
|
homepage = "http://www.tcl.tk"
|
|
sourceforge_mirror_path = "tcl/tk8.6.5-src.tar.gz"
|
|
|
|
version('8.6.8', sha256='49e7bca08dde95195a27f594f7c850b088be357a7c7096e44e1158c7a5fd7b33')
|
|
version('8.6.6', sha256='d62c371a71b4744ed830e3c21d27968c31dba74dd2c45f36b9b071e6d88eb19d')
|
|
version('8.6.5', sha256='fbbd93541b4cd467841208643b4014c4543a54c3597586727f0ab128220d7946')
|
|
version('8.6.3', sha256='ba15d56ac27d8c0a7b1a983915a47e0f635199b9473cf6e10fbce1fc73fd8333')
|
|
version('8.5.19', sha256='407af1de167477d598bd6166d84459a3bdccc2fb349360706154e646a9620ffa')
|
|
|
|
variant('xft', default=True,
|
|
description='Enable X FreeType')
|
|
variant('xss', default=True,
|
|
description='Enable X Screen Saver')
|
|
|
|
extends('tcl')
|
|
|
|
depends_on('tcl@8.6:', when='@8.6:')
|
|
depends_on('libx11')
|
|
depends_on('libxft', when='+xft')
|
|
depends_on('libxscrnsaver', when='+xss')
|
|
|
|
configure_directory = 'unix'
|
|
|
|
def install(self, spec, prefix):
|
|
with working_dir(self.build_directory):
|
|
make('install')
|
|
|
|
# Some applications like Expect require private Tk headers.
|
|
make('install-private-headers')
|
|
|
|
# Copy source to install tree
|
|
installed_src = join_path(
|
|
self.spec.prefix, 'share', self.name, 'src')
|
|
stage_src = os.path.realpath(self.stage.source_path)
|
|
install_tree(stage_src, installed_src)
|
|
|
|
# Replace stage dir -> installed src dir in tkConfig
|
|
filter_file(
|
|
stage_src, installed_src,
|
|
join_path(self.spec.prefix, 'lib', 'tkConfig.sh'))
|
|
|
|
@property
|
|
def libs(self):
|
|
return find_libraries(['libtk{0}'.format(self.version.up_to(2))],
|
|
root=self.prefix, recursive=True)
|
|
|
|
def setup_run_environment(self, env):
|
|
# When using Tkinter from within spack provided python+tkinter, python
|
|
# will not be able to find Tcl/Tk unless TK_LIBRARY is set.
|
|
env.set('TK_LIBRARY', join_path(self.prefix.lib, 'tk{0}'.format(
|
|
self.spec.version.up_to(2))))
|
|
|
|
def setup_dependent_build_environment(self, env, dependent_spec):
|
|
env.set('TK_LIBRARY', join_path(self.prefix.lib, 'tk{0}'.format(
|
|
self.spec.version.up_to(2))))
|
|
|
|
def configure_args(self):
|
|
spec = self.spec
|
|
config_args = [
|
|
'--with-tcl={0}'.format(spec['tcl'].prefix.lib),
|
|
'--x-includes={0}'.format(spec['libx11'].prefix.include),
|
|
'--x-libraries={0}'.format(spec['libx11'].prefix.lib)
|
|
]
|
|
config_args += self.enable_or_disable('xft')
|
|
config_args += self.enable_or_disable('xss')
|
|
|
|
return config_args
|
|
|
|
@run_after('install')
|
|
def symlink_wish(self):
|
|
with working_dir(self.prefix.bin):
|
|
symlink('wish{0}'.format(self.version.up_to(2)), 'wish')
|