static void doRmSource(Spec spec) /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/ { struct Source *sp; int rc; #if 0 rc = Unlink(spec->specFile); #endif for (sp = spec->sources; sp != NULL; sp = sp->next) { const char *dn, *fn; if (sp->flags & RPMFILE_GHOST) continue; #if defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */ if (! (dn = getSourceDir(sp->flags, sp->source))) #else if (! (dn = getSourceDir(sp->flags))) #endif continue; fn = rpmGenPath(NULL, dn, sp->source); rc = Unlink(fn); fn = _free(fn); } }
void Copier::startCopy() { copier.lock(); QDir dir(getSourceDir()); if (getSourceDir().trimmed().length() == 0 || !dir.exists()) { emit message(QString("Error: source directory doesn't exist.")); copier.unlock(); return; } if (destDirs.length() == 0) { emit message(QString("Error: no destination directories.")); copier.unlock(); return; } //emit copyStarted(); QStringList fileList = dir.entryList(QDir::Files); QString name; QString destFolder; QFile source, dest; int i, extensionIndex; QString fileName, extension; foreach(name, fileList) { source.setFileName(dir.absolutePath() + QDir::separator() + name); foreach(destFolder, destDirs) { dest.setFileName(destFolder + QDir::separator() + name); if (!source.exists()) continue; i = 1; while (dest.exists()) { extensionIndex = name.lastIndexOf("."); fileName = name.left(extensionIndex); extension = name.right(name.length()-extensionIndex); dest.setFileName(destFolder + QDir::separator() + fileName + " (" + QString::number(i) + ")" + extension); i++; } source.copy(dest.fileName()); }
std::string ZFlyEmMisc::HackathonEvaluator::getNeuronInfoFile() const { return getSourceDir() + "/neuronsinfo.json"; }
/** * Check that all sources/patches/icons exist locally, fetching if necessary. */ static int prepFetch(Spec spec) /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/ { #if defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */ const char *Smacro; #endif const char *Lmacro, *Lurlfn = NULL; const char *Rmacro, *Rurlfn = NULL; struct Source *sp; struct stat st; rpmRC rpmrc; int ec, rc; char *cp; /* XXX insure that %{_sourcedir} exists */ rpmrc = RPMRC_OK; Lurlfn = rpmGenPath(NULL, "%{?_sourcedir}", NULL); if (Lurlfn != NULL && *Lurlfn != '\0') rpmrc = rpmMkdirPath(Lurlfn, "_sourcedir"); Lurlfn = _free(Lurlfn); if (rpmrc != RPMRC_OK) return -1; /* XXX insure that %{_patchdir} exists */ rpmrc = RPMRC_OK; Lurlfn = rpmGenPath(NULL, "%{?_patchdir}", NULL); if (Lurlfn != NULL && *Lurlfn != '\0') rpmrc = rpmMkdirPath(Lurlfn, "_patchdir"); Lurlfn = _free(Lurlfn); if (rpmrc != RPMRC_OK) return -1; /* XXX insure that %{_icondir} exists */ rpmrc = RPMRC_OK; Lurlfn = rpmGenPath(NULL, "%{?_icondir}", NULL); if (Lurlfn != NULL && *Lurlfn != '\0') rpmrc = rpmMkdirPath(Lurlfn, "_icondir"); Lurlfn = _free(Lurlfn); if (rpmrc != RPMRC_OK) return -1; if (rpmIsVerbose() && !quietly && (rpmBTArgs.buildAmount & RPMBUILD_FETCHSOURCE)) rpmlog(RPMLOG_NOTICE, "Checking source and patch file(s):\n"); ec = 0; for (sp = spec->sources; sp != NULL; sp = sp->next) { #if defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */ Smacro = "%{?_specdir}/"; #endif #if defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */ if (! (Lmacro = getSourceDir(sp->flags, sp->source))) #else if (! (Lmacro = getSourceDir(sp->flags))) #endif continue; if (sp->flags & RPMFILE_SOURCE) { Rmacro = "%{?_Rsourcedir}/"; } else if (sp->flags & RPMFILE_PATCH) { Rmacro = "%{?_Rpatchdir}/"; } else if (sp->flags & RPMFILE_ICON) { Rmacro = "%{?_Ricondir}/"; } else continue; #if defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */ /* support splitted source directories, i.e., source files which are alternatively placed into the .spec directory and picked up from there, too. */ Lurlfn = rpmGenPath(NULL, Smacro, sp->source); rc = Lstat(Lurlfn, &st); if (rc == 0) { prepFetchVerbose(sp, &st); goto bottom; } #endif Lurlfn = rpmGenPath(NULL, Lmacro, sp->source); rc = Lstat(Lurlfn, &st); if (rc == 0) { /*@-noeffect@*/ prepFetchVerbose(sp, &st); /*@=noeffect@*/ goto bottom; } /*@-noeffect@*/ prepFetchVerbose(sp, NULL); /*@=noeffect@*/ if (errno != ENOENT) { ec++; rpmlog(RPMLOG_ERR, _("Missing %s%d %s: %s\n"), ((sp->flags & RPMFILE_SOURCE) ? "Source" : "Patch"), sp->num, sp->source, strerror(ENOENT)); goto bottom; } /* try to fetch via macro-controlled remote locations */ cp = rpmExpand(Rmacro, NULL); if (cp != NULL && strcmp(cp, "/") != 0) { cp = _free(cp); Rurlfn = rpmGenPath(NULL, Rmacro, sp->source); if (!(Rurlfn == NULL || Rurlfn[0] == '\0' || !strcmp(Rurlfn, "/") || !strcmp(Lurlfn, Rurlfn))) { rpmlog(RPMLOG_NOTICE, _("Fetching(%s%d): %s\n"), (sp->flags & RPMFILE_SOURCE) ? "Source" : "Patch", sp->num, Rurlfn); rc = urlGetFile(Rurlfn, Lurlfn); if (rc == 0) goto bottom; else { rpmlog(RPMLOG_ERR, _("Fetching %s%d failed: %s\n"), (sp->flags & RPMFILE_SOURCE) ? "Source" : "Patch", sp->num, ftpStrerror(rc)); ec++; } } } cp = _free(cp); /* try to fetch from original location */ rpmlog(RPMLOG_NOTICE, _("Fetching(%s%d): %s\n"), (sp->flags & RPMFILE_SOURCE) ? "Source" : "Patch", sp->num, sp->fullSource); rc = urlGetFile(sp->fullSource, Lurlfn); if (rc == 0) goto bottom; else { rpmlog(RPMLOG_ERR, _("Fetching %s%d failed: %s\n"), (sp->flags & RPMFILE_SOURCE) ? "Source" : "Patch", sp->num, ftpStrerror(rc)); ec++; } rpmlog(RPMLOG_ERR, _("Missing %s%d: %s: %s\n"), ((sp->flags & RPMFILE_SOURCE) ? "Source" : "Patch"), sp->num, sp->source, strerror(ENOENT)); ec++; bottom: Lurlfn = _free(Lurlfn); Rurlfn = _free(Rurlfn); } return ec; }
/*@observer@*/ static const char *doUntar(Spec spec, rpmuint32_t c, int quietly) /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/ { const char *fn, *Lurlfn; static char buf[BUFSIZ]; char taropts[8]; char *t = NULL; struct Source *sp; rpmCompressedMagic compressed = COMPRESSED_NOT; int urltype; const char *tar; int rubygem = 0; for (sp = spec->sources; sp != NULL; sp = sp->next) { if ((sp->flags & RPMFILE_SOURCE) && (sp->num == c)) { break; } } if (sp == NULL) { rpmlog(RPMLOG_ERR, _("No source number %d\n"), c); return NULL; } t = strrchr(sp->source, '.'); if(t && !strcasecmp(t, ".gem")) rubygem = 1; t = stpcpy(taropts, "-x"); /*@-internalglobs@*/ /* FIX: shrug */ if(rpmIsVerbose() && !quietly) t = stpcpy(t, "vv"); if(rubygem) t = stpcpy(t, "m"); t = stpcpy(t, "f"); /*@=internalglobs@*/ #if defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */ Lurlfn = rpmGenPath(NULL, getSourceDir(sp->flags, sp->source), sp->source); #else Lurlfn = rpmGenPath(NULL, getSourceDir(sp->flags), sp->source); #endif /* XXX On non-build parse's, file cannot be stat'd or read */ if (!spec->force && (isCompressed(Lurlfn, &compressed) || checkOwners(Lurlfn))) { Lurlfn = _free(Lurlfn); return NULL; } fn = NULL; urltype = urlPath(Lurlfn, &fn); switch (urltype) { case URL_IS_HTTPS: /* XXX WRONG WRONG WRONG */ case URL_IS_HTTP: /* XXX WRONG WRONG WRONG */ case URL_IS_FTP: /* XXX WRONG WRONG WRONG */ case URL_IS_HKP: /* XXX WRONG WRONG WRONG */ case URL_IS_MONGO: /* XXX FIXME */ case URL_IS_PATH: case URL_IS_UNKNOWN: break; case URL_IS_DASH: Lurlfn = _free(Lurlfn); return NULL; /*@notreached@*/ break; } #ifdef NOTYET { rpmmg mg; _rpmmg_debug = 1; mg = rpmmgNew(NULL, 0); t = (char *) rpmmgFile(mg, fn); mg = rpmmgFree(mg); fprintf(stderr, "==> %s: %s\n", fn, t); t = _free(t); _rpmmg_debug = 0; } #endif tar = rpmGetPath("%{?__tar}", NULL); if (!(tar && *tar != '\0')) { tar = _free(tar); tar = xstrdup("tar"); } #if defined(RPM_VENDOR_ARK) /* use-gnu-tar-compression-detection */ /* We leave compression handling for all tar based files up to GNU tar */ if (compressed == COMPRESSED_ZIP) #else if (compressed != COMPRESSED_NOT) #endif { const char *zipper; int needtar = 1; switch (compressed) { case COMPRESSED_NOT: /* XXX can't happen */ case COMPRESSED_OTHER: t = "%{__gzip} -dc"; break; case COMPRESSED_BZIP2: t = "%{__bzip2} -dc"; break; case COMPRESSED_LZOP: t = "%{__lzop} -dc"; break; case COMPRESSED_LZMA: t = "%{__lzma} -dc"; break; case COMPRESSED_XZ: t = "%{__xz} -dc"; break; case COMPRESSED_LZIP: t = "%{__lzip} -dc"; break; case COMPRESSED_LRZIP: t = "%{__lrzip} -dqo-"; break; case COMPRESSED_7ZIP: t = "%{__7zip} x"; needtar = 0; break; case COMPRESSED_ZIP: #if defined(RPM_VENDOR_OPENPKG) /* use-bsdtar-for-zip-files */ t = "%{__bsdtar} -x -f"; #else if (rpmIsVerbose() && !quietly) t = "%{__unzip}"; else t = "%{__unzip} -qq"; #endif needtar = 0; break; } zipper = rpmGetPath(t, NULL); buf[0] = '\0'; t = stpcpy(buf, zipper); zipper = _free(zipper); *t++ = ' '; *t++ = '\''; t = stpcpy(t, fn); *t++ = '\''; if (needtar) { t = stpcpy(t, " | "); t = stpcpy(t, tar); t = stpcpy(t, " "); t = stpcpy(t, taropts); t = stpcpy(t, " -"); } t = stpcpy(t, "\n" "STATUS=$?\n" "if [ $STATUS -ne 0 ]; then\n" " exit $STATUS\n" "fi"); } else { buf[0] = '\0'; t = stpcpy(buf, tar); t = stpcpy(t, " "); t = stpcpy(t, taropts); *t++ = ' '; t = stpcpy(t, fn); if(rubygem) { t = stpcpy(t, "\n" "if [ -f data.tar.gz ]; then\n" " tar "); t = stpcpy(t, taropts); t = stpcpy(t, " data.tar.gz\n" "fi"); } } tar = _free(tar); Lurlfn = _free(Lurlfn); return buf; }
int addSource(Spec spec, /*@unused@*/ Package pkg, const char *field, rpmTag tag) { struct Source *p; #if defined(RPM_VENDOR_OPENPKG) /* regular-ordered-sources */ struct Source *p_last; #endif int flag = 0; const char *name = NULL; const char *mdir = NULL; const char *fieldp = NULL; char buf[BUFSIZ]; uint32_t num = 0; buf[0] = '\0'; switch (tag) { case RPMTAG_SOURCE: flag = RPMFILE_SOURCE; name = "source"; fieldp = spec->line + strlen(name); break; case RPMTAG_PATCH: flag = RPMFILE_PATCH; name = "patch"; fieldp = spec->line + strlen(name); break; case RPMTAG_ICON: flag = RPMFILE_ICON; name = "icon"; fieldp = NULL; break; default: assert(0); /*@notreached@*/ break; } #if !defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */ mdir = getSourceDir(flag); assert(mdir != NULL); #endif /* Get the number */ if (fieldp != NULL) { char * end = NULL; num = strtoul(fieldp, &end, 10); SKIPSPACE(end); if (*end != ':') { rpmlog(RPMLOG_ERR, _("line %d: No ':' terminator: %s\n"), spec->lineNum, spec->line); return RPMRC_FAIL; } } /* Check whether tags of the same number haven't already been defined */ for (p = spec->sources; p != NULL; p = p->next) { if ( p->num != num ) continue; if ((tag == RPMTAG_SOURCE && p->flags == RPMFILE_SOURCE) || (tag == RPMTAG_PATCH && p->flags == RPMFILE_PATCH)) { rpmlog(RPMLOG_ERR, _("%s %d defined multiple times\n"), name, num); return RPMRC_FAIL; } } /* Create the entry and link it in */ p = xmalloc(sizeof(*p)); p->num = num; p->fullSource = xstrdup(field); p->flags = flag; p->source = strrchr(p->fullSource, '/'); if (p->source) p->source++; else p->source = p->fullSource; #if defined(RPM_VENDOR_OPENPKG) /* regular-ordered-sources */ p->next = NULL; p_last = spec->sources; while (p_last != NULL && p_last->next != NULL) p_last = p_last->next; if (p_last != NULL) p_last->next = p; else spec->sources = p; #else p->next = spec->sources; spec->sources = p; #endif spec->numSources++; /* XXX FIXME: need to add ICON* macros. */ #if defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */ mdir = getSourceDir(flag, p->source); #endif if (tag != RPMTAG_ICON) { const char *body = rpmGenPath(NULL, mdir, p->source); sprintf(buf, "%s%d", (flag & RPMFILE_PATCH) ? "PATCH" : "SOURCE", num); addMacro(spec->macros, buf, NULL, body, RMIL_SPEC); sprintf(buf, "%sURL%d", (flag & RPMFILE_PATCH) ? "PATCH" : "SOURCE", num); addMacro(spec->macros, buf, NULL, p->fullSource, RMIL_SPEC); #ifdef WITH_LUA if (!spec->recursing) { rpmlua lua = NULL; /* global state */ const char * what = (flag & RPMFILE_PATCH) ? "patches" : "sources"; rpmluav var = rpmluavNew(); rpmluaPushTable(lua, what); rpmluavSetListMode(var, 1); rpmluavSetValue(var, RPMLUAV_STRING, body); rpmluaSetVar(lua, var); /*@-moduncon@*/ var = (rpmluav) rpmluavFree(var); /*@=moduncon@*/ rpmluaPop(lua); } #endif body = _free(body); } return RPMRC_OK; }