libera/#maemo/ Sunday, 2018-06-03

timelessDocScrutinizer: yes.05:06
timelessUnfortunately, this is a basic flaw in the way Debian packages work. The binaries don't include enough information to capture how they were built05:10
timelessRomoxa (Oleg Romashin) most of the build optimizations and continued working on fennec for a while05:12
enyctimeless: hrrm... isn't that what '-dbg' and source packages are for?10:34
timelessno10:34
enyctimeless: reproducible-builds project being helpful, you can check you can rebuild he same checksum binary etc.?10:34
timelessthey don't provide a way to guarantee a complete build env10:35
timelessenyc: the problem is that a binary package doesn't tell you which precise versions of dependent packages10:35
timelessit doesn't tell you which version of the compiler was used10:35
timelessor the linker10:35
timelessor...10:35
enyctimeless: aaat the build-log i see10:35
timelessyes, if you manage to get matching checksums, you know that you reproduced things10:35
timelessbut, when you don't (which will happen 99.99% of the time, due to things that embed timecodes)10:36
timelessyou don't know anything10:36
enyctimeless: surely its' expected to use tha same common pbuilder / debian release10:36
enyctimeless: thats part of why they use pbuilder,  create new chroot with minimum deps for building  each time10:36
enycbut then i understand it depends what  'updates'  to a release were applied before/after a package was built10:37
enyce.g.  gcc with retpoline fixes -- has package been rebuilt-or-not, etc etc10:37
timelessenyc: anyway, the point is that debian packages do not encode enough info10:38
timelessif the package is from along time ago, (5-10 years), you're SOL if the build environment is long gone10:38
enychave 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...?10:39
timelessno10:39
timelessfor one, i'm not sure it's entirely solvable10:39
timelessone could at least encode the version of installed packages10:39
enycthe pbuilder creates buildlogs10:40
DocScrutinizer05embeeded timestamps, HAHA great. I guess a VM with patched time_t time(time_t *t)  that simply returns a configurable constant might be useful10:40
timelessthere's a faketime module, i use it to talk to openssl10:41
enycwell acutalyl reproducible-builds work to get rid of all build times etc. of course10:41
timelessenyc: anyway, build logs that are on a server that don't persist aren't helpful10:42
MaxdamantusI think I've noticed that particular packages in nix have workarounds for removing build times from things that store them.10:42
timelessremember, DocScrutinizer05 is asking about packages from 5-10 years ago10:42
DocScrutinizer05actually jonwil is10:42
timelessthe source servers in a number of cases are gone10:42
timelessheck, even the build env distros are gone10:43
Maxdamantus(and as a standard feature, file times are all set to `0` after building a derivation in the store)10:43
timeless(which scratchbox,...)10:43
enycMaxdamantus: thats' to make the build reproducible ?10:43
Maxdamantusenyc: not exactly.10:44
Maxdamantusenyc: the build should be reproducible enough without that.10:44
timelessreally, to some extent, anything that isn't part of the shipping .deb is probably a bad thing to rely on10:44
timelessit's pretty easy to not end up w/ the associated "dbg" packages in case no one used them and the repo got lost10:44
enycwell 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.10:45
timelessanyway,... solvable? maybe, it'd probably require logging all installed package versions and checksums for all files10:45
timelessthe question is ~ can one rebuild a build env in order to rebuild a package?10:46
timelessthat's what's desired and in a number of cases desirable10:46
MaxdamantusThat should be relatively doable in nix.10:46
timelessa fun version of this problem:10:46
enyctimeless: 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.10:46
Maxdamantus(though that's not relevant in this case)10:47
timelessa package X depends on a build-dep Y w/ some vague version requirement (not absolute)10:47
timelessin one version of Y, it defines a macro w/ one value, in another, it defines it with a different value10:47
DocScrutinizer05could at least from now on make, cmake et al take care to include all info to the .deb per default?10:47
MaxdamantusWhat is "all info"? Every package on the build system?10:47
Maxdamantusor every package transitively reachable through the dependencies?10:48
timelessthe resulting X package will have totally different shapes depending on the define, which is not something that you can tell by looking at the package10:48
Maxdamantusor just the dependencies?10:48
DocScrutinizer05ouch10:48
timelessMaxdamantus: it would be safer if it did all packages, but for privacy reasons everyone would object to that10:49
timelessi 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 process10:49
timelessyou'd get something vaguely good10:49
DocScrutinizer05:nod:10:50
DocScrutinizer05augias task10:50
timelessand again, what do you do if something is modifying how you see files10:51
MaxdamantusI'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.10:51
timelessMaxdamantus: i worked on maemo10:51
timelessthe build servers more or less did things in parallel10:51
Maxdamantussince the build maintainers can just keep a git repository with all deb sources.10:51
timelessyou could have races where different packages were built/used in parallel10:51
timelesssuch things were real problems10:51
timelessspecifically, i tried to build a source code index of a given binary release10:52
MaxdamantusHeh, fun.10:52
timelessit wasn't really possible10:52
timelessbecause different binaries used different versions of dependent packages10:52
* DocScrutinizer05 idly muses about keeping complete VMs in source 'repo'10:52
DocScrutinizer05one for each package - OUUUFF10:52
timelessDocScrutinizer05: real professional projects do that, more or less10:52
timelessnot archiving the build env leads to problems like this10:53
Maxdamantustbh, the complete VMs thing doesn't seem particularly unattainable.10:53
MaxdamantusIf your storage mechanism involves deduplication, it should be fine.10:53
Maxdamantuseg, one obvious way of achieving that would be to fire off every build in an isolated snapshot of the filesystem.10:54
Maxdamantusthen you just save the filesystem tree as a git tree in a bit repo.10:54
timelessMaxdamantus: i used dedup on the source system to avoid blowing up space w/ my weekly index10:54
timeless(i used zfs)10:54
sparreAt one of my customers, we launch a VM on Amazon for every build-and-test run.10:55
MaxdamantusYeah, I was thinking of the "snapshot" part in terms of btrfs, but zfs works too.10:55
timelessthis was over a decade ago10:55
* DocScrutinizer05 looked into dedup solutions a lot, for local workstation (btrfs, ext4) - it's a PITA and nothing _really_ worked10:55
timelessin my case, since the files were generally predictably named, it was pretty easy10:55
timelessi built to a stage, got rid of the package versions from directory names10:56
timelessand then rsync'd over the previous week's files10:56
timelessand snapshotted10:56
DocScrutinizer05yeah, that's somewhat sustainable and feasible10:56
timelessbut, that didn't solve the stupid "x uses a@1; y uses a@2; z uses b@2 which uses a@?"10:57
DocScrutinizer05:nod:10:57
DocScrutinizer05the 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 level10:59
timelesssharedobjects are one things, but it doesn't cover macros10:59
DocScrutinizer05"new" stuff should strictly follow same principles10:59
DocScrutinizer05yeah, sure, that's why >>at least for...<<10:59
timelessanyway.... it sucked... and was very frustrating not being able to answer questions about what a binary was thinking11:01
DocScrutinizer05coders would need to learn to *always* think fore/back-ward compatibility11:01
timelessgrr. cat wants to go out11:02
DocScrutinizer05but yeah, when you make a new (version of) package, you usually don't give a shit about backward and even less forward compatibility11:02
* 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 config11:18
DocScrutinizer05the damn nextcloud snap package even has a LetsEncrypt running, but I can't find how to enable apache HTTPS11:20
timelessis mod_md in hat thing?11:30
jonwilI 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.11:45
Vajbhehe interesting read of maemo builds back there22:24
Vajblast nite i wanted to prepare build enviroment for my upcoming android course...22:24
Vajbcan admit that i don't like android studio22:25

Generated by irclog2html.py 2.17.0 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!