# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
import os


class Patchelf(AutotoolsPackage):
    """PatchELF is a small utility to modify the dynamic linker and RPATH of
       ELF executables."""

    homepage = "https://nixos.org/patchelf.html"
    url      = "https://nixos.org/releases/patchelf/patchelf-0.10/patchelf-0.10.tar.gz"
    list_url = "https://nixos.org/releases/patchelf/"
    list_depth = 1

    version('0.10', sha256='b2deabce05c34ce98558c0efb965f209de592197b2c88e930298d740ead09019')
    version('0.9',  sha256='f2aa40a6148cb3b0ca807a1bf836b081793e55ec9e5540a5356d800132be7e0a')
    version('0.8',  sha256='14af06a2da688d577d64ff8dac065bb8903bbffbe01d30c62df7af9bf4ce72fe')

    def test(self):
        # Check patchelf in prefix and reports the correct version
        reason = 'test: ensuring patchelf version is {0}' \
            .format(self.spec.version)
        self.run_test('patchelf',
                      options='--version',
                      expected=['patchelf %s' % self.spec.version],
                      installed=True,
                      purpose=reason)

        # Check the rpath is changed
        currdir = os.getcwd()
        hello_file = self.test_suite.current_test_data_dir.join('hello')
        self.run_test('patchelf', ['--set-rpath', currdir, hello_file],
                      purpose='test: ensuring that patchelf can change rpath')

        self.run_test('patchelf',
                      options=['--print-rpath', hello_file],
                      expected=[currdir],
                      purpose='test: ensuring that patchelf changed rpath')

@@ -438,49 +438,56 @@
 s://
-nixos.org/releases/patchelf/patchelf-0.10
+github.com/NixOS/patchelf/releases/download/0.12
 /pat
@@ -499,16 +499,17 @@
 -0.1
-0
+2
 .tar.
-gz
+bz2
 %22%0A  
@@ -580,16 +580,206 @@
 th = 1%0A%0A
+    version('0.12', sha256='699a31cf52211cf5ad6e35a8801eb637bc7f3c43117140426400d67b7babd792')%0A    version('0.11', sha256='e52378cc2f9379c6e84a04ac100a3589145533a7b0cd26ef23c79dfd8a9038f9')%0A
     vers
@@ -1052,24 +1052,338 @@
 f4ce72fe')%0A%0A
+    def url_for_version(self, version):%0A        if version %3C Version('0.12'):%0A            return %22https://nixos.org/releases/patchelf/patchelf-%7B0%7D/patchelf-%7B1%7D.tar.gz%22.format(version, version)%0A%0A        return %22https://github.com/NixOS/patchelf/releases/download/%7B0%7D/patchelf-%7B1%7D.tar.bz2%22.format(version, version)%0A%0A
     def test

Add new versions of patchelf (#22939)