Unverified Commit 63911cd4 authored by 7c6f434c's avatar 7c6f434c Committed by GitHub
Browse files

Merge pull request #328420 from toonn/quirc-absolute-install-name

quirc: Use dylib with absolute install name on Darwin
parents 2caf40ce f5e6e113
Loading
Loading
Loading
Loading
+20 −7
Original line number Diff line number Diff line
From 7435b2e12c2004cb0c497ff313288902f2a6f39a Mon Sep 17 00:00:00 2001
From: toonn <toonn@toonn.io>
Date: Fri, 19 Jul 2024 21:53:58 +0200
Subject: [PATCH] Don't build demos

---
 Makefile | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 2d5b745..ecef988 100644
index 8327b4e..7901cc5 100644
--- a/Makefile
+++ b/Makefile
@@ -37,7 +37,7 @@ DEMO_UTIL_OBJ = \
@@ -45,7 +45,7 @@ DEMO_UTIL_OBJ = \
 
 OPENCV_CFLAGS := $(shell pkg-config --cflags opencv4 2>&1)
 OPENCV_LIBS = $(shell pkg-config --libs opencv4)
@@ -11,19 +20,23 @@ index 2d5b745..ecef988 100644
 
 .PHONY: all v4l sdl opencv install uninstall clean
 
@@ -85,14 +85,11 @@ libquirc.so.$(LIB_VERSION): $(LIB_OBJ)
@@ -93,15 +93,12 @@ libquirc.$(VERSIONED_LIB_SUFFIX): $(LIB_OBJ)
 .cxx.o:
 	$(CXX) $(QUIRC_CXXFLAGS) -o $@ -c $<
 
-install: libquirc.a libquirc.so.$(LIB_VERSION) quirc-demo quirc-scanner
+install: libquirc.a libquirc.so.$(LIB_VERSION)
-install: libquirc.a libquirc.$(LIB_SUFFIX) quirc-demo quirc-scanner
+install: libquirc.a libquirc.$(LIB_SUFFIX)
 	install -o root -g root -m 0644 lib/quirc.h $(DESTDIR)$(PREFIX)/include
 	install -o root -g root -m 0644 libquirc.a $(DESTDIR)$(PREFIX)/lib
 	install -o root -g root -m 0755 libquirc.so.$(LIB_VERSION) \
 	install -o root -g root -m 0755 libquirc.$(VERSIONED_LIB_SUFFIX) \
 		$(DESTDIR)$(PREFIX)/lib
 	cp -d libquirc.$(LIB_SUFFIX) $(DESTDIR)$(PREFIX)/lib
-	install -o root -g root -m 0755 quirc-demo $(DESTDIR)$(PREFIX)/bin
-	# install -o root -g root -m 0755 quirc-demo-opencv $(DESTDIR)$(PREFIX)/bin
-	install -o root -g root -m 0755 quirc-scanner $(DESTDIR)$(PREFIX)/bin
 
 uninstall:
 	rm -f $(DESTDIR)$(PREFIX)/include/quirc.h
-- 
2.42.2
+23 −14
Original line number Diff line number Diff line
{ lib, stdenv, fetchFromGitHub, SDL_gfx, SDL, libjpeg, libpng, opencv
, pkg-config }:
{ lib, stdenv, fetchFromGitHub, fetchpatch2, SDL_gfx, SDL, libjpeg, libpng
, opencv, pkg-config }:

stdenv.mkDerivation (finalAttrs: {
  pname = "quirc";
@@ -25,29 +25,38 @@ stdenv.mkDerivation (finalAttrs: {
  makeFlags = [ "PREFIX=$(out)" ];
  env.NIX_CFLAGS_COMPILE = "-I${lib.getDev SDL}/include/SDL -I${SDL_gfx}/include/SDL";

  patches = [
    (fetchpatch2 {
      url = "https://github.com/dlbeer/quirc/commit/2c350d8aaf37246e538a2c93b2cce8c78600d2fc.patch?full_index=1";
      hash = "sha256-ZTcy/EoOBoyOjtXjmT+J/JcbX8lxGKmbWer23lymbWo=";
    })
    (fetchpatch2 {
      url = "https://github.com/dlbeer/quirc/commit/257c6c94d99960819ecabf72199e5822f60a3bc5.patch?full_index=1";
      hash = "sha256-WLQK7vy34VmgJzppTnRjAcZoSGWVaXQSaGq9An8W0rw=";
    })
  ] ++ lib.optionals stdenv.isDarwin [
    # Disable building of linux-only demos on darwin systems
  patches = lib.optionals stdenv.isDarwin [ ./0001-dont-build-demos.patch ];

  buildPhase = lib.optionalString stdenv.isDarwin ''
    runHook preBuild
    make libquirc.so
    make qrtest
    runHook postBuild
  '';
    ./0001-Don-t-build-demos.patch
  ];

  preInstall = ''
    mkdir -p "$out"/{bin,lib,include}

    # install all binaries
    find -maxdepth 1 -type f -executable ! -name '*.so.*' | xargs cp -t "$out"/bin
    find -maxdepth 1 -type f -executable ! -name '*.so.*' ! -name '*.dylib' \
      | xargs cp -t "$out"/bin
  '';

  postInstall = ''
    # don't install static library
    rm $out/lib/libquirc.a

  '' + (if stdenv.isDarwin then ''
    # Set absolute install name to avoid the need for DYLD_LIBRARY_PATH
    dylib=$out/lib/libquirc.${finalAttrs.version}.dylib
    ${stdenv.cc.targetPrefix}install_name_tool -id "$dylib" "$dylib"
  '' else ''
    ln -s $out/lib/libquirc.so.* $out/lib/libquirc.so
  '';
  '');

  meta = {
    description = "Small QR code decoding library";