Skip to content

Commit

Permalink
Move install* target generation in make feature.
Browse files Browse the repository at this point in the history
  • Loading branch information
hartym committed Mar 17, 2018
1 parent 94e9cee commit 6b983c9
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 32 deletions.
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
# All changes will be overriden.
# Edit Projectfile and run “make update” (or “medikit update”) to regenerate.

PACKAGE ?= medikit
PYTHON ?= $(shell which python || echo python)
PYTHON_BASENAME ?= $(shell basename $(PYTHON))
PYTHON_DIRNAME ?= $(shell dirname $(PYTHON))
PYTHON_REQUIREMENTS_FILE ?= requirements.txt
PYTHON_REQUIREMENTS_DEV_FILE ?= requirements-dev.txt
QUICK ?=
PACKAGE ?= medikit
PIP ?= $(PYTHON_DIRNAME)/pip
PIP_INSTALL_OPTIONS ?=
VERSION ?= $(shell git describe 2>/dev/null || git rev-parse --short HEAD)
Expand All @@ -27,7 +27,7 @@ MEDIKIT_VERSION ?= 0.5.13

.PHONY: $(SPHINX_SOURCEDIR) clean format help install install-dev medikit quick release test update update-requirements watch-$(SPHINX_SOURCEDIR)

install: .medikit/install ## Installs the local project dependencies.
install: .medikit/install ## Installs the project.
.medikit/install: $(PYTHON_REQUIREMENTS_FILE) setup.py
$(eval target := $(shell echo $@ | rev | cut -d/ -f1 | rev))
ifeq ($(filter quick,$(MAKECMDGOALS)),quick)
Expand All @@ -41,7 +41,7 @@ else
@mkdir -p .medikit; touch $@
endif

install-dev: .medikit/install-dev ## Installs the local project dependencies, including development-only libraries.
install-dev: .medikit/install-dev ## Installs the project (with dev dependencies).
.medikit/install-dev: $(PYTHON_REQUIREMENTS_DEV_FILE) $(PYTHON_REQUIREMENTS_FILE) setup.py
$(eval target := $(shell echo $@ | rev | cut -d/ -f1 | rev))
ifeq ($(filter quick,$(MAKECMDGOALS)),quick)
Expand Down
14 changes: 5 additions & 9 deletions medikit/feature/make/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,11 @@ def on_start(self, event):
'',
), )

self.makefile.add_target(
'install', InstallScript(), phony=True, doc='''Installs the local project dependencies.'''
)
self.makefile.add_target(
'install-dev',
InstallScript(),
phony=True,
doc='''Installs the local project dependencies, including development-only libraries.'''
)
self.makefile.add_install_target()

for extra in event.config['make'].extras:
self.makefile.add_install_target(extra)

self.makefile.add_target('clean', CleanScript(), phony=True, doc='''Cleans up the local mess.''')
self.makefile.add_target('quick', Script('@printf ""'), phony=True, hidden=True)

Expand Down
1 change: 1 addition & 0 deletions medikit/feature/make/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class MakeConfig(Feature.Config):

def __init__(self):
self.include_medikit_targets = True
self.extras = {'dev'}

def disable_medikit_targets(self):
self.include_medikit_targets = False
15 changes: 15 additions & 0 deletions medikit/feature/make/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,24 @@ def add_target(self, target, rule, *, deps=None, phony=False, first=False, doc=N
if hidden:
self.hidden.add(target)

def add_install_target(self, extra=None):
if extra:
target = 'install-' + extra
doc = 'Installs the project (with ' + extra + ' dependencies).'
else:
target = 'install'
doc = 'Installs the project.'

if not self.has_target(target):
self.add_target(target, InstallScript(), phony=True, doc=doc)
return self.get_target(target)

def get_target(self, target):
return self._target_values[target][1]

def has_target(self, target):
return target in self._target_values

def set_deps(self, target, deps=None):
self._target_values[target] = (
deps or list(),
Expand Down
44 changes: 24 additions & 20 deletions medikit/feature/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,32 +213,34 @@ def on_make_generate(self, event):
:param MakefileEvent event:
"""

extra_variables = []
for extra in event.config['python'].get_extras():
extra_variables.append(
(
'PYTHON_REQUIREMENTS_' + extra.upper().replace('-', '_') + '_FILE',
'requirements-' + extra + '.txt',
)
)

# Python related environment
event.makefile.updateleft(
(
'PACKAGE',
event.config.package_name,
),
(
), (
'PYTHON',
which('python'),
),
(
), (
'PYTHON_BASENAME',
'$(shell basename $(PYTHON))',
),
(
), (
'PYTHON_DIRNAME',
'$(shell dirname $(PYTHON))',
),
(
), (
'PYTHON_REQUIREMENTS_FILE',
'requirements.txt',
),
(
'PYTHON_REQUIREMENTS_DEV_FILE',
'requirements-dev.txt',
),
), *extra_variables
)

event.makefile['PIP'] = '$(PYTHON_DIRNAME)/pip'
Expand All @@ -250,13 +252,15 @@ def on_make_generate(self, event):
]
event.makefile.get_target('install').deps += ['$(PYTHON_REQUIREMENTS_FILE)', 'setup.py']

event.makefile.get_target('install-dev').install = [
'$(PIP) install $(PIP_INSTALL_OPTIONS) -U pip wheel',
'$(PIP) install $(PIP_INSTALL_OPTIONS) -U -r $(PYTHON_REQUIREMENTS_DEV_FILE)',
]
event.makefile.get_target('install-dev').deps += [
'$(PYTHON_REQUIREMENTS_FILE)', '$(PYTHON_REQUIREMENTS_DEV_FILE)', 'setup.py'
]
for extra in event.config['python'].get_extras():
target = event.makefile.add_install_target(extra)
reqs_var = 'PYTHON_REQUIREMENTS_' + extra.upper().replace('-', '_') + '_FILE'

target.install += [
'$(PIP) install $(PIP_INSTALL_OPTIONS) -U pip wheel',
'$(PIP) install $(PIP_INSTALL_OPTIONS) -U -r $(' + reqs_var + ')',
]
target.deps += ['$(PYTHON_REQUIREMENTS_FILE)', '$(' + reqs_var + ')', 'setup.py']

@subscribe('medikit.on_start', priority=ABSOLUTE_PRIORITY)
def on_start(self, event):
Expand Down

0 comments on commit 6b983c9

Please sign in to comment.