Skip to content

Commit

Permalink
added bit7z
Browse files Browse the repository at this point in the history
  • Loading branch information
gbook committed May 15, 2024
1 parent 710f8c3 commit df33c65
Show file tree
Hide file tree
Showing 160 changed files with 21,610 additions and 0 deletions.
7 changes: 7 additions & 0 deletions bit7z/.github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# These are supported funding model platforms

github: rikyoz
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: rikyoz
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
182 changes: 182 additions & 0 deletions bit7z/.github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
name: Bug Report
description: Create a bug report to help us improve bit7z
title: "[Bug]: "
labels: [🐞 bug]
assignees:
- rikyoz
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: dropdown
id: version
attributes:
label: bit7z version
multiple: true
options:
- 4.0.x
- 3.2.x
- 3.1.x
- 3.0.x
- 2.1
- 2.0
validations:
required: true
- type: dropdown
id: compilation_options
attributes:
label: Compilation options
multiple: true
options:
- BIT7Z_7ZIP_VERSION
- BIT7Z_ANALYZE_CODE
- BIT7Z_AUTO_FORMAT
- BIT7Z_AUTO_PREFIX_LONG_PATHS
- BIT7Z_BUILD_TESTS
- BIT7Z_BUILD_DOCS
- BIT7Z_CUSTOM_7ZIP_PATH
- BIT7Z_DISABLE_ZIP_ASCII_PWD_CHECK
- BIT7Z_GENERATE_PIC
- BIT7Z_LINK_LIBCPP
- BIT7Z_PATH_SANITIZATION
- BIT7Z_REGEX_MATCHING
- BIT7Z_STATIC_RUNTIME
- BIT7Z_TESTS_FILESYSTEM
- BIT7Z_TESTS_NO_SANITIZERS
- BIT7Z_TESTS_USE_SYSTEM_7ZIP
- BIT7Z_USE_LEGACY_IUNKNOWN
- BIT7Z_USE_NATIVE_STRING
- BIT7Z_USE_STD_BYTE
- BIT7Z_USE_SYSTEM_CODEPAGE
- BIT7Z_VS_LIBNAME_OUTDIR_STYLE
validations:
required: false
- type: dropdown
id: sevenzip
attributes:
label: 7-zip version
multiple: true
options:
- v23.01
- v22.01
- v22.00
- v21.07
- v21.06
- v19.00
- v18.06
- v18.05
- v18.01
- v16.04
- v16.03
- v16.02
validations:
required: true
- type: dropdown
id: sevenzip_shared_lib
attributes:
label: 7-zip shared library used
multiple: true
options:
- 7z.dll / 7z.so
- 7za.dll / 7za.so
- 7zra.dll / 7zra.so
- 7zxa.dll / 7zxa.so
- 7zxr.dll / 7zxr.so
validations:
required: true
- type: dropdown
id: compiler
attributes:
label: Compilers
multiple: true
options:
- MSVC
- MinGW
- GCC
- Clang
validations:
required: true
- type: input
id: compiler_version
attributes:
label: Compiler versions
description: What compiler versions are you using?
placeholder: ex. GCC 7, MSVC 2022, Clang 12, ...
validations:
required: false
- type: dropdown
id: architecture
attributes:
label: Architecture
multiple: true
options:
- x86_64
- x86
- arm
- arm64
validations:
required: true
- type: dropdown
id: operating_system
attributes:
label: Operating system
multiple: true
options:
- Windows
- Linux
- macOS
- Android
validations:
required: true
- type: input
id: os_version
attributes:
label: Operating system versions
description: Which operating system versions are you targeting?
placeholder: ex. Windows 11, Ubuntu 22.04, macOS Monterey, ...
validations:
required: false
- type: textarea
id: description
attributes:
label: Bug description
description: A clear and concise description of what the bug is.
placeholder: Describe the bug...
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: Steps to reproduce the behavior
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: false
- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
placeholder: Describe the expected behavior
validations:
required: false
- type: textarea
id: logs
attributes:
label: Relevant compilation output
description: Please copy and paste any relevant log output of the compilation.
render: shell
validations:
required: false
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
options:
- label: By submitting this issue, I agree to follow bit7z's [Code of Conduct](https://github.com/rikyoz/bit7z/blob/master/CODE_OF_CONDUCT.md)
required: true
1 change: 1 addition & 0 deletions bit7z/.github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: true
28 changes: 28 additions & 0 deletions bit7z/.github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Feature Request
description: Suggest an idea for this project
title: "[Feature Request]: "
labels: [✔️ enhancement]
assignees:
- rikyoz
body:
- type: textarea
id: description
attributes:
label: Feature description
description: A clear and detailed description of the functionality you want to be implemented in bit7z.
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional context
description: Add any other context, such as a possible API and/or code examples for the new feature to be implemented.
validations:
required: false
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
options:
- label: By submitting this issue, I agree to follow bit7z's [Code of Conduct](https://github.com/rikyoz/bit7z/blob/master/CODE_OF_CONDUCT.md)
required: true
27 changes: 27 additions & 0 deletions bit7z/.github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->

