Date: Sun, 23 Jan 2011 22:27:51 +0000 (UTC) From: Nathan Whitehorn <nwhitehorn@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r217762 - in user/nwhitehorn/bsdinstall: distextract release Message-ID: <201101232227.p0NMRpLn069377@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101232227.p0NMRpLn069377>