Unconditionally upgrade installed Brew packages on OSX - #33481

Merged
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update
Mar 11, 2020
Merged

Unconditionally upgrade installed Brew packages on OSX#33481
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update

Conversation

@directhex

Copy link
Copy Markdown
Contributor

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.

Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.

Closes: #33471

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.
Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.
Closes: dotnet#33471

@jashookjashook left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't this update our native toolsets unconditionally?

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jashook yup. But by calling brew update, as is already the case, the cache of available versions is already "latest at time of build", so either we need to pin specific versions in install-native-dependencies.sh (i think brew supports this?), or find some other mechanism to conditionally upgrade some specific packages.

As is, updating the package manifest to latest and asking "install the latest version of these 7 packages" will always cause failures when any one of those 7 is updated, as is the case today.

Brew is not smart.

@jaredpar

Copy link
Copy Markdown
Member

Is there a way to limit the brew upgrade to just python? Looking through the log that seems to be the only source of our failures right now.

Either way we should proceed with some version of this as a stop gap measure. Builds are failing 100% right now (just verified). This will at least get us unblocked until we can find the appropriate longer term fix.

@jashook

Copy link
Copy Markdown
Contributor

Also seems to me if these machines already have a python3 installed (which seems to have changed) we just should not brew install python3

@jashook

Copy link
Copy Markdown
Contributor

I was suggest a small check if python3 does not exists then brew install python

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jaredparbrew upgrade X if X is not installed is a failure, and brew install X if X is already installed but not $latest is a failure. Not installing python3 seems like it means we can't bootstrap new machines at all with install-native-dependencies.sh. Brew simply lacks a command for either install this set of packages but don't upgrade them or install this set of packages and upgrade any in this set which are out of date.

@directhex

Copy link
Copy Markdown
ContributorAuthor

We can put in a python specific conditional, as long as we're certain that there will never be an issue released for icu4c, openssl, autoconf, automake, libtool, or pkg-config where we're gonna end up in this exact situation again.

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

They would have to be present on the vm provided to us by azdo to have the conflict. Python3 seems understandable why they would add that, the rest may or may not be added. However, personally I find conditionally checking python3 and hoping the other packages are not added a safer solution. Seeing that this is also used by our official build (see below).

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

However, on further thought, we already always install the latest package anyways. So I think I am fine with either solution.

@jashook

Copy link
Copy Markdown
Contributor

Merging to unblock the ci.

@jashook
jashook merged commit a15b2a2 into dotnet:masterMar 11, 2020
@jashook

Copy link
Copy Markdown
Contributor

@directhex thank you for the quick fix

directhex added a commit to directhex/runtime that referenced this pull request Mar 13, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 10, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OSX CI builds fail to install python

4 participants

@directhex@jaredpar@jashook@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Unconditionally upgrade installed Brew packages on OSX - #33481

Merged
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update
Mar 11, 2020
Merged

Unconditionally upgrade installed Brew packages on OSX#33481
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update

Conversation

@directhex

Copy link
Copy Markdown
Contributor

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.

Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.

Closes: #33471

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.
Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.
Closes: dotnet#33471

@jashookjashook left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't this update our native toolsets unconditionally?

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jashook yup. But by calling brew update, as is already the case, the cache of available versions is already "latest at time of build", so either we need to pin specific versions in install-native-dependencies.sh (i think brew supports this?), or find some other mechanism to conditionally upgrade some specific packages.

As is, updating the package manifest to latest and asking "install the latest version of these 7 packages" will always cause failures when any one of those 7 is updated, as is the case today.

Brew is not smart.

@jaredpar

Copy link
Copy Markdown
Member

Is there a way to limit the brew upgrade to just python? Looking through the log that seems to be the only source of our failures right now.

Either way we should proceed with some version of this as a stop gap measure. Builds are failing 100% right now (just verified). This will at least get us unblocked until we can find the appropriate longer term fix.

@jashook

Copy link
Copy Markdown
Contributor

Also seems to me if these machines already have a python3 installed (which seems to have changed) we just should not brew install python3

@jashook

Copy link
Copy Markdown
Contributor

I was suggest a small check if python3 does not exists then brew install python

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jaredparbrew upgrade X if X is not installed is a failure, and brew install X if X is already installed but not $latest is a failure. Not installing python3 seems like it means we can't bootstrap new machines at all with install-native-dependencies.sh. Brew simply lacks a command for either install this set of packages but don't upgrade them or install this set of packages and upgrade any in this set which are out of date.

@directhex

Copy link
Copy Markdown
ContributorAuthor

