Skip to content

Commit

Permalink
[frontend][dist-git] PyPI builds: building python3 & python2 packages…
Browse files Browse the repository at this point in the history
… at once from one PyPI source
  • Loading branch information
clime committed Feb 26, 2016
1 parent 002d149 commit 286b431
Show file tree
Hide file tree
Showing 11 changed files with 55 additions and 44 deletions.
13 changes: 10 additions & 3 deletions dist-git/dist_git/dist_git_importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def __init__(self):
# For PyPI
self.pypi_package_name = None
self.pypi_package_version = None
self.pypi_python_version = None
self.pypi_python_versions = None

@property
def reponame(self):
Expand Down Expand Up @@ -108,7 +108,7 @@ def from_dict(dict_data, opts):
elif task.source_type == SourceType.PYPI:
task.pypi_package_name = task.source_data["pypi_package_name"]
task.pypi_package_version = task.source_data["pypi_package_version"]
task.pypi_python_version = task.source_data["python_version"]
task.pypi_python_versions = task.source_data["python_versions"]

else:
raise PackageImportException("Got unknown source type: {}".format(task.source_type))
Expand Down Expand Up @@ -335,7 +335,14 @@ class PyPIProvider(SrpmBuilderProvider):
"""
def get_srpm(self):
log.debug("GIT_BUILDER: 3. build via pyp2rpm")
cmd = ['pyp2rpm', self.task.pypi_package_name, '--srpm', '-d', self.tmp_dest, '-b', self.task.pypi_python_version]
cmd = ['pyp2rpm', self.task.pypi_package_name, '--srpm', '-d', self.tmp_dest]

for i, python_version in enumerate(self.task.pypi_python_versions):
if i == 0:
cmd += ['-b', python_version]
else:
cmd += ['-p', python_version]

if self.task.pypi_package_version:
cmd += ['-v', self.task.pypi_package_version]

Expand Down
15 changes: 10 additions & 5 deletions frontend/coprs_frontend/coprs/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@
from coprs.logic.users_logic import UsersLogic


class MultiCheckboxField(wtforms.SelectMultipleField):
widget = wtforms.widgets.ListWidget(prefix_label=False)
option_widget = wtforms.widgets.CheckboxInput()


class UrlListValidator(object):

def __init__(self, message=None):
Expand Down Expand Up @@ -388,13 +393,13 @@ class PackageFormPyPI(BasePackageForm):
wtforms.validators.Optional(),
])

python_version = wtforms.RadioField(
"Build for Python",
python_versions = MultiCheckboxField(
'Build for Python',
choices=[
('2', '2'),
('3', '3'),
('3', 'python3'),
('2', 'python2')
],
default='3',
default=['3', '2'],
validators=[
wtforms.validators.DataRequired(),
])
Expand Down
2 changes: 1 addition & 1 deletion frontend/coprs_frontend/coprs/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ class BuildSourceEnum(with_metaclass(EnumType, object)):
"srpm_upload": 2, # pkg, tmp
"git_and_tito": 3, # git_url, git_dir, git_branch, tito_test
"mock_scm": 4, # scm_type, scm_url, spec, scm_branch
"pypi": 5, # package_name, version, python_version
"pypi": 5, # package_name, version, python_versions
}


Expand Down
6 changes: 3 additions & 3 deletions frontend/coprs_frontend/coprs/logic/builds_logic.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,14 +411,14 @@ def create_new_from_mock(cls, user, copr, scm_type, scm_url, scm_branch, spec,


@classmethod
def create_new_from_pypi(cls, user, copr, pypi_package_name, pypi_package_version, python_version,
def create_new_from_pypi(cls, user, copr, pypi_package_name, pypi_package_version, python_versions,
chroot_names=None, **build_options):
"""
:type user: models.User
:type copr: models.Copr
:type package_name: str
:type version: str
:type python_version: str
:type python_versions: List[str]
:type chroot_names: List[str]
Expand All @@ -435,7 +435,7 @@ def create_new_from_pypi(cls, user, copr, pypi_package_name, pypi_package_versio
source_type = helpers.BuildSourceEnum("pypi")
source_json = json.dumps({"pypi_package_name": pypi_package_name,
"pypi_package_version": pypi_package_version,
"python_version": python_version})
"python_versions": python_versions})

build = cls.add(
user=user,
Expand Down
21 changes: 21 additions & 0 deletions frontend/coprs_frontend/coprs/templates/_helpers.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,27 @@
{% endif %}
{% endmacro %}

{% macro render_pypi_python_versions_field(field) %}
<div class="form-group {% if field.errors %}has-error{% endif %}">
<label class="col-sm-2 control-label">
<label for="python_versions">Build for Python</label>:
</label>
<div class="col-sm-10 pypi-python-version">
<input id="python_versions-0" name="python_versions" value="3" type="checkbox" {% if '3' in field.data %}checked="checked"{% endif %}>
<label for="python_versions-0">3</label>&nbsp;&nbsp;&nbsp;
<input id="python_versions-1" name="python_versions" value="2" type="checkbox" {% if '2' in field.data %}checked="checked"{% endif %}>
<label for="python_versions-1">2</label>
</div>
{% if field.errors %}
{% for error in field.errors %}
<li class="help-block">
<span class="help-block">{{ error }}</span>
</li>
{% endfor %}
{% endif %}
</div>
{% endmacro %}

{% macro render_pagination(request, paginator) %}
{% if paginator.pages > 1 %}
<div class="text-center">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% from "_helpers.html" import render_field, render_form_errors, copr_url %}
{% from "_helpers.html" import render_field, render_form_errors, copr_url, render_pypi_python_versions_field %}

