Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,5 +77,5 @@ Target framework is **net10.0** with `InvariantGlobalization=true` and nullable
## CI/CD

- **Build & Test** (`.github/workflows/build-test.yml`): Runs on push/PR to `master` — restore → build → test on `ubuntu-latest` with a .NET SDK matching the csproj target framework (read `dotnet-version` from the workflow; do not assume a fixed number).
- **Publish** (`.github/workflows/publish.yml`): Triggered by `v*` tags. Publishes self-contained binaries for `win-x64`, `win-arm64`, `linux-x64`, `linux-arm64`, `osx-x64` via `.pubxml` profiles (in `Obj2Tiles/Properties/PublishProfiles/`), zips them, and creates a GitHub Release.
- **Publish** (`.github/workflows/publish.yml`): Triggered by `v*` tags. Publishes self-contained binaries for `win-x64`, `win-arm64`, `linux-x64`, `linux-arm64`, `osx-x64`, `osx-arm64` via `.pubxml` profiles (in `Obj2Tiles/Properties/PublishProfiles/`), zips them, and creates a GitHub Release.
- **Container image** (`.github/workflows/image.yml`): builds/pushes the `ghcr.io/opendronemap/obj2tiles` image (QEMU multi-arch).
7 changes: 6 additions & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ jobs:
run: dotnet publish -p:PublishProfile=linux-arm64.pubxml Obj2Tiles
- name: Publish osx-x64
run: dotnet publish -p:PublishProfile=osx-x64.pubxml Obj2Tiles
- name: Publish osx-arm64
run: dotnet publish -p:PublishProfile=osx-arm64.pubxml Obj2Tiles

- name: Zip win-x64
run: cd Obj2Tiles/bin/Release/net10.0/publish/win-x64/ && zip -r ../../../../../../Obj2Tiles-Win64.zip *
Expand All @@ -41,6 +43,8 @@ jobs:
run: cd Obj2Tiles/bin/Release/net10.0/publish/linux-arm64/ && zip -r ../../../../../../Obj2Tiles-LinuxArm64.zip *
- name: Zip osx-x64
run: cd Obj2Tiles/bin/Release/net10.0/publish/osx-x64/ && zip -r ../../../../../../Obj2Tiles-Osx64.zip *
- name: Zip osx-arm64
run: cd Obj2Tiles/bin/Release/net10.0/publish/osx-arm64/ && zip -r ../../../../../../Obj2Tiles-OsxArm64.zip *

- name: Release
uses: softprops/action-gh-release@v1
Expand All @@ -53,4 +57,5 @@ jobs:
Obj2Tiles-WinArm64.zip
Obj2Tiles-Linux64.zip
Obj2Tiles-LinuxArm64.zip
Obj2Tiles-Osx64.zip
Obj2Tiles-Osx64.zip
Obj2Tiles-OsxArm64.zip
1 change: 1 addition & 0 deletions Obj2Tiles/Obj2Tiles.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
linux-x64 libktx.so <- KTX-Software-4.4.2-Linux-x86_64.tar.bz2 (lib/libktx.so.4.4.2)
linux-arm64 libktx.so <- KTX-Software-4.4.2-Linux-arm64.tar.bz2 (lib/libktx.so.4.4.2)
osx-x64 libktx.dylib<- KTX-Software-4.4.2-Darwin-x86_64.pkg (lib/libktx.4.4.2.dylib)
osx-arm64 libktx.dylib<- KTX-Software-4.4.2-Darwin-arm64.pkg (lib/libktx.4.4.2.dylib)

To refresh these libraries (download + verify + extract for all RIDs), run:
pwsh native/update-libktx.ps1 (use -Version to bump; -? for help)
Expand Down
20 changes: 20 additions & 0 deletions Obj2Tiles/Properties/PublishProfiles/osx-arm64.pubxml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>bin\Release\net10.0\publish\osx-arm64\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<TargetFramework>net10.0</TargetFramework>
<RuntimeIdentifier>osx-arm64</RuntimeIdentifier>
<SelfContained>true</SelfContained>
<PublishSingleFile>True</PublishSingleFile>
<PublishTrimmed>True</PublishTrimmed>
<TrimMode>partial</TrimMode>
<TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
<DebuggerSupport>false</DebuggerSupport>
</PropertyGroup>
</Project>
Binary file added Obj2Tiles/native/osx-arm64/libktx.dylib
Binary file not shown.
8 changes: 5 additions & 3 deletions Obj2Tiles/native/update-libktx.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
linux-x64 libktx.so <- KTX-Software-<v>-Linux-x86_64.tar.bz2 (lib/libktx.so.<v>)
linux-arm64 libktx.so <- KTX-Software-<v>-Linux-arm64.tar.bz2 (lib/libktx.so.<v>)
osx-x64 libktx.dylib <- KTX-Software-<v>-Darwin-x86_64.pkg (lib/libktx.<v>.dylib)
osx-arm64 libktx.dylib <- KTX-Software-<v>-Darwin-arm64.pkg (lib/libktx.<v>.dylib)