We can put in a python specific conditional, as long as we're certain that there will never be an issue released for icu4c, openssl, autoconf, automake, libtool, or pkg-config where we're gonna end up in this exact situation again.

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

They would have to be present on the vm provided to us by azdo to have the conflict. Python3 seems understandable why they would add that, the rest may or may not be added. However, personally I find conditionally checking python3 and hoping the other packages are not added a safer solution. Seeing that this is also used by our official build (see below).

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

However, on further thought, we already always install the latest package anyways. So I think I am fine with either solution.

@jashook

Copy link
Copy Markdown
Contributor

Merging to unblock the ci.

@jashook
jashook merged commit a15b2a2 into dotnet:masterMar 11, 2020
@jashook

Copy link
Copy Markdown
Contributor

@directhex thank you for the quick fix

directhex added a commit to directhex/runtime that referenced this pull request Mar 13, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 10, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OSX CI builds fail to install python

4 participants

@directhex@jaredpar@jashook@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Unconditionally upgrade installed Brew packages on OSX - #33481

Merged
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update
Mar 11, 2020
Merged

Unconditionally upgrade installed Brew packages on OSX#33481
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update

Conversation

@directhex

Copy link
Copy Markdown
Contributor

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.

Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.

Closes: #33471

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.
Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.
Closes: dotnet#33471

@jashookjashook left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't this update our native toolsets unconditionally?

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jashook yup. But by calling brew update, as is already the case, the cache of available versions is already "latest at time of build", so either we need to pin specific versions in install-native-dependencies.sh (i think brew supports this?), or find some other mechanism to conditionally upgrade some specific packages.

As is, updating the package manifest to latest and asking "install the latest version of these 7 packages" will always cause failures when any one of those 7 is updated, as is the case today.

Brew is not smart.

@jaredpar

Copy link
Copy Markdown
Member

Is there a way to limit the brew upgrade to just python? Looking through the log that seems to be the only source of our failures right now.

Either way we should proceed with some version of this as a stop gap measure. Builds are failing 100% right now (just verified). This will at least get us unblocked until we can find the appropriate longer term fix.

@jashook

Copy link
Copy Markdown
Contributor

Also seems to me if these machines already have a python3 installed (which seems to have changed) we just should not brew install python3

@jashook

Copy link
Copy Markdown
Contributor

I was suggest a small check if python3 does not exists then brew install python

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jaredparbrew upgrade X if X is not installed is a failure, and brew install X if X is already installed but not $latest is a failure. Not installing python3 seems like it means we can't bootstrap new machines at all with install-native-dependencies.sh. Brew simply lacks a command for either install this set of packages but don't upgrade them or install this set of packages and upgrade any in this set which are out of date.

@directhex

Copy link
Copy Markdown
ContributorAuthor

We can put in a python specific conditional, as long as we're certain that there will never be an issue released for icu4c, openssl, autoconf, automake, libtool, or pkg-config where we're gonna end up in this exact situation again.

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

They would have to be present on the vm provided to us by azdo to have the conflict. Python3 seems understandable why they would add that, the rest may or may not be added. However, personally I find conditionally checking python3 and hoping the other packages are not added a safer solution. Seeing that this is also used by our official build (see below).

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

However, on further thought, we already always install the latest package anyways. So I think I am fine with either solution.

@jashook

Copy link
Copy Markdown
Contributor

Merging to unblock the ci.

@jashook
jashook merged commit a15b2a2 into dotnet:masterMar 11, 2020
@jashook

Copy link
Copy Markdown
Contributor

@directhex thank you for the quick fix

directhex added a commit to directhex/runtime that referenced this pull request Mar 13, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 10, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OSX CI builds fail to install python

4 participants

@directhex@jaredpar@jashook@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Unconditionally upgrade installed Brew packages on OSX - #33481

Merged
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update
Mar 11, 2020
Merged

Unconditionally upgrade installed Brew packages on OSX#33481
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update

Conversation

@directhex

Copy link
Copy Markdown
Contributor

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.

Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.

Closes: #33471

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.
Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.
Closes: dotnet#33471

@jashookjashook left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't this update our native toolsets unconditionally?

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jashook yup. But by calling brew update, as is already the case, the cache of available versions is already "latest at time of build", so either we need to pin specific versions in install-native-dependencies.sh (i think brew supports this?), or find some other mechanism to conditionally upgrade some specific packages.

As is, updating the package manifest to latest and asking "install the latest version of these 7 packages" will always cause failures when any one of those 7 is updated, as is the case today.

Brew is not smart.

@jaredpar

Copy link
Copy Markdown
Member

