<br></div><div>Is this something that the debian kernel team could consider supporting / building as either standalone source package, or out of src:linux directly? as this would reduce 40+ .deb duplication in the mirror pools of the same content;and will eliminate build-depends on linux-source (and thus built-using) from src:cross-toolchain-base* and will actually ensure that all kernel headers for native / multiarch / cross arches are updated simultaneously, without need to wait for all arch:
I have implemented example packaging of that as a standalone source package https://ppa.launchpadcontent.net/xnox/nonvirt/ubuntu/pool/main/l/linux-uapi/
Is this something that the debian kernel team could consider supporting / building as either standalone source package, or out of src:linux directly?
The obvious things missing from the packaging is to create all the breaks/replaces/provides, and update cross-toolchain-base packages to
match. Also probably using symlinks rather than hard links, with linux-libc-dev-cross likely depending on the native one.
Separately for Ubuntu, due to the number of kernel built, I would likely
want to upload source package that produces linux-libc-dev as a separate source package such that linux-libc-dev is actually only updated when
needed, rather than on every kernel upload. As there is no need to rev linux-libc-dev as often as kernel uploads are done.
Hi Dimitri
On Thu, Nov 16, 2023 at 06:28:13PM +0000, Dimitri John Ledkov wrote:
I have implemented example packaging of that as a standalone source package https://ppa.launchpadcontent.net/xnox/nonvirt/ubuntu/pool/main/l/linux-uapi/
I actually just implemented something similar, but as part of the Debian linux packaging. It looks a bit different, sure.
Is this something that the debian kernel team could consider supporting / building as either standalone source package, or out of src:linux directly?
My first thought was actually to make bootstrapping of new architectures easier.
The obvious things missing from the packaging is to create all the breaks/replaces/provides, and update cross-toolchain-base packages to match. Also probably using symlinks rather than hard links, with linux-libc-dev-cross likely depending on the native one.
What do you want to do with linux-libc-dev-cross? /usr/$triplet is no allowed location in Debian anyway.
Separately for Ubuntu, due to the number of kernel built, I would likely want to upload source package that produces linux-libc-dev as a separate source package such that linux-libc-dev is actually only updated when needed, rather than on every kernel upload. As there is no need to rev linux-libc-dev as often as kernel uploads are done.
The question here is: does it provide an advantage to have it as
separate source? Less updates IMHO do not count, as they don't come
with a penalty attached. But I see the downside of fixing the user
space API to a different version then the kernel you actually ship in
the end.
Hi Dimitri
On Thu, Nov 16, 2023 at 06:28:13PM +0000, Dimitri John Ledkov wrote:
I have implemented example packaging of that as a standalone source package https://ppa.launchpadcontent.net/xnox/nonvirt/ubuntu/pool/main/l/linux-uapi/
I actually just implemented something similar, but as part of the Debian linux packaging. It looks a bit different, sure.
Is this something that the debian kernel team could consider supporting / building as either standalone source package, or out of src:linux directly?
My first thought was actually to make bootstrapping of new architectures easier.
The obvious things missing from the packaging is to create all the breaks/replaces/provides, and update cross-toolchain-base packages to match. Also probably using symlinks rather than hard links, with linux-libc-dev-cross likely depending on the native one.
What do you want to do with linux-libc-dev-cross? /usr/$triplet is no allowed location in Debian anyway.
Separately for Ubuntu, due to the number of kernel built, I would likely want to upload source package that produces linux-libc-dev as a separate source package such that linux-libc-dev is actually only updated when needed, rather than on every kernel upload. As there is no need to rev linux-libc-dev as often as kernel uploads are done.
The question here is: does it provide an advantage to have it as
separate source? Less updates IMHO do not count, as they don't come
with a penalty attached. But I see the downside of fixing the user
space API to a different version then the kernel you actually ship in
the end.
Regards,
Bastian
--
Knowledge, sir, should be free to all!
-- Harry Mudd, "I, Mudd", stardate 4513.3
On Thu, 16 Nov 2023 at 19:30, Bastian Blank <waldi@debian.org> wrote:
On Thu, Nov 16, 2023 at 06:28:13PM +0000, Dimitri John Ledkov wrote:
I have implemented example packaging of that as a standalone source package
https://ppa.launchpadcontent.net/xnox/nonvirt/ubuntu/pool/main/l/linux-uapi/
I actually just implemented something similar, but as part of the Debian linux packaging. It looks a bit different, sure.Will check it out, thanks! And yes, indeed there are dozens of ways to implement this idea.
It's ok if you don't want to integrate `linux-libc-dev-cross` into
src:linux I can upload that into debian as a standalone src:linux-libc-dev-cross under the toolchain-base maintainers hat that
will build-depend on linux-source and build it for all possible
triplets under the sun. And i think we override the lintian warnings
there. Because it will be easier to have that once, rather than in all
three cross-toolchain-base packages. And it can be updated, without rebuilding the cross-toolchains themselves. Because it is wasteful to acutally do cross toolchains bootstraps just to bump a stable point
release of linux headers that like changes nothing.
Or just integrate it into src:linux build too, given all of those
cross headers are established packages since 2015. (and yes using GNU tripplet as a top level dir)
However it does not matter,
because the include list already is correct:
| #include <...> search starts here:
| /usr/lib/gcc-cross/s390x-linux-gnu/13/include
| /usr/lib/gcc-cross/s390x-linux-gnu/13/../../../../s390x-linux-gnu/include | /usr/include/s390x-linux-gnu
| /usr/include
| End of search list.
Currently in both Debian and Ubuntu we ship like close to 40 .deb packages that have linux-libc-dev (for native/multiarch, cross, ports, mipses).
Each one of them is like 1.5MB, however they actually all have the same and repeated content.
the bulk of headers are the same on all arches (and enforced via multi-arch:same), asm-generic is also the same for all of them, and then kernel-arch asm headers are unique - but only for given kernel arches (not all of the debian arch names).
Currently there are only 13 kernel archs for unique asm-arch headers, but
in Debian we have multiple reuses of the same kernel archs with different userspace abi properties (arm = armel armhf, mips = 12 mips archs, powerpc
= 4, x86 = 3, and so on).
It seems wasteful on disk, build-time, and derivative build time to package all of these separately. Especially since there is a chain of src:linux building native ones + linux-source as a .deb; which is then used by cross-toolchain-base{,-ports,-mips} to unpack and rebuild linux headers again, and publish. When in practice src:linux itself could build an efficient libc-dev packages for all arches as an arch:all package and Multi-Arch:foreign.
The linux-libc-dev is native & multiarch uapi headers for all arches. The linux-libc-dev-alpha-cross is all debian arch crosses. It is implemented using hardlinks to maintain all the same paths that are currently being
used by all the arch:any linux-libc-dev packages, and the linux-libc-dev-*-cross packages. In total they provide equivalent functionality as 40+ linux-libc-dev* current debs in either Debian or
Ubuntu.
Is this something that the debian kernel team could consider supporting / building as either standalone source package, or out of src:linux directly? as this would reduce 40+ .deb duplication in the mirror pools of the same content; and will eliminate build-depends on linux-source (and thus built-using) from src:cross-toolchain-base* and will actually ensure that
all kernel headers for native / multiarch / cross arches are updated simultaneously, without need to wait for all arch:any builds to catch up first. It also gives ability to trivially create freestanding toolchains to any of the arches without actually building a full debian port for or
having a working kernel for a given port.
I guess that the list of architectures will always be incomplete for
some, so we probably still need a process for building a modified linux-libc-dev package only. This probably requires some build profiles.
Is pkg.linux.nokernel pkg.linux.notools pkg.linux.quick a sensible set
of profiles for this? Is there an easily patchable way to add an architecture?
For c-t-b, I guess that we can simply cut out linux-libc-dev and remove
all the -cross packages. I hope there is no devil in the detail.
On Sat, Dec 23, 2023 at 05:15:18PM +0100, Helmut Grohne wrote:
I guess that the list of architectures will always be incomplete for
some, so we probably still need a process for building a modified linux-libc-dev package only. This probably requires some build profiles.
Is pkg.linux.nokernel pkg.linux.notools pkg.linux.quick a sensible set
of profiles for this? Is there an easily patchable way to add an architecture?
Let's see. I have some changes pending that make config changes easier.
Also we might be able to add a linux-libc-dev-arch that builds a
standalone version again and is only built with a special build profile,
but it still needs the package to know more information then dpkg does provide.
Or you inject a new reboostrap-specific package that just adds a
symlink /usr/lib/$DEB_HOST_MULTIARCH/asm pointing to the appropriate /usr/lib/linux/uapi/$ARCH if linux-libc-dev does not include this.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 490 |
Nodes: | 16 (2 / 14) |
Uptime: | 68:36:21 |
Calls: | 9,677 |
Calls today: | 1 |
Files: | 13,720 |
Messages: | 6,171,962 |