From owner-p4-projects@FreeBSD.ORG Tue Jul 15 15:12:33 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8142110656E9; Tue, 15 Jul 2008 15:12:33 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 44BDA106567D for ; Tue, 15 Jul 2008 15:12:33 +0000 (UTC) (envelope-from andenore@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 2597A8FC1C for ; Tue, 15 Jul 2008 15:12:33 +0000 (UTC) (envelope-from andenore@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m6FFCX38059036 for ; Tue, 15 Jul 2008 15:12:33 GMT (envelope-from andenore@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.2/8.14.1/Submit) id m6FFCXKa059034 for perforce@freebsd.org; Tue, 15 Jul 2008 15:12:33 GMT (envelope-from andenore@FreeBSD.org) Date: Tue, 15 Jul 2008 15:12:33 GMT Message-Id: <200807151512.m6FFCXKa059034@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andenore@FreeBSD.org using -f From: Anders Nore To: Perforce Change Reviews Cc: Subject: PERFORCE change 145284 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jul 2008 15:12:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=145284 Change 145284 by andenore@andenore_laptop on 2008/07/15 15:12:12 Added progress bar to -r option of pkg_add Affected files ... .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/CHANGES#6 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/convert/perform.c#6 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/create/main.c#3 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/create/perform.c#5 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/info/perform.c#6 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/database.c#7 edit .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/lib.h#8 integrate .. //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/url.c#3 edit Differences ... ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/CHANGES#6 (text+ko) ==== @@ -1,5 +1,5 @@ Changes made to pkg_install during SoC2008 by Anders Nore (andenore@FreeBSD.org) -Last modified: 2008 06 25 +Last modified: 2008 07 15 Converter: @@ -16,6 +16,7 @@ Add: - Indexes information to dbcache according to the add + - Added percentage progress for remote fetching ( -r option ) Delete: - Deindexes information according to the delete ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/convert/perform.c#6 (text+ko) ==== ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/create/main.c#3 (text+ko) ==== @@ -10,7 +10,7 @@ */ #include -__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/create/main.c,v 1.45 2008/06/16 23:41:11 flz Exp $"); +__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/create/main.c,v 1.46 2008/07/08 03:21:05 keramida Exp $"); #include #include @@ -208,6 +208,10 @@ Recursive = TRUE; break; + case 'n': + Regenerate = FALSE; + break; + case 0: if (Help) usage(); ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/create/perform.c#5 (text+ko) ==== @@ -242,11 +242,12 @@ * See /usr/ports/Mk/bsd.port.mk (in the fake-pkg target) */ if (PlistOnly) { - openDatabase(O_RDWR); + if (openDatabase(O_CREAT | O_RDWR)) + err("Could not open database: %s", DBCACHE_FILE); check_list(home, &plist); + write_plist(&plist, stdout); int retval = cache_plist(&plist, FALSE); - write_plist(&plist, stdout); closeDatabase(); exit(retval); ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/info/perform.c#6 (text+ko) ==== @@ -377,20 +377,19 @@ } /* If cache exists check database for the key (i.e., file absolute path) */ - if(CacheExists == TRUE) { + if (CacheExists == TRUE) { // DEBUG("find_pkg: USES CACHE\n"); TAILQ_FOREACH(wp, which_list, next) { if (wp->skip == TRUE) continue; DBT tmp; - if(dbKeyExists(wp->file, &tmp)) + if (dbKeyExists(wp->file, &tmp)) strlcpy(wp->package, tmp.data, PATH_MAX); else DEBUG("find_pkg: Doesn't exist\n"); } } else { - DEBUG("find_pkg: NO CACHE\n"); - + DEBUG("debug: not using cache; run pkg_convert\n"); installed = matchinstalled(MATCH_ALL, NULL, &errcode); if (installed == NULL) return errcode; ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/database.c#7 (text+ko) ==== @@ -46,7 +46,7 @@ DB * opendb(const char *filename, int flags) { - return dbopen(filename, flags, 0755, DB_BTREE, &btinfo); + return dbopen(filename, flags, 0777, DB_BTREE, &btinfo); } /* ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/lib.h#8 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/usr.sbin/pkg_install/lib/lib.h,v 1.68 2008/06/12 15:21:13 flz Exp $ */ +/* $FreeBSD: src/usr.sbin/pkg_install/lib/lib.h,v 1.69 2008/07/08 03:21:05 keramida Exp $ */ /* * FreeBSD install - a package for the installation and maintainance @@ -113,7 +113,7 @@ * Version of the package tools - increase only when some * functionality used by bsd.port.mk is changed, added or removed */ -#define PKG_INSTALL_VERSION 20080612 +#define PKG_INSTALL_VERSION 20080708 #define PKG_WRAPCONF_FNAME "/var/db/pkg_install.conf" #define main(argc, argv) real_main(argc, argv) ==== //depot/projects/soc2008/andenore_pkginstall/src/usr.sbin/pkg_install/lib/url.c#3 (text+ko) ==== @@ -45,6 +45,7 @@ int pfd[2], pstat, r, w = 0; char *hint; int fd, pkgfd = 0; + struct url_stat ustat; rp = NULL; /* Special tip that sysinstall left for us */ @@ -104,6 +105,11 @@ } fetchDebug = (Verbose > 0); + if ((fetchStatURL(fname, &ustat, Verbose ? "v" : NULL)) == -1) { + if (Verbose) + warn("Error: Could not get filestat for url: %s", fname); + } + if ((ftp = fetchGetURL(fname, Verbose ? "v" : NULL)) == NULL) { printf("Error: FTP Unable to get %s: %s\n", fname, fetchLastErrString); @@ -111,7 +117,7 @@ } if (isatty(0) || Verbose) - printf("Fetching %s...", fname), fflush(stdout); + printf("Fetching %i bytes from %s...\n", (int)ustat.size, fname), fflush(stdout); pen[0] = '\0'; if ((rp = make_playpen(pen, 0)) == NULL) { printf("Error: Unable to construct a new playpen for FTP!\n"); @@ -139,6 +145,7 @@ } close(pfd[0]); for (;;) { + static int count = 0; if ((r = fread(buf, 1, sizeof buf, ftp)) < 1) break; if ((w = write(pfd[1], buf, r)) != r) @@ -146,7 +153,14 @@ if (keep_package) { if ((w = write(pkgfd, buf, r)) != r) break; - } + } + count += r; + int perc = (int)count*100/(int)ustat.size; + if (isatty(0) || Verbose) + printf("Progress: %3i%%", perc); + fflush(stdout); + if(count != (int)ustat.size) + printf("\r"); } if (ferror(ftp)) warn("warning: error reading from server");