Hello fellow developers, I have a problem with repoman. I keep breaking the dependency tree. Jabub knows what I'm talking about. Latest examples are bugs #196470, #196472 and #196474. On a side note I actually don't want to break the dependency tree...
Attached are the scripts I use to commit packages stable/unstable. Somewhere must be a bug! 'name_split.cpp' splits a package name like sys-devel/gcc-4.1.2 into category, package name and version number. It's done in c++ as that's the only language I do more with than 'hello world' programms. Not much more, just more. ;-) 'mp.sh' is the script which calls name_split, repoman etc. It's pretty straight forward and only does the things I would also do by hand. So if I want to mark for example sys-devel/gcc-4.1.2 stable on ppc64 I call mp.sh like this: mp.sh ppc64 sys-devel/gcc-4.1.2 "Stable on ppc64" If someone has a hint where the problem is, I would really appreciate that. Best regards, -markus P.S.: yes, I do 'cvs up' on the whole tree, before starting a commit.
mp.sh
Description: application/shellscript
#include <iostream>
#include <string>
using namespace std;
class splitted_names
{
public:
splitted_names(string name);
string get_category() {return category;}
string get_package() {return package;}
string get_version() {return version;}
private:
string category,
package,
version;
};
int main(int argc, char* argv[])
{
if (argc != 3 || argv[1] == "-h")
{
cout << "Useage: " << argv[0]
<< " -[cpv] category/package-version" << endl
<< "Options:" << endl
<< " -c : print the category" << endl
<< " -p : print the package name" << endl
<< " -v : print the package version" << endl
<< " -h : print this help" << endl
<< "NOTE: Only one of -c, -p, -v is allowed" << endl;
return EXIT_FAILURE;
}
splitted_names the_string((string)argv[2]);
string option = (string)argv[1];
if (option == "-c")
{
cout << the_string.get_category() << endl;
}
else if (option == "-p")
{
cout << the_string.get_package() << endl;
}
else if (option == "-v")
{
cout << the_string.get_version() << endl;
}
return EXIT_SUCCESS;
}
splitted_names::splitted_names (string name)
{
category = "";
package = "";
version = "";
int start_copy = 0,
stop_copy = 0;
// do not copy a leading '='
if (name[0] == '=')
{
start_copy = 1;
}
stop_copy = name.find('/');
category.assign(name, start_copy, stop_copy-start_copy);
if (name.length() > stop_copy)
{
start_copy = stop_copy+1;
}
for (int i = start_copy; i < name.length(); i++)
{
if (name.at(i) == '-')
{
if (name.at(i+1) == '0'
|| name.at(i+1) == '1'
|| name.at(i+1) == '2'
|| name.at(i+1) == '3'
|| name.at(i+1) == '4'
|| name.at(i+1) == '5'
|| name.at(i+1) == '6'
|| name.at(i+1) == '7'
|| name.at(i+1) == '8'
|| name.at(i+1) == '9' )
{
stop_copy = i-1;
break;
}
}
}
package.assign(name, start_copy, stop_copy-start_copy+1);
if (name.length() > stop_copy)
{
start_copy = stop_copy+2;
}
stop_copy = name.length();
version.assign(name, start_copy, stop_copy-start_copy);
}
signature.asc
Description: This is a digitally signed message part.
