-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP windows conda build for ska3-win #227
Conversation
I think one of the reasons most of the packages are set with separate build.sh files is indeed because I thought we'd plop build.bat files in there later. If the windows, Linux, and OSX builds will be good with the same build process that isn't needed. |
As far as I can tell |
I will say that working in Windows turns out to be at least as frustrating as I had feared. From little thinks like "the instructions you find online for recursively removing a directory simply don't work on my machine", to "conda install ska.engarchive" (from our icxc ska3conda) pretends to install that package, and makes it show up in the package list, but doesn't seem to actually put the code into the environment. I guess when you start climbing Everest you know it's going to be painful, especially if you have never worn crampons before (and that is like me and Windows). |
Regarding the Ska.Engarchive issue; do you have a take-away yet? I haven't looked at this at all so was wondering if you were hitting namespace package issues, or issues installing a conda "generic" noarch package, or if even the noarch packages will need to be rebuilt in some way to keep Windows happy. |
I just noticed that Ska.engarchive has I confirmed that making Ska.engarchive as |
Ha. So it sounds like we should probably retire #168, and figure out if we will have separate noarch:python packages for Windows or if we will need a different way to use the same set of conda packaegs to install out-of-package files we want for production linux. |
Note also this warning that I got from the Ska.Shell package from the icxc repo:
This was also cleared using a local build. |
Oh, and per #166, another option might be to make architecture-specific packages for all of them. |
Gahhh.. |
Regarding Ska.Shell, it is odd that if there's a real issue with the tarball that Linux conda happily installed it. I'm not sure if I should use your report of weirdness as a credible bug against the builds for 2019_210 . |
I have an inkling of the problem for Ska.engarchive now that you jogged my memory on the task_schedule.cfg. Basically the Windows Python path structure is completely different, so the "generic" build on MacOS is really not generic since it can't but fit into the Windows paths. Conda seems to unhelpfully just ignore (silently) a package that doesn't work. Or maybe I'm missing something, quite possible. |
Right, my similar-but-not-identical guess would be that conda was installing (untarring and maybe copying?) the files from the noarch:generic package, they just didn't end up in anyplace useful for Windows Python. So then still a question if we want something to help with files like task_schedule.cfg using:
|
Or not... here is the beginning of the file manifest from the Windows build:
I confirmed that the All I can wonder is if there is a mismatch between |
OK, here is the file manifest from our "noarch: generic":
So definitely that is not going to fly on Windows since the |
Wait, I'm a little confused. The first manifest is from your local install of your Windows locally-built version of Ska.engarchive with noarch:python set with a conda 4.7? |
And regarding task_schedule etc, if we got in a pinch it would be annoying but not crazy to just have accompanying "production" packages intended for Linux (like a ska-engarchive-production-helpers conda package). But we don't have to go there yet. |
I'm not seeing any problem building and installing the Ska.engarchive package on my Mac with conda 4.7.12 using
|
OK. Sounds like conda 4.7.x is doing something different so all good. |
Well almost all good, as I assume that limits us to only moving forward with a strategy for windows that splits from* the centos5/32bit tree if there is no conda 4.7 for our old systems. But maybe we could build conda itself if pushing on this. *or waits for retirement of the old platform |
Yes, this may well be the fork (or branch) in the road. I.e. we could have a |
Things could get a wee bit interesting in terms of managing all the new package builds (with conda 4.7 and recent dependencies like cython / numpy), where the version of our package is unchanged. Maybe something like |
For the record, here are the ska3 builds that don't agree with conda 4.7 on windows:
|
I have a working proof of concept now that installs all the latest Ska3 packages and their direct dependencies. This version does not yet install many of our standard "core" packages, e.g. bokeh.
|
How about making this a PR against a new dev branch? We'll plan to baseline recipe updates and such in that branch for our 'modern' update. |
Also, did you settle on Python 3.6 or have an explicit reason to freeze it there? |
This is not settled, I was just trying a bit of walking before running / jumping toward 3.8. |
That fine. I just wanted to keep an eye on any limits we explicitly added to the recipes and document as needed. |
For "python setup.py install" do we need or want something like "--single-version-externally-managed --record=record.txt". They are going with that in the current conda docs and hard to figure out if it is a recommendation or just an example. |
cmd_list.append("--skip-existing") | ||
|
||
print('Running:\n' + ' '.join(cmd_list) + '\n') | ||
subprocess.run(cmd_list, check=True, shell=True) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The addition of shell=True seems to break this for me on linux. The conda build command just moves to spitting out its helptext and I'm not quite sure why.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, yes I noticed that as well, so this needs to be conditional on Windows (shell=<is_windows>
).
This is a proof-of-concept for making Windows builds which seems to be working. I had quite a journey getting this working so ended up doing micro-commits to allow backtracking to a configuration that works.
It seems that using
python setup.py install
in this context is fine since conda is doing the file management and sopip
is a bit of overkill. But perhaps more importantly, modernpip
has dropped support for eggs and this is needed for namespace packages. So going topython setup.py install
should allow upgradingpip
to the latest.It also seems like we can just use the
build : script
directive inmeta.yaml
, but maybe there is a reason not to that @jeanconn has discovered.Next steps would be doing the rest of the arch-specific packages and then dealing with the core packages. I'm guessing that our totally-pinned ska3-core package won't resolve on Windows, but not sure.
There is something a bit unsettling in the build log. I did some googling and got to some relevant pages, but couldn't quite make sense of them.
cc: @mbaski @jskrist