From owner-p4-projects@FreeBSD.ORG Fri Aug 13 23:42:16 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7686410656A4; Fri, 13 Aug 2010 23:42:16 +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 2100C10656A3 for ; Fri, 13 Aug 2010 23:42:16 +0000 (UTC) (envelope-from ivoras@FreeBSD.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 0DCDB8FC1B for ; Fri, 13 Aug 2010 23:42:16 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id o7DNgFOc001973 for ; Fri, 13 Aug 2010 23:42:15 GMT (envelope-from ivoras@FreeBSD.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id o7DNgFso001970 for perforce@freebsd.org; Fri, 13 Aug 2010 23:42:15 GMT (envelope-from ivoras@FreeBSD.org) Date: Fri, 13 Aug 2010 23:42:15 GMT Message-Id: <201008132342.o7DNgFso001970@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to ivoras@FreeBSD.org using -f From: Ivan Voras To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 182375 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Aug 2010 23:42:16 -0000 http://p4web.freebsd.org/@@182375?ac=10 Change 182375 by ivoras@ursaminor on 2010/08/13 23:41:38 Re-read pkg db after installing dependancies. Affected files ... .. //depot/projects/soc2010/pkg_patch/src/patch/Makefile#36 edit .. //depot/projects/soc2010/pkg_patch/src/patch/Notes.txt#6 edit .. //depot/projects/soc2010/pkg_patch/src/patch/applypatch.c#26 edit .. //depot/projects/soc2010/pkg_patch/src/patch/applypatch.h#26 edit .. //depot/projects/soc2010/pkg_patch/src/patch/hashjob.c#35 edit .. //depot/projects/soc2010/pkg_patch/src/patch/hashjob.h#35 edit .. //depot/projects/soc2010/pkg_patch/src/patch/main.c#37 edit .. //depot/projects/soc2010/pkg_patch/src/patch/mkpatch.c#34 edit .. //depot/projects/soc2010/pkg_patch/src/patch/mkpatch.h#34 edit .. //depot/projects/soc2010/pkg_patch/src/patch/mkpatchdir.c#19 edit .. //depot/projects/soc2010/pkg_patch/src/patch/mkpatchdir.h#18 edit .. //depot/projects/soc2010/pkg_patch/src/patch/pkg_patch.1#8 edit .. //depot/projects/soc2010/pkg_patch/src/patch/pkg_patch.h#34 edit .. //depot/projects/soc2010/pkg_patch/src/patch/support.c#33 edit .. //depot/projects/soc2010/pkg_patch/src/patch/updateweb.c#14 edit .. //depot/projects/soc2010/pkg_patch/src/patch/updateweb.h#14 edit Differences ... ==== //depot/projects/soc2010/pkg_patch/src/patch/Makefile#36 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/Notes.txt#6 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/applypatch.c#26 (text+ko) ==== @@ -307,6 +307,8 @@ if (access(fpatch, R_OK) != 0) err(1, "Access error reading file: %s", fpatch); snprintf(dpatch, PATH_MAX, "%s/patch", my_tmp); + if (access(dpatch, R_OK) != 0) + rm_rf(dpatch); if (mkdir(dpatch, 0700) != 0) err(1, "Cannot create directory: %s", dpatch); if (pkgxjob_start(&xpatch, dpatch, fpatch) != 0) ==== //depot/projects/soc2010/pkg_patch/src/patch/applypatch.h#26 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/hashjob.c#35 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/hashjob.h#35 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/main.c#37 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/mkpatch.c#34 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/mkpatch.h#34 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/mkpatchdir.c#19 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/mkpatchdir.h#18 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/pkg_patch.1#8 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/pkg_patch.h#34 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/support.c#33 (text+ko) ==== ==== //depot/projects/soc2010/pkg_patch/src/patch/updateweb.c#14 (text+ko) ==== @@ -165,12 +165,17 @@ pkg_add(struct patch_index *pindex, char *pkg_name) { char url[PATH_MAX]; + int exit_code; snprintf(url, sizeof(url), "%s/%s.%s", pindex->pkg_repo_url, pkg_name, PKG_FORMAT_EXT); if (Verbose > 1) printf("Trying to install %s.\n", url); - return vsystem("%s %s", _PATH_PKG_ADD, url); + exit_code = vsystem("%s %s", _PATH_PKG_ADD, url); + if (exit_code != 0) + printf("Exit code %d running %s %s\n", exit_code, + _PATH_PKG_ADD, url); + return (exit_code); } @@ -376,11 +381,23 @@ } if (!foundit) { printf("Dependancy cannot be satisfied " - "%s -> %s -trying to install\n", + "%s -> %s - trying to install\n", pr->target, pl->name); if (pkg_add(&pindex, pl->name) != 0) err(1, "Cannot install %s\n", pl->name); + /* + * XXX: memory leak. libpkg doesn't have + * an API for freeing matchinstalled() + * data? + */ + instpkg = matchinstalled(MATCH_ALL, + NULL, &er); + if (instpkg == NULL || er != 0) + err(1, "Error getting a list of " + "installed packages"); + foundit = TRUE; + ndeps_found++; pl = pl->next; continue; } @@ -420,6 +437,8 @@ snprintf(local_file, PATH_MAX, "%s/%s", my_tmp, pr->patch_name); + if (Verbose > 2) + printf("Applying patch: %s\n", local_file); perform_applypatch(local_file); } } ==== //depot/projects/soc2010/pkg_patch/src/patch/updateweb.h#14 (text+ko) ====