..
   Copyright Spack Project Developers. See COPYRIGHT file for details.

   SPDX-License-Identifier: (Apache-2.0 OR MIT)

.. meta::
   :description lang=en:
      Discover how to use the SourceforgePackage mixin in Spack to automatically generate download URLs for packages hosted on SourceForge.

.. _sourceforgepackage:

SourceForge
-----------

``SourceforgePackage`` is a `mixin-class <https://en.wikipedia.org/wiki/Mixin>`_.
It automatically sets the URL based on a list of SourceForge mirrors listed in ``sourceforge_mirror_path``, which defaults to a half dozen known mirrors.
Refer to the `package source <https://github.com/spack/spack-packages/blob/develop/repos/spack_repo/builtin/build_systems/sourceforge.py>`__ for the current list of mirrors used by Spack.


Methods
^^^^^^^

This package provides a method for populating mirror URLs.

**urls**
    This method returns a list of possible URLs for package source.
    It is decorated with `property` so its results are treated as a package attribute.

    Refer to :ref:`mirrors-of-the-main-url` for information on how Spack uses the ``urls`` attribute during fetching.

Usage
^^^^^^

This helper package can be added to your package by adding it as a base class of your package and defining the relative location of an archive file for one version of your software.

.. code-block:: python
   :emphasize-lines: 1,3

   class MyPackage(AutotoolsPackage, SourceforgePackage):
       ...
       sourceforge_mirror_path = "my-package/mypackage.1.0.0.tar.gz"
       ...

Over 40 packages are using ``SourceforgePackage`` this mix-in as of July 2022 so there are multiple packages to choose from if you want to see a real example.
