From ecfc45c2defa8b2789b1ce41cc4ffede00ca742f Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Sat, 13 Jun 2020 14:20:53 +0000 Subject: [PATCH] build: Make compatible with Debian Bullseye MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit is a bit bigger than it could have: Meson changes could have gone in separately from CI and Debian. This commit looks more complicated than it should reasonably be. Alas, Cargo is a piece of work, and it doesn't let honest people just choose different versions of dependencies, leading to a cascade of misery. Several things were tried to curb the disaster: - Cargo [feature] supports choosing dependencies, but doesn't support specifying dependency versions - Cargo has a cfg() syntax in sections for choosing dependencies by build options, but it explicitly doesn't support selecting on features… - Cargo allows choosing different dependencies based on features, so perhaps dependencies with different versions could live in stub crates pulled in as needed? Nope! If a dependency doesn't exist in the repo (and that's the point here), Cargo throws up its hands. This means Cargo.toml needs to be generated based on the build type. More misery: - we lose the simplicity of just doing `cargo.sh` for simple housekeeping like deps updates. HACKING.md was updated to reflect that. Perhaps that's inevitable - build options need to be like this. - Some flaky adjustments needed in `cargo.sh` because of an additional argument that can be mistaken for an argument to the exec in `cargo run`. - Specifying a custom `Cargo.toml` means Cargo can no longer find any tests, examples, benchmarks, or binaries, because it searches relative to the directory of `Cargo.toml`, which is now the build dir. Extra care needed to not forget about them now. As soon as Cargo allows anything better for managing deps versions, the above should be undone in its favor. Good side is that a couple bugs went away: - build flags not always making it to Cargo - arm64 builds were optional while they shouldn't - test layouts in unit tests are loaded from an explicit directory now The Bullseye versions of dependencies are canonical now, Buster considered legacy. --- .gitlab-ci.yml | 28 +++- Cargo.deps | 22 +++ Cargo.deps.legacy | 22 +++ Cargo.lock | 322 +++++++++++++++++------------------- Cargo.toml => Cargo.toml.in | 53 +++--- cargo.sh | 7 +- debian/rules | 11 +- doc/hacking.md | 3 +- meson.build | 26 +++ meson_options.txt | 4 + src/data.rs | 23 ++- src/meson.build | 11 +- src/popover.rs | 4 + tests/meson.build | 4 +- tools/meson.build | 5 +- 15 files changed, 320 insertions(+), 225 deletions(-) create mode 100644 Cargo.deps create mode 100644 Cargo.deps.legacy rename Cargo.toml => Cargo.toml.in (53%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2fac2003..3be01fb5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: debian:buster +image: debian:bullseye stages: - build @@ -11,7 +11,7 @@ stages: before_script: - apt-get -y update - apt-get -y install wget ca-certificates gnupg - - echo "deb http://ci.puri.sm/ scratch librem5" > /etc/apt/sources.list.d/ci.list + - echo "deb [trusted=yes] http://ci.puri.sm/ bullseyeci main" > /etc/apt/sources.list.d/ci.list - wget -O- https://ci.puri.sm/ci-repo.key | apt-key add - - apt-get -y update @@ -27,7 +27,8 @@ build_docs: - ./doc/build.sh _build build_meson: - <<: *tags + tags: + - librem5 stage: build artifacts: paths: @@ -55,7 +56,6 @@ build_deb: build_deb:arm64: tags: - librem5:arm64 - allow_failure: true stage: build artifacts: paths: @@ -67,6 +67,23 @@ build_deb:arm64: - debuild -i -us -uc -b - cp ../*.deb . +build_deb:arm64_buster: + image: "debian:buster" + tags: + - librem5:arm64 + stage: build + artifacts: + paths: + - "*.deb" + script: + - echo "deb http://ci.puri.sm/ scratch librem5" > /etc/apt/sources.list.d/ci.list + - apt-get -y update + - rm -f ../*.deb + - apt-get -y build-dep . + - apt-get -y install devscripts + - debuild -i -us -uc -b + - cp ../*.deb . + test_lintian: <<: *tags stage: test @@ -77,7 +94,8 @@ test_lintian: - lintian *.deb test: - <<: *tags + tags: + - librem5 stage: test needs: - build_meson diff --git a/Cargo.deps b/Cargo.deps new file mode 100644 index 00000000..6fe72260 --- /dev/null +++ b/Cargo.deps @@ -0,0 +1,22 @@ +# Dependencies which change based on build flags +bitflags = "1.2.*" +clap = { version = "2.33.*", default-features = false } +regex = { version = "1.3.*", default-features = false, features = ["std", "unicode-case"] } + +[dependencies.cairo-rs] +version = "0.7.*" + +[dependencies.gdk] +version = "0.11.*" + +[dependencies.gio] +version = "0.7.*" +features = ["v2_44"] + +[dependencies.glib] +version = "0.8.*" +features = ["v2_44"] + +[dependencies.gtk] +version = "0.7.*" +features = ["v3_22"] diff --git a/Cargo.deps.legacy b/Cargo.deps.legacy new file mode 100644 index 00000000..bfbb50dc --- /dev/null +++ b/Cargo.deps.legacy @@ -0,0 +1,22 @@ +# Dependencies which change based on build flags +bitflags = "1.0.*" +clap = { version = "2.32.*", default-features = false } +regex = { version = "1.1.*", default-features = false, features = ['use_std'] } + +[dependencies.cairo-rs] +version = "0.5.*" + +[dependencies.gdk] +version = "0.9.*" + +[dependencies.gio] +version = "0.5.*" +features = ["v2_44"] + +[dependencies.glib] +version = "0.6.*" +features = ["v2_44"] + +[dependencies.gtk] +version = "0.5.*" +features = ["v3_22"] diff --git a/Cargo.lock b/Cargo.lock index 2229db68..65916991 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,52 +1,55 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] -name = "aho-corasick" -version = "0.7.10" +name = "atk" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "atk-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "atk-sys" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bitflags" -version = "1.0.4" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cairo-rs" -version = "0.5.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-sys-rs 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cairo-sys-rs" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -56,11 +59,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "clap" -version = "2.32.0" +version = "2.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -76,105 +79,105 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "gdk" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-sys-rs 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gio-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", - "pango 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pango 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gdk-pixbuf" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gio-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gio-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gdk-sys" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-sys-rs 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gio-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pango-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gio" -version = "0.5.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "fragile 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gio-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gio-sys" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "glib" -version = "0.6.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "glib-sys" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", @@ -183,52 +186,54 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gtk" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-sys-rs 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gio-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gtk-sys 0.9.2 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", - "pango 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pango 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pango-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gtk-sys" -version = "0.7.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "atk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atk-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-sys-rs 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-pixbuf-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gio-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pango-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -252,11 +257,6 @@ name = "maplit" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "memchr" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "memmap" version = "0.7.0" @@ -268,25 +268,25 @@ dependencies = [ [[package]] name = "pango" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", - "pango-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pango-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pango-sys" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -306,7 +306,7 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", @@ -314,14 +314,10 @@ dependencies = [ [[package]] name = "regex" -version = "1.1.9" +version = "1.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -333,20 +329,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "rs" version = "0.1.0" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gdk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gtk 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cairo-sys-rs 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gdk 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glib 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gtk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gtk-sys 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", "maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.111 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_yaml 0.8.12 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_yaml 0.8.13 (registry+https://github.com/rust-lang/crates.io-index)", "xkbcommon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -364,47 +360,39 @@ version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_yaml" -version = "0.8.12" +version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.111 (registry+https://github.com/rust-lang/crates.io-index)", - "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "yaml-rust 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "textwrap" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "thread_local" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "unicode-width" version = "0.1.7" @@ -415,11 +403,6 @@ name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "utf8-ranges" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi" version = "0.3.8" @@ -450,57 +433,54 @@ dependencies = [ [[package]] name = "yaml-rust" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "linked-hash-map 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [metadata] -"checksum aho-corasick 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)" = "8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada" -"checksum atk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7017e53393e713212aed7aea336b6553be4927f58c37070a56c2fe3d107e489" -"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" -"checksum cairo-rs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dd940f0d609699e343ef71c4af5f66423afbf30d666f796dabd8fd15229cf5b6" -"checksum cairo-sys-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d25596627380be4381247dba06c69ad05ca21b3b065bd9827e416882ac41dcd2" +"checksum atk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "86b7499272acf036bb5820c6e346bbfb5acc5dceb104bc2c4fd7e6e33dfcde6a" +"checksum atk-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e552c1776737a4c80110d06b36d099f47c727335f9aaa5d942a72b6863a8ec6f" +"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +"checksum cairo-rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e05db47de3b0f09a222fa4bba2eab957d920d4243962a86b2d77ab401e4a359c" +"checksum cairo-sys-rs 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff65ba02cac715be836f63429ab00a767d48336efc5497c5637afb53b4f14d63" "checksum cc 1.0.54 (registry+https://github.com/rust-lang/crates.io-index)" = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311" -"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" +"checksum clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129" "checksum dtoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4358a9e11b9a09cf52383b451b49a169e8d797b68aa02301ff586d70d9661ea3" "checksum fragile 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f8140122fa0d5dcb9fc8627cfce2b37cc1500f752636d46ea28bc26785c2f9" -"checksum gdk 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc52c7244046df9d959df87289f1fc5cca23f9f850bab0c967963e2ecb83a96" -"checksum gdk-pixbuf 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc3aa730cb4df3de5d9fed59f43afdf9e5fb2d3d10bfcbd04cec031435ce87f5" -"checksum gdk-pixbuf-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08284f16ce4d909b10d785a763ba190e222d2c1557b29908bf0a661e27a8ac3b" -"checksum gdk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "108548ebf5329b551f2b97ab356908d14627905abb74b936c3372de1535aee81" -"checksum gio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "29a44b051990573448edc80b1995237f8b97b5734d2aec05105b9242aa10af11" -"checksum gio-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6975ada29f7924dc1c90b30ed3b32d777805a275556c05e420da4fbdc22eb250" -"checksum glib 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a333edf5b9f1411c246ef14e7881b087255f04c56dbef48c64a0cb039b4b340" -"checksum glib-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3573351e846caed9f11207b275cd67bc07f0c2c94fb628e5d7c92ca056c7882d" -"checksum gobject-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08475e4a08f27e6e2287005950114735ed61cec2cb8c1187682a5aec8c69b715" -"checksum gtk 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "56a6b30f194f09a17bb7ffa95c3ecdb405abd3b75ff981f831b1f6d18fe115ff" -"checksum gtk-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d487d333a4b87072e6bf9f2e55befa0ebef01b9496c2e263c0f4a1ff3d6c04b1" +"checksum gdk 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6243e995f41f3a61a31847e54cc719edce93dd9140c89dca3b9919be1cfe22d5" +"checksum gdk-pixbuf 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9726408ee1bbada83094326a99b9c68fea275f9dbb515de242a69e72051f4fcc" +"checksum gdk-pixbuf-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d8991b060a9e9161bafd09bf4a202e6fd404f5b4dd1a08d53a1e84256fb34ab0" +"checksum gdk-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6adf679e91d1bff0c06860287f80403e7db54c2d2424dce0a470023b56c88fbb" +"checksum gio 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6261b5d34c30c2d59f879e643704cf54cb44731f3a2038000b68790c03e360e3" +"checksum gio-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4fad225242b9eae7ec8a063bb86974aca56885014672375e5775dc0ea3533911" +"checksum glib 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "be27232841baa43e0fd5ae003f7941925735b2f733a336dc75f07b9eff415e7b" +"checksum glib-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "95856f3802f446c05feffa5e24859fe6a183a7cb849c8449afc35c86b1e316e2" +"checksum gobject-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31d1a804f62034eccf370006ccaef3708a71c31d561fee88564abe71177553d9" +"checksum gtk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "709f1074259d4685b96133f92b75c7f35b504715b0fcdc96ec95de2607296a60" +"checksum gtk-sys 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53def660c7b48b00b510c81ef2d2fbd3c570f1527081d8d7947f471513e1a4c1" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)" = "9457b06509d27052635f90d6466700c65095fdf75409b3fbdd903e988b886f49" "checksum linked-hash-map 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a" "checksum maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" -"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" "checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" -"checksum pango 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4c2cb169402a3eb1ba034a7cc7d95b8b1c106e9be5ba4be79a5a93dc1a2795f4" -"checksum pango-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d6eb49268e69dd0c1da5d3001a61aac08e2e9d2bfbe4ae4b19b9963c998f6453" +"checksum pango 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "393fa071b144f8ffb83ede273758983cf414ca3c0b1d2a5a9ce325b3ba3dd786" +"checksum pango-sys 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "86b93d84907b3cf0819bff8f13598ba72843bee579d5ebc2502e4b0367b4be7d" "checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" "checksum proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa" -"checksum quote 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "54a21852a652ad6f610c9510194f398ff6f8692e334fd1145fed931f7fbe44ea" -"checksum regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d9d8297cc20bbb6184f8b45ff61c8ee6a9ac56c156cec8e38c3e5084773c44ad" +"checksum quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +"checksum regex 1.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" "checksum regex-syntax 0.6.18 (registry+https://github.com/rust-lang/crates.io-index)" = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" "checksum serde 1.0.111 (registry+https://github.com/rust-lang/crates.io-index)" = "c9124df5b40cbd380080b2cc6ab894c040a3070d995f5c9dc77e18c34a8ae37d" "checksum serde_derive 1.0.111 (registry+https://github.com/rust-lang/crates.io-index)" = "3f2c3ac8e6ca1e9c80b8be1023940162bf81ae3cffbb1809474152f2ce1eb250" -"checksum serde_yaml 0.8.12 (registry+https://github.com/rust-lang/crates.io-index)" = "16c7a592a1ec97c9c1c68d75b6e537dcbf60c7618e038e7841e00af1d9ccf0c4" -"checksum syn 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)" = "93a56fabc59dce20fe48b6c832cc249c713e7ed88fa28b0ee0a3bfcaae5fe4e2" -"checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" -"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +"checksum serde_yaml 0.8.13 (registry+https://github.com/rust-lang/crates.io-index)" = "ae3e2dd40a7cdc18ca80db804b7f461a39bb721160a85c9a1fa30134bf3c02a5" +"checksum syn 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)" = "b5304cfdf27365b7585c25d4af91b35016ed21ef88f17ced89c7093b43dba8b6" +"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" "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 utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "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 xkbcommon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fda0ea5f7ddabd51deeeda7799bee06274112f577da7dd3d954b8eda731b2fce" -"checksum yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65923dd1784f44da1d2c3dbbc5e822045628c590ba72123e1c73d3c230c4434d" +"checksum yaml-rust 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "39f0c922f1a334134dc2f7a8b67dc5d25f0735263feec974345ff706bcf20b0d" diff --git a/Cargo.toml b/Cargo.toml.in similarity index 53% rename from Cargo.toml rename to Cargo.toml.in index e59996fc..887bca26 100644 --- a/Cargo.toml +++ b/Cargo.toml.in @@ -2,46 +2,39 @@ name = "rs" version = "0.1.0" -[dependencies] -bitflags = "1.0.*" -clap = { version = "2.32.*", default-features = false } -maplit = "1.0.*" -regex = "1.1.*" -serde = { version = "1.0.*", features = ["derive"] } -serde_yaml = "0.8.*" -xkbcommon = { version = "0.4.*", features = ["wayland"] } +[lib] +name = "rs" +path = "@path@/src/lib.rs" +crate-type = ["staticlib", "rlib"] -[dependencies.cairo-rs] -version = "0.5.*" +# Cargo can't do autodiscovery if Cargo.toml is not in the root. +[[bin]] +name = "test_layout" +path = "@path@/src/bin/test_layout.rs" +[[example]] +name = "test_layout" +path = "@path@/examples/test_layout.rs" + +[features] +gio_v0_5 = [] +gtk_v0_5 = [] + +# Dependencies which don't change based on build flags [dependencies.cairo-sys-rs] version = "" -[dependencies.gdk] -version = "" - -[dependencies.gio] -version = "" -features = ["v2_44"] - -[dependencies.glib] -version = "" -features = ["v2_44"] - [dependencies.glib-sys] version = "" features = ["v2_44"] -[dependencies.gtk] -version = "0.5.*" -features = ["v3_22"] - [dependencies.gtk-sys] version = "" features = ["v3_22"] - -[lib] -name = "rs" -path = "src/lib.rs" -crate-type = ["staticlib", "rlib"] +[dependencies] +maplit = "1.0.*" +serde = { version = "1.0.*", features = ["derive"] } +serde_yaml = "0.8.*" +xkbcommon = { version = "0.4.*", features = ["wayland"] } +# Here is inserted the Cargo.deps file diff --git a/cargo.sh b/cargo.sh index 434340b4..c4be97b4 100755 --- a/cargo.sh +++ b/cargo.sh @@ -13,5 +13,10 @@ CARGO_TARGET_DIR="$(pwd)" export CARGO_TARGET_DIR cd "$SOURCE_DIR" -cargo "$@" + +# the 'run" command takes arguments at the end, +# so --manifest-path must not be last +CMD="$1" +shift +cargo "$CMD" --manifest-path "$CARGO_TARGET_DIR"/Cargo.toml "$@" diff --git a/debian/rules b/debian/rules index fa33deb5..59c8935c 100755 --- a/debian/rules +++ b/debian/rules @@ -3,13 +3,20 @@ export CARGO_HOME = $(CURDIR)/debian/cargo export DEB_BUILD_MAINT_OPTIONS = hardening=+all +distrel := $(shell lsb_release --codename --short) +ifneq (,$(filter $(distrel),buster)) + legacy = true +else + legacy = false +endif + %: dh $@ --builddirectory=_build --buildsystem=meson # The Debian version of linked-hash-map doesn't provide any hash, # causing Cargo to refuse to build with a crates.io copy -build-arch: +override_dh_auto_configure: [ ! -f Cargo.lock ] || rm Cargo.lock - dh $@ --builddirectory=_build --buildsystem=meson + dh_auto_configure -- -Dlegacy=$(legacy) override_dh_autoreconf: diff --git a/doc/hacking.md b/doc/hacking.md index 7b016f63..551b701b 100644 --- a/doc/hacking.md +++ b/doc/hacking.md @@ -175,10 +175,11 @@ All Cargo dependencies must be selected in the version available in PureOS, and Dependencies must be specified in `Cargo.toml` with 2 numbers: "major.minor". Since bugfix version number is meant to not affect the interface, this allows for safe updates. -`Cargo.lock` is used for remembering the revisions of all Rust dependencies. It should be updated often, preferably with each bugfix revision, and in a commit on its own: +`Cargo.lock` is used for remembering the revisions of all Rust dependencies. It must correspond to the default dependency configuration: without flags to use older or newer versions of dependencies. It should be updated often, preferably with each bugfix revision, and in a commit on its own: ``` cd build_dir +ninja build src/Cargo.toml sh /source_path/cargo.sh update ninja test ``` diff --git a/meson.build b/meson.build index a4311737..810d3bdb 100644 --- a/meson.build +++ b/meson.build @@ -61,6 +61,32 @@ summary = [ ] message('\n'.join(summary)) +# Rust deps are changing, depending on compile flags. Cargo can't handle it alone. +cargo_toml_in = files('Cargo.toml.in') +path_data = configuration_data() +path_data.set('path', meson.source_root()) +cargo_toml_base = configure_file( + input: 'Cargo.toml.in', + output: 'Cargo.toml.base', + configuration: path_data, +) + + +cargo_deps = files('Cargo.deps') + +if get_option('legacy') == true + cargo_build_flags += ['--features', 'gtk_v0_5,gio_v0_5'] + cargo_deps = files('Cargo.deps.legacy') +endif + +cat = find_program('cat') +cargo_toml = custom_target( + 'Cargo.toml', + output: 'Cargo.toml', + command: [cat, cargo_toml_base, cargo_deps], + capture: true, +) + dep_cargo = find_program('cargo') cargo_script = find_program('cargo.sh') cargo_build = find_program('cargo_build.sh') diff --git a/meson_options.txt b/meson_options.txt index 339e1ba3..180f12f3 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -6,3 +6,7 @@ option('depdatadir', option('tests', type: 'boolean', value: true, description: 'Whether to compile unit tests') + +option('legacy', + type: 'boolean', value: false, + description: 'Build with Deban Buster versions of dependencies') diff --git a/src/data.rs b/src/data.rs index 163b7b30..4ff7cc2d 100644 --- a/src/data.rs +++ b/src/data.rs @@ -741,10 +741,19 @@ mod tests { use std::error::Error as ErrorTrait; use ::logging::ProblemPanic; + const THIS_FILE: &str = file!(); + + fn path_from_root(file: &'static str) -> PathBuf { + PathBuf::from(THIS_FILE) + .parent().unwrap() + .parent().unwrap() + .join(file) + } + #[test] fn test_parse_path() { assert_eq!( - Layout::from_file(PathBuf::from("tests/layout.yaml")).unwrap(), + Layout::from_file(path_from_root("tests/layout.yaml")).unwrap(), Layout { margins: Margins { top: 0f64, bottom: 0f64, side: 0f64 }, views: hashmap!( @@ -771,7 +780,7 @@ mod tests { /// Check if the default protection works #[test] fn test_empty_views() { - let out = Layout::from_file(PathBuf::from("tests/layout2.yaml")); + let out = Layout::from_file(path_from_root("tests/layout2.yaml")); match out { Ok(_) => assert!(false, "Data mistakenly accepted"), Err(e) => { @@ -789,7 +798,7 @@ mod tests { #[test] fn test_extra_field() { - let out = Layout::from_file(PathBuf::from("tests/layout3.yaml")); + let out = Layout::from_file(path_from_root("tests/layout3.yaml")); match out { Ok(_) => assert!(false, "Data mistakenly accepted"), Err(e) => { @@ -808,7 +817,7 @@ mod tests { #[test] fn test_layout_punctuation() { - let out = Layout::from_file(PathBuf::from("tests/layout_key1.yaml")) + let out = Layout::from_file(path_from_root("tests/layout_key1.yaml")) .unwrap() .build(ProblemPanic).0 .unwrap(); @@ -823,7 +832,7 @@ mod tests { #[test] fn test_layout_unicode() { - let out = Layout::from_file(PathBuf::from("tests/layout_key2.yaml")) + let out = Layout::from_file(path_from_root("tests/layout_key2.yaml")) .unwrap() .build(ProblemPanic).0 .unwrap(); @@ -839,7 +848,7 @@ mod tests { /// Test multiple codepoints #[test] fn test_layout_unicode_multi() { - let out = Layout::from_file(PathBuf::from("tests/layout_key3.yaml")) + let out = Layout::from_file(path_from_root("tests/layout_key3.yaml")) .unwrap() .build(ProblemPanic).0 .unwrap(); @@ -916,7 +925,7 @@ mod tests { #[test] fn test_layout_margins() { - let out = Layout::from_file(PathBuf::from("tests/layout_margins.yaml")) + let out = Layout::from_file(path_from_root("tests/layout_margins.yaml")) .unwrap() .build(ProblemPanic).0 .unwrap(); diff --git a/src/meson.build b/src/meson.build index 1502dd31..7cc3ce73 100644 --- a/src/meson.build +++ b/src/meson.build @@ -55,7 +55,8 @@ rslibs = custom_target( output: ['librs.a'], install: false, console: true, - command: [cargo_build] + cargo_build_flags + ['@OUTPUT@', '--lib'] + command: [cargo_build] + ['@OUTPUT@', '--lib'] + cargo_build_flags, + depends: cargo_toml, ) build_rstests = custom_target( @@ -69,17 +70,17 @@ build_rstests = custom_target( output: ['src'], install: false, console: true, - command: [cargo_script, 'test', '--no-run'], - depends: rslibs, # no point building tests if the code itself fails + command: [cargo_script, 'test', '--no-run'] + cargo_build_flags, + depends: [rslibs, cargo_toml], # no point building tests if the code itself fails ) test( 'rstest', cargo_script, - args: ['test'], + args: ['test'] + cargo_build_flags, # this is a whole Carg-based test suite, let it run for a while timeout: 900, - depends: build_rstests, + depends: [build_rstests, cargo_toml], ) libsqueekboard = static_library('libsqueekboard', diff --git a/src/popover.rs b/src/popover.rs index 96d3a971..65551a23 100644 --- a/src/popover.rs +++ b/src/popover.rs @@ -11,11 +11,15 @@ use ::logging; use ::manager; use ::resources; +// Traits use gio::ActionMapExt; use gio::SettingsExt; +#[cfg(feature = "gio_v0_5")] use gio::SimpleActionExt; use glib::translate::FromGlibPtrNone; use glib::variant::ToVariant; +#[cfg(not(feature = "gtk_v0_5"))] +use gtk::BuilderExtManual; use gtk::PopoverExt; use gtk::WidgetExt; use std::io::Write; diff --git a/tests/meson.build b/tests/meson.build index aeb0b146..67b7983b 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -69,7 +69,9 @@ foreach layout : [ test( 'test_layout_' + layout, cargo_script, - args: ['run', '--example', 'test_layout', layout] + args: ['run'] + cargo_build_flags + + [ '--example', 'test_layout', '--', layout], + workdir: meson.build_root(), ) endforeach diff --git a/tools/meson.build b/tools/meson.build index 9246326a..75a7e179 100644 --- a/tools/meson.build +++ b/tools/meson.build @@ -12,8 +12,9 @@ test_layout = custom_target('squeekboard-test-layout', build_always_stale: true, output: ['squeekboard-test-layout'], console: true, - command: [cargo_build] + cargo_build_flags - + ['--rename', 'test_layout', '@OUTPUT@', '--bin', 'test_layout'], + command: [cargo_build, '--rename', 'test_layout', '@OUTPUT@', '--bin', 'test_layout'] + + cargo_build_flags, install: true, install_dir: bindir, + depends: cargo_toml, )