Compile NGINX with full WebDAV support

Dear all,

I am trying to install NGINX with full WebDAV support. The issue that I am facing is that NGINX from Master uses a very old version of the nginx-dav-ext-module (version 0.1), that misses support for the LOCK and UNLOCK functions, that are required by the Microsoft Windows WebDAV redirector. The current version 3.0 of the nginx-dav-ext-module has added that support and also switched from libexpat to libxml2.

I therefore updated the Makefile for NGINX with the new dependency and updated the nginx-dav-ext-module:

...
define Package/nginx/default
  SECTION:=net
  CATEGORY:=Network
  SUBMENU:=Web Servers/Proxies
  TITLE:=Nginx web server
  URL:=http://nginx.org/
  DEPENDS:=+NGINX_PCRE:libpcre +NGINX_SSL:libopenssl \
	+NGINX_HTTP_GZIP:zlib +NGINX_LUA:liblua +libpthread +NGINX_DAV:libxml2
endef
...
ifeq ($(CONFIG_NGINX_DAV),y)
  define Download/nginx-dav-ext-module
    #VERSION:=430fd774fe838a04f1a5defbf1dd571d42300cf9
    VERSION:=f5e30888a256136d9c550bf1ada77d6ea78a48af
    SUBDIR:=nginx-dav-ext-module
    FILE:=nginx-dav-ext-module-$$(VERSION).tar.gz
    URL:=https://github.com/arut/nginx-dav-ext-module.git
    #MIRROR_HASH:=0566053a8756423ecab455fd9d218cec1e017598fcbb3d6415a06f816851611e
    PROTO:=git
  endef
  $(eval $(call Download,nginx-dav-ext-module))

  define Prepare/nginx-dav-ext-module
	$(eval $(Download/nginx-dav-ext-module))
	gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
  endef
endif
...

I have installed NGINX and all dependencies in the SDK and verified with make menuconfig that libxml2 is selected. When I compile, I can see that libxml2 is downloaded and compiled. However, I still get the following error message:

configuring additional modules
adding module in /mnt/data/share/internal/software/openwrt-sdk-18.06.4-x86-64_gcc-7.3.0_musl.Linux-x86_64/build_dir/target-x86_64_musl/nginx-ssl/nginx-1.16.1/nginx-naxsi/naxsi_src
 + ngx_http_naxsi_module was configured
adding module in /mnt/data/share/internal/software/openwrt-sdk-18.06.4-x86-64_gcc-7.3.0_musl.Linux-x86_64/build_dir/target-x86_64_musl/nginx-ssl/nginx-1.16.1/nginx-dav-ext-module
 + ngx_http_dav_ext_module was configured
adding module in /mnt/data/share/internal/software/openwrt-sdk-18.06.4-x86-64_gcc-7.3.0_musl.Linux-x86_64/build_dir/target-x86_64_musl/nginx-ssl/nginx-1.16.1/nginx-headers-more
 + ngx_http_headers_more_filter_module was configured
adding module in /mnt/data/share/internal/software/openwrt-sdk-18.06.4-x86-64_gcc-7.3.0_musl.Linux-x86_64/build_dir/target-x86_64_musl/nginx-ssl/nginx-1.16.1/nginx-brotli
 + ngx_brotli was configured
checking for PCRE library ... found
checking for PCRE JIT support ... found
checking for OpenSSL library ... found
checking for zlib library ... found
checking for libxslt ... not found
checking for libxslt in /usr/local/ ... not found
checking for libxslt in /usr/pkg/ ... not found
checking for libxslt in /opt/local/ ... not found

./configure: error: the HTTP XSLT module requires the libxml2/libxslt
libraries. You can either do not enable the module or install the libraries.

make[3]: *** [Makefile:544: /mnt/data/share/internal/software/openwrt-sdk-18.06.4-x86-64_gcc-7.3.0_musl.Linux-x86_64/build_dir/target-x86_64_musl/nginx-ssl/nginx-1.16.1/.configured_4e24866b58b0ddd60ed21029941392ff] Error 1
make[3]: Leaving directory '/mnt/data/share/internal/software/openwrt-sdk-18.06.4-x86-64_gcc-7.3.0_musl.Linux-x86_64/package/useradd/nginx'
time: package/useradd/nginx/ssl/compile#13.40#21.05#30.32
make[2]: *** [package/Makefile:109: package/useradd/nginx/compile] Error 2
make[2]: Leaving directory '/mnt/data/share/internal/software/openwrt-sdk-18.06.4-x86-64_gcc-7.3.0_musl.Linux-x86_64'
make[1]: *** [package/Makefile:103: /mnt/data/share/internal/software/openwrt-sdk-18.06.4-x86-64_gcc-7.3.0_musl.Linux-x86_64/staging_dir/target-x86_64_musl/stamp/.package_compile] Error 2
make[1]: Leaving directory '/mnt/data/share/internal/software/openwrt-sdk-18.06.4-x86-64_gcc-7.3.0_musl.Linux-x86_64'
make: *** [/mnt/data/share/internal/software/openwrt-sdk-18.06.4-x86-64_gcc-7.3.0_musl.Linux-x86_64/include/toplevel.mk:211: world] Error 2

What can I do to solve this error? I have also installed the dev-version of these libary in Debian, but this did not help. Also installing libxslt in the SDK did not help either.

Any other ideas would be greatly appreciated!

I think you need to add the following to DEPENDS in Package/nginx/default.

+NGINX_DAV:libxslt

That's only true if the package libxslt exists already in the openwrt build system, but you said you added it to the SDK, so I assume this is true.

Hi @juppin,

Thank you for your input. I have already tried to include libxslt. I had the following variants in the Makefile:

+NGINX_DAV:libxslt +libxml2
or
+NGINX_DAV:libxml2 +libxslt
or
+NGINX_DAV:libxml2

all of them lead to the same error message that I have described above.

Any other ideas? Thank you!