You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@celix.apache.org by Miroslav Beranič <mi...@mibesis.si> on 2016/04/21 17:57:07 UTC

Re: Updated CMake bundle and deploy commands

Hi Pepijn,

I've just now, yesterday, updated GIT - and took time to checkout new
version of CELIX.
Nothing was building nor working :D So that is a good start - a lot of changes.

I think I am more-or-less clear on all the changes done, but some are
still getting my head knocking against my desk.

As I did not find answer in the current source tree or documentation,
can be I was sloppy, but. Could you be kind to help me about a bit.

So I had a bundle, that has CMake definition like this:

bundle(${BUNDLE_SYMBOLICNAME}
SOURCES
    private/src/activator
DIRECTORIES
    root
)

Where did the DIRECTORIES command/directive move to? I saw: add_files,
but not directories.
I looked at the mongoose example, but - I am not able to get it
working, as it looks like it is also missing this root directory in
the bundle entry set.

I build CELIX and Mongoose example like this:


git clone https://github.com/apache/celix.git
git checkout develop

mkdir build && cd build
cmake -DBUILD_DEPENDENCY_MANAGER=ON -DBUILD_DEPLOYMENT_ADMIN=ON
-DBUILD_DEVICE_ACCESS=ON -DBUILD_DEVICE_ACCESS_EXAMPLE=ON
-DBUILD_EXAMPLES=ON -DBUILD_FRAMEWORK=ON -DBUILD_LAUNCHER=ON
-DBUILD_LOG_SERVICE=ON -DBUILD_LOG_WRITER=ON
-DBUILD_LOG_WRITER_SYSLOG=ON -DBUILD_REMOTE_SERVICE_ADMIN=ON
-DBUILD_REMOTE_SHELL=ON -DBUILD_SHELL=ON -DBUILD_SHELL_TUI=ON
-DCMAKE_BUILD_TYPE=Debug -DDOXYFILE_LATEX=ON
-DJAR_COMMAND=/opt/jdk1.8/bin/jar -DCMAKE_INSTALL_PREFIX=/opt/celix/
../celix/

make all

make deploy


cd deploy/mongoose_deploy

$ sh ./run.sh
-> entry (null)
Launcher: Framework Started
INFO: FRAMEWORK: Start shutdownthread

CTRL+C

INFO: FRAMEWORK: Shutdown
Segmentation fault (core dumped)
$
$ tree .cache/bundle4/
.cache/bundle4/
├── bundle.id
├── bundle.lastmodified
├── bundle.location
└── version0.0
    ├── libmongoose.so.0
    ├── META-INF
    │   └── MANIFEST.MF
    └── revision.location

2 directories, 6 files


Did I miss something or is this example not correct? It looks like it
is missing something as the startup fails and there is no response on
port 8081.


Another problem I have, and also failed to find appropriate replacement is:

BUNDLE(${BUNDLE_SYMBOLICNAME}
    SOURCES
        private/src/activator.c
    IMPORT_LIBRARIES
        "eu.mibesis.httpservice.api.library"
        "eu.mibesis.mvc.api.library"
)

With what is the command IMPORT_LIBRARIES replaced? Also for this I
did not find working replacement.

For other changes it was well documented and working as advertised.


I've tried master and develop branch from GitHub GIT repository.

I've also not tried the celix bootstrap project, but it looks really
interesting. +1 for it.


Kind Regards,
Miroslav


2016-02-04 14:44 GMT+01:00 Pepijn Noltes <pe...@gmail.com>:
> Hi All,
>
> I have been working on a revamp of the Celix specific CMake commands. The
> main reason to do this was to get rid of the deploy.cmake files.
> At the moment these files are needed when you want to create a "deployment"
> of a selection of bundes.
> One of the problems is that even if you disabled a certain subdirectory the
> deploy.cmake in that directory will still be processed. To counter this
> additional CMake code is needed.
>
> To solve this and some other issues I rewrote the Packaging.cmake so that
> to process is more based on CMake target properties [1] and CMake generator
> expressions [2]. I also took the liberty to split up and rename the
> commands in a more CMake style (e.g. add_<target_type> commands)
>
> Differences are
> - No separate deploy.cmake needed. You can use add_deploy in normal
> CMakeLists.txt files. Also as result no additional test concerning
> subprojects are needed.
> - bundle command has become add_bundle command
> - deploy command has become add_deploy command
> - possibility to create multiple bundles in one CMakeLists.txt file.
> - There are several supporting CMake commands for add_bundle and add_deploy
> - version info of bundle also used for so version information
> - libcelix_framework, libcelix_utils and libcelix_dfi are now generated
> with a so version.
> - Added CMake commands are documented in documents dir, see [3]
> - Legacy wrapper command for bundle -> add_bundle and deploy-> add_deploy
> exists. Supporting most, but not all old features.
> - For the Celix project all existing bundle commands and deploy.cmake files
> are updated to the new commands
> - If jar or zip command is present on the host system, make install can be
> used. If not make install-all (CPack) must be used. CMake will generate a
> message for this.
> - add_deploy supports adding not yet existing bundle targets. Removing the
> need for certain add_bundle ordering.
> - support for Ninja and "make -j"
> - Moved and updated the "Apache Celix Subprojects", "building Apache Celix"
> and "Getting Started with Apache Celix" to the documents dir, see [4]. [5]
> and [6]
>
> If there are no objections I would like to merge this feature into the
> development branch.
> The documentation still needs some work and there are probably still some
> bugs. but I would prefer to push this in preparation of a next Celix
> release.
>
> [1] https://cmake.org/cmake/help/v3.4/command/set_target_properties.html
> [2]
> https://cmake.org/cmake/help/v3.4/manual/cmake-generator-expressions.7.html?highlight=generator
> [3]
> https://github.com/apache/celix/blob/feature/CELIX-335_deploy_refactoring/documents/cmake_commands/readme.md
> [4]
> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/subprojects
> [5]
> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/building
> [6]
> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/getting_started
>
>
> Greetings,
> Pepijn



-- 
Miroslav Beranič
MIBESIS
+386(0)40/814-843
miroslav.beranic@mibesis.si
http://www.mibesis.si

Re: Updated CMake bundle and deploy commands

Posted by Miroslav Beranič <mi...@mibesis.si>.
Hi Pepijn,

your changes/fix is working. Hello world example works as expected.

I will try to migrate all my bundles to CELIX 2.x. This looks like
more work than I first expected.

Thank you for the support.

Enjoy the days away.


Kind Regards,
Miroslav





