Fixes for recent and old bugs
This commit is contained in:
parent
019aa970f0
commit
39af94aa1d
@ -61,8 +61,8 @@ target_include_directories(distromatic PUBLIC
|
|||||||
#
|
#
|
||||||
# NOTE: -fno-toplevel-reorder required to prevent Sqlite3 weird problems
|
# NOTE: -fno-toplevel-reorder required to prevent Sqlite3 weird problems
|
||||||
#
|
#
|
||||||
target_compile_options(distromatic PUBLIC -O2 -fno-toplevel-reorder -g -Wall -std=gnu11 -pedantic ${RPM_CFLAGS_OTHER})
|
target_compile_options(distromatic PUBLIC -O2 -g -Wall -std=gnu11 -pedantic ${RPM_CFLAGS_OTHER})
|
||||||
|
# -fno-toplevel-reorder
|
||||||
add_executable(distroquery
|
add_executable(distroquery
|
||||||
distroquery.c
|
distroquery.c
|
||||||
functions.c
|
functions.c
|
||||||
|
@ -944,6 +944,7 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
int i = 0,hasbuilds[ARCHS_MAX],ptharg[ARCHS_MAX];
|
int i = 0,hasbuilds[ARCHS_MAX],ptharg[ARCHS_MAX];
|
||||||
int parallel = 0;
|
int parallel = 0;
|
||||||
|
int current_archs = 0;
|
||||||
pthread_t pth[ARCHS_MAX];
|
pthread_t pth[ARCHS_MAX];
|
||||||
char warning[8096];
|
char warning[8096];
|
||||||
|
|
||||||
@ -1123,13 +1124,13 @@ main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (passed_arch) {
|
if (passed_arch) {
|
||||||
configtag->arch[0] = malloc(sizeof passed_arch);
|
configtag->arch[0] = malloc(sizeof passed_arch);
|
||||||
if (!configtag->arch[0]) {
|
if (!configtag->arch[0]) {
|
||||||
fprintf(stderr, "The system is out of memory\n");
|
fprintf(stderr, "The system is out of memory\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
strcpy(configtag->arch[0], passed_arch);
|
strcpy(configtag->arch[0], passed_arch);
|
||||||
configtag->arch[1] = NULL;
|
configtag->arch[1] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rpminit();
|
rpminit();
|
||||||
@ -1190,7 +1191,10 @@ main(int argc, char *argv[])
|
|||||||
pthread_join(pth[i], NULL);
|
pthread_join(pth[i], NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!passed_arch) { // can't do missing builds and ports check in single arch mode
|
for (i = 0; i < ARCHS_MAX && configtag->arch[i]; i++)
|
||||||
|
current_archs++;
|
||||||
|
|
||||||
|
if (current_archs > 1) { // can't do missing builds and ports check in single arch mode
|
||||||
if (!quietmode)
|
if (!quietmode)
|
||||||
fprintf(stdout, "Checking for SRPMS with no builds and missing ports...\n");
|
fprintf(stdout, "Checking for SRPMS with no builds and missing ports...\n");
|
||||||
else
|
else
|
||||||
|
@ -480,7 +480,7 @@ void logmsg(int level, const char *msg, ...) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ((level == LOG_WARNING) || (level == LOG_ERROR)) {
|
if ((level == LOG_WARNING) || (level == LOG_ERROR)) {
|
||||||
strncpy(oldmsg[curroldmsg++],newmsg,PATH_MAX);
|
strncpy(oldmsg[curroldmsg++],newmsg,256);
|
||||||
if (curroldmsg >= 20) curroldmsg = 0;
|
if (curroldmsg >= 20) curroldmsg = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -664,8 +664,8 @@ struct repoData* getRepodata(char *repodata_url, char *arch) {
|
|||||||
|
|
||||||
ret = lr_handle_perform(h, r, &tmp_err);
|
ret = lr_handle_perform(h, r, &tmp_err);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
logmsg(LOG_ERROR, "cannot get repodata: %d: %s\n",
|
logmsg(LOG_ERROR, "cannot get repodata from %s: %d: %s\n",
|
||||||
tmp_err->code, tmp_err->message);
|
urls[0], tmp_err->code, tmp_err->message);
|
||||||
g_error_free(tmp_err);
|
g_error_free(tmp_err);
|
||||||
lr_result_free(r);
|
lr_result_free(r);
|
||||||
lr_handle_free(h);
|
lr_handle_free(h);
|
||||||
@ -1001,17 +1001,26 @@ int addToSourceHeaderList(struct configTag *ct, int mode, int altrepository) {
|
|||||||
|
|
||||||
if (altrepository == ct->repository_level) {
|
if (altrepository == ct->repository_level) {
|
||||||
scanpath = ct->repository_source_dir;
|
scanpath = ct->repository_source_dir;
|
||||||
if (ct->repodata_url) repodata = getRepodata(ct->repodata_url, NULL);
|
if (ct->repodata_url) {
|
||||||
|
repodata = getRepodata(ct->repodata_url, NULL);
|
||||||
|
if (!repodata) return 1;
|
||||||
|
}
|
||||||
logmsg(LOG_DEBUG,"Scanning source packages in repository %s...", ct->tag);
|
logmsg(LOG_DEBUG,"Scanning source packages in repository %s...", ct->tag);
|
||||||
} else if (altrepository == -1) {
|
} else if (altrepository == -1) {
|
||||||
// non-incremental mode
|
// non-incremental mode
|
||||||
scanpath = ct->repository_source_dir;
|
scanpath = ct->repository_source_dir;
|
||||||
altrepository = 0;
|
altrepository = 0;
|
||||||
if (ct->repodata_url) repodata = getRepodata(ct->repodata_url, NULL);
|
if (ct->repodata_url) {
|
||||||
|
repodata = getRepodata(ct->repodata_url, NULL);
|
||||||
|
if (!repodata) return 1;
|
||||||
|
}
|
||||||
logmsg(LOG_DEBUG,"Scanning source packages in repository %s...", ct->tag);
|
logmsg(LOG_DEBUG,"Scanning source packages in repository %s...", ct->tag);
|
||||||
} else {
|
} else {
|
||||||
scanpath = ct->repository[altrepository]->repository_source_dir;
|
scanpath = ct->repository[altrepository]->repository_source_dir;
|
||||||
if (ct->repodata_url) repodata = getRepodata(ct->repository[altrepository]->repodata_url, NULL);
|
if (ct->repodata_url) {
|
||||||
|
repodata = getRepodata(ct->repository[altrepository]->repodata_url, NULL);
|
||||||
|
if (!repodata) return 1;
|
||||||
|
}
|
||||||
logmsg(LOG_DEBUG,"Scanning source packages in repository %s...", ct->repository[altrepository]->tag);
|
logmsg(LOG_DEBUG,"Scanning source packages in repository %s...", ct->repository[altrepository]->tag);
|
||||||
}
|
}
|
||||||
if (repodata) {
|
if (repodata) {
|
||||||
@ -1412,18 +1421,28 @@ char* advanceXMLPackageNode(char* prevname, xmlNode **primary_node,
|
|||||||
if (ct->repository[0]) {
|
if (ct->repository[0]) {
|
||||||
snprintf(scanpath,bufsize,"%sRPMS.%s/",ct->repository[0]->repository_dir,ct->arch[arch]);
|
snprintf(scanpath,bufsize,"%sRPMS.%s/",ct->repository[0]->repository_dir,ct->arch[arch]);
|
||||||
scantag = ct->repository[0]->tag;
|
scantag = ct->repository[0]->tag;
|
||||||
if (ct->repository[0]->repodata_url) repodata[0] = getRepodata(
|
if (ct->repository[0]->repodata_url) {
|
||||||
ct->repository[0]->repodata_url, ct->arch[arch]);
|
repodata[0] = getRepodata(ct->repository[0]->repodata_url,
|
||||||
|
ct->arch[arch]);
|
||||||
|
if (!repodata[0]) return 1;
|
||||||
|
}
|
||||||
for (i = 1; i <= ct->repository_level; i++) {
|
for (i = 1; i <= ct->repository_level; i++) {
|
||||||
if (ct->repository[i]) {
|
if (ct->repository[i]) {
|
||||||
altscanpath[i-1] = malloc(bufsize);
|
altscanpath[i-1] = malloc(bufsize);
|
||||||
snprintf(altscanpath[i-1], bufsize, "%sRPMS.%s/",ct->repository[i]->repository_dir,ct->arch[arch]);
|
snprintf(altscanpath[i-1], bufsize, "%sRPMS.%s/",ct->repository[i]->repository_dir,ct->arch[arch]);
|
||||||
altscantag[i-1] = ct->repository[i]->tag;
|
altscantag[i-1] = ct->repository[i]->tag;
|
||||||
if (ct->repository[i]->repodata_url) {
|
if (ct->repository[i]->repodata_url) {
|
||||||
if (!repodata[0]) logmsg(LOG_ERROR,
|
if (!repodata[0]) {
|
||||||
"repodata_url must be defined in main and parent repositories; aborting.");
|
logmsg(LOG_ERROR,
|
||||||
|
"repodata_url must be defined in main and parent repositories; aborting.");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
repodata[i] = getRepodata(
|
repodata[i] = getRepodata(
|
||||||
ct->repository[i]->repodata_url, ct->arch[arch]);
|
ct->repository[i]->repodata_url, ct->arch[arch]);
|
||||||
|
if (!repodata[i]) {
|
||||||
|
cleanRepodata(repodata[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
alt_reps_num++;
|
alt_reps_num++;
|
||||||
} else {
|
} else {
|
||||||
@ -1438,8 +1457,10 @@ char* advanceXMLPackageNode(char* prevname, xmlNode **primary_node,
|
|||||||
} else {
|
} else {
|
||||||
snprintf(scanpath,bufsize,"%sRPMS.%s/",ct->repository_dir,ct->arch[arch]);
|
snprintf(scanpath,bufsize,"%sRPMS.%s/",ct->repository_dir,ct->arch[arch]);
|
||||||
scantag = ct->tag;
|
scantag = ct->tag;
|
||||||
if (ct->repodata_url) repodata[0] = getRepodata(ct->repodata_url,
|
if (ct->repodata_url) {
|
||||||
ct->arch[arch]);
|
repodata[0] = getRepodata(ct->repodata_url, ct->arch[arch]);
|
||||||
|
if (!repodata[0]) return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
currheaderlist = ct->headerlist[arch];
|
currheaderlist = ct->headerlist[arch];
|
||||||
|
@ -679,42 +679,6 @@ generateStats(struct configTag *configtag,int arch)
|
|||||||
fclose(htmlout);
|
fclose(htmlout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create Smart Package Manager channel file */
|
|
||||||
snprintf(outfile, PATH_MAX, "%s%s-%s.smart",
|
|
||||||
configtag->html_dir,
|
|
||||||
configtag->configdefaults->distribution_name,
|
|
||||||
configtag->tag);
|
|
||||||
|
|
||||||
if ((htmlout = fopen(outfile, "w")) == NULL) {
|
|
||||||
perror(outfile);
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
/* remove final slashes from download_prefix as required by apt */
|
|
||||||
strcpy(buffer, configtag->download_dir);
|
|
||||||
|
|
||||||
i=strlen(buffer);
|
|
||||||
while ((i > 0) && (buffer[i-1] == '/' )) {
|
|
||||||
buffer[i-1]='\0';
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf(htmlout, "#\n# %s %s channel configuration for Smart Package Manager\n#\n\n",
|
|
||||||
configtag->configdefaults->distribution_name,
|
|
||||||
configtag->tag);
|
|
||||||
fprintf(htmlout, "[%s]\ntype = apt-rpm\n",
|
|
||||||
configtag->tag);
|
|
||||||
fprintf(htmlout, "name = %s\n",
|
|
||||||
configtag->description);
|
|
||||||
fprintf(htmlout, "baseurl = http://%s%s\n",
|
|
||||||
configtag->configdefaults->url_address, buffer);
|
|
||||||
fprintf(htmlout, "components =");
|
|
||||||
for (i = 0; i < ARCHS_MAX; i++) {
|
|
||||||
if (configtag->arch[i]) fprintf(htmlout," %s", configtag->arch[i]);
|
|
||||||
}
|
|
||||||
fprintf(htmlout, "\n");
|
|
||||||
fclose(htmlout);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create Changelog page */
|
/* create Changelog page */
|
||||||
struct tm tmdate;
|
struct tm tmdate;
|
||||||
tmdate.tm_min = 0;
|
tmdate.tm_min = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user