Need help compiling on manjaro

You should be getting these OOTB - CMake already does -O3 for Release builds and dt already sets -march=native if you don’t do -DBINARY_PACKAGE_BUILD=ON (off by default).

1 Like

Definitely not INTENTIONALLY changing anything! :slight_smile:

I followed kofa’s advice and did:

git clean -d -f -x
git pull --rebase
git submodule update

…which got me to v4.6.0-dirty

Not sure what I did wrong. From what you guys have said, that should have got rid of the dirty flag. If anyone can see where I went wrong, sing out!
Thanks in advance.

My current prompt in the terminal looks like this:
   ~/Downloads/darktable/darktable   #release-4.6.0 !1

I suspect that that “!1” on the end signifies 1 commit different from official, and hence the dirty flag. Is that the case?

What does git status say?

   ~/Downloads/darktable/darktable   #release-4.6.0 !1  git status  INT ✘
HEAD detached at release-4.6.0
Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git restore …” to discard changes in working directory)
modified: src/tests/integration (new commits)

no changes added to commit (use “git add” and/or “git commit -a”)

Yep, your tree is not in a good state, you have a mix of master branch and 4.6.0 tag. Which one do you actually want to build?

4.6.0 for now.

Then you need to actually check out that branch, and then reset to tag:

git checkout darktable-4.6.x
git reset --hard release-4.6.0

What is the status after these?

   ~/Downloads/darktable/darktable    darktable-4.6.x ⇣15 !1  git status  :heavy_check_mark:
On branch darktable-4.6.x
Your branch is behind ‘origin/darktable-4.6.x’ by 15 commits, and can be fast-forwarded.
(use “git pull” to update your local branch)

Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git restore …” to discard changes in working directory)
modified: src/tests/integration (new commits)

no changes added to commit (use “git add” and/or “git commit -a”)

Working ahead here…

   ~/Downloads/darktable/darktable    darktable-4.6.x ⇣15 !1  git pull  :heavy_check_mark:
Updating b59cb9ada5…4de7eb2eab
Fast-forward
RELEASE_NOTES.md | 30 ++++++++++++++±--------------
src/iop/demosaic.c | 27 +++++++++++±--------------
src/iop/finalscale.c | 8 +++++±-
tools/release/generate-translation.sh | 8 +++±—
4 files changed, 37 insertions(+), 36 deletions(-)
   ~/Downloads/darktable/darktable    darktable-4.6.x !1  git status  :heavy_check_mark:
On branch darktable-4.6.x
Your branch is up to date with ‘origin/darktable-4.6.x’.

Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git restore …” to discard changes in working directory)
modified: src/tests/integration (new commits)

no changes added to commit (use “git add” and/or “git commit -a”)

cd src/tests/integration
git reset --hard 8b8a87b
cd ../../..

   ~/Downloads/darktable/darktable    darktable-4.6.x !1  cd src/test/integration  :heavy_check_mark:
cd: no such file or directory: src/test/integration

Ahhh, we were missing the ‘s’ on testS.
BRB…

OK, done!

Ahhhh! This looks promising!

   ~/Downloads/darktable/darktable    darktable-4.6.x 

Running the build script now.

I now have v4.6.0+15~g4de7eb2eab.
Thanks for your assistance, kmilos!

1 Like

This is what I do to compile and install:

Change to my darktable-git directory.
Inside I have this PKGBUILD file:

# Source: https://github.com/archlinux/svntogit-community/tree/master/darktable
# Maintainer: Bruno Pagani <archange@archlinux.org>
# Maintainer: Morten Linderud <foxboron@archlinux.org>
# Maintainer: Caleb Maclennan <caleb@alerque.com>
# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Christian Himpel <chressie at gmail dot com>
# Contributor: Johannes Hanika <hanatos at gmail dot com>
# Contributor: Rafa García <hi at rafagarcia dot net>

pkgname=darktable-git
_gitname=darktable
epoch=2
pkgver=4.7.0.22
pkgrel=1
pkgdesc="Utility to organize and develop raw images"
arch=('i686' 'x86_64')
url="git+https://darktable.org"
license=(GPL3)
depends=(pugixml libjpeg-turbo colord-gtk libgphoto2 openexr lensfun iso-codes zlib
         exiv2 flickcurl openjpeg2 graphicsmagick lua osm-gps-map libsecret openmp
         gmic libavif)
optdepends=('dcraw: base curve script'
            'perl-image-exiftool: base curve script'
            'imagemagick: base curve and noise profile scripts'
            'ghostscript: noise profile script'
            'portmidi: game and midi controller input devices'
            'gnuplot: noise profile script')
makedepends=(git cmake intltool desktop-file-utils llvm clang portmidi python-jsonschema libwebp perl-pod-parser)
conflicts=(darktable)
provides=(darktable)
source=("git+https://github.com/darktable-org/darktable.git")
md5sums=('SKIP')

pkgver() {
    cd $_gitname
    git describe --long | sed 's/release-\(.*\)-\(.*\)-.*/\1.\2/' | sed 's/-/./g'
}

prepare() {
  cd $_gitname
#  git submodule init
  git config submodule.src/tests/integration.update none
  git submodule update --depth 1
  git submodule update --init --recursive
}

build() {
  cd $_gitname
  [[ ! -d build ]] && mkdir -p build
  cmake -B build \
        -DCMAKE_INSTALL_PREFIX=/usr \
        -DCMAKE_INSTALL_LIBDIR=/usr/lib \
        -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib \
        -DCMAKE_BUILD_TYPE=Release \
        -DBINARY_PACKAGE_BUILD=1 \
        -DBUILD_USERMANUAL=False \
        -DUSE_LIBSECRET=ON \
        -DUSE_LUA=ON \
        -DUSE_COLORD=ON \
        -DBUILD_CURVE_TOOLS=ON \
        -DBUILD_NOISE_TOOLS=ON \
        -DRAWSPEED_ENABLE_LTO=ON \
        -DPROJECT_VERSION=${pkgver}
    make -j`grep -c '^processor' /proc/cpuinfo` -C build
}

package() {
  cd $_gitname
  make -C build DESTDIR=$pkgdir install
  ln -s darktable/libdarktable.so "${pkgdir}"/usr/lib/libdarktable.so
}

Then, to compile, create the package and install:

makepkg -scf 
sudo pacman -U darktable-git-...

If I want to directly compile, create the package and install, I use this one-liner:

makepkg -scfi 

A little bit late as I see but anyway, I hope it helps you.

3 Likes

Now, if you ever update (pull) again, or switch (checkout) to a different branch, the key is to remember to run git submodule update --init --recursive immediately after so the tree stays in sync.

2 Likes

Many thanks!