diff options
| author | Mike McQuaid | 2016-08-18 12:24:54 +0100 |
|---|---|---|
| committer | GitHub | 2016-08-18 12:24:54 +0100 |
| commit | b39eba6c5f0f6f1b19e663df52bc72b9d8518886 (patch) | |
| tree | c93de413f16ce9550e8debc983b3988332aeefd1 /Library/Homebrew/formula.rb | |
| parent | 48c442eca5244433be21f834b38a4a6ddbb4b806 (diff) | |
| parent | 6a684f41993f4820b48b7487c32096ea72d4de2f (diff) | |
| download | brew-b39eba6c5f0f6f1b19e663df52bc72b9d8518886.tar.bz2 | |
Merge pull request #719 from vladshablinsky/epochs
Implement epochs
Diffstat (limited to 'Library/Homebrew/formula.rb')
| -rw-r--r-- | Library/Homebrew/formula.rb | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 3730b135c..0acca6546 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -114,6 +114,9 @@ class Formula # @see .revision attr_reader :revision + # Used to change version schemes for packages + attr_reader :version_scheme + # The current working directory during builds. # Will only be non-`nil` inside {#install}. attr_reader :buildpath @@ -139,6 +142,7 @@ class Formula @name = name @path = path @revision = self.class.revision || 0 + @version_scheme = self.class.version_scheme || 0 if path == Formulary.core_path(name) @tap = CoreTap.instance @@ -432,6 +436,7 @@ class Formula def head_version_outdated?(version, options={}) tab = Tab.for_keg(prefix(version)) + return true if tab.version_scheme < version_scheme return true if stable && tab.stable_version && tab.stable_version < stable.version return true if devel && tab.devel_version && tab.devel_version < devel.version @@ -1014,8 +1019,12 @@ class Formula installed_kegs.each do |keg| version = keg.version all_versions << version + next if version.head? - return [] if pkg_version <= version && !version.head? + tab = Tab.for_keg(keg) + next if version_scheme > tab.version_scheme + next if version_scheme == tab.version_scheme && pkg_version > version + return [] end head_version = latest_head_version @@ -1288,6 +1297,7 @@ class Formula "head" => (head.version.to_s if head) }, "revision" => revision, + "version_scheme" => version_scheme, "installed" => [], "linked_keg" => (linked_keg.resolved_path.basename.to_s if linked_keg.exist?), "pinned" => pinned?, @@ -1695,6 +1705,18 @@ class Formula # <pre>revision 1</pre> attr_rw :revision + # @!attribute [w] version_scheme + # Used for creating new Homebrew versions schemes. For example, if we want + # to change version scheme from one to another, then we may need to update + # `version_scheme` of this {Formula} to be able to use new version scheme. + # E.g. to move from 20151020 scheme to 1.0.0 we need to increment + # `version_scheme`. Without this, the prior scheme will always equate to a + # higher version. + # `0` if unset. + # + # <pre>version_scheme 1</pre> + attr_rw :version_scheme + # A list of the {.stable}, {.devel} and {.head} {SoftwareSpec}s. # @private def specs |
