pastebin - collaborative debugging tool
rovema.kpaste.net RSS


msnfs41client: Patches for unified 32bit/64bit install dir, docs for building with VS2026, tests+misc, 2025-09-29
Posted by Anonymous on Mon 29th Sep 2025 14:04
raw | new post

  1. From ad51657ac22da429d17a99c837b6df57400e3514 Mon Sep 17 00:00:00 2001
  2. From: Roland Mainz <roland.mainz@nrubsig.org>
  3. Date: Mon, 29 Sep 2025 12:56:34 +0200
  4. Subject: [PATCH 1/4] cygwin: Unify
  5.  destdir/cygdrive/c/cygwin+destdir/cygdrive/c/cygwin64 into destdir/
  6.  
  7. Unify destdir/cygdrive/c/cygwin+destdir/cygdrive/c/cygwin64 into
  8. destdir/. This avoids the duplication for each userland and kernel
  9. architecture.
  10.  
  11. Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
  12. ---
  13. cygwin/Makefile                 |  13 +-
  14.  cygwin/Makefile.install         | 222 ++++++++++++++++----------------
  15.  cygwin/devel/msnfs41client.bash |  21 +++
  16.  3 files changed, 140 insertions(+), 116 deletions(-)
  17.  
  18. diff --git a/cygwin/Makefile b/cygwin/Makefile
  19. index febbbb2..5156b5b 100644
  20. --- a/cygwin/Makefile
  21. +++ b/cygwin/Makefile
  22. @@ -150,8 +150,7 @@ installdest32: \
  23.                 installdest \
  24.                 VS_BUILD_DIR_I686="$(VS_BUILD_DIR_I686)" \
  25.                 VS_BUILD_DIR_X64="" \
  26. -               VS_BUILD_DIR_ARM64="" \
  27. -               CYGWIN_BASEPATH=/cygdrive/c/cygwin/
  28. +               VS_BUILD_DIR_ARM64=""
  29.  
  30.  # installdest64: 32bit nfs41_np.dll is required to support 32bit
  31.  # apps on 64bit Windows
  32. @@ -174,8 +173,7 @@ installdest64: \
  33.                 installdest \
  34.                 VS_BUILD_DIR_I686="$(VS_BUILD_DIR_I686)" \
  35.                 VS_BUILD_DIR_X64="$(VS_BUILD_DIR_X64)" \
  36. -               VS_BUILD_DIR_ARM64="$(VS_BUILD_DIR_ARM64)" \
  37. -               CYGWIN_BASEPATH=/cygdrive/c/cygwin64/
  38. +               VS_BUILD_DIR_ARM64="$(VS_BUILD_DIR_ARM64)"
  39.  
  40.  # installdest: we need a .WAIT here becase Makefile.install uses git commands
  41.  # to create a git bundle, and the commands do not like to run
  42. @@ -190,8 +188,7 @@ bintarball: installdest $(PROJECT_BASEDIR_DIR)/README.txt $(PROJECT_BASEDIR_DIR)
  43.         tar -cvf - \
  44.                 --owner=SYSTEM:18 \
  45.                 --group=SYSTEM:18 \
  46. -               cygdrive/c/cygwin \
  47. -               cygdrive/c/cygwin64 \
  48. +               sbin bin usr lib etc \
  49.                 | \
  50.                         bzip2 -9 >"$${base_filename}.tar.bz2" ; \
  51.         archive_sha256hash="$$(openssl sha256 -r "$${base_filename}.tar.bz2" | while read a dummy ; do printf "%s\n" "$$a" ; done)" ; \
  52. @@ -212,7 +209,7 @@ bintarball32: installdest32 $(PROJECT_BASEDIR_DIR)/README.txt $(PROJECT_BASEDIR_
  53.         tar -cvf - \
  54.                 --owner=SYSTEM:18 \
  55.                 --group=SYSTEM:18 \
  56. -               cygdrive/c/cygwin \
  57. +               sbin bin usr lib etc \
  58.                 | \
  59.                         bzip2 -9 >"$${base_filename}.tar.bz2" ; \
  60.         archive_sha256hash="$$(openssl sha256 -r "$${base_filename}.tar.bz2" | while read a dummy ; do printf "%s\n" "$$a" ; done)" ; \
  61. @@ -233,7 +230,7 @@ bintarball64: installdest64 $(PROJECT_BASEDIR_DIR)/README.txt $(PROJECT_BASEDIR_
  62.         tar -cvf - \
  63.                 --owner=SYSTEM:18 \
  64.                 --group=SYSTEM:18 \
  65. -               cygdrive/c/cygwin64 \
  66. +               sbin bin usr lib etc \
  67.                 | \
  68.                         bzip2 -9 >"$${base_filename}.tar.bz2" ; \
  69.         archive_sha256hash="$$(openssl sha256 -r "$${base_filename}.tar.bz2" | while read a dummy ; do printf "%s\n" "$$a" ; done)" ; \
  70. diff --git a/cygwin/Makefile.install b/cygwin/Makefile.install
  71. index a6029a6..4124928 100644
  72. --- a/cygwin/Makefile.install
  73. +++ b/cygwin/Makefile.install
  74. @@ -23,41 +23,41 @@ installdest:
  75.                 exit 1 ; \
  76.         fi
  77.         mkdir -p $(DESTDIR)
  78. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/
  79. -       # /usr/bin is a bind mount to C:/cygwin64/bin, so copy binaries to /$(CYGWIN_BASEPATH)/bin
  80. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/bin
  81. -       # /usr/lib is a bind mount to C:/cygwin64/lib, so copy library data to /$(CYGWIN_BASEPATH)/lib
  82. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/lib
  83. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client
  84. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686
  85. -       if [[ "$(VS_BUILD_DIR_X64)" != '' ]] ; then mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/x64 ; fi
  86. -       if [[ "$(VS_BUILD_DIR_ARM64)" != '' ]] ; then mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ARM64 ; fi
  87. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/etc
  88. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/src/msnfs41client
  89. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/man/man1
  90. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client
  91. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests
  92. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/misc
  93. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/sparsefiles
  94. -       mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/filemmaptests
  95. +       mkdir -p $(DESTDIR)/sbin/
  96. +       # /usr/bin is a bind mount to C:/cygwin64/bin, so copy binaries to /bin
  97. +       mkdir -p $(DESTDIR)/bin
  98. +       # /usr/lib is a bind mount to C:/cygwin64/lib, so copy library data to /lib
  99. +       mkdir -p $(DESTDIR)/lib
  100. +       mkdir -p $(DESTDIR)/lib/msnfs41client
  101. +       mkdir -p $(DESTDIR)/lib/msnfs41client/i686
  102. +       if [[ "$(VS_BUILD_DIR_X64)" != '' ]] ; then mkdir -p $(DESTDIR)/lib/msnfs41client/x64 ; fi
  103. +       if [[ "$(VS_BUILD_DIR_ARM64)" != '' ]] ; then mkdir -p $(DESTDIR)/lib/msnfs41client/ARM64 ; fi
  104. +       mkdir -p $(DESTDIR)/etc
  105. +       mkdir -p $(DESTDIR)/usr/src/msnfs41client
  106. +       mkdir -p $(DESTDIR)/usr/share/man/man1
  107. +       mkdir -p $(DESTDIR)/usr/share/msnfs41client
  108. +       mkdir -p $(DESTDIR)/usr/share/msnfs41client/tests
  109. +       mkdir -p $(DESTDIR)/usr/share/msnfs41client/tests/misc
  110. +       mkdir -p $(DESTDIR)/usr/share/msnfs41client/tests/sparsefiles
  111. +       mkdir -p $(DESTDIR)/usr/share/msnfs41client/tests/filemmaptests
  112.         #
  113.         # copy x86 binaries
  114.         #
  115.         if [[ -f "$(VS_BUILD_DIR_I686)/nfs41_driver.sys" ]] ; then \
  116.                 # workaround for coreutils 9.5-1 /bin/cp bug stuck in an endless loop with compressed files \
  117.                 chattr -V -c $(VS_BUILD_DIR_I686)/nfs41_driver.* ; \
  118. -               cp $(VS_BUILD_DIR_I686)/nfs41_driver.*  $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686/. ; \
  119. -               cp $(VS_BUILD_DIR_I686)/nfsd.*          $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686/. ; \
  120. -               cp $(VS_BUILD_DIR_I686)/libtirpc.*      $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686/. ; \
  121. -               cp $(VS_BUILD_DIR_I686)/nfs_install.*   $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686/. ; \
  122. +               cp $(VS_BUILD_DIR_I686)/nfs41_driver.*  $(DESTDIR)/lib/msnfs41client/i686/. ; \
  123. +               cp $(VS_BUILD_DIR_I686)/nfsd.*          $(DESTDIR)/lib/msnfs41client/i686/. ; \
  124. +               cp $(VS_BUILD_DIR_I686)/libtirpc.*      $(DESTDIR)/lib/msnfs41client/i686/. ; \
  125. +               cp $(VS_BUILD_DIR_I686)/nfs_install.*   $(DESTDIR)/lib/msnfs41client/i686/. ; \
  126.         fi
  127. -       cp $(VS_BUILD_DIR_I686)/nfs_mount.*     $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686/.
  128. +       cp $(VS_BUILD_DIR_I686)/nfs_mount.*     $(DESTDIR)/lib/msnfs41client/i686/.
  129.         # install 32bit nfs_mount.exe on 64bit Windows to assist with debugging 32bit issues
  130.         # we use the "Release" version on 64bit to avoid issues with missing debug libraries
  131.         # on 32bit we just create a hardlink from nfs_mount.exe to nfs_mount.i686.exe
  132. -       cp $(VS_BUILD_DIR_I686)/../Release/nfs_mount.exe $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686/nfs_mount.release.i686.exe
  133. -       cp $(VS_BUILD_DIR_I686)/../Release/nfs41_np.dll $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686/nfs41_np.release.dll
  134. -       cp $(VS_BUILD_DIR_I686)/nfs41_np.*      $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686/. ; \
  135. +       cp $(VS_BUILD_DIR_I686)/../Release/nfs_mount.exe $(DESTDIR)/lib/msnfs41client/i686/nfs_mount.release.i686.exe
  136. +       cp $(VS_BUILD_DIR_I686)/../Release/nfs41_np.dll $(DESTDIR)/lib/msnfs41client/i686/nfs41_np.release.dll
  137. +       cp $(VS_BUILD_DIR_I686)/nfs41_np.*      $(DESTDIR)/lib/msnfs41client/i686/. ; \
  138.         #
  139.         # copy x64 binaries
  140.         #
  141. @@ -65,13 +65,13 @@ installdest:
  142.                 if [[ -f "$(VS_BUILD_DIR_X64)/nfs41_driver.sys" ]] ; then \
  143.                         # workaround for coreutils 9.5-1 /bin/cp bug stuck in an endless loop with compressed files \
  144.                         chattr -V -c $(VS_BUILD_DIR_X64)/nfs41_driver.* ; \
  145. -                       cp $(VS_BUILD_DIR_X64)/nfs41_driver.*   $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/x64/. ; \
  146. -                       cp $(VS_BUILD_DIR_X64)/nfsd.*           $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/x64/. ; \
  147. -                       cp $(VS_BUILD_DIR_X64)/libtirpc.*       $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/x64/. ; \
  148. -                       cp $(VS_BUILD_DIR_X64)/nfs_install.*    $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/x64/. ; \
  149. +                       cp $(VS_BUILD_DIR_X64)/nfs41_driver.*   $(DESTDIR)/lib/msnfs41client/x64/. ; \
  150. +                       cp $(VS_BUILD_DIR_X64)/nfsd.*           $(DESTDIR)/lib/msnfs41client/x64/. ; \
  151. +                       cp $(VS_BUILD_DIR_X64)/libtirpc.*       $(DESTDIR)/lib/msnfs41client/x64/. ; \
  152. +                       cp $(VS_BUILD_DIR_X64)/nfs_install.*    $(DESTDIR)/lib/msnfs41client/x64/. ; \
  153.                 fi ; \
  154. -               cp $(VS_BUILD_DIR_X64)/nfs_mount.*      $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/x64/. ; \
  155. -               cp $(VS_BUILD_DIR_X64)/nfs41_np.*       $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/x64/. ; \
  156. +               cp $(VS_BUILD_DIR_X64)/nfs_mount.*      $(DESTDIR)/lib/msnfs41client/x64/. ; \
  157. +               cp $(VS_BUILD_DIR_X64)/nfs41_np.*       $(DESTDIR)/lib/msnfs41client/x64/. ; \
  158.         fi
  159.         #
  160.         # copy ARM64 binaries
  161. @@ -80,22 +80,22 @@ installdest:
  162.                 if [[ -f "$(VS_BUILD_DIR_ARM64)/nfs41_driver.sys" ]] ; then \
  163.                         # workaround for coreutils 9.5-1 /bin/cp bug stuck in an endless loop with compressed files \
  164.                         chattr -V -c $(VS_BUILD_DIR_ARM64)/nfs41_driver.* ; \
  165. -                       cp $(VS_BUILD_DIR_ARM64)/nfs41_driver.* $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ARM64/. ; \
  166. -                       cp $(VS_BUILD_DIR_ARM64)/nfsd.*         $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ARM64/. ; \
  167. -                       cp $(VS_BUILD_DIR_ARM64)/libtirpc.*     $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ARM64/. ; \
  168. -                       cp $(VS_BUILD_DIR_ARM64)/nfs_install.*  $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ARM64/. ; \
  169. +                       cp $(VS_BUILD_DIR_ARM64)/nfs41_driver.* $(DESTDIR)/lib/msnfs41client/ARM64/. ; \
  170. +                       cp $(VS_BUILD_DIR_ARM64)/nfsd.*         $(DESTDIR)/lib/msnfs41client/ARM64/. ; \
  171. +                       cp $(VS_BUILD_DIR_ARM64)/libtirpc.*     $(DESTDIR)/lib/msnfs41client/ARM64/. ; \
  172. +                       cp $(VS_BUILD_DIR_ARM64)/nfs_install.*  $(DESTDIR)/lib/msnfs41client/ARM64/. ; \
  173.                 fi ; \
  174. -               cp $(VS_BUILD_DIR_ARM64)/nfs_mount.*    $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ARM64/. ; \
  175. -               cp $(VS_BUILD_DIR_ARM64)/nfs41_np.*     $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ARM64/. ; \
  176. +               cp $(VS_BUILD_DIR_ARM64)/nfs_mount.*    $(DESTDIR)/lib/msnfs41client/ARM64/. ; \
  177. +               cp $(VS_BUILD_DIR_ARM64)/nfs41_np.*     $(DESTDIR)/lib/msnfs41client/ARM64/. ; \
  178.         fi
  179.         # Copy kernel driver INF file and generate signature catalog
  180.         # (inf2cat.exe cannot handle case-sensitive filesystems like NFS for temporary files, so we reset TMP&co)
  181.         for infdir in "i686" "x64" "ARM64" ; do \
  182. -               [[ -f "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/$${infdir}/nfs41_driver.sys" ]] || continue ; \
  183. +               [[ -f "$(DESTDIR)/lib/msnfs41client/$${infdir}/nfs41_driver.sys" ]] || continue ; \
  184.                 ( \
  185. -                       cp "$(PROJECT_BASEDIR_DIR)/nfs41rdr.inf" "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/$${infdir}/." && \
  186. +                       cp "$(PROJECT_BASEDIR_DIR)/nfs41rdr.inf" "$(DESTDIR)/lib/msnfs41client/$${infdir}/." && \
  187.                         inf2catbin="$$(find '/cygdrive/c/Program Files (x86)/Windows Kits/10/bin' -iname inf2cat.exe | head -n 1)" && \
  188. -                       cd "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/$${infdir}/." && \
  189. +                       cd "$(DESTDIR)/lib/msnfs41client/$${infdir}/." && \
  190.                         if [[ "$$(/usr/lib/csih/getVolInfo . | awk '/FILE_CASE_SENSITIVE_SEARCH/ { print $$3 }')" == "TRUE" ]] ; then \
  191.                                 printf "# case-sensitive filesystem, resetting TMP TMPDIR TEMP to /tmp\n" ; \
  192.                                 export TMP=/tmp TMPDIR=/tmp TEMP=/tmp ; \
  193. @@ -105,67 +105,73 @@ installdest:
  194.                 ) ; \
  195.         done
  196.         # Platform-independent files
  197. -       cp $(PROJECT_BASEDIR_DIR)/etc_netconfig $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/.
  198. -       cp $(PROJECT_BASEDIR_DIR)/ms-nfs41-idmap.conf           $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/.
  199. -       cp $(CYGWIN_MAKEFILE_DIR)/devel/msnfs41client.bash      $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/msnfs41client
  200. -       chmod a+x "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/msnfs41client"
  201. +       cp $(PROJECT_BASEDIR_DIR)/etc_netconfig $(DESTDIR)/lib/msnfs41client/.
  202. +       cp $(PROJECT_BASEDIR_DIR)/ms-nfs41-idmap.conf           $(DESTDIR)/lib/msnfs41client/.
  203. +       cp $(CYGWIN_MAKEFILE_DIR)/devel/msnfs41client.bash      $(DESTDIR)/lib/msnfs41client/msnfs41client
  204. +       chmod a+x "$(DESTDIR)/lib/msnfs41client/msnfs41client"
  205.         # this must be a symlink, so msnfs41client can find it's real location
  206. -       (cd "$(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/" && ln -s -f ../lib/msnfs41client/msnfs41client .)
  207. -       cp $(PROJECT_BASEDIR_DIR)/cygwin_idmapper.ksh           $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/.
  208. +       (cd "$(DESTDIR)/sbin/" && ln -s -f ../lib/msnfs41client/msnfs41client .)
  209. +       cp $(PROJECT_BASEDIR_DIR)/cygwin_idmapper.ksh           $(DESTDIR)/lib/msnfs41client/.
  210.         @ printf "# Package sources and diffs\n"
  211.         git config --global --add safe.directory "$(PROJECT_BASEDIR_DIR)"
  212. -       git bundle create "$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/src/msnfs41client/msnfs41client_git.bundle" HEAD
  213. -       git diff -w     >"$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/src/msnfs41client/msnfs41client_diff_w.diff"
  214. -       git diff        >"$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/src/msnfs41client/msnfs41client_diff.diff"
  215. +       git bundle create "$(DESTDIR)/usr/src/msnfs41client/msnfs41client_git.bundle" HEAD
  216. +       git diff -w     >"$(DESTDIR)/usr/src/msnfs41client/msnfs41client_diff_w.diff"
  217. +       git diff        >"$(DESTDIR)/usr/src/msnfs41client/msnfs41client_diff.diff"
  218.         @ printf "# Package utilties\n"
  219. -       cp $(CYGWIN_MAKEFILE_DIR)/utils/mountall_msnfs41client/mountall_msnfs41client.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/mountall_msnfs41client
  220. -       chmod a+x $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/mountall_msnfs41client
  221. -       PATH+=":$(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/" \
  222. -               /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/mountall_msnfs41client/mountall_msnfs41client.ksh --nroff 2>"$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/man/man1/mountall_msnfs41client.1" || true
  223. -       cp $(CYGWIN_MAKEFILE_DIR)/utils/cygwinaccount2nfs4account/cygwinaccount2nfs4account.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/cygwinaccount2nfs4account
  224. -       chmod a+x $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/cygwinaccount2nfs4account
  225. -       PATH+=":$(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/" \
  226. -               /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/cygwinaccount2nfs4account/cygwinaccount2nfs4account.ksh --nroff 2>"$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/man/man1/cygwinaccount2nfs4account.1" || true
  227. -       cp $(CYGWIN_MAKEFILE_DIR)/utils/mount_sshnfs/mount_sshnfs.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/mount_sshnfs
  228. -       chmod a+x $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/mount_sshnfs
  229. -       PATH+=":$(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/" \
  230. -               /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/mount_sshnfs/mount_sshnfs.ksh --nroff 2>"$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/man/man1/mount_sshnfs.1" || true
  231. -       cp $(CYGWIN_MAKEFILE_DIR)/utils/sshnfs/sshnfs.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/sshnfs
  232. -       chmod a+x $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/sshnfs
  233. -       cp $(CYGWIN_MAKEFILE_DIR)/utils/nfsurlconv/nfsurlconv.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/nfsurlconv
  234. -       chmod a+x $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/nfsurlconv
  235. -       /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/nfsurlconv/nfsurlconv.ksh --nroff 2>"$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/man/man1/nfsurlconv.1" || true
  236. +       cp $(CYGWIN_MAKEFILE_DIR)/utils/mountall_msnfs41client/mountall_msnfs41client.ksh $(DESTDIR)/sbin/mountall_msnfs41client
  237. +       chmod a+x $(DESTDIR)/sbin/mountall_msnfs41client
  238. +       PATH+=":$(DESTDIR)/sbin/" \
  239. +               /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/mountall_msnfs41client/mountall_msnfs41client.ksh --nroff 2>"$(DESTDIR)/usr/share/man/man1/mountall_msnfs41client.1" || true
  240. +       cp $(CYGWIN_MAKEFILE_DIR)/utils/cygwinaccount2nfs4account/cygwinaccount2nfs4account.ksh $(DESTDIR)/sbin/cygwinaccount2nfs4account
  241. +       chmod a+x $(DESTDIR)/sbin/cygwinaccount2nfs4account
  242. +       PATH+=":$(DESTDIR)/sbin/" \
  243. +               /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/cygwinaccount2nfs4account/cygwinaccount2nfs4account.ksh --nroff 2>"$(DESTDIR)/usr/share/man/man1/cygwinaccount2nfs4account.1" || true
  244. +       cp $(CYGWIN_MAKEFILE_DIR)/utils/mount_sshnfs/mount_sshnfs.ksh $(DESTDIR)/sbin/mount_sshnfs
  245. +       chmod a+x $(DESTDIR)/sbin/mount_sshnfs
  246. +       PATH+=":$(DESTDIR)/sbin/" \
  247. +               /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/mount_sshnfs/mount_sshnfs.ksh --nroff 2>"$(DESTDIR)/usr/share/man/man1/mount_sshnfs.1" || true
  248. +       cp $(CYGWIN_MAKEFILE_DIR)/utils/sshnfs/sshnfs.ksh $(DESTDIR)/sbin/sshnfs
  249. +       chmod a+x $(DESTDIR)/sbin/sshnfs
  250. +       cp $(CYGWIN_MAKEFILE_DIR)/utils/nfsurlconv/nfsurlconv.ksh $(DESTDIR)/bin/nfsurlconv
  251. +       chmod a+x $(DESTDIR)/bin/nfsurlconv
  252. +       /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/nfsurlconv/nfsurlconv.ksh --nroff 2>"$(DESTDIR)/usr/share/man/man1/nfsurlconv.1" || true
  253.         @ printf "# Package tests\n"
  254. -       cp "$(PROJECT_BASEDIR_DIR)/tests/manual_testing.txt" $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/manual_testing.txt
  255. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winfsinfo1/winfsinfo.x86_64.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/winfsinfo.x86_64.exe
  256. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winfsinfo1/winfsinfo.i686.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/winfsinfo.i686.exe
  257. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winclonefile/winclonefile.x86_64.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/winclonefile.x86_64.exe
  258. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winclonefile/winclonefile.i686.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/winclonefile.i686.exe
  259. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winoffloadcopyfile/winoffloadcopyfile.x86_64.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/winoffloadcopyfile.x86_64.exe
  260. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winoffloadcopyfile/winoffloadcopyfile.i686.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/winoffloadcopyfile.i686.exe
  261. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winrunassystem/winrunassystem.x86_64.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/winrunassystem.x86_64.exe
  262. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winrunassystem/winrunassystem.i686.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/winrunassystem.i686.exe
  263. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winrunassystem/nfs_globalmount.x86_64.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/nfs_globalmount.x86_64.exe
  264. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winrunassystem/nfs_globalmount.i686.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/nfs_globalmount.i686.exe
  265. -       cp "$(PROJECT_BASEDIR_DIR)/tests/lssparse/lssparse.x86_64.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/lssparse.x86_64.exe
  266. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winsg/winsg.x86_64.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/winsg.x86_64.exe
  267. -       cp "$(PROJECT_BASEDIR_DIR)/tests/winsg/winsg.i686.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/winsg.i686.exe
  268. -       cp "$(PROJECT_BASEDIR_DIR)/tests/ea/nfs_ea.x86_64.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/nfs_ea.x86_64.exe
  269. -       cp "$(PROJECT_BASEDIR_DIR)/tests/ea/nfs_ea.i686.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/nfs_ea.i686.exe
  270. -       cp "$(PROJECT_BASEDIR_DIR)/tests/filemmaptests/qsortonmmapedfile1.x86_64.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/filemmaptests/qsortonmmapedfile1.x86_64.exe
  271. -       cp "$(PROJECT_BASEDIR_DIR)/tests/filemmaptests/qsortonmmapedfile1.i686.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/filemmaptests/qsortonmmapedfile1.i686.exe
  272. -       cp $(PROJECT_BASEDIR_DIR)/tests/filemmaptests/testqsortonmmapedfile1.ksh93 $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/filemmaptests/testqsortonmmapedfile1.ksh93
  273. -       cp $(PROJECT_BASEDIR_DIR)/tests/nfsbuildtest/nfsbuildtest.ksh93 $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/misc/nfsbuildtest.ksh93
  274. -       cp $(PROJECT_BASEDIR_DIR)/tests/sparsefiles/testsparsefile1.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/sparsefiles/testsparsefile1.ksh
  275. -       cp $(PROJECT_BASEDIR_DIR)/tests/sparsefiles/testsparseexe1.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/sparsefiles/testsparseexe1.ksh
  276. -       cp $(PROJECT_BASEDIR_DIR)/tests/sparsefiles/multisparsefiletest.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/sparsefiles/multisparsefiletest.ksh
  277. -       cp $(PROJECT_BASEDIR_DIR)/tests/fstest_make_numtree1/fstest_make_numtree1.ksh93 $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/misc/fstest_make_numtree1.ksh93
  278. -       cp $(PROJECT_BASEDIR_DIR)/tests/wintartests/wintartest_comparewinvsgnu001.bash $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/misc/wintartest_comparewinvsgnu001.bash
  279. -       cp $(PROJECT_BASEDIR_DIR)/tests/wintartests/wintartest_seq001.bash $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/msnfs41client/tests/misc/wintartest_seq001.bash
  280. +       cp "$(PROJECT_BASEDIR_DIR)/tests/manual_testing.txt" $(DESTDIR)/usr/share/msnfs41client/tests/manual_testing.txt
  281. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winfsinfo1/winfsinfo.x86_64.exe" $(DESTDIR)/bin/winfsinfo.x86_64.exe
  282. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winfsinfo1/winfsinfo.i686.exe" $(DESTDIR)/bin/winfsinfo.i686.exe
  283. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winclonefile/winclonefile.x86_64.exe" $(DESTDIR)/bin/winclonefile.x86_64.exe
  284. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winclonefile/winclonefile.i686.exe" $(DESTDIR)/bin/winclonefile.i686.exe
  285. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winoffloadcopyfile/winoffloadcopyfile.x86_64.exe" $(DESTDIR)/bin/winoffloadcopyfile.x86_64.exe
  286. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winoffloadcopyfile/winoffloadcopyfile.i686.exe" $(DESTDIR)/bin/winoffloadcopyfile.i686.exe
  287. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winrunassystem/winrunassystem.x86_64.exe" $(DESTDIR)/sbin/winrunassystem.x86_64.exe
  288. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winrunassystem/winrunassystem.i686.exe" $(DESTDIR)/sbin/winrunassystem.i686.exe
  289. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winrunassystem/nfs_globalmount.x86_64.exe" $(DESTDIR)/sbin/nfs_globalmount.x86_64.exe
  290. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winrunassystem/nfs_globalmount.i686.exe" $(DESTDIR)/sbin/nfs_globalmount.i686.exe
  291. +       cp "$(PROJECT_BASEDIR_DIR)/tests/lssparse/lssparse.x86_64.exe" $(DESTDIR)/bin/lssparse.x86_64.exe
  292. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winsg/winsg.x86_64.exe" $(DESTDIR)/bin/winsg.x86_64.exe
  293. +       cp "$(PROJECT_BASEDIR_DIR)/tests/winsg/winsg.i686.exe" $(DESTDIR)/bin/winsg.i686.exe
  294. +       cp "$(PROJECT_BASEDIR_DIR)/tests/ea/nfs_ea.x86_64.exe" $(DESTDIR)/bin/nfs_ea.x86_64.exe
  295. +       cp "$(PROJECT_BASEDIR_DIR)/tests/ea/nfs_ea.i686.exe" $(DESTDIR)/bin/nfs_ea.i686.exe
  296. +       cp "$(PROJECT_BASEDIR_DIR)/tests/filemmaptests/qsortonmmapedfile1.x86_64.exe" $(DESTDIR)/usr/share/msnfs41client/tests/filemmaptests/qsortonmmapedfile1.x86_64.exe
  297. +       cp "$(PROJECT_BASEDIR_DIR)/tests/filemmaptests/qsortonmmapedfile1.i686.exe" $(DESTDIR)/usr/share/msnfs41client/tests/filemmaptests/qsortonmmapedfile1.i686.exe
  298. +       cp $(PROJECT_BASEDIR_DIR)/tests/filemmaptests/testqsortonmmapedfile1.ksh93 $(DESTDIR)/usr/share/msnfs41client/tests/filemmaptests/testqsortonmmapedfile1.ksh93
  299. +       cp $(PROJECT_BASEDIR_DIR)/tests/nfsbuildtest/nfsbuildtest.ksh93 $(DESTDIR)/usr/share/msnfs41client/tests/misc/nfsbuildtest.ksh93
  300. +       cp $(PROJECT_BASEDIR_DIR)/tests/sparsefiles/testsparsefile1.ksh $(DESTDIR)/usr/share/msnfs41client/tests/sparsefiles/testsparsefile1.ksh
  301. +       cp $(PROJECT_BASEDIR_DIR)/tests/sparsefiles/testsparseexe1.ksh $(DESTDIR)/usr/share/msnfs41client/tests/sparsefiles/testsparseexe1.ksh
  302. +       cp $(PROJECT_BASEDIR_DIR)/tests/sparsefiles/multisparsefiletest.ksh $(DESTDIR)/usr/share/msnfs41client/tests/sparsefiles/multisparsefiletest.ksh
  303. +       cp $(PROJECT_BASEDIR_DIR)/tests/fstest_make_numtree1/fstest_make_numtree1.ksh93 $(DESTDIR)/usr/share/msnfs41client/tests/misc/fstest_make_numtree1.ksh93
  304. +       cp $(PROJECT_BASEDIR_DIR)/tests/wintartests/wintartest_comparewinvsgnu001.bash $(DESTDIR)/usr/share/msnfs41client/tests/misc/wintartest_comparewinvsgnu001.bash
  305. +       cp $(PROJECT_BASEDIR_DIR)/tests/wintartests/wintartest_seq001.bash $(DESTDIR)/usr/share/msnfs41client/tests/misc/wintartest_seq001.bash
  306.         @ printf "# Package ksh93&co (if available) since Cygwin does not ship with it yet\n"
  307. -       [[ -x $(CYGWIN_BASEPATH)/bin/ksh93.exe ]] && cp -f $(CYGWIN_BASEPATH)/bin/ksh93.exe $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/ksh93.exe || true
  308. -       [[ -x $(CYGWIN_BASEPATH)/bin/shcomp.exe ]] && cp -f $(CYGWIN_BASEPATH)/bin/shcomp.exe $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/shcomp.exe || true
  309. -       cp $(PROJECT_BASEDIR_DIR)/cygwin/cygwin_ksh93/ksh.kshrc $(DESTDIR)/$(CYGWIN_BASEPATH)/etc/ksh.kshrc
  310. +       if [[ -d '$(DESTDIR)/lib/msnfs41client/x64/' ]] ; then \
  311. +               [[ -x '/cygdrive/c/cygwin/bin/ksh93.exe' ]] && cp '/cygdrive/c/cygwin/bin/ksh93.exe' '$(DESTDIR)/lib/msnfs41client/i686/ksh93.i686.exe' ; \
  312. +               [[ -x '/cygdrive/c/cygwin/bin/shcomp.exe' ]] && cp '/cygdrive/c/cygwin/bin/shcomp.exe' '$(DESTDIR)/lib/msnfs41client/i686/shcomp.i686.exe' ; \
  313. +       fi
  314. +       if [[ -d '$(DESTDIR)/lib/msnfs41client/x64/' ]] ; then \
  315. +               [[ -x '/cygdrive/c/cygwin64/bin/ksh93.exe' ]] && cp '/cygdrive/c/cygwin64/bin/ksh93.exe' '$(DESTDIR)/lib/msnfs41client/x64/ksh93.x86_64.exe' ; \
  316. +               [[ -x '/cygdrive/c/cygwin64/bin/shcomp.exe' ]] && cp '/cygdrive/c/cygwin64/bin/shcomp.exe' '$(DESTDIR)/lib/msnfs41client/x64/shcomp.x86_64.exe' ; \
  317. +       fi
  318. +       cp $(PROJECT_BASEDIR_DIR)/cygwin/cygwin_ksh93/ksh.kshrc $(DESTDIR)/etc/ksh.kshrc
  319.         @ printf '# Packaging libs\n'
  320.         set -o errexit -o pipefail ; \
  321.         typeset msbuildpath="$$(which MSBuild.exe)" ; \
  322. @@ -173,34 +179,34 @@ installdest:
  323.         test -d "$${vsbasepath}" || { printf "vsbasepath not found\n" 1>&2 ; exit 1 ; }; \
  324.         cp \
  325.                 "$$(find "$${vsbasepath}/Community" -ipath '*/x86/*/VCRUNTIME140D.dll' | sort -n -r | head -n 1)" \
  326. -               "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686/." ; \
  327. -       cp '/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/x86/ucrt/ucrtbased.dll' "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686/." ; \
  328. +               "$(DESTDIR)/lib/msnfs41client/i686/." ; \
  329. +       cp '/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/x86/ucrt/ucrtbased.dll' "$(DESTDIR)/lib/msnfs41client/i686/." ; \
  330.         if [[ "$(VS_BUILD_DIR_X64)" != '' ]] ; then \
  331.                 cp \
  332.                         "$$(find "$${vsbasepath}/Community" -ipath '*/x64/*/VCRUNTIME140D.dll' | sort -n -r | head -n 1)" \
  333. -                       "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/x64/." ; \
  334. -               cp '/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/x64/ucrt/ucrtbased.dll' "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/x64/." ; \
  335. +                       "$(DESTDIR)/lib/msnfs41client/x64/." ; \
  336. +               cp '/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/x64/ucrt/ucrtbased.dll' "$(DESTDIR)/lib/msnfs41client/x64/." ; \
  337.         fi ; \
  338.         if [[ "$(VS_BUILD_DIR_ARM64)" != '' ]] ; then \
  339.                 cp \
  340.                         "$$(find "$${vsbasepath}/Community" -ipath '*/arm64/*/VCRUNTIME140D.dll' | sort -n -r | head -n 1)" \
  341. -                       "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ARM64/." ; \
  342. -               cp '/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/arm64/ucrt/ucrtbased.dll' "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ARM64/." ; \
  343. +                       "$(DESTDIR)/lib/msnfs41client/ARM64/." ; \
  344. +               cp '/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/arm64/ucrt/ucrtbased.dll' "$(DESTDIR)/lib/msnfs41client/ARM64/." ; \
  345.         fi
  346.         @ printf "# Set file flags\n"
  347. -       (cd $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/ && chmod a+rx *.exe)
  348. -       (cd $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/ && chmod a+rx *.exe)
  349. -       (cd $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/i686 && chmod a+rx *.exe *.dll)
  350. +       (cd $(DESTDIR)/bin/ && chmod a+rx *.exe)
  351. +       (cd $(DESTDIR)/sbin/ && chmod a+rx *.exe)
  352. +       (cd $(DESTDIR)/lib/msnfs41client/i686 && chmod a+rx *.exe *.dll)
  353.         if [[ "$(VS_BUILD_DIR_X64)" != '' ]] ; then \
  354. -               (cd $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/x64 && chmod a+rx *.exe *.dll) ; \
  355. +               (cd $(DESTDIR)/lib/msnfs41client/x64 && chmod a+rx *.exe *.dll) ; \
  356.         fi
  357.         if [[ "$(VS_BUILD_DIR_ARM64)" != '' ]] ; then \
  358. -               (cd $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ARM64 && chmod a+rx *.exe *.dll) ; \
  359. +               (cd $(DESTDIR)/lib/msnfs41client/ARM64 && chmod a+rx *.exe *.dll) ; \
  360.         fi
  361. -       @printf "\n#\n# TEST sbin dir is %s\n#\n" "$(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/"
  362. +       @printf "\n#\n# TEST sbin dir is %s\n#\n" "$(DESTDIR)/sbin/"
  363.         @printf '\n'
  364.         @printf "\n#\n# Now use\n# $$ cd '%s' && ./msnfs41client install #\n# to install the kernel driver as Admin\n#\n" \
  365. -               "$(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/"
  366. +               "$(DESTDIR)/sbin/"
  367.         sync
  368.  
  369.  
  370. diff --git a/cygwin/devel/msnfs41client.bash b/cygwin/devel/msnfs41client.bash
  371. index b7f6b07..704b306 100755
  372. --- a/cygwin/devel/msnfs41client.bash
  373. +++ b/cygwin/devel/msnfs41client.bash
  374. @@ -222,6 +222,27 @@ function nfsclient_install
  375.                 ln -f 'i686/nfs_mount.release.i686.exe' "../../sbin/nfs_mount.i686.exe"
  376.         fi
  377.  
  378. +       # copy ksh93&co
  379. +       case "${kernel_platform}" in
  380. +               'x64')
  381. +                       ln -f "${platform_dir}/ksh93.x86_64.exe" "../../bin/ksh93.exe"
  382. +                       ln -f "${platform_dir}/shcomp.x86_64.exe" "../../bin/shcomp.exe"
  383. +                       ;;
  384. +               'ARM64')
  385. +                       if [[ -f "${platform_dir}/ksh93.arm64.exe" ]] ; then
  386. +                               ln -f "${platform_dir}/ksh93.arm64.exe" "../../bin/ksh93.exe"
  387. +                               ln -f "${platform_dir}/shcomp.arm64.exe" "../../bin/shcomp.exe"
  388. +                       else
  389. +                               ln -f "${platform_dir}/../x64/ksh93.x86_64.exe" "../../bin/ksh93.exe"
  390. +                               ln -f "${platform_dir}/../x64/shcomp.x86_64.exe" "../../bin/shcomp.exe"
  391. +                       fi
  392. +                       ;;
  393. +               'i686')
  394. +                       ln -f "${platform_dir}/ksh93.i686.exe" "../../bin/ksh93.exe"
  395. +                       ln -f "${platform_dir}/shcomp.i686.exe" "../../bin/shcomp.exe"
  396. +                       ;;
  397. +       esac
  398. +
  399.         typeset -a platformspecificexe=(
  400.                 'bin/winfsinfo'
  401.                 'bin/winclonefile'
  402. --
  403. 2.51.0
  404.  
  405. From 1305898f315bd427503c81f003d2a01be64a69f1 Mon Sep 17 00:00:00 2001
  406. From: Roland Mainz <roland.mainz@nrubsig.org>
  407. Date: Mon, 29 Sep 2025 13:20:40 +0200
  408. Subject: [PATCH 2/4] sys: |map_mount_errors()| should map
  409.  |ERROR_BAD_ARGUMENTS| to |STATUS_INVALID_PARAMETER|
  410.  
  411. |map_mount_errors()| should map |ERROR_BAD_ARGUMENTS| to
  412. |STATUS_INVALID_PARAMETER|, in case nfsd.exe reports invalid/bad arguments
  413. (e.g. TCP port==0 via $ nfs_mount -o rw '*' 'nfs://10.49.202.128://xxx' #, note
  414. the missing port number behind ':').
  415.  
  416. Reported-by: Josh Hurst <joshhurst@gmail.com>
  417. Reported-by: Lionel Cons <lionelcons1972@gmail.com>
  418. Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
  419. ---
  420. sys/nfs41sys_mount.c | 1 +
  421.  1 file changed, 1 insertion(+)
  422.  
  423. diff --git a/sys/nfs41sys_mount.c b/sys/nfs41sys_mount.c
  424. index b22a679..ac5e8d6 100644
  425. --- a/sys/nfs41sys_mount.c
  426. +++ b/sys/nfs41sys_mount.c
  427. @@ -249,6 +249,7 @@ NTSTATUS map_mount_errors(
  428.      case ERROR_BAD_NETPATH:     return STATUS_BAD_NETWORK_PATH;
  429.      case ERROR_NOT_SUPPORTED:   return STATUS_NOT_SUPPORTED;
  430.      case ERROR_NFS_VERSION_MISMATCH: return STATUS_NFS_VERSION_MISMATCH;
  431. +    case ERROR_BAD_ARGUMENTS:   return STATUS_INVALID_PARAMETER;
  432.      case ERROR_INTERNAL_ERROR:  return STATUS_INTERNAL_ERROR;
  433.      default:
  434.          print_error("map_mount_errors: "
  435. --
  436. 2.51.0
  437.  
  438. From 07a3cbf371cfc3d8f84050b1cc3c50f277d476d5 Mon Sep 17 00:00:00 2001
  439. From: Roland Mainz <roland.mainz@nrubsig.org>
  440. Date: Mon, 29 Sep 2025 13:47:47 +0200
  441. Subject: [PATCH 3/4] README.md,docs: Document how to build ms-nfs41-client
  442.  with VS2026 Community Insiders on Windows 10
  443.  
  444. Document how to build ms-nfs41-client with "Visual Studio 2026 Community
  445. Insiders" edition on Windows 10.
  446.  
  447. Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
  448. ---
  449. README.md       | 51 ++++++++++++++++++++++++++++++++++++++++++++-----
  450.  docs/README.xml | 49 ++++++++++++++++++++++++++++++++++++++++++-----
  451.  2 files changed, 90 insertions(+), 10 deletions(-)
  452.  
  453. diff --git a/README.md b/README.md
  454. index 9fc64de..bc07283 100644
  455. --- a/README.md
  456. +++ b/README.md
  457. @@ -234,7 +234,8 @@ NFSv4.2/NFSv4.1 filesystem driver for Windows 10/11 & Windows Server
  458.  
  459.    - All tools from Cygwin/MSYS2/MinGW
  460.  
  461. -  - Visual Studio (tested: VS2019, VS2022)
  462. +  - Visual Studio (tested: VS2019 Community VS2022 Community, VS2026
  463. +    Community Insiders)
  464.  
  465.    - VMware Workstation (can use VMs hosted on NFSv4.2/NFSv4.1
  466.      filesystem)
  467. @@ -823,7 +824,7 @@ Source code can be obtained from
  468.  
  469.  #### Required Software
  470.  
  471. -- **Option 1:** Windows 10 with Visual Studio 2019
  472. +- **Option 1:** Windows 10 with Visual Studio 2019 Community
  473.  
  474.    - Start Visual Studio 2019 installer and import the installer config
  475.      file `ms-nfs41-client/build.vc19/ms-nfs41-client_vs2019.vsconfig`,
  476. @@ -844,7 +845,7 @@ Source code can be obtained from
  477.    - PanDoc document converter, from
  478.      <https://github.com/jgm/pandoc/releases/download/3.7.0.1/pandoc-3.7.0.1-windows-x86_64.msi>
  479.  
  480. -- **Option 2:** Windows 10/11 with Visual Studio 2022
  481. +- **Option 2:** Windows 11 with Visual Studio 2022 Community
  482.  
  483.    - Start Visual Studio 2022 installer and import the installer config
  484.      file `ms-nfs41-client/build.vc19/ms-nfs41-client_vs2022.vsconfig`,
  485. @@ -865,9 +866,31 @@ Source code can be obtained from
  486.    - PanDoc document converter, from
  487.      <https://github.com/jgm/pandoc/releases/download/3.7.0.1/pandoc-3.7.0.1-windows-x86_64.msi>
  488.  
  489. +- **Option 3 (EXPERIMENTAL):** Windows 10 with Visual Studio 2026
  490. +  Community Insiders
  491. +
  492. +  - Start Visual Studio 2026 installer and import the installer config
  493. +    file `ms-nfs41-client/build.vc19/ms-nfs41-client_vs2022.vsconfig`,
  494. +    and then install Visual Studio 2026 Community Insiders.
  495. +
  496. +  - WDK for Windows 10, version 2004, from
  497. +    <https://go.microsoft.com/fwlink/?linkid=2128854>, and then copy the
  498. +    `Microsoft.DriverKit.Build.Tasks.16.0.dll` to
  499. +    `Microsoft.DriverKit.Build.Tasks.18.0.dll`:
  500. +
  501. +        cp '/cygdrive/c/Program Files (x86)/Windows Kits/10/build/bin/Microsoft.DriverKit.Build.Tasks.16.0.dll' '/cygdrive/c/Program Files (x86)/Windows Kits/10/build/bin/Microsoft.DriverKit.Build.Tasks.18.0.dll'
  502. +
  503. +  - Cygwin 64bit \>= 3.5.0 (see
  504. +    `ms-nfs41-clientcygwin/README.bintarball.txt` for Cygwin 32bit and
  505. +    64bit installation instructions)
  506. +
  507. +  - PanDoc document converter, from
  508. +    <https://github.com/jgm/pandoc/releases/download/3.7.0.1/pandoc-3.7.0.1-windows-x86_64.msi>
  509. +
  510.  #### Build the Project
  511.  
  512. -- **Using Visual Studio 2019+Cygwin command line (bash/ksh93):**
  513. +- **Windows 10: Using Visual Studio 2019+Cygwin command line
  514. +  (bash/ksh93):**
  515.  
  516.        # this creates a 32bit+kernel+64bit-kernel build for Windows 10+11
  517.        export PATH="/cygdrive/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/:$PATH"
  518. @@ -880,7 +903,8 @@ Source code can be obtained from
  519.        make installdest
  520.        make bintarball
  521.  
  522. -- **Using Visual Studio 2022+Cygwin command line (bash/ksh93):**
  523. +- **Windows 11: Using Visual Studio 2022+Cygwin command line
  524. +  (bash/ksh93):**
  525.  
  526.        # this creates a 64bit-kernel only build for Windows 11
  527.        export PATH="/cygdrive/c/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Current/Bin/:$PATH"
  528. @@ -896,6 +920,23 @@ Source code can be obtained from
  529.        make installdest64
  530.        make bintarball64
  531.  
  532. +- **Windows 10: Using Visual Studio 2026 Community Insiders+Cygwin
  533. +  command line (bash/ksh93):**
  534. +
  535. +      # this creates a 32bit+kernel+64bit-kernel build for Windows 10+11
  536. +      export PATH="/cygdrive/c/Program Files/Microsoft Visual Studio/18/Insiders/MSBuild/Current/Bin/:$PATH"
  537. +      git clone https://github.com/kofemann/ms-nfs41-client.git
  538. +      cd ms-nfs41-client
  539. +      # "retarget" VS platform toolset to "v145"
  540. +      # ("v142" should remain the default when comitting)
  541. +      sed -i -E 's/<PlatformToolset>v142<\/PlatformToolset>/<PlatformToolset>v145<\/PlatformToolset>/g' $(find 'build.vc19' -name \*.vcxproj)
  542. +      cd cygwin
  543. +      # get default WDK Test Certificate SHA1 ThumbPrint value for code signing
  544. +      export CERTIFICATE_THUMBPRINT="$(powershell -c 'Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object {$_.Subject -like "*WDKTestCert*"} | Select-Object -ExpandProperty Thumbprint')"
  545. +      make build
  546. +      make installdest
  547. +      make bintarball
  548. +
  549.  > [!NOTE]
  550.  > `make installdest` or `make installdest64` can fail on SMB/NFSv4.1
  551.  > filesystems with a "link.exe" crash. The workaround is to disable
  552. diff --git a/docs/README.xml b/docs/README.xml
  553. index 7952b65..7666be1 100644
  554. --- a/docs/README.xml
  555. +++ b/docs/README.xml
  556. @@ -265,7 +265,7 @@
  557.                <para>All tools from Cygwin/MSYS2/MinGW</para>
  558.              </listitem>
  559.              <listitem>
  560. -              <para>Visual Studio (tested: VS2019, VS2022)</para>
  561. +              <para>Visual Studio (tested: VS2019 Community VS2022 Community, VS2026 Community Insiders)</para>
  562.              </listitem>
  563.              <listitem>
  564.                <para>VMware Workstation (can use VMs hosted on NFSv4.2/NFSv4.1 filesystem)</para>
  565. @@ -925,7 +925,7 @@ Datei befindet. Versuchen Sie, die Datei woanders zu speichern.</programlisting>
  566.          <title>Required Software</title>
  567.          <itemizedlist>
  568.            <listitem>
  569. -            <para><emphasis role="bold">Option 1:</emphasis> Windows 10 with Visual Studio 2019</para>
  570. +            <para><emphasis role="bold">Option 1:</emphasis> Windows 10 with Visual Studio 2019 Community</para>
  571.              <itemizedlist>
  572.                <listitem>
  573.                  <para>Start Visual Studio 2019 installer and import the installer config file
  574. @@ -946,7 +946,7 @@ Datei befindet. Versuchen Sie, die Datei woanders zu speichern.</programlisting>
  575.              </itemizedlist>
  576.            </listitem>
  577.            <listitem>
  578. -            <para><emphasis role="bold">Option 2:</emphasis> Windows 10/11 with Visual Studio 2022</para>
  579. +            <para><emphasis role="bold">Option 2:</emphasis> Windows 11 with Visual Studio 2022 Community</para>
  580.              <itemizedlist>
  581.                <listitem>
  582.                  <para>Start Visual Studio 2022 installer and import the installer config file
  583. @@ -966,6 +966,28 @@ Datei befindet. Versuchen Sie, die Datei woanders zu speichern.</programlisting>
  584.                </listitem>
  585.              </itemizedlist>
  586.            </listitem>
  587. +          <listitem>
  588. +            <para><emphasis role="bold">Option 3 (EXPERIMENTAL):</emphasis> Windows 10 with Visual Studio 2026 Community Insiders</para>
  589. +            <itemizedlist>
  590. +              <listitem>
  591. +                <para>Start Visual Studio 2026 installer and import the installer config file
  592. +                <filename>ms-nfs41-client/build.vc19/ms-nfs41-client_vs2022.vsconfig</filename>,
  593. +                and then install Visual Studio 2026 Community Insiders.</para>
  594. +              </listitem>
  595. +              <listitem>
  596. +                <para>WDK for Windows 10, version 2004, from <link xl:href="https://go.microsoft.com/fwlink/?linkid=2128854">https://go.microsoft.com/fwlink/?linkid=2128854</link>,
  597. +                and then copy the <filename>Microsoft.DriverKit.Build.Tasks.16.0.dll</filename> to <filename>Microsoft.DriverKit.Build.Tasks.18.0.dll</filename>:
  598. +                <programlisting>cp '/cygdrive/c/Program Files (x86)/Windows Kits/10/build/bin/Microsoft.DriverKit.Build.Tasks.16.0.dll' '/cygdrive/c/Program Files (x86)/Windows Kits/10/build/bin/Microsoft.DriverKit.Build.Tasks.18.0.dll'</programlisting>
  599. +                </para>
  600. +              </listitem>
  601. +              <listitem>
  602. +                <para>Cygwin 64bit &gt;= 3.5.0 (see <filename>ms-nfs41-clientcygwin/README.bintarball.txt</filename> for Cygwin 32bit and 64bit installation instructions)</para>
  603. +              </listitem>
  604. +              <listitem>
  605. +                <para>PanDoc document converter, from <link xl:href="https://github.com/jgm/pandoc/releases/download/3.7.0.1/pandoc-3.7.0.1-windows-x86_64.msi">https://github.com/jgm/pandoc/releases/download/3.7.0.1/pandoc-3.7.0.1-windows-x86_64.msi</link></para>
  606. +              </listitem>
  607. +            </itemizedlist>
  608. +          </listitem>
  609.          </itemizedlist>
  610.        </section>
  611.  
  612. @@ -973,7 +995,7 @@ Datei befindet. Versuchen Sie, die Datei woanders zu speichern.</programlisting>
  613.          <title>Build the Project</title>
  614.          <itemizedlist>
  615.            <listitem>
  616. -            <para><emphasis role="bold">Using Visual Studio 2019+Cygwin command line (bash/ksh93):</emphasis></para>
  617. +            <para><emphasis role="bold">Windows 10: Using Visual Studio 2019+Cygwin command line (bash/ksh93):</emphasis></para>
  618.              <programlisting># this creates a 32bit+kernel+64bit-kernel build for Windows 10+11
  619.  export PATH="/cygdrive/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/:$PATH"
  620.  git clone https://github.com/kofemann/ms-nfs41-client.git
  621. @@ -986,7 +1008,7 @@ make installdest
  622.  make bintarball</programlisting>
  623.            </listitem>
  624.            <listitem>
  625. -            <para><emphasis role="bold">Using Visual Studio 2022+Cygwin command line (bash/ksh93):</emphasis></para>
  626. +            <para><emphasis role="bold">Windows 11: Using Visual Studio 2022+Cygwin command line (bash/ksh93):</emphasis></para>
  627.              <programlisting># this creates a 64bit-kernel only build for Windows 11
  628.  export PATH="/cygdrive/c/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Current/Bin/:$PATH"
  629.  git clone https://github.com/kofemann/ms-nfs41-client.git
  630. @@ -1001,6 +1023,23 @@ make build64
  631.  make installdest64
  632.  make bintarball64</programlisting>
  633.            </listitem>
  634. +          <listitem>
  635. +            <para><emphasis role="bold">Windows 10: Using Visual Studio 2026 Community Insiders+Cygwin command line (bash/ksh93):</emphasis></para>
  636. +            <programlisting># this creates a 32bit+kernel+64bit-kernel build for Windows 10+11
  637. +export PATH="/cygdrive/c/Program Files/Microsoft Visual Studio/18/Insiders/MSBuild/Current/Bin/:$PATH"
  638. +git clone https://github.com/kofemann/ms-nfs41-client.git
  639. +cd ms-nfs41-client
  640. +# "retarget" VS platform toolset to "v145"
  641. +# ("v142" should remain the default when comitting)
  642. +sed -i -E 's/&lt;PlatformToolset&gt;v142&lt;\/PlatformToolset&gt;/&lt;PlatformToolset&gt;v145&lt;\/PlatformToolset&gt;/g' $(find 'build.vc19' -name \*.vcxproj)
  643. +cd cygwin
  644. +# get default WDK Test Certificate SHA1 ThumbPrint value for code signing
  645. +export CERTIFICATE_THUMBPRINT="$(powershell -c 'Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object {$_.Subject -like "*WDKTestCert*"} | Select-Object -ExpandProperty Thumbprint')"
  646. +make build
  647. +make installdest
  648. +make bintarball</programlisting>
  649. +          </listitem>
  650. +
  651.          </itemizedlist>
  652.          <note>
  653.            <para><command>make installdest</command> or <command>make installdest64</command> can fail on SMB/NFSv4.1 filesystems with a "link.exe" crash. The workaround is to disable incremental linking before building, e.g., do:</para>
  654. --
  655. 2.51.0
  656.  
  657. From 0d24269a1ddcc4170c13a9727670555692044bb7 Mon Sep 17 00:00:00 2001
  658. From: Roland Mainz <roland.mainz@nrubsig.org>
  659. Date: Mon, 29 Sep 2025 14:32:32 +0200
  660. Subject: [PATCH 4/4] tests: nfsbuildtest: Handle Cygwin uname -r output for
  661.  devel Cygwin versions
  662.  
  663. Handle Cygwin uname -r output for devel Cygwin versions.
  664.  
  665. Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
  666. ---
  667. tests/nfsbuildtest/nfsbuildtest.ksh93 | 5 ++++-
  668.  1 file changed, 4 insertions(+), 1 deletion(-)
  669.  
  670. diff --git a/tests/nfsbuildtest/nfsbuildtest.ksh93 b/tests/nfsbuildtest/nfsbuildtest.ksh93
  671. index 5946fa3..234f09f 100644
  672. --- a/tests/nfsbuildtest/nfsbuildtest.ksh93
  673. +++ b/tests/nfsbuildtest/nfsbuildtest.ksh93
  674. @@ -591,7 +591,10 @@ function get_cpv_cygwin_version
  675.         typeset uname_r="${ /usr/bin/uname -r ; }"
  676.         typeset leftover
  677.  
  678. -       leftover="${uname_r/~(Elr)([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-([[:digit:]]+)\..+/x}"
  679. +       # Example output of $ uname -r # on Cygwin:
  680. +       # "3.3.6-341.i686"
  681. +       # "3.7.0-dev-289-g63dc988ac745-dirty.x86_64"
  682. +       leftover="${uname_r/~(Elr)([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(?:dev-|)([[:digit:]]+)(-|\.).+/x}"
  683.  
  684.         if [[ "$leftover" != 'x' ]] ; then
  685.                 print -u2 -f $"%s: error parsing uname -r for Cygwin version number, got %q\n" \
  686. --
  687. 2.51.0

Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:

To highlight particular lines, prefix each line with {%HIGHLIGHT}




All content is user-submitted.
The administrators of this site (kpaste.net) are not responsible for their content.
Abuse reports should be emailed to us at