{"id":18755814,"url":"https://github.com/kasperskylab/abseil-cpp-kos","last_synced_at":"2025-10-08T06:52:39.432Z","repository":{"id":107847176,"uuid":"583596850","full_name":"KasperskyLab/abseil-cpp-kos","owner":"KasperskyLab","description":"Abseil is an open source collection of C++ libraries drawn from the most fundamental pieces of Google’s internal codebase. ","archived":false,"fork":false,"pushed_at":"2025-07-17T15:10:02.000Z","size":8492,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-30T08:48:03.874Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KasperskyLab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-12-30T09:12:29.000Z","updated_at":"2025-07-17T15:07:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"9755f01f-b476-4e09-a969-5f564c217136","html_url":"https://github.com/KasperskyLab/abseil-cpp-kos","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/KasperskyLab/abseil-cpp-kos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KasperskyLab%2Fabseil-cpp-kos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KasperskyLab%2Fabseil-cpp-kos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KasperskyLab%2Fabseil-cpp-kos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KasperskyLab%2Fabseil-cpp-kos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KasperskyLab","download_url":"https://codeload.github.com/KasperskyLab/abseil-cpp-kos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KasperskyLab%2Fabseil-cpp-kos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278903034,"owners_count":26065786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T17:34:02.597Z","updated_at":"2025-10-08T06:52:39.415Z","avatar_url":"https://github.com/KasperskyLab.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Abseil adaptation for KasperskyOS (C++ Common Libraries)\n\nThis project is an adaptation of the [Abseil library](https://github.com/abseil/abseil-cpp) for\nKasperskyOS. The project is based on the [20220623.1](https://github.com/abseil/abseil-cpp/tree/20220623.1)\nversion and includes an example that demonstrates the use of the previously built and installed\nAbseil library in KasperskyOS.\n\nThe Abseil library for KasperskyOS is an open source collection of C++ libraries designed to augment\nthe C++ standard library. For more information about the original abseil-cpp library, see its\n[README.md](https://github.com/abseil/abseil-cpp/blob/master/README.md) file or\n[Abseil website](https://abseil.io/).\n\nFor additional details on KasperskyOS, including its limitations and known issues, please refer to the\n[KasperskyOS Community Edition Online Help](https://click.kaspersky.com/?hl=en-us\u0026link=online_help\u0026pid=kos\u0026version=1.3\u0026customization=KCE\u0026helpid=community_edition).\n\n## Table of contents\n- [Abseil adaptation for KasperskyOS (C++ Common Libraries)](#abseil-adaptation-for-kasperskyos-c-common-libraries)\n  - [Table of contents](#table-of-contents)\n  - [Getting started](#getting-started)\n    - [Prerequisites](#prerequisites)\n    - [Building and installing](#building-and-installing)\n      - [Abseil library for KasperskyOS](#abseil-library-for-kasperskyos)\n      - [Tests](#tests)\n  - [Usage](#usage)\n    - [Example](#example)\n    - [Tests](#tests-1)\n  - [Trademarks](#trademarks)\n  - [Contributing](#contributing)\n  - [Licensing](#licensing)\n\n## Getting started\n\n### Prerequisites\n\n1. [Install](https://click.kaspersky.com/?hl=en-us\u0026link=online_help\u0026pid=kos\u0026version=1.3\u0026customization=KCE\u0026helpid=sdk_install_and_remove)\nKasperskyOS Community Edition SDK. You can download the latest version of the KasperskyOS Community\nEdition for free from [os.kaspersky.com](https://os.kaspersky.com/development/). The minimum required\nversion of KasperskyOS Community Edition SDK is 1.3. For more information, see\n[System requirements](https://click.kaspersky.com/?hl=en-us\u0026link=online_help\u0026pid=kos\u0026version=1.3\u0026customization=KCE\u0026helpid=system_requirements).\n1. Copy source files to your project directory. The example of KasperskyOS-based solution are located\nin the [`./kos`](kos) directory.\n\n### Building and installing\n#### Abseil library for KasperskyOS\n\nThe Abseil library for KasperskyOS is built using the CMake build system, which is provided in the\nKasperskyOS Community Edition SDK.\n\nTo build and install the Abseil library for KasperskyOS, execute the `cross-build.sh` script located\nin the `./kos` directory. There are environment variables that affect the build and installation\nof the library:\n\n* `SDK_PREFIX` specifies the path to the installed version of the KasperskyOS Community Edition SDK.\nThe value of this environment variable must be set.\n* `INSTALL_PREFIX` specifies the installation path of the library. If not specified, the library will\nbe installed in the `./kos/install` directory.\n* `TARGET` specifies the target platform. (Currently only the `aarch64-kos` platform is supported.)\n\nFor example, review the following command:\n```sh\n$ SDK_PREFIX=/opt/KasperskyOS-Community-Edition-\u003cversion\u003e INSTALL_PREFIX=/home/libs/Abseil-kos ./cross-build.sh\n```\nThe Abseil library is built and installed in the `/home/libs/Abseil-kos/` directory using the SDK\ntoolchain found in the `/opt/KasperskyOS-Community-Edition-\u003cversion\u003e` path, where `version` is the\nlatest version number of the KasperskyOS Community Edition SDK.\n\nYou can also use the following options:\n\n* `-h, --help`\n\n  Help text.\n* `-s, --sdk SDK_PREFIX`\n\n  Path to the installed version of the KasperskyOS Community Edition SDK. The value specified in the `-s`\noption takes precedence over the value of the `SDK_PREFIX` environment variable.\n* `-i, --install INSTALL_PREFIX`\n\n  Directory where Abseil for KasperskyOS binary files are installed. If not specified, the library\nwill be installed in the `./kos/install` directory. The value specified in the `-i` option takes\nprecedence over the value of the `INSTALL_PREFIX` environment variable.\n\nFor example:\n```sh\n$ ./cross-build.sh -s /opt/KasperskyOS-Community-Edition-\u003cversion\u003e -i /opt/libs\n```\n[⬆ Back to Top](#table-of-contents)\n\n#### Tests\n\nThe Abseil library's [tests](absl) have been adapted to run on KasperskyOS.\nThe tests have the following limitations:\n\n* Unit tests for KasperskyOS are currently available only for QEMU.\n* Death tests are not supported by KasperskyOS.\n* Tests such as `symbolize_test`, `demangle_test` and `stack_consumption_test` cannot be compiled\ndue to the absence of POSIX `sigaltstack()` implementation in KasperskyOS.\n* Some tests are skipped:\n  * Tests with excessive memory allocation.\n  * Tests converting `float` and `double` types to the `string` type and vice versa.\n  * `Uint128.ConversionTests` case for the `highest_precision_in_long_double` test, where the precision\nis not as high as expected.\n  * `Int128FloatConversionTest.ConstructAndCastTest` cases for large values.\n\nTests use an out-of-source build. The build tree is situated in the generated `build_tests`\nsubdirectory of the `./kos` directory. For each test suite, a separate image will be created.\nAs it can be taxing on disk space, the tests will run sequentially.\n\nThere are environment variables that affect the build and installation of the tests:\n\n* `SDK_PREFIX` specifies the path to the installed version of the KasperskyOS Community Edition SDK.\nThe value of this environment variable must be set.\n* `TARGET` specifies the target platform. (Currently only the `aarch64-kos` platform is supported.)\n\nTo build and run the tests, go to the `./kos` directory and run the command:\n\n`$ [TARGET=\"aarch64-kos\"] ./run-tests.sh [-s SDK_PREFIX] [--help] [--list] [-t TIMEOUT] [-n TEST_NAME_1] ... [-n TEST_NAME_N] [-t TIMEOUT] [-o OUT_PATH] [-j N_JOBS]`,\n\nwhere:\n\n* `-s, --sdk SDK_PREFIX`\n\n  Path to the installed version of the KasperskyOS Community Edition SDK. The value specified in the `-s`\noption takes precedence over the value of the `SDK_PREFIX` environment variable.\n* `-h, --help`\n\n  Help text.\n* `-l, --list`\n\n  List of tests that can be run.\n* `-n, --name TEST_NAME`\n\n  Test name to execute. The parameter can be repeated multiple times. If not specified, all tests\nwill be executed.\n* `-t, --timeout TIMEOUT`\n\n  Time, in seconds, allotted to start and execute a single test case. Default value is 300 seconds.\n* `-o, --out OUT_PATH`\n\n  Path where the results of the test run will be stored. If not specified, the results will be stored\nin the `./kos/build_tests/logs` directory.\n* `-j, --jobs N_JOBS`\n\n  Number of jobs for parallel build. If not specified, the default value obtained from the `nproc`\ncommand is used.\n\nFor example, to start executing all tests, use the following command:\n```\n$ SDK_PREFIX=/opt/KasperskyOS-Community-Edition-\u003cversion\u003e ./run-tests.sh\n```\n[⬆ Back to Top](#table-of-contents)\n\n## Usage\n\nWhen you develop a KasperskyOS-based solution, use the\n[recommended structure of project directories](https://click.kaspersky.com/?hl=en-us\u0026link=online_help\u0026pid=kos\u0026version=1.3\u0026customization=KCE\u0026helpid=cmake_using_sdk_cmake)\nto simplify usage of CMake scripts.\n\nTo include the Abseil library in a KasperskyOS-based solution, it is recommended to use a previously\nbuilt and installed Abseil library in KasperskyOS. The project's example demonstrates this methods.\n\n### Example\n\n[`./kos/example`](kos/example)—Example of using the previously installed Abseil library.\n\n### Tests\n\n[`./kos/run-tests.sh`](kos/run-tests.sh)—Script downloads the GoogleTest framework and then runs unit\ntests using that framework.\n\n## Trademarks\n\nRegistered trademarks and endpoint marks are the property of their respective owners.\n\nAIX, s3, POWER, POWER8, PowerPC are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide.\n\nAMD, AMD64 are trademarks or a registered trademarks of Advanced Micro Devices, Inc.\n\nAndroid, Closure, Google, GoogleTest are trademarks of Google LLC.\n\nApple, macOS, Mac OS, Xcode are trademarks of Apple Inc.\n\nArm is a registered trademark of Arm Limited (or its subsidiaries) in the US and/or elsewhere.\n\nCore, Intel, Itanium, XMM are trademarks of Intel Corporation or its subsidiaries.\n\nLinux is the registered trademark of Linus Torvalds in the U.S. and other countries.\n\nMicrosoft, Visual C++, Visual Studio, Win32, Windows are trademarks of the Microsoft group of companies.\n\nPython is a trademark or registered trademark of the Python Software Foundation.\n\nIOS is a registered trademark of Cisco Systems, Inc. and/or its affiliates in the United States and certain other countries.\n\nRaspberry Pi is a trademark of the Raspberry Pi Foundation.\n\n## Contributing\n\nOnly KasperskyOS-specific changes can be approved. See [CONTRIBUTING.md](CONTRIBUTING.md) for\ndetailed instructions on code contribution.\n\n## Licensing\n\nThis project is licensed under the terms of the Apache License. See [LICENSE](LICENSE) for\nmore information.\n\n[⬆ Back to Top](#table-of-contents)\n\n© 2025 AO Kaspersky Lab\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasperskylab%2Fabseil-cpp-kos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkasperskylab%2Fabseil-cpp-kos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasperskylab%2Fabseil-cpp-kos/lists"}