Is there a way to limit the brew upgrade to just python? Looking through the log that seems to be the only source of our failures right now.

Either way we should proceed with some version of this as a stop gap measure. Builds are failing 100% right now (just verified). This will at least get us unblocked until we can find the appropriate longer term fix.

@jashook

Copy link
Copy Markdown
Contributor

Also seems to me if these machines already have a python3 installed (which seems to have changed) we just should not brew install python3

@jashook

Copy link
Copy Markdown
Contributor

I was suggest a small check if python3 does not exists then brew install python

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jaredparbrew upgrade X if X is not installed is a failure, and brew install X if X is already installed but not $latest is a failure. Not installing python3 seems like it means we can't bootstrap new machines at all with install-native-dependencies.sh. Brew simply lacks a command for either install this set of packages but don't upgrade them or install this set of packages and upgrade any in this set which are out of date.

@directhex

Copy link
Copy Markdown
ContributorAuthor

We can put in a python specific conditional, as long as we're certain that there will never be an issue released for icu4c, openssl, autoconf, automake, libtool, or pkg-config where we're gonna end up in this exact situation again.

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

They would have to be present on the vm provided to us by azdo to have the conflict. Python3 seems understandable why they would add that, the rest may or may not be added. However, personally I find conditionally checking python3 and hoping the other packages are not added a safer solution. Seeing that this is also used by our official build (see below).

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

However, on further thought, we already always install the latest package anyways. So I think I am fine with either solution.

@jashook

Copy link
Copy Markdown
Contributor

Merging to unblock the ci.

@jashook
jashook merged commit a15b2a2 into dotnet:masterMar 11, 2020
@jashook

Copy link
Copy Markdown
Contributor

@directhex thank you for the quick fix

directhex added a commit to directhex/runtime that referenced this pull request Mar 13, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 10, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OSX CI builds fail to install python

4 participants

@directhex@jaredpar@jashook@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Unconditionally upgrade installed Brew packages on OSX - #33481

Merged
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update
Mar 11, 2020
Merged

Unconditionally upgrade installed Brew packages on OSX#33481
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update

Conversation

@directhex

Copy link
Copy Markdown
Contributor

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.

Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.

Closes: #33471

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.
Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.
Closes: dotnet#33471

@jashookjashook left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't this update our native toolsets unconditionally?

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jashook yup. But by calling brew update, as is already the case, the cache of available versions is already "latest at time of build", so either we need to pin specific versions in install-native-dependencies.sh (i think brew supports this?), or find some other mechanism to conditionally upgrade some specific packages.

As is, updating the package manifest to latest and asking "install the latest version of these 7 packages" will always cause failures when any one of those 7 is updated, as is the case today.

Brew is not smart.

@jaredpar

Copy link
Copy Markdown
Member

Is there a way to limit the brew upgrade to just python? Looking through the log that seems to be the only source of our failures right now.

Either way we should proceed with some version of this as a stop gap measure. Builds are failing 100% right now (just verified). This will at least get us unblocked until we can find the appropriate longer term fix.

@jashook

Copy link
Copy Markdown
Contributor

Also seems to me if these machines already have a python3 installed (which seems to have changed) we just should not brew install python3

@jashook

Copy link
Copy Markdown
Contributor

I was suggest a small check if python3 does not exists then brew install python

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jaredparbrew upgrade X if X is not installed is a failure, and brew install X if X is already installed but not $latest is a failure. Not installing python3 seems like it means we can't bootstrap new machines at all with install-native-dependencies.sh. Brew simply lacks a command for either install this set of packages but don't upgrade them or install this set of packages and upgrade any in this set which are out of date.

@directhex

Copy link
Copy Markdown
ContributorAuthor

We can put in a python specific conditional, as long as we're certain that there will never be an issue released for icu4c, openssl, autoconf, automake, libtool, or pkg-config where we're gonna end up in this exact situation again.

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

They would have to be present on the vm provided to us by azdo to have the conflict. Python3 seems understandable why they would add that, the rest may or may not be added. However, personally I find conditionally checking python3 and hoping the other packages are not added a safer solution. Seeing that this is also used by our official build (see below).

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

However, on further thought, we already always install the latest package anyways. So I think I am fine with either solution.

@jashook

Copy link
Copy Markdown
Contributor

Merging to unblock the ci.

@jashook
jashook merged commit a15b2a2 into dotnet:masterMar 11, 2020
@jashook

Copy link
Copy Markdown
Contributor

@directhex thank you for the quick fix

directhex added a commit to directhex/runtime that referenced this pull request Mar 13, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 10, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OSX CI builds fail to install python