{# This file contains forms for the "New Build" action

Expand Down Expand Up @@ -191,20 +191,9 @@ <h3 class="panel-title">3. Select chroots and other options</h3>

{{ render_field(form.pypi_package_name, placeholder="Package name in the Python Package Index.") }}
{{ render_field(form.pypi_package_version, placeholder="Optional - Version of the package PyPI") }}
{{ render_pypi_python_versions_field(form.python_versions) }}

<div class="form-group">
<label class="col-sm-2 control-label">
<label for="python_version">Build for Python</label>:
</label>
<div class="col-sm-10 pypi-python-version">
<input id="python_version-0" name="python_version" value="2" type="radio" {% if form.python_version.data == '2' %}checked="checked"{% endif %}>
<label for="python_version-0">2</label>&nbsp;&nbsp;&nbsp;
<input id="python_version-1" name="python_version" value="3" type="radio" {% if form.python_version.data == '3' %}checked="checked"{% endif %}>
<label for="python_version-1">3</label>
</div>
</div>

<input type="hidden" name="source_type" value="pypi" />
<input type="hidden" name="source_type" value="pypi" />
{{ copr_build_form_end(form, view, copr) }}
{% endmacro %}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
{% endif %}

<dt>Build for Python</dt>
<dd>{{ build.source_json_dict["python_version"] }}</dd>
<dd>{{ ', '.join(build.source_json_dict["python_versions"]).strip(', ') }}</dd>
{% endif %}

{% endmacro %}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% from "_helpers.html" import render_field, render_form_errors, copr_url %}
{% from "_helpers.html" import render_field, render_form_errors, copr_url, render_pypi_python_versions_field %}

{% macro copr_package_form_begin(form, view, copr, package) %}
{{ render_form_errors(form) }}
Expand Down Expand Up @@ -80,18 +80,7 @@
{% endif %}

{{ render_field(form.pypi_package_name, placeholder="Package name in the Python Package Index.") }}

<div class="form-group">
<label class="col-sm-2 control-label">
<label for="python_version">Build for Python</label>:
</label>
<div class="col-sm-10 pypi-python-version">
<input id="python_version-0" name="python_version" value="2" type="radio" {% if form.python_version.data == '2' %}checked="checked"{% endif %}>
<label for="python_version-0">2</label>&nbsp;&nbsp;&nbsp;
<input id="python_version-1" name="python_version" value="3" type="radio" {% if form.python_version.data == '3' %}checked="checked"{% endif %}>
<label for="python_version-1">3</label>
</div>
</div>
{{ render_pypi_python_versions_field(form.python_versions) }}

<div class="form-group">
<label class="col-sm-2 control-label" for="textInput-markup">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ def process_new_build_pypi(copr, add_view, url_on_success):
copr,
form.pypi_package_name.data,
form.pypi_package_version.data,
form.python_version.data,
form.python_versions.data,
form.selected_chroots,
**build_options
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ def process_save_package(copr, package_name, view, view_method, url_on_success):
elif package.source_type == helpers.BuildSourceEnum("pypi"):
package.source_json = json.dumps({
"pypi_package_name": form.pypi_package_name.data,
"python_version": form.python_version.data})
"python_versions": form.python_versions.data})

try:
db.session.add(package)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ def main():
for row in get_copr_package_info_rows():
source_json = json.loads(row.source_json)
source_package_name = source_json['pypi_package_name'].lower()
source_python_version = source_json['python_version']
source_python_versions = source_json['python_versions']
latest_build_version = row.pkg_version
logdebug('candidate package for rebuild: {0}'.format(source_package_name))
if source_package_name in updated_packages:
Expand All @@ -135,7 +135,7 @@ def main():
copr = CoprsLogic.get_by_id(row.copr_id)[0]
if args.backend.lower() == 'pypi':
loginfo('Launching pypi build for package of source name: {0}, package id: {1}, copr id: {2}, user id: {3}'.format(source_package_name, row.package_id, copr.id, copr.owner.id))
build = BuildsLogic.create_new_from_pypi(copr.owner, copr, source_package_name, new_updated_version, source_python_version, chroot_names=None)
build = BuildsLogic.create_new_from_pypi(copr.owner, copr, source_package_name, new_updated_version, source_python_versions, chroot_names=None)
else:
raise Exception('Unsupported backend {0} passed as command-line argument'.format(args.backend))
db.session.commit()
Expand Down

0 comments on commit 286b431

Please sign in to comment.