-
Notifications
You must be signed in to change notification settings - Fork 77
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
Can't build swmm5 with conda-build #114
Comments
@lrntct, something was updated when the latest Anaconda came out with removed some dependency libraries required by cmake. This is why both Travis and Circle CI are failing. have a look at pr #107. Since at this point we’re not so concerned about deploying our builds off, I invite you to simplify the build inside CI to a more typical approach for a C project. You can update the travis CI and extend coverage from OSX and LINUX. I have updated CMAKE in my pr. I like the idea is doing this integrations with the native compilers instead of using conda dependencies since it’s nirmally faster and cleaner. |
@bemcdonnell OK, I'll try to update the Travis build by using CMake instead of conda-build. |
@lrntct, we were spreading different platform builds across CI servers for efficiency. I really like what @goanpeca has put together on Circle. Soon we are going to fully enable the code formatter enforcing (waiting till we finish the regression testing to do this) which are all part of the conda framework. Moreover, Circle CI will also be very helpful to deploy builds to Conda (to support the pyswmm project). |
@lrntct the thing is that using Travis for building OSX stuff takes forever unfortunately, and for sing linux, circle ci is much faster, that is the reason of using circle ci. I am in charge of all the CI infrastructure and I will try to document it more so that it is clear why it is done the way it is. I know that there is a current plan by @bemcdonnell to switch back to VS instead of conda to reduce build times. This has some pros and cons, but until I have some more time I think it is fine to do it. To be able to exploit the conda exosytem to the full extent, which is what we should still aim for, we need to make a release con conda-forge of both SWMM and pyswmm. |
@goanpeca If the ultimate goal is to build the conda packages on conda-forge, then in there current form the CI infrastructure is more to test the conda packaging I guess? @bemcdonnell @goanpeca Should I work on updating the Travis recipe or not? |
The idea of using conda and conda-build is to have a ready to use Develop version every time a Pull Request is merged during Dev Process, which gets uploaded to https://anaconda.org/owa So that users can then do
Not really Conda forge will be used to build the official conda packages that will be available to the general public via
I say no, but I don't what is @bemcdonnell 's plan. Now regarding the error you should probably update to the latest version of conda and cond build and follow ALL The recipe steps:
and you needed to not set LD_LIBRARY_PATH. @bemcdonnell we could remove all the linter CLang format checks from Travis and appveyor, but I do not agree about removing the actual build process with conda. |
I’ve been thinking about this project independent from pyswmm. Since this project is fundamentally a C Project, I think distilling our CI servers down to clean an simple processes (with emphasis on efficiency) is where we want to go. The regression testing workflow is complete and it’s time that we focus on getting these integrations outfitted with the tests. The release channel that I most care about for this project is out GitHub page. If it will bring value to the community to have our releases for OWA SWMM living on conda forge, we should still be able to get these integrations working without using the conda framework. I care so much about speed because we are going to want answers fast. I’m lightly expanding the scope of this thread to encompass pyswmm but just for 1 second. For pyswmm distribution, I want the channels to be in the PyPI and conda forge. As soon as OWA-swmm is outfitted with SWIG support, we can use the python CI servers to fetch the swmm code from this repo, and build the python extension then package it for us for all platforms. That’s where I see conda fitting into the workflow best. Pyswmm is a completely separate project but it is a sibling to this project. For this project (OWA-swmm), We can do OSX and Linux builds on travis (just as I’m proposing in my new PR with appveyor updates). And we can use CircleCI to do an additional build on either Linux or OSX.. but mainly, code format enforcer checks. That’s my vision anyways. Can others share theirs? |
About the packaging and interaction with pyswmm, I already gave my opinion in a pyswmm issue. I think that when the SWIG interface will be ready, the swmm repo could accommodate a conda and pypi recipes to build and package the code. It will not be a major part of the repo nor require a big knowledge of python. Then, pyswmm could depends on the swmm package. |
Good discussion guys. Just to weigh in here with my two cents. For the record I want to state that I am not opposed to conda packaging. The question I have is, Is it really necessary for Travis, Circle, and AppVeyor to all use conda in order to conda package libswmm? I think there is an opportunity for us to have our cake and eat it too here if we can figure out another way to get packaging done and have a lighter faster CI system for day to day routine development. And I see what @bemcdonnell is describing as a good step in the right direction to accomplishing this. |
We need something like on the Suggested content skeleton @michaeltryby @bemcdonnell. I.a. Development environment (Normal Workflow)A.) WindowsInstall Dependencies
BuildingTo build SWMM then run:
Running
B.) LinuxInstall Dependencies
On Debian (.deb) based systems you can use
On Centos (.rpm) based systems you can use
Building
Running
C.) OSXInstallDependencies
If using Homebrew
Building
Running
I.b. Development environment (If using conda)A.) WindowsInstall Dependencies
Then you can create a development environment with all the dependencies, activate and build from there.
Activate the environment:
Building (with conda-build)
Running
B.) OSX and LinuxInstall Dependencies
Create environment:
Activate the environment:
Building (with conda-build)
Running
II. If you are developing for PySwmmIf you are developing for PySwmm you need to install these versions to work with how python is compiled on different platforms: A.) WindowsPython 2.7
Python 3.4
Python 3.5 and 3.6
B.) Linux.... C.) OSX.... III. Regression TestingTo execute regression tests run:
IV. Unit testsTo execute unit tests run:
|
@bemcdonnell I can start working on this PR to update all this but I would like to know what you think. For the moment I updated the wiki |
@lrntct you can update travis, but before we do that we first need to define what is the base system we will use. Using whatever is on travis its ok to have a generic testing infrastructure, but if we plan to build binaries and upload these as artifacts somewhere we need to define system specs and enforce them on travis. If we don't define this then its no different from "doing it on my home computer and sharing it with the rest of the world". For SWMM since we only use a handful of extra libraries, its not so critical, but still, we should define the oldest compiler we can use to maximize compatibility (Like using Centos 6 with some specific gcc version as a base system or something like that). This base system could be a docker image which could be used on travis/circle etc. |
My apologies for being so pushy on this (conda) subject. I understand at the moment is not a good choice for CI or development workflow if someone has not used it before. I will be in charge of making the conda packages once we can sort out the nrtest regression tests on CI based on the work by @michaeltryby. Cheers. |
I've followed the instruction in #74 to build the software and got the following error:
However, if I do:
The build works properly.
OS: Ubuntu 17.10
swmm version: 56fd8b2
Any idea?
The text was updated successfully, but these errors were encountered: