Skip to content

Conversation

@tkelman
Copy link
Contributor

@tkelman tkelman commented Feb 19, 2015

This is to address JuliaInterop/ZMQ.jl#69

I originally wanted to make the win-extras target shorter, with an aim of getting rid of it as soon as we can expunge our dependency on command-line git for Pkg. Unfortunately putting these dll's in usr/bin breaks llvm-config.exe when compiled with Cygwin's version of MinGW-w64. Doing it as part of win-extras appears to work though, they get downloaded into dist-extras and only copied into the installed folder during make dist. No more need to restart Julia for dlopen of ZMQ or Cbc dll's to work.

This runs the risk of making the buildbots susceptible to opensuse connectivity flakiness, we'll have to see.

probably should have written this in python instead of sh...

implement rpm_select and rpm_provides

implement downloading into usr/bin

simplify even further by skipping requires

run in dist-extras

don't need rpm_provides with this version either
@tkelman tkelman added building Build system, or building Julia or its dependencies system:windows Affects only Windows backport pending labels Feb 19, 2015
@tkelman
Copy link
Contributor Author

tkelman commented Feb 19, 2015

@staticfloat have you ever seen �Error: undefined method []' for nil:NilClass` before from homebrew? https://s3.amazonaws.com/archive.travis-ci.org/jobs/51318570/log.txt

@staticfloat
Copy link
Member

No, not quite sure what that's about. I've restarted the build, we'll see
what happens.
-E

On Wed, Feb 18, 2015 at 6:42 PM, Tony Kelman [email protected]
wrote:

@staticfloat https://github.com/staticfloat have you ever seen Error:
undefined method[]' for nil:NilClass` before from homebrew?
https://s3.amazonaws.com/archive.travis-ci.org/jobs/51318570/log.txt


Reply to this email directly or view it on GitHub
#10244 (comment).

@tkelman
Copy link
Contributor Author

tkelman commented Feb 19, 2015

Fluke, apparently. Feedback on this approach, or should we just give it a shot on the buildbots and see what happens?

@staticfloat
Copy link
Member

Yeah, I think we should just give it a shot

staticfloat added a commit that referenced this pull request Feb 19, 2015
Get libgcc dlls from opensuse as part of make win-extras
@staticfloat staticfloat merged commit 53575bb into master Feb 19, 2015
@tkelman tkelman deleted the tk/winrpm-dlls branch February 19, 2015 22:10
@tkelman
Copy link
Contributor Author

tkelman commented Feb 19, 2015

BTW how do we control the buildbots staying up-to-date on their cygwin packages? IIRC packer/vagrant wound up not quite working with the type of virtualization you use for them?

@staticfloat
Copy link
Member

I have an ansible script that I run every now and then to update everything
except the Windows builders. Do you have a command-line program that can
update cygwin packages?

On Thu, Feb 19, 2015 at 2:36 PM, Tony Kelman [email protected]
wrote:

BTW how do we control the buildbots staying up-to-date on their cygwin
packages? IIRC packer/vagrant wound up not quite working with the type of
virtualization you use for them?


Reply to this email directly or view it on GitHub
#10244 (comment).

@tkelman
Copy link
Contributor Author

tkelman commented Feb 19, 2015

Yeah, same command that I use to initially install the cygwin packages, with the -g flag should upgrade installed packages. In powershell:

mkdir -Force C:\cygwin | Out-Null
(new-object net.webclient).DownloadFile(
  "http://cygwin.com/setup-x86_64.exe", "C:\cygwin\setup-x86_64.exe")
foreach ($pkg in @("git,make,curl,patch,python,gcc-g++,m4,cmake,p7zip",
    "mingw64-i686-gcc-g++,mingw64-i686-gcc-fortran",
    "mingw64-x86_64-gcc-g++,mingw64-x86_64-gcc-fortran")) {
  C:\cygwin\setup-x86_64.exe -q -n -R C:\cygwin -l C:\cygwin\packages `
    -s http://mirrors.chauf.net/cygwin -g -P $pkg | Where-Object `
    -FilterScript {$_ -notlike "Installing file *"} | Write-Output
}

@tkelman
Copy link
Contributor Author

tkelman commented Feb 19, 2015

