From owner-svn-src-user@FreeBSD.ORG Sun Jan 23 22:27:52 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1F13F106564A; Sun, 23 Jan 2011 22:27:52 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0E0228FC08; Sun, 23 Jan 2011 22:27:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p0NMRpHd069380; Sun, 23 Jan 2011 22:27:51 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p0NMRpLn069377; Sun, 23 Jan 2011 22:27:51 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201101232227.p0NMRpLn069377@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 Jan 2011 22:27:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r217762 - in user/nwhitehorn/bsdinstall: distextract release X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Jan 2011 22:27:52 -0000 Author: nwhitehorn Date: Sun Jan 23 22:27:51 2011 New Revision: 217762 URL: http://svn.freebsd.org/changeset/base/217762 Log: distextract was not setting permissions appropriately, for reasons I do not understand. Fix that, and simplify the code a little. libarchive does not like overlaid directories with some kinds of set flags, so roll the distribution files into the 'world' archive for now. This is slightly bogus, but unavoidable. Reported by: rwatson Modified: user/nwhitehorn/bsdinstall/distextract/distextract.c user/nwhitehorn/bsdinstall/release/testsystem.sh Modified: user/nwhitehorn/bsdinstall/distextract/distextract.c ============================================================================== --- user/nwhitehorn/bsdinstall/distextract/distextract.c Sun Jan 23 22:26:03 2011 (r217761) +++ user/nwhitehorn/bsdinstall/distextract/distextract.c Sun Jan 23 22:27:51 2011 (r217762) @@ -37,13 +37,10 @@ extract_files(int nfiles, const char **f char path[PATH_MAX]; int archive_files[nfiles]; int total_files, current_files, archive_file; - struct archive *archive, *disk; + struct archive *archive; struct archive_entry *entry; char errormsg[512]; char status[8]; - const void *block; - size_t bsize; - off_t offset; int i, err, progress, last_progress; err = 0; @@ -90,12 +87,6 @@ extract_files(int nfiles, const char **f } current_files = 0; - disk = archive_write_disk_new(); - archive_write_disk_set_options(disk, ARCHIVE_EXTRACT_TIME | - ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_ACL | - ARCHIVE_EXTRACT_FFLAGS | ARCHIVE_EXTRACT_OWNER | - ARCHIVE_EXTRACT_XATTR); - archive_write_disk_set_standard_lookup(disk); for (i = 0; i < nfiles; i++) { archive = archive_read_new(); @@ -122,24 +113,13 @@ extract_files(int nfiles, const char **f progress, nfiles, __DECONST(char **, items)); - err = archive_write_header(disk, entry); - if (err != ARCHIVE_OK) - break; - - while (1) { - err = archive_read_data_block(archive, - &block, &bsize, &offset); - if (err != ARCHIVE_OK) - break; - err = archive_write_data_block(disk, - block, bsize, offset); - if (err != ARCHIVE_OK) - break; - } + err = archive_read_extract(archive, entry, + ARCHIVE_EXTRACT_TIME | ARCHIVE_EXTRACT_OWNER | + ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_ACL | + ARCHIVE_EXTRACT_XATTR | ARCHIVE_EXTRACT_FFLAGS); - if (err != ARCHIVE_EOF) + if (err != ARCHIVE_OK) break; - archive_write_finish_entry(disk); archive_file++; current_files++; @@ -148,15 +128,9 @@ extract_files(int nfiles, const char **f items[i*2 + 1] = "Done"; if (err != ARCHIVE_EOF) { - const char *errstring; - if (archive_errno(archive) != 0) - errstring = archive_error_string(archive); - else - errstring = archive_error_string(disk); - snprintf(errormsg, sizeof(errormsg), "Error while extracting %s: %s\n", items[i*2], - errstring); + archive_error_string(archive)); items[i*2 + 1] = "Failed"; dialog_msgbox("Extract Error", errormsg, 0, 0, TRUE); Modified: user/nwhitehorn/bsdinstall/release/testsystem.sh ============================================================================== --- user/nwhitehorn/bsdinstall/release/testsystem.sh Sun Jan 23 22:26:03 2011 (r217761) +++ user/nwhitehorn/bsdinstall/release/testsystem.sh Sun Jan 23 22:27:51 2011 (r217762) @@ -15,33 +15,26 @@ tar cvzf $2/kernel.tgz . chflags -R noschg . rm -rf $1 -# Distribution -cd /usr/src -mkdir $1 -make distrib-dirs distribution DESTDIR=$1 -cd $1 -tar cvzf $2/distribution.tgz . -chflags -R noschg . -rm -rf $1 - # World cd /usr/src mkdir $1 -make installworld DESTDIR=$1 +make installworld distribution DESTDIR=$1 cd $1 tar cvzf $2/world.tgz . # Keep world around # Make system cd /usr/src -make installkernel distribution DESTDIR=$1 +make installkernel DESTDIR=$1 mkdir $1/usr/bsdinstall-dist -cp $2/kernel.tgz $2/world.tgz $2/distribution.tgz $1/usr/bsdinstall-dist +cp $2/kernel.tgz $2/world.tgz $1/usr/bsdinstall-dist # Things for the CD environment ln -s /tmp/bsdinstall_etc/resolv.conf $1/etc/resolv.conf echo kernel_options=\"-C\" > $1/boot/loader.conf echo sendmail_enable=\"NONE\" > $1/etc/rc.conf +echo hostid_enable=\"NO\" >> $1/etc/rc.conf +touch $1/etc/fstab cd $BSDINSTALL cp release/rc.local $1/etc