*** florian_kc has joined #maemo | 00:02 | |
*** florian has quit IRC | 00:03 | |
*** florian_kc is now known as florian | 00:07 | |
*** pagurus` has quit IRC | 00:32 | |
*** pagurus has joined #maemo | 00:46 | |
*** xy2_ has joined #maemo | 00:50 | |
*** pagurus has quit IRC | 00:50 | |
*** Venemo has quit IRC | 00:54 | |
*** pagurus has joined #maemo | 01:15 | |
*** pagurus has quit IRC | 01:19 | |
*** sunshavi has quit IRC | 01:44 | |
*** xy2_ has quit IRC | 01:46 | |
*** sunshavi has joined #maemo | 01:58 | |
*** florian has quit IRC | 02:12 | |
*** Pali has quit IRC | 02:17 | |
*** jonwil has joined #maemo | 02:19 | |
*** freemangordon has quit IRC | 02:43 | |
*** freemangordon has joined #maemo | 02:44 | |
*** sunshavi has quit IRC | 03:04 | |
*** M4rtinK has quit IRC | 03:11 | |
*** infobot has quit IRC | 03:20 | |
*** infobot has joined #maemo | 03:21 | |
*** ChanServ sets mode: +v infobot | 03:21 | |
*** jonwil has quit IRC | 04:02 | |
*** LauRoman|Alt has joined #maemo | 04:21 | |
*** LauRoman has quit IRC | 04:24 | |
*** luke-jr has quit IRC | 04:25 | |
*** luke-jr has joined #maemo | 04:31 | |
*** vectis_ has quit IRC | 05:36 | |
*** vectis_ has joined #maemo | 05:38 | |
*** tm has quit IRC | 06:04 | |
timeless | DocScrutinizer: yes. | 06:06 |
---|---|---|
*** tm has joined #maemo | 06:07 | |
timeless | Unfortunately, this is a basic flaw in the way Debian packages work. The binaries don't include enough information to capture how they were built | 06:10 |
timeless | Romoxa (Oleg Romashin) most of the build optimizations and continued working on fennec for a while | 06:12 |
*** vahe has joined #maemo | 06:33 | |
*** trx has quit IRC | 06:57 | |
*** trx has joined #maemo | 07:02 | |
*** trx has quit IRC | 07:02 | |
*** trx has joined #maemo | 07:02 | |
*** sunshavi has joined #maemo | 07:27 | |
*** luke-jr has quit IRC | 07:43 | |
*** luke-jr has joined #maemo | 07:44 | |
*** Hurrian has quit IRC | 08:09 | |
*** Hurrian has joined #maemo | 08:18 | |
*** jonwil has joined #maemo | 09:05 | |
*** danjackson has quit IRC | 10:04 | |
*** danjackson has joined #maemo | 10:04 | |
*** valdyn has left #maemo | 10:13 | |
*** Kilroo has quit IRC | 10:19 | |
*** vahe has quit IRC | 10:25 | |
*** vahe has joined #maemo | 10:30 | |
*** vahe has quit IRC | 10:30 | |
*** vahe has joined #maemo | 10:31 | |
*** vahe1 has joined #maemo | 11:12 | |
*** vahe1 has quit IRC | 11:12 | |
*** vahe1 has joined #maemo | 11:13 | |
*** vahe is now known as Guest45821 | 11:14 | |
*** vahe1 is now known as vahe | 11:14 | |
*** Guest45821 has quit IRC | 11:14 | |
*** xy2_ has joined #maemo | 11:18 | |
*** phlixi has quit IRC | 11:22 | |
*** florian_kc has joined #maemo | 11:24 | |
*** phlixi has joined #maemo | 11:24 | |
*** Pali has joined #maemo | 11:29 | |
*** phlixi has quit IRC | 11:29 | |
*** phlixi has joined #maemo | 11:29 | |
*** vectis_ has quit IRC | 11:31 | |
*** florian_kc has quit IRC | 11:33 | |
enyc | timeless: hrrm... isn't that what '-dbg' and source packages are for? | 11:34 |
timeless | no | 11:34 |
enyc | timeless: reproducible-builds project being helpful, you can check you can rebuild he same checksum binary etc.? | 11:34 |
*** vectis has joined #maemo | 11:34 | |
timeless | they don't provide a way to guarantee a complete build env | 11:35 |
timeless | enyc: the problem is that a binary package doesn't tell you which precise versions of dependent packages | 11:35 |
timeless | it doesn't tell you which version of the compiler was used | 11:35 |
timeless | or the linker | 11:35 |
timeless | or... | 11:35 |
enyc | timeless: aaat the build-log i see | 11:35 |
timeless | yes, if you manage to get matching checksums, you know that you reproduced things | 11:35 |
timeless | but, when you don't (which will happen 99.99% of the time, due to things that embed timecodes) | 11:36 |
timeless | you don't know anything | 11:36 |
enyc | timeless: surely its' expected to use tha same common pbuilder / debian release | 11:36 |
enyc | timeless: thats part of why they use pbuilder, create new chroot with minimum deps for building each time | 11:36 |
enyc | but then i understand it depends what 'updates' to a release were applied before/after a package was built | 11:37 |
enyc | e.g. gcc with retpoline fixes -- has package been rebuilt-or-not, etc etc | 11:37 |
timeless | enyc: anyway, the point is that debian packages do not encode enough info | 11:38 |
timeless | if the package is from along time ago, (5-10 years), you're SOL if the build environment is long gone | 11:38 |
enyc | have you made a propased patch to dpkg/tools etc.?, oloked into options for build logs/info to be stored eithre separately or embedded in the debs in a way that won't affect existing systems installing them...? | 11:39 |
timeless | no | 11:39 |
timeless | for one, i'm not sure it's entirely solvable | 11:39 |
timeless | one could at least encode the version of installed packages | 11:39 |
enyc | the pbuilder creates buildlogs | 11:40 |
DocScrutinizer05 | embeeded timestamps, HAHA great. I guess a VM with patched time_t time(time_t *t) that simply returns a configurable constant might be useful | 11:40 |
timeless | there's a faketime module, i use it to talk to openssl | 11:41 |
enyc | well acutalyl reproducible-builds work to get rid of all build times etc. of course | 11:41 |
timeless | enyc: anyway, build logs that are on a server that don't persist aren't helpful | 11:42 |
Maxdamantus | I think I've noticed that particular packages in nix have workarounds for removing build times from things that store them. | 11:42 |
timeless | remember, DocScrutinizer05 is asking about packages from 5-10 years ago | 11:42 |
DocScrutinizer05 | actually jonwil is | 11:42 |
timeless | the source servers in a number of cases are gone | 11:42 |
timeless | heck, even the build env distros are gone | 11:43 |
Maxdamantus | (and as a standard feature, file times are all set to `0` after building a derivation in the store) | 11:43 |
timeless | (which scratchbox,...) | 11:43 |
enyc | Maxdamantus: thats' to make the build reproducible ? | 11:43 |
Maxdamantus | enyc: not exactly. | 11:44 |
Maxdamantus | enyc: the build should be reproducible enough without that. | 11:44 |
timeless | really, to some extent, anything that isn't part of the shipping .deb is probably a bad thing to rely on | 11:44 |
timeless | it's pretty easy to not end up w/ the associated "dbg" packages in case no one used them and the repo got lost | 11:44 |
enyc | well you say the problem isn't solvab/e, mut didn't rcatch what parts ooyou want solved and why, what the compatibilite problems would be, and how you do intend to solve those that should be solved. | 11:45 |
timeless | anyway,... solvable? maybe, it'd probably require logging all installed package versions and checksums for all files | 11:45 |
timeless | the question is ~ can one rebuild a build env in order to rebuild a package? | 11:46 |
timeless | that's what's desired and in a number of cases desirable | 11:46 |
Maxdamantus | That should be relatively doable in nix. | 11:46 |
timeless | a fun version of this problem: | 11:46 |
enyc | timeless: hrrm like i mentiont to leste people they shouldn't be expecting to reply on current githumb for contributors .. if you want to keep and reprouce/upstream fixes you need things like copyright file and clear status... hey-ho. | 11:46 |
Maxdamantus | (though that's not relevant in this case) | 11:47 |
timeless | a package X depends on a build-dep Y w/ some vague version requirement (not absolute) | 11:47 |
timeless | in one version of Y, it defines a macro w/ one value, in another, it defines it with a different value | 11:47 |
DocScrutinizer05 | could at least from now on make, cmake et al take care to include all info to the .deb per default? | 11:47 |
Maxdamantus | What is "all info"? Every package on the build system? | 11:47 |
Maxdamantus | or every package transitively reachable through the dependencies? | 11:48 |
timeless | the resulting X package will have totally different shapes depending on the define, which is not something that you can tell by looking at the package | 11:48 |
Maxdamantus | or just the dependencies? | 11:48 |
DocScrutinizer05 | ouch | 11:48 |
timeless | Maxdamantus: it would be safer if it did all packages, but for privacy reasons everyone would object to that | 11:49 |
timeless | i think from a reproducible perspective, if your build env was able to record all packages that contributed to files that were opened during the build process | 11:49 |
timeless | you'd get something vaguely good | 11:49 |
DocScrutinizer05 | :nod: | 11:50 |
DocScrutinizer05 | augias task | 11:50 |
timeless | and again, what do you do if something is modifying how you see files | 11:51 |
Maxdamantus | I'm not sure how it normally works on debian-based systems, though I think it hasn't worked this way with maemo, but: if everyone agrees that all official packages are built only by an automatic build server, it should be fairly reproducible. | 11:51 |
timeless | Maxdamantus: i worked on maemo | 11:51 |
timeless | the build servers more or less did things in parallel | 11:51 |
Maxdamantus | since the build maintainers can just keep a git repository with all deb sources. | 11:51 |
timeless | you could have races where different packages were built/used in parallel | 11:51 |
timeless | such things were real problems | 11:51 |
timeless | specifically, i tried to build a source code index of a given binary release | 11:52 |
Maxdamantus | Heh, fun. | 11:52 |
timeless | it wasn't really possible | 11:52 |
timeless | because different binaries used different versions of dependent packages | 11:52 |
* DocScrutinizer05 idly muses about keeping complete VMs in source 'repo' | 11:52 | |
DocScrutinizer05 | one for each package - OUUUFF | 11:52 |
timeless | DocScrutinizer05: real professional projects do that, more or less | 11:52 |
timeless | not archiving the build env leads to problems like this | 11:53 |
Maxdamantus | tbh, the complete VMs thing doesn't seem particularly unattainable. | 11:53 |
Maxdamantus | If your storage mechanism involves deduplication, it should be fine. | 11:53 |
Maxdamantus | eg, one obvious way of achieving that would be to fire off every build in an isolated snapshot of the filesystem. | 11:54 |
Maxdamantus | then you just save the filesystem tree as a git tree in a bit repo. | 11:54 |
timeless | Maxdamantus: i used dedup on the source system to avoid blowing up space w/ my weekly index | 11:54 |
timeless | (i used zfs) | 11:54 |
sparre | At one of my customers, we launch a VM on Amazon for every build-and-test run. | 11:55 |
Maxdamantus | Yeah, I was thinking of the "snapshot" part in terms of btrfs, but zfs works too. | 11:55 |
timeless | this was over a decade ago | 11:55 |
* DocScrutinizer05 looked into dedup solutions a lot, for local workstation (btrfs, ext4) - it's a PITA and nothing _really_ worked | 11:55 | |
timeless | in my case, since the files were generally predictably named, it was pretty easy | 11:55 |
timeless | i built to a stage, got rid of the package versions from directory names | 11:56 |
timeless | and then rsync'd over the previous week's files | 11:56 |
timeless | and snapshotted | 11:56 |
*** florian_kc has joined #maemo | 11:56 | |
DocScrutinizer05 | yeah, that's somewhat sustainable and feasible | 11:56 |
timeless | but, that didn't solve the stupid "x uses a@1; y uses a@2; z uses b@2 which uses a@?" | 11:57 |
DocScrutinizer05 | :nod: | 11:57 |
DocScrutinizer05 | the problem however feels like homegrown, the Godfathers of unix had a pretty clear notion about how to tackle this at very least on .SharedObject library level | 11:59 |
timeless | sharedobjects are one things, but it doesn't cover macros | 11:59 |
DocScrutinizer05 | "new" stuff should strictly follow same principles | 11:59 |
DocScrutinizer05 | yeah, sure, that's why >>at least for...<< | 11:59 |
*** florian_kc has quit IRC | 12:00 | |
timeless | anyway.... it sucked... and was very frustrating not being able to answer questions about what a binary was thinking | 12:01 |
DocScrutinizer05 | coders would need to learn to *always* think fore/back-ward compatibility | 12:01 |
timeless | grr. cat wants to go out | 12:02 |
DocScrutinizer05 | but yeah, when you make a new (version of) package, you usually don't give a shit about backward and even less forward compatibility | 12:02 |
*** Hurrian has quit IRC | 12:08 | |
* DocScrutinizer05 a few days ago looked into snap packages first time. Also sort of PITA, NFC where the apache running in snap env is keeping its vhost config | 12:18 | |
DocScrutinizer05 | the damn nextcloud snap package even has a LetsEncrypt running, but I can't find how to enable apache HTTPS | 12:20 |
*** geaaru has quit IRC | 12:22 | |
*** geaaru has joined #maemo | 12:23 | |
timeless | is mod_md in hat thing? | 12:30 |
*** M4rtinK has joined #maemo | 12:40 | |
jonwil | I think as far as build prerequisites go, the only option is to assume that if "configure" doesn't complain about stuff being out of date, its suitable to use. | 12:45 |
*** Hurrian has joined #maemo | 12:59 | |
*** florian_kc has joined #maemo | 13:09 | |
*** florian_kc has quit IRC | 13:13 | |
*** M4rtinK has quit IRC | 13:19 | |
*** vahe has quit IRC | 13:28 | |
*** luke-jr has quit IRC | 13:38 | |
*** luke-jr has joined #maemo | 13:38 | |
*** vahe has joined #maemo | 13:39 | |
*** Vajb has quit IRC | 13:41 | |
*** xy2_ has quit IRC | 14:02 | |
*** shentey has joined #maemo | 14:40 | |
*** luke-jr has quit IRC | 14:55 | |
*** Vajb has joined #maemo | 15:33 | |
*** shentey has quit IRC | 16:27 | |
*** luke-jr has joined #maemo | 16:47 | |
*** jonwil has quit IRC | 17:09 | |
*** florian has joined #maemo | 17:23 | |
*** KotCzarny has quit IRC | 17:24 | |
*** KotCzarny has joined #maemo | 17:24 | |
*** M4rtinK has joined #maemo | 17:54 | |
*** danjackson has quit IRC | 18:00 | |
*** xes has quit IRC | 18:24 | |
*** xes has joined #maemo | 18:51 | |
*** xes has quit IRC | 19:29 | |
*** TheKit has joined #maemo | 19:53 | |
*** NeKit has quit IRC | 19:56 | |
*** xes has joined #maemo | 20:05 | |
*** xy2_ has joined #maemo | 20:26 | |
*** vahe has quit IRC | 20:29 | |
Vajb | hehe interesting read of maemo builds back there | 23:24 |
Vajb | last nite i wanted to prepare build enviroment for my upcoming android course... | 23:24 |
Vajb | can admit that i don't like android studio | 23:25 |
*** Kilroo has joined #maemo | 23:48 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!