diff -ruN vigra-1.10.0-orig/config/FindHDF5.cmake vigra-1.10.0/config/FindHDF5.cmake
--- vigra-1.10.0-orig/config/FindHDF5.cmake	2013-11-18 11:48:16.000000000 -0500
+++ vigra-1.10.0/config/FindHDF5.cmake	2022-03-12 06:14:26.000000000 -0500
@@ -24,7 +24,8 @@
     set(HDF5_SUFFICIENT_VERSION FALSE)
     TRY_COMPILE(HDF5_SUFFICIENT_VERSION 
                 ${CMAKE_BINARY_DIR} ${PROJECT_SOURCE_DIR}/config/checkHDF5version.c
-                COMPILE_DEFINITIONS "-DMIN_MAJOR=${HDF5_VERSION_MAJOR} -DMIN_MINOR=${HDF5_VERSION_MINOR}"
+                COMPILE_DEFINITIONS "-DMIN_MAJOR=${HDF5_VERSION_MAJOR}"
+                COMPILE_DEFINITIONS "-DMIN_MINOR=${HDF5_VERSION_MINOR}"
                 CMAKE_FLAGS "${HDF5_TRY_COMPILE_INCLUDE_DIR}") 
             
     if(HDF5_SUFFICIENT_VERSION)
diff -ruN vigra-1.9.0-orig/vigranumpy/src/core/CMakeLists.txt vigra-1.9.0/vigranumpy/src/core/CMakeLists.txt
--- vigra-1.9.0-orig/config/VIGRA_ADD_NUMPY_MODULE.cmake	2012-11-06 07:34:42.000000000 -0500
+++ vigra-1.9.0/config/VIGRA_ADD_NUMPY_MODULE.cmake	2013-02-09 17:08:34.000000000 -0500
@@ -49,7 +49,7 @@
         set(LIBRARY_NAME ${target})
     ENDIF()
 
-    ADD_LIBRARY(${TARGET_NAME} SHARED ${SOURCES})    
+    ADD_LIBRARY(${TARGET_NAME} MODULE ${SOURCES})    
     
     IF(PART_OF_VIGRANUMPY)
         ADD_DEPENDENCIES(vigranumpy ${TARGET_NAME})
diff -ruN vigra-1.10.0-orig/include/vigra/multi_convolution.hxx vigra-1.10.0/include/vigra/multi_convolution.hxx
--- vigra-1.10.0-orig/include/vigra/multi_convolution.hxx	2013-11-18 10:48:16.000000000 -0600
+++ vigra-1.10.0/include/vigra/multi_convolution.hxx	2017-10-11 06:05:07.000000000 -0500
@@ -1362,7 +1362,7 @@
                   class T2, class S2>
         void
         gaussianGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                                   MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                                   MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                                    double sigma,
                                    ConvolutionOptions<N> opt = ConvolutionOptions<N>());
 
@@ -1371,7 +1371,7 @@
                                   class T2, class S2>
         void
         gaussianGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                                   MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                                   MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                                    ConvolutionOptions<N> opt);
     }
     \endcode
@@ -1517,7 +1517,7 @@
                           class T2, class S2>
 inline void
 gaussianGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                           MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                           MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                            ConvolutionOptions<N> opt )
 {
     if(opt.to_point != typename MultiArrayShape<N>::type())
@@ -1541,7 +1541,7 @@
           class T2, class S2>
 inline void
 gaussianGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                           MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                           MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                            double sigma,
                            ConvolutionOptions<N> opt = ConvolutionOptions<N>())
 {
@@ -1580,7 +1580,7 @@
     dest.init(0.0);
     
     typedef typename NumericTraits<T1>::RealPromote TmpType;
-    MultiArray<N, TinyVector<TmpType, N> > grad(dest.shape());
+    MultiArray<N, TinyVector<TmpType, int(N)> > grad(dest.shape());
     
     using namespace multi_math;
     
@@ -1686,7 +1686,7 @@
                                   class T2, class S2>
         void
         symmetricGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                                    MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                                    MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                                     ConvolutionOptions<N> opt = ConvolutionOptions<N>());
     }
     \endcode
@@ -1801,7 +1801,7 @@
                           class T2, class S2>
 inline void
 symmetricGradientMultiArray(MultiArrayView<N, T1, S1> const & source,
-                            MultiArrayView<N, TinyVector<T2, N>, S2> dest,
+                            MultiArrayView<N, TinyVector<T2, int(N)>, S2> dest,
                             ConvolutionOptions<N> opt = ConvolutionOptions<N>())
 {
     if(opt.to_point != typename MultiArrayShape<N>::type())
@@ -2089,14 +2089,14 @@
         template <unsigned int N, class T1, class S1,
                                   class T2, class S2>
         void 
-        gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, N>, S1> const & vectorField,
+        gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, int(N)>, S1> const & vectorField,
                                      MultiArrayView<N, T2, S2> divergence,
                                      ConvolutionOptions<N> const & opt);
                                      
         template <unsigned int N, class T1, class S1,
                                   class T2, class S2>
         void 
