If binrepos.conf src-uri supports file:// then it can be used to configure local binary package repositories.
I managed to get this working by supplying the FETCHCOMMAND_FILE and RESUMECOMMAND_FILE in binrepos.conf, which consists of: [lto-binpkg] sync-uri=file:///var/cache/binpkg-host FETCHCOMMAND_FILE="/usr/bin/curl -o \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" RESUMECOMMAND_FILE="/usr/bin/curl -C - -o \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" The key point was to NOT have quotes around the sync-uri, like having the following fails: sync-uri="file:///var/cache/binpkg-host"
Hmm, it seems I was mistaken, the above method did not work on retrying. What did work was instead changing FETCHCOMMAND and RESUMECOMMAND in make.conf to the values: FETCHCOMMAND_FILE="/usr/bin/curl -o \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" RESUMECOMMAND_FILE="/usr/bin/curl -C - -o \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" and in binrepos.conf: [lto-binpkg] sync-uri=file:///var/cache/binpkg-host This way all fetching is done by curl which also supports the file:// protocol.
So many typos.... OK, the way it actually worked - make.conf: FETCHCOMMAND="/usr/bin/curl -o \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" RESUMECOMMAND="/usr/bin/curl -C - -o \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" binrepos.conf (needs to be without quotes): [lto-binpkg] sync-uri=file:///var/cache/binpkg-host
In binrepos.conf, lowercase fetchcommand and resumecommand attributes are supported by this patch from bug 668302: https://gitweb.gentoo.org/proj/portage.git/commit/?id=5ebc8a249b08318da5a2ca89cee2eed604f7e639
With the new information from Zac, the following is my configuration in /etc/binrepos.conf: [lto-binpkg] sync-uri=file:///var/cache/binpkg-host fetchcommand=/usr/bin/curl --fail --output \${DISTDIR}/\${FILE} \${URI} resumecommand=/usr/bin/curl -fail --continue-at - --output \${DISTDIR}/\${FILE} \${URI}
This was done in bug 920537.