- From b8c2f085d6f7c95573c9075b6e3bd1ca909cd087 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Mon, 11 Dec 2023 00:16:29 +0100
- Subject: [PATCH 1/4] cygwin/Makefile: Add Makefile target for Cygwin binary
- release tarball
- Add Makefile target bintarball to create a binary release tarball which
- can be unpacked into a Cygwin installation.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- cygwin/Makefile | 33 ++++++++++++++++++++++++++-------
- 1 file changed, 26 insertions(+), 7 deletions(-)
- diff --git a/cygwin/Makefile b/cygwin/Makefile
- index b7a3b1e..e423d6f 100644
- --- a/cygwin/Makefile
- +++ b/cygwin/Makefile
- @@ -57,7 +57,12 @@ installdest: $(VS_BUILD_DIR)/nfsd.exe \
- fi
- mkdir -p $(DESTDIR)
- mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/sbin/
- - mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/usr/bin
- + # /usr/bin is a bind mount to C:/cygwin64/bin, so copy binaries to /cygdrive/c/cygwin64/bin
- + mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/bin
- + # /usr/lib is a bind mount to C:/cygwin64/lib, so copy library data to /cygdrive/c/cygwin64/lib
- + mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/lib
- + mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client
- + mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/src/msnfs41client
- cp -r $(VS_BUILD_DIR)/nfsd.exe $(DESTDIR)/cygdrive/c/cygwin64/sbin/nfsd_debug.exe
- cp -r $(VS_BUILD_DIR)/nfsd.pdb $(DESTDIR)/cygdrive/c/cygwin64/sbin/nfsd_debug.pdb
- cp -r $(VS_BUILD_DIR)/nfs_mount.* $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- @@ -68,17 +73,23 @@ installdest: $(VS_BUILD_DIR)/nfsd.exe \
- cp -r $(VS_BUILD_DIR)/libtirpc.* $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- cp $(PROJECT_BASEDIR_DIR)/nfs41rdr.inf $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- cp $(PROJECT_BASEDIR_DIR)/etc_netconfig $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- - cp $(PROJECT_BASEDIR_DIR)/ms-nfs41-idmap.conf $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- - cp $(CYGWIN_MAKEFILE_DIR)/devel/msnfs41client.bash $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- + cp $(PROJECT_BASEDIR_DIR)/ms-nfs41-idmap.conf $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- + cp $(CYGWIN_MAKEFILE_DIR)/devel/msnfs41client.bash $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- + cp $(PROJECT_BASEDIR_DIR)/cygwin_idmapper.ksh $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/.
- + @ printf "# Package sources and diffs\n"
- + git bundle create "$(DESTDIR)/cygdrive/c/cygwin64/src/msnfs41client/msnfs41client_git.bundle" HEAD
- + git diff -w >"$(DESTDIR)/cygdrive/c/cygwin64/src/msnfs41client/msnfs41client_diff_w.diff"
- + git diff >"$(DESTDIR)/cygdrive/c/cygwin64/src/msnfs41client/msnfs41client_diff.diff"
- + @ printf "# Package utilties\n"
- cp $(CYGWIN_MAKEFILE_DIR)/utils/mount_sshnfs/mount_sshnfs.ksh $(DESTDIR)/cygdrive/c/cygwin64/sbin/mount_sshnfs
- chmod a+x $(DESTDIR)/cygdrive/c/cygwin64/sbin/mount_sshnfs
- cp $(CYGWIN_MAKEFILE_DIR)/utils/sshnfs/sshnfs.ksh $(DESTDIR)/cygdrive/c/cygwin64/sbin/sshnfs
- chmod a+x $(DESTDIR)/cygdrive/c/cygwin64/sbin/sshnfs
- @ printf "# Package tests\n"
- - cp tests/winfsinfo1/winfsinfo.exe $(DESTDIR)/cygdrive/c/cygwin64/usr/bin/winfsinfo.exe
- + cp tests/winfsinfo1/winfsinfo.exe $(DESTDIR)/cygdrive/c/cygwin64/bin/winfsinfo.exe
- @ printf "# Package ksh93&co (if available) since Cygwin does not ship with it yet\n"
- - [[ -x /usr/bin/ksh93.exe ]] && cp /usr/bin/ksh93.exe $(DESTDIR)/cygdrive/c/cygwin64/usr/bin/ksh93.exe
- - [[ -x /usr/bin/shcomp.exe ]] && cp /usr/bin/shcomp.exe $(DESTDIR)/cygdrive/c/cygwin64/usr/bin/shcomp.exe
- + [[ -x /usr/bin/ksh93.exe ]] && cp /usr/bin/ksh93.exe $(DESTDIR)/cygdrive/c/cygwin64/bin/ksh93.exe
- + [[ -x /usr/bin/shcomp.exe ]] && cp /usr/bin/shcomp.exe $(DESTDIR)/cygdrive/c/cygwin64/bin/shcomp.exe
- @ printf "# Set file flags\n"
- (cd $(DESTDIR)/cygdrive/c/cygwin64/sbin/ ; chmod a+x *.exe *.dll *.sys *.bash)
- @printf "\n#\n# TEST sbin dir is %s\n#\n" "$(DESTDIR)/cygdrive/c/cygwin64/sbin/"
- @@ -86,6 +97,14 @@ installdest: $(VS_BUILD_DIR)/nfsd.exe \
- @printf "\n#\n# Now use\n# $$ cd '%s' && bash ./msnfs41client.bash install #\n# to install the kernel driver as Admin\n#\n" \
- "$(DESTDIR)/cygdrive/c/cygwin64/sbin/"
- +bintarball: installdest
- + (cd destdir && \
- + tar -cvf - \
- + --owner=SYSTEM \
- + --group=SYSTEM \
- + cygdrive/c/cygwin64 | \
- + bzip2 -9 >msnfs41client_cygwin_binaries.tar.bz2)
- +
- #
- # clean destdir/, but only if nfsd*.exe does not use it right now
- #
- @@ -94,6 +113,6 @@ cleandest:
- printf 'DIR %q is in use by a process\n' "$DESTDIR" 1>&2 ; \
- exit 1 ; \
- fi
- - rm -r "$(DESTDIR)"
- + rm -rvf "$(DESTDIR)"
- # EOF.
- --
- 2.42.1
- From 906ccbd3899217736ba398abacb6c684c7ce1b37 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Mon, 11 Dec 2023 00:22:50 +0100
- Subject: [PATCH 2/4] daemon: Fix Cygwin idmapper script path
- Set Cygwin idmapper script patch to
- /cygdrive/c/cygwin64/lib/msnfs41client/cygwin_idmapper.ksh
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- daemon/idmap_cygwin.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
- diff --git a/daemon/idmap_cygwin.c b/daemon/idmap_cygwin.c
- index 64c1bff..f8bb74e 100644
- --- a/daemon/idmap_cygwin.c
- +++ b/daemon/idmap_cygwin.c
- @@ -40,7 +40,7 @@
- #define CYGWIN_IDMAPPER_SCRIPT \
- ("C:\\cygwin64\\bin\\ksh93.exe " \
- - "/home/roland_mainz/work/msnfs41_uidmapping/ms-nfs41-client/cygwin_idmapper.ksh")
- + "/cygdrive/c/cygwin64/lib/msnfs41client/cygwin_idmapper.ksh")
- #ifdef NFS41_DRIVER_FEATURE_NAMESERVICE_CYGWIN
- --
- 2.42.1
- From 044535a00a1e38fc0d7b900c5abd3a6496345cd6 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Mon, 11 Dec 2023 00:30:04 +0100
- Subject: [PATCH 3/4] mount_sshnfs: PATH+='/sbin:...' as Cygwin has
- nfs_mount.exe in /sbin
- Add PATH+=':/sbin:/usr/sbin:/usr/bin:/bin' because Cygwin binary
- tarball installs nfs_mount.exe in /sbin
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- cygwin/utils/mount_sshnfs/mount_sshnfs.ksh | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
- diff --git a/cygwin/utils/mount_sshnfs/mount_sshnfs.ksh b/cygwin/utils/mount_sshnfs/mount_sshnfs.ksh
- index 9b5c76e..4193d56 100755
- --- a/cygwin/utils/mount_sshnfs/mount_sshnfs.ksh
- +++ b/cygwin/utils/mount_sshnfs/mount_sshnfs.ksh
- @@ -312,7 +312,7 @@ function cmd_mount
- # fixme: Need better text layout for $ mount_sshnfs mount --man #
- typeset -r mount_sshnfs_cmdmount_usage=$'+
- - [-?\n@(#)\$Id: mount_sshnfs mount (Roland Mainz) 2023-07-24 \$\n]
- + [-?\n@(#)\$Id: mount_sshnfs mount (Roland Mainz) 2023-12-08 \$\n]
- [-author?Roland Mainz <roland.mainz@nrubsig.org>]
- [+NAME?mount_sshnfs mount - mount NFSv4 filesystem through ssh
- tunnel]
- @@ -668,7 +668,7 @@ function cmd_umount
- typeset mydebug=false # fixme: should be "bool" for ksh93v
- # fixme: Need better text layout for $ mount_sshnfs mount --man #
- typeset -r mount_sshnfs_cmdumount_usage=$'+
- - [-?\n@(#)\$Id: mount_sshnfs umount (Roland Mainz) 2023-07-24 \$\n]
- + [-?\n@(#)\$Id: mount_sshnfs umount (Roland Mainz) 2023-12-08 \$\n]
- [-author?Roland Mainz <roland.mainz@nrubsig.org>]
- [+NAME?mount_sshnfs umount - unmount NFSv4 filesystem mounted
- via mount_sshnfs mount]
- @@ -772,7 +772,7 @@ function main
- # fixme: Need better text layout for $ mount_sshnfs --man #
- typeset -r mount_sshnfs_usage=$'+
- - [-?\n@(#)\$Id: mount_sshnfs (Roland Mainz) 2023-07-24 \$\n]
- + [-?\n@(#)\$Id: mount_sshnfs (Roland Mainz) 2023-12-08 \$\n]
- [-author?Roland Mainz <roland.mainz@nrubsig.org>]
- [+NAME?mount_sshnfs - mount/umount NFSv4 filesystem via ssh
- tunnel]
- @@ -809,8 +809,8 @@ function main
- if [[ "${ uname -o ;}" == 'Cygwin' ]] ; then
- integer c.is_ccygwin=1
- - # only for testing!!
- - PATH+=':/cygdrive/c/Users/roland_mainz/Downloads/ms-nfs41-client-x64/ms-nfs41-client-x64/'
- + # Cygwin has nfs_mount.exe in /sbin
- + PATH+=':/sbin:/usr/sbin:/usr/bin:/bin'
- typeset c.msnfsv41_nfsmountcmd="$(which 'nfs_mount.exe')"
- --
- 2.42.1
- From 9111f150ab34453985f00f1b933ebf0abe6e9cf4 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Mon, 11 Dec 2023 15:11:37 +0100
- Subject: [PATCH 4/4] cygwin: Rework binary tarball layout
- Rework binary tarball layout, so "internal" files are
- in /usr/lib/msnfs41client. Also drop *.bash suffix from
- /sbin/msnfs41client script, remove obsolete comments,
- and make sure it can find its files regardless what $PWD
- is.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- cygwin/Makefile | 25 ++++++++++++++-----------
- cygwin/devel/msnfs41client.bash | 24 ++++++++++++++----------
- 2 files changed, 28 insertions(+), 21 deletions(-)
- diff --git a/cygwin/Makefile b/cygwin/Makefile
- index e423d6f..07f84a5 100644
- --- a/cygwin/Makefile
- +++ b/cygwin/Makefile
- @@ -68,13 +68,15 @@ installdest: $(VS_BUILD_DIR)/nfsd.exe \
- cp -r $(VS_BUILD_DIR)/nfs_mount.* $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- cp -r $(VS_BUILD_DIR)/nfsd.* $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- cp -r $(VS_BUILD_DIR)/nfs_install.* $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- - cp -r $(VS_BUILD_DIR)/nfs41_np.* $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- - cp -r $(VS_BUILD_DIR)/nfs41_driver.* $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- cp -r $(VS_BUILD_DIR)/libtirpc.* $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- - cp $(PROJECT_BASEDIR_DIR)/nfs41rdr.inf $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- - cp $(PROJECT_BASEDIR_DIR)/etc_netconfig $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- - cp $(PROJECT_BASEDIR_DIR)/ms-nfs41-idmap.conf $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- - cp $(CYGWIN_MAKEFILE_DIR)/devel/msnfs41client.bash $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
- + cp -r $(VS_BUILD_DIR)/nfs41_np.* $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/.
- + cp -r $(VS_BUILD_DIR)/nfs41_driver.* $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/.
- + cp $(PROJECT_BASEDIR_DIR)/nfs41rdr.inf $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/.
- + cp $(PROJECT_BASEDIR_DIR)/etc_netconfig $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/.
- + cp $(PROJECT_BASEDIR_DIR)/ms-nfs41-idmap.conf $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/.
- + cp $(CYGWIN_MAKEFILE_DIR)/devel/msnfs41client.bash $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/msnfs41client
- + chmod a+x "$(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/msnfs41client"
- + (cd "$(DESTDIR)/cygdrive/c/cygwin64/sbin/" && ln -sf ../lib/msnfs41client/msnfs41client .)
- cp $(PROJECT_BASEDIR_DIR)/cygwin_idmapper.ksh $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/.
- @ printf "# Package sources and diffs\n"
- git bundle create "$(DESTDIR)/cygdrive/c/cygwin64/src/msnfs41client/msnfs41client_git.bundle" HEAD
- @@ -91,19 +93,20 @@ installdest: $(VS_BUILD_DIR)/nfsd.exe \
- [[ -x /usr/bin/ksh93.exe ]] && cp /usr/bin/ksh93.exe $(DESTDIR)/cygdrive/c/cygwin64/bin/ksh93.exe
- [[ -x /usr/bin/shcomp.exe ]] && cp /usr/bin/shcomp.exe $(DESTDIR)/cygdrive/c/cygwin64/bin/shcomp.exe
- @ printf "# Set file flags\n"
- - (cd $(DESTDIR)/cygdrive/c/cygwin64/sbin/ ; chmod a+x *.exe *.dll *.sys *.bash)
- + (cd $(DESTDIR)/cygdrive/c/cygwin64/sbin/ && chmod a+x *.exe *.dll)
- + (cd $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/ && chmod a+x *.dll)
- @printf "\n#\n# TEST sbin dir is %s\n#\n" "$(DESTDIR)/cygdrive/c/cygwin64/sbin/"
- @printf '\n'
- - @printf "\n#\n# Now use\n# $$ cd '%s' && bash ./msnfs41client.bash install #\n# to install the kernel driver as Admin\n#\n" \
- + @printf "\n#\n# Now use\n# $$ cd '%s' && ./msnfs41client install #\n# to install the kernel driver as Admin\n#\n" \
- "$(DESTDIR)/cygdrive/c/cygwin64/sbin/"
- bintarball: installdest
- (cd destdir && \
- tar -cvf - \
- - --owner=SYSTEM \
- - --group=SYSTEM \
- + --owner=SYSTEM:18 \
- + --group=SYSTEM:18 \
- cygdrive/c/cygwin64 | \
- - bzip2 -9 >msnfs41client_cygwin_binaries.tar.bz2)
- + bzip2 -9 >'msnfs41client_cygwin_binaries.tar.bz2')
- #
- # clean destdir/, but only if nfsd*.exe does not use it right now
- diff --git a/cygwin/devel/msnfs41client.bash b/cygwin/devel/msnfs41client.bash
- index a9782bb..9bb2523 100644
- --- a/cygwin/devel/msnfs41client.bash
- +++ b/cygwin/devel/msnfs41client.bash
- @@ -50,6 +50,11 @@ function nfsclient_install
- set -o xtrace
- set -o errexit
- + # switch to the location where this script is installed,
- + # because on Cygwin the script will be installed
- + # in /cygdrive/c/cygwin64/lib/msnfs41client/
- + cd -P "$(dirname -- "$(realpath "${BASH_SOURCE[0]}")")"
- +
- if ! is_windows_admin_account ; then
- printf $"%s: Install requires Windows Adminstator permissions.\n" "$0"
- return 1
- @@ -58,7 +63,8 @@ function nfsclient_install
- # make sure all binaries are executable, Windows cmd does
- # not care, but Cygwin&bash do.
- # If *.ddl are not executable nfs*.exe fail with 0xc0000022
- - chmod a+x *.exe *.dll
- + chmod a+x *.dll
- + chmod a+x ../../sbin/nfs*.exe ../../sbin/libtirpc*.dll
- if false ; then
- # install.bat needs PATH to include $PWD
- @@ -297,10 +303,6 @@ function nfsclient_mount_homedir
- set -o errexit
- #nfs_mount -p -o sec=sys H 'derfwpc5131:/export/home/rmainz'
- - # fixme: Specifying IPv6 addresses do not work yet, as soon as
- - # they come as UNC paths (e.g.
- - # $ cd '//[fe80::219:99ff:feae:73ce]@2049/nfs4/export/home/rmainz' #
- - # they get corrupted once they arrive in nfsd_debug.exe)
- #nfs_mount -p -o sec=sys H '[fe80::219:99ff:feae:73ce]:/export/home/rmainz'
- nfs_mount -p -o sec=sys H 'derfwpc5131_ipv6:/export/home/rmainz'
- mkdir -p '/home/rmainz'
- @@ -318,10 +320,6 @@ function nfsclient_system_mount_homedir
- su_system net use H: /delete || true
- #su_system nfs_mount -p -o sec=sys H 'derfwpc5131:/export/home/rmainz'
- - # fixme: Specifying IPv6 addresses do not work yet, as soon as
- - # they come as UNC paths (e.g.
- - # $ cd '//[fe80::219:99ff:feae:73ce]@2049/nfs4/export/home/rmainz' #
- - # they get corrupted once they arrive in nfsd_debug.exe)
- #su_system nfs_mount -p -o sec=sys H '[fe80::219:99ff:feae:73ce]:/export/home/rmainz'
- su_system nfs_mount -p -o sec=sys H 'derfwpc5131_ipv6:/export/home/rmainz'
- @@ -388,8 +386,13 @@ function main
- {
- typeset cmd="$1"
- + # path where this script is installed
- + typeset scriptpath="$(dirname -- "$(realpath "${BASH_SOURCE[0]}")")"
- +
- # "$PATH:/usr/bin:/bin" is used for PsExec where $PATH might be empty
- - export PATH="$PWD:$PATH:/usr/bin:/bin"
- + PATH="$PWD:$PATH:${scriptpath}../../usr/bin:${scriptpath}/../../bin:${scriptpath}/../../sbin:${scriptpath}/../../usr/sbin"
- + # add defauft system path for POSIX utilities
- + PATH+=':/sbin:/usr/sbin:/bin:/usr/bin'
- # path to WinDBG cdb (fixme: 64bit x86-specific)
- PATH+=':/cygdrive/c/Program Files (x86)/Windows Kits/10/Debuggers/x64/'
- @@ -457,6 +460,7 @@ function main
- ;;
- 'sys_terminal')
- require_cmd 'mintty.exe' || return 1
- + require_cmd 'PsExec.exe' || return 1
- if ! is_windows_admin_account ; then
- printf $"%s: %q requires Windows Adminstator permissions.\n" "$0" "$cmd"
- return 1
- --
- 2.42.1
msnfs41client: bintarball backup 2023-12-11
Posted by Anonymous on Mon 11th Dec 2023 15:44
raw | new post
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.