2016-04-22 15:37 GMT+02:00 Pepijn Noltes <pe...@gmail.com>:
> Hi Miroslav,
>
>
> On Thu, Apr 21, 2016 at 9:49 PM Miroslav Beranič <
> miroslav.beranic@mibesis.si> wrote:
>
>> Hi Pepijn,
>>
>> I've updated GIT repository. This was quick.
>>
>> $ sh ./run.sh
>> -> entry .cache/bundle4/version0.0/root
>> Mongoose started on: 8081
>> Launcher: Framework Started
>> ^C INFO: FRAMEWORK: Start shutdownthread
>> INFO: FRAMEWORK: Shutdown
>> Mongoose stopped
>> INFO: FRAMEWORK: Successful shutdown
>> Launcher: Exit
>> $
>>
>> Looks like it works. So thank you very much.
>>
>> I thought bundle_files are only for the per-file addition of resources
>> to the bundle. Need to check it out further.
>>
>> Well, I used IMPORT_LIBRARIES until now -- so this was not used/picked
>> up by CELIX? Hmmm.
>>
>
> Yeah. I really did not expect this was used, I did take the effort to look
> a bit more deeply. The support for import libraries is still in the
> framework, so I had this wrong.
> I added an issue [1] and committed an update to the develop branch to
> enable import libraries in the updated cmake commands.  See hello_world as
> example.
>
> Could you test if this works for you?
>
> Do note, that this is different from what you used to do. I have been
> investigating how Celix could do import libraries. The challenges is that
> normally dlopen has a flat namespace.
> Meaning that if there is a library with a certain SONAME header, that
> library will automatically be used to satisfies a NEEDED header... well as
> far is I known.
> The result is that SONAME and NEEDED need to match only when the resolver
> has resolved the libraries. This implies that we need to runtime update the
> library binaries.
>
> I have been investigating dlmopen [2], part of the latest (?) gnu libc, and
> this seems a perfect solution, but is only for the "latest and greatest"
> linux distros.
> Another solution solution could be explicitly reloading certain libraries,
> but I still need to test this.
>
> In short import libraries works, but I am not sure how it acts if multiple
> exported library versions are available in the framework...
>
> Btw I will be away for a few days, so if there any more issues I am not
> able the respond directly.
>
> [1] https://issues.apache.org/jira/browse/CELIX-356
> [2] http://man7.org/linux/man-pages/man3/dlopen.3.html
>
>
>
>
>>
>>
>> OK, I have like this (this is current setup, working with CELIX 1.x --
>> do not know the exact version number).
>>
>> Bundle 1:
>>
>> BUNDLE_LIBRARY(my_lib_1
>> SOURCES
>>   private/src/source.c
>> LINK_LIBRARIES
>>   celix_framework
>> )
>>
>> BUNDLE_PRIVATE_LIBRARY(private
>> SOURCES
>>   private/src/activator.c
>> LINK_LIBRARIES
>>   celix_framework
>>   my_lib_1
>> )
>>
>> BUNDLE(
>>     ACTIVATOR "${BUNDLE_SYMBOLICNAME}-private"
>>     PRIVATE_LIBRARIES "private"
>>     EXPORT_LIBRARIES my_lib_1
>> )
>>
>> I use this in other bundles:
>> BUNDLE(my_bundle_1
>>         SOURCES
>>         private/src/activator
>>         IMPORT_LIBRARIES
>>         "my_lib_1"
>> )
>>
>>
>> Well, do not ask me how I picked up this flow, as I forgot. I picked
>> up from existing (at that time) examples, samples and CELIX source
>> tree.
>>
>>
>> Do you suggest better flow/arrangement of the bundles/libraries?
>>
>>
>> One thing that I would like to achieve is:
>> a.) Make my own sources compiled to a library available to other
>> bundles on the same CELIX deployment.
>> b.) Make 3rd party libraries deployed on CELIX and available to other
>> bundles deployed on the same CELIX deployment
>>
>> I thought this solves my issue, do you suggest another approach?
>>
>>
>>
>> Well, I'm still working on "my" HTTP CELIX Service. I do not want to
>> make it public, as I have to work on the API and developer examples
>> and documentation. What I can say is --- CELIX is my top favorite
>> project to work with. It brought back the love for the C language. I
>> know you do not agree/approve C++, I will have to use it - as I am
>> using Boost Spirit for a text parser. It is the only C/C++ project
>> that I know to work with.
>> I also wrote small CSP - C server pages parser, to be able to write
>> "JSP like" pages and do like <%= "Hello world" %> ( and much more :D
>> ), compile it to C (at the CMake run) and deploy it to CELIX bundle
>> and be deployed and served on /hello URL. BUT: it is long way to have
>> it memory leak free and developer friendly. Hacking is one effort,
>> public/production project takes another :D .
>>
>>
>> All in all, thank you for the quick response. Now I have another bone
>> to chew on :D .
>>
>>
>>
>> Thank you. Kind Regards,
>> Miroslav
>>
>>
>>
>>
>>
>> 2016-04-21 21:05 GMT+02:00 Pepijn Noltes <pe...@gmail.com>:
>> > Hi Miroslav,
>> >
>> > On Thu, Apr 21, 2016 at 5:57 PM, Miroslav Beranič
>> > <mi...@mibesis.si> wrote:
>> >> Hi Pepijn,
>> >>
>> >> I've just now, yesterday, updated GIT - and took time to checkout new
>> >> version of CELIX.
>> >> Nothing was building nor working :D So that is a good start - a lot of
>> changes.
>> >>
>> >> I think I am more-or-less clear on all the changes done, but some are
>> >> still getting my head knocking against my desk.
>> >>
>> >> As I did not find answer in the current source tree or documentation,
>> >> can be I was sloppy, but. Could you be kind to help me about a bit.
>> >>
>> >> So I had a bundle, that has CMake definition like this:
>> >>
>> >> bundle(${BUNDLE_SYMBOLICNAME}
>> >> SOURCES
>> >>     private/src/activator
>> >> DIRECTORIES
>> >>     root
>> >> )
>> >>
>> >> Where did the DIRECTORIES command/directive move to? I saw: add_files,
>> >> but not directories.
>> >> I looked at the mongoose example, but - I am not able to get it
>> >> working, as it looks like it is also missing this root directory in
>> >> the bundle entry set.
>> >
>> > Oops. Good catch, yes the mongoose example did not work anymore. I
>> > just committed the fix on the develop branch.
>> > Please check this out, it uses the bundle_files cmake command to add a
>> > directory to the bundle.
>> > I did notice that for me make clean was needed to trigger a new
>> > creation of the bundle zip.
>> >
>> >>
>> >> I build CELIX and Mongoose example like this:
>> >>
>> >>
>> >> git clone https://github.com/apache/celix.git
>> >> git checkout develop
>> >>
>> >> mkdir build && cd build
>> >> cmake -DBUILD_DEPENDENCY_MANAGER=ON -DBUILD_DEPLOYMENT_ADMIN=ON
>> >> -DBUILD_DEVICE_ACCESS=ON -DBUILD_DEVICE_ACCESS_EXAMPLE=ON
>> >> -DBUILD_EXAMPLES=ON -DBUILD_FRAMEWORK=ON -DBUILD_LAUNCHER=ON
>> >> -DBUILD_LOG_SERVICE=ON -DBUILD_LOG_WRITER=ON
>> >> -DBUILD_LOG_WRITER_SYSLOG=ON -DBUILD_REMOTE_SERVICE_ADMIN=ON
>> >> -DBUILD_REMOTE_SHELL=ON -DBUILD_SHELL=ON -DBUILD_SHELL_TUI=ON
>> >> -DCMAKE_BUILD_TYPE=Debug -DDOXYFILE_LATEX=ON
>> >> -DJAR_COMMAND=/opt/jdk1.8/bin/jar -DCMAKE_INSTALL_PREFIX=/opt/celix/
>> >> ../celix/
>> >>
>> >> make all
>> >>
>> >> make deploy
>> >>
>> >>
>> >> cd deploy/mongoose_deploy
>> >>
>> >> $ sh ./run.sh
>> >> -> entry (null)
>> >> Launcher: Framework Started
>> >> INFO: FRAMEWORK: Start shutdownthread
>> >>
>> >> CTRL+C
>> >>
>> >> INFO: FRAMEWORK: Shutdown
>> >> Segmentation fault (core dumped)
>> >> $
>> >> $ tree .cache/bundle4/
>> >> .cache/bundle4/
>> >> ├── bundle.id
>> >> ├── bundle.lastmodified
>> >> ├── bundle.location
>> >> └── version0.0
>> >>     ├── libmongoose.so.0
>> >>     ├── META-INF
>> >>     │   └── MANIFEST.MF
>> >>     └── revision.location
>> >>
>> >> 2 directories, 6 files
>> >>
>> >>
>> >> Did I miss something or is this example not correct? It looks like it
>> >> is missing something as the startup fails and there is no response on
>> >> port 8081.
>> >>
>> >>
>> >> Another problem I have, and also failed to find appropriate replacement
>> is:
>> >>
>> >> BUNDLE(${BUNDLE_SYMBOLICNAME}
>> >>     SOURCES
>> >>         private/src/activator.c
>> >>     IMPORT_LIBRARIES
>> >>         "eu.mibesis.httpservice.api.library"
>> >>         "eu.mibesis.mvc.api.library"
>> >> )
>> >>
>> >> With what is the command IMPORT_LIBRARIES replaced? Also for this I
>> >> did not find working replacement.
>> >
>> > The IMPORT_LIBARIES is also part of the updated cmake command. But i
>> > saw there was a typo in the
>> > cmake command document. I also commit a update for this on the develop
>> branch.
>> >
>> > That being said, import libraries are not yet supported.
>> > I known we had some experimental changes from that, but in the current
>> > master/develop this is not used.
>> > Note that this is not the result of the revamped cmake commands.
>> >
>> > Do you really import the libraries from different bundles?
>> > Or do want to embed the libraries in your bundles, because for the
>> > latter you the PRIVATE_LIBRARIES options in add_bundle (or
>> > bundles_private_libs cmake command)
>> >
>> >
>> >>
>> >> For other changes it was well documented and working as advertised.
>> >>
>> >>
>> >> I've tried master and develop branch from GitHub GIT repository.
>> >>
>> >> I've also not tried the celix bootstrap project, but it looks really
>> >> interesting. +1 for it.
>> >>
>> >>
>> >> Kind Regards,
>> >> Miroslav
>> >>
>> >>
>> >> 2016-02-04 14:44 GMT+01:00 Pepijn Noltes <pe...@gmail.com>:
>> >>> Hi All,
>> >>>
>> >>> I have been working on a revamp of the Celix specific CMake commands.
>> The
>> >>> main reason to do this was to get rid of the deploy.cmake files.
>> >>> At the moment these files are needed when you want to create a
>> "deployment"
>> >>> of a selection of bundes.
>> >>> One of the problems is that even if you disabled a certain
>> subdirectory the
>> >>> deploy.cmake in that directory will still be processed. To counter this
>> >>> additional CMake code is needed.
>> >>>
>> >>> To solve this and some other issues I rewrote the Packaging.cmake so
>> that
>> >>> to process is more based on CMake target properties [1] and CMake
>> generator
>> >>> expressions [2]. I also took the liberty to split up and rename the
>> >>> commands in a more CMake style (e.g. add_<target_type> commands)
>> >>>
>> >>> Differences are
>> >>> - No separate deploy.cmake needed. You can use add_deploy in normal
>> >>> CMakeLists.txt files. Also as result no additional test concerning
>> >>> subprojects are needed.
>> >>> - bundle command has become add_bundle command
>> >>> - deploy command has become add_deploy command
>> >>> - possibility to create multiple bundles in one CMakeLists.txt file.
>> >>> - There are several supporting CMake commands for add_bundle and
>> add_deploy
>> >>> - version info of bundle also used for so version information
>> >>> - libcelix_framework, libcelix_utils and libcelix_dfi are now generated
>> >>> with a so version.
>> >>> - Added CMake commands are documented in documents dir, see [3]
>> >>> - Legacy wrapper command for bundle -> add_bundle and deploy->
>> add_deploy
>> >>> exists. Supporting most, but not all old features.
>> >>> - For the Celix project all existing bundle commands and deploy.cmake
>> files
>> >>> are updated to the new commands
>> >>> - If jar or zip command is present on the host system, make install
>> can be
>> >>> used. If not make install-all (CPack) must be used. CMake will
>> generate a
>> >>> message for this.
>> >>> - add_deploy supports adding not yet existing bundle targets. Removing
>> the
>> >>> need for certain add_bundle ordering.
>> >>> - support for Ninja and "make -j"
>> >>> - Moved and updated the "Apache Celix Subprojects", "building Apache
>> Celix"
>> >>> and "Getting Started with Apache Celix" to the documents dir, see [4].
>> [5]
>> >>> and [6]
>> >>>
>> >>> If there are no objections I would like to merge this feature into the
>> >>> development branch.
>> >>> The documentation still needs some work and there are probably still
>> some
>> >>> bugs. but I would prefer to push this in preparation of a next Celix
>> >>> release.
>> >>>
>> >>> [1]
>> https://cmake.org/cmake/help/v3.4/command/set_target_properties.html
>> >>> [2]
>> >>>
>> https://cmake.org/cmake/help/v3.4/manual/cmake-generator-expressions.7.html?highlight=generator
>> >>> [3]
>> >>>
>> https://github.com/apache/celix/blob/feature/CELIX-335_deploy_refactoring/documents/cmake_commands/readme.md
>> >>> [4]
>> >>>
>> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/subprojects
>> >>> [5]
>> >>>
>> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/building
>> >>> [6]
>> >>>
>> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/getting_started
>> >>>
>> >>>
>> >>> Greetings,
>> >>> Pepijn
>> >>
>> >>
>> >>
>> >> --
>> >> Miroslav Beranič
>> >> MIBESIS
>> >> +386(0)40/814-843
>> >> miroslav.beranic@mibesis.si
>> >> http://www.mibesis.si
>>
>>
>>
>> --
>> Miroslav Beranič
>> MIBESIS
>> +386(0)40/814-843
>> miroslav.beranic@mibesis.si
>> http://www.mibesis.si
>>