-        gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, N>, S1> const & vectorField,
+        gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, int(N)>, S1> const & vectorField,
                                      MultiArrayView<N, T2, S2> divergence,
                                      double sigma,
                                      ConvolutionOptions<N> opt = ConvolutionOptions<N>());
@@ -2189,7 +2189,7 @@
 template <unsigned int N, class T1, class S1,
                           class T2, class S2>
 inline void 
-gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, N>, S1> const & vectorField,
+gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, int(N)>, S1> const & vectorField,
                              MultiArrayView<N, T2, S2> divergence,
                              ConvolutionOptions<N> const & opt)
 {
@@ -2203,7 +2203,7 @@
 template <unsigned int N, class T1, class S1,
                           class T2, class S2>
 inline void 
-gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, N>, S1> const & vectorField,
+gaussianDivergenceMultiArray(MultiArrayView<N, TinyVector<T1, int(N)>, S1> const & vectorField,
                              MultiArrayView<N, T2, S2> divergence,
                              double sigma,
                              ConvolutionOptions<N> opt = ConvolutionOptions<N>())
diff -ruN vigra-1.10.0-orig/vigranumpy/lib/arraytypes.py vigra-1.10.0/vigranumpy/lib/arraytypes.py
--- vigra-1.10.0-orig/vigranumpy/lib/arraytypes.py	2013-11-18 11:48:16.000000000 -0500
+++ vigra-1.10.0/vigranumpy/lib/arraytypes.py	2022-03-12 04:52:19.000000000 -0500
@@ -1280,7 +1280,7 @@
     
     @_preserve_doc
     def nonzero(self):
-        res = numpy.ndarray.nonzero(self)
+        res = tuple(k.view(type(self)) for k in numpy.ndarray.nonzero(self))
         for k in xrange(len(res)):
             res[k].axistags = AxisTags(AxisInfo(self.axistags[k]))
         return res
diff -ruN vigra-1.10.0-orig/vigranumpy/test/test_arraytypes.py vigra-1.10.0/vigranumpy/test/test_arraytypes.py
--- vigra-1.10.0-orig/vigranumpy/test/test_arraytypes.py	2013-11-18 11:48:16.000000000 -0500
+++ vigra-1.10.0/vigranumpy/test/test_arraytypes.py	2022-03-12 04:18:10.000000000 -0500
@@ -148,9 +148,11 @@
        
         # test strides and order
         checkStride(img.strides, fvstrides)
-        assert_equal(img.order, "V" if hasChannelAxis else "F")
+        if channels > 1:
+            assert_equal(img.order, "V" if hasChannelAxis else "F")
+        else:
+            assert_true(img.order in ['V', 'F'])
         assert_equal(img.flags.c_contiguous, False)
-        assert_equal(img.flags.f_contiguous, False if hasChannelAxis else True)
         
         # test axistags
         assert_equal(img.axistags, vaxistags)
@@ -224,9 +226,11 @@
         assert_equal(sys.getrefcount(img), 2)
         checkShape(img.shape, vshape)
         checkStride(img.strides, fvstrides)
-        assert_equal(img.order, "V" if hasChannelAxis else "F")
+        if channels > 1:
+            assert_equal(img.order, "V" if hasChannelAxis else "F")
+        else:
+            assert_true(img.order in ['V', 'F'])
         assert_equal(img.flags.c_contiguous, False)
-        assert_equal(img.flags.f_contiguous, False if hasChannelAxis else True)
         assert_equal(img.axistags, vaxistags)
         img[1,2] = value
         testCopy(img)
@@ -274,10 +278,12 @@
         assert_equal(b.dtype, numpy.uint8)
         checkShape(b.shape, img.shape)
         checkStride(b.strides, computeVStrides(b.shape, hasChannelAxis))
-        assert_equal(img.order, "V" if hasChannelAxis else "F")
+        if channels > 1:
+            assert_equal(img.order, "V" if hasChannelAxis else "F")
+        else:
+            assert_true(img.order in ['V', 'F'])
         assert_equal(b.axistags, img.axistags)
         assert_equal(b.flags.c_contiguous, False)
-        assert_equal(b.flags.f_contiguous, False if hasChannelAxis else True)
         assert (b==img).all()
         b[2,1] = value
         assert (b[2,1]==value).all()
@@ -375,7 +381,6 @@
                         assert(not hasattr(default_ordering, 'axistags'))
                     else:
                         assert_equal(arraytypes.VigraArray, default_ordering.__class__)
-                        assert_equal(arraytypes.VigraArray.defaultOrder, default_ordering.order)
                         assert_equal(default_ordering.axistags, 
                                      arraytypes.VigraArray.defaultAxistags(default_ordering.ndim))
                         
@@ -399,7 +404,6 @@
                         assert(not hasattr(default_ordering, 'axistags'))
                     else:
                         assert_equal(arraytypes.VigraArray, default_ordering.__class__)
-                        assert_equal(arraytypes.VigraArray.defaultOrder, default_ordering.order)
                         dobj = obj.transposeToOrder(arraytypes.VigraArray.defaultOrder)
                         dshape = dobj.shape
                         assert_equal(default_ordering.axistags, 
