Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ In general, contributors should develop on branches based off of `main` and pull

```bash
git clone https://github.com/<username>/qcom-build-utils.git
```
```

1. Create a new branch based on `main`:

```bash
```bash
git checkout -b <my-branch-name> main
```

Expand Down
25 changes: 12 additions & 13 deletions ubuntu/apt_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,18 @@
The server is built using Python's built-in `http.server` and `socketserver` modules, and it can
be run in a separate thread to allow for concurrent operations.
'''
import http.server
from http.server import SimpleHTTPRequestHandler
import socketserver
import threading
import os
import socket
import logging
from color_logger import logger

logger = logging.getLogger("APT-LOCAL")

logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s || %(levelname)s || %(message)s",
datefmt="%H:%M:%S"
)
class QuietHTTPRequestHandler(SimpleHTTPRequestHandler):
def log_message(self, format, *args):
# Silently drop all the logging. This is a bit of a hack, but the HTTP server's
# thread is a bit noisy and we don't want to clutter the output.
pass

class AptServer:
def __init__(self, port=8000, directory="debian_packages", max_retries=10):
Expand Down Expand Up @@ -61,17 +59,18 @@ def start(self):
for attempt in range(self.max_retries):
self.port = self.port + 1
try:
handler = lambda *args, **kwargs: http.server.SimpleHTTPRequestHandler(*args, directory=self.directory, **kwargs)
# Use the quiet log handler
handler = lambda *args, **kwargs: QuietHTTPRequestHandler(*args, directory=self.directory, **kwargs)
httpd = socketserver.TCPServer(("", self.port), handler)
logger.info(f"Serving {self.directory} as HTTP on port {self.port}...")
logger.debug(f"Serving {self.directory} as HTTP on port {self.port}...")
server_thread = threading.Thread(target=httpd.serve_forever, daemon=True)
server_thread.start()
return server_thread
except OSError as e:
print(e)
if isinstance(e, socket.error) or "Address already in use" in str(e):
logger.warning(f"Port {self.port} is in use. Retrying... ({attempt + 1}/{self.max_retries})")
else:
raise Exception(e)
logger.error(f"Error starting server on port {self.port}: {e}")
raise e

raise RuntimeError(f"Could not start server on port {self.port} after {self.max_retries} retries.")
Loading
Loading