-- 
Miroslav Beranič
MIBESIS
+386(0)40/814-843
miroslav.beranic@mibesis.si
http://www.mibesis.si

Re: Updated CMake bundle and deploy commands

Posted by Pepijn Noltes <pe...@gmail.com>.
Hi Miroslav,


On Thu, Apr 21, 2016 at 9:49 PM Miroslav Beranič <
miroslav.beranic@mibesis.si> wrote:

> Hi Pepijn,
>
> I've updated GIT repository. This was quick.
>
> $ sh ./run.sh
> -> entry .cache/bundle4/version0.0/root
> Mongoose started on: 8081
> Launcher: Framework Started
> ^C INFO: FRAMEWORK: Start shutdownthread
> INFO: FRAMEWORK: Shutdown
> Mongoose stopped
> INFO: FRAMEWORK: Successful shutdown
> Launcher: Exit
> $
>
> Looks like it works. So thank you very much.
>
> I thought bundle_files are only for the per-file addition of resources
> to the bundle. Need to check it out further.
>
> Well, I used IMPORT_LIBRARIES until now -- so this was not used/picked
> up by CELIX? Hmmm.
>

Yeah. I really did not expect this was used, I did take the effort to look
a bit more deeply. The support for import libraries is still in the
framework, so I had this wrong.
I added an issue [1] and committed an update to the develop branch to
enable import libraries in the updated cmake commands.  See hello_world as
example.

