Package Details: ttf-ms-win10-auto 10.0.19042.789-7

Git Clone URL: https://aur.archlinux.org/ttf-ms-win10-auto.git (read-only, click to copy)
Package Base: ttf-ms-win10-auto
Description: Microsoft Windows 10 TrueType fonts
Upstream URL: https://learn.microsoft.com/en-us/typography/fonts/windows_10_font_list
Licenses: LicenseRef-Microsoft-Windows-10-EULA
Conflicts: ttf-ms-fonts, ttf-ms-win10, ttf-ms-win11, ttf-ms-win11-auto, ttf-ms-win8-auto, ttf-tahoma, ttf-vista-fonts, ttf-win7-fonts-auto
Provides: ttf-font, ttf-ms-fonts, ttf-ms-win10, ttf-tahoma
Submitter: Zepman
Maintainer: RubenKelevra
Last Packager: RubenKelevra
Votes: 48
Popularity: 1.24
First Submitted: 2021-02-24 16:44 (UTC)
Last Updated: 2026-09-09 06:09 (UTC)

Required by (322)

Sources (145)

Latest Comments

1 2 3 4 5 6 7 Next › Last »

RubenKelevra commented on 2026-09-09 06:10 (UTC)

I switched out the whole build process. chroot and non-chroot builds are verified to be working again. If there's any issue, lmk.

RubenKelevra commented on 2026-08-20 23:10 (UTC)

The current issue is due to a limitation of httpfs2 not supporting response headers above the fixed 1024 byte http header buffer.

While the Microsoft server still responses with the correct bytes for byte ranges, their header size increased in the recent past, making the same path using httpfs2 currently fail, due to httpfs2 limitations. Leading to a a loop device being created against a broken FUSE file, which will then appear as 0 bytes, which will lead to loopX being a not mountable filesystem.

I'll weight the options and come back with a fix.

un_pogaz commented on 2026-08-20 20:13 (UTC) (edited on 2026-08-20 20:17 (UTC) by un_pogaz)

@Damgaldor Thanks, for the set -o pipefail at the start of prepare(), it solve the "loopX is not a mountable filesystem".

However, adding set -o pipefail seems to cause the build to fail without returning an error message at the line:

_loopDev=$(udisksctl loop-setup -r -f "${_isoFile}" --no-user-interaction 2>/dev/null | awk '{print $NF}')

Damgaldor commented on 2026-07-20 15:32 (UTC)

Ideally there should also be a set -o pipefail at the start of prepare, because when _mountpoint=$(udisksctl mount -t udf -b "$_loopDev" --no-user-interaction | awk '{print $NF}') fails with Object /org/freedesktop/UDisks2/block_devices/loop2 is not a mountable filesystem., it doesn't exit the PKGBUILD like it should, because udisksctl exit code is masked by awk without set -o pipefail.

RubenKelevra commented on 2026-07-20 14:59 (UTC)

@Damgaldor thanks, I've put it on my Todo will have a look.

Damgaldor commented on 2026-07-20 14:47 (UTC)

Nice, you can make an exit hook in PKGBUILD to automatically cleanup mounts if build fails or exits for any other reason. For example

