21:00:01 <ignatenkobrain> #startmeeting Rust SIG (2017-03-15) 21:00:01 <zodbot> Meeting started Wed Mar 15 21:00:01 2017 UTC. The chair is ignatenkobrain. Information about MeetBot at http://wiki.debian.org/MeetBot. 21:00:01 <zodbot> Useful Commands: #action #agreed #halp #info #idea #link #topic. 21:00:01 <zodbot> The meeting name has been set to 'rust_sig_(2017-03-15)' 21:00:08 <ignatenkobrain> #meetingname rust-sig 21:00:08 <zodbot> The meeting name has been set to 'rust-sig' 21:00:12 <ignatenkobrain> #chair ignatenkobrain jistone 21:00:12 <zodbot> Current chairs: ignatenkobrain jistone 21:00:15 <ignatenkobrain> #topic Agenda 21:00:19 <ignatenkobrain> #link https://docs.pagure.org/fedora-rust.sig/meetings/2017-03-15.html 21:00:22 <ignatenkobrain> #info (1) Roll Call 21:00:25 <ignatenkobrain> #info (2) Packaging Guidelines 21:00:28 <ignatenkobrain> #info (3) State of affairs and future plans 21:00:30 <ignatenkobrain> #info (4) Open Floor 21:00:33 <ignatenkobrain> #topic Roll Call 21:00:38 <ignatenkobrain> .hello ignatenkobrain 21:00:39 <zodbot> ignatenkobrain: ignatenkobrain 'Igor Gnatenko' <ignatenko@redhat.com> 21:00:40 <jistone> .hello jistone 21:00:40 <Pharaoh_Atem> .hello 21:00:42 <zodbot> Pharaoh_Atem: (hello <an alias, 1 argument>) -- Alias for "hellomynameis $1". 21:00:44 <zodbot> jistone: jistone 'Josh Stone' <jistone@redhat.com> 21:00:46 <Pharaoh_Atem> .hello ngompa 21:00:50 <zodbot> Pharaoh_Atem: ngompa 'Neal Gompa' <ngompa13@gmail.com> 21:00:51 <mich181189> .hellp mich181189 21:00:57 <ignatenkobrain> mich181189: hellp? :D 21:00:58 <mich181189> .hello mich181189 21:00:59 <zodbot> mich181189: mich181189 'Michael Cullen' <michael@cullen-online.com> 21:01:08 <mich181189> hellps if I can spell! 21:01:08 <Akien> .hello akien 21:01:09 <zodbot> Akien: akien 'Rémi Verschelde' <rverschelde@gmail.com> 21:01:31 <ignatenkobrain> #topic Packaging Guidelines 21:01:36 <ignatenkobrain> #link https://pagure.io/fedora-rust/sig/pull-request/9 21:01:43 <ignatenkobrain> this is from last week 21:01:55 <ignatenkobrain> I think I addressed issues 21:02:12 <ignatenkobrain> ohh, probably not BuildRequires =( 21:04:09 <jistone> ok, are there questions about that? 21:04:43 <ignatenkobrain> I think it's just minor to make it as subsection and provide example 21:04:51 <ignatenkobrain> any other points? 21:05:01 <ignatenkobrain> btw, I added rust- prefix in current packages 21:05:04 <ignatenkobrain> everywhere 21:05:13 <ignatenkobrain> and fixed rust2rpm to generate proper names 21:05:20 <Akien> Sounds good. 21:05:35 <mich181189> cool 21:05:37 <Pharaoh_Atem> the current proposed structure looks good to me 21:05:51 <jistone> "Packagers **MUST** use ``with`` rich dependency operator" 21:06:08 <jistone> I still would like to try the "poor" alternative 21:06:17 <ignatenkobrain> jistone: yeah, let's talk about this in next topic =) 21:06:35 <ignatenkobrain> "poor" would not be in upstream guidelines, but fedora ones 21:07:13 <jistone> what does upstream mean here? the nebulous collection of rpm distros? 21:07:16 <Pharaoh_Atem> yes 21:07:49 <Pharaoh_Atem> and even for downstream Fedora, I'd like to ensure that packages can easily transition to the correct form 21:07:56 <ignatenkobrain> jistone: upstream == proper (the fedora-rust on pagure) 21:08:25 <ignatenkobrain> #action ignatenkobrain to make BuildRequires as sub-section and add example 21:08:28 <luke_nukem> Hi all. Bit late due to system issues (nvidia, 4.10 kernel) 21:08:40 <Pharaoh_Atem> hey Luke 21:08:50 <ignatenkobrain> Pharaoh_Atem: jistone: I don't have any updates on releng view at this moment =( 21:09:03 <jistone> I guess it just seems weird to say MUST for something that doesn't even work anywhere (yet) 21:09:13 <ignatenkobrain> jistone: it does work 21:09:18 <ignatenkobrain> how did I built 100+ packages? :P 21:09:21 <jistone> not in any distro, I mean 21:09:39 <Pharaoh_Atem> well, we haven't proposed guidelines to include in the monolith of packaging guidelines yet for a reason 21:09:43 <jistone> not many people run ignatenkobrain-OS 21:10:01 <ignatenkobrain> jistone: you don't need special OS, there's repo with everything what you need ;) 21:10:13 <jistone> you get my point 21:10:23 <ignatenkobrain> but let's discuss this after in next topic (after good news) 21:10:43 <ignatenkobrain> #topic State of affairs and future plans 21:11:08 <ignatenkobrain> #info ripgrep has been updated to 0.5.0 🕺 21:11:14 <ignatenkobrain> #info "Target RPM" feature has been tested on COPR dev instance, a bit more work is needed to get in prod 21:11:20 <ignatenkobrain> #info libdnf and dnf-plugins-core patches were merged upstream 21:12:17 <ignatenkobrain> so, only 2 patches are now needed (rpm and libsolv) 21:12:21 <ignatenkobrain> libsolv patch is oneliner 21:12:30 <jistone> oh, that's an emoji! pagure shows junk in there like đş 21:12:33 <Pharaoh_Atem> and what about the rpm patch? 21:12:34 <jistone> :) 21:12:50 <ignatenkobrain> yeah, that's why it took me time to copy it from terminal ;) 21:13:19 * ignatenkobrain should report bug against pagure 21:13:31 <ignatenkobrain> Pharaoh_Atem: about RPM patch, I don't think there are any news 21:13:39 <ignatenkobrain> Florian didn't wrote full patch yet 21:14:03 <ignatenkobrain> but I have all test-cases prepared 21:14:13 <Pharaoh_Atem> that's this, right? https://github.com/rpm-software-management/rpm/pull/164 21:14:30 <ignatenkobrain> https://github.com/rpm-software-management/rpm/pull/164/commits/45777d2ebf98ff2d3831c33fbfbfe900b1c2dc92 21:14:37 <ignatenkobrain> yeah, this one is initial draft 21:15:27 <Pharaoh_Atem> will Florian be able to work on this anytime soon? 21:15:28 <ignatenkobrain> so, what are the plans/targets? 21:15:36 <ignatenkobrain> Pharaoh_Atem: yes, it's still planned for 4.14 21:16:47 <ignatenkobrain> should we try to package something bigger or start working more on integrating in distro or ... ? 21:17:07 <ignatenkobrain> multiple things in parallel? 21:17:08 <Pharaoh_Atem> I think we should work on getting downstream distro integration going first 21:17:29 <Pharaoh_Atem> we can certainly keep packaging things, but it's going to be hard to really progress without the integration work done 21:17:37 <jistone> yeah, I think "100+ packages" is plenty proof of concept :) 21:18:00 <Pharaoh_Atem> we're already going to make tons of reviewers sad when the deluge of rust packages hits the review queue :) 21:18:15 <jistone> isn't that part of what a SIG is for? 21:18:21 <Pharaoh_Atem> yes 21:18:22 <jistone> so we review Rust packages ourselves? 21:18:27 <ignatenkobrain> yeah :D 21:18:30 <Pharaoh_Atem> yep :P 21:18:48 <mich181189> s/sad/busy/ :-P 21:19:56 <ignatenkobrain> #info we need to start working on integration into distros 21:20:06 <mich181189> I wonder how long it will take for someone to complain about the static libs... 21:20:09 <ignatenkobrain> let's get back to the topic 21:20:33 <ignatenkobrain> jistone: if we want it now, there's no other option apart from adding that bunch of provides and so on 21:20:34 <jistone> mich181189, I've handled such complaints already, before we even had rustc 21:20:42 <luke_nukem> ignatenkobrain: what does the integration need? 21:21:05 <Pharaoh_Atem> luke_nukem: on your side (openSUSE), the main thing is that you'll need rpm, libsolv, and libzypp patches 21:21:11 <Pharaoh_Atem> and perl-BSSolv patches 21:21:15 <jistone> luke_nukem, given there aren't proper rich deps, or not "with", for now we have to figure out a fallback 21:21:22 <ignatenkobrain> yeah 21:21:29 <luke_nukem> Ah, that sort of integration. 21:21:45 <ignatenkobrain> jistone: main point about that hackish stuff is how to handle >=0.1,<0.4 21:21:59 <jistone> in your 100+, did anything need that? 21:22:05 <ignatenkobrain> jistone: 3-5 packages 21:22:20 <mich181189> given most rust deps seem to be advisory (I've only had to make code changes on one package to change versions and it was a couple of years of upgrade) and given it's build-time only, does it even matter that much? 21:22:27 <jistone> hmm, I know num's serde dep is like that, actually 21:22:56 <ignatenkobrain> probably we should just take first and use it 21:23:04 <ignatenkobrain> i.e. only Req: foo >=0.1 21:23:20 <ignatenkobrain> and then if someone complains -- they go to releng and implement support for rich deps 21:23:38 <Pharaoh_Atem> for legacy, we can fall back to Req >= + Req < 21:23:58 <Pharaoh_Atem> the worst thing that happens is that too many things get installed 21:24:03 <jistone> or bump it to the newest we can, foo >=0.1,<0.4 -> crate(foo-0.3) >= 0.1 21:24:11 <ignatenkobrain> jistone: manually? 21:24:26 <jistone> in theory, that could be automatic 21:24:31 <ignatenkobrain> nope 21:24:45 <ignatenkobrain> well, only if you have 2 21:24:51 <ignatenkobrain> otherwise parsing gets very complicated 21:24:53 <Pharaoh_Atem> jistone: it can't because something has to make the decision on how the versioning construct should look 21:25:05 <jistone> ok 21:25:05 <Pharaoh_Atem> and depending on how wide the net is, that could get really screwy 21:25:06 <ignatenkobrain> because you need to find highest bound 21:25:43 <jistone> "we can fall back to Req >= + Req <" 21:25:45 <Pharaoh_Atem> ignatenkobrain, jistone: my suggestion for "legacy" behavior is just do Req >= + Req < 21:25:48 <jistone> is that workable? 21:25:59 <jistone> then fine 21:26:14 <ignatenkobrain> jistone: sometimes that will pull 2 dependencies which is below range and above :D 21:26:14 <Pharaoh_Atem> it's a good short-term plan, as long as we ignore feature deps 21:26:24 <ignatenkobrain> but will not pull dep in the middle 21:26:38 <Pharaoh_Atem> because feature deps will require rich deps 21:27:05 <ignatenkobrain> so I think just doing Req: >= is workable 21:27:05 <Pharaoh_Atem> I fully expect that we wouldn't be packaging things this way for very long in Fedora 21:27:16 <ignatenkobrain> at least something will be pulled in 21:27:42 <jistone> hopefully we would have such a wide spread of versions to miss the middle that's actually wanted 21:28:16 <Pharaoh_Atem> though, given the experience of what happens in golang, I think it's not very likely that we'll package libraries for EPEL7 21:28:19 <jistone> "at least something will be pulled in" doesn't help if it doesn't support the latest 21:28:20 <ignatenkobrain> I'm fine with having multiple reqs as well. just don't want to be the one who will be fixing it :) 21:28:28 <Pharaoh_Atem> they get removed too often :/ 21:28:54 <Pharaoh_Atem> I expect to see rust and cargo move out of EPEL and into RHEL proper this year 21:28:58 <Pharaoh_Atem> or maybe next year 21:29:09 <ignatenkobrain> who volunteers to do work on Req+Req in rust2rpm? 21:29:20 <ignatenkobrain> aand genegaring multiple provides 21:29:29 <jistone> Pharaoh_Atem, we've made no such commitment for RHEL 21:29:31 <ignatenkobrain> basically, implementing "legacy" mode 21:29:34 <Pharaoh_Atem> don't we already generate the provides? 21:29:46 <ignatenkobrain> Pharaoh_Atem: we generate only crate(x) 21:29:48 <Pharaoh_Atem> jistone: when the next ESR after 52 hits, it'll get pulled in 21:30:06 <ignatenkobrain> but not crate(x) + crate(x-0) + crate(x-0.1) + crate(x-0.1.0) 21:30:25 <ignatenkobrain> because based on those provides we can generate ranges 21:30:26 <jistone> Pharaoh_Atem, doesn't mean you'll see it 21:30:33 <ignatenkobrain> or wait 21:30:34 <ignatenkobrain> hmm 21:30:46 <ignatenkobrain> yeah, you don't need provides 21:30:49 <ignatenkobrain> only requires 21:31:26 <jistone> how? 21:31:41 <jistone> you only want version ranges for everything? 21:31:54 <ignatenkobrain> now I'm completely lost 21:32:04 <mich181189> I was lost a long time ago 21:32:05 <ignatenkobrain> let's agree how it should look like 21:32:06 <jistone> why don't we need semver provides? 21:32:22 <ignatenkobrain> ~0.1.80 21:32:26 <ignatenkobrain> how this will look like? 21:32:41 <jistone> crate(foo-0.1) >= 0.1.80 21:33:22 <ignatenkobrain> okay, ^2.21 ? 21:33:38 <jistone> crate(foo-2) >= 2.21 21:33:45 <ignatenkobrain> Pharaoh_Atem: ^^ 21:34:26 <jistone> and something would provide both crate(foo-2) and crate(foo-2.21) 21:34:31 <jistone> (or newer for the latter) 21:35:00 * ignatenkobrain is still looking for volunteer :P 21:35:39 <luke_nukem> ignatenkobrain: Err, volunteer for what? 21:35:49 <jistone> making that work :) 21:35:54 <ignatenkobrain> luke_nukem: to implement this generator in rust2rpm 21:35:58 <luke_nukem> Sorry, trying to keep track while in class :) 21:36:14 <jistone> I probably should volunteer ... right after I do the other items I haven't touched... :/ 21:36:16 <jistone> sorry 21:36:38 <luke_nukem> ignatenkobrain: Ah, I'll add that to my "todo.txt" and have a look soon (day or so) 21:36:48 * ignatenkobrain is not in rush, he is perfectly happy with playground repo :D 21:36:49 <jistone> how about, I volunteer to file an issue, with examples 21:37:23 <ignatenkobrain> #action jistone to file issue about "legacy" mode with examples 21:37:48 <luke_nukem> Cool 21:38:06 <ignatenkobrain> do we have some other target? 21:38:19 <luke_nukem> Hmm, I like the idea of using semver rather than >= + < 21:38:37 <ignatenkobrain> e.g. to re-bootstrap cargo with natively-packaged deps? :P 21:38:42 <ignatenkobrain> jistone: ^^ 21:38:48 <Akien> That would be nice indeed. 21:39:34 <jistone> basically, dropping the cargo-vendor tarball 21:39:39 <ignatenkobrain> or... are there some other useful tools like ripgrep? 21:39:42 <ignatenkobrain> jistone: yeah 21:40:13 <jistone> a lot of other things that I 'cargo install' are cargo addons 21:40:21 <jistone> which probably want cargo as a crate themselves 21:40:44 <jistone> do you have rustfmt? 21:41:07 <ignatenkobrain> I do have 21:41:26 <ignatenkobrain> I think I even ported it to newer versions of libs :P 21:41:50 <ignatenkobrain> jistone: https://github.com/rust-lang-nursery/rustfmt/commits/master?author=ignatenkobrain 21:42:00 <jistone> cool 21:42:52 <ignatenkobrain> talking about cargo... 21:43:02 <luke_nukem> Quick question about packaging rustc itself - have you experienced circular building with rust requiring cargo whcih requires rust? 21:43:05 <ignatenkobrain> I think only 1-2 top-level deps are missing 21:43:28 <ignatenkobrain> which means 4-5 deps in total are missing 21:43:44 <ignatenkobrain> so we're pretty much have everything in place to try it out 21:44:16 <jistone> luke_nukem, that's only a problem for bootstrap under rustbuild 21:45:13 <jistone> (1) build rust with upstream rust+cargo (2) build cargo with local rust and upstream cargo (3) build rust locally (4) build cargo locally 21:46:10 <luke_nukem> jistone: I think it may be more to do with how OBS is working at the moment, if either cargo or rust builds, then it triggers a rebuild of the other - infinite loop :-| 21:46:20 <jistone> ignatenkobrain, if you look at cargo.spec, you can see where I unpack the vendor and setup a .cargo/config 21:46:26 <jistone> luke_nukem, cute 21:47:00 <jistone> luke_nukem, we have koschei to attempt rebuilds, but that doesn't go in the buildroot, so they don't end up triggering each other 21:47:15 <luke_nukem> Hmm.. 21:47:39 <luke_nukem> I need to duck out early - next class. Thanks all - will be in the usual channels. 21:47:56 <jistone> ignatenkobrain, I think it wouldn't be hard to make cargo.spec conditionally point to the system repo instead 21:48:10 <ignatenkobrain> jistone: should not be hard I suppose 21:48:13 <ignatenkobrain> it's still same 21:48:14 <ignatenkobrain> %cargo_prep 21:48:39 <Pharaoh_Atem> the actual problem is that he has bootstrap and real package as separate specs 21:48:48 <Pharaoh_Atem> OBS cycles back and forth until all conditions are satisfied 21:48:49 <ignatenkobrain> rust -> cargo -> rust-rpm-macros -> rust -> cargo -> deps -> cargo 21:48:52 <ignatenkobrain> ? ;) 21:50:04 <ignatenkobrain> note that we're slowly running out of time (we have 10 mins) 21:50:27 <ignatenkobrain> jistone: should I finish remaining crates and try cargo rebuild? 21:50:39 <jistone> (and it's good practice to try and end a little early) 21:51:00 <jistone> ignatenkobrain, sounds like a good next step 21:51:33 <ignatenkobrain> #action ignatenkobrain to package remaining cargo deps and try re-bootstrap using system libraries 21:51:44 <ignatenkobrain> some other useful tools? 21:51:58 <jistone> maybe xi? https://github.com/google/xi-editor 21:52:24 <Pharaoh_Atem> oh boy 21:52:26 <Pharaoh_Atem> gtk-rs 21:52:41 <Pharaoh_Atem> oh wait 21:52:47 <Pharaoh_Atem> nope, gtk frontend is written in Vala 21:52:59 <ignatenkobrain> google.. rust.. 21:53:08 <Pharaoh_Atem> Google does ALL the things 21:53:10 <ignatenkobrain> breaking templates 21:53:20 <jistone> maybe librsvg2 2.41 though, that needs gtk-rs 21:53:50 <jistone> "This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google." 21:54:02 <Pharaoh_Atem> one of those 20% projects, I guess 21:54:06 <jistone> yeah 21:54:18 <ignatenkobrain> librsvg2 sounds fun 21:54:33 <Pharaoh_Atem> gtk-rs is quite a lot of stuff, though 21:54:56 <ignatenkobrain> okay, sounds like a plan for week at least 21:54:58 <Pharaoh_Atem> though doing those opens up nice things like systemd-manager 21:55:05 <Pharaoh_Atem> https://github.com/mmstick/systemd-manager 21:55:20 <jistone> wat 21:55:25 <jistone> that one is new to me 21:55:52 <Pharaoh_Atem> !!! 21:56:00 <Pharaoh_Atem> this guy wrote a cargo subcommand to generate debs: https://github.com/mmstick/cargo-deb 21:56:30 <jistone> well there's debcargo now too 21:56:43 <Pharaoh_Atem> is there nothing on the rpm side? 21:56:47 <jistone> that's us 21:57:09 <jistone> rust2rpm 21:57:20 <jistone> it just happens to be written in python 21:57:23 * jistone shrugs 21:57:24 <jistone> :) 21:57:31 <Pharaoh_Atem> heh 21:57:39 <ignatenkobrain> #topic Open Floor 21:57:50 <ignatenkobrain> jistone: time to rewrite rust2rpm in rust? ;) 21:58:00 <jistone> rust 1.16 comes out tomorrow 21:58:15 <ignatenkobrain> jistone: use #info 21:58:22 <jistone> #info rust 1.16 comes out tomorrow 21:58:29 <ignatenkobrain> aha =) 21:58:37 <mich181189> ignatenkobrain: that thought had occurred to me 21:59:10 <ignatenkobrain> mich181189: it will make bootstrap procedure too complicated 21:59:22 <ignatenkobrain> s/too / 21:59:29 <ignatenkobrain> s/too // 21:59:40 <ignatenkobrain> anyway, let's try to squash in 1 hour 21:59:43 <mich181189> yeah... but given the spec file is almost the starting point... 21:59:44 <ignatenkobrain> at least once :D 21:59:48 <mich181189> :-) 22:00:12 <ignatenkobrain> #endmeeting