Could you test if this works for you?

Do note, that this is different from what you used to do. I have been
investigating how Celix could do import libraries. The challenges is that
normally dlopen has a flat namespace.
Meaning that if there is a library with a certain SONAME header, that
library will automatically be used to satisfies a NEEDED header... well as
far is I known.
The result is that SONAME and NEEDED need to match only when the resolver
has resolved the libraries. This implies that we need to runtime update the
library binaries.

I have been investigating dlmopen [2], part of the latest (?) gnu libc, and
this seems a perfect solution, but is only for the "latest and greatest"
linux distros.
Another solution solution could be explicitly reloading certain libraries,
but I still need to test this.

In short import libraries works, but I am not sure how it acts if multiple
exported library versions are available in the framework...

Btw I will be away for a few days, so if there any more issues I am not
able the respond directly.

[1] https://issues.apache.org/jira/browse/CELIX-356
[2] http://man7.org/linux/man-pages/man3/dlopen.3.html




>
>
> OK, I have like this (this is current setup, working with CELIX 1.x --
> do not know the exact version number).
>
> Bundle 1:
>
> BUNDLE_LIBRARY(my_lib_1
> SOURCES
>   private/src/source.c
> LINK_LIBRARIES
>   celix_framework
> )
>
> BUNDLE_PRIVATE_LIBRARY(private
> SOURCES
>   private/src/activator.c
> LINK_LIBRARIES
>   celix_framework
>   my_lib_1
> )
>
> BUNDLE(
>     ACTIVATOR "${BUNDLE_SYMBOLICNAME}-private"
>     PRIVATE_LIBRARIES "private"
>     EXPORT_LIBRARIES my_lib_1
> )
>
> I use this in other bundles:
> BUNDLE(my_bundle_1
>         SOURCES
>         private/src/activator
>         IMPORT_LIBRARIES
>         "my_lib_1"
> )
>
>
> Well, do not ask me how I picked up this flow, as I forgot. I picked
> up from existing (at that time) examples, samples and CELIX source
> tree.
>
>
> Do you suggest better flow/arrangement of the bundles/libraries?
>
>
> One thing that I would like to achieve is:
> a.) Make my own sources compiled to a library available to other
> bundles on the same CELIX deployment.
> b.) Make 3rd party libraries deployed on CELIX and available to other
> bundles deployed on the same CELIX deployment
>
> I thought this solves my issue, do you suggest another approach?
>
>
>
> Well, I'm still working on "my" HTTP CELIX Service. I do not want to
> make it public, as I have to work on the API and developer examples
> and documentation. What I can say is --- CELIX is my top favorite
> project to work with. It brought back the love for the C language. I
> know you do not agree/approve C++, I will have to use it - as I am
> using Boost Spirit for a text parser. It is the only C/C++ project
> that I know to work with.
> I also wrote small CSP - C server pages parser, to be able to write
> "JSP like" pages and do like <%= "Hello world" %> ( and much more :D
> ), compile it to C (at the CMake run) and deploy it to CELIX bundle
> and be deployed and served on /hello URL. BUT: it is long way to have
> it memory leak free and developer friendly. Hacking is one effort,
> public/production project takes another :D .
>
>
> All in all, thank you for the quick response. Now I have another bone
> to chew on :D .
>
>
>
> Thank you. Kind Regards,
> Miroslav
>
>
>
>
>
> 2016-04-21 21:05 GMT+02:00 Pepijn Noltes <pe...@gmail.com>:
> > Hi Miroslav,
> >
> > On Thu, Apr 21, 2016 at 5:57 PM, Miroslav Beranič
> > <mi...@mibesis.si> wrote:
> >> Hi Pepijn,
> >>
> >> I've just now, yesterday, updated GIT - and took time to checkout new
> >> version of CELIX.
> >> Nothing was building nor working :D So that is a good start - a lot of
> changes.
> >>
> >> I think I am more-or-less clear on all the changes done, but some are
> >> still getting my head knocking against my desk.
> >>
> >> As I did not find answer in the current source tree or documentation,
> >> can be I was sloppy, but. Could you be kind to help me about a bit.
> >>
> >> So I had a bundle, that has CMake definition like this:
> >>
> >> bundle(${BUNDLE_SYMBOLICNAME}
> >> SOURCES
> >>     private/src/activator
> >> DIRECTORIES
> >>     root
> >> )
> >>
> >> Where did the DIRECTORIES command/directive move to? I saw: add_files,
> >> but not directories.
> >> I looked at the mongoose example, but - I am not able to get it
> >> working, as it looks like it is also missing this root directory in
> >> the bundle entry set.
> >
> > Oops. Good catch, yes the mongoose example did not work anymore. I
> > just committed the fix on the develop branch.
> > Please check this out, it uses the bundle_files cmake command to add a
> > directory to the bundle.
> > I did notice that for me make clean was needed to trigger a new
> > creation of the bundle zip.
> >
> >>
> >> I build CELIX and Mongoose example like this:
> >>
> >>
> >> git clone https://github.com/apache/celix.git
> >> git checkout develop
> >>
> >> mkdir build && cd build
> >> cmake -DBUILD_DEPENDENCY_MANAGER=ON -DBUILD_DEPLOYMENT_ADMIN=ON
> >> -DBUILD_DEVICE_ACCESS=ON -DBUILD_DEVICE_ACCESS_EXAMPLE=ON
> >> -DBUILD_EXAMPLES=ON -DBUILD_FRAMEWORK=ON -DBUILD_LAUNCHER=ON
> >> -DBUILD_LOG_SERVICE=ON -DBUILD_LOG_WRITER=ON
> >> -DBUILD_LOG_WRITER_SYSLOG=ON -DBUILD_REMOTE_SERVICE_ADMIN=ON
> >> -DBUILD_REMOTE_SHELL=ON -DBUILD_SHELL=ON -DBUILD_SHELL_TUI=ON
> >> -DCMAKE_BUILD_TYPE=Debug -DDOXYFILE_LATEX=ON
> >> -DJAR_COMMAND=/opt/jdk1.8/bin/jar -DCMAKE_INSTALL_PREFIX=/opt/celix/
> >> ../celix/
> >>
> >> make all
> >>
> >> make deploy
> >>
> >>
> >> cd deploy/mongoose_deploy
> >>
> >> $ sh ./run.sh
> >> -> entry (null)
> >> Launcher: Framework Started
> >> INFO: FRAMEWORK: Start shutdownthread
> >>
> >> CTRL+C
> >>
> >> INFO: FRAMEWORK: Shutdown
> >> Segmentation fault (core dumped)
> >> $
> >> $ tree .cache/bundle4/
> >> .cache/bundle4/
> >> ├── bundle.id
> >> ├── bundle.lastmodified
> >> ├── bundle.location
> >> └── version0.0
> >>     ├── libmongoose.so.0
> >>     ├── META-INF
> >>     │   └── MANIFEST.MF
> >>     └── revision.location
> >>
> >> 2 directories, 6 files
> >>
> >>
> >> Did I miss something or is this example not correct? It looks like it
> >> is missing something as the startup fails and there is no response on
> >> port 8081.
> >>
> >>
> >> Another problem I have, and also failed to find appropriate replacement
> is:
> >>
> >> BUNDLE(${BUNDLE_SYMBOLICNAME}
> >>     SOURCES
> >>         private/src/activator.c
> >>     IMPORT_LIBRARIES
> >>         "eu.mibesis.httpservice.api.library"
> >>         "eu.mibesis.mvc.api.library"
> >> )
> >>
> >> With what is the command IMPORT_LIBRARIES replaced? Also for this I
> >> did not find working replacement.
> >
> > The IMPORT_LIBARIES is also part of the updated cmake command. But i
> > saw there was a typo in the
> > cmake command document. I also commit a update for this on the develop
> branch.
> >
> > That being said, import libraries are not yet supported.
> > I known we had some experimental changes from that, but in the current
> > master/develop this is not used.
> > Note that this is not the result of the revamped cmake commands.
> >
> > Do you really import the libraries from different bundles?
> > Or do want to embed the libraries in your bundles, because for the
> > latter you the PRIVATE_LIBRARIES options in add_bundle (or
> > bundles_private_libs cmake command)
> >
> >
> >>
> >> For other changes it was well documented and working as advertised.
> >>
> >>
> >> I've tried master and develop branch from GitHub GIT repository.
> >>
> >> I've also not tried the celix bootstrap project, but it looks really
> >> interesting. +1 for it.
> >>
> >>
> >> Kind Regards,
> >> Miroslav
> >>
> >>
> >> 2016-02-04 14:44 GMT+01:00 Pepijn Noltes <pe...@gmail.com>:
> >>> Hi All,
> >>>
> >>> I have been working on a revamp of the Celix specific CMake commands.
> The
> >>> main reason to do this was to get rid of the deploy.cmake files.
> >>> At the moment these files are needed when you want to create a
> "deployment"
> >>> of a selection of bundes.
> >>> One of the problems is that even if you disabled a certain
> subdirectory the
> >>> deploy.cmake in that directory will still be processed. To counter this
> >>> additional CMake code is needed.
> >>>
> >>> To solve this and some other issues I rewrote the Packaging.cmake so
> that
> >>> to process is more based on CMake target properties [1] and CMake
> generator
> >>> expressions [2]. I also took the liberty to split up and rename the
> >>> commands in a more CMake style (e.g. add_<target_type> commands)
> >>>
> >>> Differences are
> >>> - No separate deploy.cmake needed. You can use add_deploy in normal
> >>> CMakeLists.txt files. Also as result no additional test concerning
> >>> subprojects are needed.
> >>> - bundle command has become add_bundle command
> >>> - deploy command has become add_deploy command
> >>> - possibility to create multiple bundles in one CMakeLists.txt file.
> >>> - There are several supporting CMake commands for add_bundle and
> add_deploy
> >>> - version info of bundle also used for so version information
> >>> - libcelix_framework, libcelix_utils and libcelix_dfi are now generated
> >>> with a so version.
> >>> - Added CMake commands are documented in documents dir, see [3]
> >>> - Legacy wrapper command for bundle -> add_bundle and deploy->
> add_deploy
> >>> exists. Supporting most, but not all old features.
> >>> - For the Celix project all existing bundle commands and deploy.cmake
> files
> >>> are updated to the new commands
> >>> - If jar or zip command is present on the host system, make install
> can be
> >>> used. If not make install-all (CPack) must be used. CMake will
> generate a
> >>> message for this.
> >>> - add_deploy supports adding not yet existing bundle targets. Removing
> the
> >>> need for certain add_bundle ordering.
> >>> - support for Ninja and "make -j"
> >>> - Moved and updated the "Apache Celix Subprojects", "building Apache
> Celix"
> >>> and "Getting Started with Apache Celix" to the documents dir, see [4].
> [5]
> >>> and [6]
> >>>
> >>> If there are no objections I would like to merge this feature into the
> >>> development branch.
> >>> The documentation still needs some work and there are probably still
> some
> >>> bugs. but I would prefer to push this in preparation of a next Celix
> >>> release.
> >>>
> >>> [1]
> https://cmake.org/cmake/help/v3.4/command/set_target_properties.html
> >>> [2]
> >>>
> https://cmake.org/cmake/help/v3.4/manual/cmake-generator-expressions.7.html?highlight=generator
> >>> [3]
> >>>
> https://github.com/apache/celix/blob/feature/CELIX-335_deploy_refactoring/documents/cmake_commands/readme.md
> >>> [4]
> >>>
> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/subprojects
> >>> [5]
> >>>
> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/building
> >>> [6]
> >>>
> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/getting_started
> >>>
> >>>
> >>> Greetings,
> >>> Pepijn
> >>
> >>
> >>
> >> --
> >> Miroslav Beranič
> >> MIBESIS
> >> +386(0)40/814-843
> >> miroslav.beranic@mibesis.si
> >> http://www.mibesis.si
>
>
>
> --
> Miroslav Beranič
> MIBESIS
> +386(0)40/814-843
> miroslav.beranic@mibesis.si
> http://www.mibesis.si
>

