Jeff,
Kindly, it would be possible to know better the objective of this patch ?
Perhaps the plan of re-unification or interoperability with deb has resumed?
Just for a better understanding.
Best regards
On Fri, Jun 13, 2008 at 10:32 AM, Jeff Johnson <jbj@rpm5.org> wrote:
> RPM Package Manager, CVS Repository
> http://rpm5.org/cvs/
>
> ____________________________________________________________________________
>
> Server: rpm5.org Name: Jeff Johnson
> Root: /v/rpm/cvs Email: jbj@rpm5.org
> Module: rpm Date: 13-Jun-2008 10:32:02
> Branch: HEAD Handle: 2008061308320101
>
> Modified files:
> rpm CHANGES rpmpopt.in
> rpm/rpmdb hdrfmt.c
>
> Log:
> - add --deb:foo aliases for *.deb spewage.
>
> Summary:
> Revision Changes Path
> 1.2411 +1 -0 rpm/CHANGES
> 1.107 +68 -7 rpm/rpmdb/hdrfmt.c
> 2.66 +89 -1 rpm/rpmpopt.in
>
> ____________________________________________________________________________
>
> patch -p0 <<'@@ .'
> Index: rpm/CHANGES
>
> ============================================================================
> $ cvs diff -u -r1.2410 -r1.2411 CHANGES
> --- rpm/CHANGES 13 Jun 2008 06:18:56 -0000 1.2410
> +++ rpm/CHANGES 13 Jun 2008 08:32:01 -0000 1.2411
> @@ -1,5 +1,6 @@
>
> 5.1.0 -> 5.2a0:
> + - jbj: add --deb:foo aliases for *.deb spewage.
> - jbj: rework :strsub find-and-replace to use mire patterns.
> - jbj: mire: add REG_NEWLINE to default regex compilation.
> - jbj: add :strsub format extension find-and-replace using posix
> RE's.
> @@ .
> patch -p0 <<'@@ .'
> Index: rpm/rpmdb/hdrfmt.c
>
> ============================================================================
> $ cvs diff -u -r1.106 -r1.107 hdrfmt.c
> --- rpm/rpmdb/hdrfmt.c 13 Jun 2008 06:18:57 -0000 1.106
> +++ rpm/rpmdb/hdrfmt.c 13 Jun 2008 08:32:02 -0000 1.107
> @@ -20,7 +20,7 @@
> *__inbuf, *__inbytesleft, *__outbuf, *__outbytesleft @*/;
>
> extern int iconv_close(/*@only@*/ iconv_t __cd)
> - /*@modifies __cd @*/;
> + /*@modifies __cd @*/;
> /*@=declundef =incondefs @*/
> #endif
> #endif
> @@ -2345,6 +2345,65 @@
> return _fnTag(h, he);
> }
>
> +/**
> + * Retrieve digest/path pairs for --deb:md5sums.
> + * @param h header
> + * @retval *he tag container
> + * @return 0 on success
> + */
> +static int debmd5sumsTag(Header h, HE_t he)
> + /*@modifies he @*/
> +{
> + HE_t nhe = memset(alloca(sizeof(*nhe)), 0, sizeof(*nhe));
> + HE_t dhe = memset(alloca(sizeof(*dhe)), 0, sizeof(*dhe));
> + char * t, * te;
> + size_t nb = 0;
> + int rc = 1;
> + int xx;
> + int i;
> +
> + nhe->tag = RPMTAG_FILEPATHS;
> + if (!(xx = headerGet(h, nhe, 0)))
> + goto exit;
> + dhe->tag = RPMTAG_FILEDIGESTS;
> + if (!(xx = headerGet(h, dhe, 0)))
> + goto exit;
> +
> + he->tag = tagValue("Debmd5sums");
> + he->t = RPM_STRING_ARRAY_TYPE;
> + he->c = 0;
> + he->freeData = 1;
> + for (i = 0; i < (int)dhe->c; i++) {
> + if (!(dhe->p.argv[i] && *dhe->p.argv[i]))
> + continue;
> + nb += sizeof(*he->p.argv);
> + nb += strlen(dhe->p.argv[i]) + sizeof(" ") + strlen(nhe->p.argv[i])
> - 1;
> + he->c++;
> + }
> + nb += sizeof(*he->p.argv);
> +
> + he->p.argv = xmalloc(nb);
> + te = (char *) &he->p.argv[he->c+1];
> +
> + he->c = 0;
> + for (i = 0; i < (int)dhe->c; i++) {
> + if (!(dhe->p.argv[i] && *dhe->p.argv[i]))
> + continue;
> + he->p.argv[he->c++] = te;
> + t = rpmExpand(dhe->p.argv[i], " ", nhe->p.argv[i]+1, NULL);
> + te = stpcpy(te, t);
> + te++;
> + t = _free(t);
> + }
> + he->p.argv[he->c] = NULL;
> + rc = 0;
> +
> +exit:
> + nhe->p.ptr = _free(nhe->p.ptr);
> + dhe->p.ptr = _free(dhe->p.ptr);
> + return rc;
> +}
> +
> static int filestatTag(Header h, HE_t he)
> /*@modifies he @*/
> {
> @@ -3777,6 +3836,8 @@
> { .tagFunction = F1sqlTag } },
> { HEADER_EXT_TAG, "RPMTAG_FILESSQLENTRY2",
> { .tagFunction = F2sqlTag } },
> + { HEADER_EXT_TAG, "RPMTAG_DEBMD5SUMS",
> + { .tagFunction = debmd5sumsTag } },
> { HEADER_EXT_FORMAT, "armor",
> { .fmtFunction = armorFormat } },
> { HEADER_EXT_FORMAT, "base64",
> @@ -3928,11 +3989,11 @@
> */
> struct sprintfToken_s {
> enum {
> - PTOK_NONE = 0,
> - PTOK_TAG = 1,
> - PTOK_ARRAY = 2,
> - PTOK_STRING = 3,
> - PTOK_COND = 4
> + PTOK_NONE = 0,
> + PTOK_TAG = 1,
> + PTOK_ARRAY = 2,
> + PTOK_STRING = 3,
> + PTOK_COND = 4
> } type;
> union {
> struct sprintfTag_s tag; /*!< PTOK_TAG */
> @@ -4624,7 +4685,7 @@
> /*@=infloops@*/
>
> if (dst != NULL)
> - *dst = '\0';
> + *dst = '\0';
>
> for (i = 0; i < (unsigned) numTokens; i++) {
> token = format + i;
> @@ .
> patch -p0 <<'@@ .'
> Index: rpm/rpmpopt.in
>
> ============================================================================
> $ cvs diff -u -r2.65 -r2.66 rpmpopt.in
> --- rpm/rpmpopt.in 29 May 2008 13:45:20 -0000 2.65
> +++ rpm/rpmpopt.in 13 Jun 2008 08:32:01 -0000 2.66
> @@ -2,7 +2,7 @@
> # \verbatim
> #
> # @USRLIBRPM@/@configure_input@
> -# $Id: rpmpopt.in,v 2.65 2008/05/29 13:45:20 jbj Exp $
> +# $Id: rpmpopt.in,v 2.66 2008/06/13 08:32:01 jbj Exp $
> #
> # This file *should not be modified*. Local customizations
> # belong in /etc/popt, not here. This file will be replaced
> @@ -103,6 +103,94 @@
> --POPTdesc=$"list metadata in yaml"
>
>
> #==============================================================================
> +rpm alias --deb:control --qf '\
> +Package: %{NAME}\
> +\nVersion: %|EPOCH?{%{EPOCH}:}|%{VERSION}-%{RELEASE}\
> +\nSection: %{GROUP}\
> +%|Priority?{\
> +\nPriority: %{Priority}\
> +}:{\
> +\nPriority: standard\
> +}|\
> +\nArchitecture: %{ARCH:strsub(noarch,all,src,source)}\
> +%|Essential?{\
> +\nEssential: %{Essential}\
> +}|\
> +%|REQUIRENAME?{\
> +\nDepends:[ %{REQUIRENAME:contains(N)}]\
> +}|\
> +%|Predepends?{\
> +\nPre-Depends:[ %{Predepends}]\
> +}|\
> +%|Recommends?{\
> +\nRecommends:[ %{Recommends}]\
> +}|\
> +%|Suggests?{\
> +\nSuggests:[ %{Suggests}]\
> +}|\
> +%|Enhances?{\
> +\nEnhances:[ %{Enhances}]\
> +}|\
> +%|Breaks?{\
> +\nBreaks:[ %{Breaks}]\
> +}|\
> +%|CONFLICTNAME?{\
> +\nConflicts:[ %{CONFLICTNAME:contains(N)}]\
> +}|\
> +\nInstalled-Size: %{SIZE}\
> +%|PACKAGER?{\
> +\nMaintainer: %{PACKAGER}\
> +}|\
> +\nDescription: %{SUMMARY}\
> +\n%{DESCRIPTION:strsub(^, )}\
> +%|URL?{\
> +\nHomepage: %{URL}\
> +}|\
> +\n' \
> + --POPTdesc=$"display binary debian/control file"
> +
> +rpm alias --deb:preinst --qf '\
> +%|PREIN?{\
> +%|PREINPROG?{#!%{PREINPROG})}:{#!/bin/sh}|\
> +\n%{PREIN}\
> +}|\
> +\n' \
> + --POPTdesc=$"display debian/preinst script"
> +
> +rpm alias --deb:postinst --qf '\
> +%|POSTIN?{\
> +%|POSTINPROG?{#!%{POSTINPROG})}:{#!/bin/sh}|\
> +\n%{POSTIN}\
> +}|\
> +\n' \
> + --POPTdesc=$"display debian/postinst script"
> +
> +rpm alias --deb:prerm --qf '\
> +%|PREUN?{\
> +%|PREUNPROG?{#!%{PREUNPROG})}:{#!/bin/sh}|\
> +\n%{PREUN}\
> +}|\
> +\n' \
> + --POPTdesc=$"display debian/prerm script"
> +
> +rpm alias --deb:postrm --qf '\
> +%|POSTUN?{\
> +%|POSTUNPROG?{#!%{POSTUNPROG})}:{#!/bin/sh}|\
> +\n%{POSTUN}\
> +}|\
> +\n' \
> + --POPTdesc=$"display debian/postrm script"
> +
> +rpm alias --deb:md5sums --qf '\
> +%|FILENAMES?{\
> +[\
> +%{Debmd5sums}\n\
> +]\
> +}|\
> +' \
> + --POPTdesc=$"display debian/md5sums manifest"
> +
>
> +#==============================================================================
> rpm alias --yum:primary.xml --qf '\
> <package type="rpm">\
> \n <name>%{NAME:cdata}</name>\
> @@ .
> ______________________________________________________________________
> RPM Package Manager http://rpm5.org
> CVS Sources Repository rpm-cvs@rpm5.org
>
Received on Fri Jun 13 13:59:28 2008