diff --git a/repo/ttf-ms-win10-auto/PKGBUILD b/repo/ttf-ms-win10-auto/PKGBUILD index d7f62f0..e3686d1 100644 --- a/repo/ttf-ms-win10-auto/PKGBUILD +++ b/repo/ttf-ms-win10-auto/PKGBUILD @@ -1,4 +1,5 @@ # Maintainer: RubenKelevra +# Contributor: jprt # Contributor: Zepman # Contributor: Michael Lass # Contributor: Doug Newgard @@ -7,22 +8,23 @@ # BUILD INSTRUCTIONS: # ------------------- # -# Please note, that usage of Microsoft fonts outside running Windows -# system is prohibited by EULA (although in certain countries EULA is invalid). -# Please consult Microsoft license before using fonts. +# Please note that the usage of Microsoft fonts outside the Windows system is prohibited +# by EULA (although in certain countries, EULA is invalid). +# Please consult the Microsoft license before using fonts. # -# This PKGBUILD attempts to download fonts directly from Microsoft, by -# retrieving selective parts of the Windows 10 Enterprise 90-day evaluation -# edition. This only works if the user is allowed to mount filesystems through -# udisks2. This is determined by Polkit, which by default only allows users to -# do this when they are logged in locally (e.g. not through SSH). +# This PKGBUILD attempts to download fonts directly from Microsoft, by retrieving +# selective parts of the Windows 10 Enterprise 90-day evaluation edition. This only works +# if the user is allowed to mount filesystems through udisks2. This is determined by +# Polkit, which by default only allows users to do this when they are logged in locally +# (e.g., not through SSH). # -# If it is possible to download fonts directly, around 200 MiB of data will be -# downloaded. Downloading the fonts this way can take 8-20 minutes, even on a -# fast connection. Be patient. Note that for tis method, it is necessary to -# mount an HTTP source and an ISO file as a loop device using FUSE. If the -# build fails, it might be that these must be unmounted manually. This can be -# done with: +# If it is possible to download fonts directly, around 200 MB of data will be downloaded. +# Downloading the fonts this way can take 8–20 minutes, even on a fast connection. Be +# patient. Note that for this method, it is necessary to mount an HTTP source and an ISO +# file as a loop device using FUSE. If the build fails, it might be that these must be +# unmounted manually. If you rerun the build, this cleanup is done automatically. +# +# To clean up manually run: # # $ udisksctl unmount -b /dev/loop0 # $ udisksctl loop-delete -b /dev/loop0 @@ -31,41 +33,41 @@ # Replace /dev/loop0 with the relevant loop device, which is reported during # package build. # -# For the download, HTTP is used instead of HTTPS due to that httpfs2 does not -# support modern TLS versions. A file integrity check is performed after -# download. Due to the unconventional way that the data is downloaded, the -# verification is done in prepare(). +# For the download, HTTP is used instead of HTTPS because httpfs2 does not support modern +# TLS versions. A file integrity check is performed after the download. Due to the +# unconventional way that the data is downloaded, the verification is done in prepare(). # -# If fonts cannot be downloaded directly, the ISO fill will be fully -# downloaded. Due to that install.wim will be extracted from the ISO, it is -# assumed that twice its size (almost 8 GiB) is necessary as temporary disk -# space. A free disk space check is performed before the ISO is downloaded. +# If fonts cannot be downloaded directly, the ISO fill will be fully downloaded. Due to +# that install.wim will be extracted from the ISO, it is assumed that twice its size +# (almost 8 GiB) is necessary as temporary disk space. A free disk space check is +# performed before the ISO is downloaded. # -# Please ignore any 'ln' errors when building this package. This is expected -# behavior. +# Please ignore any 'ln' errors when building this package. This is expected behavior. # -# If for some reason you want to download the full ISO file, please visit: +# If, for some reason, you want to download the full ISO file, please visit: # # http://www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise # -# This package is based on ttf-ms-win10. Use that package if font files from -# a local source need to be used. +# This package is based on ttf-ms-win10. Use that package if font files from a local +# source need to be used. # # ttf-ms-win10 is considered to be upstream for this package, which is why its # maintainers and contributors are added as contributors to this package. -# Without their effort this package would not exist, nor be updated. +# Without their effort, this package would not exist or be updated. # + + pkgbase=ttf-ms-win10-auto pkgname=($pkgbase{,-japanese,-korean,-sea,-thai,-zh_cn,-zh_tw,-other}) pkgver=10.0.19042.789 -pkgrel=6 +pkgrel=7 arch=(any) url='http://www.microsoft.com/typography/fonts/product.aspx?PID=164' license=(custom) provides=(ttf-font ttf-ms-win10) conflicts=(ttf-vista-fonts ttf-ms-win11-auto ttf-ms-win11) -makedepends=(udisks2 p7zip httpfs2-2gbplus) +makedepends=(udisks2 p7zip httpfs2-2gbplus wget udftools util-linux) # URL of ISO file from which to extract the fonts. # Must be HTTP due to limitations of httpfs2. @@ -392,14 +394,30 @@ prepare() { if [ $_mount ]; then echo "allowed" + + echo "- Checking for old loop devices created by by this package" + for loop_device in $(losetup --list | grep "${pkgbase}" | awk '{print $1}') + do + echo -ne " - deleting '$loop_device'..." + udisksctl loop-delete -b "$loop_device" + echo " done." + done + + for fuse_mount_points in $(cat /etc/mtab | grep "${pkgbase}" | awk '{print $2}') + do + echo -ne " - unmounting '$fuse_mount_points'..." + fusermount -u "$fuse_mount_points" + echo " done." + done + echo "- Downloading fonts directly" mkdir -p mnt/http echo " - Mounting HTTP file" httpfs2 -c /dev/null "$_iso" mnt/http echo " - Creating loop device" _isoFile="mnt/http/$(echo "$_iso" | awk -F "/" '{print $NF}')" - _loopDev=$(udisksctl loop-setup -r -f "${_isoFile}" --no-user-interaction | awk '{print $NF}') - _loopDev=${_loopDev::-1} + _loopDev=$(udisksctl loop-setup -r -f "${_isoFile}" --no-user-interaction 2>/dev/null | awk '{print $NF}') + _loopDev=$(losetup --list | grep "$_isoFile" | awk '{print $1}') echo " - Mounting loop device: $_loopDev" _mountpoint=$(udisksctl mount -t udf -b "$_loopDev" --no-user-interaction | awk '{print $NF}') echo " - Loop device mounted as ISO at: $_mountpoint" @@ -410,10 +428,23 @@ prepare() { echo " - Unmounting loop device $_loopDev as ISO at: $_mountpoint" udisksctl unmount -b "$_loopDev" --no-user-interaction - echo " - Deleting loop device: $_loopDev" - udisksctl loop-delete -b "$_loopDev" --no-user-interaction - echo " - Unmounting HTTP file" - fusermount -uz mnt/http + + echo " - Deleting loop devices..." + for loop_device in $(losetup --list | grep "${pkgbase}" | awk '{print $1}') + do + echo -ne " - deleting '$loop_device'..." + udisksctl loop-delete -b "$loop_device" + echo " done." + done + + echo " - Unmounting HTTP files..." + for fuse_mount_points in $(cat /etc/mtab | grep "${pkgbase}" | awk '{print $2}') + do + echo -ne " - unmounting '$fuse_mount_points'..." + fusermount -u "$fuse_mount_points" + echo " done." + done + rmdir -p mnt/http else echo "not allowed" @@ -431,7 +462,7 @@ prepare() { fi echo " - Downloading ISO" - curl -JLO "$_iso" + wget --no-verbose -c --tries=20 --waitretry=20 --timeout=60 "$_iso" echo " - Extracting Windows installation image" 7z x $(echo "$_iso" | awk -F "/" '{print $NF}') sources/install.wim