summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorCorentin Noël <corentin@elementary.io>2019-01-24 15:00:29 +0100
committerRichard Hughes <richard@hughsie.com>2020-01-10 09:06:26 +0000
commitf144fbc20df1aa21e666ef2256adbbc63ffcf131 (patch)
tree0acebe2d5fd962166732d4bf52a2a0baf9327e70 /lib
parent3de80c8eb0dca0b57a5dbdca20e754a7de7c053a (diff)
Port to the meson build system
With much help from Martin Blanchard <tchaik@gmx.com> too, thanks to all. https://wiki.gnome.org/Initiatives/GnomeGoals/MesonPorting
Diffstat (limited to 'lib')
-rw-r--r--lib/Makefile.am3
-rw-r--r--lib/meson.build2
-rw-r--r--lib/packagekit-glib2/Makefile.am298
-rw-r--r--lib/packagekit-glib2/meson.build294
-rw-r--r--lib/packagekit-glib2/packagekit-glib2.pc.in12
-rw-r--r--lib/packagekit-glib2/pk-debug.c10
-rw-r--r--lib/python/Makefile.am4
-rw-r--r--lib/python/meson.build12
-rw-r--r--lib/python/packagekit/Makefile.am25
-rw-r--r--lib/python/packagekit/meson.build44
10 files changed, 357 insertions, 347 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am
deleted file mode 100644
index 53a814aaf..000000000
--- a/lib/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-SUBDIRS = python packagekit-glib2
-
--include $(top_srcdir)/git.mk
diff --git a/lib/meson.build b/lib/meson.build
new file mode 100644
index 000000000..f15e9e638
--- /dev/null
+++ b/lib/meson.build
@@ -0,0 +1,2 @@
+subdir('packagekit-glib2')
+subdir('python')
diff --git a/lib/packagekit-glib2/Makefile.am b/lib/packagekit-glib2/Makefile.am
deleted file mode 100644
index 2fe94bd7a..000000000
--- a/lib/packagekit-glib2/Makefile.am
+++ /dev/null
@@ -1,298 +0,0 @@
-if HAVE_INTROSPECTION
--include $(INTROSPECTION_MAKEFILE)
-INTROSPECTION_GIRS =
-INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir)
-INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
-endif
-
-AM_CPPFLAGS = \
- $(GLIB_CFLAGS) \
- $(GIO_CFLAGS) \
- $(POLKIT_CFLAGS) \
- $(SQLITE_CFLAGS) \
- -I$(top_srcdir) \
- -I$(top_srcdir)/lib \
- -I$(top_builddir)/lib \
- -I. \
- -DPK_COMPILATION \
- -DPK_DB_DIR=\""$(PK_DB_DIR)"\" \
- -DG_LOG_DOMAIN=\"PackageKit\" \
- -DLOCALSTATEDIR=\""$(localstatedir)"\" \
- -DTESTDATADIR=\""$(abs_top_srcdir)/data/tests"\" \
- -DPACKAGE_DATA_DIR=\""$(datadir)"\" \
- -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\"
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = \
- packagekit-glib2.pc
-
-lib_LTLIBRARIES = \
- libpackagekit-glib2.la
-
-libpackagekit_glib2_includedir = $(includedir)/PackageKit/packagekit-glib2
-
-HEADER_FILES = \
- packagekit.h \
- pk-bitfield.h \
- pk-category.h \
- pk-client.h \
- pk-client-helper.h \
- pk-client-sync.h \
- pk-common.h \
- pk-control.h \
- pk-control-sync.h \
- pk-desktop.h \
- pk-details.h \
- pk-distro-upgrade.h \
- pk-enum.h \
- pk-error.h \
- pk-eula-required.h \
- pk-files.h \
- pk-media-change-required.h \
- pk-item-progress.h \
- pk-offline.h \
- pk-package.h \
- pk-package-id.h \
- pk-package-ids.h \
- pk-package-sack.h \
- pk-package-sack-sync.h \
- pk-progress.h \
- pk-repo-detail.h \
- pk-repo-signature-required.h \
- pk-require-restart.h \
- pk-results.h \
- pk-source.h \
- pk-task.h \
- pk-task-sync.h \
- pk-transaction-past.h \
- pk-transaction-list.h \
- pk-update-detail.h \
- pk-version.h
-
-libpackagekit_glib2_include_HEADERS = \
- $(HEADER_FILES) \
- pk-enum-types.h
-
-libpackagekit_glib2_la_SOURCES = \
- packagekit.h \
- pk-bitfield.c \
- pk-bitfield.h \
- pk-category.c \
- pk-category.h \
- pk-client.c \
- pk-client.h \
- pk-client-helper.c \
- pk-client-helper.h \
- pk-client-sync.c \
- pk-client-sync.h \
- pk-common.c \
- pk-common.h \
- pk-control.c \
- pk-control.h \
- pk-control-sync.c \
- pk-control-sync.h \
- pk-debug.c \
- pk-debug.h \
- pk-desktop.c \
- pk-desktop.h \
- pk-details.c \
- pk-details.h \
- pk-distro-upgrade.c \
- pk-distro-upgrade.h \
- pk-enum.c \
- pk-enum.h \
- pk-enum-types.c \
- pk-enum-types.h \
- pk-error.c \
- pk-error.h \
- pk-eula-required.c \
- pk-eula-required.h \
- pk-files.c \
- pk-files.h \
- pk-media-change-required.c \
- pk-media-change-required.h \
- pk-item-progress.c \
- pk-item-progress.h \
- pk-offline.c \
- pk-offline.h \
- pk-offline-private.c \
- pk-offline-private.h \
- pk-package.c \
- pk-package.h \
- pk-package-id.c \
- pk-package-id.h \
- pk-package-ids.c \
- pk-package-ids.h \
- pk-package-sack.c \
- pk-package-sack.h \
- pk-package-sack-sync.c \
- pk-package-sack-sync.h \
- pk-progress.c \
- pk-progress.h \
- pk-repo-detail.c \
- pk-repo-detail.h \
- pk-repo-signature-required.c \
- pk-repo-signature-required.h \
- pk-require-restart.c \
- pk-require-restart.h \
- pk-results.c \
- pk-results.h \
- pk-source.c \
- pk-source.h \
- pk-task.c \
- pk-task.h \
- pk-task-sync.c \
- pk-task-sync.h \
- pk-transaction-past.c \
- pk-transaction-past.h \
- pk-transaction-list.c \
- pk-transaction-list.h \
- pk-update-detail.c \
- pk-update-detail.h \
- pk-spawn-polkit-agent.c \
- pk-spawn-polkit-agent.h \
- pk-version.h
-
-libpackagekit_glib2_la_LIBADD = \
- $(GLIB_LIBS) \
- $(GIO_LIBS) \
- $(ARCHIVE_LIBS) \
- $(SQLITE_LIBS)
-
-libpackagekit_glib2_la_LDFLAGS = \
- -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
- -export-dynamic \
- -no-undefined \
- -export-symbols-regex '^pk_.*'
-
-libpackagekit_glib2_la_CFLAGS = \
- $(PIE_CFLAGS) \
- $(WARNINGFLAGS_C)
-
-noinst_LIBRARIES = libpackagekitprivate.a
-libpackagekitprivate_a_SOURCES = \
- packagekit-private.h \
- pk-common-private.h \
- pk-console-shared.c \
- pk-console-shared.h \
- pk-progress-bar.c \
- pk-progress-bar.h \
- pk-task-text.c \
- pk-task-text.h \
- pk-task-wrapper.c \
- pk-task-wrapper.h \
- pk-spawn-polkit-agent.h
-
-libpackagekitprivate_a_CFLAGS = \
- $(PIE_CFLAGS) \
- $(WARNINGFLAGS_C)
-
-noinst_PROGRAMS = pk-socket-example
-pk_socket_example_SOURCES = pk-socket-example.c
-pk_socket_example_LDADD = $(GIO_LIBS) $(GLIB_LIBS)
-pk_socket_example_CFLAGS = $(WARNINGFLAGS_C)
-
-check_PROGRAMS = \
- pk-test-daemon \
- pk-test-private
-
-pk_test_private_SOURCES = \
- $(libpackagekit_glib2_la_SOURCES) \
- pk-test-private.c
-
-pk_test_private_LDADD = \
- libpackagekitprivate.a \
- $(GLIB_LIBS) \
- $(SELFTEST_LIBS) \
- $(POLKIT_LIBS) \
- $(SQLITE_LIBS) \
- $(ARCHIVE_LIBS)
-
-pk_test_private_CFLAGS = \
- -DPK_OFFLINE_DESTDIR=\"/tmp/PackageKit-self-test\" \
- $(AM_CFLAGS) \
- $(WARNINGFLAGS_C)
-
-pk_test_daemon_SOURCES = \
- $(libpackagekit_glib2_la_SOURCES) \
- pk-test-daemon.c
-
-pk_test_daemon_LDADD = \
- libpackagekitprivate.a \
- $(GLIB_LIBS) \
- $(SELFTEST_LIBS) \
- $(POLKIT_LIBS) \
- $(SQLITE_LIBS) \
- $(ARCHIVE_LIBS)
-
-pk_test_daemon_CFLAGS = \
- $(AM_CFLAGS) \
- $(WARNINGFLAGS_C)
-
-TESTS = $(check_PROGRAMS)
-
-EXTRA_DIST = \
- packagekit-glib2.pc.in \
- pk-version.h.in \
- pk-enum-types.h.template \
- pk-enum-types.c.template \
- PackageKitGlib-1.0.metadata
-
-BUILT_SOURCES = \
- pk-enum-types.h \
- pk-enum-types.c
-
-pk-enum-types.h: pk-enum-types.h.template $(HEADER_FILES)
- $(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@
-
-pk-enum-types.c: pk-enum-types.c.template $(HEADER_FILES)
- $(AM_V_GEN) $(GLIB_MKENUMS) --template $^ > $@
-
-CLEANFILES = $(BUILT_SOURCES) *.a *.servicepack
-
-if HAVE_INTROSPECTION
-introspection_sources = $(libpackagekit_glib2_la_SOURCES)
-
-PackageKitGlib-1.0.gir: libpackagekit-glib2.la
-PackageKitGlib_1_0_gir_INCLUDES = GObject-2.0 Gio-2.0
-PackageKitGlib_1_0_gir_CFLAGS = $(AM_CPPFLAGS) -DI_KNOW_THE_PACKAGEKIT_GLIB2_API_IS_SUBJECT_TO_CHANGE
-PackageKitGlib_1_0_gir_SCANNERFLAGS = --identifier-prefix=Pk \
- --symbol-prefix=pk \
- --warn-all \
- --add-include-path=$(srcdir) \
- --c-include="packagekit-glib2/packagekit.h"
-PackageKitGlib_1_0_gir_EXPORT_PACKAGES = packagekit-glib2
-PackageKitGlib_1_0_gir_LIBS = libpackagekit-glib2.la
-PackageKitGlib_1_0_gir_FILES = $(introspection_sources)
-INTROSPECTION_GIRS += PackageKitGlib-1.0.gir
-
-girdir = $(datadir)/gir-1.0
-gir_DATA = $(INTROSPECTION_GIRS)
-
-typelibdir = $(libdir)/girepository-1.0
-typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
-
-if ENABLE_VAPIGEN
-include $(VAPIGEN_MAKEFILE)
-
-packagekit-glib2.vapi: PackageKitGlib-1.0.gir PackageKitGlib-1.0.metadata
-
-VAPIGEN_VAPIS = packagekit-glib2.vapi
-
-packagekit_glib2_vapi_DEPS = gio-2.0
-packagekit_glib2_vapi_METADATADIRS = $(srcdir)
-packagekit_glib2_vapi_FILES = PackageKitGlib-1.0.gir
-
-vapidir = $(datadir)/vala/vapi
-vapi_DATA = $(VAPIGEN_VAPIS)
-endif
-
-CLEANFILES += $(gir_DATA) $(typelib_DATA) $(VAPIGEN_VAPIS)
-endif
-
-clean-local:
- rm -f *~
- rm -f $(CLEANFILES)
-
-
--include $(top_srcdir)/git.mk
diff --git a/lib/packagekit-glib2/meson.build b/lib/packagekit-glib2/meson.build
new file mode 100644
index 000000000..19ab550cd
--- /dev/null
+++ b/lib/packagekit-glib2/meson.build
@@ -0,0 +1,294 @@
+packagekit_glib2_src_include = include_directories('.')
+packagekit_glib2_includes = include_directories('.', '..')
+packagekit_glib2_headers = files(
+ 'packagekit.h',
+ 'pk-bitfield.h',
+ 'pk-category.h',
+ 'pk-client.h',
+ 'pk-client-helper.h',
+ 'pk-client-sync.h',
+ 'pk-common.h',
+ 'pk-control.h',
+ 'pk-control-sync.h',
+ 'pk-desktop.h',
+ 'pk-details.h',
+ 'pk-distro-upgrade.h',
+ 'pk-enum.h',
+ 'pk-error.h',
+ 'pk-eula-required.h',
+ 'pk-files.h',
+ 'pk-media-change-required.h',
+ 'pk-item-progress.h',
+ 'pk-offline.h',
+ 'pk-package.h',
+ 'pk-package-id.h',
+ 'pk-package-ids.h',
+ 'pk-package-sack.h',
+ 'pk-package-sack-sync.h',
+ 'pk-progress.h',
+ 'pk-repo-detail.h',
+ 'pk-repo-signature-required.h',
+ 'pk-require-restart.h',
+ 'pk-results.h',
+ 'pk-source.h',
+ 'pk-task.h',
+ 'pk-task-sync.h',
+ 'pk-transaction-past.h',
+ 'pk-transaction-list.h',
+ 'pk-update-detail.h',
+)
+
+install_headers(packagekit_glib2_headers, subdir : join_paths('PackageKit', 'packagekit-glib2'))
+
+version_parts = meson.project_version().split('.')
+version_configuration = configuration_data()
+version_configuration.set('PK_MAJOR_VERSION', version_parts[0])
+version_configuration.set('PK_MINOR_VERSION', version_parts[1])
+version_configuration.set('PK_MICRO_VERSION', version_parts[2])
+
+pk_version_header = configure_file(
+ input: 'pk-version.h.in',
+ output: 'pk-version.h',
+ configuration: version_configuration,
+)
+
+packagekit_glib2_sources = files(
+ 'pk-bitfield.c',
+ 'pk-category.c',
+ 'pk-client.c',
+ 'pk-client-helper.c',
+ 'pk-client-sync.c',
+ 'pk-common.c',
+ 'pk-control.c',
+ 'pk-control-sync.c',
+ 'pk-debug.c',
+ 'pk-debug.h',
+ 'pk-desktop.c',
+ 'pk-details.c',
+ 'pk-distro-upgrade.c',
+ 'pk-enum.c',
+ 'pk-error.c',
+ 'pk-eula-required.c',
+ 'pk-files.c',
+ 'pk-media-change-required.c',
+ 'pk-item-progress.c',
+ 'pk-offline.c',
+ 'pk-offline-private.c',
+ 'pk-offline-private.h',
+ 'pk-package.c',
+ 'pk-package-id.c',
+ 'pk-package-ids.c',
+ 'pk-package-sack.c',
+ 'pk-package-sack-sync.c',
+ 'pk-progress.c',
+ 'pk-repo-detail.c',
+ 'pk-repo-signature-required.c',
+ 'pk-require-restart.c',
+ 'pk-results.c',
+ 'pk-source.c',
+ 'pk-task.c',
+ 'pk-task-sync.c',
+ 'pk-transaction-past.c',
+ 'pk-transaction-list.c',
+ 'pk-update-detail.c',
+ 'pk-spawn-polkit-agent.c',
+ 'pk-spawn-polkit-agent.h',
+)
+
+pk_enum_type = gnome.mkenums(
+ 'pk-enum-types',
+ c_template: 'pk-enum-types.c.template',
+ h_template: 'pk-enum-types.h.template',
+ sources: packagekit_glib2_headers,
+ install_header: true,
+ install_dir: join_paths(get_option('includedir'), 'PackageKit', 'packagekit-glib2')
+)
+
+packagekitprivate_sources = files(
+ 'packagekit-private.h',
+ 'pk-common-private.h',
+ 'pk-console-shared.c',
+ 'pk-console-shared.h',
+ 'pk-progress-bar.c',
+ 'pk-progress-bar.h',
+ 'pk-task-text.c',
+ 'pk-task-text.h',
+ 'pk-task-wrapper.c',
+ 'pk-task-wrapper.h',
+ 'pk-spawn-polkit-agent.h',
+)
+
+packagekitprivate_library = static_library(
+ 'packagekitprivate',
+ packagekitprivate_sources,
+ dependencies: [
+ glib_dep,
+ gobject_dep,
+ gio_dep,
+ gio_unix_dep,
+ config_dep,
+ ],
+ include_directories: packagekit_glib2_includes,
+ c_args: [
+ '-DPK_COMPILATION=1',
+ '-DG_LOG_DOMAIN="PackageKit"',
+ '-DPACKAGE_LOCALE_DIR="@0@"'.format(package_locale_dir),
+ '-DPACKAGE_DATA_DIR="@0@"'.format(package_data_dir),
+ '-DTESTDATADIR="@0@"'.format(test_data_dir),
+ '-DPK_DB_DIR="@0@"'.format(pk_db_dir),
+ '-DLOCALSTATEDIR="@0@"'.format(local_state_dir),
+ ],
+)
+
+packagekit_glib2_library = shared_library(
+ 'packagekit-glib2',
+ pk_enum_type,
+ pk_version_header,
+ packagekit_glib2_sources,
+ link_whole: packagekitprivate_library,
+ dependencies: [
+ glib_dep,
+ gobject_dep,
+ gio_dep,
+ gio_unix_dep,
+ config_dep,
+ ],
+ include_directories: packagekit_glib2_includes,
+ version: '18.1.3',
+ c_args: [
+ '-DPK_COMPILATION=1',
+ '-DG_LOG_DOMAIN="PackageKit"',
+ '-DPACKAGE_LOCALE_DIR="@0@"'.format (package_locale_dir),
+ '-DPACKAGE_DATA_DIR="@0@"'.format (package_data_dir),
+ '-DTESTDATADIR="@0@"'.format(test_data_dir),
+ '-DPK_DB_DIR="@0@"'.format(pk_db_dir),
+ '-DLOCALSTATEDIR="@0@"'.format(local_state_dir),
+ ],
+ install: true,
+)
+
+packagekit_glib2_dep = declare_dependency(
+ link_with: packagekit_glib2_library,
+ include_directories: packagekit_glib2_includes,
+ sources: [
+ packagekit_glib2_headers,
+ pk_enum_type[1],
+ ],
+ dependencies: [
+ glib_dep,
+ gobject_dep,
+ gio_dep,
+ gio_unix_dep,
+ config_dep,
+ ],
+)
+
+if get_option('gobject_introspection')
+ packagekit_glib2_gir = gnome.generate_gir(
+ packagekit_glib2_library,
+ sources: packagekit_glib2_sources,
+ namespace: 'PackageKitGlib',
+ nsversion: '1.0',
+ include_directories: packagekit_glib2_includes,
+ includes: ['GObject-2.0', 'Gio-2.0', 'GLib-2.0'],
+ header: 'packagekit-glib2/packagekit.h',
+ identifier_prefix: 'Pk',
+ symbol_prefix: 'pk',
+ extra_args: [
+ '-DPK_COMPILATION=1',
+ '-DI_KNOW_THE_PACKAGEKIT_GLIB2_API_IS_SUBJECT_TO_CHANGE',
+ ],
+ dependencies: [
+ glib_dep,
+ gobject_dep,
+ gio_dep,
+ gio_unix_dep,
+ config_dep,
+ ],
+ install: true
+ )
+
+ gnome.generate_vapi(
+ 'packagekit-glib2',
+ packages: ['glib-2.0', 'gio-2.0', 'gobject-2.0'],
+ sources: packagekit_glib2_gir[0],
+ install: true
+ )
+endif
+
+pkg.generate(
+ packagekit_glib2_library,
+ filebase: 'packagekit-glib2',
+ name: 'packagekit-glib2',
+ description: 'PackageKit is a system daemon for installing stuff.',
+ version: meson.project_version(),
+ requires: [
+ glib_dep,
+ gobject_dep,
+ gio_dep,
+ gio_unix_dep,
+ ],
+ subdirs: 'PackageKit'
+)
+
+executable(
+ 'pk-socket-example',
+ 'pk-socket-example.c',
+ dependencies: [
+ glib_dep,
+ gobject_dep,
+ gio_dep,
+ gio_unix_dep,
+ ],
+ build_by_default: true,
+ install: false,
+)
+
+pk_test_private = executable(
+ 'pk-test-private',
+ 'pk-test-private.c',
+ pk_enum_type,
+ packagekitprivate_sources,
+ packagekit_glib2_sources,
+ include_directories: packagekit_glib2_includes,
+ dependencies: [
+ glib_dep,
+ gobject_dep,
+ gio_dep,
+ gio_unix_dep,
+ config_dep,
+ ],
+ c_args: [
+ '-DPK_COMPILATION=1',
+ '-DG_LOG_DOMAIN="PackageKit"',
+ '-DPK_OFFLINE_DESTDIR="/tmp/PackageKit-self-test"',
+ '-DTESTDATADIR="@0@"'.format(test_data_dir),
+ ],
+ build_by_default: true,
+ install: false,
+)
+
+pk_test_daemon = executable(
+ 'pk-test-daemon',
+ 'pk-test-daemon.c',
+ dependencies: [
+ packagekit_glib2_dep,
+ glib_dep,
+ gobject_dep,
+ gio_dep,
+ gio_unix_dep,
+ config_dep,
+ ],
+ c_args: [
+ '-DPK_COMPILATION=1',
+ '-DG_LOG_DOMAIN="PackageKit"',
+ '-DTESTDATADIR="@0@"'.format(test_data_dir),
+ ],
+ build_by_default: true,
+ install: false,
+)
+
+test(
+ 'pk-test-private',
+ pk_test_private
+)
diff --git a/lib/packagekit-glib2/packagekit-glib2.pc.in b/lib/packagekit-glib2/packagekit-glib2.pc.in
deleted file mode 100644
index 11f3903a7..000000000
--- a/lib/packagekit-glib2/packagekit-glib2.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: packagekit-glib2
-Description: PackageKit is a system daemon for installing stuff.
-Version: @VERSION@
-Requires.private: gthread-2.0
-Requires: glib-2.0, gobject-2.0, sqlite3
-Libs: -L${libdir} -lpackagekit-glib2
-Cflags: -I${includedir}/PackageKit
diff --git a/lib/packagekit-glib2/pk-debug.c b/lib/packagekit-glib2/pk-debug.c
index 0d75b7a82..688eca10b 100644
--- a/lib/packagekit-glib2/pk-debug.c
+++ b/lib/packagekit-glib2/pk-debug.c
@@ -81,8 +81,6 @@ pk_debug_handler_cb (const gchar *log_domain, GLogLevelFlags log_level,
{
gchar str_time[255];
time_t the_time;
- guint len;
- guint i;
static GMutex mutex;
/* lock */
@@ -112,9 +110,11 @@ pk_debug_handler_cb (const gchar *log_domain, GLogLevelFlags log_level,
g_print ("%c[%dm%s%c[%dm", 0x1B, CONSOLE_CYAN, log_domain, 0x1B, CONSOLE_RESET);
/* pad with spaces */
- len = strlen (log_domain);
- for (i=len; i<PK_DEBUG_LOG_DOMAIN_LENGTH; i++)
- g_print (" ");
+ if (log_domain != NULL) {
+ guint len = strlen (log_domain);
+ for (guint i = len; i < PK_DEBUG_LOG_DOMAIN_LENGTH; i++)
+ g_print (" ");
+ }
/* critical is also in red */
if (log_level == G_LOG_LEVEL_CRITICAL ||
diff --git a/lib/python/Makefile.am b/lib/python/Makefile.am
deleted file mode 100644
index 285f04b72..000000000
--- a/lib/python/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-SUBDIRS = packagekit
-EXTRA_DIST = enum-convertor.py
-
--include $(top_srcdir)/git.mk
diff --git a/lib/python/meson.build b/lib/python/meson.build
new file mode 100644
index 000000000..df51630f8
--- /dev/null
+++ b/lib/python/meson.build
@@ -0,0 +1,12 @@
+python = import('python')
+python_exec = python.find_installation()
+
+enum_convertor = files('enum-convertor.py')
+
+python_package_dir = get_option('pythonpackagedir')
+if python_package_dir == ''
+ python_package_dir = python_exec.get_install_dir()
+endif
+python_package_dir = join_paths(python_package_dir, 'packagekit')
+
+subdir('packagekit')
diff --git a/lib/python/packagekit/Makefile.am b/lib/python/packagekit/Makefile.am
deleted file mode 100644
index a589cde17..000000000
--- a/lib/python/packagekit/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-BUILT_SOURCES = enums.py
-
-enums.py: $(top_srcdir)/lib/python/enum-convertor.py $(top_srcdir)/lib/packagekit-glib2/pk-enum.c
- $(PYTHON) $(top_srcdir)/lib/python/enum-convertor.py $(top_srcdir)/lib/packagekit-glib2/pk-enum.c > enums.py
-
-if HAVE_PYTHON_BACKEND
-packagekitpythondir = ${PYTHON_PACKAGE_DIR}
-packagekitpython_PYTHON = \
- __init__.py \
- backend.py \
- enums.py \
- progress.py \
- package.py \
- filter.py \
- misc.py
-endif
-
-MAINTAINERCLEANFILES = \
- *.pyc
-
-clean-local :
- rm -f *.pyc
- rm -f *~
-
--include $(top_srcdir)/git.mk
diff --git a/lib/python/packagekit/meson.build b/lib/python/packagekit/meson.build
new file mode 100644
index 000000000..2300aa9cf
--- /dev/null
+++ b/lib/python/packagekit/meson.build
@@ -0,0 +1,44 @@
+packagekit_py_sources = [
+ '__init__.py',
+ 'backend.py',
+ 'progress.py',
+ 'package.py',
+ 'filter.py',
+ 'misc.py',
+]
+
+if get_option('python_backend')
+enums_py = custom_target(
+ 'enums.py',
+ input: join_paths(meson.source_root(), 'lib', 'packagekit-glib2', 'pk-enum.c'),
+ output: 'enums.py',
+ command: [
+ python_exec,
+ enum_convertor,
+ '@INPUT@',
+ ],
+ capture: true,
+ install: true,
+ install_dir: python_package_dir,
+)
+endif
+
+if get_option('python_backend')
+install_data(
+ packagekit_py_sources,
+ install_dir: python_package_dir,
+ install: true,
+)
+endif
+
+packagekit_test_py = custom_target(
+ 'packagekit.py',
+ input: packagekit_py_sources,
+ output: packagekit_py_sources,
+ command: [
+ 'cp',
+ '@INPUT@',
+ '@OUTDIR@',
+ ],
+ install: false,
+)