Looks like winrpm.sh works at least on the 64 bit buildbot http://buildbot.e.ip.saba.us:8010/builders/package_win8.1-x64/builds/329/steps/make%20win-extras/logs/stdio

The 32 bit build hit the same issue-10045 segfault that appveyor's been hitting.

We can look over the logs after running this for a few days and see whether or not the connectivity is a real problem. The opensuse build service rebuilds these rpm's automatically any time any of their dependencies change, and uploads a new revision number. I wonder whether the caching approach that we're using for homebrew on Travis could be made to work for these too...

@staticfloat
Copy link
Member

Yes, it absolutely can. In fact, we can cache everything from winrpm if we
so desire. The caching code
https://github.com/staticfloat/cache.julialang.org/blob/master/www/cache.py#L57-L72
is really simple, right now it's set up to very rigidly only grab Homebrew
bottles, but we could expand it to be a whitelist instead of only that one
site. It would require a tiny bit of modification to our travis build, but
nothing major. (Since we'd need ot ask for cache.julialang.org/
instead of just cache.julialang.org/ like we do now.)
-E

On Thu, Feb 19, 2015 at 3:35 PM, Tony Kelman [email protected]
wrote:

Looks like winrpm.sh works at least on the 64 bit buildbot
http://buildbot.e.ip.saba.us:8010/builders/package_win8.1-x64/builds/329/steps/make%20win-extras/logs/stdio

The 32 bit build hit the same issue-10045 segfault that appveyor's been
hitting.

We can look over the logs after running this for a few days and see
whether or not the connectivity is a real problem. The opensuse build
service rebuilds these rpm's automatically any time any of their
dependencies change, and uploads a new revision number. I wonder whether
the caching approach that we're using for homebrew on Travis could be made
to work for these too...


Reply to this email directly or view it on GitHub
#10244 (comment).

@ihnorton
Copy link
Member

The opensuse build service rebuilds these rpm's automatically any time any of their dependencies change

😭 because Windows testing is not enough Russian roulette already...

@tkelman
Copy link
Contributor Author

tkelman commented Feb 19, 2015

Well, see the issue mentioned up top. And JuliaPackaging/WinRPM.jl#36. It would be great if the repository we were pulling binaries from was stable like a released linux distro, but it isn't, it's a continuously rebuilding development repo.

We should at least do the caching thing, that'll help with the reliability if not the actual upstream binary stability.

@staticfloat
Copy link
Member

Alright, we just need to change the winrpm downloads to prepend
http://cache.e.ip.saba.us for us, and we'll be good to go on the caching
front.
-E

On Thu, Feb 19, 2015 at 3:46 PM, Tony Kelman [email protected]
wrote:

Well, see the issue mentioned up top. And JuliaPackaging/WinRPM.jl#36
JuliaPackaging/WinRPM.jl#36. It would be great if
the repository we were pulling binaries from was stable like a released
linux distro, but it isn't, it's a continuously rebuilding development repo.

We should at least do the caching thing, that'll help with the reliability
if not the actual upstream binary stability.


Reply to this email directly or view it on GitHub
#10244 (comment).

@tkelman
Copy link
Contributor Author

tkelman commented Feb 24, 2015

Cool. We'll only want to do that for the rpm files, not the repodata xml since that is expected to change regularly.

@staticfloat
Copy link
Member

Good call!

On Tue, Feb 24, 2015 at 2:43 AM, Tony Kelman [email protected]
wrote:

Cool. We'll only want to do that for the rpm files, not the repodata xml
since that is expected to change regularly.


Reply to this email directly or view it on GitHub
#10244 (comment).

tkelman added a commit that referenced this pull request Feb 26, 2015
probably should have written this in python instead of sh...

implement rpm_select and rpm_provides

implement downloading into usr/bin

simplify even further by skipping requires

run in dist-extras

don't need rpm_provides with this version either

(cherry picked from commit 76e9a0c)
ref PR #10244
@tkelman
Copy link
Contributor Author

tkelman commented Feb 26, 2015

backported in cde7e4a and 484471c

I think the only thing that'll need to change for caching here is just switching the last instance of retry_curl (the only one that's downloading to a file instead of to a string) to use jldownload.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

building Build system, or building Julia or its dependencies system:windows Affects only Windows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants