Hi Anupam, I think I found your issue: you declared in your activator
#define HELLO_ACTIVATOR "DM HELLO" Defines in general should not contain spaces, but in this case it's even more important because the properties_load() function parses properties in the format KEY = VALUE , where both KEY and VALUE are strings containing "conventional characters (i.e. a-z, A-Z, 1-9, . , - , _ ... and I wouldn't dare to use something different :-) ) Try to fix your define in #define HELLO_ACTIVATOR "DM_HELLO" and then put in your config.properties (by the way, I could not find custom properties in the config.properties you sent us) DM_HELLO=<whatever_string.you-prefer> I tried it right now starting from your project and it works fine. Regards, Gabriele 2016-06-09 11:45 GMT+02:00 Anupam Datta <[email protected]>: > Hi I tried your suggestion and it showed (null) on the test.prop ie. it > didn't take the property value from config.properties > > I am sending the directory structure and my built proj > > I followed the instruction : > https://github.com/apache/celix/blob/develop/documents/getting_started/readme.md > > anupam@anupam:~/Dev/ApacheCelix/git_celix/DM_proj_001$ tree > . > ├── build > │ ├── bundles > │ │ └── dm_bundle_001 > │ │ ├── CMakeFiles > │ │ │ ├── CMakeDirectoryInformation.cmake > │ │ │ ├── dm_bundle_001_bundle.dir > │ │ │ │ ├── build.make > │ │ │ │ ├── cmake_clean.cmake > │ │ │ │ ├── DependInfo.cmake > │ │ │ │ ├── depend.internal > │ │ │ │ ├── depend.make > │ │ │ │ └── progress.make > │ │ │ ├── dm_bundle_001.dir > │ │ │ │ ├── build.make > │ │ │ │ ├── C.includecache > │ │ │ │ ├── cmake_clean.cmake > │ │ │ │ ├── DependInfo.cmake > │ │ │ │ ├── depend.internal > │ │ │ │ ├── depend.make > │ │ │ │ ├── flags.make > │ │ │ │ ├── link.txt > │ │ │ │ ├── private > │ │ │ │ │ └── src > │ │ │ │ │ └── activator.c.o > │ │ │ │ └── progress.make > │ │ │ ├── myproject-deploy.dir > │ │ │ │ ├── build.make > │ │ │ │ ├── cmake_clean.cmake > │ │ │ │ ├── DependInfo.cmake > │ │ │ │ ├── depend.internal > │ │ │ │ ├── depend.make > │ │ │ │ └── progress.make > │ │ │ └── progress.marks > │ │ ├── cmake_install.cmake > │ │ ├── dm_bundle_001_content > │ │ │ └── libdm_bundle_001.so.1 > │ │ ├── dm_bundle_001_gen > │ │ │ ├── lib-dm_bundle_001-copy-timestamp > │ │ │ ├── MANIFEST.MF > │ │ │ ├── MANIFEST.step1 > │ │ │ └── MANIFEST.step2 > │ │ ├── dm_bundle_001.zip > │ │ ├── libdm_bundle_001.so -> libdm_bundle_001.so.1 > │ │ ├── libdm_bundle_001.so.1 -> libdm_bundle_001.so.1.0.0 > │ │ ├── libdm_bundle_001.so.1.0.0 > │ │ ├── Makefile > │ │ └── myproject-deploy-timestamp > │ ├── CMakeCache.txt > │ ├── CMakeFiles > │ │ ├── 3.5.1 > │ │ │ ├── CMakeCCompiler.cmake > │ │ │ ├── CMakeDetermineCompilerABI_C.bin > │ │ │ ├── CMakeSystem.cmake > │ │ │ └── CompilerIdC > │ │ │ ├── a.out > │ │ │ └── CMakeCCompilerId.c > │ │ ├── bundles.dir > │ │ │ ├── build.make > │ │ │ ├── cmake_clean.cmake > │ │ │ ├── DependInfo.cmake > │ │ │ ├── depend.internal > │ │ │ ├── depend.make > │ │ │ └── progress.make > │ │ ├── cmake.check_cache > │ │ ├── CMakeDirectoryInformation.cmake > │ │ ├── CMakeOutput.log > │ │ ├── CMakeRuleHashes.txt > │ │ ├── CMakeTmp > │ │ ├── deploy.dir > │ │ │ ├── build.make > │ │ │ ├── cmake_clean.cmake > │ │ │ ├── DependInfo.cmake > │ │ │ ├── depend.internal > │ │ │ ├── depend.make > │ │ │ └── progress.make > │ │ ├── feature_tests.bin > │ │ ├── feature_tests.c > │ │ ├── Makefile2 > │ │ ├── Makefile.cmake > │ │ ├── progress.marks > │ │ ├── rat.dir > │ │ │ ├── build.make > │ │ │ ├── cmake_clean.cmake > │ │ │ ├── DependInfo.cmake > │ │ │ └── progress.make > │ │ └── TargetDirectories.txt > │ ├── cmake_install.cmake > │ ├── deploy > │ │ └── myproject-deploy > │ │ ├── config.properties > │ │ ├── config.properties.step1 > │ │ ├── core > │ │ ├── myproject-deploy > │ │ └── run.sh > │ └── Makefile > ├── bundles > │ └── dm_bundle_001 > │ ├── CMakeLists.txt > │ └── private > │ └── src > │ └── activator.c > └── CMakeLists.txt > > 24 directories, 78 files > > And my project is attached. > > Thanks & Regards > Anupam Datta > > On Thu, Jun 2, 2016 at 8:28 PM, Gabriele Ricciardi < > [email protected]> wrote: > >> Hi Anupam, >> >> In principle your code looks correct, so I tried (more or less) the same >> as you and for me it works fine. >> >> Just to be sure, and also to give you a reference example, find attached >> a sample project based on the hello_world. >> >> Probably you already know how to build a bundle, but just in case (and >> assuming you already have Celix correctly installed on your machine) >> >> - Untar the project >> - Create a hello_props_build folder besides it >> - cd hello_props_build && ccmake >> -DCELIX_DIR=<path_to_your_celix_install_path> ../hello_props >> - make && make deploy >> - cd deploy/hello_properties >> - echo 'DM_HELLO=test.props' >> config.properties >> - sh run.sh >> >> This should print the Hello World and then the property just appended to >> the config.properties . >> >> I hope this clarify a bit! >> >> Regards, >> >> Gabriele Ricciardi >> >> >> 2016-06-01 12:10 GMT+02:00 Anupam Datta <[email protected]>: >> >>> I tried with config.properties but not sure how actually I can achieve >>> that. Do you have any example code or clear docs ? >>> I had added DM_HELLO="hello_properties" in config.properties file >>> and in activator.c file I added : >>> >>> #define HELLO_ACTIVATOR "DM HELLO" //DM_HELLO is the name of the property >>> mentioned in config.properties file >>> char *dm_hello_data = NULL; >>> >>> Then inside bundleActivator_create(... >>> I added bundleContext_getProperty(context, HELLO_ACTIVATOR, >>> &dm_hello_data); >>> >>> Inside bundleActivator_start(.... >>> I added : printf("%sHello %s\n", dm_hello_data, data->word); >>> >>> But I could not get "hello_properties" printed in last line ie . >>> printf("%sHello >>> %s\n", dm_hello_data, data->word); >>> >>> Let me know what is the exact way of adding and retrieving from >>> config.properties >>> >>> Thanks & Regards >>> Anupam Datta >>> >>> On Fri, May 27, 2016 at 1:36 PM, Pepijn Noltes <[email protected]> >>> wrote: >>> >>> > Hi, >>> > >>> > On Thu, May 26, 2016 at 9:11 AM, Anupam Datta <[email protected]> >>> wrote: >>> > > Hi Pepjin, >>> > > I had some query regarding celix : >>> > > >>> > > 1. is it possible to pass arguments to bundles ? ie. at the time of >>> > > starting I want to send some configurable parameters. >>> > >>> > Yes. Currently there are two ways. >>> > >>> > 1 Add a property to the config.properties file. A bundle can retrieve >>> > the values using the bundleContext_getProperty. See [1] and [2]. >>> > When possible we try to follow the Java OSGi api (adapted to C). >>> > 2 Declare a env variable. In case of the Celix >>> > bundleContext_getProperty method if a property is not present in the >>> > framework properties (read the config.properties file) the framework >>> > will look if there is an environment variable present with the >>> > requested property name >>> > >>> > [1] >>> > >>> https://osgi.org/javadoc/r4v43/core/org/osgi/framework/BundleContext.html#getProperty%28java.lang.String%29 >>> > [2] >>> > >>> https://github.com/apache/celix/blob/master/framework/public/include/bundle_context.h >>> > >>> > Another way is to use the config admin, this is more flexible but also >>> > more complex. And there are still some TODO's left for the config >>> > admin. >>> > >>> > >>> > > 2. What is the way of remotely controlling and data capturing via >>> celix >>> > > bundles ? Is there any server where device can register itself via >>> celix >>> > > and from server through browser we can start stop bundle and fetch >>> data? >>> > > I had seen the remote shell and remote service folder but not much >>> > > documentation is available there in the folders to understand how >>> exactly >>> > > it works. >>> > >>> > For remote controlling the bundles you can use the remote shell and >>> Apache >>> > ACE. >>> > For remote shell you can try the remote_shell example (in the >>> > deploy/remote_shell folder of the build). >>> > When started use a telnet program to connect (telnet localhost 6666). >>> > The remote_shell depends on the shell bundle. >>> > Note that remote_shell is a nice feature to gain remote control, but >>> > is (by design) not secure. >>> > >>> > An other option is to use Apache ACE. In this case different devices >>> > can register to Apache ACE using the deployment_admin bundle. You can >>> > then use Apache ACE to define which bundles should be deployed on >>> > which devices. See Apache ACE [3] for more info. You can combine this >>> > with remote shell for more control. >>> > >>> > [3] https://ace.apache.org/ >>> > >>> > >>> > >>> > Remote services can be used to create distributed application base on >>> > services. The Apache Celix remote services implementation works with >>> > the Amdatu Remote Services implementation [4] >>> > The remote-services-cfg example should work out of the box to give you >>> an >>> > idea. >>> > Note that although technically remote services works, you still need >>> > to put considerable effort in it to get something working. >>> > We are aware of this and are working on a solution to simplify the use >>> > of remote services, but for the time being manually effort is needed >>> > to get it running. >>> > >>> > [4] http://www.amdatu.org/components/remote.html >>> > >>> > Could you specify in more details why do want to build / meand with >>> > 'data capturing via celix' ? Because I am not sure if the remote >>> > services is want you want (synchronized communication). >>> > >>> > >>> > >>> > > >>> > > Thanks & Regards >>> > > Anupam Datta >>> > > >>> > > On Tue, May 24, 2016 at 12:42 AM, Anupam Datta <[email protected]> >>> wrote: >>> > > >>> > >> Thank you Pepjin. I will definitely try that out. >>> > >> >>> > >> Thanks & Regards >>> > >> Anupam Datta >>> > >> On 24-May-2016 12:28 AM, "Pepijn Noltes" <[email protected]> >>> > wrote: >>> > >> >>> > >>> Hi Anupam, >>> > >>> >>> > >>> Please use the documentation at >>> > >>> https://github.com/apache/celix/tree/develop/documents >>> > >>> The idea is when a new Celix release has been made, the website >>> will >>> > >>> refer to documentation github. >>> > >>> >>> > >>> On Mon, May 23, 2016 at 11:52 AM, Anupam Datta <[email protected]> >>> > wrote: >>> > >>> > Hi, >>> > >>> > I had tried with git version as per the doc : >>> > >>> > https://celix.apache.org/documentation/getting_started.html >>> > >>> > after >>> > >>> > make all >>> > >>> > I did : >>> > >>> > #install the framework and the bundles >>> > >>> > sudo make install-all >>> > >>> > >>> > >>> > It showed me error : make: *** No rule to make target >>> 'install-all'. >>> > >>> Stop. >>> > >>> > >>> > >>> > So I did sudo make install >>> > >>> > >>> > >>> > log file attached : install_log.txt >>> > >>> > >>> > >>> > I created the demo project . After creating, built it and another >>> > error >>> > >>> > showed : >>> > >>> > >>> > >>> > -- Using jar to create bundles >>> > >>> > -- bundle function is deprecated. update target 'hello_001' to >>> > >>> add_bundle >>> > >>> > -- Configuring done >>> > >>> > CMake Error at >>> > >>> > >>> /usr/local/share/celix/cmake/modules/cmake_celix/Packaging.cmake:149 >>> > >>> > (add_library): >>> > >>> > Cannot find source file: >>> > >>> > >>> > >>> > ( >>> > >>> > >>> > >>> > Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh >>> .h++ .hm >>> > >>> .hpp >>> > >>> > .hxx .in .txx >>> > >>> > Call Stack (most recent call first): >>> > >>> > >>> > >>> >>> > >>> /usr/local/share/celix/cmake/modules/cmake_celix/PackagingLegacy.cmake:41 >>> > >>> > (add_bundle) >>> > >>> > bundles/hello_001/CMakeLists.txt:4 (bundle) >>> > >>> > >>> > >>> >>> > >>> The documentation was incorrect. The should be no parentheses >>> around >>> > >>> the bundle SOURCES. >>> > >>> If you remove them, it should work .... >>> > >>> >>> > >>> > >>> > >>> > CMake Error: CMake can not determine linker language for target: >>> > >>> hello_001 >>> > >>> > CMake Error: Cannot determine link language for target >>> "hello_001". >>> > >>> > -- Generating done >>> > >>> > -- Build files have been written to: >>> > >>> > /home/anupam/Dev/ApacheCelix/git_celix/DM_proj_001-build >>> > >>> > >>> > >>> > So what was the issue with it? The directory structure of the >>> demo >>> > proj >>> > >>> : >>> > >>> > >>> > >>> > ├── DM_proj_001 >>> > >>> > │ ├── bundles >>> > >>> > │ │ └── hello_001 >>> > >>> > │ │ ├── CMakeLists.txt >>> > >>> > │ │ └── private >>> > >>> > │ │ └── src >>> > >>> > │ │ └── activator.c >>> > >>> > │ └── CMakeLists.txt >>> > >>> > └── DM_proj_001-build >>> > >>> > ├── bundles >>> > >>> > │ └── hello_001 >>> > >>> > │ ├── CMakeFiles >>> > >>> > │ │ ├── CMakeDirectoryInformation.cmake >>> > >>> > │ │ ├── hello_001_bundle.dir >>> > >>> > │ │ │ ├── build.make >>> > >>> > │ │ │ ├── cmake_clean.cmake >>> > >>> > │ │ │ ├── DependInfo.cmake >>> > >>> > │ │ │ └── progress.make >>> > >>> > │ │ ├── hello_001.dir >>> > >>> > │ │ │ ├── build.make >>> > >>> > │ │ │ ├── cmake_clean.cmake >>> > >>> > │ │ │ ├── DependInfo.cmake >>> > >>> > │ │ │ ├── depend.make >>> > >>> > │ │ │ ├── flags.make >>> > >>> > │ │ │ └── progress.make >>> > >>> > │ │ └── progress.marks >>> > >>> > │ ├── cmake_install.cmake >>> > >>> > │ ├── hello_001_gen >>> > >>> > │ │ ├── MANIFEST.MF >>> > >>> > │ │ ├── MANIFEST.step1 >>> > >>> > │ │ └── MANIFEST.step2 >>> > >>> > │ └── Makefile >>> > >>> > ├── CMakeCache.txt >>> > >>> > ├── CMakeFiles >>> > >>> > │ ├── 3.5.1 >>> > >>> > │ │ ├── CMakeCCompiler.cmake >>> > >>> > │ │ ├── CMakeDetermineCompilerABI_C.bin >>> > >>> > │ │ ├── CMakeSystem.cmake >>> > >>> > │ │ └── CompilerIdC >>> > >>> > │ │ ├── a.out >>> > >>> > │ │ └── CMakeCCompilerId.c >>> > >>> > │ ├── bundles.dir >>> > >>> > │ │ ├── build.make >>> > >>> > │ │ ├── cmake_clean.cmake >>> > >>> > │ │ ├── DependInfo.cmake >>> > >>> > │ │ └── progress.make >>> > >>> > │ ├── cmake.check_cache >>> > >>> > │ ├── CMakeDirectoryInformation.cmake >>> > >>> > │ ├── CMakeOutput.log >>> > >>> > │ ├── CMakeRuleHashes.txt >>> > >>> > │ ├── CMakeTmp >>> > >>> > │ ├── deploy.dir >>> > >>> > │ │ ├── build.make >>> > >>> > │ │ ├── cmake_clean.cmake >>> > >>> > │ │ ├── DependInfo.cmake >>> > >>> > │ │ └── progress.make >>> > >>> > │ ├── feature_tests.bin >>> > >>> > │ ├── feature_tests.c >>> > >>> > │ ├── Makefile2 >>> > >>> > │ ├── Makefile.cmake >>> > >>> > │ ├── progress.marks >>> > >>> > │ ├── rat.dir >>> > >>> > │ │ ├── build.make >>> > >>> > │ │ ├── cmake_clean.cmake >>> > >>> > │ │ ├── DependInfo.cmake >>> > >>> > │ │ └── progress.make >>> > >>> > │ └── TargetDirectories.txt >>> > >>> > ├── cmake_install.cmake >>> > >>> > └── Makefile >>> > >>> > >>> > >>> > Please share your view on it. let me know if any other log is >>> needed. >>> > >>> > >>> > >>> > Thanks & Regards >>> > >>> > Anupam Datta >>> > >>> > >>> > >>> >>> > >>> Greetings, >>> > >>> Pepijn >>> > >>> >>> > >> >>> > >>> >> >> >