Re: Updated CMake bundle and deploy commands

Posted by Miroslav Beranič <mi...@mibesis.si>.
Hi Pepijn,

I've updated GIT repository. This was quick.

$ sh ./run.sh
-> entry .cache/bundle4/version0.0/root
Mongoose started on: 8081
Launcher: Framework Started
^C INFO: FRAMEWORK: Start shutdownthread
INFO: FRAMEWORK: Shutdown
Mongoose stopped
INFO: FRAMEWORK: Successful shutdown
Launcher: Exit
$

Looks like it works. So thank you very much.

I thought bundle_files are only for the per-file addition of resources
to the bundle. Need to check it out further.

Well, I used IMPORT_LIBRARIES until now -- so this was not used/picked
up by CELIX? Hmmm.


OK, I have like this (this is current setup, working with CELIX 1.x --
do not know the exact version number).

Bundle 1:

BUNDLE_LIBRARY(my_lib_1
SOURCES
  private/src/source.c
LINK_LIBRARIES
  celix_framework
)

BUNDLE_PRIVATE_LIBRARY(private
SOURCES
  private/src/activator.c
LINK_LIBRARIES
  celix_framework
  my_lib_1
)

BUNDLE(
    ACTIVATOR "${BUNDLE_SYMBOLICNAME}-private"
    PRIVATE_LIBRARIES "private"
    EXPORT_LIBRARIES my_lib_1
)

