openssl : special treatment for @external (fixes #647)
This commit is contained in:
		@@ -30,6 +30,23 @@ def url_for_version(self, version):
 | 
			
		||||
        # Same idea, but just to avoid issuing the same message multiple times
 | 
			
		||||
        warnings_given_to_user = getattr(Openssl, '_warnings_given', {})
 | 
			
		||||
        if openssl_url is None:
 | 
			
		||||
            if self.spec.satisfies('@external'):
 | 
			
		||||
                # The version @external is reserved to system openssl. In that case return a fake url and exit
 | 
			
		||||
                openssl_url = '@external (reserved version for system openssl)'
 | 
			
		||||
                if not warnings_given_to_user.get(version, False):
 | 
			
		||||
                    tty.msg('Using openssl@external : the version @external is reserved for system openssl')
 | 
			
		||||
                    warnings_given_to_user[version] = True
 | 
			
		||||
            else:
 | 
			
		||||
                openssl_url = self.check_for_outdated_release(version, warnings_given_to_user)  # Store the computed URL
 | 
			
		||||
            openssl_urls[version] = openssl_url
 | 
			
		||||
            # Store the updated dictionary of URLS
 | 
			
		||||
            Openssl._openssl_url = openssl_urls
 | 
			
		||||
            # Store the updated dictionary of warnings
 | 
			
		||||
            Openssl._warnings_given = warnings_given_to_user
 | 
			
		||||
 | 
			
		||||
        return openssl_url
 | 
			
		||||
 | 
			
		||||
    def check_for_outdated_release(self, version, warnings_given_to_user):
 | 
			
		||||
        latest = 'http://www.openssl.org/source/openssl-{version}.tar.gz'
 | 
			
		||||
        older = 'http://www.openssl.org/source/old/{version_number}/openssl-{version_full}.tar.gz'
 | 
			
		||||
        # Try to use the url where the latest tarballs are stored. If the url does not exist (404), then
 | 
			
		||||
@@ -43,19 +60,13 @@ def url_for_version(self, version):
 | 
			
		||||
            # Checks if we already warned the user for this particular version of OpenSSL.
 | 
			
		||||
            # If not we display a warning message and mark this version
 | 
			
		||||
            if not warnings_given_to_user.get(version, False):
 | 
			
		||||
                    tty.warn('This installation depends on an old version of OpenSSL, which may have known security issues. ')
 | 
			
		||||
                tty.warn(
 | 
			
		||||
                    'This installation depends on an old version of OpenSSL, which may have known security issues. ')
 | 
			
		||||
                tty.warn('Consider updating to the latest version of this package.')
 | 
			
		||||
                tty.warn('More details at {homepage}'.format(homepage=Openssl.homepage))
 | 
			
		||||
                warnings_given_to_user[version] = True
 | 
			
		||||
        else:
 | 
			
		||||
            openssl_url = latest_url
 | 
			
		||||
            # Store the computed URL
 | 
			
		||||
            openssl_urls[version] = openssl_url
 | 
			
		||||
            # Store the updated dictionary of URLS
 | 
			
		||||
            Openssl._openssl_url = openssl_urls
 | 
			
		||||
            # Store the updated dictionary of warnings
 | 
			
		||||
            Openssl._warnings_given = warnings_given_to_user
 | 
			
		||||
 | 
			
		||||
        return openssl_url
 | 
			
		||||
 | 
			
		||||
    def install(self, spec, prefix):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user