Anthony Coulter <[email protected]> wrote:
> Hello @tech,
>
> When I manually upgrade OpenBSD using bsd.rd, I have to set http_proxy
> to fetch the file sets. When I reboot after installing, fw_update
> succeeds because theinstall script was clever enough to export
> http_proxy in /etc/rc.firsttime.
>
> Unfortunately sysupgrade(8) does not remember that http_proxy was set
> when it fetched the file sets, and so when I run sysupgrade I have to
> either wait for fw_update to manually time out on first reboot, or kill
> it manually with ^C.
>
> Adding the line:
>
> [ ${http_proxy} ] && echo "export http_proxy=${http_proxy}"
> >>/etc/rc.firsttime
>
> to a spot near the bottom of /usr/sbin/sysupgrade fixes my fw_update
> problem, at least until the upgrade restores all of my files to their
> stock defaults. Is this something we could integrate into the official
> repository?
>
> Thanks and regards,
> Anthony Coulter
Here it is in patch form in case there is interest. This also pulls in the
quote function from install.sub to make sure a proxy username or password is
quoted properly. I haven't tested this since I could only use it at work.
Tim.
Index: sysupgrade.sh
===================================================================
RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v
retrieving revision 1.29
diff -u -p -r1.29 sysupgrade.sh
--- sysupgrade.sh 26 Oct 2019 04:04:20 -0000 1.29
+++ sysupgrade.sh 2 Nov 2019 00:39:05 -0000
@@ -73,6 +73,16 @@ rmel() {
echo -n "$_c"
}
+# Prints the supplied parameters properly escaped for future sh/ksh parsing.
+# Quotes are added if needed, so you should not do that yourself.
+quote() (
+ # Since this is a subshell we won't pollute the calling namespace.
+ for _a; do
+ alias Q=$_a; _a=$(alias Q); print -rn -- " ${_a#Q=}"
+ done | sed '1s/ //'
+ echo
+)
+
RELEASE=false
SNAP=false
FORCE=false
@@ -199,6 +209,9 @@ if ! ${KEEP}; then
rm -f /home/_sysupgrade/{${CLEAN}}
__EOT
fi
+
+[[ -n $http_proxy ]] &&
+ quote export "http_proxy=$http_proxy" >>/etc/rc.firsttime
install -F -m 700 bsd.rd /bsd.upgrade
sync