@juliank@mastodon.social
@juliank@mastodon.social avatar

juliank

@juliank@mastodon.social

Debian Developer, Ubuntu Core Developer, Software Engineer II at Canonical. Your friendly neighborhood APT maintainer. Vegan. He/him.

Love cooking, cycling, walking, music, and netflix.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

juliank, to random
@juliank@mastodon.social avatar

Why is the answer to "do you mind"

"Yeah sure"

And not "no"

juliank, to random
@juliank@mastodon.social avatar

APT is a weird mix of pre-STL, pre-namespace C++ from the early 90s with C++17 and soon C++20 sprinkled all over.

juliank, to random
@juliank@mastodon.social avatar

OK, but where can I find pistacchio verde di bronte D.O.P.?

juliank, to random
@juliank@mastodon.social avatar

Gadgetbridge can't download activities from my Fossil Hybrid anymore, I think it times out because it hasn't synced in months.

juliank, to random
@juliank@mastodon.social avatar

The new APT solver currently uses a priority queue of outstanding work (unsolved clauses) with dynamic priorities.

However my local state is statically ordered instead, and it's really down to 3 bits:

  • is this clause unit? Do it now!
  • do earlier group before later
  • do mandatory before optional

So we can move the optionality into the groups itself, and then we just need one bucket per group which is just insertion ordered, i.e. an array of linked lists will do fine.

juliank, to random
@juliank@mastodon.social avatar

I'm sure there's a shortcut for changing a selection to be what you have yanked elsewhere, it's not ergonomical to do

  • yanking
  • "caw" or similar
  • Hit esc
  • Press P
juliank, (edited ) to random
@juliank@mastodon.social avatar

Just uploaded a new build of @keepassxc to Debian unstable, this adds a separate keepassxc-minimal package, and a transitional package that depends on keepassxc-full | keepassxc-minimal; so people upgrading (or new installing) will get the full experience again.

This is still 2.7.7, mind you. 2.7.8 I need to go look at some day when I'm not killing myself with apt solver work!

juliank, to random
@juliank@mastodon.social avatar

It's very hard to find stuff about SAT solving, you just get "how to master your SATs"

juliank, to random
@juliank@mastodon.social avatar

Ratatouille, or: olive oil with vegetables

juliank, to random
@juliank@mastodon.social avatar

I've said before but my goal is to make the pinning source-package based.

In practical terms this is equivalent to applying the 100 pin to all binaries in the source version matching an installed binary version.

This also means if you have foo=1 installed, foo/bar=1 in the repo, and foo/bar=2 in another pinned to 1, no longer would bar=2 bar the candidate (but foo=1), but bar=1 would be the candidate as bar=2 is pinned lower than installed foo=1

juliank, to random
@juliank@mastodon.social avatar

apt-cache can't tell you here why pbuilder is installed:

$ aptitude why pbuilder
i ansible-role-devel Depends ubuntu-dev-tools
i A ubuntu-dev-tools Recommends pbuilder | cowbuilder | sbuild

$ apt-cache why pbuilder
pbuilder:amd64=0.231build1 -> pbuilder:amd64

That's because pbuilder is autoremovable under the current solver3 regime, so it didn't find a reason to keep it - it picked sbuild to satisfy the Recommends above (as sbuild is manually installed).

juliank, to random
@juliank@mastodon.social avatar

This apt-cache why command is different from what you expect but it's a PoC.

$ apt-cache why inlibmutter
role-desktop:amd64 -> role-desktop:amd64=2024.03.04.1736.48 -> gnome-shell-extension-manager:amd64=0.5.1-1 -> gnome-shell:amd64=46.1-1ubuntu1 -> gir1.2-mutter-14:amd64=46.1-2ubuntu1 -> libmutter-14-0:amd64=46.1-2ubuntu1 -> libmutter-14-0:amd64

juliank, to random
@juliank@mastodon.social avatar

