Re: General mechanism to supply "rich history" to git-ubuntu

2021-02-02 Thread Christian Ehrhardt
On Tue, Feb 2, 2021 at 4:56 PM Robie Basak  wrote:
>
> On Tue, Feb 02, 2021 at 10:48:07AM -0500, Scott Moser wrote:
> > I think this is great. I think it is a game-changer for ubuntu development.
> > Thank you.
>
> Thanks!

I have discussed this with you before and also like it very much -
thanks for all your work on this!

> > In your example above, the 'refs/heads/test' has to exist (and to have the
> > referenced commit) in order for the importer to find it.
> >
> > So the uploader would then have to not delete or force-push that reference
> > until some point in the future, right?
> >
> > My only concern here is that I already have way too many branches
> > that I've pushed. This will just leave more manual maintenance for me
> > to not clean up these branches until the upload that references
> > them is landed.
> >
> > Did I undestand that correctly?
>
> Correct. At the time the importer runs, it needs to be able to fetch a
> ref from somewhere. If you push to a personal branch and use that ref,
> then it'll need to exist until git-ubuntu has caught up with your
> upload. Right now the time varies, is commonly an hour or two, but
> sometimes has been a week. Over time, I hope for us to get more reliable
> with it (this requires infrastructure, monitoring, etc).
>
> I'm not really sure how to avoid this requirement.
>
> Another approach you could take is to maintain a team repository and
> branch somewhere. Then all your uploads could be "from" a single main
> branch, which would then persist by its nature.

The following just came to my mind, I haven't thought it through for hours,
so I'm sharing it with some disclaimer attached :-)

I think there is a chance if someone has a "next" or "for-upload" branch that
it might be recycled and no longer match on import. But IMHO we
could synthesize a branch name in the wrapper and push to that one.

Example:
1. user works on his branch called "cool-new-feature" (that would change)
2. user decides to upload, and calls the wrapper
3. the wrapper synthesizes a new branch name like
  --<$date/time> =>
  git-ubuntu-upload-cool-new-feature-03012021085107
and push this one.
4. the synthesized name is referenced in the tags and used by the importer

It is unlikely (unless intentional) that this branch is force pushed
before the import happens.
But it has the downside of a potential proliferation of pushed
branches, but TBH providing
a "remove all merged branches" command should not be too hard.

If we spin this forward (And ACS for it work out) we could push it to
a special namespace
in the actual per package git ubuntu repositories. And maybe add some UUID to
the synthesized branch name (for multi-user de-collision).
The ACS would need to allow that no "normal" user can force push, but
nearly everyone (with
a LP user) can push their branches. In that repository, the importer
could do auto-remove-after-import
and proliferation would not happen in the users repository anymore.


> I guess you could sort of do that with a personal repository, too, if
> you wanted. Maintain a "for-upload" branch, always push there, and then
> forget about it until you reuse it next time.
> --
> ubuntu-devel mailing list
> ubuntu-devel@lists.ubuntu.com
> Modify settings or unsubscribe at: 
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel



-- 
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


[ubuntu-studio-devel] Fwd: Call for testing: 20.04.2 release candidate images ready!

2021-02-02 Thread Erich Eickmeyer
FYI all, this is for Focal (Xfce Desktop)

--  Forwarded Message  --

Subject: Call for testing: 20.04.2 release candidate images ready!
Date: Tuesday, February 2, 2021, 10:19:03 AM PST
From: Lukasz Zemczak 
To: ubuntu-devel , ubuntu-release , Ubuntu Quality 

Hello everyone!

I'm only sending this e-mail now as previously we were still resolving
some unexpected issues regarding the .2 point-release. After a rough
start, we now have a *hopefully* stable set of 20.04.2 release
candidate images built and published on the .2 milestone:

http://iso.qa.ubuntu.com/qatracker/milestones/420/builds

Please pick your favorite flavor and start testing! And be sure to
report your results on the isotracker.

As with every recent release, we have a discourse thread for tracking
progress which we try to keep up to date as much as possible:

https://discourse.ubuntu.com/t/focal-fossa-20-04-2-lts-point-release-status-tracking/

Best regards,

-- 
Łukasz 'sil2100' Zemczak
 Foundations Team
 lukasz.zemc...@canonical.com
 www.canonical.com

-- 
ubuntu-devel mailing list
ubuntu-de...@lists.ubuntu.com
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/
ubuntu-devel

-

signature.asc
Description: This is a digitally signed message part.
-- 
ubuntu-studio-devel mailing list
ubuntu-studio-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-studio-devel


Call for testing: 20.04.2 release candidate images ready!

2021-02-02 Thread Lukasz Zemczak
Hello everyone!

