# HG changeset patch # User Kristian H?gsberg # Date 1194307612 18000 # Node ID befb5208c0223104bf510e47933b8022fdd2f80a # Parent e94d16f789e5741df70c2b017d50d3fc38b39f2f Link to curl and download yum files automatically. diff -r e94d16f789e5 -r befb5208c022 Makefile --- a/Makefile Sun Nov 04 01:11:53 2007 -0400 +++ b/Makefile Mon Nov 05 19:06:52 2007 -0500 @@ -1,13 +1,7 @@ CFLAGS = -Wall -g -O2 -LDLIBS = -lexpat -lz -g -lrpm +LDLIBS = -lexpat -lz -g -lrpm -lcurl razor : razor.o import.o sha1.o main.o -import : razor primary.xml.gz - zcat primary.xml.gz | ./razor import-yum - -primary.xml.gz : - wget http://download.fedora.redhat.com/pub/fedora/linux/development/i386/os/repodata/primary.xml.gz - clean : rm -f *.o razor diff -r e94d16f789e5 -r befb5208c022 TODO --- a/TODO Sun Nov 04 01:11:53 2007 -0400 +++ b/TODO Mon Nov 05 19:06:52 2007 -0500 @@ -12,8 +12,6 @@ - merge file lists when merging package sets -- import filelist.xml.gz too in yum importer - - download (libcurl?) - figure out how to canonically represent empty string... ~0? @@ -88,3 +86,6 @@ maybe the effective set is the on-disk representation and the overlay can be computed when needed, we just keep a link back to the base. + +- incremental rawhide repo updates? instead of downloading 10MB zipped + repo every time, download a diff repo? diff -r e94d16f789e5 -r befb5208c022 import-rpm.sh --- a/import-rpm.sh Sun Nov 04 01:11:53 2007 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -#!/bin/sh - -import_rpm() { - echo "" - echo " " - - rpm -q --provides $p | sort -u | while read name ignore version; do - if test -z $version; then - echo " " - else - echo " " - fi - done - - rpm -q --requires $p | sort -u | while read name ignore version; do - if test -z $version; then - echo " " - else - echo " " - fi - done - - echo " " - echo "" -} - -mkdir -p pkgs -rpm -qa | while read p; do - name=${p%-*-*} - vr=${p#$name-} - version=${vr%-*} - release=${vr#*-} - - echo $name - $version - $release - import_rpm $name $version $release > pkgs/$name.rzr -done diff -r e94d16f789e5 -r befb5208c022 main.c --- a/main.c Sun Nov 04 01:11:53 2007 -0400 +++ b/main.c Mon Nov 05 19:06:52 2007 -0500 @@ -4,6 +4,7 @@ #include #include +#include #include "razor.h" static const char *repo_filename = "system.repo"; @@ -138,10 +139,35 @@ return 0; } +#define REPO_URL "http://download.fedora.redhat.com" \ + "/pub/fedora/linux/development/i386/os/repodata" + static int command_import_yum(int argc, const char *argv[]) { struct razor_set *set; + CURL *curl; + CURLcode res; + FILE *fp; + + curl = curl_easy_init(); + if (curl == NULL) + return 1; + + curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0); + fp = fopen("primary.xml.gz", "w"); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); + curl_easy_setopt(curl, CURLOPT_URL, REPO_URL "/primary.xml.gz"); + res = curl_easy_perform(curl); + fclose(fp); + + fp = fopen("filelists.xml.gz", "w"); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); + curl_easy_setopt(curl, CURLOPT_URL, REPO_URL "/filelists.xml.gz"); + res = curl_easy_perform(curl); + fclose(fp); + + curl_easy_cleanup(curl); set = razor_set_create_from_yum(); if (set == NULL)