Date: Tue, 8 Jun 2010 20:50:03 GMT From: Garrett Cooper <yanefbsd@gmail.com> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/147700: [patch] support xz format for packages Message-ID: <201006082050.o58Ko3mg090037@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/147700; it has been noted by GNATS. From: Garrett Cooper <yanefbsd@gmail.com> To: Bapt <baptiste.daroussin@gmail.com> Cc: FreeBSD-gnats-submit@freebsd.org Subject: Re: bin/147700: [patch] support xz format for packages Date: Tue, 8 Jun 2010 13:46:26 -0700 On Tue, Jun 8, 2010 at 1:27 PM, Bapt <baptiste.daroussin@gmail.com> wrote: > >>Number: =A0 =A0 =A0 =A0 147700 >>Category: =A0 =A0 =A0 bin >>Synopsis: =A0 =A0 =A0 [patch] support xz format for packages >>Confidential: =A0 no >>Severity: =A0 =A0 =A0 non-critical >>Priority: =A0 =A0 =A0 low >>Responsible: =A0 =A0freebsd-bugs >>State: =A0 =A0 =A0 =A0 =A0open >>Quarter: >>Keywords: >>Date-Required: >>Class: =A0 =A0 =A0 =A0 =A0change-request >>Submitter-Id: =A0 current-users >>Arrival-Date: =A0 Tue Jun 08 20:30:11 UTC 2010 >>Closed-Date: >>Last-Modified: >>Originator: =A0 =A0 Bapt >>Release: =A0 =A0 =A0 =A0FreeBSD 8.1-PRERELEASE amd64 >>Organization: >>Environment: > System: FreeBSD azathoth.lan 8.1-PRERELEASE FreeBSD 8.1-PRERELEASE #5 r20= 8894M: Tue Jun 8 11:03:27 CEST 2010 root@azathoth.lan:/usr/obj/usr/src/sys/= AZATHOTH amd64 > > > >>Description: > =A0 =A0 =A0 =A0Now that xz and liblzma is in base here comes a patch to s= upport xz archives in pkg_install (still default to bzip2) it uses --use-co= mpress-program as the version of libarchive on stable still doesn't support= -J and I don't have current to test. > > =A0 =A0 =A0 =A0to create txz package juste pkg_create -J -b your-packages > >>How-To-Repeat: > >>Fix: > > > > --- pkg_install-xz.patch begins here --- > Index: create/main.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- create/main.c =A0 =A0 =A0 (r=E9vision 208906) > +++ create/main.c =A0 =A0 =A0 (copie de travail) > @@ -48,7 +48,7 @@ > > =A0static void usage(void); > > -static char opts[] =3D "EGYNnORhjvxyzf:p:P:C:c:d:i:I:k:K:r:t:X:D:m:s:S:o= :b:"; > +static char opts[] =3D "EJGYNnORhjvxyzf:p:P:C:c:d:i:I:k:K:r:t:X:D:m:s:S:= o:b:"; > =A0static struct option longopts[] =3D { > =A0 =A0 =A0 =A0{ "backup", =A0 =A0 required_argument, =A0 =A0 =A0NULL, = =A0 =A0 =A0 =A0 =A0 'b' }, > =A0 =A0 =A0 =A0{ "extended", =A0 no_argument, =A0 =A0 =A0 =A0 =A0 =A0NULL= , =A0 =A0 =A0 =A0 =A0 'E' }, > @@ -188,6 +188,10 @@ > =A0 =A0 =A0 =A0 =A0 =A0Zipper =3D GZIP; > =A0 =A0 =A0 =A0 =A0 =A0break; > > + =A0 =A0 =A0 case 'J': > + =A0 =A0 =A0 =A0 =A0 Zipper =3D XZ; > + =A0 =A0 =A0 =A0 =A0 break; > + > =A0 =A0 =A0 =A0case 'b': > =A0 =A0 =A0 =A0 =A0 =A0InstalledPkg =3D optarg; > =A0 =A0 =A0 =A0 =A0 =A0while ((tmp =3D strrchr(optarg, (int)'/')) !=3D NU= LL) { > @@ -252,7 +256,7 @@ > =A0usage(void) > =A0{ > =A0 =A0 fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n", > -"usage: pkg_create [-YNOhjnvyz] [-C conflicts] [-P pkgs] [-p prefix]", > +"usage: pkg_create [-YNOJhjnvyz] [-C conflicts] [-P pkgs] [-p prefix]", > =A0" =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0[-i iscript] [-I piscript] [-k ds= cript] [-K pdscript]", > =A0" =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0[-r rscript] [-s srcdir] [-S base= dir]", > =A0" =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0[-t template] [-X excludefile]", > Index: create/create.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- create/create.h =A0 =A0 (r=E9vision 208906) > +++ create/create.h =A0 =A0 (copie de travail) > @@ -48,7 +48,7 @@ > =A0extern int =A0 =A0 Recursive; > =A0extern int =A0 =A0 Regenerate; > > -enum zipper {NONE, GZIP, BZIP, BZIP2 }; > +enum zipper {NONE, GZIP, BZIP, BZIP2, XZ }; > =A0extern enum zipper =A0 =A0 Zipper; > > =A0void =A0 =A0 =A0 =A0 =A0 add_cksum(Package *, PackingList, const char = *); > Index: create/perform.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- create/perform.c =A0 =A0(r=E9vision 208906) > +++ create/perform.c =A0 =A0(copie de travail) > @@ -63,6 +63,10 @@ > =A0 =A0 =A0 =A0 =A0 =A0Zipper =3D BZIP2; > =A0 =A0 =A0 =A0 =A0 =A0pkg[len - 4] =3D '\0'; > =A0 =A0 =A0 =A0} > + =A0 =A0 =A0 else if (!strcmp(&pkg[len - 4], ".txz")) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 Zipper =3D XZ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 pkg[len - 4] =3D '\0'; > + =A0 =A0 =A0 } > =A0 =A0 =A0 =A0else if (!strcmp(&pkg[len - 4], ".tgz")) { > =A0 =A0 =A0 =A0 =A0 =A0Zipper =3D GZIP; > =A0 =A0 =A0 =A0 =A0 =A0pkg[len - 4] =3D '\0'; > @@ -72,7 +76,10 @@ > =A0 =A0 =A0 =A0 =A0 =A0pkg[len - 4] =3D '\0'; > =A0 =A0 =A0 =A0} > =A0 =A0 } > - =A0 =A0if (Zipper =3D=3D BZIP2) { > + =A0 =A0 =A0 if (Zipper =3D=3D XZ ) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 suf =3D "txz"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 setenv("XZ", "-9", 0); > + =A0 =A0 =A0 } else if (Zipper =3D=3D BZIP2) { > =A0 =A0 =A0 =A0suf =3D "tbz"; > =A0 =A0 =A0 =A0setenv("BZIP2", "--best", 0); > =A0 =A0 } else if (Zipper =3D=3D GZIP) { > @@ -371,7 +378,11 @@ > =A0 =A0 args[nargs++] =3D "-f"; > =A0 =A0 args[nargs++] =3D tball; > =A0 =A0 if (strchr(suff, 'z')) { =A0 /* Compress/gzip/bzip2? */ > - =A0 =A0 =A0 if (Zipper =3D=3D BZIP2) { > + > + =A0 =A0 =A0 if (Zipper =3D=3D XZ) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 args[nargs++] =3D "--use-compress-program= =3Dxz"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 cname =3D "xz'd"; > + =A0 =A0 =A0 } else if (Zipper =3D=3D BZIP2) { > =A0 =A0 =A0 =A0 =A0 =A0args[nargs++] =3D "-j"; > =A0 =A0 =A0 =A0 =A0 =A0cname =3D "bzip'd "; > =A0 =A0 =A0 =A0} > Index: lib/file.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- lib/file.c =A0(r=E9vision 208906) > +++ lib/file.c =A0(copie de travail) > @@ -137,7 +137,7 @@ > =A0{ > =A0 =A0 static char tmp[FILENAME_MAX]; > =A0 =A0 char *cp; > - =A0 =A0const char *suffixes[] =3D {".tbz", ".tgz", ".tar", NULL}; > + =A0 =A0const char *suffixes[] =3D {".txz", ".tbz", ".tgz", ".tar", NULL= }; > =A0 =A0 int i; > > =A0 =A0 if (fexists(fname) && isfile(fname)) { > @@ -329,29 +329,7 @@ > =A0int > =A0unpack(const char *pkg, const char *flist) > =A0{ > - =A0 =A0const char *comp, *cp; > - =A0 =A0char suff[80]; > - > - =A0 =A0comp =3D ""; > - =A0 =A0/* > - =A0 =A0 * Figure out by a crude heuristic whether this or not this is p= robably > - =A0 =A0 * compressed and whichever compression utility was used (gzip o= r bzip2). > - =A0 =A0 */ > - =A0 =A0if (strcmp(pkg, "-")) { > - =A0 =A0 =A0 cp =3D strrchr(pkg, '.'); > - =A0 =A0 =A0 if (cp) { > - =A0 =A0 =A0 =A0 =A0 strcpy(suff, cp + 1); > - =A0 =A0 =A0 =A0 =A0 if (strchr(suff, 'z') || strchr(suff, 'Z')) { > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (strchr(suff, 'b')) > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 comp =3D "-j"; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 else > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 comp =3D "-z"; > - =A0 =A0 =A0 =A0 =A0 } > - =A0 =A0 =A0 } > - =A0 =A0} > - =A0 =A0else > - =A0 =A0 =A0 comp =3D "-j"; > - =A0 =A0if (vsystem("/usr/bin/tar -xp %s -f '%s' %s", comp, pkg, flist ?= flist : "")) { > + =A0 =A0if (vsystem("/usr/bin/tar -xp -f '%s' %s", pkg, flist ? flist : = "")) { > =A0 =A0 =A0 =A0warnx("tar extract of %s failed!", pkg); > =A0 =A0 =A0 =A0return 1; > =A0 =A0 } > --- pkg_install-xz.patch ends here --- Please see talk to kimelto on IRC about integrating a patch into the work that he's working on right now (that's based off the patches you provided and the ones I ran with for archive(3) integration). This patch would only serve to tie us down more in calling tar(1) directly, which is not what we want. Thanks, -Garrett
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006082050.o58Ko3mg090037>