Skip to content
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

FIX add libwebsocket installation instructions #1823

Open
wants to merge 3 commits into
base: feature/1181_websockets
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions doc/manuals/admin/build_source.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ The Orion Context Broker uses the following libraries as build dependencies:
* libcurl: 7.19.7
* Mongo Driver: legacy-1.0.7 (from source)
* rapidjson: 1.0.2 (from source)
* libwebsockets: 1.6.3 (from source)
* gtest (only for `make unit_test` building target): 1.5 (from sources)
* gmock (only for `make unit_test` building target): 1.5 (from sources)

Expand Down Expand Up @@ -42,6 +43,17 @@ commands that require root privilege):
tar xfvz v1.0.2.tar.gz
sudo mv rapidjson-1.0.2/include/rapidjson/ /usr/local/include

* Install libwebsocket from sources:

wget https://github.com/warmcat/libwebsockets/archive/v1.6.3.tar.gz
tar xfvz v1.6.3.tar.gz
cd libwebsockets-1.6.3/
mkdir build
cd build
cmake .. # default cmake sets /usr/local as installation path
make
sudo make install

Copy link
Member Author

Choose a reason for hiding this comment

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

The procedure seems to be ok to compile in CentOS 6.x. However, it seems that (differently from Debian) /usr/local/lib is not included in the libary loading path so running compiled binary may result in

contextBroker: error while loading shared libraries: libwebsockets.so.6: cannot open shared object file: No such file or directory

The solution is described in http://serverfault.com/questions/372987/centos-usr-local-lib-system-wide-ld-library-path. However, it is not clear to me how to fit this in the RPM (including libwebsocket.so.6 as part of the CB RPM? In which directory? Create an ad hoc package RPM for the libwebsocket library and link packages through dependencies?)

Copy link
Member Author

Choose a reason for hiding this comment

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

One possible solution to both problems is using static library. The contextBroker binary will be bigger, but probably it is not a problem...

Copy link
Member

Choose a reason for hiding this comment

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

Yeah, I think I also prefer a static lib ...
Easier for our users, as there will never be any problems with version mismatches.
It would be nice to see the difference is size though ... (after 'strip')

Copy link
Member Author

Choose a reason for hiding this comment

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

Thus, a PR fixing CMakeList.txt to use static library should be done. @fortizc, could you manage that, please?

Copy link
Contributor

Choose a reason for hiding this comment

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

Ok, no problem

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not really convinced with this... do you try use DCMAKE_INSTALL_PREFIX:PATH option?
Something like that

wget https://github.com/warmcat/libwebsockets/archive/v1.6.3.tar.gz
tar xfvz v1.6.3.tar.gz
cd libwebsockets-1.6.3/
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/MY_PREFERED_PATH ..
make
sudo make install

Copy link
Member Author

Choose a reason for hiding this comment

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

As long as MY_PREFERED_PATH would be /usr/local, it's ok. However, given that it seems that cmake uses that installation path by default, I dont' see the point in making the procedure more complex by the introduction of this -DCMAKE_INSTALL_PREFIX variable.

To be discussed at skype.

Copy link
Member

Choose a reason for hiding this comment

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

If used, please add an 'R': PREFERRED

Copy link
Member Author

Choose a reason for hiding this comment

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

After some discussion at skype, we propose to finally use:

wget https://github.com/warmcat/libwebsockets/archive/v1.6.3.tar.gz
tar xfvz v1.6.3.tar.gz
cd libwebsockets-1.6.3/
mkdir build
cd build
cmake  # use -DCMAKE_INSTALL_PREFIX:PATH=/your/path in order to override /usr/local as installation path
make
sudo make install

* Install libmicrohttpd from sources (the `./configure` command below shows the recommended build configuration to get minimum library footprint, but if you are an advanced user, you can configure as you prefer)

wget http://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.48.tar.gz
Expand Down
1 change: 1 addition & 0 deletions doc/manuals/user/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@
* [Security considerations](security.md)
* [Known Limitations](known_limitations.md)
* [Considerations on NGSIv1 and NGSIv2 coexistence](v1_v2_coexistence.md)
* [Websockets interface](websockets.md) (experimental)
2 changes: 2 additions & 0 deletions doc/websockets.md → doc/manuals/user/websockets.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Websockets interface

**This is yet experimental functionality. Usage feedback is highly welcomed, but don't rely on it for production, as changes are expected.**

## What is this?

The websockets interface is a new way to communicate with Orion using websockets, this is point to improve the comunication with a faster and more efficient protocol, because now we have a persistent connection with an open socket. Also websockets are a way of easing the interaction between Orion and client applications running in browsers and smartphone.
Expand Down
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ pages:
- 'Forbidden characters': 'user/forbidden_characters.md'
- 'Docker': 'user/docker.md'
- 'Considerations on NGSIv1 and NGSIv2 coexistence': 'user/v1_v2_coexistence.md'
- 'Websockets interface (experimental)': 'user/websockets.md'
- 'Installation & Administration Manual':
- 'Introduction': 'admin/index.md'
- 'Installing Orion': 'admin/install.md'
Expand Down