We have been trying to build wso2 (various products) from source to no avail.
I have looked for information all over (with assistance from Google) and followed the few instructions we have found but without luck.
I have, on the other hand, found various posts discussing this process and how error prone it is due to this or that.
Don't get me wrong, WSO2 looks like an amazing framework to work within but confidence in the project is not boosted by the complicated/error prone/enormous build process.
Does anyone here have a good description/recipes to build the 4.x.x version of carbon?
I really don't think it is intentionally hard to build. The product is huge with tons on developers working on it. Most of the issues seem to be around erroneous commits by developers. My understanding is that WSO2 will be changing the development process to make it more robust (source: Manoj's Comment).
The WSO2 set of products are awesome and well engineered. They can be built, but you will need to persist and resolve issues along the way.
It took me quite a few days to get a working build in my spare time. Here is a rough sequence of tasks to perform:
1) Checkout the 4.0.0 branch:
svn co https://svn.wso2.org/repos/wso2/carbon/orbit/branches/4.0.0
svn co https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.0.0
svn co https://svn.wso2.org/repos/wso2/carbon/platform/branches/4.0.0
For more information of the code base high level structure, see here: what is wso2 'orbit', 'kernel' and 'platform'?
2) Decide which version of a product you need to build - Which version of patch-release to build?
3) Build the three separate code bases (build the main branch plus patch-release versions below your required version).
build orbit 4.0.0/ Then build orbit/patch-release/4.0.x
build kernel 4.0.0/ Then build kernel/patch-release/4.0.x
build platform 4.0.0/ Then build platform/patch-release/4.0.x
Note to build:
use Java 6 (Use Sun/Oracle JDK - not OpenJDK)
use Maven 3
set MAVEN_OPTS to -Xms512m -Xmx1024m -XX:MaxPermSize=1024m
you will probably need to use the following mvn command line: mvn clean install -Dmaven.test.skip=true
You will find the built distribution zip file here: ROOT/distribution/product/modules/distribution/target/ (source: WSO2 Carbon 4.1.x - how to make the distribution)
Be prepared to put in the time to hunt down and fixing issues as you encounter them. Most issues seem to be due to maven dependency issues. Using google, you can usually find the answer. Also you post any issues you need help with on stackoverflow.
Related
I'm trying to compile the examples under cpp starting with minimal_build. I don't have much cmake experience. Must this be run under docker, or can it just be compiled in a Linux shell? I'm running Centos7 on a AWS EC2 instance, and I've installed cmake 3.20.2. Executing sudo ./run.sh, errors immediately with "cd: /io: No such file or directory". When I try and make what I think are the necessary changes to the scripts, I keep hitting errors. So I just want to see is this is even possible before proceeding further.
Thanks.
Yes, it is possible. I recently built Arrow on CentOS 7. With any C++ project there are going to be challenges switching amongst Linux distributions. The docker image is a way to provide a single example that the Arrow project can verify. You will need to adapt your Linux environment based on the issues you encounter. #Tsyvarev is also correct, you will want to use run_static.sh instead of run.sh. In order to do this you will need to dive a bit further into the details.
The build script has two steps. First, it will build the Arrow project itself. This is probably going to be the more challenging step. This guide is helpful for this step and provides a lot more detail into how Arrow builds and what options there are. The second step will be to compile and build the example.
Specifically for CentOS 7 one of the challenges you will face is that you will need a newer version of CMake. I ended up building CMake from source. If you go this route you also need to make sure that CMake is built with curl/https support. I used the --system-curl option for this.
That is all I remember having to do special for CentOS 7 at the moment. As you go about this task if you run into further, more specific, issues, feel free to ask them here or on the Arrow dev/user mailing list.
I'm new to Debian packaging and I believe this is a fairly basic question, but I am embarrassed to say I've struck out on Google.
I have a C++ project which builds with CMake and packages a debian with CPack. This project has a service component (systemd style). My goal is to have the service enabled & auto-started upon installation of the package.
My research has yielded two approaches:
1) Run various systemctl commands inside the {pre,post}{inst,rm} scripts in the Debian. Care is required to handle install, remove, and upgrade scenarios properly.
2) Simply put the project.service inside the debian directory and let debhelper (with dh_systemd_enable) handle service installation and start 'automagically'.
Option #2 is obviously preferred because the {pre,post}{inst,rm} is very manual and thus error-prone, but I cannot figure out whether there's a well supported way to leverage debhelper from within CPack.
The Question: I'd like to avoid rewriting the debian packaging stuff in my project's CMake as it's been around for some time and works well. The relationship (if any) between CPackDeb and debhelper is not clear to me -- can CPack take advantage of the dh_systemd_enable features or must I manage the service manually in {pre,post}{inst,rm} scripts?
For last two weeks I was trying to build SOFA framework and run some examples, with haptics force feedback, from this directory ../plugins/Sensable/examples/Denistry/.
But unfortunately I can not succeed to run it properly, because runSofa.exe stops running, when I open any of those .scn files from the directory mentioned above. I followed all the instructions to build and run from official site (https://www.sofa-framework.org/community/doc)
What I did is :
downloaded 16.08 branch sources from https://github.com/sofa-framework/sofa
configured and generated Visual Studio win32 project by CMake
built release sofaRun and sensable plugin
errors occurred in senable project, especially NewOmniDriver.cpp and OmniDrivver.cpp files. I added sofa::helper namespace [adding_sofa_helper][1]
then it compiled without errors
I am hoping to find anyone who was able to run or build simulations with haptics force feedback and want to understand what I am doing wrong. If you need more explanation about what exactly I did, I will provide it. I will appreciate any response related to this topic.
I have succeed on running examples with haptic feedback using sensable plugin. The sofa developers are still updating the sources of the framework. So I checked the master branch of their repository and build that sources. After that the examples with haptic feedback worked as it suppose to do. – Ruslan Rakhmatov just now
I have tried many different combinations of tags and branches, and none of them seem to build successfully first time around.
Question: Is this a known problem when building WSO2 products? If lots of errors are expected, then I know that it's not necessarily me doing something wrong.
EDIT:
Some of my previous stackoverflow posts:
wso2 maven issue building platform patch release 4.0.9 - failure to find org.wso2.appfactory:wso2appfactory-parent:pom:1.0.0
issue running mvn eclipse:eclipse on platform tag 4.0.3
What are the steps needed to build WSO2 Carbon Platform Patch Release 4.0.x?
After finally building a product (Identity Server) from platform branch 4.0.0, I can say: building from source can be difficult. I think this is mainly because:
The code base is huge
Code, files, etc may be checked into svn in a broken state
You have to be prepared when things go wrong to hunt down the problem and have a go at digging in the code, build files, etc to resolve the issue.
When I get a chance, I will put some instructions together which walk through a complete checkout and build of platform from scratch, because I think this will be immensely useful for others wanting to build a product.
I am about to start a new personal project. It aims to be a pretty big one so I thought it would be a good idea to keep some sort of CVS. I have also read lot of interesting stuff about unit testing and I would like to include some system that automatically builds the project and runs a series of test after each check in.
The characteristics are:
Only one developer and one machine (just me and my computer!).
Include a CVS.
Include automated testing.
The software should be free (as in no-cost) and run under Linux.
It is going to be C++ and ANTLR based.
So far, I have set up SVN and Eclipse+CDT+ANTLR for development but I am pretty lost about the automated build+test setting. To write the tests I have been thinking in Boost.Test or UnitTest++.
So that's the source of my question. How should I set up my local test/build machine?
Links to valuable tutorials are more than welcome.
Thanks.
It seems that most open source continuous integration servers are built on java and does not support C++ "out-of-the-box". However there are some links you can start with (note that for running most open source continuous integration servers you need a java environment):
What continuous integration tool is best for a C++ project - some alternatives for continuous integration software
Continuous integration for C++ - some ideas for Hudson configuration
Using CruiseControl with C++ - some ideas and configurations for CruiseControl
Compiling C/C++ code with Ant - if you do use the "Makefile project" in CDT and do not want to use make as a build tool
I personally prefer Hudson because of its simply install (no need for application server just start with java -jar hudson.war) and easy to use and quite "clever" gui. Hudson can checkout your code from SVN (or CVS) and can run a shell script or Ant file as a build script. Maybe you have to spend a few days to set up a configuration with a proper build script but I think it worth the time.
The sort of automatic process you are looking at is called continuous integration. There is software to help you with this - a good example is JetBrains TeamCity. You will also hear of people using CruiseControl, Atlassian Bamboo and so on for this.
To take full advantage of this, you may also want to look at an automated build tool like Ant or Mavenl; your continuous integration build will then use this as its build runner.
A good starting point would be the Martin Fowler page on CI or the Wikipedia one.