Merge lp:~ubuntu-branches/ubuntu/oneiric/ltsp/oneiric-201108242108 into lp:ubuntu/oneiric/ltsp
- Oneiric (11.10)
- oneiric-201108242108
- Merge into oneiric
Status: | Needs review |
---|---|
Proposed branch: | lp:~ubuntu-branches/ubuntu/oneiric/ltsp/oneiric-201108242108 |
Merge into: | lp:ubuntu/oneiric/ltsp |
Diff against target: |
711 lines (+671/-0) (has conflicts) 7 files modified
debian/scripts/ltsp-live (+301/-0) debian/scripts/ltsp-live.desktop (+7/-0) debian/scripts/ltsp-live.png.b64 (+87/-0) debian/scripts/ltsp-live.xml (+115/-0) debian/scripts/po/Makefile (+35/-0) debian/scripts/po/fr.po (+65/-0) debian/scripts/po/ltsp-live.pot (+61/-0) Conflict adding file debian/scripts/ltsp-live.desktop. Moved existing file to debian/scripts/ltsp-live.desktop.moved. Conflict adding file debian/scripts/ltsp-live. Moved existing file to debian/scripts/ltsp-live.moved. Conflict adding file debian/scripts/ltsp-live.png.b64. Moved existing file to debian/scripts/ltsp-live.png.b64.moved. Conflict adding file debian/scripts/ltsp-live.xml. Moved existing file to debian/scripts/ltsp-live.xml.moved. Conflict adding file debian/scripts/po. Moved existing file to debian/scripts/po.moved. |
To merge this branch: | bzr merge lp:~ubuntu-branches/ubuntu/oneiric/ltsp/oneiric-201108242108 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu branches | Pending | ||
Review via email: mp+73900@code.launchpad.net |
Commit message
Description of the change
The package importer has detected a possible inconsistency between the package history in the archve and the history in bzr. As the archive is authoritative the importer has made lp:ubuntu/oneiric/ltsp reflect what is in the archive and the old bzr branch has been pushed to lp:~ubuntu-branches/ubuntu/oneiric/ltsp/oneiric-201108242108. This merge proposal was created so that an Ubuntu developer can review the situations and perform a merge/upload if necessary. There are three typical cases where this can happen.
1. Where someone pushes a change to bzr and someone else uploads the package without that change. This is the reason that this check is done by the importer. If this appears to be the case then a merge/upload should be done if the changes that were in bzr are still desirable.
2. The importer incorrectly detected the above situation when someone made a change in bzr and then uploaded it.
3. The importer incorrectly detected the above situation when someone just uploaded a package and didn't touch bzr.
If this case doesn't appear to be the first situation then set the status of the merge proposal to "Rejected" and help avoid the problem in future by filing a bug at https:/
(this is an automatically generated message)
Unmerged revisions
- 242. By Stéphane Graber
-
releasing version 5.2.16-0ubuntu2
- 241. By Stéphane Graber
-
Update dependencies for new ltsp-live
- 240. By Stéphane Graber
-
Replace ltsp-live by new python equivalent
Preview Diff
1 | === added file 'debian/scripts/ltsp-live' |
2 | --- debian/scripts/ltsp-live 1970-01-01 00:00:00 +0000 |
3 | +++ debian/scripts/ltsp-live 2011-09-02 22:56:31 +0000 |
4 | @@ -0,0 +1,301 @@ |
5 | +#!/usr/bin/python |
6 | +# -*- coding: utf-8 -*- |
7 | +# Copyright (applies if no explicit header in the file): |
8 | +# |
9 | +# This program is free software; you can redistribute it and/or |
10 | +# modify it under the terms of the GNU General Public License |
11 | +# as published by the Free Software Foundation; either version 2 |
12 | +# of the License, or (at your option) any later version. |
13 | +# |
14 | +# This program is distributed in the hope that it will be useful, |
15 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
17 | +# GNU General Public License for more details. |
18 | +# |
19 | +# You should have received a copy of the GNU General Public License |
20 | +# along with this program; if not, write to the Free Software |
21 | +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
22 | +# |
23 | +# Copyright (C) 2011 Canonical Ltd. |
24 | +# Authors: |
25 | +# * Stéphane Graber <stephane.graber@canonical.com>, 2011 |
26 | + |
27 | +import os, gettext, sys, subprocess |
28 | +from gettext import gettext as _ |
29 | +gettext.textdomain("ltsp-live") |
30 | + |
31 | +def generate_network(name, address): |
32 | + import uuid |
33 | + |
34 | + try: |
35 | + from ConfigParser import ConfigParser |
36 | + except: |
37 | + from configparser import ConfigParser |
38 | + |
39 | + parser = ConfigParser() |
40 | + path = "/etc/NetworkManager/system-connections/%s" % name |
41 | + |
42 | + if path not in parser.read(path): |
43 | + if not os.path.exists(path): |
44 | + print(_("Creating new configuration file")) |
45 | + else: |
46 | + print(_("Unable to parse config")) |
47 | + sys.exit(1) |
48 | + |
49 | + if "802-3-ethernet" not in parser.sections(): |
50 | + parser.add_section("802-3-ethernet") |
51 | + parser.set("802-3-ethernet", "duplex", "full") |
52 | + |
53 | + if "connection" not in parser.sections(): |
54 | + parser.add_section("connection") |
55 | + parser.set("connection", "id", name) |
56 | + parser.set("connection", "uuid", str(uuid.uuid4())) |
57 | + parser.set("connection", "type", "802-3-ethernet") |
58 | + |
59 | + if "ipv6" not in parser.sections(): |
60 | + parser.add_section("ipv6") |
61 | + parser.set("ipv6", "method", "ignore") |
62 | + |
63 | + if "ipv4" not in parser.sections(): |
64 | + parser.add_section("ipv4") |
65 | + parser.set("ipv4", "method", "manual") |
66 | + parser.set("ipv4", "addresses1", address) |
67 | + |
68 | + |
69 | + config=open("%s.tmp" % path, "w+") |
70 | + parser.write(config) |
71 | + config.close() |
72 | + |
73 | + os.chmod("%s.tmp" % path, 0o600) |
74 | + os.rename("%s.tmp" % path, path) |
75 | + |
76 | +def enable_network(name, interface): |
77 | + cmd=['nmcli', 'con', 'up', 'id', name, 'iface', interface] |
78 | + enable=subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,env={'LANG':'C'}) |
79 | + retval=enable.wait() |
80 | + |
81 | + if retval != 0: |
82 | + print(_("Failed to enable LTSP: %s") % " ".join(cmd)) |
83 | + print(enable.stdout.read().strip()) |
84 | + print(enable.stderr.read().strip()) |
85 | + |
86 | + return retval |
87 | + |
88 | +def list_devices(): |
89 | + devices={} |
90 | + |
91 | + cmd=['nmcli', '-e', 'yes', '-t', '-f', 'DEVICE,TYPE,STATE', 'dev'] |
92 | + listdev=subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,env={'LANG':'C'}) |
93 | + retval=listdev.wait() |
94 | + |
95 | + if retval != 0: |
96 | + print(_("Failed to list network cards: %s") % " ".join(cmd)) |
97 | + print(listdev.stdout.read().strip()) |
98 | + print(listdev.stderr.read().strip()) |
99 | + else: |
100 | + for line in listdev.stdout.readlines(): |
101 | + fields=str(line).strip().split(':') |
102 | + if len(fields) == 3: |
103 | + if fields[1] != "802-3-ethernet" or fields[2] == "unavailable": |
104 | + continue |
105 | + devices[fields[0]]=(fields[1],fields[2]) |
106 | + |
107 | + return devices |
108 | + |
109 | +def start_ltsplive(interface, winLTSP): |
110 | + import time |
111 | + |
112 | + # Add the network to Network Manager |
113 | + generate_network("LTSP","192.168.0.254;24;0.0.0.0;") |
114 | + time.sleep(2) |
115 | + |
116 | + # Switch to that network now |
117 | + if enable_network("LTSP",interface) != 0: |
118 | + # Something went wrong |
119 | + winLTSP.set_sensitive(True) |
120 | + return False |
121 | + |
122 | + # Install the needed packages |
123 | + cmd=["apt-get", "install", "--no-install-recommends", "-qq", "-y", "ltsp-server", "openssh-server"] |
124 | + runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
125 | + runcmd.wait() |
126 | + |
127 | + # Kill inetd as it's not needed anyway |
128 | + cmd=["killall","inetd"] |
129 | + runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
130 | + runcmd.wait() |
131 | + |
132 | + # Create LTSP configuration |
133 | + os.makedirs("/var/lib/tftpboot/ltsp/i386", mode=0o755) |
134 | + ltsconf=open("/var/lib/tftpboot/ltsp/i386/lts.conf","w+") |
135 | + ltsconf.write(""" |
136 | +[default] |
137 | +LDM_DIRECTX=True |
138 | +LDM_SSHOPTIONS="-o StrictHostKeyChecking=no -o CheckHostIP=no -o LogLevel=silent" |
139 | +LDM_GUESTLOGIN=True |
140 | +""") |
141 | + |
142 | + # Edubuntu theming |
143 | + if os.path.exists("/cdrom/README.diskdefines") and "Edubuntu" in open("/cdrom/README.diskdefines").read(): |
144 | + ltsconf.write("LDM_THEME=edubuntu\n") |
145 | + ltsconf.close() |
146 | + |
147 | + # Create LTSP Guest users |
148 | + newusers=open("/tmp/userlist","w+") |
149 | + for user in range(1,255): |
150 | + newusers.write("ltsp%s:ltsp%s:%s:1000:LTSP Guest:/home/ltsp%s:/bin/sh\n" % (user, user, 2000+user, user)) |
151 | + newusers.close() |
152 | + |
153 | + cmd=["newusers","/tmp/userlist"] |
154 | + runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
155 | + runcmd.wait() |
156 | + |
157 | + # Configuring dnsmasq |
158 | + dnsmasq=open("/tmp/dnsmasq-ltsp-livecd.conf","w+") |
159 | + dnsmasq.write(""" |
160 | +pxe-prompt="Starting Edubuntu Live LTSP... Press F8 for boot menu.", 3 |
161 | +pxe-service=X86PC, "Boot from network", /ltsp/i386/pxelinux |
162 | +pxe-service=X86PC, "Boot from local hard disk", 0 |
163 | +enable-tftp |
164 | +tftp-root=/var/lib/tftpboot |
165 | +dhcp-boot=/ltsp/i386/pxelinux.0 |
166 | +dhcp-option=vendor:PXEClient,6,2b |
167 | +dhcp-no-override |
168 | +dhcp-range=192.168.0.50,192.168.0.150,8h |
169 | +""") |
170 | + dnsmasq.close() |
171 | + |
172 | + # Call dnsmasq -C /tmp/dnsmasq-ltsp-livecd.conf |
173 | + cmd=["dnsmasq", "-C", "/tmp/dnsmasq-ltsp-livecd.conf"] |
174 | + runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
175 | + runcmd.wait() |
176 | + |
177 | + # Set up kernels, etc: |
178 | + os.makedirs("/opt/ltsp/i386",0o755) |
179 | + |
180 | + cmd=["mount", "/cdrom/ltsp/i386.img", "/opt/ltsp/i386", "-o", "loop"] |
181 | + runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
182 | + runcmd.wait() |
183 | + |
184 | + cmd=["ltsp-update-kernels"] |
185 | + runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
186 | + runcmd.wait() |
187 | + |
188 | + cmd=["umount", "/opt/ltsp/i386"] |
189 | + runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
190 | + runcmd.wait() |
191 | + |
192 | + # Start nbd-server |
193 | + cmd=["nbd-server", "2000", "/cdrom/ltsp/i386.img"] |
194 | + runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
195 | + runcmd.wait() |
196 | + |
197 | + sys.exit(0) |
198 | + |
199 | +def start_ui(): |
200 | + from gi.repository import Gtk as gtk |
201 | + from gi.repository import GObject as gobject |
202 | + |
203 | + builder = gtk.Builder() |
204 | + builder.set_translation_domain("ltsp-live") |
205 | + if os.path.exists("ltsp-live.xml"): |
206 | + xml_file = "ltsp-live.xml" |
207 | + elif os.path.exists("/usr/share/ltsp-live/ltsp-live.xml"): |
208 | + xml_file = "/usr/share/ltsp-live/ltsp-live.xml" |
209 | + else: |
210 | + print(_("Unable to find .xml UI file")) |
211 | + sys.exit(1) |
212 | + |
213 | + builder.add_from_file(xml_file) |
214 | + |
215 | + winLTSP = builder.get_object("winLTSP") |
216 | + cmbInterface = builder.get_object("cmbInterface") |
217 | + btnStart = builder.get_object("btnStart") |
218 | + |
219 | + # Populate drop-down |
220 | + model_interface = gtk.ListStore(str,str) |
221 | + cmbInterface.set_model(model_interface) |
222 | + cell = gtk.CellRendererText() |
223 | + cmbInterface.pack_start(cell, False) |
224 | + cmbInterface.add_attribute(cell,'text',0) |
225 | + |
226 | + entry_cache=[] |
227 | + devices={} |
228 | + |
229 | + def check_remove_entry(model, path, rowiter, data): |
230 | + if model.get_value(rowiter, 1) == data: |
231 | + model.remove(rowiter) |
232 | + return True |
233 | + return False |
234 | + |
235 | + def update_interfaces(): |
236 | + if winLTSP.get_sensitive() == False: |
237 | + return True |
238 | + |
239 | + devices.clear() |
240 | + devices.update(list_devices()) |
241 | + |
242 | + if len(devices) == 0: |
243 | + if len(model_interface) == 1 and model_interface[0][1] == "None": |
244 | + return True |
245 | + |
246 | + for entry in entry_cache: |
247 | + entry_cache.remove(entry) |
248 | + model_interface.clear() |
249 | + model_interface.append([_("None"),"None"]) |
250 | + cmbInterface.set_active(0) |
251 | + cmbInterface.set_sensitive(False) |
252 | + btnStart.set_sensitive(False) |
253 | + return True |
254 | + |
255 | + if len(entry_cache) == 0: |
256 | + cmbInterface.set_sensitive(True) |
257 | + btnStart.set_sensitive(True) |
258 | + model_interface.clear() |
259 | + |
260 | + # Add new entries |
261 | + for device in devices: |
262 | + entry=["%s (%s)" % (device, devices[device][0]),device] |
263 | + if entry not in entry_cache: |
264 | + model_interface.append(entry) |
265 | + entry_cache.append(entry) |
266 | + |
267 | + # Remove old entries |
268 | + for entry in entry_cache: |
269 | + if entry[1] not in devices: |
270 | + model_interface.foreach(check_remove_entry,(entry[1])) |
271 | + entry_cache.remove(entry) |
272 | + |
273 | + cmbInterface.set_active(0) |
274 | + return True |
275 | + |
276 | + update_interfaces() |
277 | + gobject.timeout_add(2000, update_interfaces) |
278 | + |
279 | + def start(button): |
280 | + interface = model_interface[cmbInterface.get_active()][1] |
281 | + if devices[interface][1] == "connected": |
282 | + warning=gtk.MessageDialog( |
283 | + parent=winLTSP, |
284 | + flags=gtk.DialogFlags.MODAL, |
285 | + message_type=gtk.MessageType.WARNING, |
286 | + buttons=gtk.ButtonsType.OK_CANCEL, |
287 | + message_format=_("The selected network interface is already in use.\nAre you sure you want to use it?")) |
288 | + retval = warning.run() |
289 | + warning.destroy() |
290 | + if retval != gtk.ResponseType.OK: |
291 | + return |
292 | + |
293 | + winLTSP.set_sensitive(False) |
294 | + gobject.timeout_add(1000, start_ltsplive, interface, winLTSP) |
295 | + |
296 | + builder.connect_signals({ |
297 | + "on_winLTSP_destroy" : gtk.main_quit, |
298 | + "on_btnCancel_clicked" : gtk.main_quit, |
299 | + "on_btnStart_clicked" : start, |
300 | + }) |
301 | + |
302 | + winLTSP.show() |
303 | + gtk.main() |
304 | + |
305 | +start_ui() |
306 | |
307 | === added file 'debian/scripts/ltsp-live.desktop' |
308 | --- debian/scripts/ltsp-live.desktop 1970-01-01 00:00:00 +0000 |
309 | +++ debian/scripts/ltsp-live.desktop 2011-09-02 22:56:31 +0000 |
310 | @@ -0,0 +1,7 @@ |
311 | + |
312 | +[Desktop Entry] |
313 | +Icon=ltsp-live.png |
314 | +Type=Application |
315 | +Exec=gksudo ltsp-live |
316 | +Name=Start LTSP Live |
317 | +Comment=Starts an LTSP LiveCD Session |
318 | |
319 | === renamed file 'debian/scripts/ltsp-live.desktop' => 'debian/scripts/ltsp-live.desktop.moved' |
320 | === renamed file 'debian/scripts/ltsp-live' => 'debian/scripts/ltsp-live.moved' |
321 | === added file 'debian/scripts/ltsp-live.png.b64' |
322 | --- debian/scripts/ltsp-live.png.b64 1970-01-01 00:00:00 +0000 |
323 | +++ debian/scripts/ltsp-live.png.b64 2011-09-02 22:56:31 +0000 |
324 | @@ -0,0 +1,87 @@ |
325 | +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 |
412 | |
413 | === renamed file 'debian/scripts/ltsp-live.png.b64' => 'debian/scripts/ltsp-live.png.b64.moved' |
414 | === added file 'debian/scripts/ltsp-live.xml' |
415 | --- debian/scripts/ltsp-live.xml 1970-01-01 00:00:00 +0000 |
416 | +++ debian/scripts/ltsp-live.xml 2011-09-02 22:56:31 +0000 |
417 | @@ -0,0 +1,115 @@ |
418 | +<?xml version="1.0" encoding="UTF-8"?> |
419 | +<interface> |
420 | + <requires lib="gtk+" version="2.16"/> |
421 | + <object class="GtkWindow" id="winLTSP"> |
422 | + <property name="can_focus">False</property> |
423 | + <property name="title" translatable="yes">LTSP-Live configuration</property> |
424 | + <property name="resizable">False</property> |
425 | + <property name="window_position">center-always</property> |
426 | + <signal name="destroy" handler="on_winLTSP_destroy" swapped="no"/> |
427 | + <child> |
428 | + <object class="GtkVBox" id="vbox1"> |
429 | + <property name="visible">True</property> |
430 | + <property name="can_focus">False</property> |
431 | + <property name="border_width">12</property> |
432 | + <property name="spacing">8</property> |
433 | + <child> |
434 | + <object class="GtkLabel" id="lblWarning"> |
435 | + <property name="visible">True</property> |
436 | + <property name="can_focus">False</property> |
437 | + <property name="xalign">0</property> |
438 | + <property name="label" translatable="yes">Welcome to LTSP Live. |
439 | +Please choose a network interface below and click OK.</property> |
440 | + <property name="use_markup">True</property> |
441 | + </object> |
442 | + <packing> |
443 | + <property name="expand">False</property> |
444 | + <property name="fill">False</property> |
445 | + <property name="position">0</property> |
446 | + </packing> |
447 | + </child> |
448 | + <child> |
449 | + <object class="GtkBox" id="hbox1"> |
450 | + <property name="visible">True</property> |
451 | + <property name="can_focus">False</property> |
452 | + <property name="spacing">8</property> |
453 | + <child> |
454 | + <object class="GtkLabel" id="label1"> |
455 | + <property name="visible">True</property> |
456 | + <property name="can_focus">False</property> |
457 | + <property name="xalign">0</property> |
458 | + <property name="label" translatable="yes">Network devices</property> |
459 | + </object> |
460 | + <packing> |
461 | + <property name="expand">True</property> |
462 | + <property name="fill">True</property> |
463 | + <property name="position">0</property> |
464 | + </packing> |
465 | + </child> |
466 | + <child> |
467 | + <object class="GtkComboBox" id="cmbInterface"> |
468 | + <property name="visible">True</property> |
469 | + <property name="can_focus">False</property> |
470 | + </object> |
471 | + <packing> |
472 | + <property name="expand">False</property> |
473 | + <property name="fill">True</property> |
474 | + <property name="position">1</property> |
475 | + </packing> |
476 | + </child> |
477 | + </object> |
478 | + <packing> |
479 | + <property name="expand">True</property> |
480 | + <property name="fill">True</property> |
481 | + <property name="position">1</property> |
482 | + </packing> |
483 | + </child> |
484 | + <child> |
485 | + <object class="GtkHButtonBox" id="hbuttonbox1"> |
486 | + <property name="visible">True</property> |
487 | + <property name="can_focus">False</property> |
488 | + <property name="spacing">6</property> |
489 | + <property name="layout_style">end</property> |
490 | + <child> |
491 | + <object class="GtkButton" id="btnCancel"> |
492 | + <property name="label">gtk-cancel</property> |
493 | + <property name="visible">True</property> |
494 | + <property name="can_focus">True</property> |
495 | + <property name="receives_default">True</property> |
496 | + <property name="use_action_appearance">False</property> |
497 | + <property name="use_stock">True</property> |
498 | + <signal name="clicked" handler="on_btnCancel_clicked" swapped="no"/> |
499 | + </object> |
500 | + <packing> |
501 | + <property name="expand">False</property> |
502 | + <property name="fill">False</property> |
503 | + <property name="position">0</property> |
504 | + </packing> |
505 | + </child> |
506 | + <child> |
507 | + <object class="GtkButton" id="btnStart"> |
508 | + <property name="label">gtk-ok</property> |
509 | + <property name="visible">True</property> |
510 | + <property name="can_focus">True</property> |
511 | + <property name="receives_default">True</property> |
512 | + <property name="use_action_appearance">False</property> |
513 | + <property name="use_stock">True</property> |
514 | + <signal name="clicked" handler="on_btnStart_clicked" swapped="no"/> |
515 | + </object> |
516 | + <packing> |
517 | + <property name="expand">False</property> |
518 | + <property name="fill">False</property> |
519 | + <property name="position">1</property> |
520 | + </packing> |
521 | + </child> |
522 | + </object> |
523 | + <packing> |
524 | + <property name="expand">False</property> |
525 | + <property name="fill">False</property> |
526 | + <property name="position">3</property> |
527 | + </packing> |
528 | + </child> |
529 | + </object> |
530 | + </child> |
531 | + </object> |
532 | +</interface> |
533 | |
534 | === renamed file 'debian/scripts/ltsp-live.xml' => 'debian/scripts/ltsp-live.xml.moved' |
535 | === added directory 'debian/scripts/po' |
536 | === renamed directory 'debian/scripts/po' => 'debian/scripts/po.moved' |
537 | === added file 'debian/scripts/po/Makefile' |
538 | --- debian/scripts/po/Makefile 1970-01-01 00:00:00 +0000 |
539 | +++ debian/scripts/po/Makefile 2011-09-02 22:56:31 +0000 |
540 | @@ -0,0 +1,35 @@ |
541 | +DOMAIN=ltsp-live |
542 | +POFILES=$(wildcard *.po) |
543 | +MOFILES=$(patsubst %.po,%.mo,$(POFILES)) |
544 | +LINGUAS=$(basename $(POFILES)) |
545 | +POTFILE=$(DOMAIN).pot |
546 | + |
547 | +%.mo: %.po |
548 | + msgfmt --statistics -o $@ $< |
549 | + |
550 | +%.po: $(DOMAIN).pot |
551 | + msgmerge -U $*.po $(DOMAIN).pot |
552 | + |
553 | +$(DOMAIN).pot: |
554 | + pygettext -d $(DOMAIN) -a -D ../ltsp-live |
555 | + xgettext -L glade -o $(DOMAIN).pot -j ../ltsp-live.xml |
556 | + sed "/#, fuzzy/d" -i ltsp-live.pot |
557 | + |
558 | +update-po: |
559 | + -for lang in $(LINGUAS); do\ |
560 | + msgmerge -U $$lang.po $(DOMAIN).pot; \ |
561 | + done |
562 | + |
563 | +install: $(MOFILES) |
564 | + -for lang in $(LINGUAS); do\ |
565 | + install -d $(DESTDIR)/usr/share/locale/$$lang/LC_MESSAGES/; \ |
566 | + install -m 644 $$lang.mo $(DESTDIR)/usr/share/locale/$$lang/LC_MESSAGES/$(DOMAIN).mo; \ |
567 | + done |
568 | + |
569 | +all: update-po $(MOFILES) |
570 | + |
571 | +distclean: clean |
572 | +clean: |
573 | + - rm *.mo *~ |
574 | + |
575 | +.PHONY: update-po check |
576 | |
577 | === added file 'debian/scripts/po/fr.po' |
578 | --- debian/scripts/po/fr.po 1970-01-01 00:00:00 +0000 |
579 | +++ debian/scripts/po/fr.po 2011-09-02 22:56:31 +0000 |
580 | @@ -0,0 +1,65 @@ |
581 | +# SOME DESCRIPTIVE TITLE. |
582 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
583 | +# This file is distributed under the same license as the PACKAGE package. |
584 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
585 | +# |
586 | +msgid "" |
587 | +msgstr "" |
588 | +"Project-Id-Version: PACKAGE VERSION\n" |
589 | +"Report-Msgid-Bugs-To: \n" |
590 | +"POT-Creation-Date: 2011-08-24 16:45-0400\n" |
591 | +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
592 | +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
593 | +"Language-Team: LANGUAGE <LL@li.org>\n" |
594 | +"Language: \n" |
595 | +"MIME-Version: 1.0\n" |
596 | +"Content-Type: text/plain; charset=UTF-8\n" |
597 | +"Content-Transfer-Encoding: 8bit\n" |
598 | + |
599 | +#: ../ltsp-live:40 |
600 | +msgid "Creating new configuration file" |
601 | +msgstr "Création d'un nouveau fichier de configuration" |
602 | + |
603 | +#: ../ltsp-live:42 |
604 | +msgid "Unable to parse config" |
605 | +msgstr "Impossible d'analyser la configuration" |
606 | + |
607 | +#: ../ltsp-live:78 |
608 | +msgid "Failed to enable LTSP: %s" |
609 | +msgstr "Impossible de configurer LTSP: %s" |
610 | + |
611 | +#: ../ltsp-live:92 |
612 | +msgid "Failed to list network cards: %s" |
613 | +msgstr "Impossible de lister les cartes réseaux: %s" |
614 | + |
615 | +#: ../ltsp-live:205 |
616 | +msgid "Unable to find .xml UI file" |
617 | +msgstr "Fichier .xml d'interface graphique introuvable" |
618 | + |
619 | +#: ../ltsp-live:244 |
620 | +msgid "None" |
621 | +msgstr "Aucune" |
622 | + |
623 | +#: ../ltsp-live:282 |
624 | +msgid "" |
625 | +"The selected network interface is already in use.\n" |
626 | +"Are you sure you want to use it?" |
627 | +msgstr "" |
628 | +"La carte réseau séléctionnée est déjà utilisée.\n" |
629 | +"Etes-vous sûr de vouloir l'utiliser?" |
630 | + |
631 | +#: ../ltsp-live.xml:6 |
632 | +msgid "LTSP-Live configuration" |
633 | +msgstr "Configure de LTSP-Live" |
634 | + |
635 | +#: ../ltsp-live.xml:21 |
636 | +msgid "" |
637 | +"Welcome to LTSP Live.\n" |
638 | +"Please choose a network interface below and click OK." |
639 | +msgstr "" |
640 | +"Bienvenue dans LTSP Live.\n" |
641 | +"Veuillez choisir une interface réseau et cliquer OK." |
642 | + |
643 | +#: ../ltsp-live.xml:41 |
644 | +msgid "Network devices" |
645 | +msgstr "Carte réseaux" |
646 | |
647 | === added file 'debian/scripts/po/ltsp-live.pot' |
648 | --- debian/scripts/po/ltsp-live.pot 1970-01-01 00:00:00 +0000 |
649 | +++ debian/scripts/po/ltsp-live.pot 2011-09-02 22:56:31 +0000 |
650 | @@ -0,0 +1,61 @@ |
651 | +# SOME DESCRIPTIVE TITLE. |
652 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER |
653 | +# This file is distributed under the same license as the PACKAGE package. |
654 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. |
655 | +# |
656 | +msgid "" |
657 | +msgstr "" |
658 | +"Project-Id-Version: PACKAGE VERSION\n" |
659 | +"Report-Msgid-Bugs-To: \n" |
660 | +"POT-Creation-Date: 2011-08-24 16:45-0400\n" |
661 | +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
662 | +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
663 | +"Language-Team: LANGUAGE <LL@li.org>\n" |
664 | +"Language: \n" |
665 | +"MIME-Version: 1.0\n" |
666 | +"Content-Type: text/plain; charset=CHARSET\n" |
667 | +"Content-Transfer-Encoding: 8bit\n" |
668 | + |
669 | +#: ../ltsp-live:40 |
670 | +msgid "Creating new configuration file" |
671 | +msgstr "" |
672 | + |
673 | +#: ../ltsp-live:42 |
674 | +msgid "Unable to parse config" |
675 | +msgstr "" |
676 | + |
677 | +#: ../ltsp-live:78 |
678 | +msgid "Failed to enable LTSP: %s" |
679 | +msgstr "" |
680 | + |
681 | +#: ../ltsp-live:92 |
682 | +msgid "Failed to list network cards: %s" |
683 | +msgstr "" |
684 | + |
685 | +#: ../ltsp-live:205 |
686 | +msgid "Unable to find .xml UI file" |
687 | +msgstr "" |
688 | + |
689 | +#: ../ltsp-live:244 |
690 | +msgid "None" |
691 | +msgstr "" |
692 | + |
693 | +#: ../ltsp-live:282 |
694 | +msgid "" |
695 | +"The selected network interface is already in use.\n" |
696 | +"Are you sure you want to use it?" |
697 | +msgstr "" |
698 | + |
699 | +#: ../ltsp-live.xml:6 |
700 | +msgid "LTSP-Live configuration" |
701 | +msgstr "" |
702 | + |
703 | +#: ../ltsp-live.xml:21 |
704 | +msgid "" |
705 | +"Welcome to LTSP Live.\n" |
706 | +"Please choose a network interface below and click OK." |
707 | +msgstr "" |
708 | + |
709 | +#: ../ltsp-live.xml:41 |
710 | +msgid "Network devices" |
711 | +msgstr "" |