X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=spec2make.c;h=30af6d00a5df002d9bdd9e201d164cb2e601dd6c;hb=3e24b438fbab6027880ccfa7e11b1d9180dccf46;hp=edb43b590f017016e2db601860d8291f358f95db;hpb=83a7514f97c21f41b01ddcd8eacd6411b137b69e;p=build.git diff --git a/spec2make.c b/spec2make.c index edb43b59..30af6d00 100644 --- a/spec2make.c +++ b/spec2make.c @@ -20,6 +20,15 @@ #include #include +/* from f10 and up, Spec is renamed rpmSpec */ +#ifndef _RPMTYPES_H +#define rpmSpec Spec +#endif + +#ifndef PATH_MAX +#include +#endif + extern size_t strnlen(const char *s, size_t maxlen); /* the structure describing the options we take and the defaults */ @@ -34,7 +43,7 @@ static struct poptOption optionsTable[] = { }; /* Stolen from rpm/build/spec.c:rpmspecQuery() */ -Spec +rpmSpec rpmspecGet(rpmts ts, const char * arg) { char * buildRoot = NULL; @@ -59,7 +68,7 @@ main(int argc, char *argv[]) poptContext context; rpmts ts = NULL; int ec = 0; - Spec spec; + rpmSpec spec; struct Source *source; Package pkg; const char *name, *version, *release, *arch, *unused; @@ -123,7 +132,7 @@ main(int argc, char *argv[]) char fullSource[PATH_MAX]; strncpy(fullSource, source->fullSource, sizeof(fullSource)); - printf("%s-TARBALLS += SOURCES/%s\n", package_name, basename(fullSource)); + printf("%s.tarballs += SOURCES/%s\n", package_name, basename(fullSource)); /* computes the SOURCEDIR variable by removing .tar.gz or .tar.bz2 */ { char *suffixes[] = {".tar.gz",".tgz",".tar.bz2", NULL}; @@ -138,8 +147,7 @@ main(int argc, char *argv[]) size_t len = (size_t)(suffix_index-fullSource); strncpy(sourcename,fullSource,len); sourcename[len]='\0'; - printf ("%s-SOURCE := SOURCES/%s\n",package_name,basename(sourcename)); - printf ("%s-CODEBASE := CODEBASES/%s\n",package_name,package_name); + printf ("%s.source := SOURCES/%s\n",package_name,basename(sourcename)); break; } } @@ -152,7 +160,7 @@ main(int argc, char *argv[]) name = version = release = NULL; (void) headerNVR(pkg->header, &name, &version, &release); if (name && version && release) - printf("%s-SRPM := SRPMS/%s-%s-%s.src.rpm\n", + printf("%s.srpm := SRPMS/%s-%s-%s.src.rpm\n", package_name, name, version, release); /* Print non-empty packages */ @@ -165,31 +173,40 @@ main(int argc, char *argv[]) arch=target; } } + /* skip empty packages */ if (pkg->fileList) { - printf("%s-RPMS += RPMS/%s/%s-%s-%s.%s.rpm\n", + /* attach (add) rpm path to package */ + printf("%s.rpms += RPMS/%s/%s-%s-%s.%s.rpm\n", package_name, arch, name, version, release, arch); - printf("%s-RPM-PATH := RPMS/%s/%s-%s-%s.%s.rpm\n", + /* convenience */ + printf("%s.rpmnames += %s\n", + package_name, name); + /* attach path to rpm name */ + printf("%s.rpm-path := RPMS/%s/%s-%s-%s.%s.rpm\n", name,arch, name, version, release, arch); - if (strstr (name,"-devel")!=NULL) { - printf("%s-DEVEL-RPMS += RPMS/%s/%s-%s-%s.%s.rpm\n", - package_name, arch, name, version, release, arch); - } + /* attach package to rpm name for backward resolution - should be unique */ + printf("%s.package := %s\n", + name,package_name); } } } /* export some macros to make */ + /* note : this relies on pl-specific conventions and might be wrong */ { - char *macros[] = { "release" , "name" , "version" , "subversion" , NULL } ; + char *macros[] = { "release" , "name" , "version" , "taglevel" , NULL } ; char **nav; char *macro=malloc(32); for (nav=macros; *nav; nav++) { sprintf(macro,"%%{%s}",*nav); char *value = rpmExpand(macro,NULL); - printf ("%s-rpm-%s := %s\n",package_name,*nav,value); + printf ("%s.rpm-%s := %s\n",package_name,*nav,value); } } + /* export arch */ + printf ("%s.rpm-arch := %s\n",package_name,target); + spec = freeSpec(spec); done: