From fa671b01476a80e12b09e9e3adb2b1b309d7df73 Mon Sep 17 00:00:00 2001 From: Tinic Uro Date: Thu, 1 Oct 2026 01:26:26 -0700 Subject: [PATCH] installer: name a drawer install's drivers through AmiNetXDuo: A drawer install wrote DEVICE=/Devs/Networks/anx*.device, an absolute path, while it names its commands through the AmiNetXDuo: assign. Moving the assign to a new drawer then ran the new library with the old drawer's drivers. On the A1200 that was a 144042c anxnet/anxgenet under d6b6a7e7: both interfaces register and no frame crosses (ne2000_pcmcia pairing, playhouse3: new driver passes, old driver tx 0 / rx 0), so DHCP never completes. The DEVICE= line now names AmiNetXDuo:Devs/Networks/... in drawer mode; the system layout is unchanged. run-workbench.sh -D accepts that form and fails a drawer install that writes anything else for an anx driver. Co-Authored-By: Claude Opus 5.5 --- install/Install-AmiNetXDuo | 19 +++++++++++++++---- install/test/run-workbench.sh | 15 +++++++++++++-- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/install/Install-AmiNetXDuo b/install/Install-AmiNetXDuo index b283559f9..731ce1b5c 100644 --- a/install/Install-AmiNetXDuo +++ b/install/Install-AmiNetXDuo @@ -686,19 +686,19 @@ (set DEV_WRITE dev_write) (if (AND (= CARD_INDEX 0) DO_ANXNET) - (set DEV_WRITE D_ANXGENET) + (set DEV_WRITE W_ANXGENET) (if (AND (= CARD_INDEX 11) DO_ANXNET) - (set DEV_WRITE D_ANXWIFIPI) + (set DEV_WRITE W_ANXWIFIPI) (if (AND (= CARD_INDEX 1) (= dev_present 0) DO_ANXNET HAVE_ANXZZ9000) ; MNT's ZZ9000Net.device is absent and this archive carries the ; supplied driver for the card: its own image, no CARD= key -- it ; drives nothing else. An archive without it falls through to the ; missing-driver warning below, like any other card. - (set DEV_WRITE D_ANXZZ9000) + (set DEV_WRITE W_ANXZZ9000) (if (= dev_present 0) (if (AND DO_ANXNET (> (strlen CARD_KEY) 0)) ( - (set DEV_WRITE D_ANX) + (set DEV_WRITE W_ANX) (set USE_CARD 1) ) (if WARN_DRIVER @@ -1198,6 +1198,17 @@ (set D_ANXGENET (tackon (tackon D_DEVS "Networks") "anxgenet.device")) (set D_ANXWIFIPI (tackon (tackon D_DEVS "Networks") "anxwifipi.device")) (set D_ANXZZ9000 (tackon (tackon D_DEVS "Networks") "anxzz9000.device")) + +; What a DEVICE= line names. A drawer install names its drivers through the +; AmiNetXDuo: assign, as it names its commands (C_PREFIX): moving the assign +; to another drawer then moves the drivers with the library. The absolute +; drawer path kept the old drawer's drivers under the new library. +(set W_NETWORKS (tackon D_DEVS "Networks")) +(if DRAWER_LAYOUT (set W_NETWORKS "AmiNetXDuo:Devs/Networks")) +(set W_ANX (tackon W_NETWORKS "anxnet.device")) +(set W_ANXGENET (tackon W_NETWORKS "anxgenet.device")) +(set W_ANXWIFIPI (tackon W_NETWORKS "anxwifipi.device")) +(set W_ANXZZ9000 (tackon W_NETWORKS "anxzz9000.device")) (set D_BSD_OLD (cat D_BSD ".old")) (set D_UG_OLD (cat D_UG ".old")) (set D_TLS_OLD (cat D_TLS ".old")) diff --git a/install/test/run-workbench.sh b/install/test/run-workbench.sh index fce1f7fd6..39e757351 100755 --- a/install/test/run-workbench.sh +++ b/install/test/run-workbench.sh @@ -2015,7 +2015,7 @@ if [ -n "$EXPECTED_SECOND_IF" ]; then _second_device=$(sed -n 's/^DEVICE=//p' "$_second_real" 2>/dev/null | head -1 | tr -d '\r' | sed 's/[[:space:]]*$//') case "$_second_device" in - "$EXPECTED_SECOND_DEVICE"|"DEVS:Networks/$EXPECTED_SECOND_DEVICE") ;; + "$EXPECTED_SECOND_DEVICE"|"DEVS:Networks/$EXPECTED_SECOND_DEVICE"|"AmiNetXDuo:Devs/Networks/$EXPECTED_SECOND_DEVICE") ;; *) echo "!! $EXPECTED_SECOND_IF uses ${_second_device:-no device}; wanted $EXPECTED_SECOND_DEVICE" fail=1 ;; esac @@ -2675,6 +2675,17 @@ if [ -n "$IFACE_FILE" ] && [ -f "$IFACE_FILE" ]; then tr -d '\r' | sed 's/[[:space:]]*$//') fi +# A drawer install names its own drivers through the AmiNetXDuo: assign, so +# moving the assign to another drawer moves the drivers with the library. +case "$DRAWER:$INSTALLER_DEVICE" in + 1:*anx*.device) + case "$INSTALLER_DEVICE" in + AmiNetXDuo:Devs/Networks/*) ;; + *) echo "!! drawer install wrote DEVICE=$INSTALLER_DEVICE; wanted AmiNetXDuo:Devs/Networks/..." + fail=1 ;; + esac ;; +esac + CARD_SELECTED=no MANUAL_ACTUAL_CARD="" if [ "$MANUAL_CARD" = "1" ]; then @@ -2686,7 +2697,7 @@ if [ "$MANUAL_CARD" = "1" ]; then esac elif [ -n "$EXPECTED_AUTO_DEVICE" ]; then case "$INSTALLER_DEVICE" in - "$EXPECTED_AUTO_DEVICE"|"DEVS:Networks/$EXPECTED_AUTO_DEVICE") + "$EXPECTED_AUTO_DEVICE"|"DEVS:Networks/$EXPECTED_AUTO_DEVICE"|"AmiNetXDuo:Devs/Networks/$EXPECTED_AUTO_DEVICE") CARD_SELECTED=yes ;; esac else