4 participants

@directhex@jaredpar@jashook@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Unconditionally upgrade installed Brew packages on OSX - #33481

Merged
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update
Mar 11, 2020
Merged

Unconditionally upgrade installed Brew packages on OSX#33481
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update

Conversation

@directhex

Copy link
Copy Markdown
Contributor

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.

Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.

Closes: #33471

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.
Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.
Closes: dotnet#33471

@jashookjashook left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't this update our native toolsets unconditionally?

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jashook yup. But by calling brew update, as is already the case, the cache of available versions is already "latest at time of build", so either we need to pin specific versions in install-native-dependencies.sh (i think brew supports this?), or find some other mechanism to conditionally upgrade some specific packages.

As is, updating the package manifest to latest and asking "install the latest version of these 7 packages" will always cause failures when any one of those 7 is updated, as is the case today.

Brew is not smart.

@jaredpar

Copy link
Copy Markdown
Member

Is there a way to limit the brew upgrade to just python? Looking through the log that seems to be the only source of our failures right now.

Either way we should proceed with some version of this as a stop gap measure. Builds are failing 100% right now (just verified). This will at least get us unblocked until we can find the appropriate longer term fix.

@jashook

Copy link
Copy Markdown
Contributor

Also seems to me if these machines already have a python3 installed (which seems to have changed) we just should not brew install python3

@jashook

Copy link
Copy Markdown
Contributor

I was suggest a small check if python3 does not exists then brew install python

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jaredparbrew upgrade X if X is not installed is a failure, and brew install X if X is already installed but not $latest is a failure. Not installing python3 seems like it means we can't bootstrap new machines at all with install-native-dependencies.sh. Brew simply lacks a command for either install this set of packages but don't upgrade them or install this set of packages and upgrade any in this set which are out of date.

@directhex

Copy link
Copy Markdown
ContributorAuthor

We can put in a python specific conditional, as long as we're certain that there will never be an issue released for icu4c, openssl, autoconf, automake, libtool, or pkg-config where we're gonna end up in this exact situation again.

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

They would have to be present on the vm provided to us by azdo to have the conflict. Python3 seems understandable why they would add that, the rest may or may not be added. However, personally I find conditionally checking python3 and hoping the other packages are not added a safer solution. Seeing that this is also used by our official build (see below).

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

However, on further thought, we already always install the latest package anyways. So I think I am fine with either solution.

@jashook

Copy link
Copy Markdown
Contributor

Merging to unblock the ci.

@jashook
jashook merged commit a15b2a2 into dotnet:masterMar 11, 2020
@jashook

Copy link
Copy Markdown
Contributor

@directhex thank you for the quick fix

directhex added a commit to directhex/runtime that referenced this pull request Mar 13, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 10, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OSX CI builds fail to install python

4 participants

@directhex@jaredpar@jashook@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Unconditionally upgrade installed Brew packages on OSX - #33481

Merged
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update
Mar 11, 2020
Merged

Unconditionally upgrade installed Brew packages on OSX#33481
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update

Conversation

@directhex

Copy link
Copy Markdown
Contributor

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.

Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.

Closes: #33471

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.
Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.
Closes: dotnet#33471

@jashookjashook left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't this update our native toolsets unconditionally?

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jashook yup. But by calling brew update, as is already the case, the cache of available versions is already "latest at time of build", so either we need to pin specific versions in install-native-dependencies.sh (i think brew supports this?), or find some other mechanism to conditionally upgrade some specific packages.

As is, updating the package manifest to latest and asking "install the latest version of these 7 packages" will always cause failures when any one of those 7 is updated, as is the case today.

Brew is not smart.

@jaredpar

Copy link
Copy Markdown
Member

Is there a way to limit the brew upgrade to just python? Looking through the log that seems to be the only source of our failures right now.

Either way we should proceed with some version of this as a stop gap measure. Builds are failing 100% right now (just verified). This will at least get us unblocked until we can find the appropriate longer term fix.

@jashook

Copy link
Copy Markdown
Contributor

Also seems to me if these machines already have a python3 installed (which seems to have changed) we just should not brew install python3

@jashook

Copy link
Copy Markdown
Contributor

I was suggest a small check if python3 does not exists then brew install python

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jaredparbrew upgrade X if X is not installed is a failure, and brew install X if X is already installed but not $latest is a failure. Not installing python3 seems like it means we can't bootstrap new machines at all with install-native-dependencies.sh. Brew simply lacks a command for either install this set of packages but don't upgrade them or install this set of packages and upgrade any in this set which are out of date.

