From 3a1d1e59b57fdc6f59708958e99b0d7c873e6910 Mon Sep 17 00:00:00 2001 From: Syping Date: Thu, 23 Oct 2025 01:16:47 +0200 Subject: [PATCH] libragephoto: move to 0.7.0 version and other changes - src/dotnet: move targets file to net47 only - src/dotnet: rename Syping.RagePhoto.Core to RagePhoto.Core - GitHub Actions: add Linux .NET build --- .github/workflows/dotnet.yml | 106 ++++++++ .github/workflows/windows-dotnet.yml | 81 ------ CMakeLists.txt | 2 +- src/dotnet/.editorconfig | 244 ------------------ ...hoto.Core.csproj => RagePhoto.Core.csproj} | 23 +- ....RagePhoto.Core.sln => RagePhoto.Core.sln} | 2 +- src/dotnet/RagePhoto.Core.targets | 21 ++ src/dotnet/RagePhoto.cs | 2 +- src/dotnet/RagePhotoException.cs | 2 +- src/dotnet/RagePhotoTypes.cs | 2 +- src/dotnet/Syping.RagePhoto.Core.targets | 17 -- 11 files changed, 142 insertions(+), 360 deletions(-) create mode 100644 .github/workflows/dotnet.yml delete mode 100644 .github/workflows/windows-dotnet.yml delete mode 100644 src/dotnet/.editorconfig rename src/dotnet/{Syping.RagePhoto.Core.csproj => RagePhoto.Core.csproj} (61%) rename src/dotnet/{Syping.RagePhoto.Core.sln => RagePhoto.Core.sln} (86%) create mode 100644 src/dotnet/RagePhoto.Core.targets delete mode 100644 src/dotnet/Syping.RagePhoto.Core.targets diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml new file mode 100644 index 0000000..c6043a9 --- /dev/null +++ b/.github/workflows/dotnet.yml @@ -0,0 +1,106 @@ +name: .NET +on: push + +jobs: + Linux Native: + runs-on: ubuntu-latest + container: + image: almalinux:8 + steps: + - name: Cloning + uses: actions/checkout@v4 + - name: Install packages + run: dnf install -y cmake gcc gcc-c++ + - name: Configure CMake + run: cmake -B "${{github.workspace}}/build" -DRAGEPHOTO_C_LIBRARY=ON -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + - name: Build + run: cmake --build "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} + - name: Install + run: cmake --install "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} --prefix "${{github.workspace}}/install/usr/local" + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: AlmaLinux amd64 + path: ${{github.workspace}}/install/ + Windows Native: + runs-on: windows-latest + env: + BUILD_TYPE: Release + strategy: + matrix: + arch: + - amd64 + - amd64_x86 + - amd64_arm64 + steps: + - name: Cloning + uses: actions/checkout@v4 + - name: Setup MSVC + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{matrix.arch}} + - name: Configure CMake + run: cmake -B "${{github.workspace}}/build" -DRAGEPHOTO_C_LIBRARY=ON -DRAGEPHOTO_UNICODE=wincvt -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -GNinja + - name: Build + run: cmake --build "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} + - name: Install + run: cmake --install "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} --prefix "${{github.workspace}}/install" + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: Windows MSVC ${{matrix.arch}} + path: ${{github.workspace}}/install/ + Release: + needs: [Linux Native, Windows Native] + runs-on: windows-latest + defaults: + run: + shell: pwsh + env: + BUILD_TYPE: Release + steps: + - name: Cloning + uses: actions/checkout@v4 + - name: Download Linux amd64 Assets + uses: actions/download-artifact@v4 + with: + name: AlmaLinux amd64 + path: assets/win-x64 + - name: Download Windows MSVC amd64 Assets + uses: actions/download-artifact@v4 + with: + name: Windows MSVC amd64 + path: assets/win-x64 + - name: Download Windows MSVC amd64_x86 Assets + uses: actions/download-artifact@v4 + with: + name: Windows MSVC amd64_x86 + path: assets/win-x86 + - name: Download Windows MSVC amd64_arm64 Assets + uses: actions/download-artifact@v4 + with: + name: Windows MSVC amd64_arm64 + path: assets/win-arm64 + - name: Copy Assets + run: | + mkdir -p "${{github.workspace}}\src\dotnet\runtimes\linux-x64\native" + mkdir -p "${{github.workspace}}\src\dotnet\runtimes\win-arm64\native" + mkdir -p "${{github.workspace}}\src\dotnet\runtimes\win-x64\native" + mkdir -p "${{github.workspace}}\src\dotnet\runtimes\win-x86\native" + cp "${{github.workspace}}\assets\linux-x64\lib64\libragephoto.so" "${{github.workspace}}\src\dotnet\runtimes\linux-x64\native\libragephoto.so" + cp "${{github.workspace}}\assets\win-arm64\bin\libragephoto.dll" "${{github.workspace}}\src\dotnet\runtimes\win-arm64\native\libragephoto.dll" + cp "${{github.workspace}}\assets\win-x64\bin\libragephoto.dll" "${{github.workspace}}\src\dotnet\runtimes\win-x64\native\libragephoto.dll" + cp "${{github.workspace}}\assets\win-x86\bin\libragephoto.dll" "${{github.workspace}}\src\dotnet\runtimes\win-x86\native\libragephoto.dll" + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v2 + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + - name: Build RagePhoto.Core + run: msbuild "${{github.workspace}}\src\dotnet\RagePhoto.Core.csproj" /t:restore /t:pack /p:Configuration=${{env.BUILD_TYPE}} + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: NuGet Package + path: ${{github.workspace}}\src\dotnet\bin\${{env.BUILD_TYPE}}\RagePhoto.Core.*.nupkg diff --git a/.github/workflows/windows-dotnet.yml b/.github/workflows/windows-dotnet.yml deleted file mode 100644 index bbd661f..0000000 --- a/.github/workflows/windows-dotnet.yml +++ /dev/null @@ -1,81 +0,0 @@ -name: Windows .NET -on: push - -jobs: - Native: - runs-on: windows-latest - env: - BUILD_TYPE: Release - strategy: - matrix: - arch: - - amd64 - - amd64_x86 - - amd64_arm64 - steps: - - name: Cloning - uses: actions/checkout@v4 - - name: Setup MSVC - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: ${{matrix.arch}} - - name: Configure CMake - run: cmake -B "${{github.workspace}}/build" -DRAGEPHOTO_C_LIBRARY=ON -DRAGEPHOTO_UNICODE=wincvt -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -GNinja - - name: Build - run: cmake --build "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} - - name: Install - run: cmake --install "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} --prefix "${{github.workspace}}/install" - - name: Upload - uses: actions/upload-artifact@v4 - with: - name: Windows MSVC ${{matrix.arch}} - path: | - ${{github.workspace}}/install/ - Release: - needs: Native - runs-on: windows-latest - defaults: - run: - shell: pwsh - env: - BUILD_TYPE: Release - steps: - - name: Cloning - uses: actions/checkout@v4 - - name: Download Windows MSVC amd64 Assets - uses: actions/download-artifact@v4 - with: - name: Windows MSVC amd64 - path: assets/amd64 - - name: Download Windows MSVC amd64_x86 Assets - uses: actions/download-artifact@v4 - with: - name: Windows MSVC amd64_x86 - path: assets/amd64_x86 - - name: Download Windows MSVC amd64_arm64 Assets - uses: actions/download-artifact@v4 - with: - name: Windows MSVC amd64_arm64 - path: assets/amd64_arm64 - - name: Copy Assets - run: | - mkdir -p "${{github.workspace}}\src\dotnet\runtimes\win-arm64\native" - mkdir -p "${{github.workspace}}\src\dotnet\runtimes\win-x64\native" - mkdir -p "${{github.workspace}}\src\dotnet\runtimes\win-x86\native" - cp "${{github.workspace}}\assets\amd64_arm64\bin\libragephoto.dll" "${{github.workspace}}\src\dotnet\runtimes\win-arm64\native\libragephoto.dll" - cp "${{github.workspace}}\assets\amd64\bin\libragephoto.dll" "${{github.workspace}}\src\dotnet\runtimes\win-x64\native\libragephoto.dll" - cp "${{github.workspace}}\assets\amd64_x86\bin\libragephoto.dll" "${{github.workspace}}\src\dotnet\runtimes\win-x86\native\libragephoto.dll" - - name: Setup MSBuild - uses: microsoft/setup-msbuild@v2 - - name: Setup .NET - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 8.0.x - - name: Build Syping.RagePhoto.Core - run: msbuild "${{github.workspace}}\src\dotnet\Syping.RagePhoto.Core.csproj" /t:restore /t:pack /p:Configuration=${{env.BUILD_TYPE}} - - name: Upload - uses: actions/upload-artifact@v4 - with: - name: NuGet Package - path: | - ${{github.workspace}}\src\dotnet\bin\${{env.BUILD_TYPE}}\Syping.RagePhoto.Core.*.nupkg diff --git a/CMakeLists.txt b/CMakeLists.txt index c801070..0eba43b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ cmake_minimum_required(VERSION 3.16) cmake_policy(VERSION 3.16...3.28) -project(ragephoto VERSION 0.6.2 LANGUAGES C CXX) +project(ragephoto VERSION 0.7.0 LANGUAGES C CXX) include(GNUInstallDirs) # RagePhoto CMake includes diff --git a/src/dotnet/.editorconfig b/src/dotnet/.editorconfig deleted file mode 100644 index d22e388..0000000 --- a/src/dotnet/.editorconfig +++ /dev/null @@ -1,244 +0,0 @@ -# Remove the line below if you want to inherit .editorconfig settings from higher directories -root = true - -# C# files -[*.cs] - -#### Core EditorConfig Options #### - -# Indentation and spacing -indent_size = 4 -indent_style = space -tab_width = 4 - -# New line preferences -end_of_line = crlf -insert_final_newline = false - -#### .NET Code Actions #### - -# Type members -dotnet_hide_advanced_members = false -dotnet_member_insertion_location = with_other_members_of_the_same_kind -dotnet_property_generation_behavior = prefer_throwing_properties - -# Symbol search -dotnet_search_reference_assemblies = true - -#### .NET Coding Conventions #### - -# Organize usings -dotnet_separate_import_directive_groups = false -dotnet_sort_system_directives_first = false -file_header_template = unset - -# this. and Me. preferences -dotnet_style_qualification_for_event = false -dotnet_style_qualification_for_field = false -dotnet_style_qualification_for_method = false -dotnet_style_qualification_for_property = false - -# Language keywords vs BCL types preferences -dotnet_style_predefined_type_for_locals_parameters_members = true -dotnet_style_predefined_type_for_member_access = true - -# Parentheses preferences -dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity -dotnet_style_parentheses_in_other_binary_operators = always_for_clarity -dotnet_style_parentheses_in_other_operators = never_if_unnecessary -dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity - -# Modifier preferences -dotnet_style_require_accessibility_modifiers = for_non_interface_members - -# Expression-level preferences -dotnet_prefer_system_hash_code = true -dotnet_style_coalesce_expression = true -dotnet_style_collection_initializer = true -dotnet_style_explicit_tuple_names = true -dotnet_style_namespace_match_folder = true -dotnet_style_null_propagation = true -dotnet_style_object_initializer = true -dotnet_style_operator_placement_when_wrapping = beginning_of_line -dotnet_style_prefer_auto_properties = true -dotnet_style_prefer_collection_expression = when_types_loosely_match -dotnet_style_prefer_compound_assignment = true -dotnet_style_prefer_conditional_expression_over_assignment = true -dotnet_style_prefer_conditional_expression_over_return = true -dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed -dotnet_style_prefer_inferred_anonymous_type_member_names = true -dotnet_style_prefer_inferred_tuple_names = true -dotnet_style_prefer_is_null_check_over_reference_equality_method = true -dotnet_style_prefer_simplified_boolean_expressions = true -dotnet_style_prefer_simplified_interpolation = true - -# Field preferences -dotnet_style_readonly_field = true - -# Parameter preferences -dotnet_code_quality_unused_parameters = all - -# Suppression preferences -dotnet_remove_unnecessary_suppression_exclusions = none - -# New line preferences -dotnet_style_allow_multiple_blank_lines_experimental = true -dotnet_style_allow_statement_immediately_after_block_experimental = true - -#### C# Coding Conventions #### - -# var preferences -csharp_style_var_elsewhere = false -csharp_style_var_for_built_in_types = false -csharp_style_var_when_type_is_apparent = false - -# Expression-bodied members -csharp_style_expression_bodied_accessors = true -csharp_style_expression_bodied_constructors = false -csharp_style_expression_bodied_indexers = true -csharp_style_expression_bodied_lambdas = true -csharp_style_expression_bodied_local_functions = false -csharp_style_expression_bodied_methods = false -csharp_style_expression_bodied_operators = false -csharp_style_expression_bodied_properties = true - -# Pattern matching preferences -csharp_style_pattern_matching_over_as_with_null_check = true -csharp_style_pattern_matching_over_is_with_cast_check = true -csharp_style_prefer_extended_property_pattern = true -csharp_style_prefer_not_pattern = true -csharp_style_prefer_pattern_matching = true -csharp_style_prefer_switch_expression = true - -# Null-checking preferences -csharp_style_conditional_delegate_call = true - -# Modifier preferences -csharp_prefer_static_anonymous_function = true -csharp_prefer_static_local_function = true -csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async -csharp_style_prefer_readonly_struct = true -csharp_style_prefer_readonly_struct_member = true - -# Code-block preferences -csharp_prefer_braces = true -csharp_prefer_simple_using_statement = true -csharp_prefer_system_threading_lock = true -csharp_style_namespace_declarations = block_scoped -csharp_style_prefer_method_group_conversion = true -csharp_style_prefer_primary_constructors = true -csharp_style_prefer_top_level_statements = true - -# Expression-level preferences -csharp_prefer_simple_default_expression = true -csharp_style_deconstructed_variable_declaration = true -csharp_style_implicit_object_creation_when_type_is_apparent = true -csharp_style_inlined_variable_declaration = true -csharp_style_prefer_index_operator = true -csharp_style_prefer_local_over_anonymous_function = true -csharp_style_prefer_null_check_over_type_check = true -csharp_style_prefer_range_operator = true -csharp_style_prefer_tuple_swap = true -csharp_style_prefer_utf8_string_literals = true -csharp_style_throw_expression = true -csharp_style_unused_value_assignment_preference = discard_variable -csharp_style_unused_value_expression_statement_preference = discard_variable - -# 'using' directive preferences -csharp_using_directive_placement = outside_namespace - -# New line preferences -csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true -csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true -csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true -csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true -csharp_style_allow_embedded_statements_on_same_line_experimental = true - -#### C# Formatting Rules #### - -# New line preferences -csharp_new_line_before_catch = true -csharp_new_line_before_else = true -csharp_new_line_before_finally = true -csharp_new_line_before_members_in_anonymous_types = true -csharp_new_line_before_members_in_object_initializers = true -csharp_new_line_before_open_brace = none -csharp_new_line_between_query_expression_clauses = true - -# Indentation preferences -csharp_indent_block_contents = true -csharp_indent_braces = false -csharp_indent_case_contents = true -csharp_indent_case_contents_when_block = false -csharp_indent_labels = flush_left -csharp_indent_switch_labels = true - -# Space preferences -csharp_space_after_cast = false -csharp_space_after_colon_in_inheritance_clause = true -csharp_space_after_comma = true -csharp_space_after_dot = false -csharp_space_after_keywords_in_control_flow_statements = true -csharp_space_after_semicolon_in_for_statement = true -csharp_space_around_binary_operators = before_and_after -csharp_space_around_declaration_statements = false -csharp_space_before_colon_in_inheritance_clause = true -csharp_space_before_comma = false -csharp_space_before_dot = false -csharp_space_before_open_square_brackets = false -csharp_space_before_semicolon_in_for_statement = false -csharp_space_between_empty_square_brackets = false -csharp_space_between_method_call_empty_parameter_list_parentheses = false -csharp_space_between_method_call_name_and_opening_parenthesis = false -csharp_space_between_method_call_parameter_list_parentheses = false -csharp_space_between_method_declaration_empty_parameter_list_parentheses = false -csharp_space_between_method_declaration_name_and_open_parenthesis = false -csharp_space_between_method_declaration_parameter_list_parentheses = false -csharp_space_between_parentheses = false -csharp_space_between_square_brackets = false - -# Wrapping preferences -csharp_preserve_single_line_blocks = true -csharp_preserve_single_line_statements = true - -#### Naming styles #### - -# Naming rules - -dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion -dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface -dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i - -dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion -dotnet_naming_rule.types_should_be_pascal_case.symbols = types -dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case - -dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion -dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members -dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case - -# Symbol specifications - -dotnet_naming_symbols.interface.applicable_kinds = interface -dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.interface.required_modifiers = - -dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum -dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.types.required_modifiers = - -dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method -dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.non_field_members.required_modifiers = - -# Naming styles - -dotnet_naming_style.pascal_case.required_prefix = -dotnet_naming_style.pascal_case.required_suffix = -dotnet_naming_style.pascal_case.word_separator = -dotnet_naming_style.pascal_case.capitalization = pascal_case - -dotnet_naming_style.begins_with_i.required_prefix = I -dotnet_naming_style.begins_with_i.required_suffix = -dotnet_naming_style.begins_with_i.word_separator = -dotnet_naming_style.begins_with_i.capitalization = pascal_case diff --git a/src/dotnet/Syping.RagePhoto.Core.csproj b/src/dotnet/RagePhoto.Core.csproj similarity index 61% rename from src/dotnet/Syping.RagePhoto.Core.csproj rename to src/dotnet/RagePhoto.Core.csproj index 5af116d..4c429ee 100644 --- a/src/dotnet/Syping.RagePhoto.Core.csproj +++ b/src/dotnet/RagePhoto.Core.csproj @@ -2,11 +2,11 @@ netstandard2.1;net47 - Syping.RagePhoto.Core - Syping.RagePhoto - 0.6.2 - 0.6.2 - 0.6.2 + RagePhoto.Core + RagePhoto + 0.7.0 + 0.7.0 + 0.7.0 Syping Copyright © 2025 Syping Open Source RAGE Photo Parser for GTA V and RDR 2 @@ -20,17 +20,14 @@ - - - - + PreserveNewest - - - - + + PreserveNewest + + PreserveNewest diff --git a/src/dotnet/Syping.RagePhoto.Core.sln b/src/dotnet/RagePhoto.Core.sln similarity index 86% rename from src/dotnet/Syping.RagePhoto.Core.sln rename to src/dotnet/RagePhoto.Core.sln index d6a5a1a..af4b776 100644 --- a/src/dotnet/Syping.RagePhoto.Core.sln +++ b/src/dotnet/RagePhoto.Core.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.13.35919.96 d17.13 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Syping.RagePhoto.Core", "Syping.RagePhoto.Core.csproj", "{00E62D4F-74D6-4167-ABB1-852FFEB65C84}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RagePhoto.Core", "RagePhoto.Core.csproj", "{00E62D4F-74D6-4167-ABB1-852FFEB65C84}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/dotnet/RagePhoto.Core.targets b/src/dotnet/RagePhoto.Core.targets new file mode 100644 index 0000000..9e84d18 --- /dev/null +++ b/src/dotnet/RagePhoto.Core.targets @@ -0,0 +1,21 @@ + + + + + PreserveNewest + false + + + + + PreserveNewest + false + + + + + PreserveNewest + false + + + diff --git a/src/dotnet/RagePhoto.cs b/src/dotnet/RagePhoto.cs index 2df7b22..d70f26e 100644 --- a/src/dotnet/RagePhoto.cs +++ b/src/dotnet/RagePhoto.cs @@ -2,7 +2,7 @@ using System.Runtime.InteropServices; using System.Text; -namespace Syping.RagePhoto { +namespace RagePhoto { public class Photo : IDisposable { diff --git a/src/dotnet/RagePhotoException.cs b/src/dotnet/RagePhotoException.cs index 90f13f4..4f8fdf6 100644 --- a/src/dotnet/RagePhotoException.cs +++ b/src/dotnet/RagePhotoException.cs @@ -1,6 +1,6 @@ using System; -namespace Syping.RagePhoto { +namespace RagePhoto { public class RagePhotoException : Exception { diff --git a/src/dotnet/RagePhotoTypes.cs b/src/dotnet/RagePhotoTypes.cs index 2a94091..036a3be 100644 --- a/src/dotnet/RagePhotoTypes.cs +++ b/src/dotnet/RagePhotoTypes.cs @@ -1,6 +1,6 @@ using System; -namespace Syping.RagePhoto { +namespace RagePhoto { public enum DefaultSize : UInt32 { DEFAULT_GTA5_PHOTOBUFFER = 524288U, diff --git a/src/dotnet/Syping.RagePhoto.Core.targets b/src/dotnet/Syping.RagePhoto.Core.targets deleted file mode 100644 index 1f80551..0000000 --- a/src/dotnet/Syping.RagePhoto.Core.targets +++ /dev/null @@ -1,17 +0,0 @@ - - - - PreserveNewest - - - - - PreserveNewest - - - - - PreserveNewest - - -