<pre style='margin:0'>
Mojca Miklavec (mojca) pushed a commit to branch master
in repository upt-macports.
</pre>
<p><a href="https://github.com/macports/upt-macports/commit/215cb173770e38251174144434913fa0189fd28b">https://github.com/macports/upt-macports/commit/215cb173770e38251174144434913fa0189fd28b</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 215cb173770e38251174144434913fa0189fd28b
</span>Author: Mojca Miklavec <mojca@macports.org>
AuthorDate: Wed Mar 27 07:50:11 2019 +0100
<span style='display:block; white-space:pre;color:#404040;'> Add preliminary support for pypi for MacPorts
</span>---
upt_macports/templates/base.Portfile | 28 ++++++++++++
upt_macports/templates/base.tmpl | 0
upt_macports/templates/python.Portfile | 9 ++++
upt_macports/upt_macports.py | 84 +++++++++++++++++++++++++++++++++-
4 files changed, 120 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/upt_macports/templates/base.Portfile b/upt_macports/templates/base.Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..9928be5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/upt_macports/templates/base.Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,28 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block portgroup %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block nameversion %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name {{ pkg._pkgname() }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version {{ pkg.upt_pkg.version }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers nomaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description {{ pkg.upt_pkg.summary }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block versions %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block build_deps %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{{ depends_build-append pkg.build_depends }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block run_deps %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{{ depends_run-append pkg.run_depends }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block test_deps %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{{ depends('TEST', pkg.test_depends) }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/upt_macports/templates/base.tmpl b/upt_macports/templates/base.tmpl
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index e69de29..0000000
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/upt_macports/templates/python.Portfile b/upt_macports/templates/python.Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..685b0dd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/upt_macports/templates/python.Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% extends 'base.Portfile' %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block portgroup %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% block versions %}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions 27 36 37
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{% endblock %}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/upt_macports/upt_macports.py b/upt_macports/upt_macports.py
</span><span style='display:block; white-space:pre;color:#808080;'>index 9165f62..f10cfdc 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/upt_macports/upt_macports.py
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/upt_macports/upt_macports.py
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,8 +1,90 @@
</span> import upt
<span style='display:block; white-space:pre;background:#e0ffe0;'>+import logging
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+import jinja2
</span>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+class MacPortsPackage(object):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def __init__(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.logger = logging.getLogger('upt')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def create_package(self, upt_pkg, output):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.upt_pkg = upt_pkg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #self._create_output_directories(upt_pkg, output)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #self._create_makefile()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #self._create_pkg_descr()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.logger.info(f'Hello, creating the package')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ print(self._render_makefile_template())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ print(self._depends)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # self.name, self.specifier
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _render_makefile_template(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ env = jinja2.Environment(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ loader=jinja2.PackageLoader('upt_macports', 'templates'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trim_blocks=True,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lstrip_blocks=True,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ keep_trailing_newline=True,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #env.filters['reqformat'] = self.jinja2_reqformat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template = env.get_template(self.template)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return template.render(pkg=self)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _depends(self, phase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return self.upt_pkg.requirements.get(phase, [])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @property
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def build_depends(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return self._depends('build')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @property
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def run_depends(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return self._depends('run')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @property
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def test_depends(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return self._depends('test')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+class MacPortsPythonPackage(MacPortsPackage):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template = 'python.Portfile'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _pkgname(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ macports_name = self._normalized_macports_name(self.upt_pkg.name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return f'{macports_name}'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @staticmethod
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _normalized_macports_name(name):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ name = name.lower()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return f'py-{name}'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# if name == 'py':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# return 'py-py'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# if name.startswith('python-'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# name = name[7:]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# elif name.startswith('py-'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# name = name[3:]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# elif name.startswith('py'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# name = name[2:]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# return f'py-{name}'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+class MacPortsPerlPackage(MacPortsPackage):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template = 'perl.Portfile'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+class MacPortsRubyPackage(MacPortsPackage):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template = 'ruby.Portfile'
</span>
class MacportsBackend(upt.Backend):
name = 'macports'
def create_package(self, upt_pkg, output=None):
<span style='display:block; white-space:pre;background:#ffe0e0;'>- pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pkg_classes = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'pypi': MacPortsPythonPackage,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'cpan': MacPortsPerlPackage,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'rubygems': MacPortsRubyPackage,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pkg_cls = pkg_classes[upt_pkg.frontend]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ except KeyError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ raise upt.UnhandledFrontendError(self.name, upt_pkg.frontend)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ packager = pkg_cls()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ packager.create_package(upt_pkg, output)
</span></pre><pre style='margin:0'>
</pre>