1.1.19 blocked in proposed, but 1.9.97 fails

Bug #1965724 reported by Christian Ehrhardt 
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
mini-buildd (Ubuntu)
Fix Released
High
Lena Voytek
python-django (Ubuntu)
Invalid
Undecided
Unassigned

Bug Description

Hi,
we know that the new python-django
 python-django | 2:3.2.12-2 | jammy-proposed | source
is blocked by mini-buildd

The problem is that in mini-buildd in focal someone went ahead and since then we are on
the bleeding edge track.
 mini-buildd | 1.0.49 | unstable | source
 mini-buildd | 1.9.98 | buildd-experimental | source, all
 mini-buildd | 1.9.98 | experimental | source, all

On Ubuntu we are kind of stuck in between now, 1.0.49 seems as if it would be the right thing.
And checks with the people involved two years ago it sounded like it would be ok to consider going back (to something like 1.1.19+really1.0.49ubuntu1)

We tried to have a look at 1.9.x still (thanks Lena) just to know how it would be.
https://launchpad.net/~lvoytek/+archive/ubuntu/mini-buildd-update-to-newest

Trying the builds from there fails me for various reasons:

root@j-buildd:~# systemctl status mini-buildd.service
× mini-buildd.service - custom Debian build daemon
     Loaded: loaded (/lib/systemd/system/mini-buildd.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Mon 2022-03-21 06:25:18 UTC; 19min ago
       Docs: man:mini-buildd(8)
    Process: 8084 ExecStart=/usr/sbin/mini-buildd $MINI_BUILDD_OPTIONS (code=exited, status=1/FAILURE)
   Main PID: 8084 (code=exited, status=1/FAILURE)

Mar 21 06:25:17 j-buildd I[8084]: Adding route: /static/events.attach -> <mini_buildd.httpd.Events object at 0x7fb4c09af160> [mini_buildd.httpd:168, thread=MainThread]
Mar 21 06:25:17 j-buildd I[8084]: Site starting on 8066 [mini_buildd.httpd:81, thread=MainThread]
Mar 21 06:25:17 j-buildd I[8084]: Starting factory <mini_buildd.httpd.Site object at 0x7fb4c09aebc0> [mini_buildd.httpd:81, thread=MainThread]
Mar 21 06:25:18 j-buildd I[8084]: (TCP Port 8066 Closed) [mini_buildd.httpd:81, thread=httpd]
Mar 21 06:25:18 j-buildd I[8084]: Stopping factory <mini_buildd.httpd.Site object at 0x7fb4c09aebc0> [mini_buildd.httpd:81, thread=httpd]
Mar 21 06:25:18 j-buildd I[8084]: Main loop terminated. [mini_buildd.httpd:81, thread=httpd]
Mar 21 06:25:18 j-buildd D[8084]: <HttpD(httpd, started 140414300833344)>: FINISHED [mini_buildd.httpd:1009, thread=httpd]
Mar 21 06:25:18 j-buildd E[8084]: mini-buildd failed (try '-vv' to debug): {'email_address': ['Enter a valid email address.']} [mini_buildd.cli:137, thread=MainThread]
                                  Traceback (most recent call last):
                                    File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 581, in get_or_create
                                      return self.get(**kwargs), False
                                    File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 435, in get
                                      raise self.model.DoesNotExist(
                                  mini_buildd.models.daemon.Daemon.DoesNotExist: Daemon matching query does not exist.

                                  During handling of the above exception, another exception occurred:

                                  Traceback (most recent call last):
                                    File "/usr/lib/python3/dist-packages/mini_buildd/cli.py", line 179, in run
                                      self.runcli()
                                    File "/usr/sbin/mini-buildd", line 230, in runcli
                                      mini_buildd.misc.attempt(mini_buildd.get_daemon().mbd_start)
                                    File "/usr/lib/python3/dist-packages/mini_buildd/__init__.py", line 54, in get_daemon
                                      return Daemon()
                                    File "/usr/lib/python3/dist-packages/mini_buildd/misc.py", line 157, in __call__
                                      cls.__INSTANCES[cls] = super(Singleton, cls).__call__(*args, **kwargs)
                                    File "/usr/lib/python3/dist-packages/mini_buildd/daemon.py", line 90, in __init__
                                      self.builder = mini_buildd.builder.Builder(self.model.build_queue_size) # TODO: adapt max parallel builds on_model_change ?
                                    File "/usr/lib/python3/dist-packages/mini_buildd/daemon.py", line 84, in model
                                      return mini_buildd.models.daemon.get()
                                    File "/usr/lib/python3/dist-packages/mini_buildd/models/daemon.py", line 355, in get
                                      model, created = mini_buildd.models.daemon.Daemon.objects.get_or_create(id=1, defaults={"ftpd_bind": mini_buildd.config.default_ftp_endpoint()})
                                    File "/usr/lib/python3/dist-packages/django/db/models/manager.py", line 85, in manager_method
                                      return getattr(self.get_queryset(), name)(*args, **kwargs)
                                    File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 588, in get_or_create
                                      return self.create(**params), True
                                    File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 453, in create
                                      obj.save(force_insert=True, using=self.db)
                                    File "/usr/lib/python3/dist-packages/mini_buildd/models/daemon.py", line 172, in save
                                      super().save(*args, **kwargs)
                                    File "/usr/lib/python3/dist-packages/mini_buildd/models/base.py", line 146, in save
                                      self.full_clean()
                                    File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 1251, in full_clean
                                      raise ValidationError(errors)
                                  django.core.exceptions.ValidationError: {'email_address': ['Enter a valid email address.']}
Mar 21 06:25:18 j-buildd systemd[1]: mini-buildd.service: Main process exited, code=exited, status=1/FAILURE
Mar 21 06:25:18 j-buildd systemd[1]: mini-buildd.service: Failed with result 'exit-code'.

In comparison the old combination of
 python-django | 2:2.2.24-1ubuntu1 | jammy | source
 mini-buildd | 1.1.19 | jammy/universe | source, all
works and gets up a running mini-buildd right after install with a config UI at localhost:8066.

P.S. In Debian-sid as of now dependency issues block installation of 1.0.49
 mini-buildd : Depends: python:any
               Depends: python-mini-buildd (= 1.0.41) but it is not going to be installed
               Depends: python-daemon (>= 2.0.5) but it is not installable
               Depends: python-cherrypy3 but it is not installable
               Depends: python-pyftpdlib (>= 1.2.0) but it is not installable
               Recommends: python-apt but it is not installable

P.P.S. 1.9.97 is the latest from git, but in the Debian archive there is also 1.9.98, but I do not think we should go this way.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote (last edit ):

Right now to me it seems we need to choose between pain, pain and more pain:

- do a python3 transition with mini-buildd 1.0.49
  + that seems to be the reason we had 1.1.19 in Focal, and 1.0.49
      isn't ready yet
  + Back in Apr 2021 v2.0 was called 2 weeks away, still not released
    today
  + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=937049
  + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=933751

- Do a django 3.2 transition in mini-buildd 1.>0 e.g. 1.9.98
  + due to various dependency and python3 issues this isn't seen in Debian
     yet, but would most likely be a problem there as well, yet we can't wait
    on that to resolve there
  + And OTOH there are incompatibilities of 1.9.97 with the new django
    that I see not fixed anywhere yet

- remove src:mini-buildd + binaries from Jammy to let things migrate and
   work on trying to enable it either of the two ways above independently
   to the django transition
  + no reverse dependencies
  $ reverse-depends --release jammy src:mini-buildd
    No reverse dependencies found

Might be worth to talk to the release team about the preferred route here?

Changed in mini-buildd (Ubuntu):
assignee: nobody → Lena Voytek (lvoytek)
tags: added: server-todo
Changed in python-django (Ubuntu):
status: New → Invalid
Revision history for this message
Lena Voytek (lvoytek) wrote :

 After digging deeper into mini-buildd stable I can confirm that a transition to python3 from 1.0.49 would be really difficult and probably not worth all the effort depending on when 2.0 comes out.
As for the bleeding edge, 1.9.98 and it is still showing the email error shown above. I'm still working on getting that fixed then confirming everything else works. The issue shows up when using both django 2.2 and 3.2. I think it would probably be best to remove the package for now to let django through and hopefully I can get a working version soon. I will add a removal bug then link this one to it

Lena Voytek (lvoytek)
Changed in mini-buildd (Ubuntu):
status: New → In Progress
importance: Undecided → High
Revision history for this message
Lena Voytek (lvoytek) wrote :

I managed to fix the error by setting up a custom email validation that allows hostnames without a '.' in them to work properly. I sent the merge request upstream. Hopefully this can be added in a new version to be released soon, otherwise mini-buildd may have to be re-added with a temporary delta.

PPA: ppa:lvoytek/mini-buildd-update-to-newest

Merge Request: https://salsa.debian.org/debian/mini-buildd/-/merge_requests/3

Steps to test:

# lxc launch images:ubuntu/jammy test-failure-jammy
# lxc exec test-failure-jammy bash

# apt update && apt dist-upgrade -y
# apt install -y software-properties-common

# add-apt-repository ppa:lvoytek/mini-buildd-vanilla
# apt install -y mini-buildd

# systemctl status mini-buildd
# exit

# lxc launch images:ubuntu/jammy test-success-jammy
# lxc exec test-sucess-jammy bash

# apt update && apt dist-upgrade -y
# apt install -y software-properties-common

# add-apt-repository ppa:lvoytek/mini-buildd-update-to-newest
# apt install -y mini-buildd

# systemctl status mini-buildd

Revision history for this message
Christian Ehrhardt  (paelzer) wrote : Re: [Bug 1965724] Re: 1.1.19 blocked in proposed, but 1.9.97 fails

> Hopefully this can be added in a new version to
> be released soon, otherwise mini-buildd may have to be re-added with a
> temporary delta.

Thank you Lena, but due to time - unless they release super-fast - let
us prepare and add this with delta right away once the beta freeze is
lifted (today/tomorrow).

Revision history for this message
Lena Voytek (lvoytek) wrote :

Here is the debdiff patch containing the email fix. Tested and confirmed using PPA: ppa:lvoytek/mini-buildd-newest-with-email-patch. As a warning there is no upstream tarball location for mini-buildd so the patch only works when applied directly rather than through debian/patches

Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "Invalid email error fix" seems to be a debdiff. The ubuntu-sponsors team has been subscribed to the bug report so that they can review and hopefully sponsor the debdiff. If the attachment isn't a patch, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are member of the ~ubuntu-sponsors, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issue please contact him.]

tags: added: patch
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

This is back in Jammy and working:
 mini-buildd | 1.9.99 | jammy/universe | source, all

It didn't resolve the issue of >1.0 being generally unstable, but what we had works again.
Thanks

Changed in mini-buildd (Ubuntu):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.