summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2018-05-10 10:04:23 +0100
committerRichard Hughes <richard@hughsie.com>2018-06-11 19:28:10 +0100
commit748a3a33ce354945d88190d0f4c3365a68ff5f44 (patch)
treecfb17550db02b245ca3e859bafa50697926b56a1
parent8e1b6174f1f975df38667be09e71d1060bf0ec28 (diff)
downloadappstream-glib-wip/hughsie/nofirmware.tar.gz
Do not parse firmware fileswip/hughsie/nofirmware
Firmware should now be distributed using the LVFS and consumed by fwupd.
-rw-r--r--README.md8
-rw-r--r--client/as-util.c83
-rw-r--r--contrib/ci/Dockerfile-debian-stretch2
-rw-r--r--contrib/ci/Dockerfile-fedora-252
-rw-r--r--contrib/libappstream-glib.spec.in2
-rw-r--r--data/tests/firmware/2_0_0/firmware.bin1
-rw-r--r--data/tests/firmware/2_0_0/firmware.inf22
-rw-r--r--data/tests/firmware/2_0_1/firmware.bin1
-rw-r--r--data/tests/firmware/2_0_1/firmware.inf21
-rw-r--r--data/tests/firmware/2_0_1/firmware.metainfo.xml33
-rw-r--r--data/tests/firmware/2_0_2/firmware.bin1
-rw-r--r--data/tests/firmware/2_0_2/firmware.inf21
-rw-r--r--data/tests/firmware/2_0_2/firmware.metainfo.xml36
-rw-r--r--data/tests/meson.build29
-rw-r--r--libappstream-builder/asb-package-cab.c86
-rw-r--r--libappstream-builder/asb-self-test.c160
-rw-r--r--libappstream-builder/meson.build7
-rw-r--r--libappstream-glib/appstream-glib.pc.in2
-rw-r--r--libappstream-glib/as-format.c4
-rw-r--r--libappstream-glib/as-self-test.c60
-rw-r--r--libappstream-glib/as-store-cab.c389
-rw-r--r--libappstream-glib/as-store.c14
-rw-r--r--libappstream-glib/meson.build2
-rw-r--r--meson.build9
24 files changed, 34 insertions, 961 deletions
diff --git a/README.md b/README.md
index 0887408..911be5d 100644
--- a/README.md
+++ b/README.md
@@ -25,9 +25,9 @@ To install the libappstream-glib library you either need to install the
`libappstream-glib` package from your distributor, or you can build a local
copy. To do the latter just do:
- dnf install docbook-utils gcab gettext-devel glib-devel \
+ dnf install docbook-utils gettext-devel glib-devel \
gobject-introspection-devel gperf gtk-doc gtk3-devel \
- libarchive-devel libgcab-devel libsoup-devel \
+ libarchive-devel libsoup-devel \
libstemmer-devel libuuid-devel libyaml-devel \
meson rpm-devel sqlite-devel
mkdir build && cd build
@@ -86,9 +86,9 @@ Getting Started
To run appstream-builder you either need to install the package containing the
binary and data files, or you can build a local copy. To do the latter just do:
- dnf install docbook-utils gcab gettext-devel glib-devel \
+ dnf install docbook-utils gettext-devel glib-devel \
gobject-introspection-devel gperf gtk-doc gtk3-devel \
- libarchive-devel libgcab-devel libsoup-devel \
+ libarchive-devel libsoup-devel \
libstemmer-devel libuuid-devel libyaml-devel \
meson rpm-devel sqlite-devel rpm-devel
mkdir build && cd build
diff --git a/client/as-util.c b/client/as-util.c
index 31d1512..8c0bcde 100644
--- a/client/as-util.c
+++ b/client/as-util.c
@@ -3541,83 +3541,6 @@ as_util_mirror_screenshots (AsUtilPrivate *priv, gchar **values, GError **error)
}
static gboolean
-as_util_mirror_local_firmware (AsUtilPrivate *priv, gchar **values, GError **error)
-{
- AsApp *app;
- GPtrArray *apps;
- guint i;
- guint j;
- g_autoptr(AsStore) store = NULL;
- g_autoptr(GFile) file = NULL;
-
- /* check args */
- if (g_strv_length (values) != 2) {
- g_set_error_literal (error,
- AS_ERROR,
- AS_ERROR_INVALID_ARGUMENTS,
- "Not enough arguments, expected: "
- "file url");
- return FALSE;
- }
-
- /* open file */
- store = as_store_new ();
- file = g_file_new_for_path (values[0]);
- if (!as_store_from_file (store, file, NULL, NULL, error))
- return FALSE;
-
- /* convert all the screenshots */
- apps = as_store_get_apps (store);
- for (i = 0; i < apps->len; i++) {
- GPtrArray *releases;
- AsRelease *rel;
-
- /* get app */
- app = g_ptr_array_index (apps, i);
- if (as_app_get_kind (app) != AS_APP_KIND_FIRMWARE)
- continue;
- releases = as_app_get_releases (app);
- if (releases->len == 0)
- continue;
- for (j = 0; j < releases->len; j++) {
- AsChecksum *csum;
- const gchar *tmp;
- g_autofree gchar *loc = NULL;
- g_autofree gchar *fn = NULL;
- rel = g_ptr_array_index (releases, j);
-
- /* get the release filename, but fall back to
- * the default location basename if unset */
- csum = as_release_get_checksum_by_target (rel, AS_CHECKSUM_TARGET_CONTAINER);
- if (csum != NULL) {
- tmp = as_checksum_get_filename (csum);
- if (tmp == NULL)
- continue;
- fn = g_strdup (tmp);
- } else {
- tmp = as_release_get_location_default (rel);
- if (tmp == NULL)
- continue;
- fn = g_path_get_basename (tmp);
- }
- loc = g_build_filename (values[1], fn, NULL);
- g_ptr_array_set_size (as_release_get_locations (rel), 0);
- as_release_add_location (rel, loc);
- }
- }
-
- /* save file */
- if (!as_store_to_file (store, file,
- AS_NODE_TO_XML_FLAG_ADD_HEADER |
- AS_NODE_TO_XML_FLAG_FORMAT_INDENT |
- AS_NODE_TO_XML_FLAG_FORMAT_MULTILINE,
- NULL, error))
- return FALSE;
-
- return TRUE;
-}
-
-static gboolean
as_util_agreement_export (AsUtilPrivate *priv, gchar **values, GError **error)
{
AsAgreement *pp;
@@ -4602,12 +4525,6 @@ main (int argc, char *argv[])
_("Mirror upstream screenshots"),
as_util_mirror_screenshots);
as_util_add (priv->cmd_array,
- "mirror-local-firmware",
- NULL,
- /* TRANSLATORS: command description */
- _("Mirror local firmware files"),
- as_util_mirror_local_firmware);
- as_util_add (priv->cmd_array,
"incorporate",
NULL,
/* TRANSLATORS: command description */
diff --git a/contrib/ci/Dockerfile-debian-stretch b/contrib/ci/Dockerfile-debian-stretch
index e7e59f9..805edb4 100644
--- a/contrib/ci/Dockerfile-debian-stretch
+++ b/contrib/ci/Dockerfile-debian-stretch
@@ -2,7 +2,7 @@ FROM debian:stretch
RUN echo "deb-src http://deb.debian.org/debian/ stretch main" >> /etc/apt/sources.list
RUN apt-get update -qq
-RUN apt-get install -yq --no-install-recommends meson gcab libstemmer-dev
+RUN apt-get install -yq --no-install-recommends meson libstemmer-dev
RUN apt-get build-dep -yq appstream-glib
RUN mkdir /build
diff --git a/contrib/ci/Dockerfile-fedora-25 b/contrib/ci/Dockerfile-fedora-25
index e42a0be..756abf9 100644
--- a/contrib/ci/Dockerfile-fedora-25
+++ b/contrib/ci/Dockerfile-fedora-25
@@ -6,7 +6,6 @@ RUN dnf -y install \
docbook-utils \
fontconfig-devel \
freetype-devel \
- gcab \
gdk-pixbuf2-devel \
gettext \
glib2-devel \
@@ -16,7 +15,6 @@ RUN dnf -y install \
gtk-doc \
json-glib-devel \
libarchive-devel \
- libgcab1-devel \
libsoup-devel \
libstemmer-devel \
libuuid-devel \
diff --git a/contrib/libappstream-glib.spec.in b/contrib/libappstream-glib.spec.in
index a3e837e..4ff3996 100644
--- a/contrib/libappstream-glib.spec.in
+++ b/contrib/libappstream-glib.spec.in
@@ -22,7 +22,6 @@ BuildRequires: libsoup-devel >= %{libsoup_version}
BuildRequires: gdk-pixbuf2-devel >= %{gdk_pixbuf_version}
BuildRequires: gtk3-devel
BuildRequires: gettext
-BuildRequires: libgcab1-devel
BuildRequires: libuuid-devel
BuildRequires: libstemmer-devel
BuildRequires: json-glib-devel >= %{json_glib_version}
@@ -34,7 +33,6 @@ BuildRequires: freetype-devel
BuildRequires: pango-devel
BuildRequires: rpm-devel
BuildRequires: sqlite-devel
-BuildRequires: gcab
# for the manpages
BuildRequires: libxslt
diff --git a/data/tests/firmware/2_0_0/firmware.bin b/data/tests/firmware/2_0_0/firmware.bin
deleted file mode 100644
index d07b709..0000000
--- a/data/tests/firmware/2_0_0/firmware.bin
+++ /dev/null
@@ -1 +0,0 @@
-a binary file
diff --git a/data/tests/firmware/2_0_0/firmware.inf b/data/tests/firmware/2_0_0/firmware.inf
deleted file mode 100644
index bf64f8b..0000000
--- a/data/tests/firmware/2_0_0/firmware.inf
+++ /dev/null
@@ -1,22 +0,0 @@
-; Copyright (C) 2015 Hughski Limited
-
-[Version]
-Class=Firmware
-ClassGuid={f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
-DriverVer=03/01/2015,2.0.0
-Provider=%Provider%
-AppstreamId=com.hughski.ColorHug2.firmware
-
-[Firmware_CopyFiles]
-firmware.bin
-
-[Firmware_AddReg]
-HKR,,FirmwareId,,{84f40464-9272-4ef7-9399-cd95f12da696}
-HKR,,FirmwareVersion,%REG_DWORD%,0x2000000
-HKR,,FirmwareFilename,,firmware.bin
-
-[Strings]
-Provider = "Hughski Limited"
-FirmwareDesc = "ColorHug Firmware"
-DiskName = "Firmware for the ColorHug Colorimeter"
-REG_DWORD = 0x00010001
diff --git a/data/tests/firmware/2_0_1/firmware.bin b/data/tests/firmware/2_0_1/firmware.bin
deleted file mode 100644
index d07b709..0000000
--- a/data/tests/firmware/2_0_1/firmware.bin
+++ /dev/null
@@ -1 +0,0 @@
-a binary file
diff --git a/data/tests/firmware/2_0_1/firmware.inf b/data/tests/firmware/2_0_1/firmware.inf
deleted file mode 100644
index 83b181d..0000000
--- a/data/tests/firmware/2_0_1/firmware.inf
+++ /dev/null
@@ -1,21 +0,0 @@
-; Copyright (C) 2015 Hughski Limited
-
-[Version]
-Class=Firmware
-ClassGuid={f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
-DriverVer=03/03/2015,2.0.1
-Provider=%Provider%
-
-[Firmware_CopyFiles]
-firmware.bin
-
-[Firmware_AddReg]
-HKR,,FirmwareId,,{84f40464-9272-4ef7-9399-cd95f12da696}
-HKR,,FirmwareVersion,%REG_DWORD%,0x2000001
-HKR,,FirmwareFilename,,firmware.bin
-
-[Strings]
-Provider = "Hughski Limited"
-FirmwareDesc = "ColorHug Firmware"
-DiskName = "Firmware for the ColorHug Colorimeter"
-REG_DWORD = 0x00010001
diff --git a/data/tests/firmware/2_0_1/firmware.metainfo.xml b/data/tests/firmware/2_0_1/firmware.metainfo.xml
deleted file mode 100644
index c92852d..0000000
--- a/data/tests/firmware/2_0_1/firmware.metainfo.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2015 Richard Hughes <richard@hughsie.com> -->
-<component type="firmware">
- <id>com.hughski.ColorHug2.firmware</id>
- <name>ColorHug Firmware</name>
- <summary>Firmware for the ColorHug Colorimeter</summary>
- <description>
- <p>
- Updating the firmware on your ColorHug device improves performance and
- adds new features.
- </p>
- </description>
- <provides>
- <firmware type="flashed">84f40464-9272-4ef7-9399-cd95f12da696</firmware>
- </provides>
- <url type="homepage">http://www.hughski.com/</url>
- <metadata_license>CC0-1.0</metadata_license>
- <project_license>GPL-2.0+</project_license>
- <updatecontact>richard_at_hughsie.com</updatecontact>
- <developer_name>Hughski Limited</developer_name>
- <releases>
- <release version="2.0.1" timestamp="1424116753">
- <location>http://www.hughski.com/downloads/colorhug2/firmware/colorhug-2.0.1.cab</location>
- <description>
- <p>This unstable release adds the following features:</p>
- <ul>
- <li>Use TakeReadings() to do a quick non-adaptive measurement</li>
- <li>Scale XYZ measurement with a constant factor to make the CCMX more sane</li>
- </ul>
- </description>
- </release>
- </releases>
-</component>
diff --git a/data/tests/firmware/2_0_2/firmware.bin b/data/tests/firmware/2_0_2/firmware.bin
deleted file mode 100644
index d07b709..0000000
--- a/data/tests/firmware/2_0_2/firmware.bin
+++ /dev/null
@@ -1 +0,0 @@
-a binary file
diff --git a/data/tests/firmware/2_0_2/firmware.inf b/data/tests/firmware/2_0_2/firmware.inf
deleted file mode 100644
index e5807ce..0000000
--- a/data/tests/firmware/2_0_2/firmware.inf
+++ /dev/null
@@ -1,21 +0,0 @@
-; Copyright (C) 2015 Hughski Limited
-
-[Version]
-Class=Firmware
-ClassGuid={f2e7dd72-6468-4e36-b6f1-6488f42c1b52}
-DriverVer=03/03/2015,2.0.2
-Provider=%Provider%
-
-[Firmware_CopyFiles]
-firmware.bin
-
-[Firmware_AddReg]
-HKR,,FirmwareId,,{84f40464-9272-4ef7-9399-cd95f12da696}
-HKR,,FirmwareVersion,%REG_DWORD%,0x02000002
-HKR,,FirmwareFilename,,firmware.bin
-
-[Strings]
-Provider = "Hughski Limited"
-FirmwareDesc = "ColorHug Firmware"
-DiskName = "Firmware for the ColorHug Colorimeter"
-REG_DWORD = 0x00010001
diff --git a/data/tests/firmware/2_0_2/firmware.metainfo.xml b/data/tests/firmware/2_0_2/firmware.metainfo.xml
deleted file mode 100644
index 11028c9..0000000
--- a/data/tests/firmware/2_0_2/firmware.metainfo.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright 2015 Richard Hughes <richard@hughsie.com> -->
-<component type="firmware">
- <id>com.hughski.ColorHug2.firmware</id>
- <name>ColorHug Firmware </name>
- <summary>Firmware for the ColorHug Colorimeter </summary>
- <description>
- <p>
- Updating the firmware on your ColorHug device improves performance and
- adds new features.
- </p>
- </description>
- <provides>
- <firmware type="flashed">84f40464-9272-4ef7-9399-cd95f12da696</firmware>
- </provides>
- <url type="homepage">http://www.hughski.com/</url>
- <metadata_license>CC0-1.0</metadata_license>
- <project_license>GPL-2.0+</project_license>
- <updatecontact>richard_at_hughsie.com</updatecontact>
- <developer_name>Hughski Limited</developer_name>
- <releases>
- <release version="2.0.2" timestamp="1424116753">
- <location>http://www.hughski.com/downloads/colorhug2/firmware/colorhug-2.0.2.cab</location>
- <description>
- <p>This unstable release adds the following features: </p>
- <ul>
- <li>Add TakeReadingArray to enable panel latency measurements </li>
- <li>
- Speed up the auto-scaled measurements considerably, using 256ms
- as the smallest sample duration
- </li>
- </ul>
- </description>
- </release>
- </releases>
-</component>
diff --git a/data/tests/meson.build b/data/tests/meson.build
index 2803c34..8b13789 100644
--- a/data/tests/meson.build
+++ b/data/tests/meson.build
@@ -1,30 +1 @@
-if get_option('builder')
- firmware200 = custom_target('firmware-2.0.0',
- output : 'colorhug-als-2.0.0.cab',
- input : [
- 'firmware/2_0_0/firmware.inf',
- 'firmware/2_0_0/firmware.bin'
- ],
- command : [gcab, '--create', '--nopath', '@OUTPUT@', '@INPUT@'],
- )
- firmware201 = custom_target('firmware-2.0.1',
- output : 'colorhug-als-2.0.1.cab',
- input : [
- 'firmware/2_0_1/firmware.inf',
- 'firmware/2_0_1/firmware.bin',
- 'firmware/2_0_1/firmware.metainfo.xml'
- ],
- command : [gcab, '--create', '--nopath', '@OUTPUT@', '@INPUT@'],
- )
-
- firmware202 = custom_target('firmware-2.0.2',
- output : 'colorhug-als-2.0.2.cab',
- input : [
- 'firmware/2_0_2/firmware.inf',
- 'firmware/2_0_2/firmware.bin',
- 'firmware/2_0_2/firmware.metainfo.xml'
- ],
- command : [gcab, '--create', '--nopath', '@OUTPUT@', '@INPUT@'],
- )
-endif
diff --git a/libappstream-builder/asb-package-cab.c b/libappstream-builder/asb-package-cab.c
index 815fa67..81860fa 100644
--- a/libappstream-builder/asb-package-cab.c
+++ b/libappstream-builder/asb-package-cab.c
@@ -41,73 +41,13 @@ asb_package_cab_init (AsbPackageCab *pkg)
}
static gboolean
-asb_package_cab_ensure_simple (AsbPackage *pkg, GError **error)
-{
- g_autofree gchar *basename = NULL;
- gchar *tmp;
-
- /* get basename minus the .cab extension */
- basename = g_path_get_basename (asb_package_get_filename (pkg));
- tmp = g_strrstr (basename, ".cab");
- if (tmp != NULL)
- *tmp = '\0';
-
- /* maybe get a version too */
- tmp = g_strrstr (basename, "-");
- if (tmp == NULL) {
- asb_package_set_name (pkg, basename);
- asb_package_set_version (pkg, "unknown");
- asb_package_set_release (pkg, "unknown");
- } else {
- *tmp = '\0';
- asb_package_set_name (pkg, basename);
- asb_package_set_version (pkg, tmp + 1);
- asb_package_set_release (pkg, "unknown");
- }
- return TRUE;
-}
-
-static gboolean
-asb_package_cab_ensure_filelists (AsbPackage *pkg, GError **error)
-{
- const gchar *argv[4] = { "gcab", "--list", "fn", NULL };
- guint i;
- g_autofree gchar *output = NULL;
- g_autoptr(GPtrArray) files = NULL;
- g_auto(GStrv) lines = NULL;
-
- /* spawn sync */
- argv[2] = asb_package_get_filename (pkg);
- if (!g_spawn_sync (NULL, (gchar **) argv, NULL,
- G_SPAWN_SEARCH_PATH,
- NULL, NULL,
- &output, NULL, NULL, error))
- return FALSE;
-
- /* parse output */
- files = g_ptr_array_new_with_free_func (g_free);
- lines = g_strsplit (output, "\n", -1);
- for (i = 0; lines[i] != NULL; i++) {
- if (lines[i][0] == '\0')
- continue;
- g_ptr_array_add (files, g_strdup (lines[i]));
- }
-
- /* save */
- g_ptr_array_add (files, NULL);
- asb_package_set_filelist (pkg, (gchar **) files->pdata);
- return TRUE;
-}
-
-static gboolean
asb_package_cab_open (AsbPackage *pkg, const gchar *filename, GError **error)
{
- /* read package stuff */
- if (!asb_package_cab_ensure_simple (pkg, error))
- return FALSE;
- if (!asb_package_cab_ensure_filelists (pkg, error))
- return FALSE;
- return TRUE;
+ g_set_error (error,
+ AS_STORE_ERROR,
+ AS_STORE_ERROR_FAILED,
+ "Loading firmware is no longer suported, see fwupd");
+ return FALSE;
}
static gboolean
@@ -115,17 +55,11 @@ asb_package_cab_ensure (AsbPackage *pkg,
AsbPackageEnsureFlags flags,
GError **error)
{
- if ((flags & ASB_PACKAGE_ENSURE_NEVRA) > 0) {
- if (!asb_package_cab_ensure_simple (pkg, error))
- return FALSE;
- }
-
- if ((flags & ASB_PACKAGE_ENSURE_FILES) > 0) {
- if (!asb_package_cab_ensure_filelists (pkg, error))
- return FALSE;
- }
-
- return TRUE;
+ g_set_error (error,
+ AS_STORE_ERROR,
+ AS_STORE_ERROR_FAILED,
+ "Loading firmware is no longer suported, see fwupd");
+ return FALSE;
}
static void
diff --git a/libappstream-builder/asb-self-test.c b/libappstream-builder/asb-self-test.c
index 9e42433..7e5a5d2 100644
--- a/libappstream-builder/asb-self-test.c
+++ b/libappstream-builder/asb-self-test.c
@@ -342,7 +342,6 @@ asb_test_context_func (void)
"font-1-1.fc21.noarch.rpm", /* font */
"font-serif-1-1.fc21.noarch.rpm", /* font that extends */
#endif
- "colorhug-als-2.0.2.cab", /* firmware */
NULL};
/* remove icons */
@@ -389,9 +388,9 @@ asb_test_context_func (void)
/* verify queue size */
#ifdef HAVE_FONTS
- g_assert_cmpint (asb_context_get_packages(ctx)->len, ==, 10);
+ g_assert_cmpint (asb_context_get_packages(ctx)->len, ==, 9);
#else
- g_assert_cmpint (asb_context_get_packages(ctx)->len, ==, 8);
+ g_assert_cmpint (asb_context_get_packages(ctx)->len, ==, 7);
#endif
/* run the plugins */
@@ -415,9 +414,9 @@ asb_test_context_func (void)
g_assert_no_error (error);
g_assert (ret);
#ifdef HAVE_FONTS
-// g_assert_cmpint (as_store_get_size (store), ==, 6);
+// g_assert_cmpint (as_store_get_size (store), ==, 5);
#else
- g_assert_cmpint (as_store_get_size (store), ==, 5);
+ g_assert_cmpint (as_store_get_size (store), ==, 4);
#endif
app = as_store_get_app_by_pkgname (store, "app");
g_assert (app != NULL);
@@ -522,34 +521,6 @@ asb_test_context_func (void)
"<lang percentage=\"33\">ru</lang>\n"
"</languages>\n"
"</component>\n"
-#ifdef HAVE_GCAB
- "<component type=\"firmware\">\n"
- "<id>com.hughski.ColorHug2.firmware</id>\n"
- "<name>ColorHug Firmware</name>\n"
- "<summary>Firmware for the ColorHug Colorimeter</summary>\n"
- "<developer_name>Hughski Limited</developer_name>\n"
- "<description><p>Updating the firmware on your ColorHug device "
- "improves performance and adds new features.</p></description>\n"
- "<project_license>GPL-2.0+</project_license>\n"
- "<url type=\"homepage\">http://www.hughski.com/</url>\n"
- "<releases>\n"
- "<release timestamp=\"1424116753\" version=\"2.0.2\">\n"
- "<location>http://www.hughski.com/downloads/colorhug2/firmware/colorhug-2.0.2.cab</location>\n"
- "<checksum type=\"sha1\" filename=\"colorhug-als-2.0.2.cab\" target=\"container\">" AS_TEST_WILDCARD_SHA1 "</checksum>\n"
- "<checksum type=\"sha1\" filename=\"firmware.bin\" target=\"content\">" AS_TEST_WILDCARD_SHA1 "</checksum>\n"
- "<description><p>This unstable release adds the following features:</p>"
- "<ul><li>Add TakeReadingArray to enable panel latency measurements</li>"
- "<li>Speed up the auto-scaled measurements considerably, using 256ms "
- "as the smallest sample duration</li></ul></description>\n"
- "<size type=\"installed\">14</size>\n"
- "<size type=\"download\">2015</size>\n"
- "</release>\n"
- "</releases>\n"
- "<provides>\n"
- "<firmware type=\"flashed\">84f40464-9272-4ef7-9399-cd95f12da696</firmware>\n"
- "</provides>\n"
- "</component>\n"
-#endif
"<component type=\"driver\">\n"
"<id>driver</id>\n"
"<pkgname>driver</pkgname>\n"
@@ -674,128 +645,6 @@ asb_test_context_func (void)
#endif
}
-static void
-asb_test_firmware_func (void)
-{
-#ifdef HAVE_GCAB
- AsApp *app;
- AsbPluginLoader *loader;
- const gchar *expected_xml;
- gboolean ret;
- guint i;
- g_autoptr(GError) error = NULL;
- g_autoptr(AsbContext) ctx = NULL;
- g_autoptr(AsStore) store = NULL;
- g_autoptr(GFile) file = NULL;
- g_autoptr(GString) xml = NULL;
- const gchar *filenames[] = {
- "colorhug-als-2.0.1.cab",
- "colorhug-als-2.0.0.cab",
- "colorhug-als-2.0.2.cab",
- NULL};
-
- /* set up the context */
- ctx = asb_context_new ();
- asb_context_set_max_threads (ctx, 1);
- asb_context_set_api_version (ctx, 0.9);
- asb_context_set_flags (ctx, ASB_CONTEXT_FLAG_NO_NETWORK);
- asb_context_set_basename (ctx, "appstream");
- asb_context_set_origin (ctx, "asb-self-test");
- asb_context_set_cache_dir (ctx, "/tmp/asbuilder/cache");
- asb_context_set_output_dir (ctx, "/tmp/asbuilder/output");
- asb_context_set_temp_dir (ctx, "/tmp/asbuilder/temp");
- asb_context_set_icons_dir (ctx, "/tmp/asbuilder/temp/icons");
- loader = asb_context_get_plugin_loader (ctx);
- asb_plugin_loader_set_dir (loader, TESTPLUGINDIR);
- ret = asb_context_setup (ctx, &error);
- g_assert_no_error (error);
- g_assert (ret);
-
- /* add packages */
- for (i = 0; filenames[i] != NULL; i++) {
- g_autofree gchar *filename = NULL;
- filename = asb_test_get_filename (filenames[i]);
- if (filename == NULL)
- g_warning ("%s not found", filenames[i]);
- g_assert (filename != NULL);
- ret = asb_context_add_filename (ctx, filename, &error);
- g_assert_no_error (error);
- g_assert (ret);
- }
-
- /* verify queue size */
- g_assert_cmpint (asb_context_get_packages(ctx)->len, ==, 3);
-
- /* run the plugins */
- ret = asb_context_process (ctx, &error);
- g_assert_no_error (error);
- g_assert (ret);
-
- /* check files created */
- g_assert (g_file_test ("/tmp/asbuilder/output/appstream.xml.gz", G_FILE_TEST_EXISTS));
-
- /* load AppStream metadata */
- file = g_file_new_for_path ("/tmp/asbuilder/output/appstream.xml.gz");
- store = as_store_new ();
- ret = as_store_from_file (store, file, NULL, NULL, &error);
- g_assert_no_error (error);
- g_assert (ret);
- g_assert_cmpint (as_store_get_size (store), ==, 1);
- app = as_store_get_app_by_id (store, "com.hughski.ColorHug2.firmware");
- g_assert (app != NULL);
-
- /* check it matches what we expect */
- xml = as_store_to_xml (store, AS_NODE_TO_XML_FLAG_FORMAT_MULTILINE);
- expected_xml =
- "<components origin=\"asb-self-test\" version=\"0.9\">\n"
- "<component type=\"firmware\">\n"
- "<id>com.hughski.ColorHug2.firmware</id>\n"
- "<name>ColorHug Firmware</name>\n"
- "<summary>Firmware for the ColorHug Colorimeter</summary>\n"
- "<developer_name>Hughski Limited</developer_name>\n"
- "<description><p>Updating the firmware on your ColorHug device "
- "improves performance and adds new features.</p></description>\n"
- "<project_license>GPL-2.0+</project_license>\n"
- "<url type=\"homepage\">http://www.hughski.com/</url>\n"
- "<releases>\n"
- "<release timestamp=\"1424116753\" version=\"2.0.2\">\n"
- "<location>http://www.hughski.com/downloads/colorhug2/firmware/colorhug-2.0.2.cab</location>\n"
- "<checksum type=\"sha1\" filename=\"colorhug-als-2.0.2.cab\" target=\"container\">" AS_TEST_WILDCARD_SHA1 "</checksum>\n"
- "<checksum type=\"sha1\" filename=\"firmware.bin\" target=\"content\">" AS_TEST_WILDCARD_SHA1 "</checksum>\n"
- "<description><p>This unstable release adds the following features:</p>"
- "<ul><li>Add TakeReadingArray to enable panel latency measurements</li>"
- "<li>Speed up the auto-scaled measurements considerably, using 256ms "
- "as the smallest sample duration</li></ul></description>\n"
- "<size type=\"installed\">14</size>\n"
- "<size type=\"download\">2015</size>\n"
- "</release>\n"
- "<release timestamp=\"1424116753\" version=\"2.0.1\">\n"
- "<location>http://www.hughski.com/downloads/colorhug2/firmware/colorhug-2.0.1.cab</location>\n"
- "<checksum type=\"sha1\" filename=\"colorhug-als-2.0.1.cab\" target=\"container\">" AS_TEST_WILDCARD_SHA1 "</checksum>\n"
- "<checksum type=\"sha1\" filename=\"firmware.bin\" target=\"content\">" AS_TEST_WILDCARD_SHA1 "</checksum>\n"
- "<description><p>This unstable release adds the following features:</p>"
- "<ul><li>Use TakeReadings() to do a quick non-adaptive measurement</li>"
- "<li>Scale XYZ measurement with a constant factor to make the CCMX more "
- "sane</li></ul></description>\n"
- "<size type=\"installed\">14</size>\n"
- "<size type=\"download\">1951</size>\n"
- "</release>\n"
- "</releases>\n"
- "<provides>\n"
- "<firmware type=\"flashed\">84f40464-9272-4ef7-9399-cd95f12da696</firmware>\n"
- "</provides>\n"
- "</component>\n"
- "</components>\n";
- ret = asb_test_compare_lines (xml->str, expected_xml, &error);
- g_assert_no_error (error);
- g_assert (ret);
-
- ret = asb_utils_rmtree ("/tmp/asbuilder", &error);
- g_assert_no_error (error);
- g_assert (ret);
-#endif
-}
-
int
main (int argc, char **argv)
{
@@ -812,7 +661,6 @@ main (int argc, char **argv)
g_test_add_func ("/AppStreamBuilder/package{guess-fn}", asb_test_package_guess_from_fn_func);
g_test_add_func ("/AppStreamBuilder/utils{glob}", asb_test_utils_glob_func);
g_test_add_func ("/AppStreamBuilder/plugin-loader", asb_test_plugin_loader_func);
- g_test_add_func ("/AppStreamBuilder/firmware", asb_test_firmware_func);
g_test_add_func ("/AppStreamBuilder/context", asb_test_context_func);
#ifdef HAVE_RPM
g_test_add_func ("/AppStreamBuilder/package{rpm}", asb_test_package_rpm_func);
diff --git a/libappstream-builder/meson.build b/libappstream-builder/meson.build
index b59cc56..fe74cf3 100644
--- a/libappstream-builder/meson.build
+++ b/libappstream-builder/meson.build
@@ -89,15 +89,8 @@ pkgg.generate(
subdirs : 'libappstream-builder'
)
-deps = [
- firmware200,
- firmware201,
- firmware202,
-]
-
asb_self_test = executable(
'asb-self-test',
- deps,
'asb-self-test.c',
include_directories : [
include_directories('..'),
diff --git a/libappstream-glib/appstream-glib.pc.in b/libappstream-glib/appstream-glib.pc.in
index c1d7ef7..872d30d 100644
--- a/libappstream-glib/appstream-glib.pc.in
+++ b/libappstream-glib/appstream-glib.pc.in
@@ -6,7 +6,7 @@ includedir=@includedir@
Name: appstream-glib
Description: Objects and helper methods to help reading and writing AppStream metadata
Version: @VERSION@
-Requires.private: libarchive uuid @GCAB_DEPENDENCY@
+Requires.private: libarchive uuid
Requires: glib-2.0, gobject-2.0, gdk-pixbuf-2.0
Libs: -L${libdir} -lappstream-glib
Cflags: -I${includedir}/libappstream-glib
diff --git a/libappstream-glib/as-format.c b/libappstream-glib/as-format.c
index c8bd6b2..0ef29c9 100644
--- a/libappstream-glib/as-format.c
+++ b/libappstream-glib/as-format.c
@@ -171,10 +171,6 @@ as_format_guess_kind (const gchar *filename)
return AS_FORMAT_KIND_APPSTREAM;
if (g_str_has_suffix (filename, ".yml.gz"))
return AS_FORMAT_KIND_APPSTREAM;
-#ifdef HAVE_GCAB
- if (g_str_has_suffix (filename, ".cab"))
- return AS_FORMAT_KIND_APPSTREAM;
-#endif
if (g_str_has_suffix (filename, ".desktop"))
return AS_FORMAT_KIND_DESKTOP;
if (g_str_has_suffix (filename, ".desktop.in"))
diff --git a/libappstream-glib/as-self-test.c b/libappstream-glib/as-self-test.c
index 7e61fb5..cb12db8 100644
--- a/libappstream-glib/as-self-test.c
+++ b/libappstream-glib/as-self-test.c
@@ -3691,65 +3691,6 @@ as_test_store_merges_local_func (void)
}
static void
-as_test_store_cab_func (void)
-{
-#ifdef HAVE_GCAB
- gboolean ret;
- const gchar *src;
- g_autoptr(GError) error = NULL;
- g_autoptr(AsStore) store = NULL;
- g_autoptr(GFile) file = NULL;
- g_autofree gchar *fn = NULL;
- g_autoptr(GString) xml = NULL;
-
- /* parse a .cab file as a store */
- store = as_store_new ();
- as_store_set_api_version (store, 0.9);
- fn = as_test_get_filename ("colorhug-als-2.0.2.cab");
- g_assert (fn != NULL);
- file = g_file_new_for_path (fn);
- ret = as_store_from_file (store, file, NULL, NULL, &error);
- g_assert_no_error (error);
- g_assert (ret);
-
- /* check output */
- src =
- "<components origin=\"colorhug-als-2.0.2.cab\" version=\"0.9\">\n"
- "<component type=\"firmware\">\n"
- "<id>com.hughski.ColorHug2.firmware</id>\n"
- "<name>ColorHug Firmware</name>\n"
- "<summary>Firmware for the ColorHug Colorimeter</summary>\n"
- "<developer_name>Hughski Limited</developer_name>\n"
- "<description><p>Updating the firmware on your ColorHug device "
- "improves performance and adds new features.</p></description>\n"
- "<project_license>GPL-2.0+</project_license>\n"
- "<url type=\"homepage\">http://www.hughski.com/</url>\n"
- "<releases>\n"
- "<release timestamp=\"1424116753\" version=\"2.0.2\">\n"
- "<location>http://www.hughski.com/downloads/colorhug2/firmware/colorhug-2.0.2.cab</location>\n"
- "<checksum type=\"sha1\" filename=\"colorhug-als-2.0.2.cab\" target=\"container\">" AS_TEST_WILDCARD_SHA1 "</checksum>\n"
- "<checksum type=\"sha1\" filename=\"firmware.bin\" target=\"content\">" AS_TEST_WILDCARD_SHA1 "</checksum>\n"
- "<description><p>This unstable release adds the following features:</p>"
- "<ul><li>Add TakeReadingArray to enable panel latency measurements</li>"
- "<li>Speed up the auto-scaled measurements considerably, using 256ms as"
- " the smallest sample duration</li></ul></description>\n"
- "<size type=\"installed\">14</size>\n"
- "<size type=\"download\">2015</size>\n"
- "</release>\n"
- "</releases>\n"
- "<provides>\n"
- "<firmware type=\"flashed\">84f40464-9272-4ef7-9399-cd95f12da696</firmware>\n"
- "</provides>\n"
- "</component>\n"
- "</components>\n";
- xml = as_store_to_xml (store, AS_NODE_TO_XML_FLAG_FORMAT_MULTILINE);
- ret = as_test_compare_lines (xml->str, src, &error);
- g_assert_no_error (error);
- g_assert (ret);
-#endif
-}
-
-static void
as_test_store_empty_func (void)
{
gboolean ret;
@@ -5687,7 +5628,6 @@ main (int argc, char **argv)
g_test_add_func ("/AppStream/store{prefix}", as_test_store_prefix_func);
g_test_add_func ("/AppStream/store{wildcard}", as_test_store_wildcard_func);
g_test_add_func ("/AppStream/store{demote}", as_test_store_demote_func);
- g_test_add_func ("/AppStream/store{cab}", as_test_store_cab_func);
g_test_add_func ("/AppStream/store{merges}", as_test_store_merges_func);
g_test_add_func ("/AppStream/store{merges-local}", as_test_store_merges_local_func);
g_test_add_func ("/AppStream/store{addons}", as_test_store_addons_func);
diff --git a/libappstream-glib/as-store-cab.c b/libappstream-glib/as-store-cab.c
index 9fcc317..d6e4da4 100644
--- a/libappstream-glib/as-store-cab.c
+++ b/libappstream-glib/as-store-cab.c
@@ -21,328 +21,11 @@
#include "config.h"
-#include <libgcab.h>
-#include <glib/gstdio.h>
-#include <gio/gunixinputstream.h>
+//#include <glib/gstdio.h>
+//#include <gio/gunixinputstream.h>
#include "as-store-cab.h"
-#include "as-utils.h"
-
-#ifndef HAVE_GCAB_1_0
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(GCabCabinet, g_object_unref)
-#endif
-
-static gboolean
-as_store_cab_cb (GCabFile *file, gpointer user_data)
-{
- GPtrArray *filelist = (GPtrArray *) user_data;
- const gchar *fn;
- gchar *tmp;
-
- /* strip Windows or Linux paths */
- fn = gcab_file_get_name (file);
- tmp = g_strrstr (fn, "\\");
- if (tmp == NULL)
- tmp = g_strrstr (fn, "/");
- if (tmp != NULL) {
- g_debug ("removed path prefix for %s", fn);
- fn = tmp + 1;
- }
- gcab_file_set_extract_name (file, fn);
-
- g_ptr_array_add (filelist, g_strdup (fn));
- return TRUE;
-}
-
-static gboolean
-as_store_cab_verify_checksum_cab (AsRelease *release,
- GBytes *bytes,
- GError **error)
-{
- AsChecksum *csum_tmp;
- g_autofree gchar *actual = NULL;
-
- /* nothing already set, so just add */
- actual = g_compute_checksum_for_bytes (G_CHECKSUM_SHA1, bytes);
- csum_tmp = as_release_get_checksum_by_target (release, AS_CHECKSUM_TARGET_CONTAINER);
- if (as_checksum_get_value (csum_tmp) == NULL) {
- as_checksum_set_kind (csum_tmp, G_CHECKSUM_SHA1);
- as_checksum_set_value (csum_tmp, actual);
- return TRUE;
- }
-
- /* check it matches */
- if (g_strcmp0 (actual, as_checksum_get_value (csum_tmp)) != 0) {
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "container checksum invalid, expected %s, got %s",
- as_checksum_get_value (csum_tmp), actual);
- return FALSE;
- }
-
- /* success */
- return TRUE;
-}
-
-static gboolean
-as_store_cab_verify_checksum_fw (AsChecksum *checksum,
- const gchar *tmp_path,
- GError **error)
-{
- g_autofree gchar *rel_basename = NULL;
- g_autofree gchar *rel_fn = NULL;
- g_autofree gchar *actual = NULL;
-
- /* get the firmware filename */
- rel_basename = g_path_get_basename (as_checksum_get_filename (checksum));
- rel_fn = g_build_filename (tmp_path, rel_basename, NULL);
-
- /* calculate checksum */
- if (g_file_test (rel_fn, G_FILE_TEST_EXISTS)) {
- gsize len;
- g_autofree gchar *data = NULL;
- if (!g_file_get_contents (rel_fn, &data, &len, error))
- return FALSE;
- actual = g_compute_checksum_for_data (G_CHECKSUM_SHA1, (guchar *)data, len);
- }
-
- /* nothing already set, so just add */
- if (as_checksum_get_value (checksum) == NULL) {
- as_checksum_set_kind (checksum, G_CHECKSUM_SHA1);
- as_checksum_set_value (checksum, actual);
- return TRUE;
- }
-
- /* check it matches */
- if (g_strcmp0 (actual, as_checksum_get_value (checksum)) != 0) {
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "contents checksum invalid, expected %s, got %s",
- as_checksum_get_value (checksum), actual);
- return FALSE;
- }
-
- /* success */
- return TRUE;
-}
-
-static gboolean
-as_store_cab_set_release_blobs (AsRelease *release, const gchar *tmp_path, GError **error)
-{
- AsChecksum *csum_tmp;
- g_autofree gchar *asc_basename = NULL;
- g_autofree gchar *asc_fn = NULL;
- g_autofree gchar *rel_basename = NULL;
- g_autofree gchar *rel_fn = NULL;
- g_autoptr(GError) error_local = NULL;
-
- /* get the firmware filename */
- csum_tmp = as_release_get_checksum_by_target (release, AS_CHECKSUM_TARGET_CONTENT);
- g_assert (csum_tmp != NULL);
- rel_basename = g_path_get_basename (as_checksum_get_filename (csum_tmp));
- rel_fn = g_build_filename (tmp_path, rel_basename, NULL);
-
- /* add this information to the release objects */
- if (g_file_test (rel_fn, G_FILE_TEST_EXISTS)) {
- gchar *data = NULL;
- gsize data_len = 0;
- g_autoptr(GBytes) blob = NULL;
-
- if (!g_file_get_contents (rel_fn, &data, &data_len, &error_local)) {
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "failed to open %s: %s",
- rel_fn, error_local->message);
- return FALSE;
- }
-
- /* this is the size of the firmware */
- if (as_release_get_size (release, AS_SIZE_KIND_INSTALLED) == 0) {
- as_release_set_size (release,
- AS_SIZE_KIND_INSTALLED,
- data_len);
- }
-
- /* set the data on the release object */
- blob = g_bytes_new_take (data, data_len);
- as_release_set_blob (release, rel_basename, blob);
- }
-
- /* if the signing file exists, set that too */
- asc_basename = g_strdup_printf ("%s.asc", rel_basename);
- asc_fn = g_build_filename (tmp_path, asc_basename, NULL);
- if (g_file_test (asc_fn, G_FILE_TEST_EXISTS)) {
- gchar *data = NULL;
- gsize data_len = 0;
- g_autoptr(GBytes) blob = NULL;
-
- if (!g_file_get_contents (asc_fn, &data, &data_len, &error_local)) {
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "failed to open %s: %s",
- asc_fn, error_local->message);
- return FALSE;
- }
-
- /* set the data on the release object */
- blob = g_bytes_new_take (data, data_len);
- as_release_set_blob (release, asc_basename, blob);
- }
- return TRUE;
-}
-
-static gboolean
-as_store_cab_from_bytes_with_origin (AsStore *store,
- GBytes *bytes,
- const gchar *basename,
- GCancellable *cancellable,
- GError **error)
-{
- g_autoptr(GCabCabinet) gcab = NULL;
- g_autoptr(GError) error_local = NULL;
- g_autofree gchar *tmp_path = NULL;
- g_autoptr(GFile) tmp_file = NULL;
- g_autoptr(GInputStream) input_stream = NULL;
- g_autoptr(GPtrArray) filelist = NULL;
- guint i;
-
- /* open the file */
- gcab = gcab_cabinet_new ();
- input_stream = g_memory_input_stream_new_from_bytes (bytes);
- if (!gcab_cabinet_load (gcab, input_stream, NULL, &error_local)) {
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "cannot load .cab file: %s",
- error_local->message);
- return FALSE;
- }
-
- /* decompress to /tmp */
- tmp_path = g_dir_make_tmp ("appstream-glib-XXXXXX", &error_local);
- if (tmp_path == NULL) {
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "failed to create temp dir: %s",
- error_local->message);
- return FALSE;
- }
-
- /* extract the entire cab file */
- filelist = g_ptr_array_new_with_free_func (g_free);
- tmp_file = g_file_new_for_path (tmp_path);
- if (!gcab_cabinet_extract_simple (gcab, tmp_file,
- as_store_cab_cb,
- filelist, NULL, &error_local)) {
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "failed to extract .cab file: %s",
- error_local->message);
- return FALSE;
- }
-
- /* loop through each file looking for components */
- for (i = 0; i < filelist->len; i++) {
- AsRelease *rel;
- AsChecksum *csum_tmp;
- const gchar *fn;
- g_autofree gchar *tmp_fn = NULL;
- g_autoptr(AsApp) app = NULL;
-
- /* debug */
- fn = g_ptr_array_index (filelist, i);
- g_debug ("found file %u\t%s", i, fn);
-
- /* if inf or metainfo, add */
- if (as_format_guess_kind (fn) != AS_FORMAT_KIND_METAINFO)
- continue;
-
- tmp_fn = g_build_filename (tmp_path, fn, NULL);
- app = as_app_new ();
- if (!as_app_parse_file (app, tmp_fn,
- AS_APP_PARSE_FLAG_NONE, &error_local)) {
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "%s could not be loaded: %s",
- tmp_fn,
- error_local->message);
- return FALSE;
- }
-
- /* only process the latest release */
- rel = as_app_get_release_default (app);
- if (rel == NULL) {
- g_set_error_literal (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "no releases in metainfo file");
- return FALSE;
- }
-
- /* ensure we always have a container checksum */
- csum_tmp = as_release_get_checksum_by_target (rel, AS_CHECKSUM_TARGET_CONTAINER);
- if (csum_tmp == NULL) {
- g_autoptr(AsChecksum) csum = NULL;
- csum = as_checksum_new ();
- as_checksum_set_target (csum, AS_CHECKSUM_TARGET_CONTAINER);
- if (basename != NULL)
- as_checksum_set_filename (csum, basename);
- as_release_add_checksum (rel, csum);
- }
-
- /* set the container checksum */
- if (!as_store_cab_verify_checksum_cab (rel, bytes, error))
- return FALSE;
-
- /* this is the size of the cab file itself */
- if (as_release_get_size (rel, AS_SIZE_KIND_DOWNLOAD) == 0)
- as_release_set_size (rel, AS_SIZE_KIND_DOWNLOAD,
- g_bytes_get_size (bytes));
-
- /* ensure we always have a content checksum */
- csum_tmp = as_release_get_checksum_by_target (rel, AS_CHECKSUM_TARGET_CONTENT);
- if (csum_tmp == NULL) {
- g_autoptr(AsChecksum) csum = NULL;
- csum = as_checksum_new ();
- as_checksum_set_target (csum, AS_CHECKSUM_TARGET_CONTENT);
- /* if this isn't true, a firmware needs to set in
- * the metainfo.xml file something like:
- * <checksum target="content" filename="FLASH.ROM"/> */
- as_checksum_set_filename (csum, "firmware.bin");
- as_release_add_checksum (rel, csum);
- csum_tmp = csum;
- }
- if (!as_store_cab_verify_checksum_fw (csum_tmp, tmp_path, error))
- return FALSE;
-
- /* set blobs */
- if (!as_store_cab_set_release_blobs (rel, tmp_path, error))
- return FALSE;
-
- /* add any component to the store */
- as_store_add_app (store, app);
- }
-
- /* delete temp files */
- for (i = 0; i < filelist->len; i++) {
- const gchar *fn;
- g_autofree gchar *tmp_fn = NULL;
- fn = g_ptr_array_index (filelist, i);
- tmp_fn = g_build_filename (tmp_path, fn, NULL);
- g_unlink (tmp_fn);
- }
- g_rmdir (tmp_path);
-
- /* success */
- return TRUE;
-}
+//#include "as-utils.h"
gboolean
as_store_cab_from_bytes (AsStore *store,
@@ -350,8 +33,11 @@ as_store_cab_from_bytes (AsStore *store,
GCancellable *cancellable,
GError **error)
{
- return as_store_cab_from_bytes_with_origin (store, bytes, NULL,
- cancellable, error);
+ g_set_error (error,
+ AS_STORE_ERROR,
+ AS_STORE_ERROR_FAILED,
+ "Loading firmware is no longer suported, see fwupd");
+ return FALSE;
}
gboolean
@@ -360,58 +46,9 @@ as_store_cab_from_file (AsStore *store,
GCancellable *cancellable,
GError **error)
{
- guint64 size;
- g_autoptr(GBytes) bytes = NULL;
- g_autoptr(GError) error_local = NULL;
- g_autoptr(GFileInfo) info = NULL;
- g_autoptr(GInputStream) input_stream = NULL;
- g_autofree gchar *filename = NULL;
- g_autofree gchar *origin = NULL;
-
- /* set origin */
- origin = g_file_get_basename (file);
- as_store_set_origin (store, origin);
-
- /* open file */
- input_stream = G_INPUT_STREAM (g_file_read (file, cancellable, &error_local));
- if (input_stream == NULL) {
- filename = g_file_get_path (file);
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "Failed to open %s: %s",
- filename, error_local->message);
- return FALSE;
- }
-
- /* get size */
- info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_SIZE,
- G_FILE_QUERY_INFO_NONE, cancellable, &error_local);
- if (info == NULL) {
- filename = g_file_get_path (file);
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "Failed to get info from %s: %s",
- filename, error_local->message);
- return FALSE;
- }
-
- /* slurp it all */
- size = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_STANDARD_SIZE);
- bytes = g_input_stream_read_bytes (input_stream, (gsize) size,
- cancellable, &error_local);
- if (bytes == NULL) {
- filename = g_file_get_path (file);
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "Failed to read %s: %s",
- filename, error_local->message);
- return FALSE;
- }
-
- /* parse */
- return as_store_cab_from_bytes_with_origin (store, bytes, origin,
- cancellable, error);
+ g_set_error (error,
+ AS_STORE_ERROR,
+ AS_STORE_ERROR_FAILED,
+ "Loading firmware is no longer suported, see fwupd");
+ return FALSE;
}
diff --git a/libappstream-glib/as-store.c b/libappstream-glib/as-store.c
index e3ab9d0..d573e07 100644
--- a/libappstream-glib/as-store.c
+++ b/libappstream-glib/as-store.c
@@ -46,10 +46,7 @@
#include "as-store.h"
#include "as-utils-private.h"
#include "as-yaml.h"
-
-#ifdef HAVE_GCAB
#include "as-store-cab.h"
-#endif
#define AS_API_VERSION_NEWEST 0.8
@@ -2003,11 +2000,10 @@ as_store_from_file_internal (AsStore *store,
cancellable,
error);
}
-#ifdef HAVE_GCAB
+
/* a cab archive */
if (g_str_has_suffix (filename, ".cab"))
return as_store_cab_from_file (store, file, cancellable, error);
-#endif
/* an AppStream XML file */
if (priv->add_flags & AS_STORE_ADD_FLAG_ONLY_NATIVE_LANGS)
@@ -2111,15 +2107,7 @@ as_store_from_bytes (AsStore *store,
/* is firmware */
if (g_strcmp0 (content_type, "application/vnd.ms-cab-compressed") == 0) {
-#ifdef HAVE_GCAB
return as_store_cab_from_bytes (store, bytes, cancellable, error);
-#else
- g_set_error (error,
- AS_STORE_ERROR,
- AS_STORE_ERROR_FAILED,
- "not supported, compiled without gcab");
- return FALSE;
-#endif
}
/* not sure what to do */
diff --git a/libappstream-glib/meson.build b/libappstream-glib/meson.build
index 417e054..37d4747 100644
--- a/libappstream-glib/meson.build
+++ b/libappstream-glib/meson.build
@@ -9,7 +9,6 @@ deps = [
giounix,
glib,
libarchive,
- libgcab,
soup,
uuid,
]
@@ -150,7 +149,6 @@ pkgg.generate(
requires_private : [
'libarchive',
'uuid',
- 'libgcab-1.0',
],
name : 'appstream-glib',
description : 'Objects and helper methods to help reading and writing AppStream metadata',
diff --git a/meson.build b/meson.build
index ee68cc6..f86e188 100644
--- a/meson.build
+++ b/meson.build
@@ -57,20 +57,11 @@ libarchive = dependency('libarchive')
soup = dependency('libsoup-2.4', version : '>= 2.51.92')
json_glib = dependency('json-glib-1.0', version : '>= 1.1.2')
gdkpixbuf = dependency('gdk-pixbuf-2.0', version : '>= 2.31.5')
-libgcab = dependency('libgcab-1.0', required : false)
-if libgcab.version().version_compare('>= 1.0')
- conf.set('HAVE_GCAB_1_0', '1')
-endif
-
-if libgcab.found()
- conf.set('HAVE_GCAB', 1)
-endif
# builder (default enabled)
if get_option('builder')
gtk = dependency('gtk+-3.0')
gmodule = dependency('gmodule-2.0')
- gcab = find_program('gcab')
if get_option('rpm')
rpm = dependency('rpm')
conf.set('HAVE_RPM', 1)