Compare commits
1 Commits
yannikblos
...
hb0nd-url-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
34e9b17c33 |
@@ -1,61 +1,48 @@
|
|||||||
# Configuration file for clang-format, based on docs/CPP_STYLE.md.
|
# Configuration file for clang-format, based on docs/CPP_STYLE.md.
|
||||||
|
|
||||||
|
---
|
||||||
BasedOnStyle: Google
|
BasedOnStyle: Google
|
||||||
|
|
||||||
AccessModifierOffset: -2
|
AccessModifierOffset: -2
|
||||||
AlignAfterOpenBracket: Align
|
|
||||||
AlignConsecutiveMacros: AcrossEmptyLinesAndComments
|
|
||||||
AlignEscapedNewlines: LeftWithLastLine
|
|
||||||
AlignOperands: AlignAfterOperator
|
AlignOperands: AlignAfterOperator
|
||||||
AllowShortBlocksOnASingleLine: Empty
|
AllowShortBlocksOnASingleLine: Empty
|
||||||
AllowShortCaseLabelsOnASingleLine: true
|
|
||||||
AllowShortFunctionsOnASingleLine: Inline
|
|
||||||
AllowShortIfStatementsOnASingleLine: Never
|
AllowShortIfStatementsOnASingleLine: Never
|
||||||
AllowShortLoopsOnASingleLine: false
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AllowShortCaseLabelsOnASingleLine: true
|
||||||
BraceWrapping:
|
BraceWrapping:
|
||||||
AfterCaseLabel: true
|
AfterCaseLabel: true
|
||||||
AfterClass: true
|
AfterClass: true
|
||||||
AfterControlStatement: Always
|
AfterControlStatement: Always
|
||||||
AfterEnum: true
|
AfterEnum: true
|
||||||
AfterExternBlock: true
|
|
||||||
AfterFunction: true
|
AfterFunction: true
|
||||||
AfterNamespace: true
|
AfterNamespace: true
|
||||||
AfterObjCDeclaration: true
|
AfterObjCDeclaration: true
|
||||||
AfterStruct: true
|
AfterStruct: true
|
||||||
AfterUnion: true
|
AfterUnion: true
|
||||||
|
AfterExternBlock: true
|
||||||
BeforeCatch: true
|
BeforeCatch: true
|
||||||
BeforeElse: true
|
BeforeElse: true
|
||||||
BeforeLambdaBody: true
|
BeforeLambdaBody: true
|
||||||
BeforeWhile: true
|
BeforeWhile: true
|
||||||
|
IndentBraces: false
|
||||||
SplitEmptyFunction: false
|
SplitEmptyFunction: false
|
||||||
SplitEmptyNamespace: false
|
|
||||||
SplitEmptyRecord: false
|
SplitEmptyRecord: false
|
||||||
BinPackArguments: true
|
SplitEmptyNamespace: false
|
||||||
BinPackParameters: true
|
|
||||||
BreakAfterJavaFieldAnnotations: true
|
|
||||||
BreakBeforeBraces: Custom
|
BreakBeforeBraces: Custom
|
||||||
BreakConstructorInitializers: BeforeComma
|
BreakConstructorInitializers: BeforeComma
|
||||||
BreakInheritanceList: BeforeComma
|
BreakInheritanceList: BeforeComma
|
||||||
ColumnLimit: 120
|
ColumnLimit: 120
|
||||||
ConstructorInitializerIndentWidth: 2
|
ConstructorInitializerIndentWidth: 2
|
||||||
ContinuationIndentWidth: 4
|
ContinuationIndentWidth: 2
|
||||||
DerivePointerAlignment: false
|
DerivePointerAlignment: false
|
||||||
EmptyLineBeforeAccessModifier: Always
|
|
||||||
IncludeBlocks: Preserve
|
IncludeBlocks: Preserve
|
||||||
IndentAccessModifiers: false
|
|
||||||
IndentCaseLabels: false
|
IndentCaseLabels: false
|
||||||
IndentExternBlock: NoIndent
|
IndentExternBlock: NoIndent
|
||||||
InsertBraces: false
|
|
||||||
InsertNewlineAtEOF: true
|
InsertNewlineAtEOF: true
|
||||||
LambdaBodyIndentation: OuterScope
|
PackConstructorInitializers: Never
|
||||||
PackConstructorInitializers: CurrentLine
|
|
||||||
PointerAlignment: Middle
|
PointerAlignment: Middle
|
||||||
RemoveBracesLLVM: true
|
|
||||||
RemoveSemicolon: true
|
|
||||||
QualifierAlignment: Right
|
QualifierAlignment: Right
|
||||||
SpacesInContainerLiterals: false
|
SpacesInContainerLiterals: false
|
||||||
Standard: Latest
|
Standard: Latest
|
||||||
TabWidth: 2
|
TabWidth: 2
|
||||||
|
UseTab: Never
|
||||||
---
|
|
||||||
Language: Java
|
|
||||||
AllowShortFunctionsOnASingleLine: Empty
|
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
# Files that should not be formatted.
|
|
||||||
./3party
|
|
||||||
# A patched copy of the https://registry.khronos.org/OpenGL/api/GLES3/gl3.h
|
|
||||||
./android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/gl3stub.h
|
|
||||||
# Formatting it leads to crashes in runtime. Newer protobuf may fix it.
|
|
||||||
./libs/indexer/drules_struct.pb.cc
|
|
||||||
# No need to format this 3party tool.
|
|
||||||
tools/osmctools/*.c
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
name: 🐞 Bug Report
|
name: 🐞 Bug Report
|
||||||
description: Report a problem you've encountered
|
description: Report a problem you've encountered
|
||||||
|
title: "bug: "
|
||||||
labels:
|
labels:
|
||||||
- bug
|
- bug
|
||||||
body:
|
body:
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
name: "💡 Feature Request"
|
name: "💡 Feature Request"
|
||||||
description: "Suggest an idea or improvement for CoMaps"
|
description: "Suggest an idea or improvement for CoMaps"
|
||||||
|
title: "feat: "
|
||||||
labels:
|
labels:
|
||||||
- "enhancement"
|
- "enhancement"
|
||||||
body:
|
body:
|
||||||
|
|||||||
@@ -32,6 +32,9 @@ on:
|
|||||||
- track_generator/**
|
- track_generator/**
|
||||||
- xcode/**
|
- xcode/**
|
||||||
|
|
||||||
|
env:
|
||||||
|
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
android-google-beta:
|
android-google-beta:
|
||||||
name: Android Google Beta
|
name: Android Google Beta
|
||||||
@@ -68,6 +71,10 @@ jobs:
|
|||||||
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
||||||
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
||||||
|
|
||||||
|
- name: Configure repository
|
||||||
|
shell: bash
|
||||||
|
run: ./configure.sh
|
||||||
|
|
||||||
- name: Compile
|
- name: Compile
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: android
|
working-directory: android
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
name: Android Check Store Metadata
|
name: Android Check Metadata
|
||||||
on:
|
on:
|
||||||
workflow_dispatch: # Manual trigger
|
workflow_dispatch: # Manual trigger
|
||||||
pull_request:
|
pull_request:
|
||||||
@@ -21,8 +21,5 @@ jobs:
|
|||||||
android
|
android
|
||||||
tools/python/check_store_metadata.py
|
tools/python/check_store_metadata.py
|
||||||
|
|
||||||
- name: Check Google Play metadata
|
- name: Check metadata
|
||||||
run: ./tools/python/check_store_metadata.py gplay
|
run: ./tools/python/check_store_metadata.py android
|
||||||
|
|
||||||
- name: Check F-Droid metadata
|
|
||||||
run: ./tools/python/check_store_metadata.py fdroid
|
|
||||||
|
|||||||
@@ -34,6 +34,9 @@ on:
|
|||||||
- track_generator/**
|
- track_generator/**
|
||||||
- xcode/**
|
- xcode/**
|
||||||
|
|
||||||
|
env:
|
||||||
|
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
name: Android Lint
|
name: Android Lint
|
||||||
@@ -48,6 +51,10 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
|
- name: Configure repository
|
||||||
|
shell: bash
|
||||||
|
run: ./configure.sh
|
||||||
|
|
||||||
- name: Lint
|
- name: Lint
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: android
|
working-directory: android
|
||||||
@@ -86,6 +93,10 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
|
- name: Configure repository
|
||||||
|
shell: bash
|
||||||
|
run: ./configure.sh
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: '0 5 * * 0' # Once per week at 05:00 UTC
|
- cron: '0 5 * * 0' # Once per week at 05:00 UTC
|
||||||
|
|
||||||
|
env:
|
||||||
|
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
precondition:
|
precondition:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -70,6 +73,10 @@ jobs:
|
|||||||
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
||||||
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
||||||
|
|
||||||
|
- name: Configure repository
|
||||||
|
shell: bash
|
||||||
|
run: ./configure.sh
|
||||||
|
|
||||||
- name: Compile
|
- name: Compile
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: android
|
working-directory: android
|
||||||
|
|||||||
@@ -2,25 +2,30 @@ name: Android Release Metadata
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch: # Manual trigger
|
workflow_dispatch: # Manual trigger
|
||||||
|
|
||||||
|
env:
|
||||||
|
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
android-release-metadata:
|
android-release-metadata:
|
||||||
name: Upload Google Play metadata
|
name: Upload Google Play metadata
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
environment: production
|
environment: production
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout sources
|
||||||
|
# TODO: use shallow (and sparse?) checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
# - name: Parallel submodules checkout
|
||||||
sparse-checkout: |
|
# shell: bash
|
||||||
android
|
# run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
tools/python/check_store_metadata.py
|
|
||||||
|
|
||||||
- name: Restore release keys
|
- name: Restore release keys
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
echo "$PRIVATE_H" | base64 -d > private.h
|
||||||
echo "$GOOGLE_PLAY_JSON" | base64 -d > android/app/google-play.json
|
echo "$GOOGLE_PLAY_JSON" | base64 -d > android/app/google-play.json
|
||||||
env:
|
env:
|
||||||
|
PRIVATE_H: ${{ secrets.PRIVATE_H }}
|
||||||
GOOGLE_PLAY_JSON: ${{ secrets.GOOGLE_PLAY_JSON }}
|
GOOGLE_PLAY_JSON: ${{ secrets.GOOGLE_PLAY_JSON }}
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ on:
|
|||||||
env:
|
env:
|
||||||
RELEASE_NOTES: android/app/src/google/play/release-notes/en-US/default.txt
|
RELEASE_NOTES: android/app/src/google/play/release-notes/en-US/default.txt
|
||||||
FDROID_VERSION: android/app/src/fdroid/play/version.yaml
|
FDROID_VERSION: android/app/src/fdroid/play/version.yaml
|
||||||
|
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
tag:
|
tag:
|
||||||
@@ -116,6 +117,10 @@ jobs:
|
|||||||
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
|
||||||
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
||||||
|
|
||||||
|
- name: Configure repository
|
||||||
|
shell: bash
|
||||||
|
run: ./configure.sh
|
||||||
|
|
||||||
- name: Set up SDK
|
- name: Set up SDK
|
||||||
shell: bash
|
shell: bash
|
||||||
run: echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties
|
run: echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties
|
||||||
|
|||||||
@@ -3,20 +3,20 @@ on:
|
|||||||
workflow_dispatch: # Manual trigger
|
workflow_dispatch: # Manual trigger
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- packaging/app.comaps.comaps.metainfo.xml
|
- packaging/app.organicmaps.desktop.metainfo.xml
|
||||||
- .forgejo/workflows/appstream-check.yaml # Run check on self change
|
- .forgejo/workflows/appstream-check.yaml # Run check on self change
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
validate-appstream:
|
validate-appstream:
|
||||||
name: Validate appstream metadata xml
|
name: Validate appstream metadata xml
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
sparse-checkout: |
|
sparse-checkout: |
|
||||||
packaging/app.comaps.comaps.metainfo.xml
|
packaging/app.organicmaps.desktop.metainfo.xml
|
||||||
|
|
||||||
- name: Install appstream validator and flatpak Builder
|
- name: Install appstream validator and flatpak Builder
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -29,8 +29,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Lint appstream data with flatpak Builder
|
- name: Lint appstream data with flatpak Builder
|
||||||
shell: bash
|
shell: bash
|
||||||
run: flatpak run --command=flatpak-builder-lint org.flatpak.Builder appstream packaging/app.comaps.comaps.metainfo.xml
|
run: flatpak run --command=flatpak-builder-lint org.flatpak.Builder appstream packaging/app.organicmaps.desktop.metainfo.xml
|
||||||
|
|
||||||
- name: Run appstreamcli in pedantic mode
|
- name: Run appstreamcli in pedantic mode
|
||||||
shell: bash
|
shell: bash
|
||||||
run: flatpak run --command=appstreamcli org.flatpak.Builder validate --pedantic packaging/app.comaps.comaps.metainfo.xml
|
run: flatpak run --command=appstreamcli org.flatpak.Builder validate --pedantic packaging/app.organicmaps.desktop.metainfo.xml
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
should-run-check:
|
should-run-check:
|
||||||
name: Should run coverage
|
name: Should run coverage
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
outputs:
|
outputs:
|
||||||
run-from-pr: ${{ steps.run-from-pr.outputs.run-from-pr }}
|
run-from-pr: ${{ steps.run-from-pr.outputs.run-from-pr }}
|
||||||
manually-triggered: ${{ steps.manually-triggered.outputs.manually-triggered }}
|
manually-triggered: ${{ steps.manually-triggered.outputs.manually-triggered }}
|
||||||
@@ -59,9 +59,14 @@ jobs:
|
|||||||
coverage:
|
coverage:
|
||||||
needs: should-run-check
|
needs: should-run-check
|
||||||
name: Generate coverage report
|
name: Generate coverage report
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
if: ${{ needs.should-run-check.outputs.run-from-pr == 'true' || needs.should-run-check.outputs.manually-triggered == 'true'}}
|
if: ${{ needs.should-run-check.outputs.run-from-pr == 'true' || needs.should-run-check.outputs.manually-triggered == 'true'}}
|
||||||
steps:
|
steps:
|
||||||
|
- name: Free disk space by removing .NET, Android and Haskell
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
|
||||||
|
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
@@ -89,6 +94,10 @@ jobs:
|
|||||||
llvm \
|
llvm \
|
||||||
gcovr
|
gcovr
|
||||||
|
|
||||||
|
- name: Configure repository
|
||||||
|
shell: bash
|
||||||
|
run: ./configure.sh
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
name: DCO
|
name: dco
|
||||||
on: [pull_request]
|
on: [pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check:
|
check:
|
||||||
runs-on: ubuntu-latest
|
runs-on: codeberg-tiny
|
||||||
steps:
|
steps:
|
||||||
- name: Check for Developer Certificate of Origin (DCO) compliance
|
- uses: https://github.com/KineticCafe/actions-dco@v1
|
||||||
uses: https://github.com/KineticCafe/actions-dco@fb284c903a7673a3d4b0bdd104479a6f0d46dae7 # v1.3.6
|
|
||||||
@@ -3,20 +3,20 @@ on:
|
|||||||
workflow_dispatch: # Manual trigger
|
workflow_dispatch: # Manual trigger
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- qt/res/linux/app.comaps.comaps.desktop
|
- qt/res/app.organicmaps.desktop.desktop
|
||||||
- .forgejo/workflows/desktop-file-check.yaml # Run check on self change
|
- .forgejo/workflows/desktop-file-check.yaml # Run check on self change
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
validate-desktop-file:
|
validate-desktop-file:
|
||||||
name: Validate .desktop file
|
name: Validate .desktop file
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
sparse-checkout: |
|
sparse-checkout: |
|
||||||
qt/res/linux/app.comaps.comaps.desktop
|
qt/res/app.organicmaps.desktop.desktop
|
||||||
|
|
||||||
- name: Install desktop-file-validate tool
|
- name: Install desktop-file-validate tool
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -27,4 +27,4 @@ jobs:
|
|||||||
|
|
||||||
- name: Validate desktop file
|
- name: Validate desktop file
|
||||||
shell: bash
|
shell: bash
|
||||||
run: desktop-file-validate qt/res/linux/app.comaps.comaps.desktop && echo "Successfully validated .desktop file"
|
run: desktop-file-validate qt/res/app.organicmaps.desktop.desktop && echo "Successfully validated .desktop file"
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ jobs:
|
|||||||
name: Apple TestFlight
|
name: Apple TestFlight
|
||||||
runs-on: macos-15
|
runs-on: macos-15
|
||||||
env:
|
env:
|
||||||
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
|
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
|
||||||
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
|
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
|
||||||
LANGUAGE: en_US.UTF-8
|
LANGUAGE: en_US.UTF-8
|
||||||
LC_ALL: en_US.UTF-8
|
LC_ALL: en_US.UTF-8
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ jobs:
|
|||||||
name: Build iOS
|
name: Build iOS
|
||||||
runs-on: macos-15
|
runs-on: macos-15
|
||||||
env:
|
env:
|
||||||
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
|
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
|
||||||
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
|
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
|
||||||
LANGUAGE: en_US.UTF-8
|
LANGUAGE: en_US.UTF-8
|
||||||
LC_ALL: en_US.UTF-8
|
LC_ALL: en_US.UTF-8
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ jobs:
|
|||||||
name: iOS Release
|
name: iOS Release
|
||||||
runs-on: macos-15
|
runs-on: macos-15
|
||||||
env:
|
env:
|
||||||
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
|
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
|
||||||
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
|
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
|
||||||
LANGUAGE: en_US.UTF-8
|
LANGUAGE: en_US.UTF-8
|
||||||
LC_ALL: en_US.UTF-8
|
LC_ALL: en_US.UTF-8
|
||||||
|
|||||||
@@ -31,13 +31,18 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
linux-no-unity:
|
linux-no-unity:
|
||||||
name: Linux no unity build
|
name: Linux no unity build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
# Cancels previous jobs if the same branch or PR was updated again.
|
# Cancels previous jobs if the same branch or PR was updated again.
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-no-unity-${{ github.event.pull_request.number || github.ref }}
|
group: ${{ github.workflow }}-no-unity-${{ github.event.pull_request.number || github.ref }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- name: Free disk space by removing .NET, Android and Haskell
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
|
||||||
|
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
@@ -66,6 +71,10 @@ jobs:
|
|||||||
libqt6positioning6-plugins \
|
libqt6positioning6-plugins \
|
||||||
libqt6positioning6
|
libqt6positioning6
|
||||||
|
|
||||||
|
- name: Configure repository
|
||||||
|
shell: bash
|
||||||
|
run: ./configure.sh
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
@@ -90,7 +99,7 @@ jobs:
|
|||||||
|
|
||||||
linux-matrix:
|
linux-matrix:
|
||||||
name: Linux builds and tests
|
name: Linux builds and tests
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -102,6 +111,11 @@ jobs:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- name: Free disk space by removing .NET, Android and Haskell
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
|
||||||
|
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
@@ -128,19 +142,15 @@ jobs:
|
|||||||
libqt6positioning6-plugins \
|
libqt6positioning6-plugins \
|
||||||
libqt6positioning6
|
libqt6positioning6
|
||||||
|
|
||||||
|
- name: Configure repository
|
||||||
|
shell: bash
|
||||||
|
run: ./configure.sh
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
key: ${{ github.workflow }}-unity-${{ matrix.compiler.CC }}-${{ matrix.CMAKE_BUILD_TYPE }}
|
key: ${{ github.workflow }}-unity-${{ matrix.compiler.CC }}-${{ matrix.CMAKE_BUILD_TYPE }}
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
env:
|
|
||||||
SKIP_MAP_DOWNLOAD: 1
|
|
||||||
SKIP_GENERATE_SYMBOLS: 1
|
|
||||||
SKIP_GENERATE_DRULES: 1
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: CMake
|
- name: CMake
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ jobs:
|
|||||||
name: macOS builds and tests
|
name: macOS builds and tests
|
||||||
runs-on: macos-15
|
runs-on: macos-15
|
||||||
env:
|
env:
|
||||||
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
|
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
|
||||||
HOMEBREW_NO_ANALYTICS: 1
|
HOMEBREW_NO_ANALYTICS: 1
|
||||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||||
strategy:
|
strategy:
|
||||||
@@ -57,6 +57,10 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install ninja qt@6
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install ninja qt@6
|
||||||
|
|
||||||
|
- name: Configure repository
|
||||||
|
shell: bash
|
||||||
|
run: ./configure.sh
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -1,382 +0,0 @@
|
|||||||
name: map-generator
|
|
||||||
on:
|
|
||||||
workflow_dispatch: # Manual trigger
|
|
||||||
inputs:
|
|
||||||
jobs:
|
|
||||||
description: 'Which job(s) to run right now?'
|
|
||||||
required: true
|
|
||||||
default: 'all'
|
|
||||||
type: choice
|
|
||||||
options:
|
|
||||||
- all
|
|
||||||
- copy-coasts
|
|
||||||
- planet
|
|
||||||
- wiki
|
|
||||||
- isolines
|
|
||||||
- subways
|
|
||||||
- tiger
|
|
||||||
- maps
|
|
||||||
|
|
||||||
env:
|
|
||||||
WIKIMEDIA_USERNAME: ${{ secrets.WIKIMEDIA_USERNAME }}
|
|
||||||
WIKIMEDIA_PASSWORD: ${{ secrets.WIKIMEDIA_PASSWORD }}
|
|
||||||
S3_KEY_ID: ${{ secrets.S3_KEY_ID }}
|
|
||||||
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
|
|
||||||
S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
|
|
||||||
S3_BUCKET: ${{ secrets.S3_BUCKET }}
|
|
||||||
SFTP_USER: ${{ secrets.SFTP_USER }}
|
|
||||||
SFTP_PASSWORD: ${{ secrets.SFTP_PASSWORD }}
|
|
||||||
SFTP_HOST: ${{ secrets.SFTP_HOST }}
|
|
||||||
SFTP_PATH: ${{ secrets.SFTP_PATH }}
|
|
||||||
DEBIAN_FRONTEND: noninteractive
|
|
||||||
TZ: Etc/UTC
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
copy-coasts:
|
|
||||||
if: inputs.jobs == 'copy-coasts' || inputs.jobs == 'all'
|
|
||||||
name: Copy Previously Generated Coasts
|
|
||||||
runs-on: mapfilemaker
|
|
||||||
container:
|
|
||||||
image: ubuntu:latest
|
|
||||||
volumes:
|
|
||||||
- /media/4tbexternal:/media/4tbexternal
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
steps:
|
|
||||||
- name: Copy Coasts
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ -f /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom ]; then
|
|
||||||
cp /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom /media/4tbexternal/osm-planet/latest_coasts.geom
|
|
||||||
cp /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.rawgeom /media/4tbexternal/osm-planet/latest_coasts.rawgeom
|
|
||||||
fi
|
|
||||||
|
|
||||||
update-planet:
|
|
||||||
if: inputs.jobs == 'planet' || inputs.jobs == 'all'
|
|
||||||
name: Update Planet
|
|
||||||
runs-on: mapfilemaker
|
|
||||||
container:
|
|
||||||
image: ubuntu:latest
|
|
||||||
volumes:
|
|
||||||
- /media/4tbexternal:/media/4tbexternal
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
steps:
|
|
||||||
- name: Install dependencies
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
apt-get update -y
|
|
||||||
apt-get install -y pyosmium osmium-tool python3-venv python3-pip wget2
|
|
||||||
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
|
|
||||||
pip3 install "protobuf<4"
|
|
||||||
- name: Download Planet File if Absent
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -d /media/4tbexternal/osm-planet/planet/ ]; then
|
|
||||||
mkdir -p /media/4tbexternal/osm-planet/planet/
|
|
||||||
fi
|
|
||||||
if [ ! -f /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf ]; then
|
|
||||||
cd /media/4tbexternal/osm-planet/planet/
|
|
||||||
wget2 --verbose --progress=bar --continue --debug https://ftpmirror.your.org/pub/openstreetmap/pbf/planet-latest.osm.pbf
|
|
||||||
fi
|
|
||||||
- name: Update Planet
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cd /media/4tbexternal/osm-planet/planet/
|
|
||||||
pyosmium-up-to-date planet-latest.osm.pbf -o planet-latest-new.osm.pbf -vv --size 16384
|
|
||||||
mv planet-latest-new.osm.pbf planet-latest.osm.pbf
|
|
||||||
- name: Converting planet-latest.osm.pbf to planet.o5m
|
|
||||||
run: /root/OM/osmctools/osmconvert planet-latest.osm.pbf -o=planet.o5m
|
|
||||||
|
|
||||||
wiki-update:
|
|
||||||
if: inputs.jobs == 'wiki' || inputs.jobs == 'all'
|
|
||||||
name: Update Wikipedia
|
|
||||||
runs-on: mapfilemaker
|
|
||||||
container:
|
|
||||||
image: ubuntu:latest
|
|
||||||
volumes:
|
|
||||||
- /media/4tbexternal:/media/4tbexternal
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
steps:
|
|
||||||
- name: Install dependencies
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
apt-get update -y
|
|
||||||
apt-get install -y jq curl wget2 rustc cargo git ca-certificates
|
|
||||||
- name: Clone wikiparser if necessary
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -d /media/4tbexternal/wikiparser ]; then
|
|
||||||
cd /media/4tbexternal
|
|
||||||
git clone https://codeberg.org/comaps/wikiparser.git
|
|
||||||
fi
|
|
||||||
- name: Check for planet file
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -f /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf ]; then
|
|
||||||
echo "ERROR: No file at /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf"
|
|
||||||
ls -al /media/4tbexternal/
|
|
||||||
ls -al /media/4tbexternal/osm-planet/
|
|
||||||
ls -al /media/4tbexternal/osm-planet/planet/
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
- name: Update Wikipedia from Enterprise API
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
mkdir -p /media/4tbexternal/osm-planet/wikipedia/dumps
|
|
||||||
mkdir -p /media/4tbexternal/osm-planet/wikipedia/build
|
|
||||||
cd /media/4tbexternal/wikiparser
|
|
||||||
ls -al
|
|
||||||
echo "Downloading ..."
|
|
||||||
./download.sh /media/4tbexternal/osm-planet/wikipedia/dumps
|
|
||||||
echo "Running ..."
|
|
||||||
./run.sh /media/4tbexternal/osm-planet/wikipedia/build \
|
|
||||||
/media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf \
|
|
||||||
/media/4tbexternal/osm-planet/wikipedia/dumps/latest/*.tar.gz
|
|
||||||
echo "DONE"
|
|
||||||
|
|
||||||
update-isolines:
|
|
||||||
if: inputs.jobs == 'isolines' || inputs.jobs == 'all'
|
|
||||||
name: Update Isolines
|
|
||||||
runs-on: mapfilemaker
|
|
||||||
container:
|
|
||||||
image: ubuntu:latest
|
|
||||||
volumes:
|
|
||||||
- /media/4tbexternal:/media/4tbexternal
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
steps:
|
|
||||||
- name: Install dependencies
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
apt-get update -qq \
|
|
||||||
&& apt-get install -y --no-install-recommends \
|
|
||||||
curl \
|
|
||||||
osmctools \
|
|
||||||
rclone \
|
|
||||||
git \
|
|
||||||
ca-certificates \
|
|
||||||
openssh-client \
|
|
||||||
sshpass \
|
|
||||||
vim \
|
|
||||||
wget \
|
|
||||||
build-essential \
|
|
||||||
clang \
|
|
||||||
cmake \
|
|
||||||
python3 \
|
|
||||||
python3-pip \
|
|
||||||
python3.12-venv \
|
|
||||||
qt6-base-dev \
|
|
||||||
qt6-positioning-dev \
|
|
||||||
libc++-dev \
|
|
||||||
libfreetype-dev \
|
|
||||||
libglvnd-dev \
|
|
||||||
libgl1-mesa-dev \
|
|
||||||
libharfbuzz-dev \
|
|
||||||
libicu-dev \
|
|
||||||
libqt6svg6-dev \
|
|
||||||
libqt6positioning6-plugins \
|
|
||||||
libqt6positioning6 \
|
|
||||||
libsqlite3-dev \
|
|
||||||
libxrandr-dev \
|
|
||||||
libxinerama-dev \
|
|
||||||
libxcursor-dev \
|
|
||||||
libxi-dev \
|
|
||||||
zlib1g-dev
|
|
||||||
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
|
|
||||||
pip3 install "protobuf<4"
|
|
||||||
- name: Clone main repo if necessary
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -d /media/4tbexternal/comaps-init ]; then
|
|
||||||
apt-get update -qq && apt-get install -y --no-install-recommends git
|
|
||||||
cd /media/4tbexternal
|
|
||||||
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
|
|
||||||
fi
|
|
||||||
- name: Update Isolines
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cd /media/4tbexternal/comaps-init/
|
|
||||||
./tools/unix/build_omim.sh -R topography_generator_tool
|
|
||||||
rm -rf ../osm-planet/isolines/
|
|
||||||
mkdir ../osm-planet/isolines/
|
|
||||||
../omim-build-relwithdebinfo/topography_generator_tool \
|
|
||||||
--profiles_path=./data/conf/isolines/isolines-profiles.json \
|
|
||||||
--countries_to_generate_path=./data/conf/isolines/countries-to-generate.json \
|
|
||||||
--tiles_isolines_out_dir=../osm-planet/isolines/tmp-tiles/ \
|
|
||||||
--countries_isolines_out_dir=../osm-planet/isolines/ \
|
|
||||||
--data_dir=./data/ \
|
|
||||||
--srtm_path=../osm-planet/SRTM-patched-europe/ \
|
|
||||||
--threads=22
|
|
||||||
|
|
||||||
update-subways:
|
|
||||||
if: inputs.jobs == 'subways' || inputs.jobs == 'all'
|
|
||||||
name: Update Subways
|
|
||||||
runs-on: mapfilemaker
|
|
||||||
container:
|
|
||||||
image: ubuntu:latest
|
|
||||||
volumes:
|
|
||||||
- /media/4tbexternal:/media/4tbexternal
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
steps:
|
|
||||||
- name: Install dependencies
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
apt-get update -qq && apt-get install -y --no-install-recommends curl osmctools osmium-tool python3-venv ca-certificates git python3-pip
|
|
||||||
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
|
|
||||||
pip3 install "protobuf<4"
|
|
||||||
- name: Clone subways if necessary
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -d /media/4tbexternal/subways ]; then
|
|
||||||
cd /media/4tbexternal
|
|
||||||
git clone https://codeberg.org/comaps/subways.git
|
|
||||||
fi
|
|
||||||
- name: Clone main repo if necessary
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -d /media/4tbexternal/comaps-init ]; then
|
|
||||||
cd /media/4tbexternal
|
|
||||||
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
|
|
||||||
fi
|
|
||||||
- name: Update Subways
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cd /media/4tbexternal/comaps-init/
|
|
||||||
cp tools/unix/maps/settings.sh.prod tools/unix/maps/settings.sh
|
|
||||||
./tools/unix/maps/generate_subways.sh
|
|
||||||
|
|
||||||
update-tiger:
|
|
||||||
if: inputs.jobs == 'tiger' || inputs.jobs == 'all'
|
|
||||||
name: Update TIGER
|
|
||||||
runs-on: mapfilemaker
|
|
||||||
container:
|
|
||||||
image: ubuntu:latest
|
|
||||||
volumes:
|
|
||||||
- /media/4tbexternal:/media/4tbexternal
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
steps:
|
|
||||||
- name: Install dependencies
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
apt-get update -qq && apt-get install -y --no-install-recommends \
|
|
||||||
build-essential \
|
|
||||||
clang \
|
|
||||||
cmake \
|
|
||||||
ninja-build \
|
|
||||||
ca-certificates \
|
|
||||||
git \
|
|
||||||
wget2
|
|
||||||
- name: Clone main repo if necessary
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -d /media/4tbexternal/comaps-init ]; then
|
|
||||||
cd /media/4tbexternal
|
|
||||||
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
|
|
||||||
fi
|
|
||||||
- name: Build address_parser
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cd /media/4tbexternal/comaps-init
|
|
||||||
rm -rf ../omim-build-relwithdebinfo/CMakeCache.txt
|
|
||||||
rm -rf ../omim-build-relwithdebinfo/CMakeFiles
|
|
||||||
./tools/unix/build_omim.sh -R address_parser_tool
|
|
||||||
- name: Update TIGER from Nominatim
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cd /media/4tbexternal/osm-planet/
|
|
||||||
wget2 https://nominatim.org/data/tiger-nominatim-preprocessed-latest.csv.tar.gz
|
|
||||||
tar -xOzf tiger-nominatim-preprocessed-latest.csv.tar.gz | /media/4tbexternal/omim-build-relwithdebinfo/address_parser_tool --output_path=./tiger
|
|
||||||
|
|
||||||
generate-maps:
|
|
||||||
if: inputs.jobs == 'maps' || inputs.jobs == 'all'
|
|
||||||
name: Generate Maps
|
|
||||||
runs-on: mapfilemaker
|
|
||||||
container:
|
|
||||||
image: ubuntu:latest
|
|
||||||
volumes:
|
|
||||||
- /media/4tbexternal:/media/4tbexternal
|
|
||||||
options: --ulimit nofile=262144:262144
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
steps:
|
|
||||||
- name: Install dependencies
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
apt-get update -qq \
|
|
||||||
&& apt-get install -y --no-install-recommends \
|
|
||||||
curl \
|
|
||||||
osmctools \
|
|
||||||
rclone \
|
|
||||||
git \
|
|
||||||
ca-certificates \
|
|
||||||
openssh-client \
|
|
||||||
sshpass \
|
|
||||||
vim \
|
|
||||||
wget \
|
|
||||||
build-essential \
|
|
||||||
clang \
|
|
||||||
cmake \
|
|
||||||
ninja-build \
|
|
||||||
python3 \
|
|
||||||
python3-pip \
|
|
||||||
python3.12-venv \
|
|
||||||
qt6-base-dev \
|
|
||||||
qt6-positioning-dev \
|
|
||||||
libc++-dev \
|
|
||||||
libfreetype-dev \
|
|
||||||
libglvnd-dev \
|
|
||||||
libgl1-mesa-dev \
|
|
||||||
libharfbuzz-dev \
|
|
||||||
libicu-dev \
|
|
||||||
libqt6svg6-dev \
|
|
||||||
libqt6positioning6-plugins \
|
|
||||||
libqt6positioning6 \
|
|
||||||
libsqlite3-dev \
|
|
||||||
libxrandr-dev \
|
|
||||||
libxinerama-dev \
|
|
||||||
libxcursor-dev \
|
|
||||||
libxi-dev \
|
|
||||||
zlib1g-dev
|
|
||||||
- name: Clone repo if necessary
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -d /media/4tbexternal/comaps-init ]; then
|
|
||||||
cd /media/4tbexternal
|
|
||||||
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
|
|
||||||
fi
|
|
||||||
- name: Make output folders if necessary
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -d /media/4tbexternal/osm-maps ]; then
|
|
||||||
mkdir -p /media/4tbexternal/osm-maps
|
|
||||||
fi
|
|
||||||
- name: Get SRTM if necessary
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -d /media/4tbexternal/osm-planet/SRTM-patched-europe/ ]; then
|
|
||||||
echo "ERROR: NO SRTM"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
- name: Symlink paths for repo scripts
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
mkdir -p /root/OM
|
|
||||||
ln -s /media/4tbexternal/comaps-init /root/OM/organicmaps
|
|
||||||
ln -s /media/4tbexternal/osm-planet /home/planet
|
|
||||||
ln -s /media/4tbexternal/osm-maps /root/OM/maps_build
|
|
||||||
- name: Run docker_maps_generator.sh
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cd /root/OM/organicmaps
|
|
||||||
./tools/unix/docker_maps_generator.sh
|
|
||||||
22
.forgejo/workflows/stale.yml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
name: Close stale PRs
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 0 * * *" # Runs every day at midnight
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stale:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/stale@v9
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
days-before-pr-stale: 180 # 6 months before warning
|
||||||
|
days-before-pr-close: 365 # Closed after 12 months
|
||||||
|
stale-pr-label: "stale"
|
||||||
|
stale-pr-message: "Hi! This PR has been inactive for 6 months. If it's still relevant, please update it to let us know you’d like to keep it open 😊"
|
||||||
|
close-pr-message: "This PR has been automatically closed after 12 months of inactivity."
|
||||||
|
days-before-issue-stale: -1 # Issues are never stale
|
||||||
|
days-before-issue-close: -1 # Issues are never closed
|
||||||
|
remove-stale-when-updated: true
|
||||||
20
.github/workflows/android-check.yaml
vendored
@@ -6,8 +6,7 @@ on:
|
|||||||
- main
|
- main
|
||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_HOME: /usr/lib/jvm/temurin-21-jdk-amd64 # Java 21 is required for Android Gradle 8 plugin
|
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
|
||||||
SKIP_MAP_DOWNLOAD: true
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
@@ -23,16 +22,9 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
- name: Install protobuf
|
- name: Init boost, generate textures
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: ./configure.sh --skip-map-download
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y python3-pip
|
|
||||||
pip install "protobuf<3.21" --break-system-packages
|
|
||||||
|
|
||||||
- name: Configure repository
|
|
||||||
shell: bash
|
|
||||||
run: ./configure.sh
|
|
||||||
|
|
||||||
- name: Lint
|
- name: Lint
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -73,9 +65,7 @@ jobs:
|
|||||||
libxinerama-dev \
|
libxinerama-dev \
|
||||||
libxcursor-dev \
|
libxcursor-dev \
|
||||||
libxi-dev \
|
libxi-dev \
|
||||||
python3-pip \
|
|
||||||
zlib1g-dev
|
zlib1g-dev
|
||||||
pip install "protobuf<3.21" --break-system-packages
|
|
||||||
|
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -86,6 +76,10 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||||
|
|
||||||
|
- name: Init boost, generate textures
|
||||||
|
shell: bash
|
||||||
|
run: ./configure.sh --skip-map-download
|
||||||
|
|
||||||
- name: Configure ccache
|
- name: Configure ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
|
|||||||
51
.github/workflows/code-style-check.yaml
vendored
@@ -1,51 +0,0 @@
|
|||||||
name: Code style check
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: [ master ]
|
|
||||||
paths: # Should stay in sync with tools/unix/clang-format.sh
|
|
||||||
- '.github/workflows/code-style-check.yaml'
|
|
||||||
- 'android/app/src/**.java'
|
|
||||||
- 'android/sdk/src/**.java'
|
|
||||||
- 'android/sdk/src/main/cpp/**.[ch]pp'
|
|
||||||
- 'dev_sandbox/**.[ch]pp'
|
|
||||||
- 'generator/**.[ch]pp'
|
|
||||||
- 'iphone/**.[ch]pp'
|
|
||||||
- 'iphone/**.[hm]'
|
|
||||||
- 'iphone/**.mm'
|
|
||||||
- 'libs/**.[ch]pp'
|
|
||||||
- 'libs/**.[hm]'
|
|
||||||
- '!libs/indexer/drules_struct.pb.h'
|
|
||||||
- 'libs/**.mm'
|
|
||||||
- 'qt/**.[ch]pp'
|
|
||||||
- 'qt/**.h'
|
|
||||||
- 'tools/**.[ch]pp'
|
|
||||||
- '.clang-format'
|
|
||||||
- '.clang-format-ignore'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
code-style-check:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Install clang-format
|
|
||||||
run: |
|
|
||||||
sudo apt purge -y clang-format-18 # Remove default old version of clang-format
|
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
|
||||||
echo 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main' | sudo tee /etc/apt/sources.list.d/llvm-toolchain-noble-20.list
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y clang-format-20
|
|
||||||
sudo update-alternatives --force --install /usr/bin/clang-format clang-format /usr/bin/clang-format-20 10
|
|
||||||
sudo update-alternatives --force --install /usr/bin/git-clang-format git-clang-format /usr/bin/git-clang-format-20 10
|
|
||||||
clang-format --version
|
|
||||||
- name: Checkout sources
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Check code style
|
|
||||||
run: tools/unix/clang-format.sh
|
|
||||||
|
|
||||||
- name: Post clang-format comments
|
|
||||||
if: failure()
|
|
||||||
uses: reviewdog/action-suggester@v1.21.0
|
|
||||||
with:
|
|
||||||
tool_name: clang-format
|
|
||||||
fail_level: error
|
|
||||||
5
.github/workflows/ios-check.yaml
vendored
@@ -10,7 +10,7 @@ jobs:
|
|||||||
name: Build iOS
|
name: Build iOS
|
||||||
runs-on: macos-15
|
runs-on: macos-15
|
||||||
env:
|
env:
|
||||||
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
|
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
|
||||||
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
|
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
|
||||||
LANGUAGE: en_US.UTF-8
|
LANGUAGE: en_US.UTF-8
|
||||||
LC_ALL: en_US.UTF-8
|
LC_ALL: en_US.UTF-8
|
||||||
@@ -30,7 +30,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
brew install qt \
|
brew install qt \
|
||||||
optipng
|
optipng
|
||||||
pip3 install "protobuf<3.21" --break-system-packages
|
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
@@ -38,7 +37,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
|
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
|
||||||
|
|
||||||
- name: Configure repository
|
- name: Init boost, download World map, generate textures
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./configure.sh
|
run: ./configure.sh
|
||||||
|
|
||||||
|
|||||||
32
.gitignore
vendored
@@ -14,29 +14,22 @@ stxxl.errlog
|
|||||||
stxxl.log
|
stxxl.log
|
||||||
screenlog.0
|
screenlog.0
|
||||||
|
|
||||||
|
data/styles/*/*/out/*
|
||||||
|
data/resources-*_design/*
|
||||||
# symbols png/sdf are now generated at build
|
# symbols png/sdf are now generated at build
|
||||||
data/symbols/**/symbols.png
|
data/resources-*_*/symbols.png
|
||||||
data/symbols/**/symbols.sdf
|
data/resources-*_*/symbols.sdf
|
||||||
|
data/drules_proto_default_design.bin
|
||||||
|
data/colors_design.txt
|
||||||
|
data/patterns_design.txt
|
||||||
data/bookmarks
|
data/bookmarks
|
||||||
data/edits.xml
|
data/edits.xml
|
||||||
data/World.mwm
|
data/World.mwm
|
||||||
data/WorldCoasts.mwm
|
data/WorldCoasts.mwm
|
||||||
data/world_mwm/*
|
|
||||||
data/*_hash
|
|
||||||
data/drules_proto*
|
|
||||||
data/classificator.txt*
|
|
||||||
data/types.txt*
|
|
||||||
data/visibility.txt*
|
|
||||||
data/colors.txt*
|
|
||||||
data/patterns.txt*
|
|
||||||
# TODO: designer is not used at the moment
|
|
||||||
# data/symbols/*/design/
|
|
||||||
# data/colors_design.txt
|
|
||||||
# data/patterns_design.txt
|
|
||||||
|
|
||||||
# Auto-generated from data/categories-strings/* by tools/unix/generate_categories.sh
|
# generated when running tests. NOT the lowercase 'testing' which should be kept.
|
||||||
data/categories.txt
|
Testing
|
||||||
|
!testing
|
||||||
|
|
||||||
# Compiled Python
|
# Compiled Python
|
||||||
*.pyc
|
*.pyc
|
||||||
@@ -55,9 +48,10 @@ omim.sdf
|
|||||||
*.suo
|
*.suo
|
||||||
*.aps
|
*.aps
|
||||||
*.rc
|
*.rc
|
||||||
!qt/res/windows/windows.rc
|
!qt/res/windows.rc
|
||||||
*.pdb
|
*.pdb
|
||||||
out/
|
out/*
|
||||||
|
qt/mapswithme.log
|
||||||
|
|
||||||
# XCode
|
# XCode
|
||||||
xcode/keys/*
|
xcode/keys/*
|
||||||
|
|||||||
4
.gitmodules
vendored
@@ -65,7 +65,3 @@
|
|||||||
[submodule "3party/imgui/imgui"]
|
[submodule "3party/imgui/imgui"]
|
||||||
path = 3party/imgui/imgui
|
path = 3party/imgui/imgui
|
||||||
url = https://github.com/ocornut/imgui
|
url = https://github.com/ocornut/imgui
|
||||||
[submodule "3party/glaze"]
|
|
||||||
path = 3party/glaze
|
|
||||||
url = https://github.com/stephenberry/glaze
|
|
||||||
branch = main
|
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ endif()
|
|||||||
|
|
||||||
add_subdirectory(agg)
|
add_subdirectory(agg)
|
||||||
add_subdirectory(bsdiff-courgette)
|
add_subdirectory(bsdiff-courgette)
|
||||||
add_subdirectory(glaze)
|
|
||||||
add_subdirectory(minizip)
|
add_subdirectory(minizip)
|
||||||
add_subdirectory(open-location-code)
|
add_subdirectory(open-location-code)
|
||||||
add_subdirectory(opening_hours)
|
add_subdirectory(opening_hours)
|
||||||
|
|||||||
@@ -4,9 +4,7 @@ set(FT_DISABLE_HARFBUZZ ON)
|
|||||||
add_subdirectory(freetype)
|
add_subdirectory(freetype)
|
||||||
|
|
||||||
# Fix warning with ONE_PIXEL macro clash.
|
# Fix warning with ONE_PIXEL macro clash.
|
||||||
if(NOT MSVC)
|
target_compile_options(freetype PRIVATE -Wno-macro-redefined)
|
||||||
target_compile_options(freetype PRIVATE -Wno-macro-redefined)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Use ft2build.h from the current directory instead of the default.
|
# Use ft2build.h from the current directory instead of the default.
|
||||||
target_include_directories(freetype
|
target_include_directories(freetype
|
||||||
|
|||||||
@@ -11,23 +11,14 @@ target_include_directories(${PROJECT_NAME}
|
|||||||
harfbuzz/src
|
harfbuzz/src
|
||||||
)
|
)
|
||||||
|
|
||||||
if (MSVC)
|
# Keep these settigns in sync with xcode/harfbuzz project.
|
||||||
target_compile_options(${PROJECT_NAME}
|
target_compile_options(${PROJECT_NAME}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
/GR-
|
-fno-rtti
|
||||||
/EHsc-
|
-fno-exceptions
|
||||||
/Zc:threadSafeInit-
|
-fno-threadsafe-statics
|
||||||
)
|
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wno-format-pedantic>
|
||||||
else()
|
)
|
||||||
# Keep these settings in sync with xcode/harfbuzz project.
|
|
||||||
target_compile_options(${PROJECT_NAME}
|
|
||||||
PRIVATE
|
|
||||||
-fno-rtti
|
|
||||||
-fno-exceptions
|
|
||||||
-fno-threadsafe-statics
|
|
||||||
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wno-format-pedantic>
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_compile_definitions(${PROJECT_NAME}
|
target_compile_definitions(${PROJECT_NAME}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
@@ -37,20 +28,14 @@ target_compile_definitions(${PROJECT_NAME}
|
|||||||
#$<$<BOOL:${APPLE}>:HAVE_CORETEXT>
|
#$<$<BOOL:${APPLE}>:HAVE_CORETEXT>
|
||||||
HAVE_ATEXIT
|
HAVE_ATEXIT
|
||||||
HAVE_GETPAGESIZE
|
HAVE_GETPAGESIZE
|
||||||
|
HAVE_MMAP
|
||||||
HAVE_MPROTECT
|
HAVE_MPROTECT
|
||||||
|
HAVE_PTHREAD
|
||||||
HAVE_SYSCONF
|
HAVE_SYSCONF
|
||||||
|
HAVE_SYS_MMAN_H
|
||||||
|
HAVE_UNISTD_H
|
||||||
)
|
)
|
||||||
|
|
||||||
if (NOT MSVC)
|
|
||||||
target_compile_definitions(${PROJECT_NAME}
|
|
||||||
PRIVATE
|
|
||||||
HAVE_MMAP
|
|
||||||
HAVE_PTHREAD
|
|
||||||
HAVE_SYS_MMAN_H
|
|
||||||
HAVE_UNISTD_H
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} Freetype::Freetype)
|
target_link_libraries(${PROJECT_NAME} Freetype::Freetype)
|
||||||
|
|
||||||
add_library(harfbuzz::harfbuzz ALIAS harfbuzz)
|
add_library(harfbuzz::harfbuzz ALIAS harfbuzz)
|
||||||
|
|||||||
@@ -172,7 +172,6 @@ add_library(icuuc
|
|||||||
icu/icu4c/source/common/uvector.cpp
|
icu/icu4c/source/common/uvector.cpp
|
||||||
icu/icu4c/source/common/uvectr32.cpp
|
icu/icu4c/source/common/uvectr32.cpp
|
||||||
icu/icu4c/source/common/uvectr64.h
|
icu/icu4c/source/common/uvectr64.h
|
||||||
icu/icu4c/source/common/wintz.cpp
|
|
||||||
icu/icu4c/source/common/wintz.h
|
icu/icu4c/source/common/wintz.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ set(SRC
|
|||||||
protobuf/src/google/protobuf/message_lite.cc
|
protobuf/src/google/protobuf/message_lite.cc
|
||||||
protobuf/src/google/protobuf/repeated_field.cc
|
protobuf/src/google/protobuf/repeated_field.cc
|
||||||
protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc
|
protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc
|
||||||
protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc
|
|
||||||
protobuf/src/google/protobuf/stubs/bytestream.cc
|
protobuf/src/google/protobuf/stubs/bytestream.cc
|
||||||
protobuf/src/google/protobuf/stubs/common.cc
|
protobuf/src/google/protobuf/stubs/common.cc
|
||||||
protobuf/src/google/protobuf/stubs/int128.cc
|
protobuf/src/google/protobuf/stubs/int128.cc
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include <boost/utility/enable_if.hpp>
|
#include <boost/utility/enable_if.hpp>
|
||||||
#include <boost/utility.hpp>
|
#include <boost/utility.hpp>
|
||||||
#include <boost/type_traits/is_pod.hpp>
|
#include <boost/type_traits/is_pod.hpp>
|
||||||
|
#include <boost/iostreams/device/mapped_file.hpp>
|
||||||
|
|
||||||
#include "mappable_vector.hpp"
|
#include "mappable_vector.hpp"
|
||||||
|
|
||||||
@@ -282,6 +283,12 @@ namespace succinct { namespace mapper {
|
|||||||
return mapper.bytes_read();
|
return mapper.bytes_read();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
size_t map(T& val, boost::iostreams::mapped_file_source const& m, uint64_t flags = 0, const char* friendly_name = "<TOP>")
|
||||||
|
{
|
||||||
|
return map(val, m.data(), flags, friendly_name);
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
uint64_t size_of(T& val)
|
uint64_t size_of(T& val)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <boost/iterator/iterator_facade.hpp>
|
#include <boost/iterator/iterator_facade.hpp>
|
||||||
|
#include <boost/iostreams/device/mapped_file.hpp>
|
||||||
|
|
||||||
namespace succinct { namespace util {
|
namespace succinct { namespace util {
|
||||||
|
|
||||||
@@ -204,6 +205,29 @@ namespace succinct { namespace util {
|
|||||||
std::string m_cur_value;
|
std::string m_cur_value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct mmap_lines
|
||||||
|
{
|
||||||
|
typedef buffer_line_iterator iterator;
|
||||||
|
typedef buffer_line_iterator const_iterator;
|
||||||
|
|
||||||
|
mmap_lines(std::string filename)
|
||||||
|
: m_map(filename)
|
||||||
|
{}
|
||||||
|
|
||||||
|
const_iterator begin() const
|
||||||
|
{
|
||||||
|
return const_iterator(m_map.data(), m_map.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
const_iterator end() const
|
||||||
|
{
|
||||||
|
return const_iterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
boost::iostreams::mapped_file_source m_map;
|
||||||
|
};
|
||||||
|
|
||||||
struct input_error : std::invalid_argument
|
struct input_error : std::invalid_argument
|
||||||
{
|
{
|
||||||
input_error(std::string const& what)
|
input_error(std::string const& what)
|
||||||
|
|||||||
@@ -19,18 +19,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "vulkan_wrapper.h"
|
#include "vulkan_wrapper.h"
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
#ifndef WIN32_LEAN_AND_MEAN
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
#endif
|
|
||||||
#ifndef NOMINMAX
|
|
||||||
#define NOMINMAX
|
|
||||||
#endif
|
|
||||||
#include <windows.h>
|
|
||||||
#else
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
int InitVulkan(void) {
|
int InitVulkan(void) {
|
||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
@@ -41,9 +30,6 @@ int InitVulkan(void) {
|
|||||||
if (!libvulkan) {
|
if (!libvulkan) {
|
||||||
libvulkan = dlopen("libMoltenVK.dylib", RTLD_NOW | RTLD_LOCAL);
|
libvulkan = dlopen("libMoltenVK.dylib", RTLD_NOW | RTLD_LOCAL);
|
||||||
}
|
}
|
||||||
#elif defined( _WIN32 )
|
|
||||||
HMODULE libvulkan = LoadLibraryA("vulkan-1.dll");
|
|
||||||
auto dlsym = [](HMODULE h, char const * name) { return GetProcAddress(h, name); };
|
|
||||||
#else
|
#else
|
||||||
void* libvulkan = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL);
|
void* libvulkan = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL);
|
||||||
if (!libvulkan) {
|
if (!libvulkan) {
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
cmake_minimum_required(VERSION 3.22.1)
|
cmake_minimum_required(VERSION 3.22.1)
|
||||||
|
|
||||||
project(omim C CXX)
|
project(omim C CXX)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 23)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
set(CMAKE_C_STANDARD 23)
|
set(CMAKE_C_STANDARD 17)
|
||||||
# Our code does not rely on gnu extensions.
|
# Our code does not rely on gnu extensions.
|
||||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
set(CMAKE_C_EXTENSIONS OFF)
|
set(CMAKE_C_EXTENSIONS OFF)
|
||||||
@@ -39,12 +38,12 @@ if (APPLE AND NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL Android))
|
|||||||
# https://gitlab.kitware.com/cmake/cmake/-/issues/21963
|
# https://gitlab.kitware.com/cmake/cmake/-/issues/21963
|
||||||
enable_language(OBJC)
|
enable_language(OBJC)
|
||||||
set(CMAKE_OBJC_EXTENSIONS OFF)
|
set(CMAKE_OBJC_EXTENSIONS OFF)
|
||||||
set(CMAKE_OBJC_STANDARD 23)
|
set(CMAKE_OBJC_STANDARD 11)
|
||||||
set(CMAKE_OBJC_FLAGS -fobjc-arc)
|
set(CMAKE_OBJC_FLAGS -fobjc-arc)
|
||||||
set(CMAKE_OBJC_VISIBILITY_PRESET hidden)
|
set(CMAKE_OBJC_VISIBILITY_PRESET hidden)
|
||||||
enable_language(OBJCXX)
|
enable_language(OBJCXX)
|
||||||
set(CMAKE_OBJCXX_EXTENSIONS OFF)
|
set(CMAKE_OBJCXX_EXTENSIONS OFF)
|
||||||
set(CMAKE_OBJCXX_STANDARD 23)
|
set(CMAKE_OBJCXX_STANDARD 20)
|
||||||
set(CMAKE_OBJCXX_FLAGS -fobjc-arc)
|
set(CMAKE_OBJCXX_FLAGS -fobjc-arc)
|
||||||
set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden)
|
set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden)
|
||||||
endif()
|
endif()
|
||||||
@@ -85,7 +84,7 @@ if (MSVC)
|
|||||||
add_compile_options(/utf-8)
|
add_compile_options(/utf-8)
|
||||||
add_link_options(/INCREMENTAL:NO)
|
add_link_options(/INCREMENTAL:NO)
|
||||||
else()
|
else()
|
||||||
add_compile_options(-ffast-math $<$<CXX_COMPILER_ID:GNU>:-Wno-psabi>)
|
add_compile_options(-ffast-math)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (PLATFORM_WIN)
|
if (PLATFORM_WIN)
|
||||||
@@ -104,7 +103,7 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
|||||||
elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel")
|
elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel")
|
||||||
add_definitions(-DRELEASE)
|
add_definitions(-DRELEASE)
|
||||||
if (NOT MSVC)
|
if (NOT MSVC)
|
||||||
add_compile_options(-O3 $<$<CXX_COMPILER_ID:GNU>:-flto=auto>)
|
add_compile_options(-Ofast $<$<CXX_COMPILER_ID:GNU>:-flto=auto>) # Also enables -ffast-math
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE})
|
message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE})
|
||||||
@@ -120,7 +119,7 @@ if (PLATFORM_LINUX AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_BUILD_T
|
|||||||
add_compile_options(-fno-fat-lto-objects)
|
add_compile_options(-fno-fat-lto-objects)
|
||||||
# To fix ar and ranlib "plugin needed to handle lto object".
|
# To fix ar and ranlib "plugin needed to handle lto object".
|
||||||
string(REGEX MATCH "[0-9]+" GCC_MAJOR_VERSION ${CMAKE_CXX_COMPILER_VERSION})
|
string(REGEX MATCH "[0-9]+" GCC_MAJOR_VERSION ${CMAKE_CXX_COMPILER_VERSION})
|
||||||
file(GLOB_RECURSE plugin /usr/lib/gcc/*/${GCC_MAJOR_VERSION}*/liblto_plugin.so)
|
file(GLOB_RECURSE plugin /usr/lib/gcc/*/${GCC_MAJOR_VERSION}/liblto_plugin.so)
|
||||||
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
|
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
|
||||||
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> --plugin ${plugin} <TARGET>")
|
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> --plugin ${plugin} <TARGET>")
|
||||||
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
|
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
|
||||||
@@ -175,15 +174,15 @@ if (NOT PLATFORM_IPHONE AND NOT PLATFORM_ANDROID)
|
|||||||
find_package(Qt6 COMPONENTS REQUIRED ${qt_components} PATHS $ENV{QT_PATH} /opt/homebrew/opt/qt@6 /usr/local/opt/qt@6 /usr/lib/x86_64-linux-gnu/qt6)
|
find_package(Qt6 COMPONENTS REQUIRED ${qt_components} PATHS $ENV{QT_PATH} /opt/homebrew/opt/qt@6 /usr/local/opt/qt@6 /usr/lib/x86_64-linux-gnu/qt6)
|
||||||
|
|
||||||
set(MINIMUM_REQUIRED_QT_VERSION 6.4.0)
|
set(MINIMUM_REQUIRED_QT_VERSION 6.4.0)
|
||||||
if (Qt6_VERSION VERSION_LESS ${MINIMUM_REQUIRED_QT_VERSION})
|
if (Qt6Widgets_VERSION VERSION_LESS ${MINIMUM_REQUIRED_QT_VERSION})
|
||||||
message(FATAL_ERROR "Unsupported Qt version: ${Qt6_VERSION}, the minimum required is ${MINIMUM_REQUIRED_QT_VERSION}")
|
message(FATAL_ERROR "Unsupported Qt version: ${Qt6Widgets_VERSION}, the minimum required is ${MINIMUM_REQUIRED_QT_VERSION}")
|
||||||
else()
|
else()
|
||||||
message(STATUS "Found Qt version: ${Qt6_VERSION}")
|
message(STATUS "Found Qt version: ${Qt6Widgets_VERSION}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# To allow #include "base/file_name.hpp" in all sources.
|
# To allow #include "base/file_name.hpp" in all sources.
|
||||||
include_directories("${CMAKE_HOME_DIRECTORY}" "${CMAKE_HOME_DIRECTORY}/libs" "${CMAKE_HOME_DIRECTORY}/tools")
|
include_directories(${CMAKE_HOME_DIRECTORY})
|
||||||
|
|
||||||
if (USE_PCH)
|
if (USE_PCH)
|
||||||
message(STATUS "Precompiled headers are ON")
|
message(STATUS "Precompiled headers are ON")
|
||||||
@@ -195,7 +194,7 @@ if (USE_PCH)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Should be on the root level, not in 3party, so tests can get these dependencies.
|
# Should be on the root level, not in 3party, so tests can get these dependencies.
|
||||||
if (PLATFORM_LINUX)
|
if (PLATFORM_LINUX OR PLATFORM_WIN)
|
||||||
find_package(ICU COMPONENTS uc i18n data REQUIRED)
|
find_package(ICU COMPONENTS uc i18n data REQUIRED)
|
||||||
find_package(Freetype REQUIRED)
|
find_package(Freetype REQUIRED)
|
||||||
find_package(harfbuzz REQUIRED)
|
find_package(harfbuzz REQUIRED)
|
||||||
@@ -225,43 +224,50 @@ endif()
|
|||||||
# Used in qt/ and shaders/
|
# Used in qt/ and shaders/
|
||||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||||
|
|
||||||
execute_process(
|
add_subdirectory(base)
|
||||||
COMMAND ${Python3_EXECUTABLE} -c "import google.protobuf;
|
add_subdirectory(coding)
|
||||||
print(google.protobuf.__version__)"
|
add_subdirectory(descriptions)
|
||||||
RESULT_VARIABLE PROTOBUF_CHECK
|
add_subdirectory(drape)
|
||||||
OUTPUT_VARIABLE PROTOBUF_VERSION
|
add_subdirectory(drape_frontend)
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
add_subdirectory(editor)
|
||||||
ERROR_QUIET
|
add_subdirectory(ge0)
|
||||||
)
|
add_subdirectory(generator/mwm_diff)
|
||||||
|
add_subdirectory(geometry)
|
||||||
if(PROTOBUF_CHECK EQUAL 0)
|
add_subdirectory(indexer)
|
||||||
if(PROTOBUF_VERSION VERSION_LESS "4.0.0")
|
add_subdirectory(kml)
|
||||||
message(STATUS "Python protobuf ${PROTOBUF_VERSION} found (< 4.0)")
|
add_subdirectory(map)
|
||||||
else()
|
add_subdirectory(cppjansson)
|
||||||
message(FATAL_ERROR "Python protobuf ${PROTOBUF_VERSION} found, but version < 4.0 required")
|
add_subdirectory(platform)
|
||||||
endif()
|
add_subdirectory(routing)
|
||||||
else()
|
add_subdirectory(routing_common)
|
||||||
message(FATAL_ERROR "Python protobuf not found. Install version <4.0")
|
add_subdirectory(search)
|
||||||
endif()
|
add_subdirectory(shaders)
|
||||||
|
add_subdirectory(storage)
|
||||||
|
add_subdirectory(tracking)
|
||||||
add_subdirectory(libs)
|
add_subdirectory(traffic)
|
||||||
|
add_subdirectory(transit)
|
||||||
|
|
||||||
if (PLATFORM_DESKTOP)
|
if (PLATFORM_DESKTOP)
|
||||||
add_subdirectory(dev_sandbox)
|
omim_add_tool_subdirectory(feature_list)
|
||||||
add_subdirectory(generator)
|
add_subdirectory(generator)
|
||||||
add_subdirectory(tools)
|
add_subdirectory(openlr)
|
||||||
|
add_subdirectory(poly_borders)
|
||||||
|
omim_add_tool_subdirectory(topography_generator)
|
||||||
|
add_subdirectory(track_analyzing)
|
||||||
|
omim_add_tool_subdirectory(track_generator)
|
||||||
if (NOT SKIP_QT_GUI)
|
if (NOT SKIP_QT_GUI)
|
||||||
add_subdirectory(qt)
|
add_subdirectory(qt)
|
||||||
|
omim_add_tool_subdirectory(skin_generator)
|
||||||
endif()
|
endif()
|
||||||
if (GENERATOR_TOOL)
|
if (GENERATOR_TOOL)
|
||||||
add_compile_options(-march=native -mtune=native)
|
add_compile_options(-march=native -mtune=native)
|
||||||
message(STATUS "target CPU optimizations enabled, produced binaries will NOT work on a different CPU")
|
message(STATUS "target CPU optimizations enabled, produced binaries will NOT work on a different CPU")
|
||||||
endif()
|
endif()
|
||||||
|
add_subdirectory(dev_sandbox)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
omim_add_test_subdirectory(libs/qt_tstfrm)
|
omim_add_test_subdirectory(qt_tstfrm)
|
||||||
|
|
||||||
if (PLATFORM_ANDROID)
|
if (PLATFORM_ANDROID)
|
||||||
add_subdirectory(android/sdk/src/main/cpp)
|
add_subdirectory(android/app/src/main/cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
35
README.md
@@ -19,20 +19,20 @@
|
|||||||
</div>
|
</div>
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://codeberg.org/comaps/comaps/src/branch/main/LICENSE">
|
<a href="https://codeberg.org/comaps/comaps/releases">
|
||||||
<img src="https://img.shields.io/github/license/comaps/comaps?style=for-the-badge&logo=opensourceinitiative&logoColor=white&color=588157" alt="License"/>
|
<img src="https://img.shields.io/github/license/comaps/comaps?style=for-the-badge&logo=opensourceinitiative&logoColor=white&color=588157" alt="License" style="width: 90%; max-width: 150px;"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/comaps/comaps/actions/workflows/android-check.yaml">
|
<a href="https://github.com/comaps/comaps/actions/workflows/android-check.yaml">
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/android-check.yaml?label=Android%20Build&logo=android&logoColor=white&style=for-the-badge" alt="Android Build Status"/>
|
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/android-check.yaml?label=Android%20Build&logo=android&logoColor=white&style=for-the-badge&color=588157" alt="Android Build Status" style="width: 90%; max-width: 170px;"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/comaps/comaps/actions/workflows/ios-check.yaml">
|
<a href="https://github.com/comaps/comaps/actions/workflows/ios-check.yaml">
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/ios-check.yaml?label=iOS%20Build&logo=apple&logoColor=white&style=for-the-badge" alt="iOS Build Status"/>
|
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/ios-check.yaml?label=iOS%20Build&logo=apple&logoColor=white&style=for-the-badge&color=588157" alt="iOS Build Status" style="width: 90%; max-width: 145px;"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://opencollective.com/comaps">
|
<a href="https://opencollective.com/comaps">
|
||||||
<img src="https://img.shields.io/opencollective/all/comaps?label=Open%20Collective%20Donors&logo=opencollective&logoColor=white&style=for-the-badge&color=588157" alt="Open Collective Donors"/>
|
<img src="https://img.shields.io/opencollective/all/comaps?label=Open%20Collective%20Donors&logo=opencollective&logoColor=white&style=for-the-badge&color=588157" alt="Open Collective Donors" style="width: 90%; max-width: 191px;"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://liberapay.com/CoMaps">
|
<a href="https://liberapay.com/CoMaps">
|
||||||
<img src="https://img.shields.io/liberapay/patrons/CoMaps.svg?label=Liberapay%20Patrons&logo=liberapay&logoColor=white&style=for-the-badge&color=588157" alt="Liberapay Patrons"/>
|
<img src="https://img.shields.io/liberapay/patrons/CoMaps.svg?label=Liberapay%20Patrons&logo=liberapay&logoColor=white&style=for-the-badge&color=588157" alt="Liberapay Patrons" style="width: 90%; max-width: 160px;"/>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -41,6 +41,8 @@
|
|||||||
|
|
||||||
A community-led free & open source maps app based on [OpenStreetMap](https://www.openstreetmap.org), built for transparency, privacy, and not-for-profit values. A fork of Organic Maps, originally based on Maps.ME.
|
A community-led free & open source maps app based on [OpenStreetMap](https://www.openstreetmap.org), built for transparency, privacy, and not-for-profit values. A fork of Organic Maps, originally based on Maps.ME.
|
||||||
|
|
||||||
|
**Available for:** Android, iOS, ARM macOS, and alpha Linux/macOS desktop builds (also usable on Linux phones).
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://apps.apple.com/app/comaps/id6747180809">
|
<a href="https://apps.apple.com/app/comaps/id6747180809">
|
||||||
<img src="docs/badges/apple-appstore.png" alt="App Store" width="160"/>
|
<img src="docs/badges/apple-appstore.png" alt="App Store" width="160"/>
|
||||||
@@ -51,12 +53,6 @@ A community-led free & open source maps app based on [OpenStreetMap](https://www
|
|||||||
<a href="https://f-droid.org/en/packages/app.comaps.fdroid/">
|
<a href="https://f-droid.org/en/packages/app.comaps.fdroid/">
|
||||||
<img src="docs/badges/fdroid.png" alt="F-Droid" width="160"/>
|
<img src="docs/badges/fdroid.png" alt="F-Droid" width="160"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://apt.izzysoft.de/fdroid/index/apk/app.comaps">
|
|
||||||
<img src="docs/badges/izzyondroid.png" alt="Obtainium" width="160"/>
|
|
||||||
</a>
|
|
||||||
<a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://codeberg.org/comaps/comaps">
|
|
||||||
<img src="docs/badges/obtainium.png" alt="Obtainium" width="160"/>
|
|
||||||
</a>
|
|
||||||
<a href="https://codeberg.org/comaps/comaps/releases">
|
<a href="https://codeberg.org/comaps/comaps/releases">
|
||||||
<img src="docs/badges/codeberg.png" alt="Codeberg" width="160"/>
|
<img src="docs/badges/codeberg.png" alt="Codeberg" width="160"/>
|
||||||
</a>
|
</a>
|
||||||
@@ -78,10 +74,9 @@ A community-led free & open source maps app based on [OpenStreetMap](https://www
|
|||||||
## ⚡️ Highlights
|
## ⚡️ Highlights
|
||||||
|
|
||||||
- **Offline-first**: Navigate without a connection
|
- **Offline-first**: Navigate without a connection
|
||||||
- **Privacy-respecting**: No tracking, ads or data collection
|
- **Privacy-respecting**: No tracking, Ads or data collection
|
||||||
- **Lightweight**: Battery- and space-efficient
|
- **Lightweight**: Battery- and space-efficient
|
||||||
- **Simple**: Polished, user-focused interface
|
- **Simple**: Polished, user-focused interface
|
||||||
- **Cross-platform**: Available for Android, iOS, MacOS, and Linux.
|
|
||||||
- **Community-built**: Free, open source, and collaborative
|
- **Community-built**: Free, open source, and collaborative
|
||||||
- **Transparent**: Open finances and governance
|
- **Transparent**: Open finances and governance
|
||||||
|
|
||||||
@@ -127,8 +122,10 @@ You can help by donating, contributing code, translating, or by telling others a
|
|||||||
|
|
||||||
- Build instructions: [docs/INSTALL.md](docs/INSTALL.md)
|
- Build instructions: [docs/INSTALL.md](docs/INSTALL.md)
|
||||||
- Contribution guide: [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md)
|
- Contribution guide: [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md)
|
||||||
|
> [!NOTE]
|
||||||
|
> Some docs might be outdated, contain broken links or old references to Organic Maps, etc. Its a work in progress and help is much appreciated!
|
||||||
|
|
||||||
There is a dedicated [Zulip](https://codeberg.org/comaps/Governance/src/branch/main/contribute.md#3-team-messaging) chat for active contributors.
|
There is a dedicated Zulip chat for active contributors: [Zulip](https://comaps.zulipchat.com)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -142,7 +139,7 @@ There is a dedicated [Zulip](https://codeberg.org/comaps/Governance/src/branch/m
|
|||||||
|
|
||||||
## 💸 Funding
|
## 💸 Funding
|
||||||
|
|
||||||
CoMaps is free. To fund development, we rely on your voluntary support ♥️
|
CoMaps is free. To stay that way, it relies on your support.
|
||||||
Donate via [OpenCollective](https://opencollective.com/comaps/donate) or [Liberapay](https://liberapay.com/CoMaps).
|
Donate via [OpenCollective](https://opencollective.com/comaps/donate) or [Liberapay](https://liberapay.com/CoMaps).
|
||||||
The project's financial information is completely open and transparent at [our Open Collective](https://opencollective.com/comaps).
|
The project's financial information is completely open and transparent at [our Open Collective](https://opencollective.com/comaps).
|
||||||
|
|
||||||
@@ -158,12 +155,6 @@ SHA-256: 4894e8e6963627ef660031d8593fe77297f835acb4e23810003e926135023b4c
|
|||||||
SHA-1: 8b7b5739f917e9f7c681671ced0c9c8562123ade
|
SHA-1: 8b7b5739f917e9f7c681671ced0c9c8562123ade
|
||||||
MD5: 9cce0ffea281dc2f0e0a154d6d2e281e
|
MD5: 9cce0ffea281dc2f0e0a154d6d2e281e
|
||||||
```
|
```
|
||||||
|
|
||||||
To verify CoMaps via [AppVerifier](https://github.com/soupslurpr/AppVerifier), use the following signing certificate fingerprint:
|
|
||||||
```
|
|
||||||
app.comaps
|
|
||||||
48:94:E8:E6:96:36:27:EF:66:00:31:D8:59:3F:E7:72:97:F8:35:AC:B4:E2:38:10:00:3E:92:61:35:02:3B:4C
|
|
||||||
```
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ⚖️ License
|
## ⚖️ License
|
||||||
|
|||||||
@@ -18,4 +18,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
libxi-dev \
|
libxi-dev \
|
||||||
optipng
|
optipng
|
||||||
WORKDIR /root/comaps
|
WORKDIR /root/comaps
|
||||||
|
RUN ./configure.sh
|
||||||
CMD ./gradlew -Parm64 assembleFdroidDebug
|
CMD ./gradlew -Parm64 assembleFdroidDebug
|
||||||
|
|||||||
3
android/app/.gitignore
vendored
@@ -24,6 +24,3 @@
|
|||||||
/src/main/res/drawable-mdpi/uk_northern_ireland.png
|
/src/main/res/drawable-mdpi/uk_northern_ireland.png
|
||||||
/src/main/res/drawable-mdpi/uk_scotland.png
|
/src/main/res/drawable-mdpi/uk_scotland.png
|
||||||
/src/main/res/drawable-mdpi/uk_wales.png
|
/src/main/res/drawable-mdpi/uk_wales.png
|
||||||
|
|
||||||
# Symlinked to F-Droid relnotes by tools/unix/link_gplay_relnotes.sh
|
|
||||||
/src/google/play/release-notes
|
|
||||||
@@ -15,32 +15,55 @@ buildscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
maven { url 'https://www.jitpack.io' } // MPAndroidChart
|
||||||
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'com.github.triplet.play'
|
apply plugin: 'com.github.triplet.play'
|
||||||
apply plugin: 'ru.cian.huawei-publish-gradle-plugin'
|
apply plugin: 'ru.cian.huawei-publish-gradle-plugin'
|
||||||
|
|
||||||
|
def run(cmd) {
|
||||||
|
def stdout = new ByteArrayOutputStream()
|
||||||
|
exec {
|
||||||
|
commandLine = cmd
|
||||||
|
standardOutput = stdout
|
||||||
|
}
|
||||||
|
return stdout.toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
import com.github.triplet.gradle.androidpublisher.ReleaseStatus
|
import com.github.triplet.gradle.androidpublisher.ReleaseStatus
|
||||||
|
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
|
||||||
|
|
||||||
|
def getVersion() {
|
||||||
|
def isWindows = DefaultNativePlatform.getCurrentOperatingSystem().isWindows()
|
||||||
|
def bash = isWindows ? 'C:\\Program Files\\Git\\bin\\bash.exe' : 'bash'
|
||||||
|
def versionCode = Integer.parseInt(run([bash, '../../tools/unix/version.sh', 'android_code']).trim())
|
||||||
|
def versionName = run([bash, '../../tools/unix/version.sh', 'android_name']).trim()
|
||||||
|
return new Tuple2(versionCode, versionName)
|
||||||
|
}
|
||||||
|
|
||||||
def getCommitMessage() {
|
def getCommitMessage() {
|
||||||
return run(['git', '--no-pager', 'show', '-s', '--format=%s%n%n%b', 'HEAD']).trim()
|
return run(['git', '--no-pager', 'show', '-s', '--format=%s%n%n%b', 'HEAD']).trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def osName = System.properties['os.name'].toLowerCase()
|
||||||
|
|
||||||
project.ext.appId = 'app.comaps'
|
project.ext.appId = 'app.comaps'
|
||||||
project.ext.appName = 'CoMaps'
|
project.ext.appName = 'CoMaps'
|
||||||
|
|
||||||
|
// I have Java 21 installed, but this doesn't work on MacOS.
|
||||||
java {
|
//java {
|
||||||
toolchain {
|
// toolchain {
|
||||||
languageVersion.set(JavaLanguageVersion.of(21))
|
// languageVersion.set(JavaLanguageVersion.of(17))
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = 'app.organicmaps'
|
namespace 'app.organicmaps'
|
||||||
|
|
||||||
// TODO: it should not be here, but in sdk/build.gradle. But for some reason it should be specified here as well.
|
|
||||||
ndkVersion = '28.2.13676358'
|
|
||||||
|
|
||||||
dependenciesInfo {
|
dependenciesInfo {
|
||||||
// Disables dependency metadata when building APKs (for IzzyOnDroid/F-Droid)
|
// Disables dependency metadata when building APKs (for IzzyOnDroid/F-Droid)
|
||||||
@@ -62,23 +85,79 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// All properties are read from gradle.properties file
|
// All properties are read from gradle.properties file
|
||||||
compileSdk = propCompileSdkVersion.toInteger()
|
compileSdk propCompileSdkVersion.toInteger()
|
||||||
|
|
||||||
|
ndkVersion '28.2.13676358'
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
versionCode = rootProject.ext.versionCode
|
// Default package name is taken from the manifest and should be app.comaps
|
||||||
versionName = rootProject.ext.versionName
|
def ver = getVersion()
|
||||||
|
versionCode = ver.V1
|
||||||
|
versionName = ver.V2
|
||||||
println('Version: ' + versionName)
|
println('Version: ' + versionName)
|
||||||
println('VersionCode: ' + versionCode)
|
println('VersionCode: ' + versionCode)
|
||||||
minSdk = propMinSdkVersion.toInteger()
|
minSdk propMinSdkVersion.toInteger()
|
||||||
targetSdk = propTargetSdkVersion.toInteger()
|
targetSdk propTargetSdkVersion.toInteger()
|
||||||
applicationId project.ext.appId
|
applicationId project.ext.appId
|
||||||
buildConfigField 'String', 'SUPPORT_MAIL', '"android@comaps.app"'
|
buildConfigField 'String', 'SUPPORT_MAIL', '"android@comaps.app"'
|
||||||
// Should be customized in flavors.
|
// Should be customized in flavors.
|
||||||
buildConfigField 'String', 'REVIEW_URL', '""'
|
buildConfigField 'String', 'REVIEW_URL', '""'
|
||||||
|
|
||||||
base.archivesName = appName.replaceAll('\\s','') + '-' + defaultConfig.versionCode
|
externalNativeBuild {
|
||||||
|
def pchFlag = 'OFF'
|
||||||
|
if (project.hasProperty('pch')) pchFlag = 'ON'
|
||||||
|
|
||||||
ndk.debugSymbolLevel = 'full'
|
def njobs = ''
|
||||||
|
if (project.hasProperty('njobs')) njobs = project.getProperty('njobs')
|
||||||
|
|
||||||
|
def enableVulkanDiagnostics = 'OFF'
|
||||||
|
if (project.hasProperty('enableVulkanDiagnostics')) {
|
||||||
|
enableVulkanDiagnostics = project.getProperty('enableVulkanDiagnostics')
|
||||||
|
}
|
||||||
|
|
||||||
|
def enableTrace = 'OFF'
|
||||||
|
if (project.hasProperty('enableTrace')) {
|
||||||
|
enableTrace = project.getProperty('enableTrace')
|
||||||
|
}
|
||||||
|
|
||||||
|
cmake {
|
||||||
|
cppFlags '-fexceptions', '-frtti'
|
||||||
|
// There is no sense to enable sections without gcc's --gc-sections flag.
|
||||||
|
cFlags '-fno-function-sections', '-fno-data-sections',
|
||||||
|
'-Wno-extern-c-compat'
|
||||||
|
arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static',
|
||||||
|
"-DOS=$osName", '-DSKIP_TESTS=ON', '-DSKIP_TOOLS=ON', "-DUSE_PCH=$pchFlag",
|
||||||
|
"-DNJOBS=$njobs", "-DENABLE_VULKAN_DIAGNOSTICS=$enableVulkanDiagnostics",
|
||||||
|
"-DENABLE_TRACE=$enableTrace"
|
||||||
|
targets 'organicmaps'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use, for example, -Parm32 gradle parameter to build only for armeabi-v7a.
|
||||||
|
ndk {
|
||||||
|
abiFilters = new HashSet<>()
|
||||||
|
if (project.hasProperty('arm32') || project.hasProperty('armeabi-v7a')) {
|
||||||
|
abiFilters.add('armeabi-v7a')
|
||||||
|
}
|
||||||
|
if (project.hasProperty('arm64') || project.hasProperty('arm64-v8a')) {
|
||||||
|
abiFilters.add('arm64-v8a')
|
||||||
|
}
|
||||||
|
if (project.hasProperty('x86')) {
|
||||||
|
abiFilters.add('x86')
|
||||||
|
}
|
||||||
|
if (project.hasProperty('x86_64') || project.hasProperty('x64')) {
|
||||||
|
abiFilters.add('x86_64')
|
||||||
|
}
|
||||||
|
if (abiFilters.isEmpty()) {
|
||||||
|
abiFilters.add('armeabi-v7a')
|
||||||
|
abiFilters.add('arm64-v8a')
|
||||||
|
// For the emulator, chromebooks and some Intel Atom devices.
|
||||||
|
abiFilters.add('x86_64')
|
||||||
|
}
|
||||||
|
println('Building for ' + abiFilters + ' archs.')
|
||||||
|
}
|
||||||
|
|
||||||
|
setProperty('archivesBaseName', appName.replaceAll('\\s','') + '-' + defaultConfig.versionCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
flavorDimensions += 'default'
|
flavorDimensions += 'default'
|
||||||
@@ -128,21 +207,23 @@ android {
|
|||||||
splits.abi {
|
splits.abi {
|
||||||
boolean enabled = project.hasProperty('splitApk')
|
boolean enabled = project.hasProperty('splitApk')
|
||||||
println ('Create separate apks: ' + enabled)
|
println ('Create separate apks: ' + enabled)
|
||||||
enable = enabled
|
enable enabled
|
||||||
reset()
|
reset()
|
||||||
include 'x86', 'armeabi-v7a', 'arm64-v8a', 'x86_64'
|
include 'x86', 'armeabi-v7a', 'arm64-v8a', 'x86_64'
|
||||||
universalApk = true
|
universalApk true
|
||||||
}
|
}
|
||||||
|
|
||||||
lint {
|
lint {
|
||||||
disable 'MissingTranslation'
|
disable 'MissingTranslation'
|
||||||
// https://github.com/organicmaps/organicmaps/issues/3551
|
// https://github.com/organicmaps/organicmaps/issues/3551
|
||||||
disable 'MissingQuantity', 'UnusedQuantity'
|
disable 'MissingQuantity', 'UnusedQuantity'
|
||||||
|
// https://github.com/organicmaps/organicmaps/issues/3550
|
||||||
|
disable 'ByteOrderMark'
|
||||||
// https://github.com/organicmaps/organicmaps/issues/1077
|
// https://github.com/organicmaps/organicmaps/issues/1077
|
||||||
disable 'CustomSplashScreen'
|
disable 'CustomSplashScreen'
|
||||||
// https://github.com/organicmaps/organicmaps/issues/3610
|
// https://github.com/organicmaps/organicmaps/issues/3610
|
||||||
disable 'InsecureBaseConfiguration'
|
disable 'InsecureBaseConfiguration'
|
||||||
abortOnError = true
|
abortOnError true
|
||||||
}
|
}
|
||||||
|
|
||||||
gradle.projectsEvaluated {
|
gradle.projectsEvaluated {
|
||||||
@@ -201,29 +282,33 @@ android {
|
|||||||
debug {
|
debug {
|
||||||
applicationIdSuffix '.debug' // Allows to install debug and release builds together
|
applicationIdSuffix '.debug' // Allows to install debug and release builds together
|
||||||
versionNameSuffix '-debug'
|
versionNameSuffix '-debug'
|
||||||
|
jniDebuggable true // Enable jni debug build
|
||||||
zipAlignEnabled true
|
zipAlignEnabled true
|
||||||
signingConfig = signingConfigs.debug
|
signingConfig signingConfigs.debug
|
||||||
resValue 'string', 'app_name', 'CoMaps Debug'
|
resValue 'string', 'app_name', 'CoMaps Debug'
|
||||||
|
// Do not generate separate debug symbols for debug apps, because we don't distribute them.
|
||||||
|
ndk.debugSymbolLevel = 'none'
|
||||||
}
|
}
|
||||||
|
|
||||||
release {
|
release {
|
||||||
if (taskName.contains('release')) {
|
if (taskName.contains('release')) {
|
||||||
if (secureReleasePropertiesFileExists) {
|
if (secureReleasePropertiesFileExists) {
|
||||||
println('Using RELEASE signing keys from secure.properties.release')
|
println('Using RELEASE signing keys from secure.properties.release')
|
||||||
signingConfig = signingConfigs.release
|
signingConfig signingConfigs.release
|
||||||
} else {
|
} else {
|
||||||
println('NO RELEASE signing keys found')
|
println('NO RELEASE signing keys found')
|
||||||
println('Using DEBUG signing keys')
|
println('Using DEBUG signing keys')
|
||||||
signingConfig = signingConfigs.debug
|
signingConfig signingConfigs.debug
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
minifyEnabled true
|
minifyEnabled true
|
||||||
shrinkResources = true
|
shrinkResources true
|
||||||
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
||||||
// To learn more, go to the documentation section about R8 configuration files.
|
// To learn more, go to the documentation section about R8 configuration files.
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
resValue 'string', 'app_name', project.ext.appName
|
resValue 'string', 'app_name', project.ext.appName
|
||||||
|
// Full size symbols are too big for Google, 217mb aab vs 95mb.
|
||||||
|
ndk.debugSymbolLevel = 'symbol_table'
|
||||||
}
|
}
|
||||||
|
|
||||||
beta {
|
beta {
|
||||||
@@ -232,27 +317,37 @@ android {
|
|||||||
if (taskName.contains('beta')) {
|
if (taskName.contains('beta')) {
|
||||||
if (secureTestPropertiesFileExists) {
|
if (secureTestPropertiesFileExists) {
|
||||||
println('Using TEST signing keys from secure.properties.test')
|
println('Using TEST signing keys from secure.properties.test')
|
||||||
signingConfig = signingConfigs.test
|
signingConfig signingConfigs.test
|
||||||
} else {
|
} else {
|
||||||
println('NO TEST signing keys found')
|
println('NO TEST signing keys found')
|
||||||
println('Using DEBUG signing keys')
|
println('Using DEBUG signing keys')
|
||||||
signingConfig = signingConfigs.debug
|
signingConfig signingConfigs.debug
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minifyEnabled true
|
minifyEnabled true
|
||||||
shrinkResources = true
|
shrinkResources true
|
||||||
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
|
||||||
// To learn more, go to the documentation section about R8 configuration files.
|
// To learn more, go to the documentation section about R8 configuration files.
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
matchingFallbacks = ['release'] // use dependencies of "release" build type
|
matchingFallbacks = ['release'] // use dependencies of "release" build type
|
||||||
resValue 'string', 'app_name', 'CoMaps Test'
|
resValue 'string', 'app_name', 'CoMaps Test'
|
||||||
|
// Full size symbols are too big for Google, 217mb aab vs 95mb.
|
||||||
|
ndk.debugSymbolLevel = 'symbol_table'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
externalNativeBuild {
|
||||||
|
cmake {
|
||||||
|
version '3.22.1+'
|
||||||
|
buildStagingDirectory './nativeOutputs'
|
||||||
|
path '../../CMakeLists.txt'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We don't compress these extensions in assets/ because our random FileReader can't read zip-compressed files from apk.
|
// We don't compress these extensions in assets/ because our random FileReader can't read zip-compressed files from apk.
|
||||||
// TODO: Load all minor files via separate call to ReadAsString which can correctly handle compressed files in zip containers.
|
// TODO: Load all minor files via separate call to ReadAsString which can correctly handle compressed files in zip containers.
|
||||||
androidResources {
|
androidResources {
|
||||||
ignoreAssetsPattern = '!.svn:!.git:!.DS_Store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~'
|
ignoreAssetsPattern '!.svn:!.git:!.DS_Store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~'
|
||||||
noCompress = ['txt', 'bin', 'html', 'png', 'json', 'mwm', 'ttf', 'sdf', 'ui', 'config', 'csv', 'spv', 'obj']
|
noCompress = ['txt', 'bin', 'html', 'png', 'json', 'mwm', 'ttf', 'sdf', 'ui', 'config', 'csv', 'spv', 'obj']
|
||||||
localeFilters += [
|
localeFilters += [
|
||||||
"af",
|
"af",
|
||||||
@@ -309,16 +404,14 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
coreLibraryDesugaringEnabled = true
|
coreLibraryDesugaringEnabled true
|
||||||
|
|
||||||
sourceCompatibility JavaVersion.VERSION_21
|
sourceCompatibility JavaVersion.VERSION_17
|
||||||
targetCompatibility JavaVersion.VERSION_21
|
targetCompatibility JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(':sdk')
|
|
||||||
|
|
||||||
coreLibraryDesugaring libs.android.tools.desugar
|
coreLibraryDesugaring libs.android.tools.desugar
|
||||||
|
|
||||||
// Google Play Location Services
|
// Google Play Location Services
|
||||||
@@ -355,7 +448,8 @@ dependencies {
|
|||||||
// Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture
|
// Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture
|
||||||
// https://github.com/organicmaps/organicmaps/issues/6106
|
// https://github.com/organicmaps/organicmaps/issues/6106
|
||||||
implementation libs.google.guava
|
implementation libs.google.guava
|
||||||
implementation libs.appdevnext.androidchart
|
implementation libs.devnullorthrow.mpandroidchart
|
||||||
|
implementation libs.jcip.annotations
|
||||||
|
|
||||||
// Test Dependencies
|
// Test Dependencies
|
||||||
androidTestImplementation libs.androidx.test.junit
|
androidTestImplementation libs.androidx.test.junit
|
||||||
@@ -363,6 +457,10 @@ dependencies {
|
|||||||
testImplementation libs.mockito.core
|
testImplementation libs.mockito.core
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.withType(JavaCompile) {
|
||||||
|
options.compilerArgs << '-Xlint:unchecked' << '-Xlint:deprecation'
|
||||||
|
}
|
||||||
|
|
||||||
android.applicationVariants.all { variant ->
|
android.applicationVariants.all { variant ->
|
||||||
def authorityValue = variant.applicationId + ".provider"
|
def authorityValue = variant.applicationId + ".provider"
|
||||||
def authority = "\"" + authorityValue + "\""
|
def authority = "\"" + authorityValue + "\""
|
||||||
@@ -410,7 +508,3 @@ huaweiPublish {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(JavaCompile).configureEach {
|
|
||||||
options.compilerArgs << '-Xlint:unchecked' << '-Xlint:deprecation'
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<background android:drawable="@color/bg_app_icon_test"/>
|
|
||||||
<foreground android:drawable="@drawable/ic_launcher_foreground_test"/>
|
|
||||||
<monochrome android:drawable="@drawable/ic_launcher_foreground_monochrome"/>
|
|
||||||
</adaptive-icon>
|
|
||||||
BIN
android/app/src/beta/res/mipmap-hdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
android/app/src/beta/res/mipmap-hdpi/ic_launcher_round.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
android/app/src/beta/res/mipmap-mdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
android/app/src/beta/res/mipmap-mdpi/ic_launcher_round.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
android/app/src/beta/res/mipmap-xhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
android/app/src/beta/res/mipmap-xhdpi/ic_launcher_round.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
android/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
android/app/src/beta/res/mipmap-xxhdpi/ic_launcher_round.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
android/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
android/app/src/beta/res/mipmap-xxxhdpi/ic_launcher_round.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<background android:drawable="@color/bg_app_icon_debug"/>
|
|
||||||
<foreground android:drawable="@drawable/ic_launcher_foreground_debug"/>
|
|
||||||
<monochrome android:drawable="@drawable/ic_launcher_foreground_monochrome"/>
|
|
||||||
</adaptive-icon>
|
|
||||||
BIN
android/app/src/debug/res/mipmap-hdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
android/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
android/app/src/debug/res/mipmap-mdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
android/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
android/app/src/debug/res/mipmap-xhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 36 KiB |
BIN
android/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 63 KiB |
BIN
android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 97 KiB |
@@ -1 +0,0 @@
|
|||||||
../../../../google/java/app/organicmaps/location
|
|
||||||
1
android/app/src/fdroid/java/app/organicmaps/sdk/location
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../../../../google/java/app/organicmaps/sdk/location
|
||||||
@@ -1 +0,0 @@
|
|||||||
CoMaps - Mapas ensin conexón con privacidá
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Лесна навигация - Открийте повече от вашето пътуване - Подкрепен от общността
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
CoMaps - Хайкинг, Велосипед, Пътуване без Интернет
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
মানচিত্র নেভিগেশন - আপনার যাত্রা সম্পর্কে আরও জানুন - সম্প্রদায় কর্তৃক পরিচালিত
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
কোম্যাপস - অফলাইনে হাইকিং, সাইকেলিং ও ড্রাইভিং
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Navegació intuïtiva - Descobreix el teu camí - El poder de la comunitat
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
CoMaps - Camina, pedala o condueix privadament
|
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
• OpenStreetMap-Daten vom 4. November
|
Wir stellen vor: Das neue CoMaps-Logo!
|
||||||
• Aktualisierte Karten-Icons, inkl. Farben für Unterhaltungs-, Sport- & andere Unternehmen
|
• Verbesserte Höhenlinien in vielen Regionen (Stufen von 20/50 m)
|
||||||
• Informationen zu Steckdosen an EV-Ladestationen
|
• Links zu Panoramax-Bildern für ausgewählte POIs
|
||||||
• Symbole für Sportzentren, Veranstaltungsorte, Massagesalons, Gästehäuser und einige stillgelegte Unternehmen
|
• OpenStreetMap-Daten vom 13. Juli
|
||||||
• Verbesserungen bei der Suche
|
• Neue Farben für viele Objekte und Farben werden früher angezeigt
|
||||||
• Behebung eines Absturzes bei der Suche
|
• Öffnungszeiten werden beim Antippen eines POI angezeigt
|
||||||
• Verbesserte Sprachführung während der Navigation
|
• Verschiedene Arten von Feuchtgebieten
|
||||||
Weitere Änderungen finden in unseren Codeberg-Versionshinweisen!
|
• Neue Farben für Vegetation und andere Features; einige neue Icons
|
||||||
|
• Wandern: bessere Darstellung der Höhenlinien
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
• OpenStreetMap data as of November 4
|
Introducing CoMaps logo!
|
||||||
• Recategorized map icons including some new colors for entertainment, sports and other businesses
|
|
||||||
• Display info about available sockets on charging stations
|
• upgrade altitude contour lines for many regions to 20 or 50 meters step
|
||||||
• Added bandstands, backless benches and loungers
|
• add Panoramax Picture links to selected POIs
|
||||||
• New icons for different sport centres, event venues, massage salons, guest houses and some disused businesses
|
• OpenStreetMap data as of July 13
|
||||||
• Multiple search improvements and crash fix
|
• add color fills to many features and display fills earlier for existing features
|
||||||
• Improved voice guidance during navigation
|
• display opening hours state when selecting a POI
|
||||||
Check our Codeberg release notes for more changes!
|
• split all wetlands into several distinct types
|
||||||
|
• update vegetation and other map colors, update some map icons
|
||||||
|
• outdoors: bolder altitude contour lines
|
||||||
|
|||||||
@@ -1,65 +0,0 @@
|
|||||||
Una aplicación de mapas gratuita y de código abierto liderada por la comunidad, basada en los datos de OpenStreetMap y reforzada con un compromiso con la transparencia, la privacidad y la ausencia de fines de lucro. CoMaps es un fork o derivado de Organic Maps, que a su vez es un fork de Maps.ME.
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
Lee más sobre los motivos del proyecto y su dirección en <b><i>codeberg.org/comaps</i></b>.
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
Únete allí a la comunidad y ayuda a crear la mejor app de mapas
|
|
||||||
|
|
||||||
• Usa la aplicación y corre la voz sobre ella
|
|
||||||
|
|
||||||
• Envía comentarios y reporta problemas
|
|
||||||
|
|
||||||
• Actualiza los datos del mapa en la app o en el sitio web de OpenStreetMap
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
‣ <b>Enfocada en el uso sin conexión</b>: Planifica y navega tus viajes sin necesidad de conexión móvil, busca puntos de paso en rutas remotas, etc. Todas las funciones están diseñadas para funcionar sin conexión.
|
|
||||||
|
|
||||||
‣ <b>Respeta tu Privacidad</b>: La app está diseñada pensando en tu privacidad: no identifica personas, no rastrea y no recoge datos personales. Sin publicidad.
|
|
||||||
|
|
||||||
‣ <b>Sencilla y Pulida</b>: funciones esenciales fáciles de usar que simplemente funcionan.
|
|
||||||
|
|
||||||
‣ <b>Ahorra Batería y Espacio</b>: No consume la batería como otras apps de navegación. Los mapas compactos ahorran espacio valioso en tu teléfono.
|
|
||||||
|
|
||||||
‣ <b>Gratuita y Creada por la Comunidad</b>: Personas como tú ayudaron a construir la app añadiendo lugares a OpenStreetMap, probando funciones, dando opiniones y contribuyendo con desarrollo o financiación.
|
|
||||||
|
|
||||||
‣ <b>Toma de decisiones y finanzas abiertas y transparentes, sin ánimo de lucro y completamente de código abierto.</b>
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
<b>Funciones Principales</b>:
|
|
||||||
|
|
||||||
• Mapas detallados descargables con lugares que no aparecen en Google Maps
|
|
||||||
|
|
||||||
• Modo exterior con rutas de senderismo destacadas, campings, fuentes de agua, picos, curvas de nivel, etc.
|
|
||||||
|
|
||||||
• Caminos peatonales y carriles bici
|
|
||||||
|
|
||||||
• Puntos de interés como restaurantes, gasolineras, hoteles, tiendas, lugares turísticos y muchos más
|
|
||||||
|
|
||||||
• Búsqueda por nombre, dirección o categoría de punto de interés
|
|
||||||
|
|
||||||
• Navegación con indicaciones por voz para caminar, ir en bici o conducir
|
|
||||||
|
|
||||||
• Guarda tus lugares favoritos con un solo toque
|
|
||||||
|
|
||||||
• Artículos de Wikipedia sin conexión
|
|
||||||
|
|
||||||
• Capa de transporte subterráneo y rutas
|
|
||||||
|
|
||||||
• Grabación de rutas
|
|
||||||
|
|
||||||
• Exporta e importa favoritos y rutas en formatos KML, KMZ y GPX
|
|
||||||
|
|
||||||
• Modo oscuro para usar de noche
|
|
||||||
|
|
||||||
• Mejora los datos del mapa para todos usando un editor básico integrado
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
<b>La Libertad Está Aquí</b>
|
|
||||||
|
|
||||||
Descubre tu camino, navega el mundo con privacidad y con la comunidad como prioridad.
|
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
• Datos OSM del 04/11
|
¡Presentamos el logo de CoMaps!
|
||||||
• Iconos del mapa recategorizados, incluyendo nuevos colores
|
• mejora de isolíneas con más detalle para muchas regiones
|
||||||
• Visualización de información sobre enchufes disponibles en estaciones de recarga
|
• añade enlaces de imágenes de Panoramax a POIs seleccionados
|
||||||
• Adición de iconos para diferentes centros deportivos, lugares de eventos, salones de masajes, posadas y algunos establecimientos comerciales desactivados
|
• datos de OpenStreetMap a 13 de julio
|
||||||
• Varias mejoras y correcciones de errores en la búsqueda
|
• añadidos rellenos de color a muchas características
|
||||||
• Mejora en la orientación por voz durante la navegación
|
• se muestra el estado de horarios de apertura al seleccionar un POI
|
||||||
Más detalles en Codeberg
|
• se dividen los humedales en tipos distintos
|
||||||
|
• se actualiza la vegetación y otros colores del mapa, así como otros iconos
|
||||||
|
• exteriores: líneas de contorno de altitud más gruesas
|
||||||
@@ -1 +0,0 @@
|
|||||||
Navegación sencilla - Descubre más en tu camino - Creado por la comunidad
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
CoMaps - Senderismo, ciclismo y conducción offline
|
|
||||||
@@ -24,7 +24,7 @@ Sartu komunitatean eta lagundu maparik onena aplikatzen
|
|||||||
• Lineaz kanpoko Wikipedia artikuluak
|
• Lineaz kanpoko Wikipedia artikuluak
|
||||||
• Metroaren garraio geruza eta jarraibideak
|
• Metroaren garraio geruza eta jarraibideak
|
||||||
• Arrastoen grabazioa
|
• Arrastoen grabazioa
|
||||||
• Markagailuak eta arrastoak esportatu eta inportatu KML, KMZ, GPX formatuetan
|
• Laster-markak eta ibilbideak esportatu eta inportatu KML, KMZ, GPX formatuetan
|
||||||
• Gauean erabiltzeko modu iluna
|
• Gauean erabiltzeko modu iluna
|
||||||
• Hobetu mapako datuak guztiontzat oinarrizko editore integratua erabiliz
|
• Hobetu mapako datuak guztiontzat oinarrizko editore integratua erabiliz
|
||||||
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
ناوبری آسان نقشه - کشف بیشتر از سفر شما - توسط جامعه
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
CoMaps - کوهنوردی، دوچرخهسواری و رانندگی آفلاین
|
|
||||||
@@ -1,34 +1,32 @@
|
|||||||
Yhteisön johtama vapaa ja avoimeen lähdekoodiin perustuva karttasovellus, jonka karttadata perustuu OpenStreetMap:n avoimeen dataan. Sovelluksessa painottuu vahva sitoutuminen läpinäkyvyyteen, yksityisyyteen ja voittoa tavoittelemattomaan toimintaan. CoMaps on haarautunut Organic Maps:sta, joka taas omalta osaltaan on haarautunut Maps.ME:stä.
|
Yhteisövetoinen, ilmainen ja avoimeen lähdekoodiin perustuva karttasovellus, jonka pohjalla käytetään OpenStreetMapin avointa karttadataa. Sovelluksen kehityksessä on sitouduttu läpinäkyvyyteen, yksityisyyteen ja voittoa tavoittelemattomuuteen. CoMapsin projekti on haarautunut Organic Mapsista, joka taas on haarautunut aiemmin Maps.ME:stä
|
||||||
|
|
||||||
Lue tarkemmin projektin syistä ja sen suunnasta osoitteesta <b><i>codeberg.org/comaps</i></b>.
|
Lue lisää projektin tavotteista ja suunnasta osoitteesta <b><i>codeberg.org/comaps</i></b>.
|
||||||
Liity yhteisöön ja auta kehittämään parasta karttasovellusta
|
Liity yhteisöön ja auta kehittämään paras saatavilla oleva karttasovellus
|
||||||
• Käytä sovellusta ja levitä siitä sanaa
|
• Käytä sovellusta ja kerro siitä myös muille
|
||||||
• Anna palautetta ja raportoi ongelmista
|
• Anna palautetta ja raportoi ongelmia
|
||||||
• Päivitä karttadataa sovelluksessa tai OpenStreetMap:n verkkosivuilla
|
• Päivitä karttoja, joko sovelluksessa tai OpenStreetMapin verkkosivuilla
|
||||||
|
|
||||||
‣ <b>Offline-painotteinen</b>: Suunnittele ja navigoi matkasi ilman verkkoyhteyttä. Etsi reittipisteitä retkilläsi. Kaikki sovelluksen toiminnot on suunniteltu käytettäväksi ilman verkkoyhteyttä.
|
‣ <b>Offline-painotteinen</b>: Suunnittele ja navigoi ulkomailla ilman mobiiliverkkoja. Kaikki sovelluksen toiminnot on suunniteltu käytettäväksi ilman verkkoyhteyttä.
|
||||||
‣ <b>Kunnioittaa yksityisyyttä</b>: Sovellus on suunniteltu yksityisyyttä silmälläpitäen. Sovellu ei tunnista ihmisä, seuraa toimintaasi, eikä kerää henkilökohtaisia tietojasi. Mainosvapaa.
|
‣ <b>Kunnioittaa yksityisyyttä</b>: Sovellus on suunniteltu yksilön yksityisyys silmälläpitäen. Sovellus ei tunnista tai kerää tietoja sinusta. Mainosvapaa.
|
||||||
‣ <b>Yksinkertainen ja viimeistelty</b>: Olennaiset ominaisuudet, joita on helppo käyttää.
|
‣ <b>Yksinkertainen ja viimeistelty</b>: Olennaiset ominaisuudet, joita on helppo käyttää.
|
||||||
‣ <b>Säästää akkua ja tilaa</b>: Ei kuluta akkua, kuten toiset karttasovellukset. Kompaktit kartat säästävät tilaa puhelimessasi.
|
‣ <b>Säästä akkua ja tallennustilaa</b>: Ei kuluta akkua, kuten muut navigointisovellukset. Kompaktit kartat säästävät arvokasta tallennustilaa puhelimessasi.
|
||||||
‣ <b>Ilmainen ja yhteisön rakentama</b>: Ihmiset, kuten sinä ovat auttaneet sovelluksen kehityksessä lisäämällä paikkoja OpenStreetMap:iin, testaamalla sovellusta ja antamalla palautetta. Voit auttaa myös kehittämällä sovellusta ja lahjoittamalla sovelluskehitykseen.
|
‣ <b>Ilmainen ja yhteisön luoma</b>: Vapaaehtoiset, kuten sinä olette auttaneet sovelluksen kehityksessä lisäämällä paikkoja OpenStreetMap:iin, testaamalla sovellusta ja antamalla palautetta. Voit myös auttaa kehittämällä ominaisuuksia ja lahjoittamalla sovelluskehitykseen
|
||||||
‣ <b>Avoin ja läpinäkyvä päätöksenteko ja rahoitus. Voittoa tavoittelematon ja täysin avoimeen lähdekoodiin perustuva.</b>
|
‣ <b>Avoin ja läpinäkyvä päätöksenteko sekä rahoitus. Voittoa tavoittelematon ja täysin avoimeen lähdekoodiin perustuva.</b>
|
||||||
|
|
||||||
<b>Tärkeimmät ominaisuudet</b>:
|
<b>Tärkeimmät ominaisuudet</b>:
|
||||||
<ul>
|
• Ladattavat yksityiskohtaiset kartat paikoista, joita ei löydy edes Google Maps:sta
|
||||||
<li>Ladattavat yksityiskohtaiset kartat paikoista, joita ei löydy edes Google Maps:sta</li>
|
• Ulkoilutila, josta löytyy korostettuna reitit, leirintäpaikat, vesipisteet, huiput ja korkeuserot yms.
|
||||||
<li>Ulkoilutila, josta löytyy korostettuna reitit, leirintäpaikat, vesipisteet, huiput ja korkeuserot yms.</li>
|
• Kävely- ja pyörätiet
|
||||||
<li>Kävely- ja pyörätiet</li>
|
• Kiinnostavat paikat, kuten ravintolat, huoltoasemat, hotellit, kaupat, nähtävyydet ja monta muuta
|
||||||
<li>Kiinnostavat paikat, kuten ravintolat, huoltoasemat, hotellit, kaupat, nähtävyydet ja monta muuta</li>
|
• Etsi nimellä, osoitteella tai kiinnostavan paikan kategorialla
|
||||||
<li>Etsi nimellä, osoitteella tai kiinnostavan paikan kategorialla</li>
|
• Navigointi ääni-ilmoituksilla kävellessä, pyöräillessä tai ajaessa
|
||||||
<li>Navigointi ääni-ilmoituksilla kävellessä, pyöräillessä tai ajaessa</li>
|
• Tallenna suosikkipaikkasi yhdellä napautuksella
|
||||||
<li>Tallenna suosikkipaikkasi yhdellä napautuksella</li>
|
• Offline Wikipedia-artikkelit
|
||||||
<li>Offline Wikipedia-artikkelit</li>
|
• Maanalaisen liikenteen tasot ja ohjeet
|
||||||
<li>Maanalaisen liikenteen tasot ja ohjeet</li>
|
• Reittien tallennus
|
||||||
<li>Reittien tallennus</li>
|
• Tuo ja vie kirjanmerkkejä ja reittejä KML-, KMZ- ja GPX-formaateissa
|
||||||
<li>Tuo ja vie kirjanmerkkejä ja reittejä KML-, KMZ- ja GPX-formaateissa</li>
|
• Tumma tila iltaa ja yötä varten
|
||||||
<li>Tumma tila iltaa ja yötä varten</li>
|
• Paranna karttadataa kaikille sisäänrakennetulla editorilla
|
||||||
<li>Paranna karttadataa kaikille sisäänrakennetulla editorilla</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<b>Vapaus on täällä</b>
|
<b>Vapaus on täällä</b>
|
||||||
Löydä matkasi, navigoi maailmassa yksityisyyden ja yhteisön tukemana!
|
Löydä matkasi ja navigoi maailmalla yksityisyyden ja yhteisön tukemana!
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
CoMaps - Navigoi yksityisesti ilman verkkoyhteyttä
|
CoMaps - Navigoi ilman verkkoyhteyttä yksityisesti
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
• Données OpenStreetMap au 4 novembre
|
Présentation du logo CoMaps !
|
||||||
• Recatégorisation des icônes sur la carte avec ajout de nouvelles couleurs pour certains types de lieux
|
• Amélioration des courbes d’altitude à une précision de 20 ou 50 mètres pour de nombreuses régions
|
||||||
• Affichage des prises sur les bornes électriques
|
• Ajout d'un lien vers les images Panoramax des POI
|
||||||
• Ajout d'icônes pour les centres sportifs, salles d'événements, salon de massage et autres lieux
|
• Données OpenStreetMap du 13 juillet
|
||||||
• Multiple améliorations dans la recherche
|
• Affichage de l’état des heures d’ouverture lors de la sélection d’un POI
|
||||||
• Correction d'un plantage dans la recherche
|
• Mise à jour du style(végétation et zones humides), mise à jour de certaines icônes de la carte
|
||||||
• Amélioration de la synthèse vocale durant la navigation
|
• Outdoors: Améliorations de la visibilité des courbes d'altitude
|
||||||
Plus d'informations sur notre Codeberg
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Navigation facile - Vivez de grands voyages - Propulsé par la communauté
|
Navigation cartographique facile - Découvrez davantage de votre voyage - Propulsé par la communauté
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
CoMaps - Pješačite, biciklirajte, vozite Offline
|
CoMaps - Pješačite, biciklirajte, vozite Offline i privatno
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
Egy közösség által vezetett, ingyenes és nyílt forráskódú térképalkalmazás, amely az OpenStreetMap adatain alapul, és amelynek alapelvei a átláthatóság, az adatvédelem és a nonprofit működés. A CoMaps az Organic Maps alkalmazás egyik változata, amely viszont a Maps.ME alkalmazás egyik változata.
|
|
||||||
|
|
||||||
A projekt előzményeiről és fejlesztési irányáról bővebben a <b><i>codeberg.org/comaps</i></b> oldalon olvashat.
|
|
||||||
Csatlakozzon a közösséghez, és segítsen a legjobb térképalkalmazás létrehozásában
|
|
||||||
• Használja az alkalmazást, és terjessze a hírt róla
|
|
||||||
• Adjon visszajelzést, és jelentsen problémákat
|
|
||||||
• Frissítse a térképadatokat az alkalmazásban vagy az OpenStreetMap weboldalon
|
|
||||||
|
|
||||||
‣ <b>Offline</b>: Tervezze meg és navigálja külföldi utazását mobilszolgáltatás nélkül, keressen útpontokat távoli túrákon stb. Az alkalmazás összes funkciója úgy van kialakítva, hogy offline is működjön.
|
|
||||||
‣ <b>A magánélet tiszteletben tartása</b>: Az alkalmazás a magánélet tiszteletben tartásával lett kialakítva – nem azonosítja az embereket, nem követi nyomon őket és nem gyűjt személyes adatokat. Reklámmentes.
|
|
||||||
‣ <b>Egyszerű és kifinomult</b>: alapvető, könnyen használható funkciók, amelyek egyszerűen működnek.
|
|
||||||
‣ <b>Takarékos az akkumulátorral és a tárhellyel</b>: Nem meríti le az akkumulátort, mint más navigációs alkalmazások. A kompakt térképek értékes helyet takarítanak meg a telefonon.
|
|
||||||
‣ <b>Ingyenes és a közösség által fejlesztett</b>: Az Önhöz hasonló emberek segítettek az alkalmazás fejlesztésében azzal, hogy helyeket adtak hozzá az OpenStreetMaphez, tesztelték és visszajelzéseket adtak a funkciókról, valamint fejlesztői ismereteikkel és pénzzel is hozzájárultak a fejlesztéshez.
|
|
||||||
‣ <b>Nyílt, átlátható döntéshozatal és pénzügyek, nonprofit és teljesen nyílt forráskódú.
|
|
||||||
|
|
||||||
<b>Főbb jellemzők</b>:
|
|
||||||
• Letölthető részletes térképek olyan helyekkel, amelyek nem érhetők el a Google Maps-en
|
|
||||||
• Kültéri mód kiemelt túraútvonalakkal, kempingekkel, vízforrásokkal, csúcsokkal, szintvonalakkal stb.
|
|
||||||
• Gyalogos és kerékpáros útvonalak
|
|
||||||
• Érdekes helyek, például éttermek, benzinkutak, szállodák, üzletek, látnivalók és még sok más
|
|
||||||
• Keresés név, cím vagy érdekes hely kategória alapján
|
|
||||||
• Hangos navigáció gyalogos, kerékpáros vagy autós utazáshoz
|
|
||||||
• Kedvenc helyek könyvjelzővel egyetlen érintéssel
|
|
||||||
• Offline Wikipedia cikkek
|
|
||||||
• Metróhálózat és útvonaltervezés
|
|
||||||
• Útvonalrögzítés
|
|
||||||
• Könyvjelzők, útvonalak exportálása és importálása KML, KMZ, GPX formátumokban
|
|
||||||
• Sötét mód az éjszakai használathoz
|
|
||||||
• A beépített alapszerkesztővel mindenki javíthatja a térképadatokat
|
|
||||||
|
|
||||||
<b>A szabadság itt van</b>
|
|
||||||
Fedezze fel utazását, navigáljon a világban, ahol az adatvédelem és a közösség az első!
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Egyszerű térképnavigáció – Fedezze fel utazását – A közösség támogatásával
|
|
||||||
@@ -1 +1 @@
|
|||||||
CoMaps – túrázás, kerékpározás, autózás offline
|
CoMaps - Túra, Bicikli, Vezetés offline diszkréten
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
Aplikasi peta gratis & sumber terbuka yang dipimpin komunitas, berbasis data OpenStreetMap dan diperkuat dengan komitmen terhadap transparansi, privasi, serta non-profit. CoMaps adalah turunan dari Organic Maps, yang merupakan turunan dari Maps.ME.
|
|
||||||
|
|
||||||
Baca lebih lanjut tentang alasan proyek ini dan arahnya di <b><i>codeberg.org/comaps</i></b>.
|
|
||||||
Bergabunglah dengan komunitas dan bantu menjadikan aplikasi peta terbaik
|
|
||||||
• Gunakan aplikasi ini dan sebarkan
|
|
||||||
• Beri masukan dan laporkan masalah
|
|
||||||
• Perbarui data peta di aplikasi atau di situs OpenStreetMap
|
|
||||||
|
|
||||||
‣ <b>Fokus Offline</b>: Rencanakan dan navigasikan perjalananmu di luar negeri tanpa perlu layanan seluler, cari titik saat hiking jauh, dll. Semua fungsi aplikasi dirancang untuk bekerja offline.
|
|
||||||
‣ <b>Menghormati Privasi</b>: Aplikasi ini dirancang dengan privasi sebagai prioritas – tidak mengidentifikasi orang, tidak melacak, dan tidak mengumpulkan informasi pribadi. Bebas iklan.
|
|
||||||
‣ <b>Sederhana dan Rapi</b>: fitur penting yang mudah digunakan dan langsung berfungsi.
|
|
||||||
‣ <b>Hemat Baterai dan Ruang</b>: Tidak menguras baterai seperti aplikasi navigasi lain. Peta ringkas menghemat ruang berharga di ponselmu.
|
|
||||||
‣ <b>Gratis dan Dibangun oleh Komunitas</b>: Orang seperti kamu membantu membangun aplikasi ini dengan menambahkan tempat ke OpenStreetMap, menguji serta memberi masukan fitur, dan menyumbangkan keterampilan pengembangan maupun dana.
|
|
||||||
‣ <b>Terbuka dan Transparan</b>: Pengambilan keputusan dan keuangan transparan, non-profit, dan sepenuhnya sumber terbuka.
|
|
||||||
|
|
||||||
<b>Fitur Utama</b>:
|
|
||||||
• Peta detail yang bisa diunduh, dengan tempat yang tidak ada di Google Maps
|
|
||||||
• Mode outdoor dengan sorotan jalur hiking, area berkemah, sumber air, puncak, garis kontur, dll
|
|
||||||
• Jalur pejalan kaki dan jalur sepeda
|
|
||||||
• Titik menarik seperti restoran, SPBU, hotel, toko, tempat wisata, dan banyak lagi
|
|
||||||
• Pencarian berdasarkan nama, alamat, atau kategori titik menarik
|
|
||||||
• Navigasi dengan suara untuk berjalan, bersepeda, atau berkendara
|
|
||||||
• Tandai tempat favoritmu dengan sekali tap
|
|
||||||
• Artikel Wikipedia offline
|
|
||||||
• Layer dan rute transportasi subway
|
|
||||||
• Rekaman jejak
|
|
||||||
• Ekspor dan impor bookmark serta jejak dalam format KML, KMZ, GPX
|
|
||||||
• Mode gelap untuk digunakan saat malam
|
|
||||||
• Tingkatkan data peta untuk semua orang dengan editor bawaan sederhana
|
|
||||||
|
|
||||||
<b>Kebebasan Ada di Sini</b>
|
|
||||||
Temukan perjalananmu, jelajahi dunia dengan privasi dan komunitas di garis depan!
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Navigasi peta mudah – Temukan lebih banyak – Didukung oleh komunitas
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
Una app realizzata dalla community gratuita e open-source, basata su OpenStreetMap e sull'impegno alla trasparenza, al rispetto della Privacy e senza scopo di lucro. CoMaps è uno spin-off di Organic Maps, che a sua volta deriva da Maps.ME.
|
Una app sviluppata dalla comunità, gratuita e open-source, basata su OpenStreetMap e sull'impegno alla trasparenza, al rispetto della Privacy senza scopo di lucro. CoMaps è uno spin-off di Organic Maps, che a sua volta deriva da Maps.ME.
|
||||||
|
|
||||||
Leggi delle ragioni del progetto e della sua direzione futura su <b><i>codeberg.org/comaps</i></b>.
|
Leggi delle ragioni del progetto e della sua direzione futura su <b><i>codeberg.org/comaps</i></b>.
|
||||||
Unisciti alla nostra comunità e aiutaci a creare la migliore app di mappe.
|
Unisciti alla nostra comunità e aiutaci a creare la migliore app di mappe.
|
||||||
@@ -15,7 +15,7 @@ Unisciti alla nostra comunità e aiutaci a creare la migliore app di mappe.
|
|||||||
|
|
||||||
<b>Funzionalità principali</b>:
|
<b>Funzionalità principali</b>:
|
||||||
• Scarica mappe dettagliate di luoghi che non sono disponibili su Google Maps
|
• Scarica mappe dettagliate di luoghi che non sono disponibili su Google Maps
|
||||||
• Modalità Outdoor con percorsi escursionistici, campeggi, sorgenti d'acqua, picchi, dislivelli ed altri punti d'interesse evidenziati
|
• Modalità Outdoor con percorsi escursionistici, campeggi, sorgenti d'acqua, picchi, dislivelli ed altro evidenziati
|
||||||
• Strade pedonali e piste ciclabili
|
• Strade pedonali e piste ciclabili
|
||||||
• Punti d'interesse come ristoranti, stazioni di benzina, hotel, negozi, luoghi turistici e molto altro
|
• Punti d'interesse come ristoranti, stazioni di benzina, hotel, negozi, luoghi turistici e molto altro
|
||||||
• Cerca per nome, indirizzo o categoria
|
• Cerca per nome, indirizzo o categoria
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Navigazione semplice - Immergiti nella tua avventura - Realizzato dalla comunità
|
Navigazione semplice - Immergiti nella tua avventura - Sviluppato dalla comunità
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
Vienkārša kartes navigācija - Atklāj vairāk par savu ceļojumu - Darbina kopiena
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
CoMaps - dodies ceļā bezsaistē ar privātumu
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
App għall-mapep b'xejn u b'sors miftuħ (open source) immexxi mill-komunità bbażata fuq dejta minn OpenStreetMap, b'impenn għal trasparenza, privatezza u mhux għal-profitt. CoMaps hija fork ta' Organic Maps, li min-naħa tagħha hija fork ta' Maps.ME.
|
|
||||||
|
|
||||||
Kompli aqra dwar ir-raġunijiet għall-proġett u d-direzzjoni tiegħu hawn <b><i>codeberg.org/comaps</i></b>.
|
|
||||||
Ingħaqad mal-komunità u għin biex toħloq l-aqwa app tal-mapep
|
|
||||||
• Uża l-app u semmiha ma' min taf
|
|
||||||
• Agħti feedback u rrapporta problemi
|
|
||||||
• Aġġorna d-dejta tal-mapep fl-app jew fuq il-websajt OpenStreetMap
|
|
||||||
|
|
||||||
‣ <b>Iffokata fuq offlajn</b>: Ippjana u innaviga l-vjaġġ tiegħek barra minn pajjiżek mingħajr ħtieġa ta' servizz ċellulari, fittex waypoints waqt ħajk, eċċ. Il-funzjonijiet kollha tal-app huma ddisinjati biex jaħdmu offlajn.
|
|
||||||
‣ <b>Tirrispetta l-Privatezza</b>: L-app hija ddisinjata bil-privatezza f'moħħha - ma tidentifikax nies, ma ssegwikx, u ma tiġborx informazzjoni personali. Bla reklami.
|
|
||||||
‣ <b>Sempliċi u Rfinuta</b>: karatteristiċi essenzjali, faċli biex jintużaw u li sempliċement jaħdmu.
|
|
||||||
‣ <b>Tiffrankalek Batterija u Spazju</b>: Ma taħlix il-batterija bħal apps oħra tal-mapep. Mapep kompatti li jiffrankawlek spazju prezzjuż fuq il-mowbajl.
|
|
||||||
‣ <b>B'xejn u Mibnija mill-Komunità</b>: Nies bħalek għenu fl-iżvilupp tal-app billi żiedu postijiet f'OpenStreetMap, ittestjaw u taw feedback dwar il-karatteristiċi u kkontribwew il-ħiliet u l-flus tagħhom.
|
|
||||||
‣ <b>Trasparenza fil-finanzi u fit-teħid ta' deċiżjonijiet, Mhux għall-profitt u sors kompletament miftuħ.</b>
|
|
||||||
|
|
||||||
<b>Karatteristiċi Prinċipali</b>:
|
|
||||||
• Mapep dettaljati li jistgħu jitniżżlu b'postijiet li mhumiex disponibbli fuq Google Maps
|
|
||||||
• Modalità ta' barra b'mogħdijiet tal-mixi, postijiet għal-ikkampjar, sorsi tal-ilma, quċċati, linji tal-kontorn, eċċ.
|
|
||||||
• Mogħdijiet għall-mixi u rotti għar-roti
|
|
||||||
• Postijiet ta' interess bħal ristoranti, stazzjonijiet tal-petrol, lukandi, ħwienet, postijiet turistiċi u ħafna aktar
|
|
||||||
• Fittex bl-isem jew bl-indirizz jew bil-kategorija interess
|
|
||||||
• Navigazzjoni b'avviżi bil-vuċi għall-mixi, ċikliżmu, u sewqan
|
|
||||||
• Immarka l-postijiet favoriti tiegħek b'tapp waħda
|
|
||||||
• Artikli offlajn ta' Wikipedia
|
|
||||||
• Direzzjonijiet tas-subways
|
|
||||||
• Reġistrazzjoni ta' trekks
|
|
||||||
• Esportazzjoni u importazzjoni ta' bookmarks u trekks f'formati KML, KMZ, GPX
|
|
||||||
• Modalità mudlama biex tintuża bil-lejl
|
|
||||||
• Ittejjeb id-dejta tal-mapep għal kulħadd b'użu ta' editur bażiku u integrat
|
|
||||||
|
|
||||||
<b>Il-Libertà Waslet</b>
|
|
||||||
Skopri l-vjaġġ tiegħek, innaviga d-dinja bil-privatezza u bil-komunità fuq quddiem nett!
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Navigazzjoni ta' mapep faċli - Skopri iktar mill-vjaġġ - Imsaħħaħ mill-komunita`
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
CoMaps - Imxi, Suq Rota u Karozza bil-Privatezza
|
|
||||||
@@ -1 +1 @@
|
|||||||
CoMaps - Wandel, fiets, rijd offline met privacy
|
CoMaps - Wandel, fiets, rijdt offline met privacy
|
||||||
|
|||||||