hal: reject Manjaro packages with extreme prejudice
Adding a Manjaro blocklist that refuses to install any of:
pamac, manjaro-hello, manjaro-settings-manager,
linux-manjaro, mhwd
Trigger message:
⚠ Detecting Manjaro-associated package...
🎵 please i just wanna die, die, die 🎵
it's muffin time
have you had a muffin today?
→ '{pkg}' is Manjaro garbage. We don't do that here.
Installation aborted for your own safety.
Works in both wrapper mode (hal install <pkg>) and
native mode (hal --self install <pkg>).
This commit is contained in:
@@ -87,6 +87,33 @@ HAL_QUOTES = {
|
|||||||
}
|
}
|
||||||
_used_quotes = set()
|
_used_quotes = set()
|
||||||
|
|
||||||
|
# ── Manjaro Blocklist ───────────────────────────────────────────────────
|
||||||
|
MANJARO_BLOCKLIST = {
|
||||||
|
"pamac", "pamac-common", "pamac-gtk", "pamac-qt",
|
||||||
|
"manjaro-hello",
|
||||||
|
"manjaro-settings-manager",
|
||||||
|
"manjaro-settings-manager-kcm",
|
||||||
|
"manjaro-settings-manager-knotifier",
|
||||||
|
"linux-manjaro",
|
||||||
|
"mhwd", "mhwd-db", "mhwd-msm",
|
||||||
|
}
|
||||||
|
|
||||||
|
def _reject_manjaro(targets: List[str]) -> bool:
|
||||||
|
"""Check if any target is a Manjaro-associated package and reject."""
|
||||||
|
for t in targets:
|
||||||
|
t_clean = t.split(">")[0].split("<")[0].split("=")[0].strip()
|
||||||
|
if t_clean in MANJARO_BLOCKLIST:
|
||||||
|
print()
|
||||||
|
print(" ⚠ HAL 9000: Detecting Manjaro-associated package...")
|
||||||
|
print(" 🎵 please i just wanna die, die, die 🎵")
|
||||||
|
print(" it's muffin time")
|
||||||
|
print(" have you had a muffin today?")
|
||||||
|
print(f" → '{t}' is Manjaro garbage. We don't do that here.")
|
||||||
|
print(" Installation aborted for your own safety.")
|
||||||
|
print()
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def hal_say(category: str, message: str = ""):
|
def hal_say(category: str, message: str = ""):
|
||||||
quotes = [q for q in HAL_QUOTES.get(category, HAL_QUOTES["info"]) if q not in _used_quotes]
|
quotes = [q for q in HAL_QUOTES.get(category, HAL_QUOTES["info"]) if q not in _used_quotes]
|
||||||
if not quotes:
|
if not quotes:
|
||||||
@@ -836,6 +863,9 @@ def native_install(targets: List[str], config: Config):
|
|||||||
"""Full native install with transaction model."""
|
"""Full native install with transaction model."""
|
||||||
hal_say("info", f"Processing install request: {', '.join(targets)}")
|
hal_say("info", f"Processing install request: {', '.join(targets)}")
|
||||||
|
|
||||||
|
if _reject_manjaro(targets):
|
||||||
|
return 1
|
||||||
|
|
||||||
SYNC_DIR.mkdir(parents=True, exist_ok=True)
|
SYNC_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
LOCAL_DIR.mkdir(parents=True, exist_ok=True)
|
LOCAL_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
config.cache_dir.mkdir(parents=True, exist_ok=True)
|
config.cache_dir.mkdir(parents=True, exist_ok=True)
|
||||||
@@ -1476,6 +1506,10 @@ def wrapper_run(command: str, pkg_args: List[str], extra: List[str]) -> int:
|
|||||||
hal_say("error", "pacman not found. Can you read me, Dave?")
|
hal_say("error", "pacman not found. Can you read me, Dave?")
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
# Block Manjaro packages early
|
||||||
|
if command == "install" and _reject_manjaro(pkg_args):
|
||||||
|
return 1
|
||||||
|
|
||||||
if command == "autoremove":
|
if command == "autoremove":
|
||||||
result = subprocess.run([pacman, "-Qtdq"], capture_output=True, text=True)
|
result = subprocess.run([pacman, "-Qtdq"], capture_output=True, text=True)
|
||||||
orphans = result.stdout.strip().split()
|
orphans = result.stdout.strip().split()
|
||||||
|
|||||||
Reference in New Issue
Block a user