# Copyright 2013 Ben Longbons # # This file is part of attoconf. # # attoconf is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # attoconf is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with attoconf. If not, see . from __future__ import print_function, division, absolute_import import os from ..classy import ClassyProject from ..types import shell_word, version, filepath, quoted_string def package(build, PACKAGE): pass def package_version(build, VERSION): pass def package_name(build, NAME): pass def prefix(build, PREFIX): pass def exec_prefix(build, EPREFIX): if EPREFIX is None: PREFIX, origin = build.vars['PREFIX'] if origin != 'default': origin = 'derived' build.vars['EPREFIX'] = (PREFIX, origin) def bindir(build, DIR): if DIR is None: EPREFIX, origin = build.vars['EPREFIX'] if origin != 'default': origin = 'derived' build.vars['BINDIR'] = (os.path.join(EPREFIX, 'bin'), origin) def sbindir(build, DIR): if DIR is None: EPREFIX, origin = build.vars['EPREFIX'] if origin != 'default': origin = 'derived' build.vars['SBINDIR'] = (os.path.join(EPREFIX, 'sbin'), origin) def libexecdir(build, DIR): if DIR is None: EPREFIX, origin = build.vars['EPREFIX'] if origin != 'default': origin = 'derived' build.vars['LIBEXECDIR'] = (os.path.join(EPREFIX, 'libexec'), origin) def sysconfdir(build, DIR): if DIR is None: PREFIX, origin = build.vars['PREFIX'] if origin != 'default': origin = 'derived' build.vars['SYSCONFDIR'] = (os.path.join(PREFIX, 'etc'), origin) def sharedstatedir(build, DIR): if DIR is None: PREFIX, origin = build.vars['PREFIX'] if origin != 'default': origin = 'derived' build.vars['SHAREDSTATEDIR'] = (os.path.join(PREFIX, 'com'), origin) def localstatedir(build, DIR): if DIR is None: PREFIX, origin = build.vars['PREFIX'] if origin != 'default': origin = 'derived' build.vars['LOCALSTATEDIR'] = (os.path.join(PREFIX, 'var'), origin) def libdir(build, DIR): if DIR is None: EPREFIX, origin = build.vars['EPREFIX'] if origin != 'default': origin = 'derived' build.vars['LIBDIR'] = (os.path.join(EPREFIX, 'lib'), origin) def includedir(build, DIR): if DIR is None: PREFIX, origin = build.vars['PREFIX'] if origin != 'default': origin = 'derived' build.vars['INCLUDEDIR'] = (os.path.join(PREFIX, 'include'), origin) def oldincludedir(build, DIR): pass def datarootdir(build, DIR): if DIR is None: PREFIX, origin = build.vars['PREFIX'] if origin != 'default': origin = 'derived' build.vars['DATAROOTDIR'] = (os.path.join(PREFIX, 'share'), origin) def datadir(build, DIR): if DIR is None: DATAROOTDIR, origin = build.vars['DATAROOTDIR'] if origin != 'default': origin = 'derived' build.vars['DATADIR'] = (DATAROOTDIR, origin) def packagedatadir(build, DIR): if DIR is None: DATADIR, origin = build.vars['DATADIR'] PACKAGE, prigin = build.vars['PACKAGE'] if origin != 'default' or prigin != 'default': origin = 'derived' build.vars['PACKAGEDATADIR'] = (os.path.join(DATADIR, PACKAGE), origin) def infodir(build, DIR): if DIR is None: DATAROOTDIR, origin = build.vars['DATAROOTDIR'] if origin != 'default': origin = 'derived' build.vars['INFODIR'] = (os.path.join(DATAROOTDIR, 'info'), origin) def localedir(build, DIR): if DIR is None: DATAROOTDIR, origin = build.vars['DATAROOTDIR'] if origin != 'default': origin = 'derived' build.vars['LOCALEDIR'] = (os.path.join(DATAROOTDIR, 'locale'), origin) def mandir(build, DIR): if DIR is None: DATAROOTDIR, origin = build.vars['DATAROOTDIR'] if origin != 'default': origin = 'derived' build.vars['MANDIR'] = (os.path.join(DATAROOTDIR, 'man'), origin) def docdir(build, DIR): if DIR is None: DATAROOTDIR, origin = build.vars['DATAROOTDIR'] PACKAGE, origin2 = build.vars['PACKAGE'] if origin != 'default' or origin2 != 'default': origin = 'derived' build.vars['DOCDIR'] = (os.path.join(DATAROOTDIR, 'doc', PACKAGE), origin) def htmldir(build, DIR): if DIR is None: DOCDIR, origin = build.vars['DOCDIR'] if origin != 'default': origin = 'derived' build.vars['HTMLDIR'] = (DOCDIR, origin) def dvidir(build, DIR): if DIR is None: DOCDIR, origin = build.vars['DOCDIR'] if origin != 'default': origin = 'derived' build.vars['DVIDIR'] = (DOCDIR, origin) def pdfdir(build, DIR): if DIR is None: DOCDIR, origin = build.vars['DOCDIR'] if origin != 'default': origin = 'derived' build.vars['PDFDIR'] = (DOCDIR, origin) def psdir(build, DIR): if DIR is None: DOCDIR, origin = build.vars['DOCDIR'] if origin != 'default': origin = 'derived' build.vars['PSDIR'] = (DOCDIR, origin) class Install(ClassyProject): __slots__ = () @classmethod def slots(cls): return super(Install, cls).slots() + ( 'package', 'package_version', 'package_name') def set_package(self, package, version, name): self.package = package self.package_version = version self.package_name = name def general(self): super(Install, self).general() self.add_option('--package', init=self.package, type=shell_word, check=package, help='Short name of this package (don\'t change!)', hidden=True) self.add_option('--package-version', init=self.package_version, type=version, check=package_version, help='Version of this package (change in configure)', hidden=True, help_var='VERSION') self.add_option('--package-name', init=self.package_name, type=quoted_string, check=package_name, help='Long name of this package (don\'t change)', hidden=True, help_var='NAME') def paths(self): super(Install, self).paths() self.add_help('Installation directories:', hidden=False) self.add_option('--prefix', init='/usr/local', type=filepath, check=prefix, help='install architecture-independent files in PREFIX', hidden=False) self.add_option('--exec-prefix', init=None, type=filepath, check=exec_prefix, help='install architecture-dependent files in EPREFIX', hidden=False, var='EPREFIX', help_def='PREFIX') self.order.append(None) self.add_help('Fine tuning of the installation directories:', hidden=False) self.add_option('--bindir', init=None, type=filepath, check=bindir, help='user executables', hidden=False, help_var='DIR', help_def='EPREFIX/bin') self.add_option('--sbindir', init=None, type=filepath, check=sbindir, help='system admin executables', hidden=False, help_var='DIR', help_def='EPREFIX/sbin') self.add_option('--libexecdir', init=None, type=filepath, check=libexecdir, help='program executables', hidden=False, help_var='DIR', help_def='EPREFIX/libexec') self.add_option('--sysconfdir', init=None, type=filepath, check=sysconfdir, help='read-only single-machine data', hidden=False, help_var='DIR', help_def='PREFIX/etc') self.add_option('--sharedstatedir', init=None, type=filepath, check=sharedstatedir, help='modifiable architecture-independent data', hidden=False, help_var='DIR', help_def='PREFIX/com') self.add_option('--localstatedir', init=None, type=filepath, check=localstatedir, help='modifiable single-machine data', hidden=False, help_var='DIR', help_def='PREFIX/var') self.add_option('--libdir', init=None, type=filepath, check=libdir, help='object code libraries', hidden=False, help_var='DIR', help_def='EPREFIX/lib') self.add_option('--includedir', init=None, type=filepath, check=includedir, help='C header files', hidden=False, help_var='DIR', help_def='PREFIX/include') self.add_option('--oldincludedir', init='/usr/include', type=filepath, check=oldincludedir, help='C header files for non-gcc', hidden=False, help_var='DIR') self.add_option('--datarootdir', init=None, type=filepath, check=datarootdir, help='read-only arch.-independent data root', hidden=False, help_var='DIR', help_def='PREFIX/share') self.add_option('--datadir', init=None, type=filepath, check=datadir, help='read-only architecture-independent data', hidden=False, help_var='DIR', help_def='DATAROOTDIR') self.add_option('--packagedatadir', init=None, type=filepath, check=packagedatadir, help='data specific to this package (please set datadir instead)', hidden=False, help_var='DIR', help_def='DATADIR/PACKAGE') self.add_option('--infodir', init=None, type=filepath, check=infodir, help='info documentation', hidden=False, help_var='DIR', help_def='DATAROOTDIR/info') self.add_option('--localedir', init=None, type=filepath, check=localedir, help='locale-dependent data', hidden=False, help_var='DIR', help_def='DATAROOTDIR/locale') self.add_option('--mandir', init=None, type=filepath, check=mandir, help='man documentation', hidden=False, help_var='DIR', help_def='DATAROOTDIR/man') self.add_option('--docdir', init=None, type=filepath, check=docdir, help='documentation root', hidden=False, help_var='DIR', help_def='DATAROOTDIR/doc/PACKAGE') self.add_option('--htmldir', init=None, type=filepath, check=htmldir, help='html documentation', hidden=False, help_var='DIR', help_def='DOCDIR') self.add_option('--dvidir', init=None, type=filepath, check=dvidir, help='dvi documentation', hidden=False, help_var='DIR', help_def='DOCDIR') self.add_option('--pdfdir', init=None, type=filepath, check=pdfdir, help='pdf documentation', hidden=False, help_var='DIR', help_def='DOCDIR') self.add_option('--psdir', init=None, type=filepath, check=psdir, help='ps documentation', hidden=False, help_var='DIR', help_def='DOCDIR')