Skip to content

Commit

Permalink
poc for #73
Browse files Browse the repository at this point in the history
  • Loading branch information
jedie committed Mar 18, 2018
1 parent 1affed1 commit 2596892
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 23 deletions.
71 changes: 49 additions & 22 deletions briefcase/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,38 +258,66 @@ def _git_pull(self, path):
print('Unable to update template {}, using unpulled.'.format(template_name))
print(error_message)

def _install_requirement(self, requirements, target):
if not requirements:
print("No requirements.")
return

class UglyHack:
"""
TODO: Use a more direct way to get the information ;)
"""
def __init__(self):
from pip.operations.freeze import freeze
self.freeze_lines = [line for line in freeze()]

def get(self, requirement):
"""
return the 'pip freeze' line for the given requirement
e.g.:
--editable=git+https://github.com/pybee/toga.git@02a47d27d32d16b54800b658d9afd2b316924fd1#egg=toga_gtk&subdirectory=src/gtk
"""
egg_name = requirement.replace("-", "_")
for line in self.freeze_lines:
if egg_name in line:
line=line.replace("-e ", "--editable=")
return line

ugly = UglyHack()

final_requirements = []

for requirement in requirements:
print("Install %r to: %r" % (requirement, target))
final_requirements.append(
ugly.get(requirement) or requirement
)

pip.main([
'install',
'--upgrade',
'--target={}'.format(target)
] + final_requirements,
)

def install_app_requirements(self):
print(" * Installing requirements...")
if self.distribution.install_requires:
pip.main([
'install',
'--upgrade',
'--force-reinstall',
'--target={}'.format(self.app_packages_dir)
] + self.distribution.install_requires,
)
else:
print("No requirements.")
self._install_requirement(
self.distribution.install_requires,
target=self.app_packages_dir
)

def install_platform_requirements(self):
print(" * Installing platform requirements...")
if self.app_requires:
pip.main([
'install',
'--upgrade',
'--force-reinstall',
'--target={}'.format(self.app_packages_dir),
] + self.app_requires
)
else:
print("No platform requirements.")
self._install_requirement(self.app_requires,
target=self.app_packages_dir
)

def install_code(self):
print(" * Installing project code...")
pip.main([
'install',
'--upgrade',
'--force-reinstall',
'--no-dependencies', # We just want the code, not the dependencies
'--target={}'.format(self.app_dir),
'.'
Expand All @@ -316,7 +344,6 @@ def install_launch_scripts(self):
pip.main([
'install',
'--upgrade',
'--force-reinstall',
'--target=%s' % self.app_packages_dir,
'setuptools'
])
Expand Down
1 change: 0 additions & 1 deletion briefcase/django.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ def install_platform_requirements(self):
pip.main([
'install',
'--upgrade',
'--force-reinstall',
] + self.app_requires
)
else:
Expand Down

0 comments on commit 2596892

Please sign in to comment.