megi's PinePhone Development Log RSS

Surgenons in Gaza Surgeons in Gaza

2023–09–02: Linux repository changes

Github sent me an e-mail ultimatum to enroll to 2FA or my access to github will be blocked in the near future. I have no use for 2FA, so github will have to block my account in October.

So in preparation for this, I completed my move off github that I started after the takeover by Microsoft years ago.

Last few years I used github for nothing else but my Linux repository mirror, because it's somewhat hard to host this huge repo on my own. I'd move to gitlab, but that's just another company that tends to block me from accessing their website via their use of Cloudflare on the login page.

I can't host Linux repository for clonning/fetching. GIT is too inefficient for running clone/fetch via either smart or dumb GIT HTTP protocol. Dumb protocol just downloads 3–4GiB of data for each clone/fetch, so that's useless. Smart protocol takes too much CPU time repacking/recompressing things on the fly for each fetcher (minutes of 100% CPU load just to start sending data).

I switched to using incremental GIT bundles to distribute my kernel branches/tags. The bundle contains select tags/branches from my local git tree and all necessary data so that when applied to Linus Torvalds's Linux repository, it will recreate everything as is in my local tree, without me having to host the entire Linux GIT history.

Bundles can be fetched from just like you'd fetch from a normal GIT repository with git fetch. Bundle for my last 3 kernel releases has the size of only ~10 MiB. The only snag is that git fetch can't fetch bundles from a HTTP URL, so the bundle needs to be downloaded first via wget or curl.

If you have a Linux tree already, fetching my latest branches would be done like this:

wget https://xff.cz/kernels/git/orange-pi-active.bundle
git fetch orange-pi-active.bundle '+refs/heads/*:refs/remotes/megi/*'

Or you can add alias to .git/config:

[alias]
        fetch-megi = !curl -o /tmp/megi.bundle https://xff.cz/kernels/git/orange-pi-active.bundle && git fetch /tmp/megi.bundle '+refs/heads/*:refs/remotes/megi/*'

And update just by running git fetch-megi

On the positive side, bundles are signed, so you can be sure that the branches contain what's in my repository if you verify the detached signature in the .asc file after the download. This was not the case with fetching from github.

If you don't have the Linus's tree cloned, you'd need to clone it first:

git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

orange-pi-6.5 release will be delayed or skipped

I have not tagged my orange-pi-6.5 branch yet, because some of the 14 ARM devices that I support in my kernel branches were either not yet tested, or are known to have serious issues with this kernel version.

I've tested all of these:

pc    Orange Pi PC
one   Orange Pi One
pc2   Orange Pi PC 2
pi3   Orange Pi 3
opi5  Orange Pi 5 Plus
qp64  Quartz Pro 64
q64a  Quartz64-A
pb    PocketBook Touch Lux 3
tbs   TBS A711 Tablet
pt2   PineTab 2 (*)

But did not manage to resolve all known issues with some portables that I support:

pp0   PinePhone 1.0
pp1   PinePhone 1.1
pp2   PinePhone 1.2
pbp   Pinebook Pro
ppp   Pinephone Pro

(*) I don't really support PineTab 2. I just have some of the Segfault's patches in my tree to make it easier to try to support the BES2600 WiFi chip with upstream CW1200 driver. Do not use my kernel tree for this device.