I'm only sending this e-mail now as previously we were still resolving
some unexpected issues regarding the .2 point-release. After a rough
start, we now have a *hopefully* stable set of 20.04.2 release
candidate images built and published on the .2 milestone:

http://iso.qa.ubuntu.com/qatracker/milestones/420/builds

Please pick your favorite flavor and start testing! And be sure to
report your results on the isotracker.

As with every recent release, we have a discourse thread for tracking
progress which we try to keep up to date as much as possible:

https://discourse.ubuntu.com/t/focal-fossa-20-04-2-lts-point-release-status-tracking/

Best regards,

-- 
Łukasz 'sil2100' Zemczak
 Foundations Team
 lukasz.zemc...@canonical.com
 www.canonical.com

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: General mechanism to supply "rich history" to git-ubuntu

2021-02-02 Thread Robie Basak
On Tue, Feb 02, 2021 at 10:48:07AM -0500, Scott Moser wrote:
> I think this is great. I think it is a game-changer for ubuntu development.
> Thank you.

Thanks!

> In your example above, the 'refs/heads/test' has to exist (and to have the
> referenced commit) in order for the importer to find it.
> 
> So the uploader would then have to not delete or force-push that reference
> until some point in the future, right?
> 
> My only concern here is that I already have way too many branches
> that I've pushed. This will just leave more manual maintenance for me
> to not clean up these branches until the upload that references
> them is landed.
> 
> Did I undestand that correctly?

Correct. At the time the importer runs, it needs to be able to fetch a
ref from somewhere. If you push to a personal branch and use that ref,
then it'll need to exist until git-ubuntu has caught up with your
upload. Right now the time varies, is commonly an hour or two, but
sometimes has been a week. Over time, I hope for us to get more reliable
with it (this requires infrastructure, monitoring, etc).

I'm not really sure how to avoid this requirement.

Another approach you could take is to maintain a team repository and
branch somewhere. Then all your uploads could be "from" a single main
branch, which would then persist by its nature.

I guess you could sort of do that with a personal repository, too, if
you wanted. Maintain a "for-upload" branch, always push there, and then
forget about it until you reuse it next time.


signature.asc
Description: PGP signature
-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: General mechanism to supply "rich history" to git-ubuntu

2021-02-02 Thread Scott Moser
I think this is great. I think it is a game-changer for ubuntu development.
Thank you.

One thought inline.

>
>  5) If the commits pass sanity checks (eg. the final commit matches the
> upload exactly), then it uses the commits provided instead of
> synthesizing its own.
>
> What goes into the changes file is three fields. Example:
> https://launchpadlibrarian.net/516799033/hello_2.10-2ubuntu3~ppa1_source.changes
>
> Vcs-Git: https://git.launchpad.net/~racb/ubuntu/+source/hello
> Vcs-Git-Commit: 4511fdfc01cbfd5bc351e1da294d6acb44e8a4a2
> Vcs-Git-Refs: refs/heads/test
>
> We need the Refs field because git is designed not to be able to fetch a
> commit by hash, but by a ref that can reach it only. So Vcs-Git-Refs
> must specify what ref(s), when fetched will make the commit given to be
> reachable. In practice this could just be the branch name prefixed by
> 'refs/heads/' as in this example.

In your example above, the 'refs/heads/test' has to exist (and to have the
referenced commit) in order for the importer to find it.

So the uploader would then have to not delete or force-push that reference
until some point in the future, right?

My only concern here is that I already have way too many branches
that I've pushed. This will just leave more manual maintenance for me
to not clean up these branches until the upload that references
them is landed.

Did I undestand that correctly?

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


General mechanism to supply "rich history" to git-ubuntu

2021-02-02 Thread Robie Basak
Dear Ubuntu developers,

I have an experimental branch ready[0] that would allow any Ubuntu
uploader to provide git commits to the git-ubuntu importer, such that it
would use those commits instead of synthesizing its own. This way, the
git-ubuntu will always reflect "the truth" of Launchpad publications,
but also include individual git commits leading to each upload where the
uploaders have provided them.

git-ubuntu already supports this through use of "upload tags", but this
doesn't scale, so this experimental branch is an effort to make it
better and available to everyone.

Question: before I land this branch, I'd like to make sure that there
aren't any issues with the "spec", as follows.

For (developer) users, you'd run something like:

dpkg-buildpackage $(git ubuntu push-for-upload) 

The push-for-upload[1] command would push your branch to Launchpad and
also output some -Dfield=value arguments that would get passed through
to dpkg-genchanges.

Further/better wrappers could come later - especially for newcomers
where I'd like to wrap away the dpkg-buildpackage stuff.

