apache / celix

Apache Celix is a framework for C and C++14 to develop dynamic modular software applications using component and in-process service-oriented programming.
https://celix.apache.org/
Apache License 2.0
160 stars 85 forks source link

celix_ShellCxx extraction error #643

Closed SkyWhiteEagle closed 10 months ago

SkyWhiteEagle commented 10 months ago

Hi,

I don't think this is related to #642 so I'm opening another issue.

I am trying to make a project using Celix. I am using Conan V2 and CMake to build the project.

I locally exported the Conan recipe from the master branch (https://github.com/apache/celix/commit/e1d7fc1b544bc2c43cbcdb6b76f1b66fffccad96, as far as I can tell, the previous release is not Conan V2 compatible) and required it in my consumer recipe. I set the following in my recipe:

  requires = (
        "celix/2.3.0",
    )

    default_options = {
        "celix/*:build_framework": True,
        "celix/*:build_shell_tui": True,
        "celix/*:build_shell_wui": True,
    }

    def layout(self):
        cmake_layout(self)

    def generate(self):
        # This generates "conan_toolchain.cmake" in self.generators_folder
        tc = CMakeToolchain(self)
        tc.generate()

        # This generates "foo-config.cmake" and "bar-config.cmake" in self.generators_folder
        deps = CMakeDeps(self)
        deps.generate()

In my CMake I have:

add_celix_container(TestCelixContainer CXX
    BUNDLES
        Celix::ShellCxx
        Celix::shell_tui
)

# Patch mentioned in #642 
target_link_libraries(TestCelixContainer
    PRIVATE
        libzip::zip
)

When running the container in release, I get:

[2023-09-17T16:46:56] [  error] [celix_framework] [celix_framework_utils_extractBundlePath:217] No such file or directory(0x2): "Could not extract bundle zip file `bundles/celix_ShellCxx.zip` to `.cache/bundle1/resources`";
 Cause: No such file or directory
[2023-09-17T16:46:56] [  error] [celix_framework] [celix_bundleArchive_extractBundle:164] Failed to initialize archive. Failed to extract bundle zip to revision directory.
[2023-09-17T16:46:56] [  error] [celix_framework] [celix_bundleArchive_createCacheDirectory:198] Failed to initialize archive. Failed to extract bundle.
[2023-09-17T16:46:56] [  error] [celix_framework] [celix_bundleArchive_create:322] No such file or directory(0x2): "Could not create archive.";
 Cause: Failed to initialize archive or create manifest.
[2023-09-17T16:46:56] [  error] [celix_framework] [celix_bundleCache_createArchive:222] No such file or directory(0x2): Failed to create archive.
[2023-09-17T16:46:56] [  error] [celix_framework] [celix_framework_installBundleInternalImpl:686] No such file or directory(0x2): Could not install bundle
[2023-09-17T16:46:56] [  error] [celix_framework] [framework_autoInstallConfiguredBundlesForList:538] Could not install bundle from location 'celix_ShellCxx.zip'.
[2023-09-17T16:46:56] [  error] [celix_framework] [framework_start:471] Could not auto start or install all configured bundles
-> [2023-09-17T16:46:56] [   info] [celix_framework] [framework_start:476] Celix framework started
[2023-09-17T16:46:56] [   info] [celix_framework] Framework error event received -> registering framework.error condition service

In debug however, the container works like a charm. In can see no obvious difference between the release and debug folder. beside the fact that the bundles have a -Debug suffix. Even more puzzling to me, in the .cache or the release, I see a bundle2 folder, does that mean that the shell TUI bundle was extracted just fine?

Thanks in advance.

SkyWhiteEagle commented 10 months ago

As a note, I tested using Celix::shell instead and it worked in release. I also added the shell Web UI, which is started fine with either shell in release, and confirms that no shell are loaded when using the CXX shell in release.

PengZheng commented 10 months ago

I cannot reproduce your issue on a brand-new Ubuntu machine. So I record my steps here for reference. Note that you don't need to specify "celix/*:build_framework": True,, just specify what you need directly, then everything else should be deduced from what you specified.

If following these steps strictly does not address your issue, feel free to reopen it.

Setup Project

conan new cmake_lib -d name=cxx_shell_example -d version=0.1 gives me a minimal project. I modified it a bit (see inline comments).

from conan import ConanFile
from conan.tools.cmake import CMakeToolchain, CMake, CMakeDeps

class cxx_shell_exampleRecipe(ConanFile):
    name = "cxx_shell_example"
    version = "0.1"
    package_type = "library"

    # Optional metadata
    license = "<Put the package license here>"
    author = "<Put your name here> <And your email here>"
    url = "<Package recipe repository url here, for issues about the package>"
    description = "<Description of cxx_shell_example package here>"
    topics = ("<Put some tag here>", "<here>", "<and here>")

    # Binary configuration
    settings = "os", "compiler", "build_type", "arch"
    options = {"shared": [True, False], "fPIC": [True, False]}
    default_options = {"shared": False, "fPIC": True}

    # Sources are located in the same place as this recipe, copy them to the recipe
    exports_sources = "CMakeLists.txt", "src/*", "include/*"

    # MODIFICATION: setup environment for me 
    generators = "VirtualRunEnv" 

    def config_options(self):
        if self.settings.os == "Windows":
            self.options.rm_safe("fPIC")

    def configure(self):
        if self.options.shared:
            self.options.rm_safe("fPIC")
        # MODIFICATION: minimal requirement
        self.options["celix"].build_shell_tui = True

    def requirements(self):
        self.requires("celix/2.3.0")

    def generate(self):
        deps = CMakeDeps(self)
        deps.generate()
        tc = CMakeToolchain(self)
        # MODIFICATION: workaround for 642
        if self.settings.os == "Linux":
            tc.cache_variables["CMAKE_EXE_LINKER_FLAGS"] = "-Wl,--unresolved-symbols=ignore-in-shared-libs"
        elif self.settings.os == "Macos":
            tc.cache_variables["CMAKE_EXE_LINKER_FLAGS"] = "-Wl,-undefined -Wl,dynamic_lookup"
        tc.generate()

    def build(self):
        cmake = CMake(self)
        cmake.configure()
        cmake.build()

    def package(self):
        cmake = CMake(self)
        cmake.install()
cmake_minimum_required(VERSION 3.15)
project(cxx_shell_example CXX)

 # MODIFICATION: use Celix to build bundle container
find_package(Celix)

add_celix_container(TestCelixContainer CXX
        BUNDLES
        Celix::ShellCxx
        Celix::shell_tui
)

Build

 conan build . -pr:b default -pr:h default -b missing -of cmake-build-release

Run

cd cmake-build-release
source conanrun.sh
# check env is setup by conanrun.sh 
# echo $LD_LIBRARY_PATH
cd deploy/TestCelixContainer/
./TestCelixContainer
-> [2023-09-18T11:10:36] [   info] [celix_framework] [framework_start:476] Celix framework started
->
-> quit
Quitting framework
SkyWhiteEagle commented 10 months ago

Thank you. From a quick glance, I'd say I might be missing the VirtualRunEnv generator. I'll try to compare everything more closely later.

I forgot about Conan create command, might use it to restart my recipe file to make sure I have the new good practices. If I encounter the problem again, I'll push the project somewhere to make it easier.

PengZheng commented 10 months ago

If I encounter the problem again, I'll push the project somewhere to make it easier.

Yes, that would be very helpful.

SkyWhiteEagle commented 10 months ago

Hello,

I pushed a repository.

There are two branches:

As far as I can tell, the error message is the same on both branch, and only in release on both branch.

I have a readme in each branch with the information I could think of. Note that the version and profiles are the same between the two branches, I just realized I put one half in each readme.

PS: I added shell scripts files in both branches to reproduce the command sequences.

PengZheng commented 10 months ago

You are using Conan 2, but dev_celix_with_clion still reference to Conan 1. We need to fix it. Thanks.

For Conan 2, you don't need a separate conan install, i.e. you only need conan build with all profile/setting/options. conan build without any extra settings will only build the default profile. I think this caused your issue. I changed doTheThing.sh to

mkdir build
cd build
conan build .. --build missing -s:h build_type=Release
cd Release/deploy/TestCelixContainer/
source ../../generators/conanrun.sh
./TestCelixContainer

and doTheThing-debug.sh to

mkdir build
cd build
conan build .. --build missing -pr default -s:h build_type=Debug
cd Debug/deploy/TestCelixContainer/
source ../../generators/conanrun.sh
./TestCelixContainer

Both work on my machine.

If you prefer working in Clion, conan install . -pr default -s:h build_type=Debug at the project root should produce CMakeUserPresets.json. Refreshing CMake setting, CLion will setup CMake profiles for you automatically. You can both build and debug your project within the IDE. Conan 2 has really great integration with CLion.

SkyWhiteEagle commented 10 months ago

Hello. Thank you for having a look.

I indeed use the separate Conan install out of habits from V1. I noticed I forgot the profile in the debug build step, I guess I must not have properly purged my build directory when I checked the script.

I am already using the CMakeUserPresets.json file and usually build & debug with the IDE. I am simply using the .sh scripts to eliminate CLion as a potential cause.

I tried updating the scripts with the one provided, the error still remains.

I find it weird that the debug correctly works but not the release. I committed the bundles from the release folder on both branches. I can inflate them, and they don't appear to be corrupted.

Is it normal for it to extract to .cache/bundle1/resources? Is it not just .cache/bundle1/? Running head bundles/celix_ShellCxx.zip from the folder of the application does find the file. I tried running everything as sudo in case it was permission related but the same error occurred.

This bundle appears to be the only C++ one of those I tested (shell TUI and WUI), could it be linked?

Thanks again.

PengZheng commented 10 months ago

Is it normal for it to extract to .cache/bundle1/resources?

Using your project, bundles/celix_ShellCxx.zip is extracted to .cache/bundle2/resources, which is enforced by CELIX_AUTO_START_3=celix_http_admin.zip celix_ShellCxx.zip celix_shell_tui.zip celix_shell_wui.zip\n\ in the main().

The main of TestCelixContainer is at build/Release/celix/gen/containers/TestCelixContainer/main.cc:

#include <celix_launcher.h>
int main(int argc, char *argv[]) {
    const char * config = "\
CELIX_CONTAINER_NAME=TestCelixContainer\n\
CELIX_BUNDLES_PATH=bundles\n\
\
\
\
CELIX_AUTO_START_3=celix_http_admin.zip celix_ShellCxx.zip celix_shell_tui.zip celix_shell_wui.zip\n\
\
\
\
\
";

    celix_properties_t *embeddedProps = celix_properties_loadFromString(config);
    return celixLauncher_launchAndWaitForShutdown(argc, argv, embeddedProps);
}
build/Release/deploy/TestCelixContainer/
├── bundles
│   ├── celix_http_admin.zip
│   ├── celix_ShellCxx.zip
│   ├── celix_shell_tui.zip
│   └── celix_shell_wui.zip
├── .cache
│   ├── bundle1
│   │   ├── bundle_state.properties
│   │   ├── resources
│   │   │   ├── libhttp_admin.so.0
│   │   │   └── META-INF
│   │   │       └── MANIFEST.MF
│   │   └── storage
│   │       └── root
│   ├── bundle2
│   │   ├── bundle_state.properties
│   │   ├── resources
│   │   │   ├── libShellCxx.so.2
│   │   │   └── META-INF
│   │   │       └── MANIFEST.MF
│   │   └── storage
│   ├── bundle3
│   │   ├── bundle_state.properties
│   │   ├── resources
│   │   │   ├── libshell_tui.so.1
│   │   │   └── META-INF
│   │   │       └── MANIFEST.MF
│   │   └── storage
│   └── bundle4
│       ├── bundle_state.properties
│       ├── resources
│       │   ├── libshell_wui.so.1
│       │   ├── META-INF
│       │   │   └── MANIFEST.MF
│       │   └── resources
│       │       ├── ansi_up.js
│       │       ├── index.html
│       │       └── script.js
│       └── storage
└── TestCelixContainer

20 directories, 20 files

This bundle appears to be the only C++ one of those I tested (shell TUI and WUI), could it be linked?

I guess not. celix_framework_utils_extractBundlePath does not care about content inside zip file.

From the following message, the bundle path is resolved correctly, but "no such file or directory" is reported.

"[2023-09-17T16:46:56] [  error] [celix_framework] [celix_framework_utils_extractBundlePath:217] No such file or directory(0x2): "Could not extract bundle zip file `bundles/celix_ShellCxx.zip` to `.cache/bundle1/resources`";
 Cause: No such file or directory"

Since the issue is not reproducible on my machine, I suggest:

  1. Add the following to both TestCelix and Celix, which should add debug info to both projects for Release build:
set(CMAKE_C_FLAGS "-g ${CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS "-g ${CMAKE_CXX_FLAGS}")
  1. Re-create Release Celix package in your local Conan cache (remember to remove it first conan remove "celix*" -c).
  2. Re-build TestCelix in Release mode.
  3. Fire the debugger in the IDE, break at celix_framework_utils_extractBundlePath, and find out why.
SkyWhiteEagle commented 10 months ago

Hello,

I was able to track the problem in a RelWithDebInfo build. I did purge the whole Conan just in case (remove and cache clean to be safe) and re-exported Celix after pulling to get latest commits.

Celix commit:

3710082906a1847f0594729ccc247db7301aec13

Debug:

libs/utils/src/celix_file_utils.c:224 => celix_utils_writeOrCreateString returns ".cache/bundle1/resources/libShellCxx.so.2"
libs/utils/src/celix_file_utils.c:230 => the if is false, celix_utils_createDirectory is not called, no resources folder
libs/utils/src/celix_file_utils.c:234 => resources folder missing, fopen errors out

Note that it is working correctly for bundle 2 (TUI I believe). 
In bundle 2, ".cache/bundle2/resources/META-INF/" is the path returned by celix_utils_writeOrCreateString on the first iteration, which triggers the if and the folder creation.

Also, manually creating the resources folder in bundle 1 right before the fopen fixes the issue. 

Not sure why the order is different, but ensuring the destination folder is created first looks like it would fix the problem.

PS: I also added the CMake edits to the project.

PengZheng commented 10 months ago

Using the zip file you provide, a unit test reproduces this issue:

TEST_F(FileUtilsTestSuite, ExtractZipFileTest2) {
    std::cout << "Using test zip location " << SHELL_ZIP_LOCATION << std::endl;
    const char* extractLocation = "extract_location";
    celix_utils_deleteDirectory(extractLocation, nullptr);

    //Given a test zip file, I can extract this to a provided location and the correct files are extracted
    EXPECT_FALSE(celix_utils_fileExists(extractLocation));
    auto status = celix_utils_extractZipFile(SHELL_ZIP_LOCATION, extractLocation, nullptr);
    EXPECT_EQ(status, CELIX_SUCCESS);

    celix_utils_deleteDirectory(extractLocation, nullptr);
}

Thank you very much for taking time debugging this right before a new release. This seems a blocker for 2.4.0 @pnoltes

SkyWhiteEagle commented 10 months ago

You are welcome, thank you for taking the time as well.

I'm glad it got figured out in the end.

PengZheng commented 10 months ago

@SkyWhiteEagle May I ask how was this zip produced? Do you have jar installed? If not, it will be produced using zip.

According to standard, a manifest file entry named META-INF/MANIFEST. MF is automatically generated by the jar tool and is always the first entry in the jar file.

Inspecting the zip file, I found:

$ jar tf celix_ShellCxx.zip
libShellCxx.so.2
META-INF/
META-INF/MANIFEST.MF
SkyWhiteEagle commented 10 months ago

I would say no: jar --version tells me that jar is not found. It is a relatively new Ubuntu 23.04 boot, and I try to install most applications as flatpaks which should be more isolated from my understanding.

Is there another test to check if I have jar?

PengZheng commented 10 months ago

I would say no: jar --version tells me that jar is not found. It is a relatively new Ubuntu 23.04 boot, and I try to install most applications as flatpaks which should be more isolated from my understanding.

It seems that we have encountered a corner case caused by bundle produced by zip. Normally, we recommend our users to install JDK: https://github.com/apache/celix/tree/master/documents/building

Anyway, extractToDir should be created by celix_utils_extractZipFile. This is indeed a bug.

PengZheng commented 10 months ago

I uninstall Java from my machine, create Celix using zip.

~/.conan2/p/b/celix98488820af83b/p/share/celix/bundles$ find -iname "*.zip" -exec zipinfo {} \;
Archive:  ./Celix_RemoteServiceAdmin-Debug.zip
Zip file size: 1134385 bytes, number of entries: 3
-rw-r--r--  3.0 unx  5089424 bx defN 23-Sep-22 16:28 libRemoteServiceAdmind.so.0
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      315 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
3 files, 5089739 bytes uncompressed, 1133867 bytes compressed:  77.7%
Archive:  ./rsa_dfi-Debug.zip
Zip file size: 64955 bytes, number of entries: 3
-rw-r--r--  3.0 unx   171456 bx defN 23-Sep-22 16:28 librsa_dfid.so.0
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      332 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
3 files, 171788 bytes uncompressed, 64459 bytes compressed:  62.5%
Archive:  ./celix_pubsub_admin_zmq-Debug.zip
Zip file size: 76554 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      306 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   202776 bx defN 23-Sep-22 16:28 libcelix_pubsub_admin_zmqd.so.2
3 files, 203082 bytes uncompressed, 76028 bytes compressed:  62.6%
Archive:  ./deployment_admin-Debug.zip
Zip file size: 62298 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      317 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   167872 bx defN 23-Sep-22 16:28 libdeployment_admind.so.0
3 files, 168189 bytes uncompressed, 61784 bytes compressed:  63.3%
Archive:  ./celix_http_admin-Debug.zip
Zip file size: 25446 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      288 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx    66448 bx defN 23-Sep-22 16:28 libhttp_admind.so.0
3 files, 66736 bytes uncompressed, 24944 bytes compressed:  62.6%
Archive:  ./celix_RsaConfiguredDiscovery-Debug.zip
Zip file size: 748400 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      333 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx  2980416 bx defN 23-Sep-22 16:28 libRsaConfiguredDiscoveryd.so.0
3 files, 2980749 bytes uncompressed, 747874 bytes compressed:  74.9%
Archive:  ./celix_pubsub_serializer_avrobin-Debug.zip
Zip file size: 39735 bytes, number of entries: 3
-rw-r--r--  3.0 unx   110208 bx defN 23-Sep-22 16:28 libcelix_pubsub_serializer_avrobind.so.1
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      342 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
3 files, 110550 bytes uncompressed, 39191 bytes compressed:  64.5%
Archive:  ./celix_pubsub_protocol_wire_v2-Debug.zip
Zip file size: 16474 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      334 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx    47288 bx defN 23-Sep-22 16:28 libcelix_pubsub_protocol_wire_v2d.so.1
3 files, 47622 bytes uncompressed, 15934 bytes compressed:  66.5%
Archive:  ./celix_ShellCxx-Debug.zip
Zip file size: 1055039 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      276 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx  5047640 bx defN 23-Sep-22 16:28 libShellCxxd.so.2
3 files, 5047916 bytes uncompressed, 1054541 bytes compressed:  79.1%
Archive:  ./celix_pubsub_discovery_etcd-Debug.zip
Zip file size: 53800 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      326 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   139952 bx defN 23-Sep-22 16:28 libcelix_pubsub_discovery_etcdd.so.1
3 files, 140278 bytes uncompressed, 53264 bytes compressed:  62.0%
Archive:  ./celix_shell_wui-Debug.zip
Zip file size: 13200 bytes, number of entries: 7
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      312 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx    23688 bx defN 23-Sep-22 16:28 libshell_wuid.so.1
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 resources/
-rw-rw-r--  3.0 unx     1726 tx defN 20-Nov-25 20:00 resources/script.js
-rw-rw-r--  3.0 unx    23605 tx defN 21-Oct-28 16:34 resources/ansi_up.js
-rw-rw-r--  3.0 unx     1335 tx defN 20-Nov-25 20:00 resources/index.html
7 files, 50666 bytes uncompressed, 12050 bytes compressed:  76.2%
Archive:  ./rsa_discovery_zeroconf-Debug.zip
Zip file size: 44875 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      343 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   123888 bx defN 23-Sep-22 16:28 librsa_discovery_zeroconfd.so.1
3 files, 124231 bytes uncompressed, 44349 bytes compressed:  64.3%
Archive:  ./celix_pubsub_admin_websocket-Debug.zip
Zip file size: 70620 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      330 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   188576 bx defN 23-Sep-22 16:28 libcelix_pubsub_admin_websocketd.so.2
3 files, 188906 bytes uncompressed, 70082 bytes compressed:  62.9%
Archive:  ./celix_log_admin-Debug.zip
Zip file size: 21161 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      281 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx    65040 bx defN 23-Sep-22 16:28 liblog_admind.so.1
3 files, 65321 bytes uncompressed, 20661 bytes compressed:  68.4%
Archive:  ./rsa_shm-Debug.zip
Zip file size: 92927 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      309 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   248232 bx defN 23-Sep-22 16:28 librsa_shmd.so.1
3 files, 248541 bytes uncompressed, 92431 bytes compressed:  62.8%
Archive:  ./celix_pubsub_serializer_json-Debug.zip
Zip file size: 39263 bytes, number of entries: 3
-rw-r--r--  3.0 unx   109440 bx defN 23-Sep-22 16:28 libcelix_pubsub_serializer_jsond.so.1
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      330 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
3 files, 109770 bytes uncompressed, 38725 bytes compressed:  64.7%
Archive:  ./celix_pubsub_topology_manager-Debug.zip
Zip file size: 45467 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      334 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   128312 bx defN 23-Sep-22 16:28 libcelix_pubsub_topology_managerd.so.1
3 files, 128646 bytes uncompressed, 44927 bytes compressed:  65.1%
Archive:  ./celix_syslog_writer-Debug.zip
Zip file size: 6652 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      297 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx    22704 bx defN 23-Sep-22 16:28 libsyslog_writerd.so.1
3 files, 23001 bytes uncompressed, 6144 bytes compressed:  73.3%
Archive:  ./rsa_json_rpc-Debug.zip
Zip file size: 45753 bytes, number of entries: 3
-rw-r--r--  3.0 unx   127712 bx defN 23-Sep-22 16:28 librsa_json_rpcd.so.1
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      306 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
3 files, 128018 bytes uncompressed, 45247 bytes compressed:  64.7%
Archive:  ./rsa_discovery-Debug.zip
Zip file size: 54531 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      295 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   151656 bx defN 23-Sep-22 16:28 librsa_discoveryd.so.0
3 files, 151951 bytes uncompressed, 54023 bytes compressed:  64.4%
Archive:  ./rsa_discovery_etcd-Debug.zip
Zip file size: 72897 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      313 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   195016 bx defN 23-Sep-22 16:28 librsa_discovery_etcdd.so.0
3 files, 195329 bytes uncompressed, 72379 bytes compressed:  62.9%
Archive:  ./celix_shell-Debug.zip
Zip file size: 40955 bytes, number of entries: 3
-rw-r--r--  3.0 unx   119176 bx defN 23-Sep-22 16:28 libshelld.so.2
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      267 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
3 files, 119443 bytes uncompressed, 40463 bytes compressed:  66.1%
Archive:  ./celix_log_writer_stdout-Debug.zip
Zip file size: 5219 bytes, number of entries: 3
-rw-r--r--  3.0 unx    20560 bx defN 23-Sep-22 16:28 liblog_writer_stdoutd.so.1
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      313 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
3 files, 20873 bytes uncompressed, 4703 bytes compressed:  77.5%
Archive:  ./celix_remote_shell-Debug.zip
Zip file size: 24793 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      291 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx    65088 bx defN 23-Sep-22 16:28 libremote_shelld.so.0
3 files, 65379 bytes uncompressed, 24287 bytes compressed:  62.9%
Archive:  ./celix_shell_tui-Debug.zip
Zip file size: 19601 bytes, number of entries: 3
-rw-r--r--  3.0 unx    53464 bx defN 23-Sep-22 16:28 libshell_tuid.so.1
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      279 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
3 files, 53743 bytes uncompressed, 19101 bytes compressed:  64.5%
Archive:  ./celix_pubsub_protocol_wire_v1-Debug.zip
Zip file size: 15310 bytes, number of entries: 3
-rw-r--r--  3.0 unx    45360 bx defN 23-Sep-22 16:28 libcelix_pubsub_protocol_wire_v1d.so.1
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      334 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
3 files, 45694 bytes uncompressed, 14770 bytes compressed:  67.7%
Archive:  ./celix_components_ready_check-Debug.zip
Zip file size: 9194 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      336 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx    27816 bx defN 23-Sep-22 16:28 libcomponents_ready_checkd.so.1
3 files, 28152 bytes uncompressed, 8668 bytes compressed:  69.2%
Archive:  ./celix_pubsub_admin_tcp-Debug.zip
Zip file size: 101200 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      306 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   263080 bx defN 23-Sep-22 16:28 libcelix_pubsub_admin_tcpd.so.2
3 files, 263386 bytes uncompressed, 100674 bytes compressed:  61.8%
Archive:  ./celix_pubsub_admin_udp_multicast-Debug.zip
Zip file size: 65195 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      346 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx   163416 bx defN 23-Sep-22 16:28 libcelix_pubsub_admin_udp_multicastd.so.1
3 files, 163762 bytes uncompressed, 64649 bytes compressed:  60.5%
Archive:  ./rsa_topology_manager-Debug.zip
Zip file size: 32820 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      319 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx    93480 bx defN 23-Sep-22 16:28 librsa_topology_managerd.so.0
3 files, 93799 bytes uncompressed, 32298 bytes compressed:  65.6%
Archive:  ./celix_bonjour_shell-Debug.zip
Zip file size: 17844 bytes, number of entries: 3
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      269 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
-rw-r--r--  3.0 unx    48464 bx defN 23-Sep-22 16:28 libbonjour_shelld.so.1
3 files, 48733 bytes uncompressed, 17336 bytes compressed:  64.4%
Archive:  ./celix_log_service-Debug.zip
Zip file size: 18606 bytes, number of entries: 3
-rw-r--r--  3.0 unx    53848 bx defN 23-Sep-22 16:28 liblog_serviced.so.1
drwxrwxr-x  3.0 unx        0 bx stor 23-Sep-22 16:28 META-INF/
-rw-rw-r--  3.0 unx      289 tx defN 23-Sep-22 16:28 META-INF/MANIFEST.MF
3 files, 54137 bytes uncompressed, 18102 bytes compressed:  66.6%