KGeoTag: Difference between revisions
(Updated dependencies) |
|||
(7 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
== Building KGeoTag from sources == | == Building KGeoTag from sources == | ||
=== Dependencies === | |||
KGeoTag depends on cmake, Qt 5 (Core, Widgets and Network), KDE's extra cmake modules, the KDE Frameworks (CoreAddons, I18n, XmlGui, ConfigWidgets, Crash and DocTools), KExiv2 and Marble. | |||
On a Debian-based distribution, you may want to install The following packages: | |||
{{Input|1=<nowiki> | |||
git cmake build-essential gettext extra-cmake-modules qtbase5-dev libkf5coreaddons-dev libkf5i18n-dev libkf5xmlgui-dev libkf5crash-dev libkf5doctools-dev libkf5kexiv2-dev libmarble-dev | |||
</nowiki>}} | |||
=== Getting the sources === | === Getting the sources === | ||
Line 56: | Line 66: | ||
<pre> | <pre> | ||
timezones/timezones.json --> ~/.local/share/kgeotag/timezones.json | timezones/timezones.json --> ~/.local/share/kgeotag/timezones.json | ||
timezones/timezones.png --> ~/.local/share/kgeotag/timezones.png | timezones/timezones.png --> ~/.local/share/kgeotag/timezones.png | ||
Line 88: | Line 97: | ||
* Don't forget to <code>git pull</code> once again :-) | * Don't forget to <code>git pull</code> once again :-) | ||
* Update <code>ChangeLog.rst</code> with release info and add the new version to <code>CMakeLists.txt</code> (in the <code>project</code> call) | * Check if the <code>KAboutData::setCopyrightStatement</code> in <code>main.cpp</code> is up to date | ||
* Update <code>ChangeLog.rst</code> with release info and add what's still missing | |||
* Add the new version to <code>CMakeLists.txt</code> (in the <code>project</code> call) | |||
* Add the new version to <code>org.kde.kgeotag.appdata.xml</code> | |||
* Commit the changes and push them:<br/>{{Input|1=<nowiki>git commit -a | |||
git push</nowiki>}} | |||
* Wait for the CI to finish | |||
* | * Create a tag and push it:<br/>{{Input|1=<nowiki>git tag -a -m "KGeoTag 1.1.0 released" v1.1.0 | ||
git tag -a -m "KGeoTag 1.1.0 released" v1.1.0 | |||
git push --tags</nowiki>}} | git push --tags</nowiki>}} | ||
* Create a tarball using the [https://invent.kde.org/sdk/releaseme/ releaseme script]:<br/>{{Input|1=<nowiki>git pull | * Create a tarball using the [https://invent.kde.org/sdk/releaseme/ releaseme script] (until KGeoTag is based on Qt 6 and KF 6, we use the "plasma5" branch):<br/>{{Input|1=<nowiki>git pull | ||
git checkout plasma5 | |||
./tarme.rb --origin trunk --version 1.1.0 kgeotag</nowiki>}} | ./tarme.rb --origin trunk --version 1.1.0 kgeotag</nowiki>}} | ||
* Upload the tarball and signature file to KDE's FTP server, e. g. via curl:<br/>{{Input|1=<nowiki> curl -T "kgeotag-1.1.0.tar.xz{,.sig}" ftp://upload.kde.org/incoming/ | * Upload the tarball and signature file to KDE's FTP server, e.g. via curl:<br/>{{Input|1=<nowiki> curl -T "kgeotag-1.1.0.tar.xz{,.sig}" ftp://upload.kde.org/incoming/ | ||
</nowiki>}} | </nowiki>}} | ||
Latest revision as of 09:30, 27 May 2024
This is about KGeoTag, the stand-alone KDE photo geotagging program.
Building KGeoTag from sources
Dependencies
KGeoTag depends on cmake, Qt 5 (Core, Widgets and Network), KDE's extra cmake modules, the KDE Frameworks (CoreAddons, I18n, XmlGui, ConfigWidgets, Crash and DocTools), KExiv2 and Marble.
On a Debian-based distribution, you may want to install The following packages:
git cmake build-essential gettext extra-cmake-modules qtbase5-dev libkf5coreaddons-dev libkf5i18n-dev libkf5xmlgui-dev libkf5crash-dev libkf5doctools-dev libkf5kexiv2-dev libmarble-dev
Getting the sources
When working on KGeoTag, you may want to checkout the git sources. KGeoTag's repository can be found on KDE Invent. To clone the sources, simply run
git clone https://invent.kde.org/graphics/kgeotag.git
or, with write access (if you already have a KDE Developer account):
git clone [email protected]:graphics/kgeotag.git
Building the sources
The build process is quite straightforward. It's a "normal" cmake build. So this essentially strips down to (of course inside the source directory):
mkdir build cd build cmake .. make
You may want to use the Ninja build system, in this case you have to use:
mkdir build cd build cmake -G Ninja .. ninja
A common approach is to start as many concurrent build processes as you have CPUs. So for a 4-core CPU, you may want to run
make -j4
or
ninja -j4
respectively.
A good recommendation for development is to create a "Debug" build. This way, you get better (or useable at all) backtraces in case of a crash if you run KGeoTag with a debugger (like gdb), and you get extra warnings whilst compiling. To enable a Debug build, invoke cmake like so:
cmake -DCMAKE_BUILD_TYPE=Debug ..
Running the compiled sources
You don't have to install KGeoTag (neither system-widely, nor locally) to be able to run it. The executable file will end up at bin/kgeotag
inside your build directory.
To work properly however, KGeoTag needs to find some files in standard directories. If you don't install KGeoTag as root into the / directory structure, you have to make them accessible via your home directory. The easiest approach is to create symbolic links from your sources to your home directory. This way, changes made to those files will be present at once (after restarting KGeoTag). The following files have to be present:
timezones/timezones.json --> ~/.local/share/kgeotag/timezones.json timezones/timezones.png --> ~/.local/share/kgeotag/timezones.png
Installing the compiled sources
This is as simple as a
make install
or
ninja install
respectively. For this case, you have to be root, so either be root or prepend a sudo
on distributions that use this concept.
Alternatively, you can define a installation target inside a local prefix to keep all inside your home directory. You have to tell cmake about the changed prefix, e. g. by running
cmake -DCMAKE_INSTALL_PREFIX=~/.local
This is also possible after having already built the sources.
KGeoTag release steps
- A few weeks before the release, announce a string freeze to the i18n team via
[email protected]
.
- Don't forget to
git pull
once again :-)
- Check if the
KAboutData::setCopyrightStatement
inmain.cpp
is up to date
- Update
ChangeLog.rst
with release info and add what's still missing
- Add the new version to
CMakeLists.txt
(in theproject
call)
- Add the new version to
org.kde.kgeotag.appdata.xml
- Commit the changes and push them:
git commit -a git push
- Wait for the CI to finish
- Create a tag and push it:
git tag -a -m "KGeoTag 1.1.0 released" v1.1.0 git push --tags
- Create a tarball using the releaseme script (until KGeoTag is based on Qt 6 and KF 6, we use the "plasma5" branch):
git pull git checkout plasma5 ./tarme.rb --origin trunk --version 1.1.0 kgeotag
- Upload the tarball and signature file to KDE's FTP server, e.g. via curl:
curl -T "kgeotag-1.1.0.tar.xz{,.sig}" ftp://upload.kde.org/incoming/
- Use the given link to create a Sysadmin ticket asking to put the files on the mirros.
- Add the new version to Bugzilla.
- Wait until the files actually hit the mirrors :-D – You can write a release announcement in the meantime.
- Announce the new release on KGeoTag's homepage. The sources can be checked out from https://invent.kde.org/websites/kgeotag-kde-org/.
- Announce the release on
[email protected]
and[email protected]
.