I use this in other bundles:
BUNDLE(my_bundle_1
        SOURCES
        private/src/activator
        IMPORT_LIBRARIES
        "my_lib_1"
)


Well, do not ask me how I picked up this flow, as I forgot. I picked
up from existing (at that time) examples, samples and CELIX source
tree.


Do you suggest better flow/arrangement of the bundles/libraries?


One thing that I would like to achieve is:
a.) Make my own sources compiled to a library available to other
bundles on the same CELIX deployment.
b.) Make 3rd party libraries deployed on CELIX and available to other
bundles deployed on the same CELIX deployment

I thought this solves my issue, do you suggest another approach?



Well, I'm still working on "my" HTTP CELIX Service. I do not want to
make it public, as I have to work on the API and developer examples
and documentation. What I can say is --- CELIX is my top favorite
project to work with. It brought back the love for the C language. I
know you do not agree/approve C++, I will have to use it - as I am
using Boost Spirit for a text parser. It is the only C/C++ project
that I know to work with.
I also wrote small CSP - C server pages parser, to be able to write
"JSP like" pages and do like <%= "Hello world" %> ( and much more :D
), compile it to C (at the CMake run) and deploy it to CELIX bundle
and be deployed and served on /hello URL. BUT: it is long way to have
it memory leak free and developer friendly. Hacking is one effort,
public/production project takes another :D .


All in all, thank you for the quick response. Now I have another bone
to chew on :D .



Thank you. Kind Regards,
Miroslav





