From 3a85499b113b3215cb2646b1e62c46b8157e0935 Mon Sep 17 00:00:00 2001 From: Ashwin Naren Date: Sat, 28 Jun 2025 10:50:05 -0700 Subject: [PATCH] Display logo on windows executable (#5790) --- Cargo.lock | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 3 +++ build.rs | 17 +++++++++++++ logo.ico | Bin 0 -> 4286 bytes 4 files changed, 90 insertions(+) create mode 100644 build.rs create mode 100644 logo.ico diff --git a/Cargo.lock b/Cargo.lock index b05d7b93e..f05973255 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2255,6 +2255,7 @@ dependencies = [ "rustpython-stdlib", "rustpython-vm", "rustyline", + "winresource", ] [[package]] @@ -2716,6 +2717,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + [[package]] name = "sha-1" version = "0.10.1" @@ -3012,6 +3022,47 @@ dependencies = [ "shared-build", ] +[[package]] +name = "toml" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + [[package]] name = "twox-hash" version = "1.6.3" @@ -3641,6 +3692,15 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "winnow" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.55.0" @@ -3651,6 +3711,16 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "winresource" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba4a67c78ee5782c0c1cb41bebc7e12c6e79644daa1650ebbc1de5d5b08593f7" +dependencies = [ + "toml", + "version_check", +] + [[package]] name = "winsafe" version = "0.0.19" diff --git a/Cargo.toml b/Cargo.toml index c9e712570..1fdc77d26 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,9 @@ ssl = ["rustpython-stdlib/ssl"] ssl-vendor = ["ssl", "rustpython-stdlib/ssl-vendor"] tkinter = ["rustpython-stdlib/tkinter"] +[build-dependencies] +winresource = "0.1" + [dependencies] rustpython-compiler = { workspace = true } rustpython-pylib = { workspace = true, optional = true } diff --git a/build.rs b/build.rs new file mode 100644 index 000000000..adebd659a --- /dev/null +++ b/build.rs @@ -0,0 +1,17 @@ +fn main() { + if std::env::var("CARGO_CFG_TARGET_OS").unwrap() == "windows" { + println!("cargo:rerun-if-changed=logo.ico"); + let mut res = winresource::WindowsResource::new(); + if std::path::Path::new("logo.ico").exists() { + res.set_icon("logo.ico"); + } else { + println!("cargo:warning=logo.ico not found, skipping icon embedding"); + return; + } + res.compile() + .map_err(|e| { + println!("cargo:warning=Failed to compile Windows resources: {e}"); + }) + .ok(); + } +} diff --git a/logo.ico b/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..24cbb8c3789630cde04b09111eddb23f41498559 GIT binary patch literal 4286 zcmcJSdrVVT9LG<2tW1O=G9JdPJSJHt6ynB!ij>K4XzQGkFs2MKIHiE%W^~Kc6~~rk zz6OyEhcoVB7KRa*MHk{D;~!=mi2_k4*{lDJESj=&>Wo3ta_}z03 z_xJhT(|b=ZjA`(boXqGq>x^M6o-y_~zz{0}H127bOEZXw0|ETD2#i^TNRTSU2*gl8 z;{hZH@=rvM0j|^F3^)Z&fPJ7Cgn=L>eohzt^Wm@o3tJ&9WhKH3>^WfvTP|EcT+3F& zZ}`Vgk|3r;e+b+UnSSH!*%2OX`jwZMe&H{sed6j!*z5c*x8I#raDzuLzQ#2m2$|PY z!!a7ZBW9pIjT~D+S<>2uhWsmz zKl85$9JzfVV6G2TfCvz539(3!0OC_#{~*VBb^K=TrBRQ&;5up`yw@^@@xvfy25RuE zWhv*(I5cTC4o;kb_xnY??%Vk6Zz2C(;H{2HjPC>C!0$R7v1T&~9bzs>2O)eIr&$EL z|5(hn3C2-F>`rHbw$jlUR_?f**z7D_GR%vRe=neWU>qoGxr6>X;P-xz+;b5-!5v`# z*lH+aC7kw~2CyA$0S7=2GYj2#7K_dFIA%;KPD|4VQP>;TVz*FVmd5N&X1L3o3tI5dJW@x)pw^<1O+N%BJw2SNVgv ze)1dv^7T_}B{!jLlAk{RQ!0OpG^hOY2Oi4~#5SPxQ{R`L?*Bb1|1kO~RKs+d>_DXb zSLvtzeSXSK4v+_K1L^tq#JADcfPhQD-t2L}wO!?>zCS-b17E59zoTy=KM_#FzEt=# zeOK^#@Erp;q?km0Z%xjRSOjhX2tV=~>j0 z+n1kelJbWl?gvUg9n-UUe+~DXDR8a_AA)mW1bhK#@AP)bUdP~|Iue2US)>{UK?R5g zENuBWW6QXfnI|_hv+E+_ab|Ycu@yWY-x<~Lz6s|32S3%239bV5I*ehg7wkS-x3JP$ z{n~ql6-`#Fq zM91z9tHDLF-J0!c-Dvo`y*7Ji+omj5Tbe>T4WRePfE#kjHDuuUG*Emm`>e-PSKB57 zKe!>|dP0o00>YJGGbj&OF8!gR2Ku}=f**hb$k&gU#XGE-o=D@kZr)Op$#Lyx^^eS2 zfK+KX(&VwTG z|N7O}BKqk6;wON(|M<9m-i$Z;CYwl$j`QSDyy4?DpD`OBWv0;{X0o$ty>AD;A(E^Y(PjG=K9OxU literal 0 HcmV?d00001