## Motivation and Context
<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->

## How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->

## Types of changes
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)

## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My code follows the code style of this project.
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
<!-- TODO: - [ ] I have read the **CONTRIBUTING** document. -->
138 changes: 138 additions & 0 deletions bit7z/.github/workflows/ctest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: Test bit7z on multiple configurations
on: [pull_request, push]

jobs:
build:
runs-on: ${{ matrix.os }}
if: |
github.event_name == 'pull_request'
|| contains(github.event.head_commit.message, '[test]')
|| startsWith(github.ref, 'refs/tags/v')
strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false

matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
build_type: [Debug, Release]
c_compiler: [gcc, clang, cl]
bit7z_auto_format: [OFF, ON]
bit7z_regex_matching: [OFF, ON]
bit7z_link_libcpp: [OFF, ON]
bit7z_use_native_string: [OFF, ON]
bit7z_auto_prefix_long_paths: [OFF, ON]
bit7z_use_system_codepage: [OFF, ON]
bit7z_path_sanitization: [OFF, ON]
include:
- os: windows-latest
c_compiler: cl
cpp_compiler: cl
use_system_7zip: ON
- os: ubuntu-latest
c_compiler: gcc
cpp_compiler: g++
use_system_7zip: OFF
- os: ubuntu-latest
c_compiler: clang
cpp_compiler: clang++
use_system_7zip: OFF
- os: macos-latest
c_compiler: clang
cpp_compiler: clang++
use_system_7zip: OFF
exclude:
- os: windows-latest
c_compiler: gcc
- os: windows-latest
c_compiler: clang
- os: windows-latest
bit7z_link_libcpp: ON
- os: ubuntu-latest
c_compiler: cl
- os: ubuntu-latest
c_compiler: gcc
bit7z_link_libcpp: ON
- os: ubuntu-latest
bit7z_use_native_string: ON
- os: ubuntu-latest
bit7z_auto_prefix_long_paths: ON
- os: ubuntu-latest
bit7z_use_system_codepage: ON
- os: ubuntu-latest
bit7z_path_sanitization: ON
- os: macos-latest
c_compiler: cl
- os: macos-latest
c_compiler: gcc
- os: macos-latest
bit7z_use_native_string: ON
- os: macos-latest
bit7z_auto_prefix_long_paths: ON
- os: macos-latest
bit7z_use_system_codepage: ON
- os: macos-latest
bit7z_path_sanitization: ON

steps:
- uses: actions/checkout@v3

- name: Set reusable strings
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
id: strings
shell: bash
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DBIT7Z_BUILD_TESTS=ON
-DBIT7Z_ENABLE_SANITIZERS=ON
-DBIT7Z_TESTS_USE_SYSTEM_7ZIP=${{ matrix.use_system_7zip }}
-DBIT7Z_AUTO_FORMAT=${{ matrix.bit7z_auto_format }}
-DBIT7Z_REGEX_MATCHING=${{ matrix.bit7z_regex_matching }}
-DBIT7Z_USE_NATIVE_STRING=${{ matrix.bit7z_use_native_string }}
-DBIT7Z_LINK_LIBCPP=${{ matrix.bit7z_link_libcpp }}
-DBIT7Z_AUTO_PREFIX_LONG_PATHS=${{ matrix.bit7z_auto_prefix_long_paths }}
-DBIT7Z_USE_SYSTEM_CODEPAGE=${{ matrix.bit7z_use_system_codepage }}
-DBIT7Z_PATH_SANITIZATION=${{ matrix.bit7z_path_sanitization }}
-S ${{ github.workspace }}
- name: Build bit7z
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} --parallel

- name: Build 7z.so for tests (Ubuntu)
shell: bash
if: matrix.os == 'ubuntu-latest'
run: |
git clone --depth 1 https://github.com/rikyoz/7-Zip ${{ github.workspace }}/../7-zip
cd ${{ github.workspace }}/../7-zip/CPP/7zip/Bundles/Format7zF/
make -j -f ../../cmpl_gcc.mak
cp b/g/7z.so ${{ github.workspace }}/bin/x64/7z.so
- name: Build 7z.so for tests (macOS)
shell: bash
if: matrix.os == 'macos-latest'
run: |
git clone --depth 1 https://github.com/rikyoz/7-Zip ${{ github.workspace }}/../7-zip
cd ${{ github.workspace }}/../7-zip/CPP/7zip/Bundles/Format7zF/
make -j -f ../../cmpl_mac_x64.mak
cp b/m_x64/7z.so ${{ github.workspace }}/bin/x64/7z.so
- name: Test bit7z
working-directory: ${{ steps.strings.outputs.build-output-dir }}
# Disabling alloc_dealloc_mismatch for address sanitizer until https://github.com/llvm/llvm-project/issues/52771 is fixed
env:
ASAN_OPTIONS: alloc_dealloc_mismatch=0
# Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --build-target bit7z-tests --build-config ${{ matrix.build_type }} --output-on-failure
Loading

0 comments on commit df33c65

Please sign in to comment.