socsvn commit: r253357 - soc2013/mattbw/dummy
mattbw at FreeBSD.org
mattbw at FreeBSD.org
Sat Jun 22 15:20:05 UTC 2013
Author: mattbw
Date: Sat Jun 22 15:20:04 2013
New Revision: 253357
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=253357
Log:
adds untested group support; some of the groups may be a bit contentious but are temporary for now.
Added:
soc2013/mattbw/dummy/groups.c
soc2013/mattbw/dummy/groups.h
Modified:
soc2013/mattbw/dummy/Makefile
soc2013/mattbw/dummy/get-details.c
Modified: soc2013/mattbw/dummy/Makefile
==============================================================================
--- soc2013/mattbw/dummy/Makefile Sat Jun 22 13:11:27 2013 (r253356)
+++ soc2013/mattbw/dummy/Makefile Sat Jun 22 15:20:04 2013 (r253357)
@@ -2,7 +2,7 @@
LIB= pk_backend_pkgng
SHLIB_MAJOR= 1
-SRCS= pk-backend-pkgng.c get-details.c
+SRCS= pk-backend-pkgng.c get-details.c groups.c
USE_PK_PKGCONF= 0
Modified: soc2013/mattbw/dummy/get-details.c
==============================================================================
--- soc2013/mattbw/dummy/get-details.c Sat Jun 22 13:11:27 2013 (r253356)
+++ soc2013/mattbw/dummy/get-details.c Sat Jun 22 15:20:04 2013 (r253357)
@@ -24,6 +24,8 @@
#include "pk-backend.h"
#include "pkg.h"
+#include "groups.h"
+
/*
* Checks two strings with strcmp and emits TRUE if they match. If either
* string is NULL, emit TRUE as well (this is so that missing PackageID
@@ -67,6 +69,7 @@
const char *data;
const char *description;
const char *name;
+ const char *origin;
const char *reponame;
const char *version;
const char *www;
@@ -76,11 +79,12 @@
pkg_get(match,
PKG_ARCH, &arch,
PKG_DESC, &description,
+ PKG_FLATSIZE, &flatsize,
PKG_NAME, &name,
+ PKG_ORIGIN, &origin,
PKG_REPONAME, &reponame,
PKG_VERSION, &version,
- PKG_WWW, &www,
- PKG_FLATSIZE, &size);
+ PKG_WWW, &www);
switch (pkg_type(match)) {
case PKG_FILE:
@@ -113,7 +117,7 @@
pk_backend_details(backend,
new_id,
NULL,
- PK_GROUP_ENUM_PROGRAMMING,
+ group_from_origin(origin),
description,
www,
flatsize);
@@ -122,6 +126,7 @@
}
}
} while (err == EPKG_OK && found == FALSE);
+ pkg_free(match);
return found;
}
Added: soc2013/mattbw/dummy/groups.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2013/mattbw/dummy/groups.c Sat Jun 22 15:20:04 2013 (r253357)
@@ -0,0 +1,145 @@
+/*-
+ * Copyright (C) 2013 Matt Windsor <mattbw at FreeBSD.org>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <stdlib.h> /* NULL */
+#include <string.h> /* strdup */
+
+#include "glib.h" /* g_strcmp0 */
+#include "pk-backend.h" /* PkGroupEnum, PK_* */
+
+struct group_mapping {
+ const char *dir;
+ PkGroupEnum group;
+};
+
+/* Mappings between ports directories (as in the first part of PKG_ORIGIN) and
+ * PackageKit enums.
+ *
+ * Some of these mappings are a bit iffy, peer review would be greatly
+ * appreciated.
+ */
+static struct group_mapping group_mappings[] = {
+ {"accessibility", PK_GROUP_ENUM_ACCESSIBILITY},
+ {"arabic", PK_GROUP_ENUM_LOCALIZATION},
+ {"archivers", PK_GROUP_ENUM_ACCESSORIES},
+ {"astro", PK_GROUP_ENUM_SCIENCE},
+ {"audio", PK_GROUP_ENUM_MULTIMEDIA},
+ {"benchmarks", PK_GROUP_ENUM_PROGRAMMING},
+ {"biology", PK_GROUP_ENUM_SCIENCE},
+ {"cad", PK_GROUP_ENUM_SCIENCE}, /* dubious */
+ {"chinese", PK_GROUP_ENUM_LOCALIZATION},
+ {"comms", PK_GROUP_ENUM_COMMUNICATION},
+ {"converters", PK_GROUP_ENUM_ACCESSORIES}, /* dubious */
+ {"databases", PK_GROUP_ENUM_SERVERS}, /* dubious */
+ {"deskutils", PK_GROUP_ENUM_ACCESSORIES},
+ {"devel", PK_GROUP_ENUM_PROGRAMMING},
+ {"distfiles", PK_GROUP_ENUM_OTHER}, /* ?? */
+ {"dns", PK_GROUP_ENUM_NETWORK},
+ {"editors", PK_GROUP_ENUM_OFFICE}, /* dubious */
+ {"emulators", PK_GROUP_ENUM_OTHER}, /* ?? */
+ {"finance", PK_GROUP_ENUM_OFFICE}, /* dubious */
+ {"french", PK_GROUP_ENUM_LOCALIZATION},
+ {"ftp", PK_GROUP_ENUM_NETWORK},
+ {"games", PK_GROUP_ENUM_GAMES},
+ {"german", PK_GROUP_ENUM_LOCALIZATION},
+ {"graphics", PK_GROUP_ENUM_GRAPHICS},
+ {"hebrew", PK_GROUP_ENUM_LOCALIZATION},
+ {"hungarian", PK_GROUP_ENUM_LOCALIZATION},
+ {"irc", PK_GROUP_ENUM_COMMUNICATION},
+ {"japanese", PK_GROUP_ENUM_LOCALIZATION},
+ {"java", PK_GROUP_ENUM_PROGRAMMING},
+ {"korean", PK_GROUP_ENUM_LOCALIZATION},
+ {"lang", PK_GROUP_ENUM_PROGRAMMING},
+ {"mail", PK_GROUP_ENUM_COMMUNICATION},
+ {"math", PK_GROUP_ENUM_SCIENCE},
+ {"misc", PK_GROUP_ENUM_OTHER},
+ {"multimedia", PK_GROUP_ENUM_MULTIMEDIA},
+ {"net", PK_GROUP_ENUM_NETWORK},
+ {"net-im", PK_GROUP_ENUM_COMMUNICATION},
+ {"net-mgmt", PK_GROUP_ENUM_NETWORK},
+ {"net-p2p", PK_GROUP_ENUM_NETWORK}, /* possibly COMMUNICATION */
+ {"news", PK_GROUP_ENUM_COMMUNICATION}, /* ?? */
+ {"packages", PK_GROUP_ENUM_OTHER}, /* ?? */
+ {"palm", PK_GROUP_ENUM_OTHER},
+ {"polish", PK_GROUP_ENUM_LOCALIZATION},
+ {"ports-mgmt", PK_GROUP_ENUM_ADMIN_TOOLS}, /* dubious? */
+ {"portuguese", PK_GROUP_ENUM_LOCALIZATION},
+ {"print", PK_GROUP_ENUM_OFFICE}, /* dubious */
+ {"russian", PK_GROUP_ENUM_LOCALIZATION},
+ {"science", PK_GROUP_ENUM_SCIENCE},
+ {"security", PK_GROUP_ENUM_SECURITY},
+ {"shells", PK_GROUP_ENUM_ACCESSORIES}, /* dubious */
+ {"sysutils", PK_GROUP_ENUM_ADMIN_TOOLS},
+ {"textproc", PK_GROUP_ENUM_PUBLISHING}, /* dubious */
+ {"ukrainian", PK_GROUP_ENUM_LOCALIZATION},
+ {"vietnamese", PK_GROUP_ENUM_LOCALIZATION},
+ {"www", PK_GROUP_ENUM_NETWORK}, /* could be COMMUNICATION? prob. not */
+ /* Some of the X directories could be better classified possibly */
+ {"x11", PK_GROUP_ENUM_DESKTOP_OTHER},
+ {"x11-clocks", PK_GROUP_ENUM_DESKTOP_OTHER},
+ {"x11-drivers", PK_GROUP_ENUM_DESKTOP_OTHER},
+ {"x11-fm", PK_GROUP_ENUM_DESKTOP_OTHER},
+ {"x11-fonts", PK_GROUP_ENUM_FONTS},
+ {"x11-servers", PK_GROUP_ENUM_DESKTOP_OTHER},
+ {"x11-themes", PK_GROUP_ENUM_DESKTOP_OTHER},
+ {"x11-toolkits", PK_GROUP_ENUM_DESKTOP_OTHER},
+ {"x11-wm", PK_GROUP_ENUM_DESKTOP_OTHER},
+ /* Default (for new/unspecified ports directories */
+ {NULL, PK_GROUP_ENUM_UNKNOWN}
+};
+
+/* Maps from port/origin directories to PackageKit groups. */
+PkGroupEnum
+group_from_port_dir(const char *port_dir)
+{
+ int i;
+
+ i = 0;
+ while (group_mappings[i].dir != NULL &&
+ g_strcmp0(group_mappings[i].dir, port_dir) != 0)
+ i++;
+ return group_mappings[i].group;
+}
+
+/* Maps from package origins to PackageKit groups. */
+PkGroupEnum
+group_from_origin(const char *origin)
+{
+ char *dir;
+ int i;
+ PkGroupEnum group;
+
+ /* Find the separation between dir and port name */
+ for (i = 0; origin[i] != '/' && origin[i] != '\0'; i++)
+ ;
+
+ /* Is this a valid origin? If not, we want the default group */
+ if (origin[i] == '\0')
+ dir = NULL;
+ else
+ dir = strndup(origin, i);
+
+ group = group_from_port_dir(dir);
+
+ if (dir)
+ free(dir);
+
+ return group;
+}
Added: soc2013/mattbw/dummy/groups.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2013/mattbw/dummy/groups.h Sat Jun 22 15:20:04 2013 (r253357)
@@ -0,0 +1,34 @@
+/*-
+ * Copyright (C) 2013 Matt Windsor <mattbw at FreeBSD.org>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef _PKGNG_BACKEND_GROUPS_H_
+#define _PKGNG_BACKEND_GROUPS_H_
+
+#include "pk-backend.h"
+
+PkGroupEnum group_from_port_dir(const char *port_dir);
+
+PkGroupEnum group_from_origin(const char *origin);
+
+#endif /* _PKGNG_BACKEND_GROUPS_H_ */
+
+
+
+
More information about the svn-soc-all
mailing list