-
Notifications
You must be signed in to change notification settings - Fork 15
Package for Mobian/Debian/Devuan in the official Debian repository #26
Comments
I think this app already meet the DFSG you linked. As I do not know how to package for Debian (and do not use it), any help packaging would be appreciated. |
From my understanding, it works like this: I never packaged any software for anything, but I think these resources might be helpful: Regarding Rust packaging I found only information on how to package "crates" from crates.io which worried me. I asked a few questions on the mailing list and got an answer: PS: I am curious: What do you prefer over Debian/Devuan? |
Sounds interesting, but as I do not use any Debian-based distributions (I use Arch on my PinePhone, Arco-Linux on my laptop and Manjaro on my desktop) and as the flatpak should already run fine on mentioned distributions, I see no reason for me to work on this. If you or someone else is willing to:
I will give the person the permission (I do not know if he really needs it, but just to make sure) to package and redistribute it. Regarding Rust packaging, this project is a "crate" (basically a fancy name for a Rust-project), but not on crates.io, as this is almost exclusively used for libraries (there are some binaries over there, but these mostly assist in Rust-development and are not intended for consumers). |
@Schmiddiii: Since you use Arch Linux, makedeb could probably work quite well, as it uses the same PKGBUILD format seen for their packaging format. If need be, I could help maintain the package as well. Regarding distribution, it wouldn't work for the native Debian and Ubuntu repos, but you could add it to releases or the MPR, an AUR-like platform for makedeb. |
Seems to be worth looking into, but as I currently do not even have (or know how to make) a Arch-PKGBUILD this will take some time. I do not know whether I will have the time to do that in the next few weeks but I will play around with it a little bit. |
@hwittenborn: Thank you for offering your help, but your proposed solution is not really what I was looking for when creating this issue:
I would very much prefer the official (native) package repositories. Debian has high requirements and a QA (quality assurance) team. With official Debian packages, one can be quite sure that everything is legal and also does not include any malware. Dependencies are resolved automatically (installing packages from the repository made for exactly the version of Debian/Devuan/Mobian that is installed). Dependencies are separate packages avoiding usage of more disk space as would be needed and usage of more CPU power. This also gives the user the possibility to choose which package to use if Tubefeeder could either use this or that package as a dependency. An installable package is not so hard to create but without the metadata a package can carry within it I do not see that much of a benefit over just using binaries, the package pretty much would miss the benefits of an official Debian package. In fact new users of Debian are advised to not create FrankenDebian. The MPR says in the guide to installing packages:
Having the user check if the software is okay does not seem to be a very promising solution to me. A user might not even be able to understand the source code. |
Using makedeb would still have package metadata, at least in the sense of that in a standard Debian package, as the packages made from makedeb are still Debian packages themselves.
That's a fair argument, though I've found a fair amount of people do prefer their users to always have the latest versions of packages. I'd care to argue that as long as you aren't using core system packages, a users system should be pretty much as stable as it was before installing the new packages. I appreciate the thoughts though! I know makedeb won't work for everyone, but I'd thought I'd just propose it and see what would happen :) |
It is never bad to propose something, your proposal is just different from what I would consider a well done solution for this issue. However, it might even be a first step: Does makedeb create separate packages for each dependency? |
It can if you so choose to - you'd need to package each dependency separately, though nothing is stopping you from doing so with makedeb. Pretty much everything you can do with standard Debian packaging you can currently do with makedeb (there's a few tiny limitations rn, though nothing related to your issue of creating separate packages for dependencies). |
I can understand that this might not be the most optimal solution, but it is probably still the best solution until the day someone comes along and packages the application for Debian in the official way. I will certainly not be this person as I do not use any Debian-based distributions. Futhermore, I do not think anyone will package this the official way any time soon as I am still the only contributor to the application (apart from recently added italic translation). Using
As far as I understood (@hwittenborn correct me if I am wrong), All in all, official Debian-packaging would still be preferable, but as this is probably not going to happen any time soon and P.S.: @hwittenborn would it maybe be possible for |
Yes, makedeb just makes
More or less, though creating an official Debian package from source would still involve building. In practice you can still do the build step yourself or something and then still distribute the .deb file like you would a normal package (except for into the official Debian/Ubuntu repos, as mentioned below).
You would not, as Debian repository packages require a source package. The end result that both makedeb and standard Debian packaging creates is a binary package. The former is meant for building, while the latter is what's actually installable. The underlying philosophy of makedeb is to try to avoid that Debian source package format though, as I saw it as a bit verbose in the amount of configuration required to set up and maintain one. So that ends in packages that can't be uploaded to Debian, though the maintainability of the makedeb-based source package is arguably more maintainable imo. |
@hwittenborn There is now a I do not have that much experience in packaging using |
Looks great @Schmiddiii, I'll see what I can do |
This is a PKGBUILD-file that I got working with makedeb (just slightly modified from the original)
|
Looks good for my (pretty untrained) eye. Just some minor things:
Otherwise this looks good for me. If you want, you may publish this to the MPR after fixing (but you do not have to if you do not want). |
There is still some work to do. The PKGBUILD works on my debian testing install on amd64, but not on my pinephone or pinephone pro. But it seems related to something rusty, I get this backtrace when buildning from the 1.6.6 release:
Is that something you recognize? The PKGBUILD I used look like this now:
Same thing happens with the other PKGBUILD |
Seems like a failure in the Similar to P.S.: Note that it will take a long time (probably hours) to compile Tubefeeder on the PP because of its very weak hardware. |
That's true, the MPR does use pretty much the same naming convention as the AUR. If it's compiling from the latest git tag, the you should suffix the pkgname with |
It seems crosscompiling is not a thing with makedeb(?), so I am building on the ppp. msgfmt is in a package called gettext in debian, and that was missing as well as libssl-dev. I now have some issue with building ring which is a dependency through something else. I will see if I can get that sorted, do you have any input regarding cross-compiling @hwittenborn? |
What do you mean by cross compiling? I'm not too familiar with the term myself. |
It should be possible to build tubefeeder on a machine running a amd64 processor for the arm64 cpu used on the pinephone. Building a binary for another architecture than the one used on the host machine is called "cross compiling". When I run makedeb it will produce a package for the architecture of my host machine, rather than for all architectures specified in the arch array in th PKGBUILD. That is what I mean when I say that makedeb doesn't handle cross compilation. If it did, I would expect a package with arch=('amd64' 'arm64') in the PKGBUILD to produce two .deb-files, one for amd64 and one for arm64. |
I personally think cross-compiling Tubefeeder is mostly infeasible because of the many dependencies. See #46 for more information. I would just recommend just using Flatpak instead of cross-compiling (or compiling on PPP may also be feasible depending on its processor, or maybe use virtual machines, but this is probably not a lot faster than the PP). Can you also share the problem you have with ring if you still have problems? |
I didn't think of that, makedeb doesn't currently support that, no. The main purpose of This is definitely something I think should be supported though. It shouldn't be too much to add, and I can add support for it later today. I'm not sure if it'll work right now as I haven't tested today, but you might be able to override the I'm not sure if CARCH is set for builds either anymore, but I can get that checked later when I get home. |
I think you underestimate how hard cross-compiling can be. The best somewhat-reliable way is to start a virtual machine using qemu, and that (to my knowledge) is not that easy. I do not know how If you want to feel the pain of cross-compiling, just try to cross compile Tubefeeder (and please consider sharing results if you found a easy way as I was searching for many hours for a good solution until I gave up). |
Does setting that CARCH variable not work @Schmiddiii? I can try some stuff when I get home as well though. |
I was speaking about general cross compilation beeing hard. Regarding Arch, the man-page specifies that But you should not be stopped by me if you want to implement cross-compilation for |
Sure, this is the error message I get now:
|
Weird that And also very weird that Maybe try to unset this? But I am not sure this will work as I have not seen this one yet. |
Yes, something is weird. It seems rings build.rs sets CFLAGS |
Yes, there is a bug on line 220 in build.rs for ring. If I remove:
It will correctly find the aarch64 entries and set CFLAGS correctly |
Very weird indeed. Probably a detailed bug report to their repo would be good. Have you tried compiling just ring without Tubefeeder? I can compile just ring on my PP just fine. |
I can compile the whole thing if I fix ring. So yes, it works for me now :). This is the PKGBUILD that worked for me:
I maintain a couple of apps for the pinephone my self, and I have been meaning to put up a repo with deb-packages for mobian for them. I could put tubefeeder there as well if you like, so it can be installed through the software center and people don't have to go through the hassel of buildning them selfs... |
Sounds great, thank you. I think it would still be worth putting the PKGBUILDs on the MPR, but a repository with pre-built packages would also be good. |
@hwittenborn if you would like to add and maintain the PKGBUILD for tubefeeder to MPR that would be great, the one I went with is here: https://code.smolnet.org/micke/external_builds/src/branch/main/tubefeeder/PKGBUILD I have also added binary packages for arm64 and amd64 to https://repo.mic.ke Tubefeeder 1.6.6 can be installed by adding the repo and signing key to apt and then simply install using apt, like so:
|
I was probably a bit misleading @mickenordin, I planned on mostly helping with the setup procedure with makedeb, but I don't think I could be much of the primary maintainer of the package as I don't use Tubefeeder myself. Since you've already gotten the PKGBUILD set up though, is there anything that's stopping you from just maintaining the package yourself? |
A package in the official Debian repository adds some trust to software, because the package has to meet the DFSG and has to come with a Debian source package the user can build and install easily.
It also
apt search <search_term>
The text was updated successfully, but these errors were encountered: