libnatpmp icon indicating copy to clipboard operation
libnatpmp copied to clipboard

natpmp.h refers to natpmp_declspec.h, which is not installed

Open apteryks opened this issue 2 years ago • 2 comments

Hello,

As mentioned in the title, 'make install' installs a lone natpmp.h header that refers to a missing natpmp_declspec.h. That's been known to Gentoo since 2014 but apparently not reported (see: https://bugs.gentoo.org/506832).

The workaround is to specify the HEADERS=natpmp.h natpmp_declspec.h make flag.

apteryks avatar Aug 18 '23 04:08 apteryks

The CMake build system also has that problem, it seems.

apteryks avatar Aug 21 '23 03:08 apteryks

Here's the Guix package with the substitutions that make it correct for me:

(define-public libnatpmp
  ;; Install the latest commit as it provides a pkg-config (.pc) file.
  (let ((base-version "20230423")
        (commit "6a850fd2bd9b08e6edc886382a1dbae2a7df55ec")
        (revision "0"))
    (package
      (name "libnatpmp")
      (version (git-version base-version revision commit))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/miniupnp/libnatpmp")
                      (commit commit)))
                (file-name (git-file-name name version))
                (sha256
                 (base32
                  "18hf9a3i3mncl3w80nzi1684iac3by86bv0hgmbm1v2w8gbfjyw0"))))
      (build-system cmake-build-system)
      (arguments
       (list
        #:tests? #f                     ;no test suite
        #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON")
        #:phases
        #~(modify-phases %standard-phases
            (add-after 'unpack 'patch-build-system
              ;; Have CMake install the natpmp_declspec.h missing header file
              ;; that is referenced by natpmp.h (see:
              ;; https://github.com/miniupnp/libnatpmp/issues/41).
              (lambda _
                (substitute* "CMakeLists.txt"
                  (("install\\(FILES natpmp.h")
                   "install(FILES natpmp.h natpmp_declspec.h"))))
            (add-after 'unpack 'fix-version
              (lambda _
                (with-output-to-file "VERSION"
                  (lambda ()
                    (display #$base-version))))))))
      (native-inputs (list which))
      (home-page "https://miniupnp.tuxfamily.org/libnatpmp.html")
      (synopsis "C library implementing NAT-PMP")
      (description
       "@code{libnatpmp} is a portable and asynchronous implementation of
the Network Address Translation - Port Mapping Protocol (NAT-PMP)
written in the C programming language.")
      (license license:bsd-3))))

apteryks avatar Aug 21 '23 03:08 apteryks