/[smeserver]/rpms/plague/sme7/plague-0.4.5.8-scm-updates.patch
ViewVC logotype

Annotation of /rpms/plague/sme7/plague-0.4.5.8-scm-updates.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Sat Apr 9 16:06:17 2011 UTC (13 years, 6 months ago) by slords
Branch: MAIN
CVS Tags: plague-0_4_5_8-2_el4_sme, HEAD
Initial import

1 slords 1.1 diff -up plague-0.4.5.8/server/PackageJob.py.scm-updates plague-0.4.5.8/server/PackageJob.py
2     --- plague-0.4.5.8/server/PackageJob.py.scm-updates 2008-09-21 07:38:41.000000000 -0600
3     +++ plague-0.4.5.8/server/PackageJob.py 2011-04-09 09:56:01.290335772 -0600
4     @@ -37,6 +37,7 @@ from plague import ArchUtils
5     from plague import DebugUtils
6    
7     CVS_CMD = "/usr/bin/cvs"
8     +GIT_CMD = "/usr/bin/git"
9     MAKE_CMD = "/usr/bin/make"
10    
11     DEBUG = False
12     @@ -134,7 +135,7 @@ class PackageJob:
13     self.username = username
14     self.starttime = time.time()
15     self.endtime = 0
16     - self.use_cvs = self._server_cfg.get_bool("CVS", "use_cvs")
17     +
18     self._source = source
19     self.result_dir = None
20     self.srpm_path = None
21     @@ -150,7 +151,7 @@ class PackageJob:
22     "server_work_dir"), "srpm_http_dir")
23    
24     first_stage = 'initialize'
25     - if self.use_cvs == False:
26     + if source.endswith(".src.rpm") or source.find("/") != -1:
27     first_stage = 'prep'
28     pjc = PackageJobController(self, first_stage, 'waiting')
29     pjc.start()
30     @@ -289,54 +290,96 @@ class PackageJob:
31     dirname = "%s-%s-%d" % (self.uid, self._source, time.time())
32     tmpdir = self._server_cfg.get_str("Directories", "tmpdir")
33     self.checkout_tmpdir = os.path.join(tmpdir, dirname)
34     - if os.path.exists(self.checkout_tmpdir):
35     - shutil.rmtree(self.checkout_tmpdir, ignore_errors=True)
36     + if not self._source.endswith(".src.rpm") and self._source.find("/") == -1:
37     + if os.path.exists(self.checkout_tmpdir):
38     + shutil.rmtree(self.checkout_tmpdir, ignore_errors=True)
39     os.makedirs(self.checkout_tmpdir)
40    
41     - # Set up CVS environment
42     - env_args = "CVSROOT='%s'" % self._target_cfg.get_str("CVS", "cvs_root")
43     - cvs_rsh = self._target_cfg.get_str("CVS", "cvs_rsh")
44     - if len(cvs_rsh) > 0:
45     - env_args = "%s CVS_RSH='%s'" % (env_args, cvs_rsh)
46     -
47     - # Checkout the module
48     - cmd = 'umask 0022; cd %s; %s %s co -r %s %s' % (self.checkout_tmpdir, env_args, CVS_CMD,
49     - self._source, self.package)
50     - debugprint("%d: Running %s" % (self.uid, cmd))
51     - s, o = commands.getstatusoutput(cmd)
52     - if s != 0:
53     - err_msg = "Error: could not check out %s from %s - output was:\n\n" \
54     - "%s" % (self._source, self._target_str, o)
55     - else:
56     - # Just in case the 'common' directory didn't come along for the ride,
57     - # get it from CVS
58     - pkg_path = os.path.join(self.checkout_tmpdir, self.package)
59     - if not os.path.exists(os.path.join(pkg_path, "common")):
60     - cmd = 'cd %s; %s %s co common' % (pkg_path, env_args, CVS_CMD)
61     + if self._target_cfg.has_option("SCM", "cvs_root"):
62     + # Set up CVS environment
63     + env_args = "CVSROOT='%s'" % self._target_cfg.get_str("SCM", "cvs_root")
64     + cvs_rsh = self._target_cfg.get_str("SCM", "cvs_rsh")
65     + if len(cvs_rsh) > 0:
66     + env_args = "%s CVS_RSH='%s'" % (env_args, cvs_rsh)
67     +
68     + # Checkout the module
69     + cmd = 'umask 0022; cd %s; %s %s co -r %s %s' % (self.checkout_tmpdir, env_args, CVS_CMD,
70     + self._source, self.package)
71     + debugprint("%d: Running %s" % (self.uid, cmd))
72     + s, o = commands.getstatusoutput(cmd)
73     + if s != 0:
74     + err_msg = "Error: could not check out %s from %s - output was:\n\n" \
75     + "%s" % (self._source, self._target_str, o)
76     + else:
77     + # Just in case the 'common' directory didn't come along for the ride,
78     + # get it from CVS
79     + pkg_path = os.path.join(self.checkout_tmpdir, self.package)
80     + if not os.path.exists(os.path.join(pkg_path, "common")):
81     + cmd = 'cd %s; %s %s co common' % (pkg_path, env_args, CVS_CMD)
82     + debugprint("%d: Running %s" % (self.uid, cmd))
83     + s, o = commands.getstatusoutput(cmd)
84     + if s != 0:
85     + err_msg = "Error: could not check out common directory - " \
86     + "output was:\n\n%s" % (self._source, self._target_str, o)
87     +
88     + self.bm.notify_checkout_done(self)
89     +
90     + if err_msg:
91     + raise PrepError(err_msg)
92     +
93     + elif self._target_cfg.has_option("SCM", "git_root"):
94     + gitroot = self._target_cfg.get_str("SCM", "git_root")
95     + gitrepo = "%s/%s" % (gitroot, self.package)
96     + commonrepo = os.path.dirname(gitroot) + '/common'
97     + self.checkout_path = os.path.basename(self.package)
98     + if self.package.endswith('.git'):
99     + self.checkout_path = os.path.basename(self.package[:-4])
100     + commonrepo = os.path.dirname(gitroot) + '/common.git'
101     + sourcedir = '%s/%s' % (self.checkout_tmpdir, self.checkout_path)
102     +
103     + # Checkout the module
104     + cmd = 'cd %s; umask 0022; %s clone -n %s %s' % (self.checkout_tmpdir,
105     + GIT_CMD, gitrepo, self.checkout_path)
106     + debugprint("%d: Running %s" % (self.uid, cmd))
107     + s, o = commands.getstatusoutput(cmd)
108     + if s == 0:
109     + cmd = 'cd %s; umask 0022; %s reset --hard %s' % (sourcedir, GIT_CMD, self._source)
110     debugprint("%d: Running %s" % (self.uid, cmd))
111     s, o = commands.getstatusoutput(cmd)
112     - if s != 0:
113     - err_msg = "Error: could not check out common directory - " \
114     - "output was:\n\n%s" % (self._source, self._target_str, o)
115     -
116     - self.bm.notify_checkout_done(self)
117     -
118     - if err_msg:
119     - raise PrepError(err_msg)
120     -
121     +
122     + if s != 0:
123     + err_msg = "Error: could not check out %s from %s - output was:\n\n" \
124     + "%s" % (self._source, self._target_str, o)
125     +
126     + self.bm.notify_checkout_done(self)
127     +
128     + if err_msg:
129     + raise PrepError(err_msg)
130     + else:
131     + self.bm.notify_checkout_done(self)
132     +
133     + raise PrepError( "Error: could not check out %s from %s\n" %
134     + (self._source, self._target_str) )
135     +
136     self._set_cur_stage('make_srpm')
137     return False
138    
139     def _stage_make_srpm(self):
140     - # Map our target to the CVS target alias, since CVS may have
141     + # Map our target to the SCM target alias, since SCM may have
142     # different target names than we expose
143     - cvs_target = self._target_dict['target']
144     - cvs_alias = self._target_cfg.get_str("Aliases", "cvs_alias")
145     - if len(cvs_alias) > 0:
146     - cvs_target = cvs_alias
147     + srpm_dir = None
148     + if self._target_cfg.has_option("SCM", "cvs_root"):
149     + cvs_target = self._target_dict['target']
150     + cvs_alias = self._target_cfg.get_str("Aliases", "cvs_alias")
151     + if len(cvs_alias) > 0:
152     + cvs_target = cvs_alias
153     +
154     + self.srpm_path = None
155     + srpm_dir = os.path.join(self.checkout_tmpdir, self.package, cvs_target)
156     +
157     + elif self._target_cfg.has_option("SCM", "git_root"):
158     + srpm_dir = os.path.join(self.checkout_tmpdir, self.checkout_path)
159    
160     - self.srpm_path = None
161     - srpm_dir = os.path.join(self.checkout_tmpdir, self.package, cvs_target)
162     if not os.path.exists(srpm_dir):
163     msg = "Error: could not find checkout directory %s for %s. Sources probably don't exist for this target." % (srpm_dir, self._source)
164     raise PrepError(msg)
165     @@ -383,8 +426,8 @@ class PackageJob:
166    
167     def _stage_prep(self):
168    
169     - # In SRPM-only mode, cvs_tag is path to the SRPM to build
170     - if self.use_cvs == False:
171     + # In SRPM-only mode, _source is path to the SRPM to build
172     + if self._source.endswith(".src.rpm") or self._source.find("/") != -1:
173     self.srpm_path = self._source
174    
175     # fail the job if we can't access the SRPM. Can happen during
176     @@ -425,9 +468,10 @@ class PackageJob:
177     shutil.copy(self.srpm_path, self.srpm_http_path)
178     self.srpm_path = None
179    
180     - # Remove CVS checkout and make_srpm dirs
181     - if self.use_cvs == True:
182     - shutil.rmtree(self.checkout_tmpdir, ignore_errors=True)
183     + # Remove SCM checkout and make_srpm dirs
184     + if not self._source.endswith(".src.rpm") and self._source.find("/") == -1:
185     + if os.path.exists(self.checkout_tmpdir):
186     + shutil.rmtree(self.checkout_tmpdir, ignore_errors=True)
187    
188     self._request_arch_jobs()
189     self._set_cur_stage('waiting')
190     @@ -554,8 +598,9 @@ class PackageJob:
191     self._event.wait()
192     self._event.clear()
193     except PrepError, e:
194     - if self.use_cvs == True:
195     - shutil.rmtree(self.checkout_tmpdir, ignore_errors=True)
196     + if not self._source.endswith(".src.rpm") and self._source.find("/") == -1:
197     + if os.path.exists(self.checkout_tmpdir):
198     + shutil.rmtree(self.checkout_tmpdir, ignore_errors=True)
199     subj = 'Prep Error (Job %s): %s on %s' % (self.uid, self._source, self._target_str)
200     self.email_result(self.username, resultstring=e.msg, subject=subj)
201     self._stage_failed(e.msg)
202     diff -up plague-0.4.5.8/server/UserInterface.py.scm-updates plague-0.4.5.8/server/UserInterface.py
203     --- plague-0.4.5.8/server/UserInterface.py.scm-updates 2011-04-09 09:55:35.647857242 -0600
204     +++ plague-0.4.5.8/server/UserInterface.py 2011-04-09 09:56:01.294335535 -0600
205     @@ -58,7 +58,7 @@ def validate_package_name(name):
206     return False
207     return True
208    
209     -def validate_cvs_tag(tag):
210     +def validate_scm_tag(tag):
211     safe_list = ['-', '_', '.', ':', '~', '[', ']', '+']
212     for c in tag:
213     if not (c in safe_list) and not c.isalnum():
214     @@ -117,28 +117,8 @@ class UserInterface:
215     def enqueue(self, email, package, source, target_alias, buildreq=None):
216     """ Accept a job to build and stuff it into the job database """
217    
218     - is_cvs_tag = True
219     - if source.endswith(".src.rpm") or source.find("/") != -1:
220     - is_cvs_tag = False
221     -
222     # Do source-type specifc validation
223     - if is_cvs_tag:
224     - if self._cfg.get_bool("CVS", "use_cvs") == False:
225     - self.email_result(email, source, "Error setting up build for %s on "\
226     - "%s: this server builds SRPMs, not CVS checkouts." % (source, target_alias))
227     - return (-1, "This build server is set up for building SRPMS only. ", -1)
228     -
229     - if not validate_cvs_tag(source):
230     - self.email_result(email, source, "Error setting up build for %s on "\
231     - "%s: The CVS tag '%s' contained an illegal character. "\
232     - "Submit a bug report?" % (package, target_alias, cvs_tag))
233     - return (-1, "The CVS tag contained an illegal character.", -1)
234     - else:
235     - if self._cfg.get_bool("CVS", "use_cvs") == True:
236     - self.email_result(email, source, "Error setting up build for %s on "\
237     - "%s: this server builds CVS checkouts, not SRPMs." % (source, target_alias))
238     - return (-1, "This build server is set up for building CVS checkouts only. ", -1)
239     -
240     + if source.endswith(".src.rpm") or source.find("/") != -1:
241     # We limit the database field to 255 chars
242     if len(source) > 255:
243     self.email_result(email, source, "Error setting up build for %s on "\
244     @@ -150,6 +130,12 @@ class UserInterface:
245     self.email_result(email, source, "Error setting up build for %s on "\
246     "%s: The SRPM does not exist, or is not accessible. Remember to use absolute paths." % (source, target_alias))
247     return (-1, "SRPM does not exist or is not accessible, remember to use absolute paths.", -1)
248     + else:
249     + if not validate_scm_tag(source):
250     + self.email_result(email, source, "Error setting up build for %s on "\
251     + "%s: The SCM tag '%s' contained an illegal character. "\
252     + "Submit a bug report?" % (package, target_alias, scm_tag))
253     + return (-1, "The SCM tag contained an illegal character.", -1)
254    
255     if not validate_package_name(package):
256     self.email_result(email, source, "Error setting up build for %s on "\

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed