Unverified Commit 04e40bca authored by Cosima Neidahl's avatar Cosima Neidahl Committed by GitHub
Browse files

ubports-click: Bump, modernise, fix GCC 14 compat (#367871)

parents bdfccb2c dba1cb7d
Loading
Loading
Loading
Loading
+178 −0
Original line number Diff line number Diff line
{
  fetchFromGitLab,
  fetchpatch,
  gitUpdater,
  lib,
  stdenv,
  testers,
  autoreconfHook,
  dbus,
  dbus-test-runner,
  dpkg,
  getopt,
  glib,
  gobject-introspection,
  json-glib,
  libgee,
  perl,
  pkg-config,
  properties-cpp,
  python3Packages,
  vala,
  wrapGAppsHook3,
}:

let
  self = python3Packages.buildPythonApplication rec {
    pname = "click";
    version = "0.5.2";
    format = "other";

    src = fetchFromGitLab {
      owner = "ubports";
      repo = "development/core/click";
      rev = version;
      hash = "sha256-AV3n6tghvpV/6Ew6Lokf8QAGBIMbHFAnp6G4pefVn+8=";
    };

    patches = [
      # Remove when version > 0.5.2
      (fetchpatch {
        name = "0001-click-fix-Wimplicit-function-declaration.patch";
        url = "https://gitlab.com/ubports/development/core/click/-/commit/8f654978a12e6f9a0b6ff64296ec5565e3ff5cd0.patch";
        hash = "sha256-kio+DdtuagUNYEosyQY3q3H+dJM3cLQRW9wUKUcpUTY=";
      })

      # Remove when version > 0.5.2
      (fetchpatch {
        name = "0002-click-Add-uid_t-and-gid_t-to-the-ctypes-_typemap.patch";
        url = "https://gitlab.com/ubports/development/core/click/-/commit/cbcd23b08b02fa122434e1edd69c2b3dcb6a8793.patch";
        hash = "sha256-QaWRhxO61wAzULVqPLdJrLuBCr3+NhKmQlEPuYq843I=";
      })
    ];

    postPatch = ''
      # These should be proper Requires, using the header needs their headers
      substituteInPlace lib/click/click-*.pc.in \
        --replace-fail 'Requires.private' 'Requires'

      # Don't completely override PKG_CONFIG_PATH
      substituteInPlace click_package/tests/Makefile.am \
        --replace-fail 'PKG_CONFIG_PATH=$(top_builddir)/lib/click' 'PKG_CONFIG_PATH=$(top_builddir)/lib/click:$(PKG_CONFIG_PATH)'

      patchShebangs bin/click
    '';

    strictDeps = true;

    pkgsBuildBuild = [
      pkg-config
    ];

    nativeBuildInputs = [
      autoreconfHook
      dbus-test-runner # Always checking for this
      getopt
      gobject-introspection
      perl
      pkg-config
      vala
      wrapGAppsHook3
    ];

    buildInputs = [
      glib
      json-glib
      libgee
      properties-cpp
    ];

    propagatedBuildInputs = with python3Packages; [
      python-debian
      pygobject3
      setuptools
    ];

    nativeCheckInputs = [
      dbus
      dpkg
      python3Packages.unittestCheckHook
    ];

    checkInputs = with python3Packages; [
      python-apt
      six
    ];

    preConfigure = ''
      export click_cv_perl_vendorlib=$out/${perl.libPrefix}
      export PYTHON_INSTALL_FLAGS="--prefix=$out"
    '';

    configureFlags = [
      "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
      "--with-systemduserunitdir=${placeholder "out"}/lib/systemd/user"
    ];

    enableParallelBuilding = true;

    doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;

    disabledTestPaths = [
      # From apt: Unable to determine a suitable packaging system type
      "click_package/tests/integration/test_signatures.py"
      "click_package/tests/test_build.py"
      "click_package/tests/test_install.py"
      "click_package/tests/test_scripts.py"
    ];

    preCheck = ''
      export HOME=$TMP

      # tests recompile some files for loaded predefines, doesn't use any optimisation level for it
      # makes test output harder to read, so make the warning go away
      export NIX_CFLAGS_COMPILE+=" -U_FORTIFY_SOURCE"

      # Haven'tbeen able to get them excluded via disabledTest{s,Paths}, just deleting them
      for path in $disabledTestPaths; do
        rm -v $path
      done
    '';

    preFixup = ''
      makeWrapperArgs+=(
        --prefix LD_LIBRARY_PATH : "$out/lib"
      )
    '';

    passthru = {
      updateScript = gitUpdater { };
    };

    meta = {
      description = "Tool to build click packages, mainly used for Ubuntu Touch";
      homepage = "https://gitlab.com/ubports/development/core/click";
      changelog = "https://gitlab.com/ubports/development/core/click/-/blob/${version}/ChangeLog";
      license = lib.licenses.gpl3Only;
      mainProgram = "click";
      maintainers =
        with lib.maintainers;
        [
          ilyakooo0
        ]
        ++ lib.teams.lomiri.members;
      platforms = lib.platforms.linux;
      pkgConfigModules = [
        "click-0.4"
      ];
    };
  };
in
self
// {
  passthru = self.passthru // {
    tests.pkg-config = testers.hasPkgConfigModules {
      package = self;
    };
  };
}
+0 −23
Original line number Diff line number Diff line
diff --git a/click_package/Makefile.am b/click_package/Makefile.am
index 4981d74..9df9e79 100644
--- a/click_package/Makefile.am
+++ b/click_package/Makefile.am
@@ -1,5 +1,3 @@
-SUBDIRS = tests
-
 noinst_SCRIPTS = paths.py
 CLEANFILES = $(noinst_SCRIPTS)
 
diff --git a/configure.ac b/configure.ac
index 8f4dc9e..adbd366 100644
--- a/configure.ac
+++ b/configure.ac
@@ -52,8 +52,6 @@ PKG_CHECK_MODULES([SERVICE], [
 AC_SUBST([SERVICE_CFLAGS])
 AC_SUBST([SERVICE_LIBS])
 
-AC_CHECK_PROG(DBUS_TEST_RUNNER_CHECK,dbus-test-runner,yes)
-AS_IF([test "${DBUS_TEST_RUNNER_CHECK}" != "yes"], [AC_MSG_ERROR([dbus-test-runner not found])])
 AC_CHECK_PROG(GDBUS_CHECK,gdbus,yes)
 AS_IF([test "${GDBUS_CHECK}" != "yes"], [AC_MSG_ERROR([gdbus (glib) not found])])
 
+0 −96
Original line number Diff line number Diff line
{
  lib,
  fetchFromGitLab,
  buildPythonApplication,
  autoreconfHook,
  python-debian,
  perl,
  vala,
  pkg-config,
  libgee,
  json-glib,
  properties-cpp,
  gobject-introspection,
  getopt,
  setuptools,
  pygobject3,
  wrapGAppsHook3,
}:

buildPythonApplication {
  pname = "click";
  version = "unstable-2023-02-22";
  format = "other";

  src = fetchFromGitLab {
    owner = "ubports";
    repo = "development/core/click";
    rev = "aaf2735e8e6cbeaf2e429c70136733513a81718a";
    hash = "sha256-pNu995/w3tbz15QQVdVYBnWnAoZmqWj1DN/5PZZ0iZw=";
  };

  postPatch = ''
    # These should be proper Requires, using the header needs their headers
    substituteInPlace lib/click/click-*.pc.in \
      --replace 'Requires.private' 'Requires'
  '';

  configureFlags = [
    "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
    "--with-systemduserunitdir=${placeholder "out"}/lib/systemd/user"
  ];

  preFixup = ''
    makeWrapperArgs+=(
      --prefix LD_LIBRARY_PATH : "$out/lib"
    )
  '';

  preConfigure = ''
    export click_cv_perl_vendorlib=$out/${perl.libPrefix}
    export PYTHON_INSTALL_FLAGS="--prefix=$out"
  '';

  nativeBuildInputs = [
    autoreconfHook
    perl
    pkg-config
    gobject-introspection
    vala
    getopt
    wrapGAppsHook3
  ];

  # Tests were omitted for time constraint reasons
  doCheck = false;

  enableParallelBuilding = true;

  patches = [
    # dbus-test-runner not packaged yet, otherwise build-time dependency even when not running tests
    ./dbus-test-runner.patch
  ];

  buildInputs = [
    libgee
    json-glib
    properties-cpp
  ];

  propagatedBuildInputs = [
    python-debian
    pygobject3
    setuptools
  ];

  meta = {
    description = "Tool to build click packages. Mainly used for Ubuntu Touch";
    homepage = "https://gitlab.com/ubports/development/core/click";
    license = lib.licenses.gpl3Only;
    maintainers = with lib.maintainers; [
      ilyakooo0
      OPNA2608
    ];
    platforms = lib.platforms.linux;
  };
}
+0 −2
Original line number Diff line number Diff line
@@ -6955,8 +6955,6 @@ with pkgs;
    llvmPackages = llvmPackages_18;
  };
  ubports-click = python3Packages.callPackage ../development/tools/click { };
  urweb = callPackage ../development/compilers/urweb {
    icu = icu67;
  };