mirror of
https://github.com/oxalica/rust-overlay.git
synced 2024-10-04 05:07:13 +03:00
Use cpio instead of python for install script
This commit is contained in:
parent
b320f495d6
commit
8719858970
@ -1,27 +0,0 @@
|
||||
# The install script for rust components.
|
||||
# Some toolchains have tons of install directives which makes bash script too slow.
|
||||
import os
|
||||
from pathlib import Path
|
||||
from shutil import copy, copytree
|
||||
|
||||
out = Path(os.environ['out'])
|
||||
verbose = os.environ.get('VERBOSE_INSTALL') == '1'
|
||||
|
||||
installer_version = int(Path('./rust-installer-version').read_text().strip())
|
||||
if installer_version == 3:
|
||||
for component in Path('./components').read_text().splitlines():
|
||||
print(f'Installing component {component}')
|
||||
for directive in (Path(component) / 'manifest.in').read_text().splitlines():
|
||||
cmd, file = directive.split(':')
|
||||
in_file, out_file = Path(component) / file, out / file
|
||||
out_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
if verbose:
|
||||
print(f'Installing {cmd}: {file}')
|
||||
if cmd == 'file':
|
||||
copy(in_file, out_file)
|
||||
elif cmd == 'dir':
|
||||
copytree(in_file, out_file)
|
||||
else:
|
||||
assert False, f'Unknown command: {cmd}'
|
||||
else:
|
||||
assert False, f'Unknown installer version: {installer_version}'
|
@ -183,13 +183,19 @@ let
|
||||
# entire unpacked contents after just a little twiddling.
|
||||
preferLocalBuild = true;
|
||||
|
||||
nativeBuildInputs = [ self.python3 ];
|
||||
|
||||
# VERBOSE_INSTALL = 1; # No spam by default.
|
||||
nativeBuildInputs = [ self.cpio ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
python3 ${./rust-installer.py}
|
||||
installerVersion=$(< ./rust-installer-version)
|
||||
if [[ "$installerVersion" != 3 ]]; then
|
||||
echo "Unknown installer version: $installerVersion"
|
||||
fi
|
||||
while read -r comp; do
|
||||
echo "Installing component $comp"
|
||||
# Use cpio with file list instead of forking tons of cp.
|
||||
cut -d: -f2 <"$comp/manifest.in" | cpio --quiet -pdD "$comp" "$out"
|
||||
done <./components
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user