* [gentoo-commits] gentoo-projects commit in portage-utils: qpkg.c
@ 2007-11-04 9:51 Ned Ludd (solar)
0 siblings, 0 replies; 5+ messages in thread
From: Ned Ludd (solar) @ 2007-11-04 9:51 UTC (permalink / raw
To: gentoo-commits
solar 07/11/04 09:51:58
Modified: qpkg.c
Log:
* clean pkgdir of files not in the tree anymore (slow)
Revision Changes Path
1.26 portage-utils/qpkg.c
file : http://sources.gentoo.org/viewcvs.py/gentoo-projects/portage-utils/qpkg.c?rev=1.26&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-projects/portage-utils/qpkg.c?rev=1.26&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo-projects/portage-utils/qpkg.c?r1=1.25&r2=1.26
Index: qpkg.c
===================================================================
RCS file: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- qpkg.c 1 Jun 2007 17:30:13 -0000 1.25
+++ qpkg.c 4 Nov 2007 09:51:58 -0000 1.26
@@ -1,7 +1,7 @@
/*
* Copyright 2005-2007 Gentoo Foundation
* Distributed under the terms of the GNU General Public License v2
- * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.25 2007/06/01 17:30:13 solar Exp $
+ * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.26 2007/11/04 09:51:58 solar Exp $
*
* Copyright 2005-2007 Ned Ludd - <solar@gentoo.org>
* Copyright 2005-2007 Mike Frysinger - <vapier@gentoo.org>
@@ -9,25 +9,28 @@
#ifdef APPLET_qpkg
-#define QPKG_FLAGS "cpP:" COMMON_FLAGS
+#define QPKG_FLAGS "cEpP:" COMMON_FLAGS
static struct option const qpkg_long_opts[] = {
{"clean", no_argument, NULL, 'c'},
+ {"eclean", no_argument, NULL, 'E'},
{"pretend", no_argument, NULL, 'p'},
{"pkgdir", a_argument, NULL, 'P'},
COMMON_LONG_OPTS
};
static const char *qpkg_opts_help[] = {
"clean pkgdir of unused binary files",
+ "clean pkgdir of files not in the tree anymore (slow)",
"pretend only",
"alternate package directory",
COMMON_OPTS_HELP
};
-static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.25 2007/06/01 17:30:13 solar Exp $";
+static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.26 2007/11/04 09:51:58 solar Exp $";
#define qpkg_usage(ret) usage(ret, QPKG_FLAGS, qpkg_long_opts, qpkg_opts_help, lookup_applet_idx("qpkg"))
extern char pretend;
static char *qpkg_bindir = NULL;
+static int eclean = 0;
/* global functions */
int filter_tbz2(const struct dirent *);
@@ -67,9 +70,14 @@
for (i = 0; i < count; i++) {
int del = 1;
fnames[i]->d_name[strlen(fnames[i]->d_name)-5] = 0;
- for (ll = vdb; ll != NULL; ll = ll->next)
- if (strcmp(fnames[i]->d_name, basename(ll->name)) == 0)
- del = 0;
+ for (ll = vdb; ll != NULL; ll = ll->next) {
+ if (1) {
+ if (strcmp(fnames[i]->d_name, basename(ll->name)) == 0) {
+ del = 0;
+ break;
+ }
+ }
+ }
if (!del)
continue;
snprintf(buf, sizeof(buf), "%s.tbz2", fnames[i]->d_name);
@@ -97,6 +105,7 @@
/* figure out what dirs we want to process for cleaning and display results. */
int qpkg_clean(char *dirp)
{
+ FILE *fp;
int i, count;
char buf[_Q_PATH_MAX];
size_t disp_units = 0;
@@ -106,14 +115,56 @@
vdb = get_vdb_atoms(1);
- if (chdir(dirp) != 0)
+ if (chdir(dirp) != 0) {
+ free_sets(vdb);
return 1;
- if ((count = scandir(".", &dnames, filter_hidden, alphasort)) < 0)
+ }
+ if ((count = scandir(".", &dnames, filter_hidden, alphasort)) < 0) {
+ free_sets(vdb);
return 1;
+ }
+
+ if (eclean) {
+ char fname[_Q_PATH_MAX] = "";
+ char *ecache;
+
+ /* CACHE_EBUILD_FILE is a macro so don't put it in the .bss */
+ ecache = (char *) CACHE_EBUILD_FILE;
+
+ if (ecache) {
+ if (*ecache != '/')
+ snprintf(fname, sizeof(fname), "%s/%s", portdir, ecache);
+ else
+ strncpy(fname, ecache, sizeof(fname));
+ }
+ if ((fp = fopen(fname, "r")) != NULL) {
+ while ((fgets(buf, sizeof(buf), fp)) != NULL) {
+ char *name, *p;
+ if ((p = strrchr(buf, '.')) == NULL)
+ continue;
+ *p = 0;
+ if ((p = strrchr(buf, '/')) == NULL)
+ continue;
+ *p = 0;
+ name = p + 1;
+ if ((p = strrchr(buf, '/')) == NULL)
+ continue;
+ *p = 0;
+ /* these strcat() are safe. the name is extracted from buf already. */
+ strcat(buf, "/");
+ strcat(buf, name);
+
+ /* num_all_bytes will be off when pretend and eclean are enabled together */
+ /* vdb = del_set(buf, vdb, &i); */
+ vdb = add_set(buf, "0", vdb);
+ }
+ fclose(fp);
+ }
+ }
num_all_bytes = qpkg_clean_dir(dirp, vdb);
- for (i=0;i < count; i++) {
+ for (i = 0; i < count; i++) {
snprintf(buf, sizeof(buf), "%s/%s", dirp, dnames[i]->d_name);
num_all_bytes += qpkg_clean_dir(buf, vdb);
}
@@ -175,20 +226,28 @@
if ((out = fopen(filelist, "w")) == NULL)
return -4;
- printf(" %s-%s %s/%s: ", GREEN, NORM, atom->CATEGORY, atom->P);
- fflush(stdout);
-
while ((fgets(buf, sizeof(buf), fp)) != NULL) {
contents_entry *e;
e = contents_parse_line(buf);
if (!e || e->type == CONTENTS_DIR)
continue;
fprintf(out, "%s\n", e->name+1); /* dont output leading / */
+ if (e->type == CONTENTS_OBJ && verbose) {
+ char *hash = NULL;
+ if ((hash = (char*) hash_file(e->name, HASH_MD5)) != NULL) {
+ if (strcmp(e->digest, hash) != 0)
+ warn("MD5: mismatch expected %s got %s for %s", e->digest, hash, e->name);
+ free(hash);
+ }
+ }
}
fclose(out);
fclose(fp);
+ printf(" %s-%s %s/%s: ", GREEN, NORM, atom->CATEGORY, atom->P);
+ fflush(stdout);
+
snprintf(tbz2, sizeof(tbz2), "%s/bin.tar.bz2", tmpdir);
snprintf(buf, sizeof(buf), "tar jcf '%s' --files-from='%s' --no-recursion &> /dev/null", tbz2, filelist);
if ((fp = popen(buf, "r")) == NULL)
@@ -239,6 +298,7 @@
while ((i = GETOPT_LONG(QPKG, qpkg, "")) != -1) {
switch (i) {
+ case 'E': eclean = qclean = 1; break;
case 'c': qclean = 1; break;
case 'p': pretend = 1; break;
case 'P':
@@ -339,7 +399,7 @@
if (s && !pretend)
printf(" %s*%s %i package%s could not be matched :/\n", RED, NORM, (int)s, (s > 1 ? "s" : ""));
if (pkgs_made)
- printf(" %s*%s Packages can be found in %s\n", GREEN, NORM, bindir);
+ qprintf(" %s*%s Packages can be found in %s\n", GREEN, NORM, bindir);
return (pkgs_made ? EXIT_SUCCESS : EXIT_FAILURE);
}
--
gentoo-commits@gentoo.org mailing list
^ permalink raw reply [flat|nested] 5+ messages in thread
* [gentoo-commits] gentoo-projects commit in portage-utils: qpkg.c
@ 2009-08-23 6:06 Ned Ludd (solar)
0 siblings, 0 replies; 5+ messages in thread
From: Ned Ludd (solar) @ 2009-08-23 6:06 UTC (permalink / raw
To: gentoo-commits
solar 09/08/23 06:06:49
Modified: qpkg.c
Log:
- old patch that needs pushing. I think it fixed the -rX problem with qpkg
Revision Changes Path
1.27 portage-utils/qpkg.c
file : http://sources.gentoo.org/viewcvs.py/gentoo-projects/portage-utils/qpkg.c?rev=1.27&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-projects/portage-utils/qpkg.c?rev=1.27&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo-projects/portage-utils/qpkg.c?r1=1.26&r2=1.27
Index: qpkg.c
===================================================================
RCS file: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- qpkg.c 4 Nov 2007 09:51:58 -0000 1.26
+++ qpkg.c 23 Aug 2009 06:06:49 -0000 1.27
@@ -1,7 +1,7 @@
/*
* Copyright 2005-2007 Gentoo Foundation
* Distributed under the terms of the GNU General Public License v2
- * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.26 2007/11/04 09:51:58 solar Exp $
+ * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.27 2009/08/23 06:06:49 solar Exp $
*
* Copyright 2005-2007 Ned Ludd - <solar@gentoo.org>
* Copyright 2005-2007 Mike Frysinger - <vapier@gentoo.org>
@@ -24,7 +24,7 @@
"alternate package directory",
COMMON_OPTS_HELP
};
-static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.26 2007/11/04 09:51:58 solar Exp $";
+static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.27 2009/08/23 06:06:49 solar Exp $";
#define qpkg_usage(ret) usage(ret, QPKG_FLAGS, qpkg_long_opts, qpkg_opts_help, lookup_applet_idx("qpkg"))
extern char pretend;
@@ -206,11 +206,11 @@
struct stat st;
if (pretend) {
- printf(" %s-%s %s/%s:\n", GREEN, NORM, atom->CATEGORY, atom->P);
+ printf(" %s-%s %s/%s:\n", GREEN, NORM, atom->CATEGORY, atom_to_pvr(atom));
return 0;
}
- snprintf(buf, sizeof(buf), "%s/%s/%s/CONTENTS", portvdb, atom->CATEGORY, atom->P);
+ snprintf(buf, sizeof(buf), "%s/%s/%s/CONTENTS", portvdb, atom->CATEGORY, atom_to_pvr(atom));
if ((fp = fopen(buf, "r")) == NULL)
return -1;
@@ -245,7 +245,7 @@
fclose(out);
fclose(fp);
- printf(" %s-%s %s/%s: ", GREEN, NORM, atom->CATEGORY, atom->P);
+ printf(" %s-%s %s/%s: ", GREEN, NORM, atom->CATEGORY, atom_to_pvr(atom));
fflush(stdout);
snprintf(tbz2, sizeof(tbz2), "%s/bin.tar.bz2", tmpdir);
@@ -255,7 +255,7 @@
pclose(fp);
snprintf(xpak, sizeof(xpak), "%s/inf.xpak", tmpdir);
- snprintf(buf, sizeof(buf), "%s/%s/%s", portvdb, atom->CATEGORY, atom->P);
+ snprintf(buf, sizeof(buf), "%s/%s/%s", portvdb, atom->CATEGORY, atom_to_pvr(atom));
xpak_argv[0] = buf;
xpak_argv[1] = NULL;
xpak_create(xpak, 1, xpak_argv);
@@ -267,7 +267,7 @@
unlink(xpak);
unlink(tbz2);
- snprintf(tbz2, sizeof(tbz2), "%s/%s.tbz2", qpkg_get_bindir(), atom->P);
+ snprintf(tbz2, sizeof(tbz2), "%s/%s.tbz2", qpkg_get_bindir(), atom_to_pvr(atom));
if (rename(buf, tbz2)) {
warnp("could not move '%s' to '%s'", buf, tbz2);
return 1;
^ permalink raw reply [flat|nested] 5+ messages in thread
* [gentoo-commits] gentoo-projects commit in portage-utils: qpkg.c
@ 2011-01-11 3:13 Mike Frysinger (vapier)
0 siblings, 0 replies; 5+ messages in thread
From: Mike Frysinger (vapier) @ 2011-01-11 3:13 UTC (permalink / raw
To: gentoo-commits
vapier 11/01/11 03:13:48
Modified: qpkg.c
Log:
qpkg: drop bashism redirect #351243 by Piotr Karbowski
Revision Changes Path
1.30 portage-utils/qpkg.c
file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?rev=1.30&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?rev=1.30&content-type=text/plain
diff : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?r1=1.29&r2=1.30
Index: qpkg.c
===================================================================
RCS file: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- qpkg.c 7 Apr 2010 05:58:16 -0000 1.29
+++ qpkg.c 11 Jan 2011 03:13:48 -0000 1.30
@@ -1,7 +1,7 @@
/*
* Copyright 2005-2010 Gentoo Foundation
* Distributed under the terms of the GNU General Public License v2
- * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.29 2010/04/07 05:58:16 solar Exp $
+ * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.30 2011/01/11 03:13:48 vapier Exp $
*
* Copyright 2005-2010 Ned Ludd - <solar@gentoo.org>
* Copyright 2005-2010 Mike Frysinger - <vapier@gentoo.org>
@@ -24,7 +24,7 @@
"alternate package directory",
COMMON_OPTS_HELP
};
-static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.29 2010/04/07 05:58:16 solar Exp $";
+static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.30 2011/01/11 03:13:48 vapier Exp $";
#define qpkg_usage(ret) usage(ret, QPKG_FLAGS, qpkg_long_opts, qpkg_opts_help, lookup_applet_idx("qpkg"))
extern char pretend;
@@ -249,7 +249,7 @@
fflush(stdout);
snprintf(tbz2, sizeof(tbz2), "%s/bin.tar.bz2", tmpdir);
- snprintf(buf, sizeof(buf), "tar jcf '%s' --files-from='%s' --no-recursion &> /dev/null", tbz2, filelist);
+ snprintf(buf, sizeof(buf), "tar jcf '%s' --files-from='%s' --no-recursion >/dev/null 2>&1", tbz2, filelist);
if ((fp = popen(buf, "r")) == NULL)
return 2;
pclose(fp);
^ permalink raw reply [flat|nested] 5+ messages in thread
* [gentoo-commits] gentoo-projects commit in portage-utils: qpkg.c
@ 2011-02-21 7:38 Mike Frysinger (vapier)
0 siblings, 0 replies; 5+ messages in thread
From: Mike Frysinger (vapier) @ 2011-02-21 7:38 UTC (permalink / raw
To: gentoo-commits
vapier 11/02/21 07:38:15
Modified: qpkg.c
Log:
qpkg needs buf earlier
Revision Changes Path
1.33 portage-utils/qpkg.c
file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?rev=1.33&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?rev=1.33&content-type=text/plain
diff : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?r1=1.32&r2=1.33
Index: qpkg.c
===================================================================
RCS file: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- qpkg.c 21 Feb 2011 07:33:21 -0000 1.32
+++ qpkg.c 21 Feb 2011 07:38:15 -0000 1.33
@@ -1,7 +1,7 @@
/*
* Copyright 2005-2010 Gentoo Foundation
* Distributed under the terms of the GNU General Public License v2
- * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.32 2011/02/21 07:33:21 vapier Exp $
+ * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.33 2011/02/21 07:38:15 vapier Exp $
*
* Copyright 2005-2010 Ned Ludd - <solar@gentoo.org>
* Copyright 2005-2010 Mike Frysinger - <vapier@gentoo.org>
@@ -24,7 +24,7 @@
"alternate package directory",
COMMON_OPTS_HELP
};
-static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.32 2011/02/21 07:33:21 vapier Exp $";
+static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.33 2011/02/21 07:38:15 vapier Exp $";
#define qpkg_usage(ret) usage(ret, QPKG_FLAGS, qpkg_long_opts, qpkg_opts_help, lookup_applet_idx("qpkg"))
extern char pretend;
@@ -217,7 +217,10 @@
return 0;
}
- snprintf(buf, sizeof(buf), "%s/%s/%s/CONTENTS", portvdb, atom->CATEGORY, atom_to_pvr(atom));
+ buflen = _Q_PATH_MAX;
+ buf = xmalloc(buflen);
+
+ snprintf(buf, buflen, "%s/%s/%s/CONTENTS", portvdb, atom->CATEGORY, atom_to_pvr(atom));
if ((fp = fopen(buf, "r")) == NULL)
return -1;
@@ -233,8 +236,6 @@
if ((out = fopen(filelist, "w")) == NULL)
return -4;
- buflen = _Q_PATH_MAX;
- buf = xmalloc(buflen);
while (getline(&buf, &buflen, fp) != -1) {
contents_entry *e;
e = contents_parse_line(buf);
^ permalink raw reply [flat|nested] 5+ messages in thread
* [gentoo-commits] gentoo-projects commit in portage-utils: qpkg.c
@ 2012-01-08 9:53 Ned Ludd (solar)
0 siblings, 0 replies; 5+ messages in thread
From: Ned Ludd (solar) @ 2012-01-08 9:53 UTC (permalink / raw
To: gentoo-commits
solar 12/01/08 09:53:35
Modified: qpkg.c
Log:
Add basic PKG_INSTALL_MASK support for qpkg
Revision Changes Path
1.37 portage-utils/qpkg.c
file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?rev=1.37&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?rev=1.37&content-type=text/plain
diff : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?r1=1.36&r2=1.37
Index: qpkg.c
===================================================================
RCS file: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- qpkg.c 18 Dec 2011 06:31:29 -0000 1.36
+++ qpkg.c 8 Jan 2012 09:53:35 -0000 1.37
@@ -1,14 +1,16 @@
/*
* Copyright 2005-2010 Gentoo Foundation
* Distributed under the terms of the GNU General Public License v2
- * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.36 2011/12/18 06:31:29 vapier Exp $
+ * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.37 2012/01/08 09:53:35 solar Exp $
*
- * Copyright 2005-2010 Ned Ludd - <solar@gentoo.org>
+ * Copyright 2005-2010 Ned Ludd - <solar@gentoo.org>
* Copyright 2005-2010 Mike Frysinger - <vapier@gentoo.org>
*/
#ifdef APPLET_qpkg
+#include <fnmatch.h>
+
#define QPKG_FLAGS "cEpP:" COMMON_FLAGS
static struct option const qpkg_long_opts[] = {
{"clean", no_argument, NULL, 'c'},
@@ -24,7 +26,7 @@
"alternate package directory",
COMMON_OPTS_HELP
};
-static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.36 2011/12/18 06:31:29 vapier Exp $";
+static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.37 2012/01/08 09:53:35 solar Exp $";
#define qpkg_usage(ret) usage(ret, QPKG_FLAGS, qpkg_long_opts, qpkg_opts_help, lookup_applet_idx("qpkg"))
extern char pretend;
@@ -42,8 +44,8 @@
/* checks to make sure this is a .tbz2 file. used by scandir() */
int filter_tbz2(const struct dirent *dentry)
{
- if (dentry->d_name[0] == '.')
- return 0;
+ if (dentry->d_name[0] == '.')
+ return 0;
if (strlen(dentry->d_name) < 6)
return 0;
return !strcmp(".tbz2", dentry->d_name + strlen(dentry->d_name) - 5);
@@ -198,6 +200,29 @@
return qpkg_bindir;
}
+int check_pkg_install_mask(char *name);
+int check_pkg_install_mask(char *name)
+{
+ int i, iargc, ret;
+ char **iargv;
+
+ i = iargc = ret = 0;
+
+ if (*name != '/')
+ return ret;
+
+ makeargv(pkg_install_mask, &iargc, &iargv);
+
+ for (i = 1; i < iargc; i++) {
+ if (fnmatch(iargv[i], name, 0) != 0)
+ continue;
+ ret = 1;
+ break;
+ }
+ freeargv(iargc, iargv);
+ return ret;
+}
+
int qpkg_make(depend_atom *atom)
{
FILE *fp, *out;
@@ -237,6 +262,8 @@
e = contents_parse_line(buf);
if (!e || e->type == CONTENTS_DIR)
continue;
+ if (check_pkg_install_mask(e->name) != 0)
+ continue;
fprintf(out, "%s\n", e->name+1); /* dont output leading / */
if (e->type == CONTENTS_OBJ && verbose) {
char *hash = (char *)hash_file(e->name, HASH_MD5);
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-01-08 9:53 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-04 9:51 [gentoo-commits] gentoo-projects commit in portage-utils: qpkg.c Ned Ludd (solar)
-- strict thread matches above, loose matches on Subject: below --
2009-08-23 6:06 Ned Ludd (solar)
2011-01-11 3:13 Mike Frysinger (vapier)
2011-02-21 7:38 Mike Frysinger (vapier)
2012-01-08 9:53 Ned Ludd (solar)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox