Skip to content

Commit b7b9fb1

Browse files
PyInstaller integration (#34)
* Test project.entry-points * Add 1st version of PyInstaller hooks * Package Fletd, custom host binding for Fletd * Remove pyinstaller dependency * Start Fletd without window on Windows
1 parent 3eed963 commit b7b9fb1

File tree

8 files changed

+45
-4
lines changed

8 files changed

+45
-4
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import os
2+
3+
4+
def get_hook_dirs():
5+
return [os.path.dirname(__file__)]
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import os
2+
3+
# package entire "bin" folder
4+
bin_path = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, "bin"))
5+
6+
# package "bin/fletd" only
7+
if os.getenv("PACKAGE_FLETD_ONLY"):
8+
bin_path = os.path.join(bin_path, "fletd*")
9+
10+
# binaries = [(bin_path, "flet/bin")]
11+
binaries = [(bin_path, "flet/bin")]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
'flet': [
3+
'pyi_rth_localhost_fletd.py'
4+
],
5+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import logging
2+
import os
3+
4+
logging.info("Running PyInstaller runtime hook for Flet...")
5+
6+
os.environ["FLET_SERVER_IP"] = "localhost"

sdk/python/flet/flet.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,13 +279,19 @@ def _start_flet_server(port, attached, assets_dir, web_renderer):
279279
log_level_name = logging.getLevelName(log_level).lower()
280280
args.extend(["--log-level", log_level_name])
281281

282+
startupinfo = None
283+
if is_windows():
284+
startupinfo = subprocess.STARTUPINFO()
285+
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
286+
282287
subprocess.Popen(
283288
args,
284289
env=fletd_env,
285290
creationflags=creationflags,
286291
start_new_session=start_new_session,
287292
stdout=subprocess.DEVNULL if log_level >= logging.WARNING else None,
288293
stderr=subprocess.DEVNULL if log_level >= logging.WARNING else None,
294+
startupinfo=startupinfo,
289295
)
290296

291297
return port

sdk/python/pyproject.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@ tests = [
3232
"pytest>=6.1.2",
3333
]
3434
dev = [
35-
"pre-commit>=2.17.0",
36-
]
35+
"pre-commit>=2.17.0"]
36+
37+
[project.entry-points.pyinstaller40]
38+
hook-dirs = "flet.__pyinstaller:get_hook_dirs"
3739

3840
[build-system]
3941
requires = ["pdm-pep517"]

server/config/config.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const (
2727
defaultAppURL = "http://localhost:3000"
2828
defaultServerPort = 8550
2929
serverPort = "SERVER_PORT"
30+
serverIP = "SERVER_IP"
3031
forceSSL = "FORCE_SSL"
3132
defaultWebSocketMaxMessageSize = 2097152 // 2 MB
3233
wsMaxMessageSize = "WS_MAX_MESSAGE_SIZE"
@@ -170,6 +171,10 @@ func ServerPort() int {
170171
return viper.GetInt(serverPort)
171172
}
172173

174+
func ServerIP() string {
175+
return viper.GetString(serverIP)
176+
}
177+
173178
func MaxWebSocketMessageSize() int {
174179
return viper.GetInt(wsMaxMessageSize)
175180
}

server/server/server.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,12 @@ func Start(ctx context.Context, wg *sync.WaitGroup, serverPort int) {
126126
}
127127
})
128128

129-
log.Println("Starting server on port", serverPort)
129+
addr := fmt.Sprintf("%s:%d", config.ServerIP(), serverPort)
130+
log.Println("Starting server on", addr)
130131

131132
// Start and run the server
132133
srv := &http.Server{
133-
Addr: fmt.Sprintf(":%d", serverPort),
134+
Addr: addr,
134135
Handler: router,
135136
}
136137

0 commit comments

Comments
 (0)