@ -23,22 +23,31 @@ lib.overrideDerivation (fetchurl ({
''
export PATH = $ { unzip } /bin : $ PATH
mkdir $ out
cd $ out
renamed = " $ T M P D I R / ${ baseNameOf url } "
unpackDir = " $ T M P D I R / u n p a c k "
mkdir " $ u n p a c k D i r "
cd " $ u n p a c k D i r "
renamed = " $ T M P D I R / $ n a m e "
mv " $ d o w n l o a d e d F i l e " " $ r e n a m e d "
unpackFile " $ r e n a m e d "
''
# FIXME: handle zip files that contain a single regular file.
+ lib . optionalString stripRoot ''
shopt - s dotglob
if [ " $ ( l s - d $ o u t / * | w c - l ) " != 1 ] ; then
echo " e r r o r : z i p f i l e m u s t c o n t a i n a s i n g l e d i r e c t o r y . "
''
+ ( if stripRoot then ''
if [ $ ( ls " $ u n p a c k D i r " | wc - l ) != 1 ] ; then
echo " e r r o r : z i p f i l e m u s t c o n t a i n a s i n g l e f i l e o r d i r e c t o r y . "
exit 1
fi
fn = $ ( cd " $ o u t " && echo * )
mv $ out / $ fn /* " $ o u t / "
rmdir " $ o u t / $ f n "
'' ;
} // args ) )
fn = $ ( cd " $ u n p a c k D i r " && echo * )
if [ - f " $ u n p a c k D i r / $ f n " ] ; then
mv " $ u n p a c k D i r / $ f n " " $ o u t "
else
mv " $ u n p a c k D i r / $ f n " /* " $ o u t / "
fi
'' e l s e ''
mv " $ u n p a c k D i r " /* " $ o u t / "
'' ) ;
} // removeAttrs args [ " s t r i p R o o t " ] ) )
# Hackety-hack: we actually need unzip hooks, too
( x : { nativeBuildInputs = x . nativeBuildInputs ++ [ unzip ] ; } )