Subject: gforge.inria.fr to be taken off-line in Dec. 2020

From: Ludovic Courtès <[email-masked]>
Date: Thu, 02 Jul 2020 09:29:55 +0200

Hello!

The hosting site gforge.inria.fr will be taken off-line in December
2020.  This GForge instance hosts source code as tarballs, Subversion
repos, and Git repos.  Users have been invited to migrate to
gitlab.inria.fr, which is Git only.  It seems that Software Heritage
hasn’t archived (yet) all of gforge.inria.fr.  Let’s keep track of the
situation in this issue.

The following packages have their source on gforge.inria.fr:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> ,pp packages-on-gforge
$7 = (#<package [email-masked] gnu/packages/statistics.scm:3931 7f632401a640>
 #<package [email-masked] gnu/packages/ocaml.scm:295 7f63235eb3c0>
 #<package [email-masked] gnu/packages/ocaml.scm:357 7f63235eb280>
 #<package [email-masked] gnu/packages/multiprecision.scm:158 7f632ee3adc0>
 #<package [email-masked] gnu/packages/maths.scm:2920 7f632d832640>
 #<package [email-masked] gnu/packages/maths.scm:2774 7f632d832780>
 #<package [email-masked] gnu/packages/maths.scm:2944 7f632d8325a0>
 #<package [email-masked] gnu/packages/maths.scm:2873 7f632d8326e0>
 #<package [email-masked] gnu/packages/algebra.scm:103 7f6323ea1280>
 #<package [email-masked] gnu/packages/algebra.scm:658 7f6323eb4960>
 #<package [email-masked] gnu/packages/algebra.scm:322 7f6323eb4dc0>)
--8<---------------cut here---------------end--------------->8---

‘isl’ (a dependency of GCC) has its source on gforge.inria.fr but it’s
also mirrored at gcc.gnu.org apparently.

Of these, the following are available on Software Heritage:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> ,pp archived-source
$8 = (#<package [email-masked] gnu/packages/ocaml.scm:295 7f63235eb3c0>
 #<package [email-masked] gnu/packages/ocaml.scm:357 7f63235eb280>
 #<package [email-masked] gnu/packages/maths.scm:2920 7f632d832640>
 #<package [email-masked] gnu/packages/maths.scm:2774 7f632d832780>
 #<package [email-masked] gnu/packages/maths.scm:2944 7f632d8325a0>
 #<package [email-masked] gnu/packages/maths.scm:2873 7f632d8326e0>
 #<package [email-masked] gnu/packages/gcc.scm:925 7f632dc82320>
 #<package [email-masked] gnu/packages/gcc.scm:939 7f632dc82280>)
--8<---------------cut here---------------end--------------->8---

So we’ll be missing these:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> ,pp (lset-difference eq? $7 $8)
$11 = (#<package [email-masked] gnu/packages/statistics.scm:3931 7f632401a640>
 #<package [email-masked] gnu/packages/multiprecision.scm:158 7f632ee3adc0>
 #<package [email-masked] gnu/packages/algebra.scm:103 7f6323ea1280>
 #<package [email-masked] gnu/packages/algebra.scm:658 7f6323eb4960>
 #<package [email-masked] gnu/packages/algebra.scm:322 7f6323eb4dc0>)
--8<---------------cut here---------------end--------------->8---

Attached the code I used for this.

Thanks,
Ludo’.

(use-modules (guix) (gnu)
             (guix svn-download)
             (guix git-download)
             (guix swh)
             (ice-9 match)
             (srfi srfi-1)
             (srfi srfi-26))

(define (gforge? package)
  (define (gforge-string? str)
    (string-contains str "gforge.inria.fr"))

  (match (package-source package)
    ((? origin? o)
     (match (origin-uri o)
       ((? string? url)
        (gforge-string? url))
       (((? string? urls) ...)
        (any gforge-string? urls))                ;or 'find'
       ((? git-reference? ref)
        (gforge-string? (git-reference-url ref)))
       ((? svn-reference? ref)
        (gforge-string? (svn-reference-url ref)))
       (_ #f)))
    (_ #f)))

(define packages-on-gforge
  (fold-packages (lambda (package result)
                   (if (gforge? package)
                       (cons package result)
                       result))
                 '()))

(define archived-source
  (filter (lambda (package)
            (let* ((origin (package-source package))
                   (hash  (origin-hash origin)))
              (lookup-content (content-hash-value hash)
                              (symbol->string
                               (content-hash-algorithm hash)))))
          packages-on-gforge))