Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package greetd for openSUSE:Factory checked in at 2021-11-01 18:35:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/greetd (Old) and /work/SRC/openSUSE:Factory/.greetd.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "greetd" Mon Nov 1 18:35:45 2021 rev:7 rq:928516 version:0.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/greetd/greetd.changes 2021-10-05 22:34:20.754920850 +0200 +++ /work/SRC/openSUSE:Factory/.greetd.new.1890/greetd.changes 2021-11-01 18:36:02.737347216 +0100 @@ -1,0 +2,16 @@ +Sun Oct 24 13:46:49 UTC 2021 - Denys Kondratenko <stdden@opensuse.org> + +- Version bump to 0.8.0 + * deps: update tokio to 1.0 + * deps: update nix and other dependencies + * Ensure initial session is only run once. + * recommend making config world readable rather than setting owner + * Update lock file + * readme: Add discuss section + * docs: Fix scdoc syntax for greetd.5 + * rustfmt: Change merge_imports to imports_granularity + * ipc: Fix tokio codec + * Add makefile for man pages + * greetd: add terminal switch flag configuration option + +------------------------------------------------------------------- Old: ---- greetd-0.7.0.obscpio New: ---- greetd-0.8.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ greetd.spec ++++++ --- /var/tmp/diff_new_pack.nUnfuz/_old 2021-11-01 18:36:03.537347674 +0100 +++ /var/tmp/diff_new_pack.nUnfuz/_new 2021-11-01 18:36:03.541347676 +0100 @@ -17,7 +17,7 @@ Name: greetd -Version: 0.7.0 +Version: 0.8.0 Release: 0 Summary: Minimal and flexible login manager daemon License: GPL-3.0-only ++++++ _service ++++++ --- /var/tmp/diff_new_pack.nUnfuz/_old 2021-11-01 18:36:03.565347690 +0100 +++ /var/tmp/diff_new_pack.nUnfuz/_new 2021-11-01 18:36:03.569347693 +0100 @@ -2,7 +2,7 @@ <service name="obs_scm" mode="disabled"> <param name="url">https://git.sr.ht/~kennylevinsen/greetd</param> <param name="scm">git</param> - <param name="revision">0.7.0</param> + <param name="revision">0.8.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> </service> ++++++ greetd-0.7.0.obscpio -> greetd-0.8.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/.gitignore new/greetd-0.8.0/.gitignore --- old/greetd-0.7.0/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/greetd-0.8.0/.gitignore 2021-09-05 21:15:06.000000000 +0200 @@ -0,0 +1,2 @@ +/target +**/*.rs.bk diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/Cargo.lock new/greetd-0.8.0/Cargo.lock --- old/greetd-0.7.0/Cargo.lock 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/Cargo.lock 2021-09-05 21:15:06.000000000 +0200 @@ -1,122 +1,125 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "agreety" -version = "0.6.0" +version = "0.8.0" dependencies = [ - "enquote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", - "greetd_ipc 0.6.0", - "inish 0.1.0", - "nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "enquote", + "getopts", + "greetd_ipc", + "inish", + "nix", + "rpassword", ] [[package]] name = "arc-swap" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b585a98a234c46fc563103e9278c9391fde1f4e6850334da895d27edb9580f62" [[package]] name = "async-trait" version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26c4f3195085c36ea8d24d32b2f828d23296a9370a28aa39d111f6f16bef9f3b" dependencies = [ - "proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "bytes" -version = "0.5.4" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" [[package]] name = "cc" version = "1.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "404b1fe4f65288577753b17e3b36a04596ee784493ec249bf81c7f2d2acd751c" [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] -name = "enquote" -version = "1.0.3" +name = "cfg-if" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "fakegreet" -version = "0.6.0" -dependencies = [ - "greetd_ipc 0.6.0", - "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "fnv" -version = "1.0.7" +name = "enquote" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ec878a5d2f3b6e9eaee72373dd23414cfc7d353104741471bec712ef241a66e" [[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "fakegreet" +version = "0.8.0" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "greetd_ipc", + "serde", + "thiserror", + "tokio", ] [[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "getopts" version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" dependencies = [ - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width", ] [[package]] name = "greetd" -version = "0.6.0" +version = "0.8.0" dependencies = [ - "async-trait 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", - "enquote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", - "greetd_ipc 0.6.0", - "inish 0.1.0", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pam-sys 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.53 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "users 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "async-trait", + "enquote", + "getopts", + "greetd_ipc", + "inish", + "libc", + "nix", + "pam-sys", + "serde", + "serde_json", + "thiserror", + "tokio", + "users", ] [[package]] name = "greetd_ipc" -version = "0.6.0" +version = "0.8.0" dependencies = [ - "async-trait 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.53 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "async-trait", + "serde", + "serde_json", + "thiserror", + "tokio", ] [[package]] @@ -124,403 +127,283 @@ version = "0.1.0" [[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "itoa" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" [[package]] name = "libc" -version = "0.2.70" +version = "0.2.82" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89203f3fba0a3795506acaad8ebce3c80c0af93f994d5a1d7a0b1eeb23271929" [[package]] name = "log" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10", ] [[package]] name = "memchr" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] name = "mio" -version = "0.6.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "mio-named-pipes" -version = "0.1.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e50ae3f04d169fcc9bde0b547d1c205219b7157e07ded9c5aff03e0637cb3ed7" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", - "miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "mio-uds" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "log", + "miow", + "ntapi", + "winapi", ] [[package]] name = "miow" -version = "0.2.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "socket2", + "winapi", ] [[package]] -name = "miow" -version = "0.3.3" +name = "nix" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ccba0cfe4fdf15982d1674c69b1fd80bad427d293849982668dfe454bd61f2" dependencies = [ - "socket2 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", ] [[package]] -name = "net2" -version = "0.2.34" +name = "ntapi" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a31937dea023539c72ddae0e3571deadc1414b300483fa7aaec176168cfa9d2" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi", ] [[package]] -name = "nix" -version = "0.17.0" +name = "once_cell" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.53 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" [[package]] name = "pam-sys" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd4858311a097f01a0006ef7d0cd50bca81ec430c949d7bf95cbefd202282434" dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "pin-project-lite" -version = "0.1.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827" [[package]] name = "proc-macro2" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8872cf6f48eee44265156c111456a700ab3483686b3f96df4cf5481c89157319" dependencies = [ - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid", ] [[package]] name = "quote" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42934bc9c8ab0d3b273a16d8551c8f0fcff46be73276ca083ec2414c15c4ba5e" dependencies = [ - "proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", ] [[package]] -name = "redox_syscall" -version = "0.1.56" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "rpassword" -version = "4.0.5" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d755237fc0f99d98641540e66abac8bc46a0652f19148ac9e21de2da06b326c9" dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi", ] [[package]] name = "ryu" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1" [[package]] name = "serde" version = "1.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c" dependencies = [ - "serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984" dependencies = [ - "proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "serde_json" version = "1.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993948e75b189211a9b31a7528f950c6adc21f9720b6438ff80a7fa2f864cea2" dependencies = [ - "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa", + "ryu", + "serde", ] [[package]] name = "signal-hook-registry" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" dependencies = [ - "arc-swap 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "arc-swap", + "libc", ] [[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "socket2" -version = "0.3.12" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 1.0.0", + "libc", + "winapi", ] [[package]] name = "syn" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4696caa4048ac7ce2bcd2e484b3cef88c1004e41b8e945a277e2c25dc0b72060" dependencies = [ - "proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "unicode-xid", ] [[package]] name = "thiserror" version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "467e5ff447618a916519a4e0d62772ab14f434897f3d63f05d8700ef1e9b22c1" dependencies = [ - "thiserror-impl 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e63c1091225b9834089b429bc4a2e01223470e3183e891582909e9d1c4cb55d9" dependencies = [ - "proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "tokio" -version = "0.2.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca04cec6ff2474c638057b65798f60ac183e5e79d3448bb7163d36a39cff6ec" dependencies = [ - "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-uds 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "pin-project-lite 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "once_cell", + "pin-project-lite", + "signal-hook-registry", + "tokio-macros", + "winapi", ] [[package]] name = "tokio-macros" -version = "0.2.4" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42517d2975ca3114b22a16192634e8241dc5cc1f130be194645970cc1c371494" dependencies = [ - "proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "unicode-width" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" [[package]] name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" [[package]] name = "users" -version = "0.9.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032" dependencies = [ - "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "log", ] [[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "winapi" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[metadata] -"checksum arc-swap 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b585a98a234c46fc563103e9278c9391fde1f4e6850334da895d27edb9580f62" -"checksum async-trait 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "26c4f3195085c36ea8d24d32b2f828d23296a9370a28aa39d111f6f16bef9f3b" -"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -"checksum bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" -"checksum cc 1.0.53 (registry+https://github.com/rust-lang/crates.io-index)" = "404b1fe4f65288577753b17e3b36a04596ee784493ec249bf81c7f2d2acd751c" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum enquote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ec878a5d2f3b6e9eaee72373dd23414cfc7d353104741471bec712ef241a66e" -"checksum fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" -"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -"checksum itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)" = "3baa92041a6fec78c687fa0cc2b3fae8884f743d672cf551bed1d6dac6988d0f" -"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" -"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" -"checksum mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)" = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" -"checksum mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e374eff525ce1c5b7687c4cef63943e7686524a387933ad27ca7ec43779cb3" -"checksum mio-uds 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" -"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "396aa0f2003d7df8395cb93e09871561ccc3e785f0acb369170e8cc74ddf9226" -"checksum net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)" = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" -"checksum nix 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" -"checksum pam-sys 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "cd4858311a097f01a0006ef7d0cd50bca81ec430c949d7bf95cbefd202282434" -"checksum pin-project-lite 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f7505eeebd78492e0f6108f7171c4948dbb120ee8119d9d77d0afa5469bef67f" -"checksum proc-macro2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)" = "8872cf6f48eee44265156c111456a700ab3483686b3f96df4cf5481c89157319" -"checksum quote 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "42934bc9c8ab0d3b273a16d8551c8f0fcff46be73276ca083ec2414c15c4ba5e" -"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" -"checksum rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f" -"checksum ryu 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1" -"checksum serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c" -"checksum serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)" = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984" -"checksum serde_json 1.0.53 (registry+https://github.com/rust-lang/crates.io-index)" = "993948e75b189211a9b31a7528f950c6adc21f9720b6438ff80a7fa2f864cea2" -"checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" -"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum socket2 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)" = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918" -"checksum syn 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)" = "4696caa4048ac7ce2bcd2e484b3cef88c1004e41b8e945a277e2c25dc0b72060" -"checksum thiserror 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "467e5ff447618a916519a4e0d62772ab14f434897f3d63f05d8700ef1e9b22c1" -"checksum thiserror-impl 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "e63c1091225b9834089b429bc4a2e01223470e3183e891582909e9d1c4cb55d9" -"checksum tokio 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8fdd17989496f49cdc57978c96f0c9fe5e4a58a8bddc6813c449a4624f6a030b" -"checksum tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f4b1e7ed7d5d4c2af3d999904b0eebe76544897cdbfb2b9684bed2174ab20f7c" -"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" -"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum users 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c72f4267aea0c3ec6d07eaabea6ead7c5ddacfafc5e22bcf8d186706851fb4cf" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/README.md new/greetd-0.8.0/README.md --- old/greetd-0.7.0/README.md 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/README.md 2021-09-05 21:15:06.000000000 +0200 @@ -46,7 +46,7 @@ # Create the greeter user sudo useradd -M -G video greeter -sudo chown -R greeter:greeter /etc/greetd/ +sudo chmod -R go+r /etc/greetd/ # Look in the configuration file `/etc/greetd/config.toml` and edit as appropriate. # When done, enable and start greetd @@ -56,3 +56,7 @@ ## How do I write my own greeter? All you need to do is an application that can speak the greetd IPC protocol, which is documented in `greetd-ipc(7)`. See gtkgreet or agreety for inspiration. + +# How to discuss + +Go to #kennylevinsen @ irc.libera.chat to discuss, or use [~kennylevinsen/greetd-devel@lists.sr.ht](https://lists.sr.ht/~kennylevinsen/greetd-devel). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/agreety/Cargo.toml new/greetd-0.8.0/agreety/Cargo.toml --- old/greetd-0.7.0/agreety/Cargo.toml 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/agreety/Cargo.toml 2021-09-05 21:15:06.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "agreety" -version = "0.6.0" +version = "0.8.0" authors = ["Kenny Levinsen"] edition = "2018" license = "GPL-3.0" @@ -10,7 +10,7 @@ [dependencies] greetd_ipc = { path = "../greetd_ipc", features = ["sync-codec"]} inish = { path = "../inish"} -rpassword = "4.0" +rpassword = "5.0" getopts = "0.2" enquote = "1.0.3" -nix = "0.17" \ No newline at end of file +nix = "0.19" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/fakegreet/.gitignore new/greetd-0.8.0/fakegreet/.gitignore --- old/greetd-0.7.0/fakegreet/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/greetd-0.8.0/fakegreet/.gitignore 2021-09-05 21:15:06.000000000 +0200 @@ -0,0 +1,2 @@ +/target +**/*.rs.bk diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/fakegreet/Cargo.toml new/greetd-0.8.0/fakegreet/Cargo.toml --- old/greetd-0.7.0/fakegreet/Cargo.toml 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/fakegreet/Cargo.toml 2021-09-05 21:15:06.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "fakegreet" -version = "0.6.0" +version = "0.8.0" authors = ["Kenny Levinsen"] edition = "2018" license = "GPL-3.0" @@ -10,5 +10,5 @@ [dependencies] serde = { version = "1.0", features = ["derive"] } greetd_ipc = { path = "../greetd_ipc", features = ["tokio-codec"] } -tokio = { version = "0.2", features = ["process"] } +tokio = { version = "1.0", features = ["process"] } thiserror = "1.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/fakegreet/src/main.rs new/greetd-0.8.0/fakegreet/src/main.rs --- old/greetd-0.7.0/fakegreet/src/main.rs 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/fakegreet/src/main.rs 2021-09-05 21:15:06.000000000 +0200 @@ -6,7 +6,7 @@ net::{UnixListener, UnixStream}, process::Command, task, - time::delay_for, + time::sleep, }; use crate::error::Error; @@ -82,7 +82,7 @@ || s.password != Some("password".to_string()) || response != Some("9".to_string()) { - delay_for(Duration::from_millis(2000)).await; + sleep(Duration::from_millis(2000)).await; return Err(Error::AuthError("nope".to_string())); } s.ok = true; @@ -94,7 +94,7 @@ if !self.inner.borrow().ok { return Err(Error::Error("not yet dammit".to_string())); } - delay_for(Duration::from_millis(5000)).await; + sleep(Duration::from_millis(5000)).await; Ok(()) } @@ -151,7 +151,7 @@ std::env::set_var("GREETD_SOCK", path); let _ = std::fs::remove_file(path); - let mut listener = + let listener = UnixListener::bind(path).map_err(|e| format!("unable to open listener: {}", e))?; let arg = env::args().nth(1).expect("need argument"); @@ -174,7 +174,7 @@ } } -#[tokio::main] +#[tokio::main(flavor = "current_thread")] async fn main() { let res = task::LocalSet::new() .run_until(async move { server().await }) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd/.gitignore new/greetd-0.8.0/greetd/.gitignore --- old/greetd-0.7.0/greetd/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/greetd-0.8.0/greetd/.gitignore 2021-09-05 21:15:06.000000000 +0200 @@ -0,0 +1,2 @@ +/target +**/*.rs.bk diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd/Cargo.toml new/greetd-0.8.0/greetd/Cargo.toml --- old/greetd-0.7.0/greetd/Cargo.toml 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/greetd/Cargo.toml 2021-09-05 21:15:06.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "greetd" -version = "0.6.0" +version = "0.8.0" authors = ["Kenny Levinsen"] edition = "2018" license = "GPL-3.0" @@ -11,16 +11,16 @@ debug = [] [dependencies] -nix = "0.17" +nix = "0.19" pam-sys = "0.5.6" -users = "0.9.1" +users = "0.11.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" greetd_ipc = { path = "../greetd_ipc", features = ["tokio-codec"] } inish = { path = "../inish" } libc = "0.2" -tokio = { version = "0.2", features = ["net", "sync", "macros", "signal", "rt-util", "io-util", "time"] } +tokio = { version = "1.0", features = ["net", "sync", "macros", "signal", "rt", "io-util", "time"] } getopts = "0.2" thiserror = "1.0" async-trait = "0.1" -enquote = "1.0.3" \ No newline at end of file +enquote = "1.0.3" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd/src/config/mod.rs new/greetd-0.8.0/greetd/src/config/mod.rs --- old/greetd-0.7.0/greetd/src/config/mod.rs 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/greetd/src/config/mod.rs 2021-09-05 21:15:06.000000000 +0200 @@ -5,6 +5,8 @@ use super::error::Error; +const RUNFILE: &str = "/run/greetd.run"; + #[derive(Debug, Eq, PartialEq)] pub enum VtSelection { Next, @@ -33,17 +35,20 @@ #[derive(Debug, Eq, PartialEq, Default)] pub struct ConfigTerminal { pub vt: VtSelection, + pub switch: bool, } #[derive(Debug, Eq, PartialEq)] pub struct ConfigGeneral { pub source_profile: bool, + pub runfile: String, } impl Default for ConfigGeneral { fn default() -> Self { ConfigGeneral { source_profile: true, + runfile: RUNFILE.to_string(), } } } @@ -100,7 +105,7 @@ }; Ok(ConfigFile { - terminal: ConfigTerminal { vt }, + terminal: ConfigTerminal { vt, switch: true }, default_session: ConfigSession { user: greeter_user, command: greeter, @@ -161,18 +166,31 @@ .map_err(|e| format!("could not parse vt number: {}", e))?, ), }, + switch: section + .get("switch") + .unwrap_or(&"true") + .parse() + .map_err(|e| format!("could not parse switch: {}", e))?, }), None => Err("no terminal specified"), }?; let general = match config.get("general") { - Some(section) => ConfigGeneral { - source_profile: section - .get("source_profile") - .unwrap_or(&"true") - .parse() - .map_err(|e| format!("could not parse source_profile: {}", e))?, - }, + Some(section) => { + let runfilestr = section.get("runfile").unwrap_or(&RUNFILE); + let runfile = maybe_unquote(runfilestr) + .map_err(|e| format!("unable to read general.runfile: {}", e))?; + + ConfigGeneral { + source_profile: section + .get("source_profile") + .unwrap_or(&"true") + .parse() + .map_err(|e| format!("could not parse source_profile: {}", e))?, + runfile, + } + } + None => Default::default(), }; @@ -288,7 +306,8 @@ config, ConfigFile { terminal: ConfigTerminal { - vt: VtSelection::Specific(1) + vt: VtSelection::Specific(1), + switch: true, }, default_session: ConfigSession { command: "agreety".to_string(), @@ -310,7 +329,8 @@ config, ConfigFile { terminal: ConfigTerminal { - vt: VtSelection::Next + vt: VtSelection::Next, + switch: true, }, default_session: ConfigSession { command: "agreety".to_string(), @@ -337,7 +357,8 @@ config, ConfigFile { terminal: ConfigTerminal { - vt: VtSelection::Specific(1) + vt: VtSelection::Specific(1), + switch: true, }, default_session: ConfigSession { command: "agreety".to_string(), @@ -364,7 +385,8 @@ config, ConfigFile { terminal: ConfigTerminal { - vt: VtSelection::Specific(1) + vt: VtSelection::Specific(1), + switch: true, }, default_session: ConfigSession { command: "agreety".to_string(), @@ -386,6 +408,7 @@ [terminal]\nvt = 1\n[default_session]\ncommand = \"agreety\" [general] source_profile = false +runfile = \"/path/to/greetd.state\" ", ) .expect("config didn't parse"); @@ -393,7 +416,8 @@ config, ConfigFile { terminal: ConfigTerminal { - vt: VtSelection::Specific(1) + vt: VtSelection::Specific(1), + switch: true, }, default_session: ConfigSession { command: "agreety".to_string(), @@ -401,6 +425,7 @@ }, general: ConfigGeneral { source_profile: false, + runfile: "/path/to/greetd.state".to_string(), }, initial_session: None, } @@ -433,7 +458,8 @@ config, ConfigFile { terminal: ConfigTerminal { - vt: VtSelection::Specific(1) + vt: VtSelection::Specific(1), + switch: true, }, default_session: ConfigSession { command: "agreety".to_string(), @@ -455,7 +481,8 @@ config, ConfigFile { terminal: ConfigTerminal { - vt: VtSelection::Next + vt: VtSelection::Next, + switch: true, }, default_session: ConfigSession { command: "agreety".to_string(), @@ -477,7 +504,8 @@ config, ConfigFile { terminal: ConfigTerminal { - vt: VtSelection::Current + vt: VtSelection::Current, + switch: true, }, default_session: ConfigSession { command: "agreety".to_string(), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd/src/context.rs new/greetd-0.8.0/greetd/src/context.rs --- old/greetd-0.7.0/greetd/src/context.rs 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/greetd/src/context.rs 2021-09-05 21:15:06.000000000 +0200 @@ -1,10 +1,14 @@ -use std::time::{Duration, Instant}; +use std::{ + fs::File, + path::Path, + time::{Duration, Instant}, +}; use nix::{ sys::wait::{waitpid, WaitPidFlag, WaitStatus}, unistd::alarm, }; -use tokio::{sync::RwLock, time::delay_for}; +use tokio::{sync::RwLock, time::sleep}; use crate::{ error::Error, @@ -41,6 +45,7 @@ pam_service: String, term_mode: TerminalMode, source_profile: bool, + runfile: String, } impl Context { @@ -51,6 +56,7 @@ pam_service: String, term_mode: TerminalMode, source_profile: bool, + runfile: String, ) -> Context { Context { inner: RwLock::new(ContextInner { @@ -64,6 +70,7 @@ pam_service, term_mode, source_profile, + runfile, } } @@ -131,6 +138,18 @@ Ok(()) } + /// Check if this is the first time greetd starts since boot, or if it restarted for any reason + pub fn is_first_run(&self) -> bool { + !Path::new(&self.runfile).exists() + } + + /// Create runfile used to check if greetd was already started since boot + pub fn create_runfile(&self) { + if let Err(err) = File::create(&self.runfile) { + eprintln!("could not create runfile: {}", err); + } + } + /// Directly start an initial session, bypassing the normal scheduling. pub async fn start_user_session(&self, user: &str, cmd: Vec<String>) -> Result<(), Error> { { @@ -341,7 +360,7 @@ return Err("greeter exited without creating a session".into()); } if sesion_length < Duration::from_secs(1) { - delay_for(Duration::from_secs(1)).await; + sleep(Duration::from_secs(1)).await; } inner.current = Some(SessionChildSet { child: self.start_greeter().await?, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd/src/main.rs new/greetd-0.8.0/greetd/src/main.rs --- old/greetd-0.7.0/greetd/src/main.rs 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/greetd/src/main.rs 2021-09-05 21:15:06.000000000 +0200 @@ -29,7 +29,7 @@ worker::main(&sock) } -#[tokio::main] +#[tokio::main(flavor = "current_thread")] async fn main() { let config = match config::read_config() { Ok(config) => config, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd/src/server.rs new/greetd-0.8.0/greetd/src/server.rs --- old/greetd-0.7.0/greetd/src/server.rs 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/greetd/src/server.rs 2021-09-05 21:15:06.000000000 +0200 @@ -31,6 +31,17 @@ Ok(()) } +fn wait_vt(term_mode: &TerminalMode) -> Result<(), Error> { + match term_mode { + TerminalMode::Terminal { path, vt, .. } => { + let term = Terminal::open(path)?; + term.vt_waitactive(*vt)?; + } + TerminalMode::Stdin => (), + } + Ok(()) +} + fn wrap_result<T>(res: Result<T, Error>) -> Response { match res { Ok(_) => Response::Success, @@ -145,14 +156,14 @@ TerminalMode::Terminal { path: format!("/dev/tty{}", vt), vt, - switch: true, + switch: config.file.terminal.switch, } } VtSelection::None => TerminalMode::Stdin, VtSelection::Specific(vt) => TerminalMode::Terminal { path: format!("/dev/tty{}", vt), vt, - switch: true, + switch: config.file.terminal.switch, }, }; return Ok(term); @@ -211,10 +222,14 @@ let uid = Uid::from_raw(u.uid()); let gid = Gid::from_raw(u.primary_group_id()); - let mut listener = Listener::create(uid, gid)?; + let listener = Listener::create(uid, gid)?; let term_mode = get_tty(&config)?; + if !config.file.terminal.switch { + wait_vt(&term_mode).map_err(|e| format!("unable to wait VT: {}", e))?; + } + let ctx = Rc::new(Context::new( config.file.default_session.command, config.file.default_session.user, @@ -222,9 +237,10 @@ service.to_string(), term_mode.clone(), config.file.general.source_profile, + config.file.general.runfile, )); - if let Some(s) = config.file.initial_session { + if let (Some(s), true) = (config.file.initial_session, ctx.is_first_run()) { if let Err(e) = ctx.start_user_session(&s.user, vec![s.command]).await { eprintln!("unable to start greeter: {}", e); reset_vt(&term_mode).map_err(|e| format!("unable to reset VT: {}", e))?; @@ -238,6 +254,8 @@ std::process::exit(1); } + ctx.create_runfile(); + let mut alarm = signal(SignalKind::alarm()).expect("unable to listen for SIGALRM"); let mut child = signal(SignalKind::child()).expect("unable to listen for SIGCHLD"); let mut term = signal(SignalKind::terminate()).expect("unable to listen for SIGTERM"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd/src/session/interface.rs new/greetd-0.8.0/greetd/src/session/interface.rs --- old/greetd-0.7.0/greetd/src/session/interface.rs 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/greetd/src/session/interface.rs 2021-09-05 21:15:06.000000000 +0200 @@ -105,7 +105,7 @@ let cur_exe = std::env::current_exe()?; let bin = CString::new(cur_exe.to_str().expect("unable to get current exe name"))?; - let child = match fork().map_err(|e| format!("unable to fork: {}", e))? { + let child = match unsafe { fork() }.map_err(|e| format!("unable to fork: {}", e))? { ForkResult::Parent { child, .. } => child, ForkResult::Child => { execv( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd/src/session/worker.rs new/greetd-0.8.0/greetd/src/session/worker.rs --- old/greetd-0.7.0/greetd/src/session/worker.rs 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/greetd/src/session/worker.rs 2021-09-05 21:15:06.000000000 +0200 @@ -225,7 +225,7 @@ // PAM is weird and gets upset if you exec from the process that opened // the session, registering it automatically as a log-out. Thus, we must // exec in a new child. - let child = match fork().map_err(|e| format!("unable to fork: {}", e))? { + let child = match unsafe { fork() }.map_err(|e| format!("unable to fork: {}", e))? { ForkResult::Parent { child, .. } => child, ForkResult::Child => { // It is important that we do *not* return from here by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd/src/terminal/mod.rs new/greetd-0.8.0/greetd/src/terminal/mod.rs --- old/greetd-0.7.0/greetd/src/terminal/mod.rs 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/greetd/src/terminal/mod.rs 2021-09-05 21:15:06.000000000 +0200 @@ -111,6 +111,14 @@ Ok(()) } + /// Waits for specified VT to become active. + pub fn vt_waitactive(&self, target_vt: usize) -> Result<(), Error> { + if let Err(v) = unsafe { ioctl::vt_waitactive(self.fd, target_vt as i32) } { + return Err(format!("terminal: unable to wait for activation: {}", v).into()); + } + Ok(()) + } + /// Set the VT mode to VT_AUTO with everything cleared. fn vt_mode_clean(&self) -> Result<(), Error> { let mode = ioctl::vt_mode { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd_ipc/Cargo.toml new/greetd-0.8.0/greetd_ipc/Cargo.toml --- old/greetd-0.7.0/greetd_ipc/Cargo.toml 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/greetd_ipc/Cargo.toml 2021-09-05 21:15:06.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "greetd_ipc" -version = "0.6.0" +version = "0.8.0" authors = ["Kenny Levinsen"] edition = "2018" license = "GPL-3.0" @@ -20,6 +20,6 @@ [dependencies] serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -tokio = { version = "0.2", features = ["io-util"], optional = true } +tokio = { version = "1.0", features = ["io-util"], optional = true } async-trait = { version = "0.1", optional = true } thiserror = { version = "1.0", optional = true } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/greetd_ipc/src/codec/tokio.rs new/greetd-0.8.0/greetd_ipc/src/codec/tokio.rs --- old/greetd-0.7.0/greetd_ipc/src/codec/tokio.rs 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/greetd_ipc/src/codec/tokio.rs 2021-09-05 21:15:06.000000000 +0200 @@ -8,7 +8,7 @@ //! use greetd_ipc::{Request, Response}; //! use greetd_ipc::codec::TokioCodec; //! -//! #[tokio::main] +//! #[tokio::main(flavor = "current_thread")] //! async fn main() -> Result<(), Box<dyn std::error::Error>> { //! let mut stream = UnixStream::connect(env::var("GREETD_SOCK")?).await?; //! Request::CreateSession { username: "john".to_string() }.write_to(&mut stream).await?; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/man/Makefile new/greetd-0.8.0/man/Makefile --- old/greetd-0.7.0/man/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ new/greetd-0.8.0/man/Makefile 2021-09-05 21:15:06.000000000 +0200 @@ -0,0 +1,33 @@ +SCDOC=$(shell pkg-config --variable=scdoc scdoc) +PREFIX?=/usr/local +MANDIR?=$(PREFIX)/share/man +DESTDIR?= + +agreety.1: agreety-1.scd + $(SCDOC) < agreety-1.scd > agreety.1 + +greetd.1: greetd-1.scd + $(SCDOC) < greetd-1.scd > greetd.1 + +greetd.5: greetd-5.scd + $(SCDOC) < greetd-5.scd > greetd.5 + +greetd-ipc.7: greetd-ipc-7.scd + $(SCDOC) < greetd-ipc-7.scd > greetd-ipc.7 + +all: agreety.1 greetd.1 greetd.5 greetd-ipc.7 + +install: + mkdir -p $(DESTDIR)$(MANDIR)/man1 + mkdir -p $(DESTDIR)$(MANDIR)/man5 + mkdir -p $(DESTDIR)$(MANDIR)/man7 + install -m644 agreety.1 $(DESTDIR)$(MANDIR)/man1/agreety.1 + install -m644 greetd.1 $(DESTDIR)$(MANDIR)/man1/greetd.1 + install -m644 greetd.5 $(DESTDIR)$(MANDIR)/man5/greetd.5 + install -m644 greetd-ipc.7 $(DESTDIR)$(MANDIR)/man7/greetd-ipc.7 + +clean: + rm -f agreety.1 greetd.1 greetd.5 greetd-ipc.7 + +.DEFAULT_GOAL=all +.PHONY: all install clean diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/man/greetd-5.scd new/greetd-0.8.0/man/greetd-5.scd --- old/greetd-0.7.0/man/greetd-5.scd 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/man/greetd-5.scd 2021-09-05 21:15:06.000000000 +0200 @@ -37,6 +37,16 @@ Use of a specific VT with appropriate conflict avoidance is recommended. +*switch* = true|false + Whether or not to switch to *vt*. + + If set to false and *vt* is not currently active VT, greetd will wait for + *vt* to become active, before doing anything including starting greeter. + + If set to true, greetd will switch current VT to *vt*, + + Default is true. + ## general This section contains general configuration that does not fit in other sections @@ -46,6 +56,13 @@ Whether or not to source ~/.profile and /etc/profile if present when running commands. Defaults to true. +*runfile* = path-to-runfile + Location of greetd's runfile that is created during the first run to prevent + the initial session from being run again on session termination or on greetd + restart. + + This file should be in a location that is cleared during a reboot. + ## default_session This section describes the default session, also referred to as the *greeter*. @@ -66,6 +83,11 @@ This optional section describes the initial session, commonly referred to as "auto-login". +The initial session will only be executed during the first run of greetd since +boot in order to ensure signing out works properly and to prevent security +issues whenever greetd or the greeter exit. This is checked through the +presence of the runfile. + *command* = command-line The command-line to run to start the initial session, e.g. "sway". The initial session will be run when exactly once when greetd is initially diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/greetd-0.7.0/rustfmt.toml new/greetd-0.8.0/rustfmt.toml --- old/greetd-0.7.0/rustfmt.toml 2020-12-22 12:29:48.000000000 +0100 +++ new/greetd-0.8.0/rustfmt.toml 2021-09-05 21:15:06.000000000 +0200 @@ -1,2 +1,2 @@ unstable_features = true -merge_imports = true +imports_granularity = "Crate" ++++++ greetd.obsinfo ++++++ --- /var/tmp/diff_new_pack.nUnfuz/_old 2021-11-01 18:36:03.689347761 +0100 +++ /var/tmp/diff_new_pack.nUnfuz/_new 2021-11-01 18:36:03.689347761 +0100 @@ -1,5 +1,5 @@ name: greetd -version: 0.7.0 -mtime: 1608636588 -commit: b25b72ae51b3b6dca945b6078e55b593b02fb7a5 +version: 0.8.0 +mtime: 1630869306 +commit: d2477a8f9c50097a689125304ea2a1e3660d274e ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/greetd/vendor.tar.gz /work/SRC/openSUSE:Factory/.greetd.new.1890/vendor.tar.gz differ: char 5, line 1
participants (1)
-
Source-Sync