@directhex

Copy link
Copy Markdown
ContributorAuthor

We can put in a python specific conditional, as long as we're certain that there will never be an issue released for icu4c, openssl, autoconf, automake, libtool, or pkg-config where we're gonna end up in this exact situation again.

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

They would have to be present on the vm provided to us by azdo to have the conflict. Python3 seems understandable why they would add that, the rest may or may not be added. However, personally I find conditionally checking python3 and hoping the other packages are not added a safer solution. Seeing that this is also used by our official build (see below).

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

However, on further thought, we already always install the latest package anyways. So I think I am fine with either solution.

@jashook

Copy link
Copy Markdown
Contributor

Merging to unblock the ci.

@jashook
jashook merged commit a15b2a2 into dotnet:masterMar 11, 2020
@jashook

Copy link
Copy Markdown
Contributor

@directhex thank you for the quick fix

directhex added a commit to directhex/runtime that referenced this pull request Mar 13, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 10, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OSX CI builds fail to install python

4 participants

@directhex@jaredpar@jashook@Dotnet-GitSync-Bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Unconditionally upgrade installed Brew packages on OSX - #33481

Merged
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update
Mar 11, 2020
Merged

Unconditionally upgrade installed Brew packages on OSX#33481
jashook merged 1 commit into
dotnet:masterfrom
directhex:upgrade-after-update

Conversation

@directhex

Copy link
Copy Markdown
Contributor

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.

Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.

Closes: #33471

With Apt, if you have X 1.0 installed, 1.1 exists in the package manifest, and say "install X", X is upgraded to 1.1. With Brew, a fatal error is thrown.
Blindly upgrading all previously installed packages is not ideal, and not a perfect mirror for the Apt behaviour, but it should mean that if X is previously installed it gets upgraded (causing a warning during install, when it's asked to be installed again with the same version), and if it's not already installed then it gets installed later.
Closes: dotnet#33471

@jashookjashook left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't this update our native toolsets unconditionally?

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jashook yup. But by calling brew update, as is already the case, the cache of available versions is already "latest at time of build", so either we need to pin specific versions in install-native-dependencies.sh (i think brew supports this?), or find some other mechanism to conditionally upgrade some specific packages.

As is, updating the package manifest to latest and asking "install the latest version of these 7 packages" will always cause failures when any one of those 7 is updated, as is the case today.

Brew is not smart.

@jaredpar

Copy link
Copy Markdown
Member

Is there a way to limit the brew upgrade to just python? Looking through the log that seems to be the only source of our failures right now.

Either way we should proceed with some version of this as a stop gap measure. Builds are failing 100% right now (just verified). This will at least get us unblocked until we can find the appropriate longer term fix.

@jashook

Copy link
Copy Markdown
Contributor

Also seems to me if these machines already have a python3 installed (which seems to have changed) we just should not brew install python3

@jashook

Copy link
Copy Markdown
Contributor

I was suggest a small check if python3 does not exists then brew install python

@directhex

Copy link
Copy Markdown
ContributorAuthor

@jaredparbrew upgrade X if X is not installed is a failure, and brew install X if X is already installed but not $latest is a failure. Not installing python3 seems like it means we can't bootstrap new machines at all with install-native-dependencies.sh. Brew simply lacks a command for either install this set of packages but don't upgrade them or install this set of packages and upgrade any in this set which are out of date.

@directhex

Copy link
Copy Markdown
ContributorAuthor

We can put in a python specific conditional, as long as we're certain that there will never be an issue released for icu4c, openssl, autoconf, automake, libtool, or pkg-config where we're gonna end up in this exact situation again.

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

They would have to be present on the vm provided to us by azdo to have the conflict. Python3 seems understandable why they would add that, the rest may or may not be added. However, personally I find conditionally checking python3 and hoping the other packages are not added a safer solution. Seeing that this is also used by our official build (see below).

@jashook

jashook commented Mar 11, 2020

Copy link
Copy Markdown
Contributor

However, on further thought, we already always install the latest package anyways. So I think I am fine with either solution.

@jashook

Copy link
Copy Markdown
Contributor

Merging to unblock the ci.

@jashook
jashook merged commit a15b2a2 into dotnet:masterMar 11, 2020
@jashook

Copy link
Copy Markdown
Contributor

@directhex thank you for the quick fix

directhex added a commit to directhex/runtime that referenced this pull request Mar 13, 2020
@ghostghost locked as resolved and limited conversation to collaborators Dec 10, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OSX CI builds fail to install python

4 participants

@directhex@jaredpar@jashook@Dotnet-GitSync-Bot