diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e289c03..8c8c6b2 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -29,10 +29,24 @@ jobs: lint: name: lint runs-on: ubuntu-latest + container: + image: buildpack-deps:jammy + steps: - name: Checkout uses: actions/checkout@v2 + - name: Install tools + run: | + apt update + apt install -y \ + libgtk-3-dev \ + build-essential \ + libssl-dev \ + openssl \ + pkg-config\ + curl + - name: Install Rust uses: actions-rs/toolchain@v1 with: @@ -40,9 +54,6 @@ jobs: toolchain: stable override: true - - name: Install tools - run: sudo apt update && sudo apt install libgtk-3-dev -y - - name: Add clippy run: rustup component add clippy @@ -52,10 +63,23 @@ jobs: tests: name: tests runs-on: ubuntu-latest + container: + image: buildpack-deps:jammy steps: - name: Checkout uses: actions/checkout@v2 + - name: Install tools + run: | + apt update + apt install -y \ + libgtk-3-dev \ + build-essential \ + libssl-dev \ + openssl \ + pkg-config\ + curl + - name: Install Rust uses: actions-rs/toolchain@v1 with: @@ -63,9 +87,6 @@ jobs: toolchain: stable override: true - - name: Install tools - run: sudo apt update && sudo apt install libgtk-3-dev -y - # TODO: incorporate code coverage with tarpaulin or grcov - name: Run tests uses: actions-rs/cargo@v1 @@ -76,10 +97,23 @@ jobs: compile: name: build runs-on: ubuntu-latest + container: + image: buildpack-deps:jammy steps: - name: Checkout uses: actions/checkout@v2 + - name: Install tools + run: | + apt update + apt install -y \ + libgtk-3-dev \ + build-essential \ + libssl-dev \ + openssl \ + pkg-config\ + curl + - name: Install Rust uses: actions-rs/toolchain@v1 with: @@ -87,9 +121,6 @@ jobs: toolchain: stable override: true - - name: Install tools - run: sudo apt update && sudo apt install libgtk-3-dev -y - - name: Compile uses: actions-rs/cargo@v1 with: diff --git a/Cargo.lock b/Cargo.lock index f9937c6..e9c6c55 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "ansi_term" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ "winapi", ] @@ -84,9 +84,9 @@ checksum = "db7a1029718df60331e557c9e83a55523c955e5dd2a7bfeffad6bbd50b538ae9" [[package]] name = "byteorder" -version = "1.3.4" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" @@ -102,9 +102,9 @@ checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" [[package]] name = "cairo-rs" -version = "0.14.9" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b5725979db0c586d98abad2193cdb612dd40ef95cd26bd99851bf93b3cb482" +checksum = "129e928d3eda625f53ce257589efbe5143416875fd01bddd08c8c6feb8b9962b" dependencies = [ "bitflags", "cairo-sys-rs", @@ -115,9 +115,9 @@ dependencies = [ [[package]] name = "cairo-sys-rs" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c9c3928781e8a017ece15eace05230f04b647457d170d2d9641c94a444ff80" +checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" dependencies = [ "glib-sys", "libc", @@ -126,12 +126,9 @@ dependencies = [ [[package]] name = "cast" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0" -dependencies = [ - "rustc_version", -] +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" @@ -141,9 +138,9 @@ checksum = "f9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518" [[package]] name = "cfg-expr" -version = "0.8.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b412e83326147c2bb881f8b40edfbf9905b9b8abaebd0e47ca190ba62fda8f0e" +checksum = "5e068cb2806bbc15b439846dc16c5f89f8599f2c3e4d73d4449d38f9b2f0b6c5" dependencies = [ "smallvec", ] @@ -175,9 +172,9 @@ dependencies = [ [[package]] name = "clap" -version = "2.33.3" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", @@ -254,9 +251,9 @@ dependencies = [ [[package]] name = "cssparser" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +checksum = "1db8599a9761b371751fbf13e076fa03c6e1a78f8c5288e6ab9467f10a2322c1" dependencies = [ "cssparser-macros", "dtoa-short", @@ -405,15 +402,6 @@ dependencies = [ "cfg-if 0.1.10", ] -[[package]] -name = "float-cmp" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4" -dependencies = [ - "num-traits", -] - [[package]] name = "float-cmp" version = "0.9.0" @@ -541,10 +529,11 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534192cb8f01daeb8fab2c8d4baa8f9aae5b7a39130525779f5c2608e235b10f" +checksum = "678516f1baef591d270ca10587c01a12542a731a7879cc62391a18191a470831" dependencies = [ + "bitflags", "gdk-pixbuf-sys", "gio", "glib", @@ -553,9 +542,9 @@ dependencies = [ [[package]] name = "gdk-pixbuf-sys" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f097c0704201fbc8f69c1762dc58c6947c8bb188b8ed0bc7e65259f1894fe590" +checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" dependencies = [ "gio-sys", "glib-sys", @@ -577,9 +566,9 @@ dependencies = [ [[package]] name = "gio" -version = "0.14.8" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711c3632b3ebd095578a9c091418d10fed492da9443f58ebc8f45efbeb215cb0" +checksum = "76cd21a7a674ea811749661012512b0ba5237ba404ccbcab2850db5537549b64" dependencies = [ "bitflags", "futures-channel", @@ -594,9 +583,9 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa" +checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" dependencies = [ "glib-sys", "gobject-sys", @@ -607,9 +596,9 @@ dependencies = [ [[package]] name = "glib" -version = "0.14.8" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c515f1e62bf151ef6635f528d05b02c11506de986e43b34a5c920ef0b3796a4" +checksum = "a826fad715b57834920839d7a594c3b5e416358c7d790bdaba847a40d7c1d96d" dependencies = [ "bitflags", "futures-channel", @@ -622,13 +611,14 @@ dependencies = [ "libc", "once_cell", "smallvec", + "thiserror", ] [[package]] name = "glib-macros" -version = "0.14.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aad66361f66796bfc73f530c51ef123970eb895ffba991a234fcf7bea89e518" +checksum = "dac4d47c544af67747652ab1865ace0ffa1155709723ac4f32e97587dd4735b2" dependencies = [ "anyhow", "heck", @@ -641,9 +631,9 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae" +checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" dependencies = [ "libc", "system-deps", @@ -651,9 +641,9 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5" +checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" dependencies = [ "glib-sys", "libc", @@ -687,12 +677,9 @@ checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" [[package]] name = "heck" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" [[package]] name = "hermit-abi" @@ -803,18 +790,9 @@ checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" [[package]] name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.10.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" dependencies = [ "either", ] @@ -860,9 +838,10 @@ checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6" [[package]] name = "librsvg" -version = "2.52.1" -source = "git+https://gitlab.gnome.org/GNOME/librsvg#22ba84bb091ed587e026c11c61a964fae897a549" +version = "2.54.1" +source = "git+https://gitlab.gnome.org/GNOME/librsvg#f6dfe9e247c36a6005c4cc75db39c6eef767d1af" dependencies = [ + "byteorder", "cairo-rs", "cast", "chrono", @@ -870,11 +849,11 @@ dependencies = [ "cssparser", "data-url", "encoding", - "float-cmp 0.8.0", + "float-cmp", "gdk-pixbuf", "gio", "glib", - "itertools 0.9.0", + "itertools", "language-tags", "libc", "locale_config", @@ -1043,9 +1022,9 @@ dependencies = [ [[package]] name = "nalgebra" -version = "0.27.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "462fffe4002f4f2e1f6a9dcf12cc1a6fc0e15989014efc02a941d3e0f5dc2120" +checksum = "d506eb7e08d6329505faa8a3a00a5dcc6de9f76e0c77e4b75763ae3c770831ff" dependencies = [ "approx", "matrixmultiply", @@ -1070,9 +1049,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" dependencies = [ "lazy_static", "libc", @@ -1193,21 +1172,21 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.4.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d" +checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" [[package]] name = "openssl" -version = "0.10.30" +version = "0.10.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" +checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" dependencies = [ "bitflags", - "cfg-if 0.1.10", + "cfg-if 1.0.0", "foreign-types", - "lazy_static", "libc", + "once_cell", "openssl-sys", ] @@ -1219,9 +1198,9 @@ checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" -version = "0.9.58" +version = "0.9.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" +checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" dependencies = [ "autocfg", "cc", @@ -1232,9 +1211,9 @@ dependencies = [ [[package]] name = "pango" -version = "0.14.3" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc88307d9797976ea62722ff2ec5de3fae279c6e20100ed3f49ca1a4bf3f96" +checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" dependencies = [ "bitflags", "glib", @@ -1245,9 +1224,9 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.14.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe" +checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" dependencies = [ "glib-sys", "gobject-sys", @@ -1257,9 +1236,9 @@ dependencies = [ [[package]] name = "pangocairo" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03ac1e8d456f8f436168aeac41201f0bf49d1dc6c8d01bfb04de2cca25df631" +checksum = "7876a45c1f1d1a75a2601dc6d9ef2cb5a8be0e3d76f909d82450759929035366" dependencies = [ "bitflags", "cairo-rs", @@ -1271,9 +1250,9 @@ dependencies = [ [[package]] name = "pangocairo-sys" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3b9b679ad5c8503e3e533ce06e1619d033274b246e977a6fa1655a6c6ef2b51" +checksum = "78cf746594916c81d5f739af9335c5f55a1f4606d80b3e1d821f18cf95a29494" dependencies = [ "cairo-sys-rs", "glib-sys", @@ -1405,8 +1384,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95e5a7689e456ab905c22c2b48225bb921aba7c8dfa58440d68ba13f6222a715" dependencies = [ "difflib", - "float-cmp 0.9.0", - "itertools 0.10.1", + "float-cmp", + "itertools", "normalize-line-endings", "predicates-core", "regex", @@ -1579,9 +1558,9 @@ dependencies = [ [[package]] name = "rctree" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be9e29cb19c8fe84169fcb07f8f11e66bc9e6e0280efd4715c54818296f8a4a8" +checksum = "9ae028b272a6e99d9f8260ceefa3caa09300a8d6c8d2b2001316474bc52122e9" [[package]] name = "redox_syscall" @@ -1661,21 +1640,21 @@ dependencies = [ "bytemuck", ] -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver", -] - [[package]] name = "ryu" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +[[package]] +name = "safe_arch" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794821e4ccb0d9f979512f9c1973480123f9bd62a90d74ab0f9426fcf8f4a529" +dependencies = [ + "bytemuck", +] + [[package]] name = "schannel" version = "0.1.19" @@ -1717,39 +1696,22 @@ dependencies = [ [[package]] name = "selectors" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +checksum = "fdea87c686be721aab36607728047801ee21561bfdbd6bf0da7ace2536d5879f" dependencies = [ "bitflags", "cssparser", "derive_more", "fxhash", "log", - "matches", "phf", "phf_codegen", "precomputed-hash", "servo_arc", "smallvec", - "thin-slice", -] - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", ] -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" version = "1.0.114" @@ -1802,14 +1764,15 @@ dependencies = [ [[package]] name = "simba" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e82063457853d00243beda9952e910b82593e4b07ae9f721b9278a99a0d3d5c" +checksum = "f0b7840f121a46d63066ee7a99fc81dcabbc6105e437cae43528cea199b5a05f" dependencies = [ "approx", "num-complex", "num-traits", "paste", + "wide", ] [[package]] @@ -1826,9 +1789,9 @@ checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "smallvec" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" [[package]] name = "socket2" @@ -1895,24 +1858,6 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" -[[package]] -name = "strum" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" - -[[package]] -name = "strum_macros" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "syn" version = "1.0.78" @@ -1926,18 +1871,13 @@ dependencies = [ [[package]] name = "system-deps" -version = "3.2.0" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6" +checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709" dependencies = [ - "anyhow", "cfg-expr", "heck", - "itertools 0.10.1", "pkg-config", - "strum", - "strum_macros", - "thiserror", "toml", "version-compare", ] @@ -1976,12 +1916,6 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "thin-slice" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" - [[package]] name = "thiserror" version = "1.0.29" @@ -2164,12 +2098,6 @@ dependencies = [ "tinyvec 0.3.3", ] -[[package]] -name = "unicode-segmentation" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" - [[package]] name = "unicode-width" version = "0.1.9" @@ -2214,9 +2142,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version-compare" -version = "0.0.11" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" +checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" [[package]] name = "version_check" @@ -2316,6 +2244,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "wide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3aba2d1dac31ac7cae82847ac5b8be822aee8f99a4e100f279605016b185c5f" +dependencies = [ + "bytemuck", + "safe_arch", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/Cargo.toml b/Cargo.toml index c3d1860..60a6b5d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,13 +7,13 @@ publish = false license = "Apache-2.0 or MIT" [dependencies] -cairo-rs = { version = "0.14.9", features = ["png"] } +cairo-rs = { version = "0.15.1", features = ["png"] } cfg-if = "1.0.0" -gio = { version = "0.14.8", features = ["v2_50"] } -glib = { version = "0.14.8", features = ["v2_50"] } +gio = { version = "0.15.2", features = ["v2_50"] } +glib = { version = "0.15.2", features = ["v2_50"] } hyper = { version = "0.14.18", features = ["http2", "server"] } lazy_static = "1.4.0" -librsvg = { git = "https://gitlab.gnome.org/GNOME/librsvg", version = "2.52.1" } +librsvg = { git = "https://gitlab.gnome.org/GNOME/librsvg", version = "2.52.2" } quick-xml = "0.22.0" reqwest = { version = "0.11.10", features = ["default-tls"] } tokio = { version = "1.16.1", features = ["macros", "rt-multi-thread"] } diff --git a/Dockerfile b/Dockerfile index 2385de1..420594d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,31 @@ ARG SERVER_BINARY_NAME=squint ARG CARGO_BUILD_MODE=debug +ARG RUST_VERSION=1.60.0 -FROM rust:1.55.0 as builder +FROM buildpack-deps:jammy as builder ARG SERVER_BINARY_NAME ARG CARGO_BUILD_MODE +ARG RUST_VERSION RUN if [ "$CARGO_BUILD_MODE" != "release" ] && [ "$CARGO_BUILD_MODE" != "debug" ]; then \ echo "Invalid value for CARGO_BUILD_MODE build arg: '$CARGO_BUILD_MODE'. Must be 'debug' or 'release'" \ exit 1; \ fi -RUN apt update && apt install -y libgtk-3-dev +RUN apt update +RUN apt install -y \ + libgtk-3-dev \ + build-essential \ + libssl-dev \ + openssl \ + pkg-config\ + curl +RUN apt update + +ENV CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH \ + RUST_VERSION=${RUST_VERSION} + +RUN curl https://sh.rustup.rs -sSf | bash -s -- -y --profile minimal --default-toolchain ${RUST_VERSION} WORKDIR /usr/src/${SERVER_BINARY_NAME} # Leverage docker build cache for dependencies @@ -32,7 +48,7 @@ RUN ./reset.sh ${CARGO_BUILD_MODE} ${SERVER_BINARY_NAME} COPY . . RUN ./build.sh ${CARGO_BUILD_MODE} -FROM ubuntu:focal +FROM ubuntu:jammy ARG SERVER_BINARY_NAME ARG CARGO_BUILD_MODE ENV SERVER_BINARY_NAME=${SERVER_BINARY_NAME} diff --git a/src/graphics/raster.rs b/src/graphics/raster.rs index 98a809f..43d6839 100644 --- a/src/graphics/raster.rs +++ b/src/graphics/raster.rs @@ -5,7 +5,7 @@ use crate::badge::BadgeStyle; // for tests use self::librsvg_imports::{CairoRenderer, Loader}; use cairo::{Context, ImageSurface, Rectangle}; -use gio::{MemoryInputStream, NONE_CANCELLABLE, NONE_FILE}; +use gio::{Cancellable, File, MemoryInputStream}; use glib::Bytes; use librsvg::IntrinsicDimensions; @@ -21,15 +21,9 @@ pub enum SvgToPngConversionError { // Returns tuple with (width, height) fn get_dimensions(renderer: &CairoRenderer) -> (f64, f64) { - let IntrinsicDimensions { - width: width_dim, - height: height_dim, - .. - } = renderer.intrinsic_dimensions(); - let width = width_dim.map_or(0f64, |w| w.length); - let height = height_dim.map_or(0f64, |h| h.length); + let IntrinsicDimensions { width, height, .. } = renderer.intrinsic_dimensions(); - (width, height) + (width.length, height.length) } fn get_bytes_stream( @@ -56,7 +50,7 @@ pub(super) fn convert_svg_to_png( let stream = MemoryInputStream::from_bytes(&get_bytes_stream(svg_bytes, &badge_style, &svg_processor)?); let handle = Loader::new() - .read_stream(&stream, NONE_FILE, NONE_CANCELLABLE) + .read_stream(&stream, File::NONE, Cancellable::NONE) .map_err(|_| SvgHandleCreationFailure)?; let renderer = CairoRenderer::new(&handle); diff --git a/src/graphics/raster_test.rs b/src/graphics/raster_test.rs index 66e5047..210d58d 100644 --- a/src/graphics/raster_test.rs +++ b/src/graphics/raster_test.rs @@ -8,14 +8,19 @@ mod get_dimensions_tests { use super::{get_dimensions, CairoRenderer as MockCairoRenderer}; use librsvg::{IntrinsicDimensions, Length, LengthUnit}; + const ZERO_LENGTH: Length = Length { + length: 0f64, + unit: LengthUnit::Px, + }; + #[test] fn handles_zero_dimensions() { let mut mock_renderer = MockCairoRenderer::default(); mock_renderer .expect_intrinsic_dimensions() .return_const(IntrinsicDimensions { - width: None, - height: None, + width: ZERO_LENGTH, + height: ZERO_LENGTH, vbox: None, }); let (width, height) = get_dimensions(&mock_renderer); @@ -30,11 +35,11 @@ mod get_dimensions_tests { mock_renderer .expect_intrinsic_dimensions() .return_const(IntrinsicDimensions { - width: Some(Length { + width: Length { length: exp_width, unit: LengthUnit::Px, - }), - height: None, + }, + height: ZERO_LENGTH, vbox: None, }); let (width, height) = get_dimensions(&mock_renderer); @@ -49,11 +54,11 @@ mod get_dimensions_tests { mock_renderer .expect_intrinsic_dimensions() .return_const(IntrinsicDimensions { - width: None, - height: Some(Length { + width: ZERO_LENGTH, + height: Length { length: exp_height, unit: LengthUnit::Px, - }), + }, vbox: None, }); let (width, height) = get_dimensions(&mock_renderer);