diff --git a/PKGBUILD b/PKGBUILD
index 9401bdd..93c1243 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -414,6 +414,7 @@ prepare() {
       mkdir -p mnt/http
       echo "  - Mounting HTTP file"
       httpfs2 -c /dev/null "$_iso" mnt/http
+      trap cleanup EXIT
       echo "  - Creating loop device"
       _isoFile="mnt/http/$(echo "$_iso" | awk -F "/" '{print $NF}')"
       _loopDev=$(udisksctl loop-setup -r -f "${_isoFile}" --no-user-interaction 2>/dev/null | awk '{print $NF}')
@@ -560,4 +561,23 @@ package_ttf-ms-win10-auto-other() {
     _package ${_ttf_ms_win10_other[@]}
 }

+cleanup() {
+
+    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
+}
+
 # vim: ts=4 sw=4 et

Damgaldor commented on 2026-07-20 14:31 (UTC)

The build also fails for me with yay. What's also annoying is if it fails, it doesn't unmount the mountpoint with the ISO. Idk if PKGBUILD supports exit hooks, but would be really nice if it unmounted the http directory on exit.

ln: не вдалося створити символічне посилання '/home/damglador/.cache/yay/ttf-ms-win10-auto/src/' -> '': Немає такого файла або каталогу (x85) <- no such file or directory
==> Починаємо prepare()...
- Examininging locally available fonts
- Fonts are missing
- Mount filesystems as a non-privileged user: allowed
- Checking for old loop devices created by by this package
  - deleting '/dev/loop2'... done.
- Downloading fonts directly
  - Mounting HTTP file
file name:      19042.631.201119-0144.20h2_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x86FRE_en-us.iso
host name:      software-static.download.prss.microsoft.com
port number:    80
protocol:       http
request path:   /pr/download/19042.631.201119-0144.20h2_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x86FRE_en-us.iso
auth data:      (null)
file size:      4079597568
  - Creating loop device
  - Mounting loop device: /dev/loop2
Object /org/freedesktop/UDisks2/block_devices/loop2 is not a mountable filesystem.
  - Loop device mounted as ISO at: 
  - Extracting files from online Windows installation image

7-Zip 26.02 (x64) : Copyright (c) 1999-2026 Igor Pavlov : 2026-06-25
 64-bit locale=en_US.UTF-8 Threads:12 OPEN_MAX:4096, ASM

Scanning the drive for archives:

ERROR: errno=2 : Немає такого файла або каталогу <- no such file or directory
/sources/install.wim



System ERROR:
errno=2 : Немає такого файла або каталогу <- no such file or directory

jameekim commented on 2026-05-06 02:29 (UTC)

I'm getting "loopX is not a mountable filesystem" message before failing to build the package when using yay. This is the output I'm getting from prepare():

- Examininging locally available fonts
- Fonts are missing
- Mount filesystems as a non-privileged user: allowed
- Checking for old loop devices created by by this package
  - deleting '/dev/loop0'... done.
- Downloading fonts directly
  - Mounting HTTP file
file name:  19042.631.201119-0144.20h2_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x86FRE_en-us.iso
host name:  software-static.download.prss.microsoft.com
port number:    80
protocol:   http
request path:   /pr/download/19042.631.201119-0144.20h2_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x86FRE_en-us.iso
auth data:  (null)
file size:  4079597568
  - Creating loop device
  - Mounting loop device: /dev/loop0
Object /org/freedesktop/UDisks2/block_devices/loop0 is not a mountable filesystem.
  - Loop device mounted as ISO at:
  - Extracting files from online Windows installation image

7-Zip 26.01 (x64) : Copyright (c) 1999-2026 Igor Pavlov : 2026-04-27
 64-bit locale=en_CA.UTF-8 Threads:20 OPEN_MAX:4096, ASM

Scanning the drive for archives:

ERROR: errno=2 : No such file or directory
/sources/install.wim

I noticed that particular message because I get the same message when I run "udisksctl unmount -b /dev/loop0" after the build failure.

Seeing that you mentioned building in a clean chroot in other replies, I tried that too, and it worked probably because loop device was not used:

- Examininging locally available fonts
- Fonts are missing
- Mount filesystems as a non-privileged user: not allowed
- Preparing download of full ISO
...

Do you happen to know what could be causing the error? Not that I care too much because I probably won't have to update this package for a while, but I am curious why this is happening.

RubenKelevra commented on 2025-12-14 21:33 (UTC) (edited on 2026-02-17 11:31 (UTC) by RubenKelevra)

@Zepman: Thanks, I'll have a look.

But first:

Do you build in a Chroot?