2016-04-21 21:05 GMT+02:00 Pepijn Noltes <pe...@gmail.com>:
> Hi Miroslav,
>
> On Thu, Apr 21, 2016 at 5:57 PM, Miroslav Beranič
> <mi...@mibesis.si> wrote:
>> Hi Pepijn,
>>
>> I've just now, yesterday, updated GIT - and took time to checkout new
>> version of CELIX.
>> Nothing was building nor working :D So that is a good start - a lot of changes.
>>
>> I think I am more-or-less clear on all the changes done, but some are
>> still getting my head knocking against my desk.
>>
>> As I did not find answer in the current source tree or documentation,
>> can be I was sloppy, but. Could you be kind to help me about a bit.
>>
>> So I had a bundle, that has CMake definition like this:
>>
>> bundle(${BUNDLE_SYMBOLICNAME}
>> SOURCES
>>     private/src/activator
>> DIRECTORIES
>>     root
>> )
>>
>> Where did the DIRECTORIES command/directive move to? I saw: add_files,
>> but not directories.
>> I looked at the mongoose example, but - I am not able to get it
>> working, as it looks like it is also missing this root directory in
>> the bundle entry set.
>
> Oops. Good catch, yes the mongoose example did not work anymore. I
> just committed the fix on the develop branch.
> Please check this out, it uses the bundle_files cmake command to add a
> directory to the bundle.
> I did notice that for me make clean was needed to trigger a new
> creation of the bundle zip.
>
>>
>> I build CELIX and Mongoose example like this:
>>
>>
>> git clone https://github.com/apache/celix.git
>> git checkout develop
>>
>> mkdir build && cd build
>> cmake -DBUILD_DEPENDENCY_MANAGER=ON -DBUILD_DEPLOYMENT_ADMIN=ON
>> -DBUILD_DEVICE_ACCESS=ON -DBUILD_DEVICE_ACCESS_EXAMPLE=ON
>> -DBUILD_EXAMPLES=ON -DBUILD_FRAMEWORK=ON -DBUILD_LAUNCHER=ON
>> -DBUILD_LOG_SERVICE=ON -DBUILD_LOG_WRITER=ON
>> -DBUILD_LOG_WRITER_SYSLOG=ON -DBUILD_REMOTE_SERVICE_ADMIN=ON
>> -DBUILD_REMOTE_SHELL=ON -DBUILD_SHELL=ON -DBUILD_SHELL_TUI=ON
>> -DCMAKE_BUILD_TYPE=Debug -DDOXYFILE_LATEX=ON
>> -DJAR_COMMAND=/opt/jdk1.8/bin/jar -DCMAKE_INSTALL_PREFIX=/opt/celix/
>> ../celix/
>>
>> make all
>>
>> make deploy
>>
>>
>> cd deploy/mongoose_deploy
>>
>> $ sh ./run.sh
>> -> entry (null)
>> Launcher: Framework Started
>> INFO: FRAMEWORK: Start shutdownthread
>>
>> CTRL+C
>>
>> INFO: FRAMEWORK: Shutdown
>> Segmentation fault (core dumped)
>> $
>> $ tree .cache/bundle4/
>> .cache/bundle4/
>> ├── bundle.id
>> ├── bundle.lastmodified
>> ├── bundle.location
>> └── version0.0
>>     ├── libmongoose.so.0
>>     ├── META-INF
>>     │   └── MANIFEST.MF
>>     └── revision.location
>>
>> 2 directories, 6 files
>>
>>
>> Did I miss something or is this example not correct? It looks like it
>> is missing something as the startup fails and there is no response on
>> port 8081.
>>
>>
>> Another problem I have, and also failed to find appropriate replacement is:
>>
>> BUNDLE(${BUNDLE_SYMBOLICNAME}
>>     SOURCES
>>         private/src/activator.c
>>     IMPORT_LIBRARIES
>>         "eu.mibesis.httpservice.api.library"
>>         "eu.mibesis.mvc.api.library"
>> )
>>
>> With what is the command IMPORT_LIBRARIES replaced? Also for this I
>> did not find working replacement.
>
> The IMPORT_LIBARIES is also part of the updated cmake command. But i
> saw there was a typo in the
> cmake command document. I also commit a update for this on the develop branch.
>
> That being said, import libraries are not yet supported.
> I known we had some experimental changes from that, but in the current
> master/develop this is not used.
> Note that this is not the result of the revamped cmake commands.
>
> Do you really import the libraries from different bundles?
> Or do want to embed the libraries in your bundles, because for the
> latter you the PRIVATE_LIBRARIES options in add_bundle (or
> bundles_private_libs cmake command)
>
>
>>
>> For other changes it was well documented and working as advertised.
>>
>>
>> I've tried master and develop branch from GitHub GIT repository.
>>
>> I've also not tried the celix bootstrap project, but it looks really
>> interesting. +1 for it.
>>
>>
>> Kind Regards,
>> Miroslav
>>
>>
>> 2016-02-04 14:44 GMT+01:00 Pepijn Noltes <pe...@gmail.com>:
>>> Hi All,
>>>
>>> I have been working on a revamp of the Celix specific CMake commands. The
>>> main reason to do this was to get rid of the deploy.cmake files.
>>> At the moment these files are needed when you want to create a "deployment"
>>> of a selection of bundes.
>>> One of the problems is that even if you disabled a certain subdirectory the
>>> deploy.cmake in that directory will still be processed. To counter this
>>> additional CMake code is needed.
>>>
>>> To solve this and some other issues I rewrote the Packaging.cmake so that
>>> to process is more based on CMake target properties [1] and CMake generator
>>> expressions [2]. I also took the liberty to split up and rename the
>>> commands in a more CMake style (e.g. add_<target_type> commands)
>>>
>>> Differences are
>>> - No separate deploy.cmake needed. You can use add_deploy in normal
>>> CMakeLists.txt files. Also as result no additional test concerning
>>> subprojects are needed.
>>> - bundle command has become add_bundle command
>>> - deploy command has become add_deploy command
>>> - possibility to create multiple bundles in one CMakeLists.txt file.
>>> - There are several supporting CMake commands for add_bundle and add_deploy
>>> - version info of bundle also used for so version information
>>> - libcelix_framework, libcelix_utils and libcelix_dfi are now generated
>>> with a so version.
>>> - Added CMake commands are documented in documents dir, see [3]
>>> - Legacy wrapper command for bundle -> add_bundle and deploy-> add_deploy
>>> exists. Supporting most, but not all old features.
>>> - For the Celix project all existing bundle commands and deploy.cmake files
>>> are updated to the new commands
>>> - If jar or zip command is present on the host system, make install can be
>>> used. If not make install-all (CPack) must be used. CMake will generate a
>>> message for this.
>>> - add_deploy supports adding not yet existing bundle targets. Removing the
>>> need for certain add_bundle ordering.
>>> - support for Ninja and "make -j"
>>> - Moved and updated the "Apache Celix Subprojects", "building Apache Celix"
>>> and "Getting Started with Apache Celix" to the documents dir, see [4]. [5]
>>> and [6]
>>>
>>> If there are no objections I would like to merge this feature into the
>>> development branch.
>>> The documentation still needs some work and there are probably still some
>>> bugs. but I would prefer to push this in preparation of a next Celix
>>> release.
>>>
>>> [1] https://cmake.org/cmake/help/v3.4/command/set_target_properties.html
>>> [2]
>>> https://cmake.org/cmake/help/v3.4/manual/cmake-generator-expressions.7.html?highlight=generator
>>> [3]
>>> https://github.com/apache/celix/blob/feature/CELIX-335_deploy_refactoring/documents/cmake_commands/readme.md
>>> [4]
>>> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/subprojects
>>> [5]
>>> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/building
>>> [6]
>>> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/getting_started
>>>
>>>
>>> Greetings,
>>> Pepijn
>>
>>
>>
>> --
>> Miroslav Beranič
>> MIBESIS
>> +386(0)40/814-843
>> miroslav.beranic@mibesis.si
>> http://www.mibesis.si



-- 
Miroslav Beranič
MIBESIS
+386(0)40/814-843
miroslav.beranic@mibesis.si
http://www.mibesis.si

Re: Updated CMake bundle and deploy commands

Posted by Pepijn Noltes <pe...@gmail.com>.
Hi Miroslav,

On Thu, Apr 21, 2016 at 5:57 PM, Miroslav Beranič
<mi...@mibesis.si> wrote:
> Hi Pepijn,
>
> I've just now, yesterday, updated GIT - and took time to checkout new
> version of CELIX.
> Nothing was building nor working :D So that is a good start - a lot of changes.
>
> I think I am more-or-less clear on all the changes done, but some are
> still getting my head knocking against my desk.
>
> As I did not find answer in the current source tree or documentation,
> can be I was sloppy, but. Could you be kind to help me about a bit.
>
> So I had a bundle, that has CMake definition like this:
>
> bundle(${BUNDLE_SYMBOLICNAME}
> SOURCES
>     private/src/activator
> DIRECTORIES
>     root
> )
>
> Where did the DIRECTORIES command/directive move to? I saw: add_files,
> but not directories.
> I looked at the mongoose example, but - I am not able to get it
> working, as it looks like it is also missing this root directory in
> the bundle entry set.