Tooling:
* tar - unpacks the Linux .tar.bz2 tarballs (and, where libarchive has xar
Expand All @@ -35,7 +36,7 @@
KTX-Software release version to vendor. Default: 4.4.2.

.PARAMETER Rid
One or more runtime identifiers to refresh. Default: all five supported RIDs.
One or more runtime identifiers to refresh. Default: all six supported RIDs.

.PARAMETER SkipChecksum
Skip SHA-256 verification of the downloaded assets (not recommended).
Expand All @@ -52,8 +53,8 @@
param(
[string]$Version = '4.4.2',

[ValidateSet('win-x64', 'win-arm64', 'linux-x64', 'linux-arm64', 'osx-x64')]
[string[]]$Rid = @('win-x64', 'win-arm64', 'linux-x64', 'linux-arm64', 'osx-x64'),
[ValidateSet('win-x64', 'win-arm64', 'linux-x64', 'linux-arm64', 'osx-x64', 'osx-arm64')]
[string[]]$Rid = @('win-x64', 'win-arm64', 'linux-x64', 'linux-arm64', 'osx-x64', 'osx-arm64'),

[switch]$SkipChecksum
)
Expand All @@ -73,6 +74,7 @@ $Targets = [ordered]@{
'linux-x64' = @{ Asset = "KTX-Software-$Version-Linux-x86_64.tar.bz2"; Find = "libktx.so.$Version"; Out = 'libktx.so' }
'linux-arm64' = @{ Asset = "KTX-Software-$Version-Linux-arm64.tar.bz2"; Find = "libktx.so.$Version"; Out = 'libktx.so' }
'osx-x64' = @{ Asset = "KTX-Software-$Version-Darwin-x86_64.pkg"; Find = "libktx.$Version.dylib"; Out = 'libktx.dylib' }
'osx-arm64' = @{ Asset = "KTX-Software-$Version-Darwin-arm64.pkg"; Find = "libktx.$Version.dylib"; Out = 'libktx.dylib' }
}

function Get-SevenZip {
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@ Encoding runs **in-process** via the KTX-Software C library (libktx v4.4.2, Apac
| Linux x64 | `libktx.so` | 3.25 MB |
| Linux ARM64 | `libktx.so` | 2.91 MB |
| macOS x64 | `libktx.dylib` | 2.67 MB |
| macOS ARM64 (Apple Silicon) | `libktx.dylib` | 2.38 MB |

For `dotnet build` without a RID (development builds), the library is resolved in order from: `--ktx-path` / `OBJ2TILES_KTX` environment variable, the executable directory, and finally the system `PATH`.

Expand All @@ -269,14 +270,14 @@ For `dotnet build` without a RID (development builds), the library is resolved i
To refresh the vendored libraries to a new KTX-Software release, run the PowerShell script bundled in the repository:

```powershell
# Refresh all 5 platforms to the default version
# Refresh all 6 platforms to the default version
pwsh Obj2Tiles/native/update-libktx.ps1

# Bump to a new version
pwsh Obj2Tiles/native/update-libktx.ps1 -Version 4.5.0

# Refresh only Linux and macOS (no 7-Zip required)
pwsh Obj2Tiles/native/update-libktx.ps1 -Rid linux-x64,linux-arm64,osx-x64
pwsh Obj2Tiles/native/update-libktx.ps1 -Rid linux-x64,linux-arm64,osx-x64,osx-arm64

# Skip checksum verification
pwsh Obj2Tiles/native/update-libktx.ps1 -SkipChecksum
Expand Down
Loading