- From 97fb1e691d0d9796c91d409d32ea4ae096e37294 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Thu, 16 May 2024 15:26:16 +0200
- Subject: [PATCH 1/5] cygwin: Allow make -j to be used for "build" target
- Allow make -j to be used for "build" target
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- cygwin/Makefile | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
- diff --git a/cygwin/Makefile b/cygwin/Makefile
- index ea16bfa..78b8ad6 100644
- --- a/cygwin/Makefile
- +++ b/cygwin/Makefile
- @@ -26,12 +26,20 @@ $(VS_BUILD_DIR)/nfsd.exe \
- #
- # build the code
- #
- -build:
- +build_64bit_release:
- @printf '#\n# PATH is %q\n#\n' '$(PATH)'
- which MSBuild.exe
- MSBuild.exe '$(shell cygpath -w "$(PROJECT_BASEDIR_DIR)/build.vc19/nfs41-client.sln")' -t:Build -p:Configuration=Release -p:Platform=x64
- +
- +build_64bit_debug:
- + @printf '#\n# PATH is %q\n#\n' '$(PATH)'
- + which MSBuild.exe
- MSBuild.exe '$(shell cygpath -w "$(PROJECT_BASEDIR_DIR)/build.vc19/nfs41-client.sln")' -t:Build -p:Configuration=Debug -p:Platform=x64
- +
- +build_testutils:
- (cd "$(PROJECT_BASEDIR_DIR)/tests/winfsinfo1" && make all)
- +
- +build: build_64bit_release build_64bit_debug build_testutils
- sync
- #
- --
- 2.43.0
- From 86cc8e433ac8fcf014b6dc745e8a95904ac6a71d Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Thu, 16 May 2024 15:35:47 +0200
- Subject: [PATCH 2/5] daemon,sys: Info+debug code for
- |FileAllocationInformation| limbo status
- Add comment about |FileAllocationInformation|'s limbo status, plus
- debug code to debug it easier.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- daemon/setattr.c | 8 +++++++-
- sys/nfs41_driver.c | 8 ++++++++
- 2 files changed, 15 insertions(+), 1 deletion(-)
- diff --git a/daemon/setattr.c b/daemon/setattr.c
- index 540dac8..b700a07 100644
- --- a/daemon/setattr.c
- +++ b/daemon/setattr.c
- @@ -353,6 +353,13 @@ static int handle_nfs41_set_size(void *daemon_context, setattr_upcall_args *args
- nfs41_open_state *state = args->state;
- int status;
- + EASSERT_MSG(args->buf_len == sizeof(size->QuadPart),
- + ("args->buf_len=%ld\n", (long)args->buf_len));
- +
- + DPRINTF(2,
- + ("handle_nfs41_set_size: args->set_class=%d, new_file=%lld\n",
- + (int)args->set_class, (long long)size->QuadPart));
- +
- /* break read delegations before SETATTR */
- nfs41_delegation_return(state->session, &state->file,
- OPEN_DELEGATE_READ, FALSE);
- @@ -363,7 +370,6 @@ static int handle_nfs41_set_size(void *daemon_context, setattr_upcall_args *args
- info.attrmask.count = 1;
- info.attrmask.arr[0] = FATTR4_WORD0_SIZE;
- - DPRINTF(2, ("calling setattr() with size=%lld\n", info.size));
- status = nfs41_setattr(state->session, &state->file, &stateid, &info);
- if (status) {
- DPRINTF(1, ("nfs41_setattr() failed with error '%s'.\n",
- diff --git a/sys/nfs41_driver.c b/sys/nfs41_driver.c
- index fd2a0ca..bcd9a69 100644
- --- a/sys/nfs41_driver.c
- +++ b/sys/nfs41_driver.c
- @@ -5896,6 +5896,14 @@ NTSTATUS nfs41_SetFileInformation(
- status = STATUS_SUCCESS;
- goto out;
- }
- + case FileAllocationInformation:
- + /*
- + * Fixme: What is the correct way to handle
- + * |FileAllocationInformation| ? NFSv4 does not have the
- + * concept of a difference between "allocation size" and
- + * "end-of-file" position
- + */
- + break;
- case FileEndOfFileInformation:
- {
- PFILE_END_OF_FILE_INFORMATION info =
- --
- 2.43.0
- From a1d09b689a995cd8a3241268d2450b1746b96df6 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Thu, 16 May 2024 16:30:53 +0200
- Subject: [PATCH 3/5] daemon: Add debug infratructure for
- |FILE_INFORMATION_CLASS|
- Add debug infratructure for |FILE_INFORMATION_CLASS|
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- daemon/daemon_debug.c | 58 +++++++++++++++++++++++++++++++++++++++++++
- daemon/daemon_debug.h | 1 +
- daemon/setattr.c | 5 ++--
- 3 files changed, 62 insertions(+), 2 deletions(-)
- diff --git a/daemon/daemon_debug.c b/daemon/daemon_debug.c
- index 8f8b22e..a75736f 100644
- --- a/daemon/daemon_debug.c
- +++ b/daemon/daemon_debug.c
- @@ -659,6 +659,64 @@ const char* gssauth_string(int type) {
- return "<invalid RPCSEC_SSPI_* gss auth type>";
- }
- +const char *FILE_INFORMATION_CLASS2string(int fic)
- +{
- + switch(fic) {
- +#define FIC_TO_STRLITERAL(e) case e: return #e;
- + FIC_TO_STRLITERAL(FileDirectoryInformation)
- + FIC_TO_STRLITERAL(FileFullDirectoryInformation)
- + FIC_TO_STRLITERAL(FileBothDirectoryInformation)
- + FIC_TO_STRLITERAL(FileBasicInformation)
- + FIC_TO_STRLITERAL(FileStandardInformation)
- + FIC_TO_STRLITERAL(FileInternalInformation)
- + FIC_TO_STRLITERAL(FileEaInformation)
- + FIC_TO_STRLITERAL(FileAccessInformation)
- + FIC_TO_STRLITERAL(FileNameInformation)
- + FIC_TO_STRLITERAL(FileRenameInformation)
- + FIC_TO_STRLITERAL(FileLinkInformation)
- + FIC_TO_STRLITERAL(FileNamesInformation)
- + FIC_TO_STRLITERAL(FileDispositionInformation)
- + FIC_TO_STRLITERAL(FilePositionInformation)
- + FIC_TO_STRLITERAL(FileFullEaInformation)
- + FIC_TO_STRLITERAL(FileModeInformation)
- + FIC_TO_STRLITERAL(FileAlignmentInformation)
- + FIC_TO_STRLITERAL(FileAllInformation)
- + FIC_TO_STRLITERAL(FileAllocationInformation)
- + FIC_TO_STRLITERAL(FileEndOfFileInformation)
- + FIC_TO_STRLITERAL(FileAlternateNameInformation)
- + FIC_TO_STRLITERAL(FileStreamInformation)
- + FIC_TO_STRLITERAL(FilePipeInformation)
- + FIC_TO_STRLITERAL(FilePipeLocalInformation)
- + FIC_TO_STRLITERAL(FilePipeRemoteInformation)
- + FIC_TO_STRLITERAL(FileMailslotQueryInformation)
- + FIC_TO_STRLITERAL(FileMailslotSetInformation)
- + FIC_TO_STRLITERAL(FileCompressionInformation)
- + FIC_TO_STRLITERAL(FileObjectIdInformation)
- + FIC_TO_STRLITERAL(FileCompletionInformation)
- + FIC_TO_STRLITERAL(FileMoveClusterInformation)
- + FIC_TO_STRLITERAL(FileQuotaInformation)
- + FIC_TO_STRLITERAL(FileReparsePointInformation)
- + FIC_TO_STRLITERAL(FileNetworkOpenInformation)
- + FIC_TO_STRLITERAL(FileAttributeTagInformation)
- + FIC_TO_STRLITERAL(FileTrackingInformation)
- + FIC_TO_STRLITERAL(FileIdBothDirectoryInformation)
- + FIC_TO_STRLITERAL(FileIdFullDirectoryInformation)
- + FIC_TO_STRLITERAL(FileValidDataLengthInformation)
- + FIC_TO_STRLITERAL(FileShortNameInformation)
- + FIC_TO_STRLITERAL(FileIoCompletionNotificationInformation)
- + FIC_TO_STRLITERAL(FileIoStatusBlockRangeInformation)
- + FIC_TO_STRLITERAL(FileIoPriorityHintInformation)
- + FIC_TO_STRLITERAL(FileSfioReserveInformation)
- + FIC_TO_STRLITERAL(FileSfioVolumeInformation)
- + FIC_TO_STRLITERAL(FileHardLinkInformation)
- + FIC_TO_STRLITERAL(FileProcessIdsUsingFileInformation)
- + FIC_TO_STRLITERAL(FileNormalizedNameInformation)
- + FIC_TO_STRLITERAL(FileNetworkPhysicalNameInformation)
- + FIC_TO_STRLITERAL(FileIdGlobalTxDirectoryInformation)
- + }
- + return "<unknown FILE_INFORMATION_CLASS>";
- +}
- +
- void print_condwait_status(int level, int status)
- {
- if (level > g_debug_level) return;
- diff --git a/daemon/daemon_debug.h b/daemon/daemon_debug.h
- index 6d801bb..043ff79 100644
- --- a/daemon/daemon_debug.h
- +++ b/daemon/daemon_debug.h
- @@ -110,6 +110,7 @@ const char* nfs_opnum_to_string(int opnum);
- const char* nfs_error_string(int status);
- const char* rpc_error_string(int status);
- const char* gssauth_string(int type);
- +const char *FILE_INFORMATION_CLASS2string(int fic);
- void print_condwait_status(int level, int status);
- void print_sr_status_flags(int level, int flags);
- void open_log_files();
- diff --git a/daemon/setattr.c b/daemon/setattr.c
- index b700a07..30a262d 100644
- --- a/daemon/setattr.c
- +++ b/daemon/setattr.c
- @@ -357,8 +357,9 @@ static int handle_nfs41_set_size(void *daemon_context, setattr_upcall_args *args
- ("args->buf_len=%ld\n", (long)args->buf_len));
- DPRINTF(2,
- - ("handle_nfs41_set_size: args->set_class=%d, new_file=%lld\n",
- - (int)args->set_class, (long long)size->QuadPart));
- + ("handle_nfs41_set_size: set_class='%s', new_file=%lld\n",
- + FILE_INFORMATION_CLASS2string(args->set_class),
- + (long long)size->QuadPart));
- /* break read delegations before SETATTR */
- nfs41_delegation_return(state->session, &state->file,
- --
- 2.43.0
- From 6d4412f46f0c00246892fd6294a401e8e5b84923 Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Fri, 17 May 2024 13:17:25 +0200
- Subject: [PATCH 4/5] cygwin: Factor out installdest target to Makefile.install
- Factor out installdest target to Makefile.install for
- multi-arch support.
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- cygwin/Makefile | 98 ++++++++---------------------------------
- cygwin/Makefile.install | 90 +++++++++++++++++++++++++++++++++++++
- 2 files changed, 108 insertions(+), 80 deletions(-)
- create mode 100644 cygwin/Makefile.install
- diff --git a/cygwin/Makefile b/cygwin/Makefile
- index 78b8ad6..b40d6c7 100644
- --- a/cygwin/Makefile
- +++ b/cygwin/Makefile
- @@ -13,15 +13,15 @@ PROJECT_BASEDIR_DIR := $(shell dirname $(realpath $(CYGWIN_MAKEFILE_DIR)/))
- DESTDIR:=$(PROJECT_BASEDIR_DIR)/destdir
- -VS_BUILD_DIR:=$(PROJECT_BASEDIR_DIR)/build.vc19/x64/Debug/
- +VS_BUILD_DIR64:=$(PROJECT_BASEDIR_DIR)/build.vc19/x64/Debug/
- # trigger "build" target when these binaries are needed
- -$(VS_BUILD_DIR)/nfsd.exe \
- - $(VS_BUILD_DIR)/nfs_mount.exe \
- - $(VS_BUILD_DIR)/nfs_install.exe \
- - $(VS_BUILD_DIR)/nfs_mount.exe \
- - $(VS_BUILD_DIR)/nfs41_driver.sys \
- - $(VS_BUILD_DIR)/libtirpc.dll: build
- +$(VS_BUILD_DIR64)/nfsd.exe \
- + $(VS_BUILD_DIR64)/nfs_mount.exe \
- + $(VS_BUILD_DIR64)/nfs_install.exe \
- + $(VS_BUILD_DIR64)/nfs_mount.exe \
- + $(VS_BUILD_DIR64)/nfs41_driver.sys \
- + $(VS_BUILD_DIR64)/libtirpc.dll: build
- #
- # build the code
- @@ -49,83 +49,21 @@ clean:
- rm -vRf $$(find "$(PROJECT_BASEDIR_DIR)/build.vc19" -name Debug -o -name Release)
- (cd "$(PROJECT_BASEDIR_DIR)/tests/winfsinfo1" && make clean)
- -# install in DESTDIR
- -installdest: $(VS_BUILD_DIR)/nfsd.exe \
- - $(VS_BUILD_DIR)/nfs_mount.exe \
- - $(VS_BUILD_DIR)/nfs_install.exe \
- - $(VS_BUILD_DIR)/nfs_mount.exe \
- - $(VS_BUILD_DIR)/nfs41_driver.sys \
- - $(VS_BUILD_DIR)/libtirpc.dll \
- +installdest: $(VS_BUILD_DIR64)/nfsd.exe \
- + $(VS_BUILD_DIR64)/nfs_mount.exe \
- + $(VS_BUILD_DIR64)/nfs_install.exe \
- + $(VS_BUILD_DIR64)/nfs_mount.exe \
- + $(VS_BUILD_DIR64)/nfs41_driver.sys \
- + $(VS_BUILD_DIR64)/libtirpc.dll \
- $(PROJECT_BASEDIR_DIR)/nfs41rdr.inf \
- $(PROJECT_BASEDIR_DIR)/etc_netconfig \
- $(PROJECT_BASEDIR_DIR)/ms-nfs41-idmap.conf \
- $(CYGWIN_MAKEFILE_DIR)/devel/msnfs41client.bash
- - @if [[ "$$(ps -ef | grep -v -E "[[:space:]]+$${BASH_PID}[[:space:]]+")" =~ "$(DESTDIR)" ]] ; then \
- - printf 'DIR %q is in use by a process\n' "$DESTDIR" 1>&2 ; \
- - exit 1 ; \
- - fi
- - mkdir -p $(DESTDIR)
- - mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/sbin/
- - # /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/etc
- - mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/usr/src/msnfs41client
- - mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/usr/share/man/man1
- - 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/.
- - 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)/libtirpc.* $(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/usr/src/msnfs41client/msnfs41client_git.bundle" HEAD
- - git diff -w >"$(DESTDIR)/cygdrive/c/cygwin64/usr/src/msnfs41client/msnfs41client_diff_w.diff"
- - git diff >"$(DESTDIR)/cygdrive/c/cygwin64/usr/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
- - PATH+=":$(DESTDIR)/cygdrive/c/cygwin64/sbin/" \
- - /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/mount_sshnfs/mount_sshnfs.ksh --nroff 2>"$(DESTDIR)/cygdrive/c/cygwin64/usr/share/man/man1/mount_sshnfs.1" || true
- - cp $(CYGWIN_MAKEFILE_DIR)/utils/sshnfs/sshnfs.ksh $(DESTDIR)/cygdrive/c/cygwin64/sbin/sshnfs
- - chmod a+x $(DESTDIR)/cygdrive/c/cygwin64/sbin/sshnfs
- - cp $(CYGWIN_MAKEFILE_DIR)/utils/nfsurlconv/nfsurlconv.ksh $(DESTDIR)/cygdrive/c/cygwin64/bin/nfsurlconv
- - chmod a+x $(DESTDIR)/cygdrive/c/cygwin64/bin/nfsurlconv
- - /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/nfsurlconv/nfsurlconv.ksh --nroff 2>"$(DESTDIR)/cygdrive/c/cygwin64/usr/share/man/man1/nfsurlconv.1" || true
- - @ printf "# Package tests\n"
- - cp "$(PROJECT_BASEDIR_DIR)/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/bin/ksh93.exe
- - [[ -x /usr/bin/shcomp.exe ]] && cp /usr/bin/shcomp.exe $(DESTDIR)/cygdrive/c/cygwin64/bin/shcomp.exe
- - cp $(PROJECT_BASEDIR_DIR)/cygwin/cygwin_ksh93/ksh.kshrc $(DESTDIR)/cygdrive/c/cygwin64/etc/ksh.kshrc
- - @ printf '# Packaging libs\n'
- - ldd $$(find $(DESTDIR)/cygdrive/c/cygwin64/sbin/ -iname \*.exe -o -iname \*.dll) | \
- - while read dummy1 dummy2 dllfile dummy3 ; do \
- - printf "%s\n" "$$dllfile" ; \
- - done | \
- - sort -f -u | grep -E -i '/cygdrive/c/Windows/.*(ucrt|vcrun)' | \
- - while read i ; do \
- - cp "$$i" $(DESTDIR)/cygdrive/c/cygwin64/sbin/. ; \
- - done
- - @ printf "# Set file flags\n"
- - (cd $(DESTDIR)/cygdrive/c/cygwin64/sbin/ && chmod a+rx *.exe *.dll)
- - (cd $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/ && chmod a+rx *.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' && ./msnfs41client install #\n# to install the kernel driver as Admin\n#\n" \
- - "$(DESTDIR)/cygdrive/c/cygwin64/sbin/"
- - sync
- + # installdest 64bit Windows
- + make -f $(CYGWIN_MAKEFILE_DIR)/Makefile.install \
- + installdest \
- + VS_BUILD_DIR="$(PROJECT_BASEDIR_DIR)/build.vc19/x64/Debug/" \
- + CYGWIN_BASEPATH=/cygdrive/c/cygwin64/
- bintarball: installdest
- set -o errexit ; set -o xtrace ; \
- diff --git a/cygwin/Makefile.install b/cygwin/Makefile.install
- new file mode 100644
- index 0000000..8496757
- --- /dev/null
- +++ b/cygwin/Makefile.install
- @@ -0,0 +1,90 @@
- +#
- +# ms-nfs41-client/cygwin/Makefile.install
- +#
- +# Simple (Cygwin) Makfile for quick&dirty nfsd_debug.exe testing
- +#
- +# Written by Roland Mainz <roland.mainz@nrubsig.org>
- +#
- +
- +SHELL := /bin/bash
- +
- +CYGWIN_MAKEFILE_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
- +PROJECT_BASEDIR_DIR := $(shell dirname $(realpath $(CYGWIN_MAKEFILE_DIR)/))
- +
- +DESTDIR := $(PROJECT_BASEDIR_DIR)/destdir
- +
- +
- +# install in DESTDIR
- +installdest:
- + #
- + # installing into destdir
- + #
- + @if [[ "$$(ps -ef | grep -v -E "[[:space:]]+$${BASH_PID}[[:space:]]+")" =~ "$(DESTDIR)" ]] ; then \
- + printf 'DIR %q is in use by a process\n' "$DESTDIR" 1>&2 ; \
- + exit 1 ; \
- + fi
- + mkdir -p $(DESTDIR)
- + mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/
- + # /usr/bin is a bind mount to C:/cygwin64/bin, so copy binaries to /$(CYGWIN_BASEPATH)/bin
- + mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/bin
- + # /usr/lib is a bind mount to C:/cygwin64/lib, so copy library data to /$(CYGWIN_BASEPATH)/lib
- + mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/lib
- + mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client
- + mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/etc
- + mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/src/msnfs41client
- + mkdir -p $(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/man/man1
- + cp -r $(VS_BUILD_DIR)/nfsd.exe $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/nfsd_debug.exe
- + cp -r $(VS_BUILD_DIR)/nfsd.pdb $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/nfsd_debug.pdb
- + cp -r $(VS_BUILD_DIR)/nfs_mount.* $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/.
- + cp -r $(VS_BUILD_DIR)/nfsd.* $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/.
- + cp -r $(VS_BUILD_DIR)/nfs_install.* $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/.
- + cp -r $(VS_BUILD_DIR)/libtirpc.* $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/.
- + cp -r $(VS_BUILD_DIR)/nfs41_np.* $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/.
- + cp -r $(VS_BUILD_DIR)/nfs41_driver.* $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/.
- + cp $(PROJECT_BASEDIR_DIR)/nfs41rdr.inf $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/.
- + cp $(PROJECT_BASEDIR_DIR)/etc_netconfig $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/.
- + cp $(PROJECT_BASEDIR_DIR)/ms-nfs41-idmap.conf $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/.
- + cp $(CYGWIN_MAKEFILE_DIR)/devel/msnfs41client.bash $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/msnfs41client
- + chmod a+x "$(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/msnfs41client"
- + (cd "$(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/" && ln -sf ../lib/msnfs41client/msnfs41client .)
- + cp $(PROJECT_BASEDIR_DIR)/cygwin_idmapper.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/.
- + @ printf "# Package sources and diffs\n"
- + git bundle create "$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/src/msnfs41client/msnfs41client_git.bundle" HEAD
- + git diff -w >"$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/src/msnfs41client/msnfs41client_diff_w.diff"
- + git diff >"$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/src/msnfs41client/msnfs41client_diff.diff"
- + @ printf "# Package utilties\n"
- + cp $(CYGWIN_MAKEFILE_DIR)/utils/mount_sshnfs/mount_sshnfs.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/mount_sshnfs
- + chmod a+x $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/mount_sshnfs
- + PATH+=":$(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/" \
- + /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
- + cp $(CYGWIN_MAKEFILE_DIR)/utils/sshnfs/sshnfs.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/sshnfs
- + chmod a+x $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/sshnfs
- + cp $(CYGWIN_MAKEFILE_DIR)/utils/nfsurlconv/nfsurlconv.ksh $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/nfsurlconv
- + chmod a+x $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/nfsurlconv
- + /usr/bin/ksh93 $(CYGWIN_MAKEFILE_DIR)/utils/nfsurlconv/nfsurlconv.ksh --nroff 2>"$(DESTDIR)/$(CYGWIN_BASEPATH)/usr/share/man/man1/nfsurlconv.1" || true
- + @ printf "# Package tests\n"
- + cp "$(PROJECT_BASEDIR_DIR)/tests/winfsinfo1/winfsinfo.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/winfsinfo.exe
- + @ printf "# Package ksh93&co (if available) since Cygwin does not ship with it yet\n"
- + [[ -x $(CYGWIN_BASEPATH)/bin/ksh93.exe ]] && cp $(CYGWIN_BASEPATH)/bin/ksh93.exe $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/ksh93.exe
- + [[ -x $(CYGWIN_BASEPATH)/bin/shcomp.exe ]] && cp $(CYGWIN_BASEPATH)/bin/shcomp.exe $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/shcomp.exe
- + cp $(PROJECT_BASEDIR_DIR)/cygwin/cygwin_ksh93/ksh.kshrc $(DESTDIR)/$(CYGWIN_BASEPATH)/etc/ksh.kshrc
- + @ printf '# Packaging libs\n'
- + ldd $$(find $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/ -iname \*.exe -o -iname \*.dll) | \
- + while read dummy1 dummy2 dllfile dummy3 ; do \
- + printf "%s\n" "$$dllfile" ; \
- + done | \
- + sort -f -u | grep -E -i '/cygdrive/c/Windows/.*(ucrt|vcrun)' | \
- + while read i ; do \
- + cp "$$i" $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/. ; \
- + done
- + @ printf "# Set file flags\n"
- + (cd $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/ && chmod a+rx *.exe *.dll)
- + (cd $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ && chmod a+rx *.dll)
- + @printf "\n#\n# TEST sbin dir is %s\n#\n" "$(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/"
- + @printf '\n'
- + @printf "\n#\n# Now use\n# $$ cd '%s' && ./msnfs41client install #\n# to install the kernel driver as Admin\n#\n" \
- + "$(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/"
- + sync
- +
- +
- +# EOF.
- --
- 2.43.0
- From d20ce970ccc3c1e2fc30a9e87a9852e0596a27bf Mon Sep 17 00:00:00 2001
- From: Roland Mainz <roland.mainz@nrubsig.org>
- Date: Fri, 17 May 2024 15:19:02 +0200
- Subject: [PATCH 5/5] cygwin,daemon: Add Windows 32bit support
- Add initial support for 32bit Windows 10
- Signed-off-by: Cedric Blancher <cedric.blancher@gmail.com>
- ---
- cygwin/Makefile | 39 ++++++++++++++++++++++++++++++++----
- cygwin/Makefile.install | 23 ++++++++++++---------
- cygwin/README.bintarball.txt | 7 +++++--
- daemon/idmap_cygwin.c | 7 ++++++-
- daemon/nfs41_daemon.c | 7 ++++++-
- 5 files changed, 65 insertions(+), 18 deletions(-)
- diff --git a/cygwin/Makefile b/cygwin/Makefile
- index b40d6c7..aaa8864 100644
- --- a/cygwin/Makefile
- +++ b/cygwin/Makefile
- @@ -13,10 +13,17 @@ PROJECT_BASEDIR_DIR := $(shell dirname $(realpath $(CYGWIN_MAKEFILE_DIR)/))
- DESTDIR:=$(PROJECT_BASEDIR_DIR)/destdir
- +VS_BUILD_DIR32:=$(PROJECT_BASEDIR_DIR)/build.vc19/Debug/
- VS_BUILD_DIR64:=$(PROJECT_BASEDIR_DIR)/build.vc19/x64/Debug/
- # trigger "build" target when these binaries are needed
- -$(VS_BUILD_DIR64)/nfsd.exe \
- +$(VS_BUILD_DIR32)/nfsd.exe \
- + $(VS_BUILD_DIR32)/nfs_mount.exe \
- + $(VS_BUILD_DIR32)/nfs_install.exe \
- + $(VS_BUILD_DIR32)/nfs_mount.exe \
- + $(VS_BUILD_DIR32)/nfs41_driver.sys \
- + $(VS_BUILD_DIR32)/libtirpc.dll \
- + $(VS_BUILD_DIR64)/nfsd.exe \
- $(VS_BUILD_DIR64)/nfs_mount.exe \
- $(VS_BUILD_DIR64)/nfs_install.exe \
- $(VS_BUILD_DIR64)/nfs_mount.exe \
- @@ -36,10 +43,20 @@ build_64bit_debug:
- which MSBuild.exe
- MSBuild.exe '$(shell cygpath -w "$(PROJECT_BASEDIR_DIR)/build.vc19/nfs41-client.sln")' -t:Build -p:Configuration=Debug -p:Platform=x64
- +build_32bit_release:
- + @printf '#\n# PATH is %q\n#\n' '$(PATH)'
- + which MSBuild.exe
- + MSBuild.exe '$(shell cygpath -w "$(PROJECT_BASEDIR_DIR)/build.vc19/nfs41-client.sln")' -t:Build -p:Configuration=Release -p:Platform=x86
- +
- +build_32bit_debug:
- + @printf '#\n# PATH is %q\n#\n' '$(PATH)'
- + which MSBuild.exe
- + MSBuild.exe '$(shell cygpath -w "$(PROJECT_BASEDIR_DIR)/build.vc19/nfs41-client.sln")' -t:Build -p:Configuration=Debug -p:Platform=x86
- +
- build_testutils:
- (cd "$(PROJECT_BASEDIR_DIR)/tests/winfsinfo1" && make all)
- -build: build_64bit_release build_64bit_debug build_testutils
- +build: build_32bit_release build_32bit_debug build_64bit_release build_64bit_debug build_testutils
- sync
- #
- @@ -49,7 +66,14 @@ clean:
- rm -vRf $$(find "$(PROJECT_BASEDIR_DIR)/build.vc19" -name Debug -o -name Release)
- (cd "$(PROJECT_BASEDIR_DIR)/tests/winfsinfo1" && make clean)
- -installdest: $(VS_BUILD_DIR64)/nfsd.exe \
- +installdest: \
- + $(VS_BUILD_DIR32)/nfsd.exe \
- + $(VS_BUILD_DIR32)/nfs_mount.exe \
- + $(VS_BUILD_DIR32)/nfs_install.exe \
- + $(VS_BUILD_DIR32)/nfs_mount.exe \
- + $(VS_BUILD_DIR32)/nfs41_driver.sys \
- + $(VS_BUILD_DIR32)/libtirpc.dll \
- + $(VS_BUILD_DIR64)/nfsd.exe \
- $(VS_BUILD_DIR64)/nfs_mount.exe \
- $(VS_BUILD_DIR64)/nfs_install.exe \
- $(VS_BUILD_DIR64)/nfs_mount.exe \
- @@ -59,6 +83,11 @@ installdest: $(VS_BUILD_DIR64)/nfsd.exe \
- $(PROJECT_BASEDIR_DIR)/etc_netconfig \
- $(PROJECT_BASEDIR_DIR)/ms-nfs41-idmap.conf \
- $(CYGWIN_MAKEFILE_DIR)/devel/msnfs41client.bash
- + # installdest 32bit Windows
- + make -f $(CYGWIN_MAKEFILE_DIR)/Makefile.install \
- + installdest \
- + VS_BUILD_DIR="$(PROJECT_BASEDIR_DIR)/build.vc19/Debug/" \
- + CYGWIN_BASEPATH=/cygdrive/c/cygwin/
- # installdest 64bit Windows
- make -f $(CYGWIN_MAKEFILE_DIR)/Makefile.install \
- installdest \
- @@ -73,7 +102,9 @@ bintarball: installdest
- tar -cvf - \
- --owner=SYSTEM:18 \
- --group=SYSTEM:18 \
- - cygdrive/c/cygwin64 | \
- + cygdrive/c/cygwin \
- + cygdrive/c/cygwin64 \
- + | \
- bzip2 -9 >"$${base_filename}.tar.bz2" ; \
- archive_sha256hash="$$(openssl sha256 -r "$${base_filename}.tar.bz2" | while read a dummy ; do printf "%s\n" "$$a" ; done)" ; \
- sed -E <"../cygwin/README.bintarball.txt" \
- diff --git a/cygwin/Makefile.install b/cygwin/Makefile.install
- index 8496757..2af63b4 100644
- --- a/cygwin/Makefile.install
- +++ b/cygwin/Makefile.install
- @@ -65,18 +65,21 @@ installdest:
- @ printf "# Package tests\n"
- cp "$(PROJECT_BASEDIR_DIR)/tests/winfsinfo1/winfsinfo.exe" $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/winfsinfo.exe
- @ printf "# Package ksh93&co (if available) since Cygwin does not ship with it yet\n"
- - [[ -x $(CYGWIN_BASEPATH)/bin/ksh93.exe ]] && cp $(CYGWIN_BASEPATH)/bin/ksh93.exe $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/ksh93.exe
- - [[ -x $(CYGWIN_BASEPATH)/bin/shcomp.exe ]] && cp $(CYGWIN_BASEPATH)/bin/shcomp.exe $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/shcomp.exe
- + [[ -x $(CYGWIN_BASEPATH)/bin/ksh93.exe ]] && cp $(CYGWIN_BASEPATH)/bin/ksh93.exe $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/ksh93.exe || true
- + [[ -x $(CYGWIN_BASEPATH)/bin/shcomp.exe ]] && cp $(CYGWIN_BASEPATH)/bin/shcomp.exe $(DESTDIR)/$(CYGWIN_BASEPATH)/bin/shcomp.exe || true
- cp $(PROJECT_BASEDIR_DIR)/cygwin/cygwin_ksh93/ksh.kshrc $(DESTDIR)/$(CYGWIN_BASEPATH)/etc/ksh.kshrc
- @ printf '# Packaging libs\n'
- - ldd $$(find $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/ -iname \*.exe -o -iname \*.dll) | \
- - while read dummy1 dummy2 dllfile dummy3 ; do \
- - printf "%s\n" "$$dllfile" ; \
- - done | \
- - sort -f -u | grep -E -i '/cygdrive/c/Windows/.*(ucrt|vcrun)' | \
- - while read i ; do \
- - cp "$$i" $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/. ; \
- - done
- + if [[ "$(CYGWIN_BASEPATH)" == *64* ]] ; then \
- + cp \
- + "$$(find '/cygdrive/c/Program Files (x86)/Microsoft Visual Studio/2019/Community' -ipath '*/x64/*/VCRUNTIME140D.dll' | head -n 1)" \
- + $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/. ; \
- + cp '/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/x64/ucrt/ucrtbased.dll' $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/. ; \
- + else \
- + cp \
- + "$$(find '/cygdrive/c/Program Files (x86)/Microsoft Visual Studio/2019/Community' -ipath '*/x86/*/VCRUNTIME140D.dll' | head -n 1)" \
- + $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/. ; \
- + cp '/cygdrive/c/Program Files (x86)/Windows Kits/10/bin/x86/ucrt/ucrtbased.dll' $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/. ; \
- + fi
- @ printf "# Set file flags\n"
- (cd $(DESTDIR)/$(CYGWIN_BASEPATH)/sbin/ && chmod a+rx *.exe *.dll)
- (cd $(DESTDIR)/$(CYGWIN_BASEPATH)/lib/msnfs41client/ && chmod a+rx *.dll)
- diff --git a/cygwin/README.bintarball.txt b/cygwin/README.bintarball.txt
- index 9e94ddd..5ceb58b 100644
- --- a/cygwin/README.bintarball.txt
- +++ b/cygwin/README.bintarball.txt
- @@ -67,8 +67,11 @@ NFSv4.1 client and filesystem driver for Windows 10/11
- #
- # 3. Requirements:
- #
- -- Windows 10 or Windows 11
- -- Cygwin 3.5.3 (or 3.6.x-devel)
- +- Windows 10 (32bit or 64bit) or Windows 11
- +- Cygwin:
- + - Cygwin versions:
- + - 64bit: >= 3.5.3 (or 3.6.x-devel)
- + - 32bit: >= 3.3.6
- - Packages (required):
- cygwin
- cygwin-devel
- diff --git a/daemon/idmap_cygwin.c b/daemon/idmap_cygwin.c
- index f86d038..5f1b020 100644
- --- a/daemon/idmap_cygwin.c
- +++ b/daemon/idmap_cygwin.c
- @@ -38,10 +38,15 @@
- #define VAL_LEN 257
- +#ifdef _WIN64
- #define CYGWIN_IDMAPPER_SCRIPT \
- ("C:\\cygwin64\\bin\\ksh93.exe " \
- "/cygdrive/c/cygwin64/lib/msnfs41client/cygwin_idmapper.ksh")
- -
- +#else
- +#define CYGWIN_IDMAPPER_SCRIPT \
- + ("C:\\cygwin\\bin\\ksh93.exe " \
- + "/cygdrive/c/cygwin/lib/msnfs41client/cygwin_idmapper.ksh")
- +#endif /* _WIN64 */
- #ifdef NFS41_DRIVER_FEATURE_IDMAPPER_CYGWIN
- int cygwin_getent_passwd(const char *name, char *res_loginname, uid_t *res_uid, gid_t *res_gid)
- diff --git a/daemon/nfs41_daemon.c b/daemon/nfs41_daemon.c
- index 56a960e..febca0d 100644
- --- a/daemon/nfs41_daemon.c
- +++ b/daemon/nfs41_daemon.c
- @@ -633,8 +633,13 @@ void init_version_string(void)
- /*
- * Add cygwin version, if Cygwin idmapper is enabled
- */
- +#ifdef _WIN64
- +#define CYGWIN_UNAME_A_CMD "C:\\cygwin64\\bin\\uname.exe -a"
- +#else
- +#define CYGWIN_UNAME_A_CMD "C:\\cygwin\\bin\\uname.exe -a"
- +#endif /* _WIN64 */
- subcmd_popen_context *scmd_uname =
- - subcmd_popen("C:\\cygwin64\\bin\\uname.exe -a");
- + subcmd_popen(CYGWIN_UNAME_A_CMD);
- if (scmd_uname) {
- char unamebuf[256];
- char *s;
- --
- 2.43.0
msnfs41client: Patches for Win10 32bit, FileAllocationInformation, debug+misc, 2024-05-17
Posted by Anonymous on Fri 17th May 2024 14:27
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.