IRC channel logs
back to list of logs
<KarlJoad>rekado: Yeah. Just need to clone the manual. I should probably do that before I forget everything I learned today. <KarlJoad>I never got an answer about this, can I build a system config without making an image for it? I do not need an installer, I just want the packages to be built to be substituted for my laptop. Similarly for a home config? <KarlJoad>Holy cow rekado! The directory field is in the manual; "7.7 Package Modules in a Sub-directory"! That makes my job easier. <lechner>PotentialUser-99 / maybe guix describe ? <KarlJoad>PotentialUser-99: We have the Guix manual. I think that should serve as our Wiki. <PotentialUser-99>That's not enough, what if I run into some wierd issues? arch wiki usually have troubleshooting section that tell people how to fix <KarlJoad>guix system describe returns the provenance for the current generation, including the system configuration file in the store. <KarlJoad>From my understanding, the manual is intended to serve as documentation for Guix. You can still use other wikis to narrow down and diagnose issues. <lechner>you may also wish to check out guix system list-generations <KarlJoad>If your reconfigure failed, nothing should have changed. If your reconfigure succeeded, but something broke, then "guix system roll-back" are what you want. <KarlJoad>"guix system describe" tells you the location of the configuration file in the store. <lechner>guix system describe provides a path. <lechner>forget about it. it would be bad even with a wiki. i have used linux since 1993 and had to rewire my brain <mirai>lilyp: it looks like pulseaudio doesn't ever attempt to read /etc/pulse/default.pa.d, rather it reads from the /gnu/store/...-pulseaudio-15.0/etc/pulse/default.pa.d (which btw doesn't exist) <mirai>this can be checked with pulseaudio --dump-conf <nckx>KarlJoad: 'guix system build'. <KarlJoad>nckx: Yes, but that works locally. I want a Cuirass server to build the operating-system configuration. <KarlJoad>But I do not need an installation image to be built. <nckx>If you mentioned Cuirass it didn't get sent. Can't you build arbitrary expressions? Why the focus on images? <nckx>ACTION can't access Cuirass right now :-( <KarlJoad>I don't know if the focus is warranted. Currently, I have modules (which have been defined using (define-module)) that contain operating-system configurations. I want them built like "guix system build", but by Cuirass. <lfam>Is there a web-based version of the Cuirass manual? <KarlJoad>lfam: I ran into the same thing. I found it easier to run "cd $(guix build cuirass)" then "info path/to/cuirass.info.gz". <KarlJoad>nckx: I am focused on images only because I do not need an installation image to be built, as I am not installing to these machines all that frequently. If images are the easiest way, then so be it. <nckx>You'd use a custom cuirass-job. You can turn any derivation into a job. There's a drv->job helper *somewhere* in Guix. You can use it or adapt it. <nckx>Correction: derivation->job. <nckx>ACTION is trying to recover their root file system for the second time this year :) <KarlJoad>So just make another module in the same channel that converts the operating-system module from a derivation to a job? <ConvolutedSquare>Oh hey nckx, so after investigating some more I came up with 2 possible solutions: 1. getting nativedisks command to work in GRUB or 2. get the kernel on the boot partition, and then mount /. What do you think? <lfam>At least it's nearly the end of the year <lfam>I'd be more worried if it was January 27 <nckx>New kernel tried to upgrade the on-disc format, it didn't go well. <nckx>Single-device bcachefs was stablefor years, but I couldn't just accept that & be happy & not shove a second root drive in my box. <KarlJoad>nckx: Or does derivation->job get placed in the Cuirass configuration? <lfam>Ah, so it's self-inflicted-ish ;) <nckx>Ish, but it should be supported, but then it's all unsupported, so eh I guess. <nckx>Which is just to say: I can't really say more than what I remember, KarlJoad, I'm sorry. It's possible, I did it once, so it can't be hard. <nckx>ConvolutedSquare: Funny, nativedisk has *never* worked for me. Froze every box I ever tried it on. Does it work for you? <oriansj>one shouldn't blame users unless the documentation is perfect and the program in question provides sanity checking and points the users to exact parts of the documentation. <oriansj>nckx: in response to lfam's self-inflicted-ish comment <nckx>ConvolutedSquare: I'd go for the boot partition. All you need is the bzImage & initrd. I think I shared my overengineered script here recently but I don't remember to whom. <lfam>It's a good point. I was trying to poke fun, but that doesn't always come across clearly <lfam>When someone says "kernel update broke my system", then I get worried. But if they are using a filesystem that's not included in the kernel, then I can breathe easy <KarlJoad>nckx: It doesn't look like cuirass ever uses derivation->job, so I guess it must go somewhere in module. <KarlJoad>If you come across how you got this functionality, I would greatly appreciate seeing your example. <nckx>You must absolutely blame idiot users for using an in-development fs on their main machine. It's the FOSS way. <lfam>I had hoped that my winky-face emoji would do the trick <oriansj>nckx: blame isn't required, just express that the filesystem isn't yet supported and point them to documentation which could help them make it become supported. <ConvolutedSquare>nckx: Haven't tried nativedisks yet, Guix doesn't seem to include it in the GRUB and I can't figure out how to get it to. I tried the boot partition one, but FAT32 doesn't support symlinks, but that was a quick and rushed attempt so I probably screwed something up. Will try it again now. <nckx>I do not expect lfam to do any of that if I volunteer the fact that I'm wearing clown shoes of my own volition, which I did. <nckx>I don't think the docs exist. I, mostly, am the docs. <nckx>(Where Guix is concerned, I mean.) <oriansj>nckx: you are absolutely correct, we can't expect that of lfam but we can encourage that behavior when possible to make a more gnu community ^_^ <nckx>ConvolutedSquare: Would you believe me if I said fun. <nckx>Nah. Just time. The data's safe, if inaccessible. <oriansj>ConvolutedSquare: well any data not properly backed up to atleast the 3-2-1 spec is at risk <oriansj>the 5-4-3-2-1 spec however is for the paranoid <nckx>oriansj: Self-deprecation seldom survives TCP. <nckx>If you can make them relevant I'll allow it, but only then. <lfam>Trying to write a manifest that includes all packages named "linux-libre-*" <lfam>This kernel-packages function does return something sensible, but I'm not sure how to turn that into a manifest <nckx>oriansj: What do people use for the '2' in 3-2-1 nowadays anyway? <oriansj>nckx: 3 different copies on 2 different types of media for the 1 purpose of preserving your data <nckx>lfam: Does k-p return something weird that resists packages->manifest? <lfam>And then I test it with `./pre-inst-env guix weather -m etc/kernels-manifest.scm` <nckx>oriansj: My question was way more specific. I guess the answer used to be 'tape', and maybe now it's 'HDDs', but as someone who lived through HDDs I'd prefer the '2' in '2 SSDs', if from different vendors. <oriansj>why did the bcachfs drop a dump? this joke was so bad it had a key-stroke <nckx>Which is great until *you* go offsite for the holidays and it turns into 2 off-site backups plus the equivalent of dial-up. <oriansj>If one is startled by a very loud fart of their own, would they be fartled? <oriansj>What did the maxi-pad say to the fart? You are the wind beneath my wings. <oriansj>ConvolutedSquare: the paranoid do: 5 copies on 4 different continents with 3 different media, with 2 different parity backups for the 1 purpose of protecting your data. <KarlJoad>nckx: I'm heading out, but if you do stumble across your way of having Cuirass build systems, please let sneek let me know. <lfam>I figured out my manifest creator :) <lfam>Soon to be on display on guix-patches <jgart[m]>They require rebar3 but homeless-shelter is not writeable <jgart[m]>unless someone wants to send a patch and commit together <ConvolutedSquare>I took the factory boot config and replaced the kernel & initrd with the ones from Guix <not-a-potential->How is that possible? If guix is declarative and this definition used to work, how can it fail again? <nckx>...ah well you see I made a brilliant debugging move called 'falling asleep'. <nckx>ConvolutedSquare: You'd use (mount ...) from the Guix syscalls module, in Scheme mode. There's no bournish mount. <nckx>But really, you want to boot through the initrd. Can't you append kernel arcuments? That would really, really help. <nckx> Bit mean, but I'm going to fall back asleep now. Bye. <whereiseveryone> not-a-potential: It's possible if someone in the process of updating another package that has mutual or common dependencies with tealdeer ends up breaking tealdeer. <whereiseveryone>maybe they where updating another rust app and in the process broke tealdeer and didn't check to see that tealdeer broke <whereiseveryone>You would have to go back to the exact commit where tealdeer was working with guix time-machine <sneek>I last saw akirakyle in #guix one day and 21 hours ago, saying: Well I'm glad I could at least help you uncover some bugs with g-golf. <lilyp>mirai yeah, then you have to add the code to read /etc/pulse/default.pa.d yourself <daviid>sneek: later tell akirakyle i pushed a fix wrt GI dependency version in the configure.ac file tx for the catch, but the problems you were facing are not related to any bug in g-golf: (b) you need a clean environment to build g-golf, which means you can't build g-golf if it is installed, and (b) to run g-golf, guix needs a specific 'something', i hope those who know will help you and other g-golf users in guix <Kolev>Anybody written a GNOME HIG app in G-Golf? <ham5urg>Any exmaples in git? In which directory? <unwox>ham5urg: gnu/services directory <apteryx>mirai: it only reads from /etc/pulse/default.pa.d if you use 'extra-script-files' as part of your pulseaudio-configuration <apteryx>the rationale was to avoid reading scripts from foreign distributions <apteryx>or do you mean when invoking some pa command specifically? <apteryx>if your config is correct you should see ".include /etc/pulse/default.pa.d" as the last line when running 'tail /etc/pulse/default.pa' <mirai>the file appears under /etc/pulse/default.pa.d <apteryx>have you checked the pulseaudio logs upon starting it? <apteryx>or run the commands in the interactive pa prompt <mirai>running each line individually with pacmd shows that they're fine <apteryx>and as it's included last they should override rather than be overriden <apteryx>udisksctl stopped working out of the blue <apteryx>Failed to activate service 'org.freedesktop.UDisks2': timed out <mirai>apteryx: can you do a pulseaudio --dump-conf <mirai>apteryx: won't this mean that /gnu/store/wvdjn50mslpj9wsslkq3hbdij20fzbfw-pulseaudio-15.0/etc/pulse/default.pa is used instead of /etc/pulse/default.pa ? <mirai>only /etc/pulse/default.pa contains the lines to load /etc/pulse/default.pa.d/ <bjc>i haven't been able to get ‘pulseaudio-configuration’ to work, fwiw <bjc>it drops the file in …/default.pa.d, and has the requisite include line in default.pa, but it doesn't actually seem to load <bjc>if i run ‘pactl $(cat /etc/pulseaudio/default.pa.d/enable-zeroconf.pa)’ it works, so i don't think it's a syntax error <mirai>bjc: I think pulseaudio never reads /etc/default.pa in the first place (which contains the line to load the extra-scripts <bjc>that would explain it <edoput>hello all. I'm evaluating guix as a build system for embedded devices. Unfortunately the embedded world does things differently and does not receive much love from built systems. As an example I have a SPI filesystem library which is configured by including a header and each device I target has a different header. I would like to build the library first and then the firmware but this is problematic with <edoput>other build systems, e.g. meson. Has anybody attempted to build firmware relying on guix or is this not a use case? <mbakke>edoput: IIUC maybe you can find some inspiration from make-arm-trusted-firmware in gnu/packages/firmware.scm or make-u-boot-package in gnu/packages/bootloaders.scm <bud>I was distro hopping a couple of months ago, and told myself i should try Guix, when the next stable version of Xfce (4.18) was released and packaged for Guix. <bud>is it complicated to create custom packages for the xfce 4.18 stuff i want (thunar, xfce4-panel, xfce4-settings + some panel plugins) <bud>i am a human and a bud <drakonis>led-lightbulb posts a shorthand identifier for bugs <drakonis>i think it shouldnt take much longer for the xfce 4.18 patchset to go in <bud>i use a custom xfce4-panel plugin, how does that work on guix? on Ubunut i install it to: /usr/lib/x86_64-linux-gnu/xfce4/panel/plugins/libi3windowmenu.so <bud>i think /usr/lib/xfce4/panel/plugins/libi3windowmenu.so would work as well. <bud>and i build and install it from source with GNUmakefile <drakonis>but it shouldnt be too hard to learn how <florhizome[m]><bud> "i use a custom xfce4-panel..." <- Just $PREFIX/lib/... <florhizome[m]>bud you will need to write a guix package, not sure if that was clear <bud>florhizome[m]: drakonis: thanks, i figure it out, Guix documentation is 10/10 <apteryx>mirai: if what you found is true, that'd mean the default.pa file under /etc/pulse/default.pa was never used <bjc>are the *-xyz modules just grab bags of miscellaneous packages? <rekado>introduced originally to separate interpreters/compilers from packages using them <mirai>apteryx: seems to be the case <mirai>so it's interesting how your configuration seems to be working? <mirai>unless pulseaudio is already defaulting your card-profile to what your snippet contains <mirai>What's the proper way to handle packages that never had an upstream release? <mirai>i.e. only git commits are available <bjc>use (git-reference (url "…") (commit "sha")) <bjc>for the (source (origin (uri …))) if that wasn't clear <apteryx>I guess the changes from my script stuck and I didn't notice. <apteryx>I should try to modify them and reboot to confirm <apteryx>(when the pulseaudio package sysconfdir is not modified) <apteryx>notice the "default-script-file" entry unconditionally added to daemon.conf <mirai>nitpick, it can be changed to use match-record here <apteryx>so if we were to re-introduce it, pointing to /etc/pulse/default.pa, that should do it <apteryx>ah, "After:" should have been "Current:" <apteryx>I think the problem is triggered when we don't provide the 'daemon-conf' field. <mirai>daemon-conf is never null? though <mirai>but it nonetheless inserts "default-script-file = " default-script-file "\n" <mirai>which since default-script-file also provides a default value of (file-append pulseaudio "/etc/pulse/default.pa") <mirai>results in the guix written default.pa file to be never used <efraim>does anyone know offhand how to use 'git diff' to also grab uncommitted files? <apteryx>hmm, uncommitted files... what would 'git diff' diff against then? <apteryx> I don't know but perhaps the folks in #git do :-) <efraim>apteryx, lechner: I was hoping to do it without it being staged, but 'git diff --staged' works for me <efraim>i'm finally working on porting riscv64 support to node-10.24.1 and need to add an entire folder <apteryx>mirai: I'm reconfiguring with a plausible fix <lechner>thanks everyone for working so hard on Guix! i am in love with Guix and spend more learning about it than those dearest to me think is right---but it is right. Guix is an amazing invention. our common ideas really pull people together here <apteryx>lechner: guix is strangely addictive :-) <mirai>tailoring guix to your needs does feel like crafting a Fabergé egg <apteryx>mirai: with the fix, default-script-file = /etc/pulse/default.pa from 'pulseaudio --dump-conf' <apteryx>lilyp: it was merged, but there was a subtle bug <shcv[m]>hello; I saw recent news about the configure-linux procedure for... configuring linux, but the only configuration docs seem to be the potentially outdated cookbook. Any references, or a short example, of how to add a few lines of kernel config? <apteryx>you can pass it a defconfig you crafted with 'make menuconfig', 'make savedefconfig', etc. with #:defconfig as a file-like object <apteryx>alternatively, you can use #:configs, but that's tricky as you need to capture all the dependencies <apteryx>mirai: patch sent, please try and report! <apteryx>lilyp: in case you'd like to follow: firstname.lastname@example.org <lilyp>apteryx: I think you should use default-script-file instead of the hardcoded value <apteryx>default-script-file would by default to /gnu/store/...-pulseaudio.../etc/default.pa <mirai>lilyp: using default-script-file defeats the purpose of having a /etc/pulse/default.pa though <apteryx>while our configuration produced it with the correct #include line under /etc/pulse/default.pa <mirai>or for that matter, defeats the purpose of guix crafting a new default.pa (where it ends up placed doesn't really matter) <mirai>well, /etc/pulse/default.pa is a symlink to a /gnu/store item so it's already controlled by guix <lilyp>ahh, right, if the script files are empty, guix just mirrors the default, forgot about that <leg7[m]>Can someone help me debug my config.scm? I'm trying to get my system up and running but guix system init fails <leg7[m]>Looks like the problem is in file-systems <nckx>leg7[m]: Your indentation is misleading. %base-file-systems is inside your list, not an argument to append. <lechner>also, is the ESP label a uuid or a FAT label? <nckx>Also, (mapped-devices -> (list mapped devices; else you're calling it as a procedure. <nckx>leg7[m]: Are you perchance using emacs? <apteryx>vagrantc: just sent the change I suggest for "gnu: u-boot-am335x-boneblack: Revert to old name" via send-email <leg7[m]>Are you asking for the repl and lisp features? <leg7[m]>Can you send me the fixed version? I tried your changes and the error persists <lechner>nckx / btw, moving the ESP mount point was a cake. guix even created the mount point <lechner>leg7[m] / why not start with a simpler config, and work from there? <nckx>leg7[m]: I was asking only because C-M-q is handy to spot (well, by repairing it) misleading indentation. <lechner>nckx / and the ESP ended up being mounted in both places (before reboot) <leg7[m]>lechner: I just took the default desktop.scm config and modified it to work with my disk setup <lechner>ACTION recommends paredit, with a cheat sheet <nckx>leg7[m]: No, I can't easily edit it right now. Which error? <nckx>Paredit is great until you type #; and blood starts spraying from your eyes. <nckx>* in certain situations, results may vary, this is not medical advice. <leg7[m]>For the mapped-devies section I don't see the problem (I'm a lisp noob) <nckx>You're calling mapped-devices as a procedure: (foo) is like foo() in C. <nckx>At least IIRC. I don't have the paste in front of me anymore. <leg7[m]>Ugh ok I tought it was a function because it's like that in the default config I think <nckx>But you had something like (mapped-devices file-systems), no? <nckx>Shouldn't it just be (dependencies mapped-devices)? <nckx>leg7[m]: Which default config? <nckx>That uses (dependencies mapped-devices). <leg7[m]>Are you talking about the swap section? <nckx>Wherever you wrote (mapped-devices …). <lechner>Hi, what is the best way to invoke tests with a guile-build-system in view of #58365, please? <nckx>I think ‘append’ would work there, although I'm not in a position to test. <leg7[m]><leg7[m]> "20221228_213532_1771394971319422..." <- I don't understand because it looks like the error isn't even about the config.scm <nckx>You were trying to pass a nested list as file-system field. <nckx>(list A B C %base-file-systems) => (list A B C (list D E F …)) <nckx>Hence why turning it into (append (list A B C) %base-file-systems) by moving one ‘)’ fixes it. <nckx>ACTION can't view images right now. <nckx>ACTION is reinstalling Guix. <leg7[m]>Just make a mental image from the binary 😎 <leg7[m]>nckx: Oh I see because %base-file-system is a list <nckx>Aha, the fact that you didn't type the s implies that you didn't notice that. <nckx>ACTION can't even see emojos, so you can be as rude as you like. <leg7[m]>I read it in the docs but didn't realize I was making a nested list <bjc>what font do you use to get emoji anyway? the usual stuff i don't see in guix <leg7[m]>nckx: How are you chatting on here? Irc? <nckx>bjc: I use font-google-noto. <bjc>i didn't know noto had it built in. that's nice <nckx>leg7[m]: weechat. I normally use hexchat. <bjc>manjaro had a separate noto-emoji package, and i just assumed <nckx>Yeah, I was just going to respond to that, but was first checking whether it wasn't some new Guix package :-) <nckx>Noto is huge, so if it could feasibly be split into an :emojo output et al, that would be nice. <bjc>holy moly. noto is 736 megs <nckx>Is there a way to get emojoes on the (vanilla) Linux framebuffer? <nckx>bjc: It's notoriously for being huge (pun legitimately unintended), but it does do what it promises. I don't think I've ever been unable to read something with it installed, barring bugs. <bjc>yeah, it's worth the disk space to me to be able to render unicode <leg7[m]>Ok now I get an unbound variable error in the swap-devices section <leg7[m]>I guess the website is worse for you <nckx>Oof, 0x0 curled so nicely, this one's an HTML mess. Sec. <leg7[m]>It's because I have to use wgetpaste on the iso <nckx>Thanks. The bpaste HTML messed up the indentation to boot. <nckx>So, it took a while, but I think I've got it figured out. <nckx>1. You simply have an extra ‘)’ after ‘%base-file-systems’, there should be only 2. This probably makes the whole file invalid, so errors will be weird. <lechner>Hi, what type of inputs are prerequisites that are only used in tests, please? <nckx>2. You still have (mapped-devices file-systems). That should be (append mapped-devices file-systems) to *build* correctly. I don't know if it will *boot* correctly, though, because I don't use swap files. <nckx>If you make those two changes, Guix will accept your file and should start building. <nckx>lechner: There is no separate category for test inputs, if that's what you mean. In practice, they are usually native-inputs. <nckx>(Tests are usually disabled when cross-building.) <nckx>leg7[m]: Guix's curl segfaults? That might be worth a bug report. <nckx>error: failed to get canonical path of `/dev/sda1:/dev/sdb1'. Hmm. <lechner>nckx / do we run tests on the build artifacts or on the output? <nckx>That face when you realise you have *no idea* how you've been installing your bootloader all these years. <nckx>lechner: What's the difference? <nckx>I've only ever heard one as a wannabe-erudite synonym for the other. <nckx>lechner: This is a multi-device file system. <nckx>It might be ‘links’ speaking, but that page is asking me to look at the implementation of a tool I've never heard of. <nckx>I like this standard already. <nckx>Anyway, I'll give the Guix answer, although it will probably miss any subtlety you meant to convey: tests are run before the 'install phase *by default*, but some packages override that. But package tests are always run in the build environment, not separately, not after some undefined integration. <nckx>Yes, some packages pass their tests and then fail to run when installed. <panosale1>hi guys, any idea why X doesn't start after installing guix? i can only access TTY <nckx>lechner: And it usually implies some variable was set during the build, and the ‘fix’ is to wrap the executable(s) to keep that variable set at later run times. <bjc>panosale1: are you using ‘%desktop-services’? <nckx>panosale1: I won't be able to help, but we'll need more information on how you configured X to start, and what you're doing to make it (not) start, and how it fails. <apteryx>nckx: one exception are the python packages (the test run after installation) <nckx>But still in the cozy warm primordial soup of the build environment. <panosale1>bjc, nckx: im using 1.4.0 (not latest). i used the terminal graphical installation and picked XFCE. then nomodeset in kernel parameters. does that help? i haven't touched anything else <nckx>It certainly implies that it *should* work, and that it doesn't sound like user error :-( I can't say more than that. <bjc>ah, sorry, i haven't used the installer for Quite Some Time™, so i can't really help <bjc>but what nckx said. have you tried gnome? that tends to have the best support. it's possible that xfce has some issues with the installer <nckx>I don't even know where X/the default DM logs, but I'd look for those logs to see why it fails to start X. <nckx>bjc: I really really hope we didn't ship a broken XFCE installer. <bjc>me too. i'm just grasping at straws here, though <nckx>I admit to not testing that, only GNOME. <panosale1>could it be that my gpu is at fault somehow? though im using nomodeset <nckx>It's certainly possible. ‘nomodeset’ works around a specific issue but isn't a magical ‘make everything work, ever’ switch. <bjc>it could be, depending on drivers. i've only ever used the built-in graphics on intel with guix <nckx>Luckily, I'm also clueless about GPUs, so can offer the same level of support here! Which GPU is this? <nckx>I can't even guess at which brand that is. <bjc>i don't think the amd drivers have blobs, or at least didn't use to <bjc>that's a shame, and would definitely pose a problem with guix <nckx>bjc: Isn't AMD notorious for their nonfree firmware blobs? Or am I confusing? Yes, all modern GPUs are, but I thought AMD was the dishonest (‘free drivers uwu’) one. <bjc>i thought that was nvidia's thing when they "open sourced" their drivers a few months ago <nckx>I think this just proves they all suck. <panosale1>example: you can't use wayland with nvidia's drivers <bjc>i think you can, finally, use wayland with nvidia, but that's a very recent development <panosale1>bjc: correct, but that just proves my point :) <bjc>we're all just proving nckx's point: they all suck ;) <nckx>If you know of another free distribution that supports X on this card, please do let us know, and let's try to debug & fix it. But if it's not possible, I'm afraid supporting it's outside of the scope of Guix. <apteryx>ACTION is happy with their 2006 8800 GTS nvidia card (except for a recent regression in the kernel) <panosale1>nckx: im trying a GNOME installation now just to be sure. im 95% sure it's a driver thing. i will let you know :) <nckx>And I'm an idiot: I got so spooked by my GRUB error that I forgot I hadn't mounted /mnt/boot. It doesn't *need* to get the canonical path of /mnt, silly. <apteryx>the new dark theme for mumi looks nice! <bjc>say i have a new package that requires definitions for 3 or 4 other packages. do i submit a single patch with all of them, or a patch per-package and somehow note the dependencies?