From da8971b0601e36ed09437ea6ad3279e0ceb0774d Mon Sep 17 00:00:00 2001 From: Ashwin Naren Date: Sat, 17 May 2025 06:28:35 +0000 Subject: [PATCH 1/5] display logo on windows executable --- .devcontainer/{DOCKERFILE => Dockerfile} | 0 Cargo.lock | 70 +++++++++++++++++++++++ Cargo.toml | 3 + build.rs | 7 +++ logo.ico | Bin 0 -> 4286 bytes 5 files changed, 80 insertions(+) rename .devcontainer/{DOCKERFILE => Dockerfile} (100%) create mode 100644 build.rs create mode 100644 logo.ico diff --git a/.devcontainer/DOCKERFILE b/.devcontainer/Dockerfile similarity index 100% rename from .devcontainer/DOCKERFILE rename to .devcontainer/Dockerfile diff --git a/Cargo.lock b/Cargo.lock index 63608aefb96..9aee27fb415 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2286,6 +2286,7 @@ dependencies = [ "rustpython-stdlib", "rustpython-vm", "rustyline", + "winresource", ] [[package]] @@ -2747,6 +2748,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" @@ -3043,6 +3053,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" @@ -3666,6 +3717,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" @@ -3676,6 +3736,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 163289e8b26..1766738ced3 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 00000000000..79ba3027746 --- /dev/null +++ b/build.rs @@ -0,0 +1,7 @@ +fn main() { + if std::env::var("CARGO_CFG_TARGET_OS").unwrap() == "windows" { + let mut res = winresource::WindowsResource::new(); + res.set_icon("logo.ico"); + res.compile().unwrap(); + } +} \ No newline at end of file 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 From 27e83c405c1638497e460bae9dc740b99987dd00 Mon Sep 17 00:00:00 2001 From: Ashwin Naren Date: Sat, 28 Jun 2025 09:26:03 -0700 Subject: [PATCH 2/5] formatting --- build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.rs b/build.rs index 79ba3027746..9a6b3c2b338 100644 --- a/build.rs +++ b/build.rs @@ -4,4 +4,4 @@ fn main() { res.set_icon("logo.ico"); res.compile().unwrap(); } -} \ No newline at end of file +} From e9edb19ca3b9400359366ea8c99ccab35472c797 Mon Sep 17 00:00:00 2001 From: Ashwin Naren Date: Sat, 28 Jun 2025 09:29:51 -0700 Subject: [PATCH 3/5] apply suggestions --- build.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/build.rs b/build.rs index 9a6b3c2b338..b84aa698f25 100644 --- a/build.rs +++ b/build.rs @@ -1,7 +1,16 @@ fn main() { if std::env::var("CARGO_CFG_TARGET_OS").unwrap() == "windows" { let mut res = winresource::WindowsResource::new(); - res.set_icon("logo.ico"); - res.compile().unwrap(); + 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(); } } From bc564b063f6546e9d3f97b3dd7db43d640cabbe2 Mon Sep 17 00:00:00 2001 From: Ashwin Naren Date: Sat, 28 Jun 2025 09:33:59 -0700 Subject: [PATCH 4/5] Make clippy happy --- build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.rs b/build.rs index b84aa698f25..05a40ce6d74 100644 --- a/build.rs +++ b/build.rs @@ -9,7 +9,7 @@ fn main() { } res.compile() .map_err(|e| { - println!("cargo:warning=Failed to compile Windows resources: {}", e); + println!("cargo:warning=Failed to compile Windows resources: {e}"); }) .ok(); } From ca874988e72c4de8cdabc824a4201bfbe3839fba Mon Sep 17 00:00:00 2001 From: Ashwin Naren Date: Sat, 28 Jun 2025 10:18:36 -0700 Subject: [PATCH 5/5] rerun build.rs if logo is changed --- build.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/build.rs b/build.rs index 05a40ce6d74..adebd659ade 100644 --- a/build.rs +++ b/build.rs @@ -1,5 +1,6 @@ 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");