;;; TODO: HEADER.

(use-modules
 (ice-9 popen)
 (ice-9 match)
 (ice-9 rdelim)
 (guix packages)
 (guix build-system gnu)
 (guix gexp)
 ((guix build utils) #:select (with-directory-excursion))
 (gnu packages)
 (gnu packages base)
 (gnu packages autotools)
 (gnu packages gnunet))

(define %source-dir (dirname (current-filename)))

;; Taken from https://gitlab.com/dustyweb/pubstrate/blob/master/guix.scm
(define git-file?
  (let* ((pipe (with-directory-excursion %source-dir
                 (open-pipe* OPEN_READ "git" "ls-files")))
         (files (let loop ((lines '()))
                  (match (read-line pipe)
                    ((? eof-object?)
                     (reverse lines))
                    (line
                     (loop (cons line lines))))))
         (status (close-pipe pipe)))
    (lambda (file stat)
      (match (stat:type stat)
        ('directory #t)
        ((or 'regular 'symlink)
         (any (cut string-suffix? <> file) files))
        (_ #f)))))

(define-public gnurl-git
  (package
    (inherit gnurl)
    (name "gnurl-git")
    (version (string-append "7.51.0-" "dev"))
    (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
       ("libtool" ,libtool)
       ,@(package-native-inputs gnurl)))
    (source
     (local-file %source-dir
                 #:recursive? #t))
    ;;#:select? git-file?))
    (arguments
     `(#:configure-flags '("--enable-ipv6" "--with-gnutls" "--without-libssh2"
                          "--without-libmetalink" "--without-winidn"
                          "--without-librtmp" "--without-nghttp2"
                          "--without-nss" "--without-cyassl"
                          "--without-polarssl" "--without-ssl"
                          "--without-winssl" "--without-darwinssl"
                          "--disable-sspi" "--disable-ntlm-wb"
                          "--disable-ldap" "--disable-rtsp" "--disable-dict"
                          "--disable-telnet" "--disable-tftp" "--disable-pop3"
                          "--disable-imap" "--disable-smtp" "--disable-gopher"
                          "--disable-file" "--disable-ftp" "--disable-smb")
      #:test-target "test"
      #:parallel-tests? #f
      #:phases
      ;; We have to patch runtests.pl in tests/ directory
      (modify-phases %standard-phases
        (add-before 'configure 'autoconf
          (lambda _
            (zero? (system* "./buildconf"))))
        (add-before 'check 'patch-runtests
          (lambda _
            (substitute* "tests/runtests.pl"
              (("/bin/sh") (which "sh")))
            #t)))))))

gnurl-git