Oops. Good catch, yes the mongoose example did not work anymore. I
just committed the fix on the develop branch.
Please check this out, it uses the bundle_files cmake command to add a
directory to the bundle.
I did notice that for me make clean was needed to trigger a new
creation of the bundle zip.

>
> I build CELIX and Mongoose example like this:
>
>
> git clone https://github.com/apache/celix.git
> git checkout develop
>
> mkdir build && cd build
> cmake -DBUILD_DEPENDENCY_MANAGER=ON -DBUILD_DEPLOYMENT_ADMIN=ON
> -DBUILD_DEVICE_ACCESS=ON -DBUILD_DEVICE_ACCESS_EXAMPLE=ON
> -DBUILD_EXAMPLES=ON -DBUILD_FRAMEWORK=ON -DBUILD_LAUNCHER=ON
> -DBUILD_LOG_SERVICE=ON -DBUILD_LOG_WRITER=ON
> -DBUILD_LOG_WRITER_SYSLOG=ON -DBUILD_REMOTE_SERVICE_ADMIN=ON
> -DBUILD_REMOTE_SHELL=ON -DBUILD_SHELL=ON -DBUILD_SHELL_TUI=ON
> -DCMAKE_BUILD_TYPE=Debug -DDOXYFILE_LATEX=ON
> -DJAR_COMMAND=/opt/jdk1.8/bin/jar -DCMAKE_INSTALL_PREFIX=/opt/celix/
> ../celix/
>
> make all
>
> make deploy
>
>
> cd deploy/mongoose_deploy
>
> $ sh ./run.sh
> -> entry (null)
> Launcher: Framework Started
> INFO: FRAMEWORK: Start shutdownthread
>
> CTRL+C
>
> INFO: FRAMEWORK: Shutdown
> Segmentation fault (core dumped)
> $
> $ tree .cache/bundle4/
> .cache/bundle4/
> ├── bundle.id
> ├── bundle.lastmodified
> ├── bundle.location
> └── version0.0
>     ├── libmongoose.so.0
>     ├── META-INF
>     │   └── MANIFEST.MF
>     └── revision.location
>
> 2 directories, 6 files
>
>
> Did I miss something or is this example not correct? It looks like it
> is missing something as the startup fails and there is no response on
> port 8081.
>
>
> Another problem I have, and also failed to find appropriate replacement is:
>
> BUNDLE(${BUNDLE_SYMBOLICNAME}
>     SOURCES
>         private/src/activator.c
>     IMPORT_LIBRARIES
>         "eu.mibesis.httpservice.api.library"
>         "eu.mibesis.mvc.api.library"
> )
>
> With what is the command IMPORT_LIBRARIES replaced? Also for this I
> did not find working replacement.

The IMPORT_LIBARIES is also part of the updated cmake command. But i
saw there was a typo in the
cmake command document. I also commit a update for this on the develop branch.

That being said, import libraries are not yet supported.
I known we had some experimental changes from that, but in the current
master/develop this is not used.
Note that this is not the result of the revamped cmake commands.

Do you really import the libraries from different bundles?
Or do want to embed the libraries in your bundles, because for the
latter you the PRIVATE_LIBRARIES options in add_bundle (or
bundles_private_libs cmake command)


>
> For other changes it was well documented and working as advertised.
>
>
> I've tried master and develop branch from GitHub GIT repository.
>
> I've also not tried the celix bootstrap project, but it looks really
> interesting. +1 for it.
>
>
> Kind Regards,
> Miroslav
>
>
> 2016-02-04 14:44 GMT+01:00 Pepijn Noltes <pe...@gmail.com>:
>> Hi All,
>>
>> I have been working on a revamp of the Celix specific CMake commands. The
>> main reason to do this was to get rid of the deploy.cmake files.
>> At the moment these files are needed when you want to create a "deployment"
>> of a selection of bundes.
>> One of the problems is that even if you disabled a certain subdirectory the
>> deploy.cmake in that directory will still be processed. To counter this
>> additional CMake code is needed.
>>
>> To solve this and some other issues I rewrote the Packaging.cmake so that
>> to process is more based on CMake target properties [1] and CMake generator
>> expressions [2]. I also took the liberty to split up and rename the
>> commands in a more CMake style (e.g. add_<target_type> commands)
>>
>> Differences are
>> - No separate deploy.cmake needed. You can use add_deploy in normal
>> CMakeLists.txt files. Also as result no additional test concerning
>> subprojects are needed.
>> - bundle command has become add_bundle command
>> - deploy command has become add_deploy command
>> - possibility to create multiple bundles in one CMakeLists.txt file.
>> - There are several supporting CMake commands for add_bundle and add_deploy
>> - version info of bundle also used for so version information
>> - libcelix_framework, libcelix_utils and libcelix_dfi are now generated
>> with a so version.
>> - Added CMake commands are documented in documents dir, see [3]
>> - Legacy wrapper command for bundle -> add_bundle and deploy-> add_deploy
>> exists. Supporting most, but not all old features.
>> - For the Celix project all existing bundle commands and deploy.cmake files
>> are updated to the new commands
>> - If jar or zip command is present on the host system, make install can be
>> used. If not make install-all (CPack) must be used. CMake will generate a
>> message for this.
>> - add_deploy supports adding not yet existing bundle targets. Removing the
>> need for certain add_bundle ordering.
>> - support for Ninja and "make -j"
>> - Moved and updated the "Apache Celix Subprojects", "building Apache Celix"
>> and "Getting Started with Apache Celix" to the documents dir, see [4]. [5]
>> and [6]
>>
>> If there are no objections I would like to merge this feature into the
>> development branch.
>> The documentation still needs some work and there are probably still some
>> bugs. but I would prefer to push this in preparation of a next Celix
>> release.
>>
>> [1] https://cmake.org/cmake/help/v3.4/command/set_target_properties.html
>> [2]
>> https://cmake.org/cmake/help/v3.4/manual/cmake-generator-expressions.7.html?highlight=generator
>> [3]
>> https://github.com/apache/celix/blob/feature/CELIX-335_deploy_refactoring/documents/cmake_commands/readme.md
>> [4]
>> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/subprojects
>> [5]
>> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/building
>> [6]
>> https://github.com/apache/celix/tree/feature/CELIX-335_deploy_refactoring/documents/getting_started
>>
>>
>> Greetings,
>> Pepijn
>
>
>
> --
> Miroslav Beranič
> MIBESIS
> +386(0)40/814-843
> miroslav.beranic@mibesis.si
> http://www.mibesis.si