mirror of
https://git.launchpad.net/~vhaudiquet/+git/flutter-artifacts-proxy
synced 2026-02-12 01:25:53 +00:00
Multiple changes:
- Stop ignoring static index file - Automatically pull flutter artifacts from Launchpad - Allow nginx to list files in directories
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -7,4 +7,4 @@ __pycache__/
|
|||||||
*.py[cod]
|
*.py[cod]
|
||||||
.idea
|
.idea
|
||||||
.vscode/
|
.vscode/
|
||||||
src/static/
|
src/static/flutter_infra_release/
|
||||||
@@ -26,4 +26,15 @@ parts:
|
|||||||
source: .
|
source: .
|
||||||
build-snaps:
|
build-snaps:
|
||||||
- astral-uv
|
- astral-uv
|
||||||
|
|
||||||
|
flutter-3.38.9:
|
||||||
|
plugin: nil
|
||||||
|
build-packages:
|
||||||
|
- curl
|
||||||
|
override-pull: |
|
||||||
|
curl -L -O https://code.launchpad.net/~vhaudiquet/+git/flutter/+artifact/436865/+files/flutter-artifacts-riscv64.tar.gz
|
||||||
|
override-build: |
|
||||||
|
tar -C $CRAFT_PART_SRC -xzf flutter-artifacts-riscv64.tar.gz
|
||||||
|
override-prime: |
|
||||||
|
mkdir -p $CRAFT_PRIME/src/static/flutter_infra_release/flutter/587c18f873b8ab57330422bce09047420d9c7f42/
|
||||||
|
mv $CRAFT_PART_SRC/output/* $CRAFT_PRIME/src/static/flutter_infra_release/flutter/587c18f873b8ab57330422bce09047420d9c7f42/
|
||||||
|
|||||||
@@ -17,13 +17,12 @@ from charmlibs import apt, pathops
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
CONFIG_FILE = pathops.LocalPath("/etc/nginx/nginx.conf")
|
|
||||||
PID_FILE = pathops.LocalPath("/usr/local/nginx/logs/nginx.pid")
|
|
||||||
|
|
||||||
# Get the charm directory dynamically
|
# Get the charm directory dynamically
|
||||||
CHARM_DIR = Path(__file__).parent.parent
|
CHARM_DIR = Path(__file__).parent.parent
|
||||||
STATIC_SOURCE_DIR = CHARM_DIR / "src" / "static"
|
STATIC_SOURCE_DIR = CHARM_DIR / "src" / "static"
|
||||||
|
|
||||||
|
CONFIG_FILE = pathops.LocalPath("/etc/nginx/nginx.conf")
|
||||||
|
PID_FILE = pathops.LocalPath(CHARM_DIR / "nginx.pid")
|
||||||
|
|
||||||
def ensure_config() -> bool:
|
def ensure_config() -> bool:
|
||||||
"""Ensure that nginx is configured. Return True if any changes were made."""
|
"""Ensure that nginx is configured. Return True if any changes were made."""
|
||||||
@@ -39,6 +38,7 @@ http {{
|
|||||||
listen 80;
|
listen 80;
|
||||||
root '{STATIC_SOURCE_DIR}';
|
root '{STATIC_SOURCE_DIR}';
|
||||||
location / {{
|
location / {{
|
||||||
|
autoindex on;
|
||||||
try_files $uri $uri/ @external;
|
try_files $uri $uri/ @external;
|
||||||
}}
|
}}
|
||||||
location @external {{
|
location @external {{
|
||||||
@@ -54,7 +54,9 @@ def install() -> None:
|
|||||||
"""Install nginx apt package."""
|
"""Install nginx apt package."""
|
||||||
apt.update()
|
apt.update()
|
||||||
apt.add_package("nginx", "1.18.0-6ubuntu14.7")
|
apt.add_package("nginx", "1.18.0-6ubuntu14.7")
|
||||||
|
subprocess.check_output(["service", "nginx", "stop"])
|
||||||
|
os.remove("/etc/nginx/nginx.conf")
|
||||||
|
os.unlink("/etc/nginx/sites-enabled/default")
|
||||||
|
|
||||||
def is_installed() -> bool:
|
def is_installed() -> bool:
|
||||||
"""Check if nginx is installed."""
|
"""Check if nginx is installed."""
|
||||||
|
|||||||
53
src/static/index.html
Normal file
53
src/static/index.html
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Flutter Artifacts Proxy</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 50px auto;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
color: #02569B;
|
||||||
|
}
|
||||||
|
.info-box {
|
||||||
|
background-color: #f0f7ff;
|
||||||
|
border-left: 4px solid #02569B;
|
||||||
|
padding: 15px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
code {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
padding: 2px 6px;
|
||||||
|
border-radius: 3px;
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Flutter Artifacts Proxy</h1>
|
||||||
|
|
||||||
|
<div class="info-box">
|
||||||
|
<p><strong>Welcome!</strong> This is a Flutter artifacts hosting proxy.</p>
|
||||||
|
<p>It serves local Flutter artifacts first, and falls back to Google's storage servers for files not found locally.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>How it works</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Local files are served directly, missing files are proxied to <code>https://storage.googleapis.com</code></li>
|
||||||
|
<li>This is particularly useful for riscv64 Flutter builds that Google doesn't host yet</li>
|
||||||
|
<li>Flutter can be built for riscv64 using the following patch: <a href="https://github.com/flutter/flutter/pull/178712">PR #178712</a> (as well as a Swiftshader patch)</li>
|
||||||
|
<li>The upstream/master Flutter tool supports riscv64, but older versions will need: <a href="https://github.com/flutter/flutter/pull/178711">PR #178711</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Hosted artifacts:</h2>
|
||||||
|
<h3>Flutter 3.38.9 - <a href="flutter_infra_release/flutter/587c18f873b8ab57330422bce09047420d9c7f42/">587c18f873b8ab57330422bce09047420d9c7f42</a></h3>
|
||||||
|
<p style="margin-left: 20px;"><a href="https://code.launchpad.net/~vhaudiquet/+git/flutter/+build/207763">Launchpad build</a></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user