Technically, the mechanism is:

 1) The uploader pushes their commits somewhere.

 2) The uploader includes a reference to the commits in the changes
file.

 3) The uploader dputs as normal.

 4) When git-ubuntu sees the upload, it pulls the commits from the
repository listed in the changes file.

 5) If the commits pass sanity checks (eg. the final commit matches the
upload exactly), then it uses the commits provided instead of
synthesizing its own.

What goes into the changes file is three fields. Example:
https://launchpadlibrarian.net/516799033/hello_2.10-2ubuntu3~ppa1_source.changes

Vcs-Git: https://git.launchpad.net/~racb/ubuntu/+source/hello
Vcs-Git-Commit: 4511fdfc01cbfd5bc351e1da294d6acb44e8a4a2
Vcs-Git-Refs: refs/heads/test

We need the Refs field because git is designed not to be able to fetch a
commit by hash, but by a ref that can reach it only. So Vcs-Git-Refs
must specify what ref(s), when fetched will make the commit given to be
reachable. In practice this could just be the branch name prefixed by
'refs/heads/' as in this example.

Some thoughts:

I used Vcs-Git since this is already well-defined for debian/control
files.

For now, my branch restricts the acceptable Vcs-Git URL to Launchpad and
https, because this is the MVP for this use case and the more general
untrusted case is harder to correctly validate the input from.

Notably there's a Dgit field defined by Debian Policy against dsc files,
which is used for a very similar purpose[2].

I chose the changes file because it seemed to me that this metadata is
more to do with the action of uploading - especially since there's no
guarantee that the git repository, refs and commit will continue to be
available in the future. Long term, the correct repository and commit to
be associated with the source package would be the git-ubuntu repository
into which it gets imported, not the uploader's repository. But the Dgit
field goes in the dsc file. Maybe it makes more sense there for Dgit,
because it's better defined in Dgit-land that the commit specified will
be expected to exist indefinitely.

I've used generic field names because it made sense to me for the
changes file to be able to generally specify "this git commit is the one
that I'm actually uploading here". But I haven't conveyed what the
uploader "intends" to be done with the field. It might not be right in
the general case for git-ubuntu to always assume that the uploader wants
the commit supplied to be incorporated. So do I need another field to
specify intent, or is that over-engineering it?

The general field spec might be something to collaborate with Debian on,
and get into the spec, same as Dgit. The way I designed it, it expands
and could incorporate/replace the Dgit field. But questions on dsc vs.
changes and the intent, as I mention above, would probably need to be
resolved first. And perhaps this is more than is practical right now
anyway.

Feedback appreciated.

Robie

[0] 
https://code.launchpad.net/~racb/usd-importer/+git/usd-importer/+merge/396756

[1] Not yet implemented. I'm not sure of the best name for this
subcommand; suggestions appreciated.

[2] https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-dgit


signature.asc
Description: PGP signature
-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Phased updates in APT in 21.04

2021-02-02 Thread Julian Andres Klode
(this is a copy of 
https://discourse.ubuntu.com/t/phased-updates-in-apt-in-21-04/20345
 for everyone's attention)

Starting with this development release, with APT 2.1.16 to be precise, APT now
implements phased updates. Previously, only update-manager implemented phased
updates, and this was only used on desktops - the implementation in APT means
this works on servers, raspberry pis, and containers, too.

This means that some updates will be hold back on some machines while they are
being phased. This is being decided by a value derived from the machine-id, the
package name, and package version.

# To control phased updates in APT:

* To have all your machines phase the same, set the `APT::Machine-ID`option to
a UUID like /etc/machine-id (the format is not being checked right now, but
that might change); or point `Dir::Etc::machine-id` to another machine-id file.

* To always include phased updates, set
`APT::Get::Always-Include-Phased-Updates` to true. This is the old behavior.
* To never include phased updates, set `APT::Get::Never-Include-Phased-Updates`
to false.

Note that this does not apply to fresh package installs. APT also respects the
options from update-manager about phased updates which are similar to the ones
above.

This also applies to any tool using the APT library, such as aptitude and
packagekit.

# Special notes:

* To avoid breaking existing build chroots, chroots are excluded from this
change for now (as are systems without an `/etc/machine-id`). This may change
in 21.10.

* The `/etc/machine-id` file is looked up relatively to `Dir::Etc` setting,
which is `/etc/apt`. So if you point `Dir` or `Dir::Etc` elsewhere, you might
have to copy `machine-id` to the right place or set that option to
`/etc/machine-id`, otherwise phasing will be disabled, and phased updates
always included.

-- 
debian developer - deb.li/jak | jak-linux.org - free software dev
ubuntu core developer  i speak de, en

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel