Compare commits
19 Commits
yannikblos
...
fix-ci
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
62fb50e95c | ||
|
|
664a156cc6 | ||
|
|
08b773dfa8 | ||
|
|
c31d3b6926 | ||
|
|
7469b0ecb4 | ||
|
|
2b78118310 | ||
|
|
70622bdca0 | ||
|
|
5b3e327ff8 | ||
|
|
8395e8d9a9 | ||
|
|
b7971b5cc0 | ||
|
|
8fb8be6a00 | ||
|
|
273afe052a | ||
|
|
9b5419b6d4 | ||
|
|
835ee4ab8d | ||
|
|
5bc8aae623 | ||
|
|
72439bd6d7 | ||
|
|
a3db039232 | ||
|
|
ffcaf3640b | ||
|
|
289f4c4343 |
@@ -3,6 +3,7 @@ BasedOnStyle: Google
|
||||
|
||||
AccessModifierOffset: -2
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignArrayOfStructures: Right
|
||||
AlignConsecutiveMacros: AcrossEmptyLinesAndComments
|
||||
AlignEscapedNewlines: LeftWithLastLine
|
||||
AlignOperands: AlignAfterOperator
|
||||
@@ -39,10 +40,8 @@ ColumnLimit: 120
|
||||
ConstructorInitializerIndentWidth: 2
|
||||
ContinuationIndentWidth: 4
|
||||
DerivePointerAlignment: false
|
||||
EmptyLineBeforeAccessModifier: Always
|
||||
IncludeBlocks: Preserve
|
||||
IndentAccessModifiers: false
|
||||
IndentCaseLabels: false
|
||||
IndentExternBlock: NoIndent
|
||||
InsertBraces: false
|
||||
InsertNewlineAtEOF: true
|
||||
@@ -50,7 +49,6 @@ LambdaBodyIndentation: OuterScope
|
||||
PackConstructorInitializers: CurrentLine
|
||||
PointerAlignment: Middle
|
||||
RemoveBracesLLVM: true
|
||||
RemoveSemicolon: true
|
||||
QualifierAlignment: Right
|
||||
SpacesInContainerLiterals: false
|
||||
Standard: Latest
|
||||
|
||||
@@ -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
|
||||
@@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- fix-ci
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
- .forgejo/**
|
||||
@@ -41,11 +41,11 @@ jobs:
|
||||
- name: Install build tools and dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y ninja-build
|
||||
apt-get update -y
|
||||
apt-get install -y cmake ninja-build
|
||||
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 100 # enough to get all commits for the current day
|
||||
|
||||
@@ -69,6 +69,8 @@ jobs:
|
||||
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
|
||||
|
||||
- name: Compile
|
||||
container:
|
||||
image: runmymind/docker-android-sdk:latest
|
||||
shell: bash
|
||||
working-directory: android
|
||||
run: |
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Android Check Store Metadata
|
||||
name: Android Check Metadata
|
||||
on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
pull_request:
|
||||
@@ -14,15 +14,12 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
sparse-checkout: |
|
||||
android
|
||||
tools/python/check_store_metadata.py
|
||||
|
||||
- name: Check Google Play metadata
|
||||
run: ./tools/python/check_store_metadata.py gplay
|
||||
|
||||
- name: Check F-Droid metadata
|
||||
run: ./tools/python/check_store_metadata.py fdroid
|
||||
- name: Check metadata
|
||||
run: ./tools/python/check_store_metadata.py android
|
||||
|
||||
@@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- fix-ci
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
@@ -38,9 +38,17 @@ jobs:
|
||||
lint:
|
||||
name: Android Lint
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: runmymind/docker-android-sdk:latest
|
||||
steps:
|
||||
- name: Install Node.JS
|
||||
shell: bash
|
||||
run: |
|
||||
apt-get update -y
|
||||
apt-get install -y nodejs
|
||||
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
@@ -56,6 +64,8 @@ jobs:
|
||||
android-check:
|
||||
name: Build Android Debug
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: runmymind/docker-android-sdk:latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -74,11 +84,11 @@ jobs:
|
||||
- name: Install build tools and dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y ninja-build
|
||||
apt-get update -y
|
||||
apt-get install -y cmake ninja-build nodejs
|
||||
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: httpa://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 200 # enough to get all commits for the current day
|
||||
|
||||
@@ -87,7 +97,7 @@ jobs:
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||
|
||||
- name: Configure ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
uses: https://github.com/hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ github.workflow }}-${{ matrix.flavor }}
|
||||
|
||||
@@ -106,5 +116,5 @@ jobs:
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: android-${{ matrix.flavor }}
|
||||
path: android/app/build/outputs/apk/**/OrganicMaps-*.apk
|
||||
path: android/app/build/outputs/apk/**/CoMaps-*.apk
|
||||
if-no-files-found: error
|
||||
|
||||
@@ -10,7 +10,7 @@ jobs:
|
||||
name: Check preconditions
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1000 # fetch month or so
|
||||
|
||||
@@ -31,6 +31,8 @@ jobs:
|
||||
android-google-beta:
|
||||
name: Android Google Beta
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: runmymind/docker-android-sdk:latest
|
||||
needs: precondition
|
||||
if: ${{ needs.precondition.outputs.updated != '' }}
|
||||
environment: beta
|
||||
@@ -38,14 +40,14 @@ jobs:
|
||||
- name: Install build tools and dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y ninja-build
|
||||
apt-get update -y
|
||||
apt-get install -y ninja-build
|
||||
|
||||
- name: Install Google SDK
|
||||
uses: google-github-actions/setup-gcloud@v0
|
||||
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 100 # enough to get all commits for the current day
|
||||
|
||||
@@ -82,7 +84,7 @@ jobs:
|
||||
run: |
|
||||
gcloud auth activate-service-account --key-file android/app/firebase-test-lab.json
|
||||
gcloud config set project omapsapp
|
||||
gcloud firebase test android run --app ./android/app/build/outputs/apk/google/beta/OrganicMaps-*-google-beta.apk \
|
||||
gcloud firebase test android run --app ./android/app/build/outputs/apk/google/beta/CoMaps-*-google-beta.apk \
|
||||
--device model=husky,version=34 \
|
||||
--device model=tangorpro,version=33,orientation=landscape \
|
||||
--device model=bluejay,version=32 \
|
||||
|
||||
@@ -6,21 +6,25 @@ jobs:
|
||||
android-release-metadata:
|
||||
name: Upload Google Play metadata
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: runmymind/docker-android-sdk:latest
|
||||
environment: production
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
sparse-checkout: |
|
||||
android
|
||||
tools/python/check_store_metadata.py
|
||||
- name: Checkout sources
|
||||
# TODO: use shallow (and sparse?) checkout
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
|
||||
# - name: Parallel submodules checkout
|
||||
# shell: bash
|
||||
# run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||
|
||||
- name: Restore release keys
|
||||
shell: bash
|
||||
run: |
|
||||
echo "$PRIVATE_H" | base64 -d > private.h
|
||||
echo "$GOOGLE_PLAY_JSON" | base64 -d > android/app/google-play.json
|
||||
env:
|
||||
PRIVATE_H: ${{ secrets.PRIVATE_H }}
|
||||
GOOGLE_PLAY_JSON: ${{ secrets.GOOGLE_PLAY_JSON }}
|
||||
|
||||
- name: Upload
|
||||
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
environment: production
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 100 # Enough to get all commits for the last day.
|
||||
ssh-key: ${{ secrets.RELEASE_SSH_KEY }}
|
||||
@@ -71,11 +71,11 @@ jobs:
|
||||
- name: Install build tools and dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y ninja-build
|
||||
apt-get update -y
|
||||
apt-get install -y cmake ninja-build
|
||||
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 100 # enough to get all commits for the current day
|
||||
ref: 'refs/tags/${{ needs.tag.outputs.tag }}'
|
||||
@@ -92,7 +92,7 @@ jobs:
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||
|
||||
- name: Checkout screenshots
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ secrets.SCREENSHOTS_REPO }}
|
||||
ssh-key: ${{ secrets.SCREENSHOTS_SSH_KEY }}
|
||||
@@ -121,6 +121,8 @@ jobs:
|
||||
run: echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties
|
||||
|
||||
- name: Compile and upload to Google Play
|
||||
container:
|
||||
image: runmymind/docker-android-sdk:latest
|
||||
shell: bash
|
||||
working-directory: android
|
||||
run: |
|
||||
@@ -128,6 +130,8 @@ jobs:
|
||||
if: ${{ matrix.flavor == 'google' }}
|
||||
|
||||
- name: Compile and upload to Huawei AppGallery
|
||||
container:
|
||||
image: runmymind/docker-android-sdk:latest
|
||||
shell: bash
|
||||
working-directory: android
|
||||
run: |
|
||||
@@ -136,6 +140,8 @@ jobs:
|
||||
if: ${{ matrix.flavor == 'huawei' }}
|
||||
|
||||
- name: Compile universal APK
|
||||
container:
|
||||
image: runmymind/docker-android-sdk:latest
|
||||
shell: bash
|
||||
working-directory: android
|
||||
run: |
|
||||
@@ -146,16 +152,16 @@ jobs:
|
||||
if: ${{ matrix.flavor == 'web' }}
|
||||
shell: bash
|
||||
run: |
|
||||
(cd ./android/app/build/outputs/apk/web/release/ && sha256sum OrganicMaps-${{ needs.tag.outputs.code }}-web-release.apk > OrganicMaps-${{ needs.tag.outputs.code }}-web-release.apk.sha256sum)
|
||||
(cd ./android/app/build/outputs/apk/web/release/ && sha256sum CoMaps-${{ needs.tag.outputs.code }}-web-release.apk > CoMaps-${{ needs.tag.outputs.code }}-web-release.apk.sha256sum)
|
||||
{
|
||||
cat ${{ env.RELEASE_NOTES }}
|
||||
echo ""
|
||||
echo "See [a detailed announce](https://organicmaps.app/news/) on our website when app updates are published in all stores."
|
||||
echo "You can get automatic app updates from Codeberg [using Obtainium](https://codeberg.org/comaps/comaps/wiki/Installing-Organic-Maps-from-GitHub-using-Obtainium)."
|
||||
echo "See [a detailed announce](https://comaps.app/news/) on our website when app updates are published in all stores."
|
||||
echo "You can get automatic app updates from Codeberg [using Obtainium](https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://codeberg.org/comaps/comaps)."
|
||||
echo ""
|
||||
echo "sha256sum:"
|
||||
echo -e '\n```'
|
||||
tr -d '\n' < ./android/app/build/outputs/apk/web/release/OrganicMaps-${{ needs.tag.outputs.code }}-web-release.apk.sha256sum
|
||||
tr -d '\n' < ./android/app/build/outputs/apk/web/release/CoMaps-${{ needs.tag.outputs.code }}-web-release.apk.sha256sum
|
||||
echo -e '\n```'
|
||||
} > ${{ runner.temp }}/release-notes.txt
|
||||
|
||||
@@ -170,6 +176,6 @@ jobs:
|
||||
discussion_category_name: 'Announcements'
|
||||
prerelease: true
|
||||
files: |
|
||||
./android/app/build/outputs/apk/web/release/OrganicMaps-${{ needs.tag.outputs.code }}-web-release.apk
|
||||
./android/app/build/outputs/apk/web/release/OrganicMaps-${{ needs.tag.outputs.code }}-web-release.apk.sha256sum
|
||||
./android/app/build/outputs/apk/web/release/CoMaps-${{ needs.tag.outputs.code }}-web-release.apk
|
||||
./android/app/build/outputs/apk/web/release/CoMaps-${{ needs.tag.outputs.code }}-web-release.apk.sha256sum
|
||||
fail_on_unmatched_files: true
|
||||
|
||||
@@ -3,8 +3,8 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
pull_request:
|
||||
paths:
|
||||
- packaging/app.comaps.comaps.metainfo.xml
|
||||
- .forgejo/workflows/appstream-check.yaml # Run check on self change
|
||||
- packaging/app.comaps.desktop.metainfo.xml
|
||||
- .forgejo/workflows/appstream-check.yaml # Run check on self change
|
||||
|
||||
jobs:
|
||||
validate-appstream:
|
||||
@@ -12,25 +12,25 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
sparse-checkout: |
|
||||
packaging/app.comaps.comaps.metainfo.xml
|
||||
packaging/app.comaps.desktop.metainfo.xml
|
||||
|
||||
- name: Install appstream validator and flatpak Builder
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt update -y
|
||||
sudo apt install -y \
|
||||
apt update -y
|
||||
apt install -y \
|
||||
flatpak
|
||||
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
sudo flatpak install -y org.flatpak.Builder
|
||||
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
flatpak install -y org.flatpak.Builder
|
||||
|
||||
- name: Lint appstream data with flatpak Builder
|
||||
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.comaps.desktop.metainfo.xml
|
||||
|
||||
- name: Run appstreamcli in pedantic mode
|
||||
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.comaps.desktop.metainfo.xml
|
||||
|
||||
@@ -63,7 +63,7 @@ jobs:
|
||||
if: ${{ needs.should-run-check.outputs.run-from-pr == 'true' || needs.should-run-check.outputs.manually-triggered == 'true'}}
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 100 # enough to get all commits for the current day
|
||||
|
||||
@@ -74,8 +74,8 @@ jobs:
|
||||
- name: Install build tools and dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt update -y
|
||||
sudo apt install -y \
|
||||
apt update -y
|
||||
apt install -y \
|
||||
ninja-build \
|
||||
libgl1-mesa-dev \
|
||||
libglvnd-dev \
|
||||
@@ -90,7 +90,7 @@ jobs:
|
||||
gcovr
|
||||
|
||||
- name: Configure ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
uses: https://github.com/hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ github.workflow }}-coverage
|
||||
|
||||
@@ -124,15 +124,15 @@ jobs:
|
||||
# world_feed_integration_tests - https://github.com/organicmaps/organicmaps/issues/215
|
||||
CTEST_EXCLUDE_REGEX: "generator_integration_tests|opening_hours_integration_tests|opening_hours_supported_features_tests|routing_benchmarks|routing_integration_tests|routing_quality_tests|search_quality_tests|storage_integration_tests|shaders_tests|world_feed_integration_tests"
|
||||
run: |
|
||||
sudo locale-gen en_US
|
||||
sudo locale-gen en_US.UTF-8
|
||||
sudo locale-gen es_ES
|
||||
sudo locale-gen es_ES.UTF-8
|
||||
sudo locale-gen fr_FR
|
||||
sudo locale-gen fr_FR.UTF-8
|
||||
sudo locale-gen ru_RU
|
||||
sudo locale-gen ru_RU.UTF-8
|
||||
sudo update-locale
|
||||
locale-gen en_US
|
||||
locale-gen en_US.UTF-8
|
||||
locale-gen es_ES
|
||||
locale-gen es_ES.UTF-8
|
||||
locale-gen fr_FR
|
||||
locale-gen fr_FR.UTF-8
|
||||
locale-gen ru_RU
|
||||
locale-gen ru_RU.UTF-8
|
||||
update-locale
|
||||
ctest -L "omim-test" -E "$CTEST_EXCLUDE_REGEX" --output-on-failure
|
||||
|
||||
- name: Run coverage report generation
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
name: DCO
|
||||
name: dco
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check for Developer Certificate of Origin (DCO) compliance
|
||||
uses: https://github.com/KineticCafe/actions-dco@fb284c903a7673a3d4b0bdd104479a6f0d46dae7 # v1.3.6
|
||||
- uses: https://github.com/KineticCafe/actions-dco@v1
|
||||
@@ -3,8 +3,8 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
pull_request:
|
||||
paths:
|
||||
- qt/res/linux/app.comaps.comaps.desktop
|
||||
- .forgejo/workflows/desktop-file-check.yaml # Run check on self change
|
||||
- qt/res/app.comaps.desktop.desktop
|
||||
- .forgejo/workflows/desktop-file-check.yaml # Run check on self change
|
||||
|
||||
jobs:
|
||||
validate-desktop-file:
|
||||
@@ -12,19 +12,19 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
sparse-checkout: |
|
||||
qt/res/linux/app.comaps.comaps.desktop
|
||||
qt/res/app.comaps.desktop.desktop
|
||||
|
||||
- name: Install desktop-file-validate tool
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt update -y
|
||||
sudo apt install -y \
|
||||
apt update -y
|
||||
apt install -y \
|
||||
desktop-file-utils
|
||||
|
||||
- name: Validate desktop file
|
||||
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.comaps.desktop.desktop && echo "Successfully validated .desktop file"
|
||||
|
||||
@@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- fix-ci
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
- .forgejo/**
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
name: Apple TestFlight
|
||||
runs-on: macos-15
|
||||
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.
|
||||
LANGUAGE: en_US.UTF-8
|
||||
LC_ALL: en_US.UTF-8
|
||||
@@ -45,7 +45,7 @@ jobs:
|
||||
shell: bash
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 100 # enough to get all commits for the current day
|
||||
|
||||
@@ -66,10 +66,6 @@ jobs:
|
||||
CERTIFICATES_DEV_P12: ${{ secrets.CERTIFICATES_DEV_P12 }}
|
||||
CERTIFICATES_DISTR_P12: ${{ secrets.CERTIFICATES_DISTR_P12 }}
|
||||
|
||||
- name: Configure repository
|
||||
shell: bash
|
||||
run: ./configure.sh
|
||||
|
||||
- name: Compile and upload to TestFlight
|
||||
run: |
|
||||
echo "IOS_VERSION=$(../tools/unix/version.sh ios_version)-$(../tools/unix/version.sh ios_build)" >> "$GITHUB_ENV"
|
||||
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
sparse-checkout: |
|
||||
|
||||
@@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- fix-ci
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
@@ -37,7 +37,7 @@ jobs:
|
||||
name: Build iOS
|
||||
runs-on: macos-15
|
||||
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.
|
||||
LANGUAGE: en_US.UTF-8
|
||||
LC_ALL: en_US.UTF-8
|
||||
@@ -53,16 +53,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
|
||||
- name: Parallel submodules checkout
|
||||
shell: bash
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
|
||||
|
||||
- name: Configure repository
|
||||
shell: bash
|
||||
run: ./configure.sh
|
||||
|
||||
- name: Configure XCode cache
|
||||
uses: irgaly/xcode-cache@v1
|
||||
with:
|
||||
|
||||
@@ -7,14 +7,14 @@ jobs:
|
||||
name: iOS Release
|
||||
runs-on: macos-15
|
||||
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.
|
||||
LANGUAGE: en_US.UTF-8
|
||||
LC_ALL: en_US.UTF-8
|
||||
environment: production
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
|
||||
- name: Restore release keys
|
||||
shell: bash
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
APPSTORE_JSON: ${{ secrets.APPSTORE_JSON }}
|
||||
|
||||
- name: Checkout screenshots
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ secrets.SCREENSHOTS_REPO }}
|
||||
ssh-key: ${{ secrets.SCREENSHOTS_SSH_KEY }}
|
||||
@@ -33,7 +33,7 @@ jobs:
|
||||
path: screenshots
|
||||
|
||||
- name: Checkout keywords
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ secrets.KEYWORDS_REPO }}
|
||||
ssh-key: ${{ secrets.KEYWORDS_SSH_KEY }}
|
||||
|
||||
@@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- fix-ci
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
@@ -39,7 +39,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 100 # enough to get all commits for the current day
|
||||
|
||||
@@ -50,9 +50,10 @@ jobs:
|
||||
- name: Install build tools and dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt update -y
|
||||
sudo apt install -y \
|
||||
apt update -y
|
||||
apt install -y \
|
||||
ninja-build \
|
||||
cmake \
|
||||
libgl1-mesa-dev \
|
||||
libglvnd-dev \
|
||||
libharfbuzz-dev \
|
||||
@@ -67,7 +68,7 @@ jobs:
|
||||
libqt6positioning6
|
||||
|
||||
- name: Configure ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
uses: https://github.com/hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ github.workflow }}-no-unity
|
||||
|
||||
@@ -103,7 +104,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
|
||||
- name: Parallel submodules checkout
|
||||
shell: bash
|
||||
@@ -112,8 +113,8 @@ jobs:
|
||||
- name: Install build tools and dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt update -y
|
||||
sudo apt install -y \
|
||||
apt update -y
|
||||
apt install -y \
|
||||
ninja-build \
|
||||
libgl1-mesa-dev \
|
||||
libglvnd-dev \
|
||||
@@ -129,18 +130,10 @@ jobs:
|
||||
libqt6positioning6
|
||||
|
||||
- name: Configure ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
uses: https://github.com/hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
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
|
||||
shell: bash
|
||||
env:
|
||||
@@ -172,13 +165,13 @@ jobs:
|
||||
# world_feed_integration_tests - https://github.com/organicmaps/organicmaps/issues/215
|
||||
CTEST_EXCLUDE_REGEX: "generator_integration_tests|opening_hours_integration_tests|opening_hours_supported_features_tests|routing_benchmarks|routing_integration_tests|routing_quality_tests|search_quality_tests|storage_integration_tests|shaders_tests|world_feed_integration_tests"
|
||||
run: |
|
||||
sudo locale-gen en_US
|
||||
sudo locale-gen en_US.UTF-8
|
||||
sudo locale-gen es_ES
|
||||
sudo locale-gen es_ES.UTF-8
|
||||
sudo locale-gen fr_FR
|
||||
sudo locale-gen fr_FR.UTF-8
|
||||
sudo locale-gen ru_RU
|
||||
sudo locale-gen ru_RU.UTF-8
|
||||
sudo update-locale
|
||||
locale-gen en_US
|
||||
locale-gen en_US.UTF-8
|
||||
locale-gen es_ES
|
||||
locale-gen es_ES.UTF-8
|
||||
locale-gen fr_FR
|
||||
locale-gen fr_FR.UTF-8
|
||||
locale-gen ru_RU
|
||||
locale-gen ru_RU.UTF-8
|
||||
update-locale
|
||||
ctest -L "omim-test" -E "$CTEST_EXCLUDE_REGEX" --output-on-failure
|
||||
|
||||
@@ -3,7 +3,7 @@ on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- fix-ci
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- .gitignore
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
name: macOS builds and tests
|
||||
runs-on: macos-15
|
||||
env:
|
||||
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
|
||||
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
|
||||
HOMEBREW_NO_ANALYTICS: 1
|
||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||
strategy:
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
uses: https://github.com/actions/checkout@v4
|
||||
|
||||
- name: Parallel submodules checkout
|
||||
shell: bash
|
||||
|
||||
@@ -1,501 +0,0 @@
|
||||
name: map-generator
|
||||
on:
|
||||
workflow_dispatch: # Manual trigger
|
||||
inputs:
|
||||
jobs:
|
||||
description: 'Which job(s) to run right now?'
|
||||
required: true
|
||||
default: 'all-except-upload'
|
||||
type: choice
|
||||
options:
|
||||
- all-except-upload
|
||||
- copy-coasts
|
||||
- planet
|
||||
- wiki
|
||||
- isolines
|
||||
- subways
|
||||
- tiger
|
||||
- maps
|
||||
- upload
|
||||
map-generator-continue:
|
||||
description: 'Continue previous map generation?'
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
map-generator-countries:
|
||||
description: 'Generate specific MWMs? (i.e. "US_New York_*, foo")'
|
||||
required: false
|
||||
type: string
|
||||
reset:
|
||||
description: 'Reset part of the system?'
|
||||
required: false
|
||||
default: 'no'
|
||||
type: choice
|
||||
options:
|
||||
- 'no'
|
||||
- wiki-ratelimit
|
||||
|
||||
## RCLONE_CONF is multi-line text containing keys and credentials for us2,ru1,fi1,de1 servers
|
||||
|
||||
env:
|
||||
RCLONE_CONF: ${{ secrets.RCLONE_CONF }}
|
||||
WIKIMEDIA_USERNAME: ${{ secrets.WIKIMEDIA_USERNAME }}
|
||||
WIKIMEDIA_PASSWORD: ${{ secrets.WIKIMEDIA_PASSWORD }}
|
||||
ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }}
|
||||
ZULIP_API_KEY: ${{ secrets.ZULIP_API_KEY }}
|
||||
MWMCONTINUE: ${{ inputs.map-generator-continue }}
|
||||
MWMCOUNTRIES: ${{ inputs.map-generator-countries }}
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
TZ: Etc/UTC
|
||||
|
||||
jobs:
|
||||
clone-repos:
|
||||
name: Clone Git Repos
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal:/mnt/4tbexternal
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
- name: Checkout main repo
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Cloning $FORGEJO_SERVER_URL/$FORGEJO_REPOSITORY branch $FORGEJO_REF_NAME"
|
||||
cd ~
|
||||
git clone --recurse-submodules --shallow-submodules -b $FORGEJO_REF_NAME --single-branch $FORGEJO_SERVER_URL/$FORGEJO_REPOSITORY.git comaps
|
||||
- name: Checkout wikiparser repo
|
||||
shell: bash
|
||||
run: |
|
||||
cd ~
|
||||
git clone https://codeberg.org/comaps/wikiparser.git
|
||||
- name: Checkout subways repo
|
||||
shell: bash
|
||||
run: |
|
||||
cd ~
|
||||
git clone https://codeberg.org/comaps/subways.git
|
||||
|
||||
copy-coasts:
|
||||
if: inputs.jobs == 'copy-coasts' || inputs.jobs == 'all-except-upload'
|
||||
name: Copy Previously Generated Coasts
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Copy Coasts
|
||||
shell: bash
|
||||
run: |
|
||||
echo "WorldCoasts available:"
|
||||
ls -al /mnt/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.*
|
||||
|
||||
if [ -f /mnt/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom ]; then
|
||||
|
||||
echo "Before:"
|
||||
ls -al /home/planet/latest_coasts*
|
||||
|
||||
cp -p /mnt/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom /home/planet/latest_coasts.geom
|
||||
cp -p /mnt/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.rawgeom /home/planet/latest_coasts.rawgeom
|
||||
|
||||
echo "After:"
|
||||
ls -al /home/planet/latest_coasts*
|
||||
|
||||
else
|
||||
|
||||
echo "No WorldCoasts found."
|
||||
|
||||
fi
|
||||
|
||||
update-planet:
|
||||
if: inputs.jobs == 'planet' || inputs.jobs == 'all-except-upload'
|
||||
name: Update Planet
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Download Planet File if Absent
|
||||
shell: bash
|
||||
# TODO: replace wget2 with curl -Z
|
||||
run: |
|
||||
if [ ! -d /home/planet/planet/ ]; then
|
||||
mkdir -p /home/planet/planet/
|
||||
fi
|
||||
if [ ! -f /home/planet/planet/planet-latest.osm.pbf ]; then
|
||||
cd /home/planet/planet/
|
||||
wget2 --verbose --progress=bar --continue https://ftpmirror.your.org/pub/openstreetmap/pbf/planet-latest.osm.pbf
|
||||
else
|
||||
echo "planet-latest.osm.pbf was found, raw download not required."
|
||||
fi
|
||||
- name: Update Planet
|
||||
shell: bash
|
||||
run: |
|
||||
cd /home/planet/planet/
|
||||
rm -f planet-latest-new.osm.pbf
|
||||
pyosmium-up-to-date planet-latest.osm.pbf -o planet-latest-new.osm.pbf -v --size 16384
|
||||
mv planet-latest-new.osm.pbf planet-latest.osm.pbf
|
||||
- name: Converting planet-latest.osm.pbf to planet.o5m
|
||||
# TODO: better to run osmupdate (not convert) just before starting the maps jobs - for max fresh data.
|
||||
run: |
|
||||
echo "Starting..."
|
||||
cd /home/planet/planet/
|
||||
osmconvert -v --drop-author --drop-version --hash-memory=4000 planet-latest.osm.pbf -o=planet.o5m
|
||||
echo "Done."
|
||||
- name: Notify Zulip
|
||||
run: |
|
||||
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
|
||||
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
|
||||
--data-urlencode type=stream \
|
||||
--data-urlencode 'to="DevOps"' \
|
||||
--data-urlencode topic=codeberg-bot \
|
||||
--data-urlencode 'content=Planet update is done!'
|
||||
|
||||
wiki-update:
|
||||
if: inputs.jobs == 'wiki' || inputs.jobs == 'all-except-upload'
|
||||
name: Update Wikipedia
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
- name: Check for planet file
|
||||
shell: bash
|
||||
# TODO: remove debug output
|
||||
run: |
|
||||
if [ ! -f /home/planet/planet/planet-latest.osm.pbf ]; then
|
||||
echo "ERROR: No file at /home/planet/planet/planet-latest.osm.pbf"
|
||||
ls -al /home/planet/
|
||||
ls -al /home/planet/planet/
|
||||
exit 1
|
||||
fi
|
||||
- name: Only get new dumps once per 30 days
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ '${{ inputs.reset }}' == 'wiki-ratelimit' ]]; then
|
||||
echo "Bypassing wiki rate limit upon request."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
datediff() {
|
||||
d1=$(date -d "$1" +%s)
|
||||
d2=$(date -d "$2" +%s)
|
||||
echo $(( (d1 - d2) / 86400 ))
|
||||
}
|
||||
RECENTDUMPDATE=$(find /home/planet/wikipedia/dumps/ -mindepth 1 -maxdepth 1 -iname "2*" -type d | sort -n -r | head -1 | cut -d/ -f6)
|
||||
TODAY=$(date +%Y%m%d)
|
||||
DATEDIFF=$(datediff $TODAY $RECENTDUMPDATE)
|
||||
if [ $DATEDIFF -lt 30 ]; then
|
||||
echo "ERROR: The most recent wiki dump is from $RECENTDUMPDATE, $DATEDIFF days ago. Wikimedia limits users to 15 snapshot requests per month."
|
||||
echo "Set the 'reset' option to 'wiki-ratelimit' to bypass this."
|
||||
ls -al /home/planet/wikipedia/dumps/
|
||||
exit 1
|
||||
fi
|
||||
- name: Update Wikipedia from Enterprise API
|
||||
shell: bash
|
||||
run: |
|
||||
#todo: curl in download.sh can fail when rate limited and even save error messages to the output. need to validate.
|
||||
#downloading all languages can also trigger rate limits or fail as well. needs work.
|
||||
#also: a failure to download means a failure to build, and could result in no wiki descriptions etc.
|
||||
#also-also: do we want to remove old wiki data in planet between builds? pastk: no need, its being updated / augmented
|
||||
mkdir -p /home/planet/wikipedia/dumps
|
||||
mkdir -p /home/planet/wikipedia/build
|
||||
cd ~/wikiparser
|
||||
ls -al
|
||||
echo "Downloading ..."
|
||||
./download.sh /home/planet/wikipedia/dumps
|
||||
ls -al /home/planet/wikipedia/dumps/*
|
||||
echo "Running ..."
|
||||
./run.sh /home/planet/wikipedia/build \
|
||||
/home/planet/planet/planet-latest.osm.pbf \
|
||||
/home/planet/wikipedia/dumps/latest/*.tar.gz
|
||||
echo "DONE"
|
||||
- name: Check that the latest dumps are present, recent, and not super tiny
|
||||
shell: bash
|
||||
run: |
|
||||
FAILCHECK=0
|
||||
|
||||
# Check all .tar.gz files in /home/planet/wikipedia/dumps/latest/
|
||||
for file in /home/planet/wikipedia/dumps/latest/*.tar.gz; do
|
||||
# Check if file exists (handles case where glob doesn't match)
|
||||
[ -e "$file" ] || continue
|
||||
|
||||
# Get file size in MB and modification time in days
|
||||
size_mb=$(stat -f%z "$file" 2>/dev/null | awk '{print int($1/1024/1024)}' || stat -c%s "$file" | awk
|
||||
'{print int($1/1024/1024)}')
|
||||
days_old=$(find "$file" -mtime -7 | wc -l)
|
||||
|
||||
# Verify conditions
|
||||
if [ "$size_mb" -lt 100 ]; then
|
||||
echo "FAIL: $file is only ${size_mb}MB (< 100MB)"
|
||||
FAILCHECK=1
|
||||
elif [ "$days_old" -eq 0 ]; then
|
||||
echo "FAIL: $file is older than 7 days"
|
||||
ls -al $file
|
||||
FAILCHECK=1
|
||||
else
|
||||
echo "PASS: $file (${size_mb}MB, modified within 7 days)"
|
||||
fi
|
||||
done
|
||||
|
||||
exit $FAILCHECK
|
||||
- name: Notify Zulip
|
||||
run: |
|
||||
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
|
||||
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
|
||||
--data-urlencode type=stream \
|
||||
--data-urlencode 'to="DevOps"' \
|
||||
--data-urlencode topic=codeberg-bot \
|
||||
--data-urlencode 'content=Wiki update is done!'
|
||||
|
||||
update-isolines:
|
||||
if: inputs.jobs == 'isolines' || inputs.jobs == 'all-except-upload'
|
||||
name: Update Isolines
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
# TODO: we only need to update these if our SRTM or countries change
|
||||
# TODO: after update, verify that sizable files exist: /home/planet/isolines/*.isolines
|
||||
- name: Update Isolines
|
||||
shell: bash
|
||||
# TODO: preserve previous isolines version?
|
||||
# TODO: cleanup the tmp-tiles dir after completion
|
||||
run: |
|
||||
cd ~/comaps/
|
||||
./tools/unix/build_omim.sh -p ~ -R topography_generator_tool
|
||||
rm -rf /home/planet/isolines/
|
||||
mkdir /home/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=/home/planet/isolines/tmp-tiles/ \
|
||||
--countries_isolines_out_dir=/home/planet/isolines/ \
|
||||
--data_dir=./data/ \
|
||||
--srtm_path=/home/planet/SRTM-patched-europe/ \
|
||||
--threads=96
|
||||
- name: Check isolines
|
||||
shell: bash
|
||||
run: |
|
||||
NUMISO=$(ls -al /home/planet/isolines/*.isolines | wc -l)
|
||||
echo "Found $NUMISO isolines"
|
||||
if [ $NUMISO -lt 10 ]; then
|
||||
echo "ERROR: Did generation fail?"
|
||||
exit 1
|
||||
fi
|
||||
- name: Notify Zulip
|
||||
run: |
|
||||
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
|
||||
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
|
||||
--data-urlencode type=stream \
|
||||
--data-urlencode 'to="DevOps"' \
|
||||
--data-urlencode topic=codeberg-bot \
|
||||
--data-urlencode 'content=Isolines are done!'
|
||||
|
||||
update-subways:
|
||||
if: inputs.jobs == 'subways' || inputs.jobs == 'all-except-upload'
|
||||
name: Update Subways
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
- name: Update Subways
|
||||
shell: bash
|
||||
run: |
|
||||
cd ~/comaps/
|
||||
cp tools/unix/maps/settings.sh.prod tools/unix/maps/settings.sh
|
||||
./tools/unix/maps/generate_subways.sh
|
||||
- name: Notify Zulip
|
||||
run: |
|
||||
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
|
||||
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
|
||||
--data-urlencode type=stream \
|
||||
--data-urlencode 'to="DevOps"' \
|
||||
--data-urlencode topic=codeberg-bot \
|
||||
--data-urlencode 'content=Subways are done!'
|
||||
|
||||
update-tiger:
|
||||
if: inputs.jobs == 'tiger' || inputs.jobs == 'all-except-upload'
|
||||
name: Update TIGER
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
- name: Build address_parser
|
||||
shell: bash
|
||||
run: |
|
||||
cd ~/comaps
|
||||
#rm -rf ~/omim-build-relwithdebinfo/CMakeCache.txt
|
||||
#rm -rf ~/omim-build-relwithdebinfo/CMakeFiles
|
||||
./tools/unix/build_omim.sh -p ~ -R address_parser_tool
|
||||
- name: Update TIGER from Nominatim
|
||||
shell: bash
|
||||
# TODO: use curl instead of wget2
|
||||
run: |
|
||||
# TODO: maybe remove old osm-planet/tiger first?
|
||||
cd /home/planet/
|
||||
mkdir -p tiger
|
||||
wget2 https://nominatim.org/data/tiger-nominatim-preprocessed-latest.csv.tar.gz
|
||||
cd ~/comaps
|
||||
tar -xOzf /home/planet/tiger-nominatim-preprocessed-latest.csv.tar.gz | ~/omim-build-relwithdebinfo/address_parser_tool --output_path=/home/planet/tiger
|
||||
|
||||
generate-maps:
|
||||
if: inputs.jobs == 'maps' || inputs.jobs == 'all-except-upload'
|
||||
name: Generate Maps
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
timeout-minutes: 40320
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
options: --ulimit nofile=262144:262144
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
- name: Make output folders if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /mnt/4tbexternal/osm-maps ]; then
|
||||
mkdir -p /mnt/4tbexternal/osm-maps
|
||||
fi
|
||||
- name: Get SRTM if necessary
|
||||
# TODO: it should be a separate step like Wiki or isolines
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /home/planet/SRTM-patched-europe/ ]; then
|
||||
echo "ERROR: NO SRTM"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run docker_maps_generator.sh
|
||||
shell: bash
|
||||
run: |
|
||||
cd ~/comaps
|
||||
bash ./tools/unix/maps/docker_maps_generator.sh
|
||||
- name: Notify Zulip
|
||||
run: |
|
||||
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
|
||||
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
|
||||
--data-urlencode type=stream \
|
||||
--data-urlencode 'to="DevOps"' \
|
||||
--data-urlencode topic=codeberg-bot \
|
||||
--data-urlencode 'content=Generator is done!'
|
||||
|
||||
upload-maps:
|
||||
if: inputs.jobs == 'upload'
|
||||
name: Upload Maps
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Write config file
|
||||
run: |
|
||||
mkdir -p ~/.config/rclone/
|
||||
echo "${{ secrets.RCLONE_CONF }}" > ~/.config/rclone/rclone.conf
|
||||
- name: Upload map files to CDNs
|
||||
shell: bash
|
||||
run: |
|
||||
shopt -s nullglob
|
||||
buildfolder=$(find /mnt/4tbexternal/osm-maps/ -mindepth 1 -maxdepth 1 -iname "2*" -type d | sort -n -r | head -1 | cut -d/ -f5)
|
||||
builddate=$(find /mnt/4tbexternal/osm-maps/*/ -mindepth 1 -maxdepth 1 -iname "2*" -type d | sort -n -r | head -1 | cut -d/ -f6)
|
||||
mwmfiles=( /mnt/4tbexternal/osm-maps/$buildfolder/$builddate/*.mwm )
|
||||
|
||||
if (( ${#mwmfiles[@]} )); then
|
||||
echo "<$(date +%T)> Uploading maps from $buildfolder/$builddate..."
|
||||
cd ~/comaps/tools/unix/maps
|
||||
./upload_to_cdn.sh /mnt/4tbexternal/osm-maps/$buildfolder/$builddate
|
||||
echo "<$(date +%T)> Finished uploading maps from $buildfolder/$builddate."
|
||||
else
|
||||
echo "<$(date +%T)> No MWM files in /mnt/4tbexternal/osm-maps/$buildfolder/$builddate/*.mwm, not uploading maps."
|
||||
echo "<$(date +%T)> Found top level: $(ls -alt /mnt/4tbexternal/osm-maps/*)"
|
||||
echo "<$(date +%T)> Found second level: $(ls -alt /mnt/4tbexternal/osm-maps/$buildfolder/*)"
|
||||
fi
|
||||
- name: Notify Zulip
|
||||
run: |
|
||||
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
|
||||
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
|
||||
--data-urlencode type=stream \
|
||||
--data-urlencode 'to="DevOps"' \
|
||||
--data-urlencode topic=codeberg-bot \
|
||||
--data-urlencode 'content=Upload is done!'
|
||||
|
||||
|
||||
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
|
||||
15
.github/workflows/android-check.yaml
vendored
@@ -6,7 +6,7 @@ on:
|
||||
- main
|
||||
|
||||
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:
|
||||
@@ -23,17 +23,6 @@ jobs:
|
||||
shell: bash
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
|
||||
|
||||
- name: Install protobuf
|
||||
shell: bash
|
||||
run: |
|
||||
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
|
||||
shell: bash
|
||||
working-directory: android
|
||||
@@ -73,9 +62,7 @@ jobs:
|
||||
libxinerama-dev \
|
||||
libxcursor-dev \
|
||||
libxi-dev \
|
||||
python3-pip \
|
||||
zlib1g-dev
|
||||
pip install "protobuf<3.21" --break-system-packages
|
||||
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
43
.github/workflows/clang-format.yaml
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
name: clang-format
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
paths:
|
||||
- 'android/app/src/**.java'
|
||||
- '.clang-format'
|
||||
- '.github/workflows/clang-format.yml'
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
paths:
|
||||
- 'android/app/src/**.java'
|
||||
- '.clang-format'
|
||||
- '.github/workflows/clang-format.yml'
|
||||
|
||||
jobs:
|
||||
check-formatting:
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true # TODO(AB): Remove this line when ready to enforce formatting.
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install clang-format
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y clang-format-19
|
||||
clang-format-19 --version
|
||||
|
||||
- name: Check Java formatting
|
||||
run: |
|
||||
JAVA_FILES=($(find android/app/src -name '*.java'))
|
||||
|
||||
FORMATTING_ISSUES=$(clang-format-19 --dry-run --Werror $JAVA_FILES 2>&1 || true)
|
||||
|
||||
if [ -n "$FORMATTING_ISSUES" ]; then
|
||||
echo "$FORMATTING_ISSUES"
|
||||
echo ""
|
||||
echo "To fix formatting, please run:"
|
||||
echo " clang-format -i <file>"
|
||||
exit 1
|
||||
fi
|
||||
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
|
||||
7
.github/workflows/ios-check.yaml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
name: Build iOS
|
||||
runs-on: macos-15
|
||||
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.
|
||||
LANGUAGE: en_US.UTF-8
|
||||
LC_ALL: en_US.UTF-8
|
||||
@@ -30,7 +30,6 @@ jobs:
|
||||
run: |
|
||||
brew install qt \
|
||||
optipng
|
||||
pip3 install "protobuf<3.21" --break-system-packages
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@v4
|
||||
|
||||
@@ -38,10 +37,6 @@ jobs:
|
||||
shell: bash
|
||||
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
|
||||
|
||||
- name: Configure repository
|
||||
shell: bash
|
||||
run: ./configure.sh
|
||||
|
||||
- name: Configure XCode cache
|
||||
uses: irgaly/xcode-cache@v1
|
||||
with:
|
||||
|
||||
29
.gitignore
vendored
@@ -9,35 +9,25 @@ Makefile.Release
|
||||
object_script.*.Debug
|
||||
object_script.*.Release
|
||||
compile_commands.json
|
||||
*.local.*
|
||||
|
||||
stxxl.errlog
|
||||
stxxl.log
|
||||
screenlog.0
|
||||
|
||||
data/styles/*/*/out/*
|
||||
data/resources-*_design/*
|
||||
# symbols png/sdf are now generated at build
|
||||
data/symbols/**/symbols.png
|
||||
data/symbols/**/symbols.sdf
|
||||
|
||||
data/resources-*_*/symbols.png
|
||||
data/resources-*_*/symbols.sdf
|
||||
data/drules_proto_default_design.bin
|
||||
data/colors_design.txt
|
||||
data/patterns_design.txt
|
||||
data/bookmarks
|
||||
data/edits.xml
|
||||
data/World.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
|
||||
data/categories.txt
|
||||
|
||||
# Compiled Python
|
||||
*.pyc
|
||||
@@ -56,9 +46,10 @@ omim.sdf
|
||||
*.suo
|
||||
*.aps
|
||||
*.rc
|
||||
!qt/res/windows/windows.rc
|
||||
!qt/res/windows.rc
|
||||
*.pdb
|
||||
out/
|
||||
out/*
|
||||
qt/mapswithme.log
|
||||
|
||||
# XCode
|
||||
xcode/keys/*
|
||||
|
||||
4
.gitmodules
vendored
@@ -65,7 +65,3 @@
|
||||
[submodule "3party/imgui/imgui"]
|
||||
path = 3party/imgui/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(bsdiff-courgette)
|
||||
add_subdirectory(glaze)
|
||||
add_subdirectory(minizip)
|
||||
add_subdirectory(open-location-code)
|
||||
add_subdirectory(opening_hours)
|
||||
|
||||
@@ -4,9 +4,7 @@ set(FT_DISABLE_HARFBUZZ ON)
|
||||
add_subdirectory(freetype)
|
||||
|
||||
# Fix warning with ONE_PIXEL macro clash.
|
||||
if(NOT MSVC)
|
||||
target_compile_options(freetype PRIVATE -Wno-macro-redefined)
|
||||
endif()
|
||||
target_compile_options(freetype PRIVATE -Wno-macro-redefined)
|
||||
|
||||
# Use ft2build.h from the current directory instead of the default.
|
||||
target_include_directories(freetype
|
||||
|
||||
@@ -11,23 +11,14 @@ target_include_directories(${PROJECT_NAME}
|
||||
harfbuzz/src
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
target_compile_options(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
/GR-
|
||||
/EHsc-
|
||||
/Zc:threadSafeInit-
|
||||
)
|
||||
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()
|
||||
# Keep these settigns 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>
|
||||
)
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
@@ -37,20 +28,14 @@ target_compile_definitions(${PROJECT_NAME}
|
||||
#$<$<BOOL:${APPLE}>:HAVE_CORETEXT>
|
||||
HAVE_ATEXIT
|
||||
HAVE_GETPAGESIZE
|
||||
HAVE_MMAP
|
||||
HAVE_MPROTECT
|
||||
HAVE_PTHREAD
|
||||
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)
|
||||
|
||||
add_library(harfbuzz::harfbuzz ALIAS harfbuzz)
|
||||
|
||||
@@ -172,7 +172,6 @@ add_library(icuuc
|
||||
icu/icu4c/source/common/uvector.cpp
|
||||
icu/icu4c/source/common/uvectr32.cpp
|
||||
icu/icu4c/source/common/uvectr64.h
|
||||
icu/icu4c/source/common/wintz.cpp
|
||||
icu/icu4c/source/common/wintz.h
|
||||
)
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ set(SRC
|
||||
protobuf/src/google/protobuf/message_lite.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_msvc.cc
|
||||
protobuf/src/google/protobuf/stubs/bytestream.cc
|
||||
protobuf/src/google/protobuf/stubs/common.cc
|
||||
protobuf/src/google/protobuf/stubs/int128.cc
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/utility.hpp>
|
||||
#include <boost/type_traits/is_pod.hpp>
|
||||
#include <boost/iostreams/device/mapped_file.hpp>
|
||||
|
||||
#include "mappable_vector.hpp"
|
||||
|
||||
@@ -282,6 +283,12 @@ namespace succinct { namespace mapper {
|
||||
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>
|
||||
uint64_t size_of(T& val)
|
||||
{
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include <boost/iterator/iterator_facade.hpp>
|
||||
#include <boost/iostreams/device/mapped_file.hpp>
|
||||
|
||||
namespace succinct { namespace util {
|
||||
|
||||
@@ -204,6 +205,29 @@ namespace succinct { namespace util {
|
||||
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
|
||||
{
|
||||
input_error(std::string const& what)
|
||||
|
||||
@@ -19,18 +19,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#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>
|
||||
#endif
|
||||
|
||||
int InitVulkan(void) {
|
||||
#if defined(__APPLE__)
|
||||
@@ -41,9 +30,6 @@ int InitVulkan(void) {
|
||||
if (!libvulkan) {
|
||||
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
|
||||
void* libvulkan = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL);
|
||||
if (!libvulkan) {
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
cmake_minimum_required(VERSION 3.22.1)
|
||||
|
||||
project(omim C CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 23)
|
||||
set(CMAKE_C_STANDARD 23)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_C_STANDARD 17)
|
||||
# Our code does not rely on gnu extensions.
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
set(CMAKE_C_EXTENSIONS OFF)
|
||||
@@ -39,16 +38,18 @@ if (APPLE AND NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL Android))
|
||||
# https://gitlab.kitware.com/cmake/cmake/-/issues/21963
|
||||
enable_language(OBJC)
|
||||
set(CMAKE_OBJC_EXTENSIONS OFF)
|
||||
set(CMAKE_OBJC_STANDARD 23)
|
||||
set(CMAKE_OBJC_STANDARD 11)
|
||||
set(CMAKE_OBJC_FLAGS -fobjc-arc)
|
||||
set(CMAKE_OBJC_VISIBILITY_PRESET hidden)
|
||||
enable_language(OBJCXX)
|
||||
set(CMAKE_OBJCXX_EXTENSIONS OFF)
|
||||
set(CMAKE_OBJCXX_STANDARD 23)
|
||||
set(CMAKE_OBJCXX_STANDARD 20)
|
||||
set(CMAKE_OBJCXX_FLAGS -fobjc-arc)
|
||||
set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden)
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND "./configure.sh" WORKING_DIRECTORY ${OMIM_ROOT})
|
||||
|
||||
message(STATUS "Using compiler ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
|
||||
if (CMAKE_UNITY_BUILD)
|
||||
@@ -85,7 +86,7 @@ if (MSVC)
|
||||
add_compile_options(/utf-8)
|
||||
add_link_options(/INCREMENTAL:NO)
|
||||
else()
|
||||
add_compile_options(-ffast-math $<$<CXX_COMPILER_ID:GNU>:-Wno-psabi>)
|
||||
add_compile_options(-ffast-math)
|
||||
endif()
|
||||
|
||||
if (PLATFORM_WIN)
|
||||
@@ -104,7 +105,7 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
||||
elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel")
|
||||
add_definitions(-DRELEASE)
|
||||
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()
|
||||
else()
|
||||
message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE})
|
||||
@@ -120,7 +121,7 @@ if (PLATFORM_LINUX AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_BUILD_T
|
||||
add_compile_options(-fno-fat-lto-objects)
|
||||
# To fix ar and ranlib "plugin needed to handle lto object".
|
||||
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_FINISH "<CMAKE_RANLIB> --plugin ${plugin} <TARGET>")
|
||||
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
|
||||
@@ -175,15 +176,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)
|
||||
|
||||
set(MINIMUM_REQUIRED_QT_VERSION 6.4.0)
|
||||
if (Qt6_VERSION VERSION_LESS ${MINIMUM_REQUIRED_QT_VERSION})
|
||||
message(FATAL_ERROR "Unsupported Qt version: ${Qt6_VERSION}, the minimum required is ${MINIMUM_REQUIRED_QT_VERSION}")
|
||||
if (Qt6Widgets_VERSION VERSION_LESS ${MINIMUM_REQUIRED_QT_VERSION})
|
||||
message(FATAL_ERROR "Unsupported Qt version: ${Qt6Widgets_VERSION}, the minimum required is ${MINIMUM_REQUIRED_QT_VERSION}")
|
||||
else()
|
||||
message(STATUS "Found Qt version: ${Qt6_VERSION}")
|
||||
message(STATUS "Found Qt version: ${Qt6Widgets_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# 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)
|
||||
message(STATUS "Precompiled headers are ON")
|
||||
@@ -195,7 +196,7 @@ if (USE_PCH)
|
||||
endif()
|
||||
|
||||
# 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(Freetype REQUIRED)
|
||||
find_package(harfbuzz REQUIRED)
|
||||
@@ -222,50 +223,52 @@ if (PLATFORM_DESKTOP AND NOT WITH_SYSTEM_PROVIDED_3PARTY)
|
||||
include_directories("${PROJECT_BINARY_DIR}/3party/gflags/include")
|
||||
endif()
|
||||
|
||||
# Android fails to find boost in many cases, this fixes it.
|
||||
if (PLATFORM_ANDROID)
|
||||
include_directories("${OMIM_ROOT}/3party/boost")
|
||||
endif()
|
||||
|
||||
# Used in qt/ and shaders/
|
||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${Python3_EXECUTABLE} -c "import google.protobuf;
|
||||
print(google.protobuf.__version__)"
|
||||
RESULT_VARIABLE PROTOBUF_CHECK
|
||||
OUTPUT_VARIABLE PROTOBUF_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_QUIET
|
||||
)
|
||||
|
||||
if(PROTOBUF_CHECK EQUAL 0)
|
||||
if(PROTOBUF_VERSION VERSION_LESS "4.0.0")
|
||||
message(STATUS "Python protobuf ${PROTOBUF_VERSION} found (< 4.0)")
|
||||
else()
|
||||
message(FATAL_ERROR "Python protobuf ${PROTOBUF_VERSION} found, but version < 4.0 required")
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Python protobuf not found. Install version <4.0")
|
||||
endif()
|
||||
|
||||
|
||||
add_subdirectory(libs)
|
||||
add_subdirectory(base)
|
||||
add_subdirectory(coding)
|
||||
add_subdirectory(descriptions)
|
||||
add_subdirectory(drape)
|
||||
add_subdirectory(drape_frontend)
|
||||
add_subdirectory(editor)
|
||||
add_subdirectory(ge0)
|
||||
add_subdirectory(generator/mwm_diff)
|
||||
add_subdirectory(geometry)
|
||||
add_subdirectory(indexer)
|
||||
add_subdirectory(kml)
|
||||
add_subdirectory(map)
|
||||
add_subdirectory(cppjansson)
|
||||
add_subdirectory(platform)
|
||||
add_subdirectory(routing)
|
||||
add_subdirectory(routing_common)
|
||||
add_subdirectory(search)
|
||||
add_subdirectory(shaders)
|
||||
add_subdirectory(storage)
|
||||
add_subdirectory(tracking)
|
||||
add_subdirectory(traffic)
|
||||
add_subdirectory(transit)
|
||||
|
||||
if (PLATFORM_DESKTOP)
|
||||
add_subdirectory(dev_sandbox)
|
||||
omim_add_tool_subdirectory(feature_list)
|
||||
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)
|
||||
add_subdirectory(qt)
|
||||
omim_add_tool_subdirectory(skin_generator)
|
||||
endif()
|
||||
if (GENERATOR_TOOL)
|
||||
add_compile_options(-march=native -mtune=native)
|
||||
message(STATUS "target CPU optimizations enabled, produced binaries will NOT work on a different CPU")
|
||||
endif()
|
||||
add_subdirectory(dev_sandbox)
|
||||
endif()
|
||||
|
||||
omim_add_test_subdirectory(libs/qt_tstfrm)
|
||||
omim_add_test_subdirectory(qt_tstfrm)
|
||||
|
||||
if (PLATFORM_ANDROID)
|
||||
add_subdirectory(android/sdk/src/main/cpp)
|
||||
|
||||
@@ -1 +1 @@
|
||||
See [docs/INSTALL.md](docs/INSTALL.md)
|
||||
See [docs/INSTALL.md](docs/INSTALL.md)
|
||||
32
README.md
@@ -19,20 +19,20 @@
|
||||
</div>
|
||||
<div align="center">
|
||||
<p align="center">
|
||||
<a href="https://codeberg.org/comaps/comaps/src/branch/main/LICENSE">
|
||||
<img src="https://img.shields.io/github/license/comaps/comaps?style=for-the-badge&logo=opensourceinitiative&logoColor=white&color=588157" alt="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" style="width: 90%; max-width: 150px;"/>
|
||||
</a>
|
||||
<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 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 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 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>
|
||||
</p>
|
||||
</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.
|
||||
|
||||
**Available for:** Android, iOS, ARM macOS, and alpha Linux/macOS desktop builds (also usable on Linux phones).
|
||||
|
||||
<p align="center">
|
||||
<a href="https://apps.apple.com/app/comaps/id6747180809">
|
||||
<img src="docs/badges/apple-appstore.png" alt="App Store" width="160"/>
|
||||
@@ -51,9 +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/">
|
||||
<img src="docs/badges/fdroid.png" alt="F-Droid" width="160"/>
|
||||
</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>
|
||||
@@ -78,10 +77,9 @@ A community-led free & open source maps app based on [OpenStreetMap](https://www
|
||||
## ⚡️ Highlights
|
||||
|
||||
- **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
|
||||
- **Simple**: Polished, user-focused interface
|
||||
- **Cross-platform**: Available for Android, iOS, MacOS, and Linux.
|
||||
- **Community-built**: Free, open source, and collaborative
|
||||
- **Transparent**: Open finances and governance
|
||||
|
||||
@@ -127,8 +125,10 @@ You can help by donating, contributing code, translating, or by telling others a
|
||||
|
||||
- Build instructions: [docs/INSTALL.md](docs/INSTALL.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 +142,7 @@ There is a dedicated [Zulip](https://codeberg.org/comaps/Governance/src/branch/m
|
||||
|
||||
## 💸 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).
|
||||
The project's financial information is completely open and transparent at [our Open Collective](https://opencollective.com/comaps).
|
||||
|
||||
@@ -158,12 +158,6 @@ SHA-256: 4894e8e6963627ef660031d8593fe77297f835acb4e23810003e926135023b4c
|
||||
SHA-1: 8b7b5739f917e9f7c681671ced0c9c8562123ade
|
||||
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
|
||||
|
||||
3
android/app/.gitignore
vendored
@@ -24,6 +24,3 @@
|
||||
/src/main/res/drawable-mdpi/uk_northern_ireland.png
|
||||
/src/main/res/drawable-mdpi/uk_scotland.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
|
||||
@@ -29,12 +29,12 @@ def getCommitMessage() {
|
||||
project.ext.appId = 'app.comaps'
|
||||
project.ext.appName = 'CoMaps'
|
||||
|
||||
|
||||
java {
|
||||
toolchain {
|
||||
languageVersion.set(JavaLanguageVersion.of(21))
|
||||
}
|
||||
}
|
||||
// I have Java 21 installed, but this doesn't work on MacOS.
|
||||
//java {
|
||||
// toolchain {
|
||||
// languageVersion.set(JavaLanguageVersion.of(17))
|
||||
// }
|
||||
//}
|
||||
|
||||
android {
|
||||
namespace = 'app.organicmaps'
|
||||
@@ -138,6 +138,8 @@ android {
|
||||
disable 'MissingTranslation'
|
||||
// https://github.com/organicmaps/organicmaps/issues/3551
|
||||
disable 'MissingQuantity', 'UnusedQuantity'
|
||||
// https://github.com/organicmaps/organicmaps/issues/3550
|
||||
disable 'ByteOrderMark'
|
||||
// https://github.com/organicmaps/organicmaps/issues/1077
|
||||
disable 'CustomSplashScreen'
|
||||
// https://github.com/organicmaps/organicmaps/issues/3610
|
||||
@@ -311,8 +313,8 @@ android {
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled = true
|
||||
|
||||
sourceCompatibility JavaVersion.VERSION_21
|
||||
targetCompatibility JavaVersion.VERSION_21
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
}
|
||||
}
|
||||
|
||||
@@ -355,7 +357,8 @@ dependencies {
|
||||
// Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture
|
||||
// https://github.com/organicmaps/organicmaps/issues/6106
|
||||
implementation libs.google.guava
|
||||
implementation libs.appdevnext.androidchart
|
||||
implementation libs.devnullorthrow.mpandroidchart
|
||||
implementation libs.jcip.annotations
|
||||
|
||||
// Test Dependencies
|
||||
androidTestImplementation libs.androidx.test.junit
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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 @@
|
||||
কোম্যাপস - অফলাইনে হাইকিং, সাইকেলিং ও ড্রাইভিং
|
||||
@@ -0,0 +1 @@
|
||||
সহজ মানচিত্র নেভিগেশন - আপনার যাত্রা সম্পর্কে আরও জানুন - সম্প্রদায় কর্তৃক পরিচালিত
|
||||
1
android/app/src/fdroid/play/listings/bn/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
কোম্যাপস - অফলাইনে হাইকিং, সাইকেলিং এবং ড্রাইভিং করুন গোপনীয়তা সহ
|
||||
@@ -1 +0,0 @@
|
||||
CoMaps - Camina, pedala o condueix privadament
|
||||
@@ -1,8 +1,9 @@
|
||||
• OpenStreetMap-Daten vom 4. November
|
||||
• Aktualisierte Karten-Icons, inkl. Farben für Unterhaltungs-, Sport- & andere Unternehmen
|
||||
• Informationen zu Steckdosen an EV-Ladestationen
|
||||
• Symbole für Sportzentren, Veranstaltungsorte, Massagesalons, Gästehäuser und einige stillgelegte Unternehmen
|
||||
• Verbesserungen bei der Suche
|
||||
• Behebung eines Absturzes bei der Suche
|
||||
• Verbesserte Sprachführung während der Navigation
|
||||
Weitere Änderungen finden in unseren Codeberg-Versionshinweisen!
|
||||
Wir stellen vor: Das neue CoMaps-Logo!
|
||||
• Verbesserte Höhenlinien in vielen Regionen (Stufen von 20/50 m)
|
||||
• Links zu Panoramax-Bildern für ausgewählte POIs
|
||||
• OpenStreetMap-Daten vom 13. Juli
|
||||
• Neue Farben für viele Objekte und Farben werden früher angezeigt
|
||||
• Öffnungszeiten werden beim Antippen eines POI angezeigt
|
||||
• Verschiedene Arten von Feuchtgebieten
|
||||
• Neue Farben für Vegetation und andere Features; einige neue Icons
|
||||
• Wandern: bessere Darstellung der Höhenlinien
|
||||
|
Before Width: | Height: | Size: 636 KiB After Width: | Height: | Size: 628 KiB |
|
Before Width: | Height: | Size: 407 KiB After Width: | Height: | Size: 532 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 391 KiB |
|
Before Width: | Height: | Size: 454 KiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 451 KiB After Width: | Height: | Size: 268 KiB |
|
Before Width: | Height: | Size: 357 KiB After Width: | Height: | Size: 263 KiB |
@@ -1,8 +1,10 @@
|
||||
• OpenStreetMap data as of November 4
|
||||
• Recategorized map icons including some new colors for entertainment, sports and other businesses
|
||||
• Display info about available sockets on charging stations
|
||||
• Added bandstands, backless benches and loungers
|
||||
• New icons for different sport centres, event venues, massage salons, guest houses and some disused businesses
|
||||
• Multiple search improvements and crash fix
|
||||
• Improved voice guidance during navigation
|
||||
Check our Codeberg release notes for more changes!
|
||||
Introducing CoMaps logo!
|
||||
|
||||
• upgrade altitude contour lines for many regions to 20 or 50 meters step
|
||||
• add Panoramax Picture links to selected POIs
|
||||
• OpenStreetMap data as of July 13
|
||||
• add color fills to many features and display fills earlier for existing features
|
||||
• display opening hours state when selecting a POI
|
||||
• split all wetlands into several distinct types
|
||||
• update vegetation and other map colors, update some map icons
|
||||
• outdoors: bolder altitude contour lines
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
• Datos OSM del 04/11
|
||||
• Iconos del mapa recategorizados, incluyendo nuevos colores
|
||||
• Visualización de información sobre enchufes disponibles en estaciones de recarga
|
||||
• Adición de iconos para diferentes centros deportivos, lugares de eventos, salones de masajes, posadas y algunos establecimientos comerciales desactivados
|
||||
• Varias mejoras y correcciones de errores en la búsqueda
|
||||
• Mejora en la orientación por voz durante la navegación
|
||||
Más detalles en Codeberg
|
||||
¡Presentamos el logo de CoMaps!
|
||||
• mejora de isolíneas con más detalle para muchas regiones
|
||||
• añade enlaces de imágenes de Panoramax a POIs seleccionados
|
||||
• datos de OpenStreetMap a 13 de julio
|
||||
• añadidos rellenos de color a muchas características
|
||||
• se muestra el estado de horarios de apertura al seleccionar un POI
|
||||
• 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 +1 @@
|
||||
Navegación sencilla - Descubre más en tu camino - Creado por la comunidad
|
||||
Navegación de mapa fácil - Descubre más en tu camino - Creado por la comunidad
|
||||
|
||||
@@ -24,7 +24,7 @@ Sartu komunitatean eta lagundu maparik onena aplikatzen
|
||||
• Lineaz kanpoko Wikipedia artikuluak
|
||||
• Metroaren garraio geruza eta jarraibideak
|
||||
• 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
|
||||
• 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>.
|
||||
Liity yhteisöön ja auta kehittämään parasta karttasovellusta
|
||||
• Käytä sovellusta ja levitä siitä sanaa
|
||||
• Anna palautetta ja raportoi ongelmista
|
||||
• Päivitä karttadataa sovelluksessa tai OpenStreetMap:n verkkosivuilla
|
||||
Lue lisää projektin tavotteista ja suunnasta osoitteesta <b><i>codeberg.org/comaps</i></b>.
|
||||
Liity yhteisöön ja auta kehittämään paras saatavilla oleva karttasovellus
|
||||
• Käytä sovellusta ja kerro siitä myös muille
|
||||
• Anna palautetta ja raportoi ongelmia
|
||||
• 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>Kunnioittaa yksityisyyttä</b>: Sovellus on suunniteltu yksityisyyttä silmälläpitäen. Sovellu ei tunnista ihmisä, seuraa toimintaasi, eikä kerää henkilökohtaisia tietojasi. Mainosvapaa.
|
||||
‣ <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>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>Avoin ja läpinäkyvä päätöksenteko ja rahoitus. Voittoa tavoittelematon ja täysin avoimeen lähdekoodiin perustuva.</b>
|
||||
‣ <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 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>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 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 sekä rahoitus. Voittoa tavoittelematon ja täysin avoimeen lähdekoodiin perustuva.</b>
|
||||
|
||||
<b>Tärkeimmät ominaisuudet</b>:
|
||||
<ul>
|
||||
<li>Ladattavat yksityiskohtaiset kartat paikoista, joita ei löydy edes Google Maps:sta</li>
|
||||
<li>Ulkoilutila, josta löytyy korostettuna reitit, leirintäpaikat, vesipisteet, huiput ja korkeuserot yms.</li>
|
||||
<li>Kävely- ja pyörätiet</li>
|
||||
<li>Kiinnostavat paikat, kuten ravintolat, huoltoasemat, hotellit, kaupat, nähtävyydet ja monta muuta</li>
|
||||
<li>Etsi nimellä, osoitteella tai kiinnostavan paikan kategorialla</li>
|
||||
<li>Navigointi ääni-ilmoituksilla kävellessä, pyöräillessä tai ajaessa</li>
|
||||
<li>Tallenna suosikkipaikkasi yhdellä napautuksella</li>
|
||||
<li>Offline Wikipedia-artikkelit</li>
|
||||
<li>Maanalaisen liikenteen tasot ja ohjeet</li>
|
||||
<li>Reittien tallennus</li>
|
||||
<li>Tuo ja vie kirjanmerkkejä ja reittejä KML-, KMZ- ja GPX-formaateissa</li>
|
||||
<li>Tumma tila iltaa ja yötä varten</li>
|
||||
<li>Paranna karttadataa kaikille sisäänrakennetulla editorilla</li>
|
||||
</ul>
|
||||
• Ladattavat yksityiskohtaiset kartat paikoista, joita ei löydy edes Google Maps:sta
|
||||
• Ulkoilutila, josta löytyy korostettuna reitit, leirintäpaikat, vesipisteet, huiput ja korkeuserot yms.
|
||||
• Kävely- ja pyörätiet
|
||||
• Kiinnostavat paikat, kuten ravintolat, huoltoasemat, hotellit, kaupat, nähtävyydet ja monta muuta
|
||||
• Etsi nimellä, osoitteella tai kiinnostavan paikan kategorialla
|
||||
• Navigointi ääni-ilmoituksilla kävellessä, pyöräillessä tai ajaessa
|
||||
• Tallenna suosikkipaikkasi yhdellä napautuksella
|
||||
• Offline Wikipedia-artikkelit
|
||||
• Maanalaisen liikenteen tasot ja ohjeet
|
||||
• Reittien tallennus
|
||||
• Tuo ja vie kirjanmerkkejä ja reittejä KML-, KMZ- ja GPX-formaateissa
|
||||
• Tumma tila iltaa ja yötä varten
|
||||
• Paranna karttadataa kaikille sisäänrakennetulla editorilla
|
||||
|
||||
<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
|
||||
|
||||
|
Before Width: | Height: | Size: 605 KiB After Width: | Height: | Size: 655 KiB |
|
Before Width: | Height: | Size: 407 KiB After Width: | Height: | Size: 532 KiB |
|
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 391 KiB |
|
Before Width: | Height: | Size: 452 KiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 460 KiB After Width: | Height: | Size: 254 KiB |
|
Before Width: | Height: | Size: 355 KiB After Width: | Height: | Size: 263 KiB |
@@ -1,8 +1,7 @@
|
||||
• Données OpenStreetMap au 4 novembre
|
||||
• Recatégorisation des icônes sur la carte avec ajout de nouvelles couleurs pour certains types de lieux
|
||||
• Affichage des prises sur les bornes électriques
|
||||
• Ajout d'icônes pour les centres sportifs, salles d'événements, salon de massage et autres lieux
|
||||
• Multiple améliorations dans la recherche
|
||||
• Correction d'un plantage dans la recherche
|
||||
• Amélioration de la synthèse vocale durant la navigation
|
||||
Plus d'informations sur notre Codeberg
|
||||
Présentation du logo CoMaps !
|
||||
• Amélioration des courbes d’altitude à une précision de 20 ou 50 mètres pour de nombreuses régions
|
||||
• Ajout d'un lien vers les images Panoramax des POI
|
||||
• Données OpenStreetMap du 13 juillet
|
||||
• Affichage de l’état des heures d’ouverture lors de la sélection d’un POI
|
||||
• Mise à jour du style(végétation et zones humides), mise à jour de certaines icônes de la carte
|
||||
• Outdoors: Améliorations de la visibilité des courbes d'altitude
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Navigation facile del mappa – Discoperi tu viage – Alimentate per le communitate
|
||||
@@ -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>.
|
||||
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>:
|
||||
• 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
|
||||
• Punti d'interesse come ristoranti, stazioni di benzina, hotel, negozi, luoghi turistici e molto altro
|
||||
• 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
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Enkel kartnavigering - Opplev mere på din reise - Drevet av felleskapet
|
||||
@@ -1 +0,0 @@
|
||||
CoMaps - Gå, sykle, kjøre offline med personvern
|
||||
@@ -1,32 +0,0 @@
|
||||
Prowadzona przez społeczność, darmowa i otwartoźródłowa aplikacja mapowa oparta na danych OpenStreetMap, wzmacniana zobowiązaniem do transparentności, prywatności i działalnością non-profit. CoMaps jest forkiem/spin-off'em Organic Maps, który z kolei jest forkiem Maps.ME.
|
||||
|
||||
Przeczytaj o powodach powstania projektu i jego kierunku na stronie <b><i>codeberg.org/comaps</i></b>.
|
||||
Dołącz do społeczności i pomóż stworzyć najlepszą aplikację mapową
|
||||
• Używaj aplikacji i rozpowszechnia o niej informacje,
|
||||
• Przekazuj opinie i zgłaszaj problemy,
|
||||
• Aktualizuj dane w aplikacji lub na stronie OpenStreetMap.
|
||||
|
||||
‣ <b>Skoncentrowana na pracy w trybie offline</b>: Zaplanuj trasę i nawiguj podczas swojej podróży za granicą bez potrzeby korzystania z sieci komórkowej, wyszukuj punkty nawigacyjne podczas dalekich wędrówek itp. Wszystkie funkcje aplikacji zostały zaprojektowane do pracy w trybie offline.
|
||||
‣ <b>Poszanowanie prywatności</b>: Aplikacja została zaprojektowana z myślą o prywatności – nie identyfikuje osób, nie śledzi ich i nie gromadzi danych osobowych. Bez reklam.
|
||||
‣ <b>Prosta i dopracowana</b>: niezbędne, łatwe w użyciu funkcje, które po prostu działają.
|
||||
‣ <b>Oszczędza baterię i miejsce</b>: Nie wyczerpuje baterii jak inne aplikacje nawigacyjne. Kompaktowe mapy oszczędzają cenne miejsce w telefonie.
|
||||
‣ <b>Darmowa i stworzona przez społeczność</b>: Osoby takie jak Ty pomogły w tworzeniu aplikacji, dodając miejsca do OpenStreetMap, testując i przekazując opinie na temat funkcji oraz wnosząc swoje umiejętności programistyczne i pieniądze.
|
||||
‣ <b>Otwarte i transparentne podejmowanie decyzji i zarządzanie finansami, nie dla zysku i w pełni otwartoźródłowe.</b>
|
||||
|
||||
<b>Główne funkcje</b>:
|
||||
• Szczegółowe mapy do pobrania z miejscami niedostępnymi na wielu mapach komercyjnych,
|
||||
• Tryb outdoorowy z wyróżnionymi szlakami turystycznymi, kempingami, źródłami wody, szczytami, poziomicami itp.,
|
||||
• Ścieżki spacerowe i rowerowe,
|
||||
• Punkty zainteresowania, takie jak restauracje, stacje benzynowe, hotele, sklepy, atrakcje turystyczne i wiele innych,
|
||||
• Wyszukiwanie według nazwy, adresu lub kategorii punktu zainteresowania,
|
||||
• Nawigacja z komunikatami głosowymi dla pieszych, rowerzystów i kierowców,
|
||||
• Dodawanie zakładek do ulubionych miejsc jednym dotknięciem,
|
||||
• Artykuły z Wikipedii offline,
|
||||
• Warstwa z liniami metra oraz nawigacja z użyciem metra,
|
||||
• Nagrywanie tras,
|
||||
• Eksport i import zakładek i tras w formatach KML, KMZ i GPX,
|
||||
• Ciemny tryb do użytku w nocy,
|
||||
• Ulepszanie danych mapowych dzięki wbudowanemu edytorowi.
|
||||
|
||||
<b>Wolność jest tutaj</b>
|
||||
Odkrywaj swoją podróż, nawiguj po świecie z prywatnością i społecznością na pierwszym planie!
|
||||
@@ -0,0 +1,9 @@
|
||||
Wprowadzamy logo CoMaps!
|
||||
• zwiększenie dokładności izolinii w wielu regionach w krokach 20 do 50 metrów
|
||||
• dodanie linków do zdjęć z Panoramax do wybranych POI
|
||||
• aktualizacja danych OpenStreetMap z 13 lipca
|
||||
• dodanie wypełnienia kolorem dla wielu typów obiektów
|
||||
• wyświetlanie stanu godzin otwarcia przy wyborze POI
|
||||
• podział mokradeł na kilka typów
|
||||
• aktualizacja koloru roślinności i innych kolorów, aktualizacja części ikon na mapie
|
||||
• tryb outdoorowy: pogrubione warstwice wysokości
|
||||
@@ -1 +0,0 @@
|
||||
Łatwa nawigacja po mapie - Odkryj więcej z podróży - Wspierane przez społeczność
|
||||
@@ -1 +0,0 @@
|
||||
CoMaps - Nawiguj offline z zachowaniem prywatności
|
||||
@@ -1,7 +1,9 @@
|
||||
• Dados OSM de 04/11
|
||||
• Ícones do mapa recategorizados, incluindo novas cores
|
||||
• Exibição de informações sobre tomadas disponíveis em eletropostos
|
||||
• Adição de ícones para diferentes centros esportivos, locais de eventos, salões de massagem, pousadas e alguns estabelecimentos comerciais desativados
|
||||
• Diversas melhorias e correção de erro na busca
|
||||
• Melhoria na orientação por voz durante a navegação
|
||||
Confira nossas notas de lançamento no Codeberg para mais detalhes!
|
||||
Apresentamos o logo do CoMaps!
|
||||
• Curvas de nível mais detalhadas em muitas regiões
|
||||
• Adicionados links de imagens do Panoramax para pontos de interesse selecionados
|
||||
• Dados OSM de 13/07
|
||||
• Adicionados preenchimentos de cor a muitos elementos
|
||||
• Exibição de horário de funcionamento ao selecionar um ponto de interesse
|
||||
• Divididas áreas úmidas em vários tipos distintos
|
||||
• Atualizada cores/ícones para vegetação e outros elementos
|
||||
• Ar livre: curvas de nível de altitude mais destacadas
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
Uma aplicação pela comunidade, grátis e ‘open-source’, de mapas baseada em dados do OpenStreetMap e reforçada com compromisso para transparência, privacidade e sem fins lucrativos. CoMaps é um fork/spin-off de Organic Maps, que, por sua vez, é um fork de Maps.ME
|
||||
|
||||
Leia sobre as razões deste projeto e a sua direção em <b><i>codeberg.org/comaps</i></b>.
|
||||
Junte-se à comunidade e ajude a fazer a melhor aplicação de mapas
|
||||
• Use a aplicação e partilhe-a com outros
|
||||
• Dê ‘feedback’ e reporte problemas
|
||||
• Atualize os dados de mapa na aplicação ou no site do OpenStreetMap
|
||||
|
||||
‣ <b>Simples e Polida</b>: funcionalidades essenciais fáceis que “somente funcionam”.
|
||||
‣ <b>Foco Offline</b>: Planeie e navegue as suas viagens no estrangeiro sem dados móveis, procure locais numa caminhada distante, etc. Todas as funções da aplicação foram criadas com intenção de serem usadas sem internet.
|
||||
‣ <b>Respeita a privacidade</b>: A aplicação foi criada com privacidade em mente — não identifica o utilizador, não rastreia, e não usa a sua informação pessoal. Sem anúncios.
|
||||
‣ <b>Saves Your Battery and Space</b>: Não esgota a sua bateria ao contrário de outras aplicações. Mapas compactos salvam espaço no seu telemóvel.
|
||||
‣ <b>Gratuita e Feita pela Comunidade</b>: Pessoas como si ajudam a criar a aplicação ao adicionar locais ao OpenStreetMap, testando e dando opiniões em funcionalidades e contribuindo com dotes de desenvolvimento e dinheiro.
|
||||
‣ <b>Decisões e Finanças Abertas e Transparentes, Sem fins lucrativos e ‘Open-Source’.</b>
|
||||
|
||||
<b>Funcionalidades principais</b>:
|
||||
• Mapas detalhados descarregáveis com locais que não estão disponíveis com o Google Maps
|
||||
• Modo ao Ar Livre com trilhos de caminhada destacados, acampamentos, fontes de água, cumes, curvas de nível, etc
|
||||
• Caminhos pedestres e ciclovias
|
||||
• Pontos de interesse como restaurantes, estações de serviço, hotéis, lojas, atrações e muitos mais
|
||||
• Pesquise por nome, endereço, ou por categoria de ponto de interesse
|
||||
• Navegação com anúncios de voz ao caminhar, pedalar ou conduzir
|
||||
• Marque os seus locais favoritos com um único clique
|
||||
• Artigos da Wikipédia Offline
|
||||
• Camada de metro e direções
|
||||
• Gravação de Percursos
|
||||
• Exportar e importar marcadores e percursos em formatos KML, KMZ, GPX
|
||||
• Um modo escuro para usar durante a noite
|
||||
• Melhore a informação do mapa para todos com um editor básico embebido
|
||||
|
||||
<b>A liberdade chegou</b>
|
||||
Descubra a sua jornada, navegue o mundo com privacidade e a comunidade à frente!
|
||||