Heh I was hacking on APT solver too much so I didn't notice the ethernet connection from router to switch had degraded to 100 Mbit/s. It downgrades every couple months, not sure hwy.

juliank, to random
@juliank@mastodon.social avatar

I'm going to say writing a SAT solver sure seems easier than a red-black tree. This is all pretty straightforward compared to you know, moving trees around.

The 2-literals-learning bit I almost independently rediscovered if I hadn't read a wiki page about it. I was going "huh I don't really care how many unassigned literals are in this clause only if I have less than 2." a lot (it's even easier in dependency form, A->D1|...|Dn, only watch one D; we only ever see clauses once A is true)

juliank, to random
@juliank@mastodon.social avatar

OK so I mentioned all the issues earlier, what I did now, I got to 1418 packages upgrade in the test case, it all looks correct, the old solver only did 1416.

  • Order dependencies by
  1. New install
  2. Anything else
  3. Contains obsolete package
  • Move obsolete choices in the alternatives to the back

Also removed the dynamic sizing code, so we can use watched literals instead now I suppose.

juliank, to random
@juliank@mastodon.social avatar

This paper reminds me somewhat of the Smart solver https://arxiv.org/pdf/2401.10589

juliank, to random
@juliank@mastodon.social avatar

See I just realized I'm writing a local-search incomplete partial (weighted) maxsat solver in effect.

But also I could do conflict-driven maxsat to solve the upgrade problem. So you go enqueue all upgrades. You get a conflict, you remove the conflicting upgrade.

You try again until there are no more conflicts.

juliank, to random
@juliank@mastodon.social avatar

200 lines of comments, 964 lines of code, and a complexity of 405 whatever that is.

OK
$ scc apt-pkg/solver3.*
[...]
Estimated Cost to Develop (organic) $25,994
Estimated Schedule Effort (organic) 3.44 months
Estimated People Required (organic) 0.67

I spent like 2 weeks on this, not 3.44 months, and I am 1 person not 0.67.

juliank, to random
@juliank@mastodon.social avatar

The AGPL is stulid.

Stalwart mail server is Affero GPL licensed. Can you legally use it? Remember that you need to point each client at the specific source code the binary was built from.

This provision isn't restricted to protocols intended for humans. You need to advertise the source code location to everyone connecting over JMAP, SMTP,IMAP,POP3 - whatever protocols you use.

If the protocol has no means to advertise the source code, you are fucked. You have no way to be compliant.

juliank, to random
@juliank@mastodon.social avatar

Yeesh, Nvidia getting back into the ARM SoC for laptop business doesn't seem very enticing to me.

juliank, to random
@juliank@mastodon.social avatar

Comparative analysis of the stress tracking yesterday and today. I had a terrible night but night time recovery 2 week average of course still is about the same.

Daytime recovery increased and day time stress load decreased.

This caused the score to go down. 1/2

juliank, to random
@juliank@mastodon.social avatar

Kids in Hessen can now choose Ukrainian as their second foreign language in school, no longer just French or Latin (possibly Spanish, idk).

juliank, to random
@juliank@mastodon.social avatar

Working on an interesting problem like this solver is very taxing. I couldn't fall asleep until like 2am and woke up at like 6:30 realising how to fix the problem I had remaining. 😫

juliank, to random
@juliank@mastodon.social avatar

solver3 found the problem so complex it didn't find the full solution, running it again made it find more upgrades, huh.

juliank, to random
@juliank@mastodon.social avatar

PubGrub is an interesting dependency solver, but it's worth pointing out the field of language package managers it is for is quite different from APT's use case.

PubGrub primarily focuses on version selection, because you'll have hundreds of versions per package and you need to navigate all the package's requirements to find the right set of versions.

APT is different. Each package normally has one, at most two versions. Instead you have lots of package choices to make.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • anitta
  • thenastyranch
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • ngwrru68w68
  • megavids
  • magazineikmin
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • provamag3
  • tester
  • Leos
  • JUstTest
  • All magazines