]>
cygwin.com Git - cygwin-apps/setup.git/blob - IniDBBuilderPackage.cc
2 * Copyright (c) 2002, Robert Collins.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * A copy of the GNU General Public License can be found at
12 * Written by Robert Collins <rbtcollins@hotmail.com>
16 #include "IniDBBuilderPackage.h"
17 #include "IniParseFeedback.h"
18 #include "package_db.h"
19 #include "package_meta.h"
20 #include "package_version.h"
21 #include "cygpackage.h"
22 #include "filemanip.h"
27 IniDBBuilderPackage :: IniDBBuilderPackage ( IniParseFeedback
const & aFeedback
) :
28 cp ( 0 ), cpv ( 0 ), trust ( 0 ), _feedback ( aFeedback
){}
31 IniDBBuilderPackage :: buildTimestamp ( String
const & time
)
33 timestamp
= strtoul ( time
. cstr_oneuse (), 0 , 0 );
37 IniDBBuilderPackage :: buildVersion ( String
const & aVersion
)
42 String ini_version
= canonicalize_version ( version
);
43 String our_version
= canonicalize_version (:: version
);
44 // XXX useversion < operator
45 if ( our_version
. compare ( ini_version
) < 0 )
46 _feedback
. warning ( "The current ini file is from a newer version of setup.exe. If you have any trouble installing, please download a fresh version from http://www.cygwin.com/setup.exe" );
51 IniDBBuilderPackage :: buildPackage ( String
const & name
)
54 cp
= & db
. packages
. registerbykey ( name
);
55 cpv
= new cygpackage ( name
);
60 IniDBBuilderPackage :: buildPackageVersion ( String
const & version
)
62 cpv
-> set_canonical_version ( version
);
63 add_correct_version ();
67 IniDBBuilderPackage :: buildPackageSDesc ( String
const & theDesc
)
69 cpv
-> set_sdesc ( theDesc
);
73 IniDBBuilderPackage :: buildPackageLDesc ( String
const & theDesc
)
75 cpv
-> set_ldesc ( theDesc
);
79 IniDBBuilderPackage :: buildPackageInstall ( String
const & path
,
80 String
const & size
, unsigned char const * md5
)
82 process_src ( cpv
-> bin
, path
, size
, md5
);
85 IniDBBuilderPackage :: buildPackageSource ( String
const & path
,
86 String
const & size
, unsigned char const * md5
)
88 process_src ( cpv
-> src
, path
, size
, md5
);
92 IniDBBuilderPackage :: buildPackageTrust ( int newtrust
)
95 if ( newtrust
!= TRUST_UNKNOWN
)
96 cpv
= new cygpackage ( cp
-> name
);
100 IniDBBuilderPackage :: buildPackageRequirement ( String
const & name
)
102 cpv
-> new_requirement ( name
);
106 IniDBBuilderPackage :: buildPackageCategory ( String
const & name
)
109 cp
-> add_category ( db
. categories
. registerbykey ( name
));
113 IniDBBuilderPackage :: add_correct_version ()
116 for ( size_t n
= 1 ; ! merged
&& n
<= cp
-> versions
. number (); n
++)
117 if (! cp
-> versions
[ n
]-> Canonical_version (). casecompare ( cpv
-> Canonical_version ()))
120 categories and requires are consistent for the same version across
123 /* Copy the binary mirror across if this site claims to have an install */
124 if ( cpv
-> bin
. sites
. number ())
125 cp
-> versions
[ n
]-> bin
. sites
. registerbykey ( cpv
-> bin
. sites
[ 1 ]-> key
);
127 if ( cpv
-> src
. sites
. number ())
128 cp
-> versions
[ n
]-> src
. sites
. registerbykey ( cpv
-> src
. sites
[ 1 ]-> key
);
129 /* Copy the descriptions across */
130 if ( cpv
-> SDesc (). size () && ! cp
-> versions
[ n
]-> SDesc (). size ())
131 cp
-> versions
[ n
]-> set_sdesc ( cpv
-> SDesc ());
132 if ( cpv
-> LDesc (). size () && ! cp
-> versions
[ n
]-> LDesc (). size ())
133 cp
-> versions
[ n
]-> set_ldesc ( cpv
-> LDesc ());
134 cpv
= ( cygpackage
*) cp
-> versions
[ n
];
138 cp
-> add_version (* cpv
);
143 if ( cp
-> currtimestamp
< timestamp
)
145 cp
-> currtimestamp
= timestamp
;
150 if ( cp
-> prevtimestamp
< timestamp
)
152 cp
-> prevtimestamp
= timestamp
;
157 if ( cp
-> exptimestamp
< timestamp
)
159 cp
-> exptimestamp
= timestamp
;
167 IniDBBuilderPackage :: process_src ( packagesource
& src
,
168 String
const & path
, String
const & size
, unsigned char const * md5
)
170 if (! cpv
-> Canonical_version (). size ())
173 if ( parse_filename ( path
, f
))
175 cpv
-> set_canonical_version ( f
. ver
);
176 add_correct_version ();
182 src
. size
= atoi ( size
. cstr_oneuse ());
183 src
. set_canonical ( path
. cstr_oneuse ());
185 if ( md5
&& ! src
. md5
. isSet ())
187 src
. sites
. registerbykey ( parse_mirror
);
This page took 0.041385 seconds and 5 git commands to generate.