debomatic-0.11/AUTHORS0000644000000000000000000000031712153635240012562 0ustar 00000000000000Maintainers: Luca Falavigna Contributors: David Futcher Alessio Treglia Karl Goetz Leo Iannacone debomatic-0.11/COPYING0000644000000000000000000010451412153635240012551 0ustar 00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . debomatic-0.11/ChangeLog0000644000000000000000000000342012153635240013262 0ustar 000000000000000.11 "lazy" (2013-06-05) * Piuparts module * Log verbosity increased * Several bugfixes 0.10 "antwerp" (2012-04-01) * Massive code refactorization * Documentation has been rewritten from scratch * New configuration file format * Local package repository support * Support rebuilding packages available in other distributions * Support for pbuilder/cowbuilder hooks * Support for porter uploads * Support for distribution mappings * PEP-8 syntax 0.9 "bafana" (2011-02-06) * Mailer support * Package rebuild support * Distribution blacklist support * Module blacklist support * Improved support for 3.0 package format * Improved locking mechanism * Several bugfixes 0.8 "daking" (2010-02-04) * Cowbuilder support * Commands files support * More modules available * Internazionalization * Documentation converted to reStructuredText * Several bugfixes 0.7 "Developer Domain" (2009-09-02) * More modules available * Compatibility with newer releases of related software * Several bugfixes 0.6 "bobbo" (2009-01-27) * Modules support * Code reorganization * Several bugfixes 0.5 "soyuzzo" (2008-06-26) * Tarballs are dowloaded automatically by mirror * GPG support for .changes file signatures * Improved documentation * Several bugfixes 0.4 "alcor" (2007-11-29) * Modular design * inotify support * New locking management * Packagequeue * Several bugfixes 0.3 "embrace" (2007-07-28) * Concurrent build processes * New daemonization routine * New documentation * Several bugfixes 0.2.1 (2007-05-26) * Lintian/Linda support * Several bugfixes 0.2 "TOTU" (2007-05-13) * Generic Debian-based distribution support * .changes file support * Simple priority mechanism to provide build order 0.1 "march madness" (2007-03-14) * First stable release * Basic features: automatic package building, chroot updates debomatic-0.11/Debomatic/0000755000000000000000000000000012153635240013400 5ustar 00000000000000debomatic-0.11/debomatic0000755000000000000000000000154412153635240013372 0ustar 00000000000000#!/usr/bin/python # Deb-o-Matic # # Copyright (C) 2007-2013 Luca Falavigna # # Author: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. from Debomatic import debomatic if __name__ == "__main__": debomatic.Debomatic() debomatic-0.11/docs/0000755000000000000000000000000012153635240012441 5ustar 00000000000000debomatic-0.11/etc/0000755000000000000000000000000012153635240012264 5ustar 00000000000000debomatic-0.11/modules/0000755000000000000000000000000012153635240013161 5ustar 00000000000000debomatic-0.11/pbuilderhooks/0000755000000000000000000000000012153635240014363 5ustar 00000000000000debomatic-0.11/po/0000755000000000000000000000000012153635240012127 5ustar 00000000000000debomatic-0.11/setup.py0000644000000000000000000000552412153635240013231 0ustar 00000000000000#!/usr/bin/python # Deb-o-Matic # # Copyright (C) 2007-2013 Luca Falavigna # # Author: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. import os from distutils.core import setup from distutils.command.install_data import install_data from glob import glob from re import sub from subprocess import call for po in glob(os.path.join('po', '*.po')): mo = os.path.join('locale', os.path.splitext(os.path.basename(po))[0], 'LC_MESSAGES/debomatic.mo') if not os.path.isdir(os.path.dirname(mo)): os.makedirs(os.path.dirname(mo)) call(['msgfmt', '-o', mo, po]) class InstallData(install_data): def run(self): call(['make', '-C', 'docs', 'latexpdf']) self.data_files.extend([('share/doc/debomatic', ['docs/_build/latex/Deb-o-Matic.pdf'])]) self.install_files('etc') self.install_files('modules', 'share/debomatic') self.install_files('pbuilderhooks', 'share/debomatic') self.install_files('locale', 'share') install_data.run(self) def install_files(self, rootdir, prefix=''): filelist = [] for root, subFolders, files in os.walk(rootdir): dirlist = [] for file in files: dirlist.append(os.path.join(root, file)) if dirlist: filelist.append((os.path.join(prefix, root), dirlist)) if not prefix: orig_prefix = self.install_dir orig_data_files = self.data_files self.install_dir = sub('/*usr/*$', '/', self.install_dir) self.data_files = filelist install_data.run(self) self.install_dir = orig_prefix self.data_files = orig_data_files else: self.data_files.extend(filelist) setup(name='debomatic', version = '0.11', author = 'Luca Falavigna', author_email = 'dktrkranz@debian.org', description = 'Automatic build machine for Debian source packages', url = 'https://launchpad.net/debomatic/', license = 'GNU GPL', packages = ['Debomatic'], scripts = ['debomatic'], data_files = [('share/man/man1', ['docs/debomatic.1'])], cmdclass = {'install_data': InstallData}) debomatic-0.11/Debomatic/__init__.py0000644000000000000000000000145512153635240015516 0ustar 00000000000000# Deb-o-Matic # # Copyright (C) 2007-2013 Luca Falavigna # # Author: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. from gettext import install install("debomatic") debomatic-0.11/Debomatic/build.py0000644000000000000000000004156312153635240015062 0ustar 00000000000000# Deb-o-Matic # # Copyright (C) 2007-2013 Luca Falavigna # Copyright (C) 2010 Alessio Treglia # # Author: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. import os from ast import literal_eval from hashlib import sha256 from lockfile import FileLock from re import findall, split from subprocess import call, PIPE from time import strftime from urllib2 import Request, urlopen, HTTPError, URLError from gpg import GPG from modules import Module class Build: def __init__(self, opts, log, package=None, dsc=None, debopts=None, distribution=None, origin=None): self.log = log self.e = self.log.t self.w = self.log.w (self.opts, self.rtopts, self.conffile) = opts self.package = package self.dscfile = dsc self.debopts = debopts self.distribution = distribution self.origin = origin self.cmd = None self.distopts = {} self.files = set() self.packagedir = self.opts.get('default', 'packagedir') self.full = False self.uploader = None def acquire_lock(self): self.lockfile = FileLock('/var/run/debomatic.%s' % (os.path.basename(self.configfile))) self.lockfile.acquire() def build(self): if self.full: self.w(_('Full build routine launched'), 3) else: self.w(_('Simple build routine launched'), 3) if self.dscfile: self.files.add(self.dscfile) self.parse_distribution_options() if self.distribution in self.runtime_option('distblacklist'): self.remove_files() self.e(_('Distribution %s is disabled' % self.distribution)) self.fetch_missing_files() try: self.setup_pbuilder() except RuntimeError: self.remove_files() else: self.build_package() def build_package(self): mod = Module((self.opts, self.rtopts, self.conffile)) uploader_email = '' packageversion = os.path.splitext(os.path.basename(self.dscfile))[0] builddir = os.path.join(self.buildpath, 'pool', packageversion) self.w(_('Building %s') % os.path.basename(self.dscfile)) if not os.path.exists(builddir): os.mkdir(builddir) if self.uploader: uploader_email = self.uploader[1] self.w(_('Pre-build hooks launched'), 3) mod.execute_hook('pre_build', {'cfg': self.configfile, 'directory': self.buildpath, 'distribution': self.distribution, 'dsc': self.dscfile, 'opts': self.opts, 'package': packageversion, 'uploader': uploader_email}) self.w(_('Pre-build hooks finished'), 3) builder = self.opts.get('default', 'builder') if builder == 'cowbuilder': base = '--basepath' else: base = '--basetgz' debopts = ' '.join((self.get_build_options(), self.get_compression(), self.get_changelog_versions(), self.get_orig_tarball())) with open(os.devnull, 'w') as fd: try: self.w(_('Launching %s') % builder , 2) call([builder, '--build', '--override-config', base, '%s/%s' % (self.buildpath, self.distribution), '--logfile', '%s/pool/%s/%s.buildlog' % (self.buildpath, packageversion, packageversion), '--buildplace', '%s/build' % self.buildpath, '--buildresult', '%s/pool/%s' % (self.buildpath, packageversion), '--aptcache', '%s/aptcache' % self.buildpath, '--debbuildopts', '%s' % debopts, '--hookdir', self.opts.get('default', 'pbuilderhooks'), '--configfile', self.configfile, self.dscfile], stdout=fd, stderr=fd) except OSError: self.w(_('Unable to launch %s') % builder) self.w(_('Post-build hooks launched'), 3) mod.execute_hook('post_build', {'cfg': self.configfile, 'directory': self.buildpath, 'distribution': self.distribution, 'dsc': self.dscfile, 'opts': self.opts, 'package': packageversion, 'uploader': uploader_email}) self.w(_('Post-build hooks finished'), 3) self.remove_files() self.w(_('Build of %s complete') % os.path.basename(self.dscfile)) def fetch_missing_files(self): filename = self.dscfile if self.dscfile else self.package packagename = os.path.basename(filename).split('_')[0] for filename in self.files: if not self.dscfile: if filename.endswith('.dsc'): self.dscfile = filename break if not self.dscfile: self.remove_files() self.e(_('Bad .changes file: %s') % self.package) with open(self.dscfile, 'r') as fd: data = fd.read() for entry in findall('\s\w{32}\s\d+\s(\S+)', data): if not os.path.exists(os.path.join(self.packagedir, entry)): for component in self.distopts['ocomponents'].split(): request = Request('%s/pool/%s/%s/%s/%s' % (self.distopts['origin'], component, findall('^lib\S|^\S', packagename)[0], packagename, entry)) try: self.w(_('Downloading missing %s' % entry), 2) data = urlopen(request).read() break except (HTTPError, URLError): data = None if data: with open(os.path.join(self.packagedir, entry), 'w') as e: e.write(data) if not (os.path.join(self.packagedir, entry)) in self.files: self.files.add(os.path.join(self.packagedir, entry)) def get_build_options(self): if self.debopts: return '-B -m"%s"' % self.debopts else: return '' def get_changelog_versions(self): version = '' if self.full: with open(os.path.join(self.packagedir, self.package), 'r') as fd: data = fd.read() try: version = '-v%s~' % findall(' \S+ \((\S+)\) \S+; ', data)[-1] except IndexError: pass return version def get_compression(self): compression = '' ext = {'.gz': 'gzip', '.bz2': 'bzip2', '.xz': 'xz'} for pkgfile in self.files: if os.path.exists(pkgfile): if findall('(.*\.debian\..*)', pkgfile): try: compression = '-Z%s' % \ ext[os.path.splitext(pkgfile)[1]] except IndexError: pass return compression def get_orig_tarball(self): sa = '' if self.full: with open(self.packagepath, 'r') as fd: data = fd.read() for file in findall('\s\w{32}\s\d+\s\S+\s\S+\s(.*)', data): if '.orig.' in file: sa = '-sa' break return sa def map_distribution(self): self.rtopts.read(self.conffile) if self.rtopts.has_option('runtime', 'mapper'): try: mapper = literal_eval(self.rtopts.get('runtime', 'mapper')) except SyntaxError: pass else: if isinstance(mapper, dict): if self.distribution in mapper: self.w(_('%(mapped)s mapped as %(mapper)s') % {'mapped': self.distribution, 'mapper': mapper[self.distribution]}, 3) self.distribution = mapper[self.distribution] def needs_update(self): if not os.path.exists(os.path.join(self.buildpath, 'gpg')): os.mkdir(os.path.join(self.buildpath, 'gpg')) gpgfile = os.path.join(self.buildpath, 'gpg', self.distopts['distribution']) if not os.path.exists(gpgfile): self.cmd = 'create' self.w(_('Chroot must be created'), 2) return if self.distribution in self.runtime_option('alwaysupdate'): self.cmd = 'update' self.w(_('Chroot must be updated'), 2) return uri = '%s/dists/%s/Release.gpg' % (self.distopts['mirror'], self.distopts['distribution']) try: remote = urlopen(uri).read() except (HTTPError, URLError): self.w(_('Unable to fetch %s') % uri) self.cmd = update self.w(_('Chroot must be updated'), 2) return remote_sha = sha256() gpgfile_sha = sha256() remote_sha.update(remote) try: with open(gpgfile, 'r') as fd: gpgfile_sha.update(fd.read()) except OSError: self.cmd = 'create' self.w(_('Chroot must be created'), 2) return if remote_sha.digest() != gpgfile_sha.digest(): self.cmd = 'update' self.w(_('Chroot must be updated'), 2) def parse_distribution_options(self): conf = {'components': ('[^#]?COMPONENTS="?(.*[^"])"?\n', 'COMPONENTS'), 'debootstrap': ('[^#]?DEBOOTSTRAP="?(.*[^"])"?\n', 'DEBOOTSTRAP'), 'distribution': ('[^#]?DISTRIBUTION="?(.*[^"])"?\n', 'DISTRIBUTION'), 'mirror': ('[^#]?MIRRORSITE="?(.*[^"])"?\n', 'MIRRORSITE'), 'origin': ('[^#]?MIRRORSITE="?(.*[^"])"?\n', 'MIRRORSITE'), 'ocomponents': ('[^#]?COMPONENTS="?(.*[^"])"?\n', 'COMPONENTS')} if self.full: try: with open(self.packagepath, 'r') as fd: data = fd.read() except IOError: self.e(_('Unable to open %s') % self.packagepath) try: distro = findall('Distribution:\s+(\S+)', data)[0] except IndexError: self.e(_('Bad .changes file: %s') % self.packagepath) self.distribution = distro.lower() self.map_distribution() self.buildpath = os.path.join(self.packagedir, self.distribution) self.configfile = os.path.join(self.opts.get('default', 'configdir'), self.distribution) try: with open(self.configfile) as fd: data = fd.read() except IOError: self.remove_files() self.log.e(_('Unable to open %s') % self.configfile) for elem in conf.keys(): try: if not elem in self.distopts or not self.distopts[elem]: self.distopts[elem] = findall(conf[elem][0], data)[0] except IndexError: self.e(_('Please set %(parm)s in %s(conf)s') % {'parm': conf[elem][0], 'conf': conf}) if self.origin: originconfig = os.path.join(self.opts.get('default', 'configdir'), self.origin) try: with open(originconfig) as fd: data = fd.read() except IOError: self.log.e(_('Unable to open %s') % originconfig) for elem in ('origin', 'ocomponents'): try: self.distopts[elem] = findall(conf[elem][0], data)[0] except IndexError: self.e(_('Please set %(parm)s in %s(conf)s') % {'parm': conf[elem][0], 'conf': conf}) else: self.origin = self.distribution def prepare_pbuilder(self): for d in ('aptcache', 'build', 'logs', 'pool'): if not os.path.exists(os.path.join(self.buildpath, d)): os.mkdir(os.path.join(self.buildpath, d)) for f in ('Packages.gz', 'Release'): repo_file = os.path.join(self.buildpath, 'pool', f) if not os.path.exists(repo_file): with open(os.path.splitext(repo_file)[0], 'w') as fd: pass try: call(['gzip', '-9', '-f', os.path.join(self.buildpath, 'pool', 'Packages')], stderr=PIPE) except OSError: self.w(_('Unable to launch %s') % 'gzip') builder = self.opts.get('default', 'builder') if builder == 'cowbuilder': base = '--basepath' else: base = '--basetgz' with open(os.devnull, 'w') as fd: try: self.w(_('Launching %(builder)s %(cmd)s') % {'builder': builder, 'cmd': self.cmd} , 2) if call([builder, '--%s' % self.cmd, '--override-config', base, '%s/%s' % (self.buildpath, self.distribution), '--buildplace', '%s/build' % self.buildpath, '--aptcache', '%s/aptcache' % self.buildpath, '--logfile', '%s/logs/%s.%s' % (self.buildpath, self.cmd, strftime('%Y%m%d_%H%M%S')), '--configfile', '%s' % self.configfile], stdout=fd, stderr=fd): self.release_lock() self.e(_('%(builder)s %(cmd)s failed') % {'builder': builder, 'cmd': self.cmd}) except OSError: self.release_lock() self.e(_('Unable to launch %s') % builder) def release_lock(self): self.lockfile.release() def remove_files(self): for pkgfile in self.files: if os.path.exists(pkgfile): os.remove(pkgfile) def runtime_option(self, option): self.rtopts.read(self.conffile) if self.rtopts.has_option('runtime', option): return self.rtopts.get('runtime', option).split() else: return () def setup_pbuilder(self): if not os.path.exists(os.path.join(self.buildpath)): os.mkdir(os.path.join(self.buildpath)) self.acquire_lock() self.needs_update() if self.cmd: self.prepare_pbuilder() gpgfile = os.path.join(self.buildpath, 'gpg', self.distopts['distribution']) uri = '%s/dists/%s/Release.gpg' % (self.distopts['mirror'], self.distopts['distribution']) try: remote = urlopen(uri).read() except (HTTPError, URLError): self.release_lock() self.e(_('Unable to fetch %s') % uri) with open(gpgfile, 'w') as fd: fd.write(remote) self.release_lock() class FullBuild(Build): def run(self): self.full = True self.packagepath = os.path.join(self.packagedir, self.package) self.files.add(self.packagepath) self.w(_('Processing %s') % self.package) try: with open(self.packagepath, 'r') as fd: data = fd.read() except IOError: self.e(_('Unable to open %s') % self.packagepath) try: for entry in findall('\s\w{32}\s\d+\s\S+\s\S+\s(.*)', data): self.files.add(os.path.join(self.packagedir, entry)) except IndexError: self.e(_('Bad .changes file: %s') % self.packagepath) gpg = GPG(self.opts, self.packagepath) if gpg.gpg: if gpg.sig: self.uploader = gpg.sig else: self.remove_files() self.e(gpg.error) self.build() debomatic-0.11/Debomatic/commands.py0000644000000000000000000001532012153635240015554 0ustar 00000000000000# Deb-o-Matic # # Copyright (C) 2007-2013 Luca Falavigna # # Author: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. import os from ast import literal_eval from glob import glob from re import findall from urllib2 import Request, urlopen, HTTPError, URLError from build import Build from gpg import GPG class Command(): def __init__(self, opts, log, pool, commandfile): self.log = log self.w = self.log.w (self.opts, self.rtopts, self.conffile) = opts self.pool = pool self.configdir = self.opts.get('default', 'configdir') self.packagedir = self.opts.get('default', 'packagedir') self.cmdfile = os.path.join(self.packagedir, commandfile) def fetch_dsc(self): parms = {} self.data = None conf = {'mirror': ('[^#]?MIRRORSITE="?(.*[^"])"?\n', 'MIRRORSITE'), 'components': ('[^#]?COMPONENTS="?(.*[^"])"?\n', 'COMPONENTS')} try: with open(self.originconf, 'r') as fd: data = fd.read() except IOError: self.w(_('Unable to open %s') % self.originconf) return for elem in conf.keys(): try: parms[elem] = findall(conf[elem][0], data)[0] except IndexError: self.w(_('Please set %(parm)s in %s(conf)s') % \ {'parm': conf[elem][0], 'conf': self.originconf}) return for component in parms['components'].split(): request = Request('%s/pool/%s/%s/%s/%s' % (parms['mirror'], component, findall('^lib\S|^\S', self.package)[0], self.package, self.dscname)) try: self.w(_('Downloading missing %s' % self.dscname), 2) self.data = urlopen(request).read() break except (HTTPError, URLError): self.w(_('Unable to fetch %s') % \ '_'.join((self.package, self.version))) def map_distribution(self): self.rtopts.read(self.conffile) if self.rtopts.has_option('runtime', 'mapper'): try: mapper = literal_eval(self.rtopts.get('runtime', 'mapper')) except SyntaxError: pass else: if isinstance(mapper, dict): if self.target in mapper: self.w(_('%(mapped)s mapped as %(mapper)s') % {'mapped': self.target, 'mapper': mapper[self.target]}, 3) self.target = mapper[self.target] if self.origin in mapper: self.w(_('%(mapped)s mapped as %(mapper)s') % {'mapped': self.origin, 'mapper': mapper[self.origin]}, 3) self.origin = mapper[self.origin] def process_command(self): self.w(_('Processing %s') % os.path.basename(self.cmdfile)) gpg = GPG(self.opts, self.cmdfile) if gpg.gpg: if not gpg.sig: os.remove(self.cmdfile) self.w(gpg.error) return with open(self.cmdfile, 'r') as fd: cmd = fd.read() os.remove(self.cmdfile) cmd_rm = findall('\s?rm\s+(.*)', cmd) cmd_rebuild = findall('\s?rebuild\s+(\S+)_(\S+) (\S+) ?(\S*)', cmd) cmd_porter = findall('\s?porter\s+(\S+)_(\S+) (\S+) (.*)', cmd) if cmd_rm: self.process_rm(cmd_rm) if cmd_porter: self.process_porter(cmd_porter) if cmd_rebuild: self.process_rebuild(cmd_rebuild) def process_porter(self, packages): self.w(_('Performing a porter build'), 3) for package in packages: self.package = package[0] self.version = package[1] self.dscname = '%s_%s.dsc' % (self.package, self.version) self.target = package[2] self.origin = None self.debopts = package[3] self.map_distribution() self.originconf = os.path.join(self.configdir, self.target) self.fetch_dsc() if self.data: dsc = os.path.join(self.packagedir, self.dscname) with open(dsc, 'w') as fd: fd.write(self.data) b = Build((self.opts, self.rtopts, self.conffile), self.log, dsc=dsc, distribution=self.target, debopts=self.debopts) if self.pool.add_task(b.build, dsc): self.w(_('Thread for %s scheduled') % os.path.basename(dsc), 3) def process_rebuild(self, packages): self.w(_('Performing a package rebuild'), 3) for package in packages: self.package = package[0] self.version = package[1] self.dscname = '%s_%s.dsc' % (self.package, self.version) self.target = package[2] self.origin = package[3] if package[3] else package[2] self.map_distribution() self.originconf = os.path.join(self.configdir, self.origin) self.fetch_dsc() if self.data: dsc = os.path.join(self.packagedir, self.dscname) with open(dsc, 'w') as fd: fd.write(self.data) b = Build((self.opts, self.rtopts, self.conffile), self.log, dsc=dsc, distribution=self.target, origin=self.origin) if self.pool.add_task(b.build, dsc): self.w(_('Thread for %s scheduled') % os.path.basename(dsc), 3) def process_rm(self, filesets): self.w(_('Removing files'), 3) for files in filesets: for pattern in files.split(): pattern = os.path.basename(pattern) for absfile in glob(os.path.join(self.packagedir, pattern)): self.w(_('Removing %s' % pattern), 2) os.remove(absfile) debomatic-0.11/Debomatic/debomatic.py0000644000000000000000000001736212153635240015712 0ustar 00000000000000# Deb-o-Matic # # Copyright (C) 2007-2013 Luca Falavigna # # Author: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. import os from ConfigParser import ConfigParser from argparse import ArgumentParser from datetime import datetime from daemon import DaemonContext, pidlockfile from signal import signal, SIGINT, SIGTERM from sys import argv, stderr from time import sleep from build import FullBuild from commands import Command from modules import Module from threadpool import ThreadPool class Debomatic: def __init__(self): self.daemon = True self.log = Output() self.e = self.log.e self.w = self.log.w self.conffile = None self.configvers = '011a' self.lockfilepath = '/var/run/debomatic' self.lockfile = pidlockfile.PIDLockFile(self.lockfilepath) self.opts = ConfigParser() self.rtopts = ConfigParser() parser = ArgumentParser() parser.add_argument('-c', '--configfile', metavar='file', type=str, nargs=1, help='configuration file for Deb-o-Matic') parser.add_argument('-n', '--no-daemon', action='store_true', help='do not launch Deb-o-Matic in daemon mode') parser.add_argument('-q', '--quit-process', action='store_true', help='terminate Deb-o-Matic processes') args = parser.parse_args() if os.getuid(): self.e(_('You must run deb-o-matic as root')) if args.configfile: self.conffile = args.configfile[0] if args.no_daemon: self.daemon = False if args.quit_process: self.quit_process() if self.lockfile.is_locked(): self.e(_('Another instance is running. Aborting')) self.default_options() self.log.logverbosity = self.opts.getint('default', 'logverbosity') self.mod_sys = Module((self.opts, self.rtopts, self.conffile)) self.w(_('Startup hooks launched'), 3) self.mod_sys.execute_hook('on_start', {}) self.w(_('Startup hooks finished'), 3) self.packagedir = self.opts.get('default', 'packagedir') signal(SIGINT, self.quit) signal(SIGTERM, self.quit) if self.daemon: with open(self.opts.get('default', 'logfile'), 'a') as fd: with DaemonContext(pidfile=self.lockfile, stdout=fd, stderr=fd, signal_map={SIGTERM: self.quit}): self.w(_('Entering daemon mode'), 3) self.launcher() else: self.lockfile.acquire() self.launcher() def default_options(self): defaultoptions = ('builder', 'packagedir', 'configdir', 'maxbuilds', 'pbuilderhooks', 'inotify', 'sleep', 'logfile', 'logverbosity') if not self.conffile: self.e(_('Configuration file has not been specified')) if not os.path.exists(self.conffile): self.e(_('Configuration file %s does not exist') % self.conffile) self.opts.read(self.conffile) if not self.opts.has_option('internals', 'configversion') or not \ self.opts.get('internals', 'configversion') == self.configvers: self.e(_('Configuration file is not at version %s') % self.configvers) for opt in defaultoptions: if not self.opts.has_option('default', opt) or not \ self.opts.get('default', opt): self.e(_('Set "%(opt)s" in %(conffile)s') % {'opt': opt, 'conffile': self.conffile}) def launcher(self): self.pool = ThreadPool(self.opts.getint('default', 'maxbuilds')) self.commandpool = ThreadPool(1) self.queue_files() if self.opts.getint('default', 'inotify'): try: self.launcher_inotify() except ImportError: self.launcher_timer() else: self.launcher_timer() def launcher_inotify(self): import pyinotify class PE(pyinotify.ProcessEvent, Debomatic): def __init__(self, parent): self.parent = parent def process_IN_CLOSE_WRITE(self, event): if (event.name.endswith('.changes') or event.name.endswith('commands')): self.parent.queue_files([event.name]) wm = pyinotify.WatchManager() notifier = pyinotify.Notifier(wm, PE(self)) wm.add_watch(self.packagedir, pyinotify.IN_CLOSE_WRITE) self.w(_('Inotify loop started'), 3) notifier.loop() def launcher_timer(self): self.w(_('Timer loop started'), 3) while True: sleep(self.opts.getint('default', 'sleep')) self.queue_files() def queue_files(self, filelist=None): if not filelist: try: filelist = os.listdir(self.packagedir) except OSError: self.lockfile.release() self.e(_('Unable to access %s directory') % self.packagedir) for filename in filelist: if filename.endswith('.changes'): b = FullBuild((self.opts, self.rtopts, self.conffile), self.log, package=filename) if self.pool.add_task(b.run, filename): self.w(_('Thread for %s scheduled') % filename, 3) elif filename.endswith('.commands'): c = Command((self.opts, self.rtopts, self.conffile), self.log, self.pool, filename) if self.commandpool.add_task(c.process_command, filename): self.w(_('Thread for %s scheduled') % filename, 3) def quit(self, signum, frame): self.w(_('Waiting for threads to complete...')) self.commandpool.wait_completion() self.pool.wait_completion() self.w(_('Shutdown hooks launched'), 3) self.mod_sys.execute_hook('on_quit', {}) self.w(_('Shutdown hooks finished'), 3) if not self.daemon: self.lockfile.release() exit() def quit_process(self): lockfile = pidlockfile.PIDLockFile('/var/run/debomatic') if self.lockfile.is_locked(): try: pid = pidlockfile.read_pid_from_pidfile(self.lockfilepath) try: os.kill(pid, 0) except OSError: pid = None except pidlockfile.PIDFileParseError: pid = None if pid: self.w(_('Waiting for threads to complete...')) os.kill(pid, SIGTERM) lockfile.acquire() lockfile.release() else: lockfile.break_lock() self.w(_('Obsolete lock removed')) exit() class Output: def __init__(self): self.logverbosity = 1 def w(self, msg, level=1): if self.logverbosity >= level: stderr.write('%s: %s\n' % (datetime.now().ctime(), msg)) def e(self, msg): self.w(msg) exit() def t(self, msg): self.w(msg) raise RuntimeError debomatic-0.11/Debomatic/gpg.py0000644000000000000000000000422512153635240014532 0ustar 00000000000000# Deb-o-Matic # # Copyright (C) 2007-2013 Luca Falavigna # # Author: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. import os from re import findall, DOTALL from subprocess import Popen, PIPE class GPG: def __init__(self, opts, filename): self.opts = opts self.filename = filename self.error = None if self.opts.has_option('gpg', 'gpg'): self.gpg = self.opts.getint('gpg', 'gpg') else: self.gpg = False self.sig = None if self.gpg: self.check_signature() if self.sig: self.strip_signature() def check_signature(self): if self.opts.has_option('gpg', 'keyring'): self.keyring = self.opts.get('gpg', 'keyring') if not os.path.isfile(self.keyring): self.keyring = None self.error = _('Keyring not found') return gpgresult = Popen(['gpgv', '--keyring', self.keyring, self.filename], stderr=PIPE).communicate()[1] signature = findall('Good signature from "(.*) <(.*)>.*"', gpgresult) if signature: self.sig = signature[0] else: self.error = _('No valid signatures found') def strip_signature(self): with open(self.filename, 'r') as fd: data = fd.read() with open(self.filename, 'w') as fd: try: fd.write(findall('\n\n(.*?)\n\n?-', data, DOTALL)[0]) except IndexError: pass debomatic-0.11/Debomatic/modules.py0000644000000000000000000000544512153635240015432 0ustar 00000000000000# Deb-o-Matic # # Copyright (C) 2008-2009 David Futcher # Copyright (C) 2012-2013 Luca Falavigna # # Author: David Futcher # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. import os from sys import path class Module(): def __init__(self, opts): (self.opts, self.rtopts, self.conffile) = opts self.use_modules = True self.modules_list = [] if not self.opts.has_option('modules', 'modules'): self.use_modules = False elif self.opts.get('modules', 'modules') == "0": self.use_modules = False if self.opts.has_option('modules', 'modulespath'): self.mod_path = self.opts.get('modules', 'modulespath') path.append(self.mod_path) else: self.mod_path = '' try: self.modules_list = os.listdir(self.mod_path) except OSError: self.use_modules = False if len(self.modules_list) == 0: self.use_modules = False if self.use_modules: self.instances = {} for module in self.modules_list: module_split = module.split(".")[:-1] module = "" for i in module_split: module += i try: exec 'from %s import DebomaticModule_%s' % \ (module, module) exec 'self.instances["%s"] = DebomaticModule_%s()' % \ (module, module) except NameError: pass def execute_hook(self, hook, args): if self.use_modules: self.rtopts.read(self.conffile) if self.rtopts.has_option('runtime', 'modulesblacklist'): blist_mods = self.rtopts.get('runtime', 'modulesblacklist') blist_mods = blist_mods.split() else: blist_mods = [] modules = [ i for i in self.instances.keys() if i not in blist_mods ] modules.sort() for module in modules: try: exec 'self.instances["%s"].%s(args)' % (module, hook) except AttributeError: pass debomatic-0.11/Debomatic/threadpool.py0000644000000000000000000000355612153635240016124 0ustar 00000000000000# Deb-o-Matic # # Copyright (C) 2011-2013 Luca Falavigna # # Author: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. from os import setpgrp from Queue import Queue from threading import Thread from traceback import print_exc class Job(Thread): def __init__(self, tasks): Thread.__init__(self) self.tasks = tasks self.daemon = True self.start() def run(self): while True: func, args, kargs, jobs = self.tasks.get() setpgrp() try: func() except (RuntimeError, SystemExit): pass except: print_exc() try: jobs.remove(args) except KeyError: pass self.tasks.task_done() class ThreadPool: def __init__(self, num_threads): self.jobs = set() self.tasks = Queue(num_threads) for i in range(num_threads): Job(self.tasks) def add_task(self, func, *args, **kargs): if not args in self.jobs: self.jobs.add(args) self.tasks.put((func, args, kargs, self.jobs)) return True return False def wait_completion(self): self.tasks.join() debomatic-0.11/docs/Makefile0000644000000000000000000000350112153635240014100 0ustar 00000000000000#!/usr/bin/make # Copyright (C) 2012-2013 Luca Falavigna # # Author: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean latex latexpdf help: @echo "Please use \`make ' where is one of" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" clean: -rm -rf $(BUILDDIR) latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." debomatic-0.11/docs/conf.py0000644000000000000000000000276112153635240013746 0ustar 00000000000000# -*- coding: utf-8 -*- # # Copyright (C) 2012-2013 Luca Falavigna # # Author: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Deb-o-Matic documentation build configuration file import os import sys extensions = [] templates_path = ['_templates'] source_suffix = '.rst' master_doc = 'index' project = u'Deb-o-Matic' copyright = u'2007-2013, Luca Falavigna' version = '0.11' release = '0.11' exclude_patterns = ['_build'] pygments_style = 'sphinx' html_theme = 'default' html_static_path = ['_static'] html_use_index = True htmlhelp_basename = 'Deb-o-Maticdoc' latex_documents = [ ('index', 'Deb-o-Matic.tex', u'Deb-o-Matic Documentation', u'Luca Falavigna', 'manual')] latex_elements = { 'classoptions': ',oneside', 'babel': '\\usepackage[english]{babel}'} man_pages = [ ('index', 'deb-o-matic', u'Deb-o-Matic Documentation', [u'Luca Falavigna'], 1)] debomatic-0.11/docs/debomatic.10000644000000000000000000000267012153635240014457 0ustar 00000000000000.TH debomatic 1 2012-01-29 "debomatic" .SH NAME debomatic \- Automatic build machine for Debian source packages .SH SYNOPSIS .B debomatic \fB-c|--config\fR \fIconffile\fR [\fB\-n|--nodaemon\fR] .SH DESCRIPTION This tool provides a simple build machine for Debian source packages. It is designed to be very simple to use and self-sufficient during package build process and chroot updates. It support almost every Debian-based distribution, given its repositories follow standard Debian repository structure. .PP pbuilder and an active Internet connection (broadband is suggested) are required in order for debomatic to work properly. .PP You have to run it using root privileges because of pbuilder infrastructure. .SH OPTIONS .TP .B -c, --config\fR \fIconffile\fR You have to specify a configuration file for debomatic to work. See debomatic.conf(5) for further details. .TP .B -n, --nodaemon By default, debomatic runs in full daemon mode and it detaches itself from its parent. If you do not want this, you can use this option and debomatic will not detach from parent process. .TP .B -q, --quit-process Terminate running debomatic instance or remove obsolete locks left. .SH COPYRIGHT This manual page is Copyright 2007-2013 Luca Falavigna . Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 3 or any later version published by the Free Software Foundation. debomatic-0.11/docs/index.rst0000644000000000000000000005564212153635240014316 0ustar 00000000000000=========== Deb-o-Matic =========== What is Deb-o-Matic? ==================== Deb-o-Matic is an easy to use utility to build Debian source packages, meant to help developers to automate the building of their packages with a tool that requires limited user interaction and a simple configuration. It provides some useful features such as automatic chroot update, rebuild of source packages, post-build checks, and much more. It is also extendable with modules that are loaded and executed during the build phases. Why Deb-o-Matic? ---------------- When the author started to contribute to the Debian and Ubuntu development, he was running a 10-year-old PC and had a poor network connectivity. Downloading lots of packages had always been a nightmare, `Canonical's PPAs`_ were always busy compiling other packages because of the limited resources invested at the time, and `wanna-build`_ was (and still is) too complex to set up for relatively simple workflows. A brand new software was created to help building source packages to avoid the burden of the compilation, without wasting too much time configuring complex softwares to work. Deb-o-Matic was born! A group of Debian and Ubuntu developers started to use it as their primary build machine to avoid playing with pbuilder and long builds. Some of them still use Deb-o-Matic to build their packages. Over time, Deb-o-Matic has been used by some FLOSS projects too. For example, Scilab Enterprises uses Deb-o-Matic to build Scilab in a transparent and automatic way. Every 5 minutes, a cronjob checks if any new commit happened and start a built process through Deb-o-Matic. Requisites ========== Build and installation requirements ----------------------------------- In order to build and install Deb-o-Matic, the following packages are required: * python (>= 2.7) The following packages are required to install documentation and translations: * python-sphinx * texlive-latex-base * texlive-latex-recommended * texlive-fonts-recommended * texlive-latex-extra * gettext Runtime requirements -------------------- In order to be able to run Deb-o-Matic, the following packages are required: * python (>= 2.7) * pbuilder or cowbuilder * debootstrap or cdebootstrap * python-daemon * python-lockfile To enable additional features, you may want to install these packages: * python-pyinotify (>= 0.8.6) * gpgv * lintian * piuparts (>= 0.45) * debian-archive-keyring and/or ubuntu-keyring An Internet connection is also required, broadband access is recommended because underlying programs will fetch a lot of megabytes from remote locations in order to create the chroots or satisfy build dependencies. Installation ============ Installation from Debian/Ubuntu repository ------------------------------------------ Deb-o-Matic is available in Debian and Ubuntu repositories, so you can launch the following command to install Deb-o-Matic on your system: *sudo apt-get install debomatic* Depending on your Debian or Ubuntu release, you could not have the latest version. It is usually suggested to use the latest one to obtain new features and bugfixes. You may want to check `Deb-o-Matic home page`_ from time to time to see whether a new release is available. Installation of the release tarball ----------------------------------- If the version in Debian/Ubuntu repositories is not the one you are looking for, you can download a release tarball from `Deb-o-Matic download page`_. Unpack the release tarball, enter the new created directory, and launch the following command: *sudo python setup.py install* If everything went smoothly, you should be able to launch debomatic from your terminal's command line. Installation of Bazaar snapshots -------------------------------- If you want to test bleeding-edge features, or want to be always up-to-date with latest and greatest Deb-o-Matic versions, you can download development snapshots directly from upstream `Bazaar`_ repository. Open a terminal and launch the following command: *bzr branch lp:debomatic* You can follow the instructions described in the `previous section`_ to install Deb-o-Matic on your system. Configuration ============= Configuration file ------------------ Deb-o-Matic configuration file is the most important file within Deb-o-Matic infrastructure. It defines almost every option needed by Deb-o-Matic. It is divided into five sections: ``default``, which contains the mandatory options needed for Deb-o-Matic to work; ``runtime``, which contains the options related to parameters which can be modified at runtime; ``gpg``, which contains the options related to gpg signature checking; ``modules``, which contains the options related to module handling; ``internals``, which contains options related to Deb-o-Matic implementation details. .. CAUTION:: Configuration file must be formatted with `Python ConfigParser`_ syntax. default section ............... These options are mandatory, Deb-o-Matic refuses to start if one of these options is missing from configuration file. Also, Deb-o-Matic needs to be restarted to pick any change to one of these options. * ``builder`` This option indicates which builder tool is required to perform building of the source packages. Deb-o-Matic currently supports pbuilder and cowbuilder. cowbuilder is usually faster, but requires more disk space for its chroots. Suggested value: ``pbuilder`` .. CAUTION:: Make sure chosen builder is installed on your system, otherwise Deb-o-Matic will not be able to create chroots and build packages. * ``packagedir`` This option indicates the directory where Deb-o-Matic expects to find source packages to build, and in which it will save chroots, build logs, and resulting packages. Suggested value: ``/incoming`` .. CAUTION:: Make sure chosen directory exists before launching Deb-o-Matic, otherwise it will refuse to start. * ``configdir`` This option indicates the directory where distribution configuration files are stored. More on those files will be discussed in the `Distribution files section`_. Suggested value: ``/etc/debomatic/distributions`` .. CAUTION:: Make sure chosen directory exists before launching Deb-o-Matic, otherwise it will not be able to build any package. * ``pbuilderhooks`` This option indicates the directory where pbuilder hooks are stored. Hooks are executable scripts which are processed by pbuilder and cowbuilder during various build phases. Please refer to the pbuilder (8) man page for additional details about pbuilder hooks. At the moment, Deb-o-Matic provides scripts to disable Internet connection within the chroot on Linux systems to avoid accessing remote resources during the build phase. Suggested value: ``/usr/share/debomatic/pbuilderhooks`` .. CAUTION:: In order to disable pbuilder hooks, you have to declare an existing, empty directory in pbuilderhooks option. * ``maxbuilds`` This option indicates the maximum concurrent builds that can be executed. If more build tasks are scheduled, they will be blocked until a slot becomes available again. More concurrent builds require more CPU cycles and disk space, so you may want to try different configurations to fit your needs. ``maxbuilds`` takes an integer as parameter. Suggested value: ``3`` * ``inotify`` This option indicates whether to enable inotify support or not. inotify will notify Deb-o-Matic about the availability of a new task, and will immediately start a new thread according to the requested task. If ``python-pyinotify`` is not available, Deb-o-Matic will fall back to a timer-based method. ``inotify`` takes 1 or 0 as parameter. Suggested value: ``1`` * ``sleep`` This option indicates the number of seconds between two consecutive checks for new packages or commands to process. This option is only useful if inotify support is disabled or is not available. ``sleep`` takes an integer as parameter. Suggested value: ``60`` * ``logfile`` This option indicates which file will be used to store information and warning messages issued by Deb-o-Matic during its execution. Suggested value: ``/var/log/debomatic.log`` * ``logverbosity`` This option indicates which kind of debug messages will be displayed. There are three levels: level 1 is for standard information, level 2 also includes chroot information, level 3 is for debugging information. Set this value to 0 to disable logging completely. Suggested value: ``1`` gpg section ........... These options are not mandatory, Deb-o-Matic will check whether they are defined in the configuration file before trying to use related features. Also, Deb-o-Matic needs to be restarted to pick any change to one of these options. ``gnupg`` package is required for these options to be effective. * ``gpg`` This option indicates whether to enable signature checking support or not. If enabled, Deb-o-Matic will delete unsigned files and files with signatures not available in its keyring. ``gpg`` takes 1 or 0 as parameter. Suggested value: ``0`` * ``keyring`` This option indicates the gnupg keyring file in which Deb-o-Matic will look for allowed and identified GPG signatures. Suggested value: ``/etc/debomatic/debomatic.gpg`` .. CAUTION:: Make sure keyring file exists and is populated with allowed signatures if GPG support is enabled, otherwise no tasks will be processed. modules section ............... These options are not mandatory, Deb-o-Matic will check whether they are defined in the configuration file before trying to use related features. Also, Deb-o-Matic needs to be restarted to pick any change to one of these options. More on modules handling will be discussed in the `Modules section`_. * ``modules`` This option indicates whether to enable module loading or not. Suggested value: ``1`` * ``modulespath`` This option indicates the directory where Deb-o-Matic expects to find modules. Suggested value: ``/usr/share/debomatic/modules`` runtime section ............... These options are not mandatory, Deb-o-Matic will check whether they are defined in the configuration file before trying to use related features. As the section name suggests, these options can be adjusted at runtime, Deb-o-Matic will pick the updated value during the build process. * ``alwaysupdate`` This option indicates a list of distributions for which their chroots have to be updated before every build, even if repository's Release file has not changed. Option must define a space-separated distribution names matching the ones listed in the `Distribution files section`_. Suggested value: ``unstable experimental raring`` * ``distblacklist`` This option indicates a list of distributions that are not allowed to accept new packages to build. Files targeted for a blacklisted distribution will be automatically deleted. Option must define a space-separated distribution names matching the ones listed in the `Distribution files section`_. Suggested value: ``(blank field)`` * ``modulesblacklist`` This option indicates a list of modules that are not allowed to be executed during build process. Option must define a space-separated module names matching the ones listed in the `Modules section`_. More on module handling will be discussed in the `Modules section`_. Suggested value: ``Lintian Mailer Piuparts`` * ``mapper`` This option indicates a list of distributions that, even if they are not defined by a distribution file (see `Distribution files section`_), can build packages on top of another distribution. This is particularly useful to indicate distribution aliases (such as ``sid <=> unstable``) or subsets (such as ``oneiric-proposed => oneiric``). Option must define a `Python dictionary`_ where keys are the distributions indicated by the packages, and values are the distributions on which build packages upon. Suggested value: ``{'sid': 'unstable'}`` internals section ................. These options are mandatory, Deb-o-Matic refuses to start if one of these options is missing from configuration file. Also, these options should not be modified, and must follow this guide thoroughly. * ``configversion`` This option indicates which version of the configuration file Deb-o-Matic expects to find. If it does not match the one needed by Deb-o-Matic, it refuses to start. This option must be set to ``011a`` Distribution files ------------------ These files are pbuilder configuration files that define the basic settings of a pbuilder environment to build packages upon. A comprehensive list of the options that can be defined can be found in the ``pbuilderrc (5) man page``. Here are the mandatory options Deb-o-Matic will check for their existence: * ``DISTRIBUTION``: indicates the default distribution to use. * ``MIRRORSITE``: indicates the mirror site which contains the package archive. * ``COMPONENTS``: space-delimited list of distribution components to use. * ``DEBOOTSTRAP``: indicates which implementation of debootstrap to use. Run Deb-o-Matic =============== Launch Deb-o-Matic ------------------ Deb-o-Matic needs root privileges to be executed, otherwise it refuses to start. In order to launch it, you can use the following command: *sudo debomatic -c debomatic.conf* with ``debomatic.conf`` being the configuration file as described in the `Configuration section`_. Make sure this file exists, otherwise Deb-o-Matic will refuse to start. Interactive mode ................ Deb-o-Matic will try to enter daemon mode automatically. If that is not possible (e.g. ``python-daemon`` package is not installed), Deb-o-Matic will be executed in interactive mode, and will be bound to the shell that launched it, as a regular process. It is also possible to force interactive mode by passing ``-n`` or ``--nodaemon`` option while invoking ``debomatic`` command: *sudo debomatic -c debomatic.conf -n* This is particularly useful for debugging purposes. Stop Deb-o-Matic ---------------- In order to stop Deb-o-Matic, you should pass ``q`` or ``--quit-process`` options to ``debomatic``: *sudo debomatic -q* Deb-o-Matic will not terminate child processes, but will wait for them to end first, so it could take a while to completely stop Deb-o-Matic instance. .. CAUTION:: Deb-o-Matic uses a rather strong locking mechanism, so it is not recommended to terminate debomatic process with ``kill`` command. Using service command --------------------- If you installed Deb-o-Matic using Debian package, you could start, stop, and restart Deb-o-Matic with the following commands, respectively: *sudo service debomatic start* *sudo service debomatic stop* *sudo service debomatic restart* You will need to adjust configuration stored in ``/etc/default/debomatic`` file to manage Deb-o-Matic with this method, though. In particular, you will have to set ``DEBOMATIC_AUTOSTART`` variable to 1. Service configuration ..................... In order to start Deb-o-Matic with ``service`` command, you must adjust some parameters defined in ``/etc/default/debomatic`` file. * ``DEBOMATIC_AUTOSTART`` This option indicates whether to execute Deb-o-Matic at system boot. Default value is set to ``0`` to avoid accidental executions without a sane configuration. It must be set to ``1`` in order to launch Deb-o-Matic. * ``DEBOMATIC_CONFIG_FILE`` This option indicates the configuration file Deb-o-Matic is going to use. * ``DEBOMATIC_OPTS`` This option allows to pass extra options to Deb-o-Matic. Prepare source packages ======================= Deb-o-Matic will take into account both source only uploads and source plus binary uploads, while it will discard binary only uploads. Source only uploads are recommended to avoid waste of bandwith, so make sure you create packages by passing ``-S`` flag to ``debuild`` or ``dpkg-buildpackage``. Then, packages must be copied or uploaded into the directory specified by ``packagedir`` option in the configuration file to let Deb-o-Matic process them. In order to save bandwidth while uploading your packages, you could want to avoid including upstream tarball in the .changes file if it is already available in the distribution mirrors, Deb-o-Matic will fetch it automatically for you. In order to do so, you have to pass ``-sd`` flag to ``debuild`` or ``dpkg-buildpackage``. Multiple uploads of the same packages are allowed, Deb-o-Matic will overwrite previous builds with new, fresh files. Prepare command files ===================== Deb-o-Matic provides an interface to perform specific tasks into the Deb-o-Matic ``packagedir`` directory such as removing uploaded files or rebuilding packages. These operations are handled by commands stored in ``.commands`` files, and uploaded into Deb-o-Matic ``packagedir`` by using ``dcut`` utility, or by hand. Using dcut is usually simpler, just launch the following command: *dcut -U mydebomatic commandfile.commands* where ``mydebomatic`` is a dput host as described in dput.cf (5) man page, and ``commandfile.commands`` is the file containing the commands to be executed by Deb-o-Matic. Multiple commands can be stored in a single ``.commands`` file, but it is usually safer to issue a single command per file. .. CAUTION:: If signature checking support is enabled, .changes files must be signed by a known key, otherwise they will be deleted and no action will be taken. Remove packages --------------- It could happen some files are kept into Deb-o-Matic ``packagedir`` and you need to remove them. In order to do so, you must use the ``rm`` command: *echo "rm foo\*" > foo.commands* where ``foo*`` is a regular expression matching the files you want to remove. Rebuild packages ---------------- You could want to rebuild a package already in the mirrors to see whether it compiles with newer packages, to analyze its content, and so on. In order to do so, you must use the ``rebuild`` command: *echo "rebuild foo_version dist" > foo.commands* where ``foo`` is the name of the source package you want to rebuild, ``version`` is the version of the package you want to rebuild, and ``dist`` is the distribution which rebuild the package for. Deb-o-Matic can also rebuild packages available in other distributions. The syntax is similar, you just have to indicate which distribution to pick packages from: *echo "rebuild foo_version dist origin" > foo.commands* where ``origin`` is the distribution to pick packages from. .. CAUTION:: Make sure packages are available in the distribution mirrors, otherwise they cannot be downloaded and processed by Deb-o-Matic. Porter uploads -------------- You could want to prepare a porter upload, a binary-only upload which generates architecture dependent binaries only. Additional information can be found in `Debian Developer's Reference`_. In order to do so, you must use the ``rebuild`` command: *echo "porter foo_version dist \\"Joe Doe foo.commands* where foo is the name of the source package you want to rebuild, version is the version of the package you want to rebuild, dist is the distribution which rebuild package for, and the element between quotes is the address to be used as maintainer field, which is usually the developer who is preparing the upload. .. CAUTION:: Make sure packages are available in the distribution mirrors, otherwise they cannot be downloaded and processed by Deb-o-Matic. Modules ======= Contents -------- This module scans binary packages and stores their content in a ``.contents`` file created in the same directory of the resulting files. In order for this module to work properly, ``debc`` tool from ``devscripts`` must be available. DateStamp --------- This module displays timestamps of when a package started to build, when it finished, and the build elapsed time. Timestamps are stored in a ``.datestamp`` file created in the same directory of the resultinf files. Lintian ------- This module allows lintian to be executed, checking the built packages for errors and warnings, and creates a report in the same directory of the resulting files. In order for this module to work properly, ``lintian`` package must be installed. Parameters .......... * ``lintopts`` This option indicates the extra options to pass to lintian. Suggested value: ``-iIE --pedantic`` Mailer ------ This module allows to send emails about the status of the builds. Body of the email will contain an excerpt of the build log to easily see failures or potential problems. .. CAUTION:: Make sure signature checking support is enabled before trying to use this module, otherwise it will not work as it relies on the address provided in the GPG key to obtain the email address to send messages to. Parameters .......... * ``fromaddr`` This option indicates the email address used to send the emails from. * ``smtphost`` This option indicates the SMTP server used to send the emails. * ``smtpport`` This option indicates the SMTP port on which the SMTP server listens to. * ``authrequired`` This option indicates whether the SMTP server requires authentication or not. * ``smtpuser`` This option indicates the user name to be passed to the SMTP server. * ``smtppass`` This option indicates the password to be passed to the SMTP server. * ``success`` This option indicates the template to be used to report successful builds. * ``failure`` This option indicates the template to be used to report failed builds. * ``lintlog`` This option indicates whether the lintian log is to be attached after the build log or not. Piuparts -------- This module allows piuparts to be executed, checking the built packages for potential problems, and creates a report in the same directory of the resulting files. In order for this module to work properly, ``piuparts`` package must be installed. Parameters .......... * ``piupopts`` This option indicates the extra options to pass to piuparts. Suggested value: ``--log-level=info`` PrevBuildCleaner ---------------- This modules deletes obsolete files created during previous builds to avoid picking obsolete files by mistake. It currently deletes these files: * \*.deb * \*.ddeb * \*.gz * \*.bz2 * \*.xz * \*.dsc * \*.contents * \*.lintian * \*.changes Repository ---------- This module allows the creation of a simple repository of Debian binary packages, which is refreshed each time a build is performed, allowing to build packages build-depending on previously built ones. In order for this module to work properly, ``apt-ftparchive`` tool from ``apt-utils`` package must be available. .. Links .. _Canonical's PPAs: http://www.ubuntu.com/news/launchpad-ppa .. _wanna-build: http://git.debian.org/?p=mirror/wanna-build.git;a=summary .. _Deb-o-Matic home page: https://launchpad.net/debomatic .. _Deb-o-Matic download page: https://launchpad.net/debomatic/+download .. _Bazaar: https://code.launchpad.net/~dktrkranz/debomatic/debomatic.dev .. _previous section: #installation-of-the-release-tarball .. _Python ConfigParser: http://docs.python.org/library/configparser.html .. _Python dictionary: http://docs.python.org/library/stdtypes.html#mapping-types-dict .. _Distribution files section: #distribution-files .. _Modules section: #modules .. _Configuration section: #configuration .. _Debian Developer's Reference: http://www.debian.org/doc/manuals/developers-reference/pkgs.html#porter-guidelines debomatic-0.11/etc/debomatic/0000755000000000000000000000000012153635240014213 5ustar 00000000000000debomatic-0.11/etc/default/0000755000000000000000000000000012153635240013710 5ustar 00000000000000debomatic-0.11/etc/init.d/0000755000000000000000000000000012153635240013451 5ustar 00000000000000debomatic-0.11/etc/debomatic/debomatic.conf0000644000000000000000000000160312153635240017011 0ustar 00000000000000[default] builder: pbuilder packagedir: /incoming configdir: /etc/debomatic/distributions pbuilderhooks: /usr/share/debomatic/pbuilderhooks maxbuilds: 3 inotify: 1 sleep: 60 logfile: /var/log/debomatic.log logverbosity: 1 [gpg] gpg: 0 keyring: /etc/debomatic/debomatic.gpg [modules] modules: 1 modulespath: /usr/share/debomatic/modules [runtime] alwaysupdate: unstable experimental raring distblacklist: modulesblacklist: Lintian Mailer Piuparts mapper: {'sid': 'unstable', 'wheezy': 'testing', 'squeeze': 'stable'} [lintian] lintopts: -i -I -E --pedantic [mailer] fromaddr: debomatic@localhost smtphost: localhost smtpport: 25 authrequired: 0 smtpuser: user smtppass: pass success: /etc/debomatic/mailer/build_success.mail-template failure: /etc/debomatic/mailer/build_failure.mail-template lintlog: 0 [piuparts] piupopts: --log-level=info [internals] configversion: 011a debomatic-0.11/etc/debomatic/distributions/0000755000000000000000000000000012153635240017115 5ustar 00000000000000debomatic-0.11/etc/debomatic/mailer/0000755000000000000000000000000012153635240015464 5ustar 00000000000000debomatic-0.11/etc/debomatic/distributions/experimental0000644000000000000000000000045612153635240021542 0ustar 00000000000000DISTRIBUTION=unstable MIRRORSITE=http://ftp.debian.org/debian OTHERMIRROR="deb http://ftp.debian.org/debian/ experimental main contrib non-free" COMPONENTS="main contrib non-free" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/debian-archive-keyring.gpg') debomatic-0.11/etc/debomatic/distributions/oldstable0000644000000000000000000000057512153635240021020 0ustar 00000000000000DISTRIBUTION=oldstable MIRRORSITE=http://ftp.debian.org/debian OTHERMIRROR="deb http://security.debian.org/ oldstable/updates main contrib non-free | deb http://ftp.debian.org/debian oldstable-updates main contrib non-free" COMPONENTS="main contrib non-free" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/debian-archive-keyring.gpg') debomatic-0.11/etc/debomatic/distributions/precise0000644000000000000000000000074412153635240020477 0ustar 00000000000000DISTRIBUTION=precise MIRRORSITE=http://archive.ubuntu.com/ubuntu OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse | deb http://security.ubuntu.com/ubuntu precise-security main restricted universe multiverse" COMPONENTS="main restricted universe multiverse" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/ubuntu-archive-keyring.gpg') EXTRAPACKAGES="pkgbinarymangler pkg-create-dbgsym" debomatic-0.11/etc/debomatic/distributions/quantal0000644000000000000000000000074412153635240020512 0ustar 00000000000000DISTRIBUTION=quantal MIRRORSITE=http://archive.ubuntu.com/ubuntu OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu/ quantal-updates main restricted universe multiverse | deb http://security.ubuntu.com/ubuntu quantal-security main restricted universe multiverse" COMPONENTS="main restricted universe multiverse" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/ubuntu-archive-keyring.gpg') EXTRAPACKAGES="pkgbinarymangler pkg-create-dbgsym" debomatic-0.11/etc/debomatic/distributions/raring0000644000000000000000000000074112153635240020324 0ustar 00000000000000DISTRIBUTION=raring MIRRORSITE=http://archive.ubuntu.com/ubuntu OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse | deb http://security.ubuntu.com/ubuntu raring-security main restricted universe multiverse" COMPONENTS="main restricted universe multiverse" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/ubuntu-archive-keyring.gpg') EXTRAPACKAGES="pkgbinarymangler pkg-create-dbgsym" debomatic-0.11/etc/debomatic/distributions/saucy0000644000000000000000000000073612153635240020172 0ustar 00000000000000DISTRIBUTION=saucy MIRRORSITE=http://archive.ubuntu.com/ubuntu OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu/ saucy-updates main restricted universe multiverse | deb http://security.ubuntu.com/ubuntu saucy-security main restricted universe multiverse" COMPONENTS="main restricted universe multiverse" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/ubuntu-archive-keyring.gpg') EXTRAPACKAGES="pkgbinarymangler pkg-create-dbgsym" debomatic-0.11/etc/debomatic/distributions/squeeze-backports0000644000000000000000000000067612153635240022520 0ustar 00000000000000DISTRIBUTION=stable MIRRORSITE=http://ftp.debian.org/debian OTHERMIRROR="deb http://security.debian.org/ stable/updates main contrib non-free | deb http://ftp.debian.org/debian stable-updates main contrib non-free | deb http://backports.debian.org/debian-backports squeeze-backports main" COMPONENTS="main contrib non-free" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/debian-archive-keyring.gpg') debomatic-0.11/etc/debomatic/distributions/stable0000644000000000000000000000056412153635240020317 0ustar 00000000000000DISTRIBUTION=stable MIRRORSITE=http://ftp.debian.org/debian OTHERMIRROR="deb http://security.debian.org/ stable/updates main contrib non-free | deb http://ftp.debian.org/debian stable-updates main contrib non-free" COMPONENTS="main contrib non-free" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/debian-archive-keyring.gpg') debomatic-0.11/etc/debomatic/distributions/testing0000644000000000000000000000033212153635240020513 0ustar 00000000000000DISTRIBUTION=testing MIRRORSITE=http://ftp.debian.org/debian COMPONENTS="main contrib non-free" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/debian-archive-keyring.gpg') debomatic-0.11/etc/debomatic/distributions/unstable0000644000000000000000000000033312153635240020654 0ustar 00000000000000DISTRIBUTION=unstable MIRRORSITE=http://ftp.debian.org/debian COMPONENTS="main contrib non-free" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/debian-archive-keyring.gpg') debomatic-0.11/etc/debomatic/distributions/wheezy-backports0000644000000000000000000000065512153635240022347 0ustar 00000000000000DISTRIBUTION=stable MIRRORSITE=http://ftp.debian.org/debian OTHERMIRROR="deb http://security.debian.org/ stable/updates main contrib non-free | deb http://ftp.debian.org/debian stable-updates main contrib non-free | deb http://ftp.debian.org/debian wheezy-backports main" COMPONENTS="main contrib non-free" DEBOOTSTRAP=debootstrap DEBOOTSTRAPOPTS=('--variant=buildd' '--keyring' '/usr/share/keyrings/debian-archive-keyring.gpg') debomatic-0.11/etc/debomatic/mailer/build_failure.mail-template0000644000000000000000000000027712153635240022755 0ustar 00000000000000From: %(fromaddr)s To: %(uploader)s Subject: %(package)s failed to build The package %(package)s you have uploaded failed to build. Here is an excerpt from the build log: -- %(buildlog)s debomatic-0.11/etc/debomatic/mailer/build_success.mail-template0000644000000000000000000000036112153635240022770 0ustar 00000000000000From: %(fromaddr)s To: %(uploader)s Subject: %(package)s has been built successfully The package %(package)s you have uploaded was built successfully. Here is an excerpt from the build log: -- %(buildlog)s Lintian log: -- %(lintlog)s debomatic-0.11/etc/default/debomatic0000644000000000000000000000041212153635240015557 0ustar 00000000000000# Start debomatic on boot? DEBOMATIC_AUTOSTART=0 # Which file should be used as the configuration file for debomatic. DEBOMATIC_CONFIG_FILE='/etc/debomatic/debomatic.conf' # What extra options to give debomatic. # Use -n to prevent backgrounding DEBOMATIC_OPTS='' debomatic-0.11/etc/init.d/debomatic0000755000000000000000000000270712153635240015334 0ustar 00000000000000#! /bin/sh ### BEGIN INIT INFO # Provides: debomatic # Required-Start: $remote_fs # Required-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Package autobuilder # Description: Automatic build machine for Debian source packages. ### END INIT INFO NAME=debomatic [ -r /etc/default/$NAME ] && . /etc/default/$NAME DAEMON=/usr/bin/debomatic DAEMON_ARGS="-c $DEBOMATIC_CONFIG_FILE $DEBOMATIC_OPTS" SCRIPTNAME=/etc/init.d/$NAME [ -x "$DAEMON" ] || exit 0 [ "$DEBOMATIC_AUTOSTART" = 0 ] && exit 0 . /lib/lsb/init-functions do_start() { $DAEMON $DAEMON_ARGS } do_stop() { $DAEMON -q } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; restart|force-reload) log_daemon_msg "Restarting $NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) log_end_msg 1 ;; esac ;; status) status_of_proc /usr/bin/$NAME $NAME ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac : debomatic-0.11/modules/Contents.py0000644000000000000000000000305212153635240015330 0ustar 00000000000000# Deb-o-Matic - Contents module # # Copyright (C) 2009 Alessio Treglia # Copyright (C) 2010-2013 Luca Falavigna # # Authors: Alessio Treglia # Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Store debc output in the pool directory. import os from subprocess import call class DebomaticModule_Contents: def __init__(self): self.debc = '/usr/bin/debc' def post_build(self, args): changes_file = None resultdir = os.path.join(args['directory'], 'pool', args['package']) contents_file = os.path.join(resultdir, args['package']) + '.contents' for filename in os.listdir(resultdir): if filename.endswith('.changes'): changes_file = os.path.join(resultdir, filename) break if changes_file: with open(contents_file, 'w') as fd: call([self.debc, changes_file], stdout=fd) debomatic-0.11/modules/DateStamp.py0000644000000000000000000000347512153635240015426 0ustar 00000000000000# Deb-o-Matic - Lintian module # # Copyright (C) 2008-2009 David Futcher # Copyright (C) 2008-2013 Luca Falavigna # # Authors: David Futcher # Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Displays build start and finish times into a file in the build directory from datetime import datetime from time import gmtime, mktime, strftime, time class DebomaticModule_DateStamp: def __init__(self): self.ts = '' self.begin = '' self.end = '' def pre_build(self, args): self.ts = '%(directory)s/pool/%(package)s/%(package)s.datestamp' % args with open(self.ts, 'w') as fd: self.begin = gmtime(time()) now = datetime.now().strftime('%A, %d %B %Y %H:%M') fd.write('Build started at %s\n' % now) def post_build(self, args): with open(self.ts, 'a') as fd: self.end = gmtime(time()) now = datetime.now().strftime('%A, %d %B %Y %H:%M') elapsed = strftime('%H:%M:%S', gmtime(mktime(self.end) - mktime(self.begin))) fd.write('Build finished at %s\n' % now) fd.write('Elapsed time: %s' % elapsed) debomatic-0.11/modules/Lintian.py0000644000000000000000000000447612153635240015144 0ustar 00000000000000# Deb-o-Matic - Lintian module # # Copyright (C) 2008-2009 David Futcher # Copyright (C) 2008-2013 Luca Falavigna # # Authors: David Futcher # Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Stores litian output on top of the built package in the pool directory. import os from subprocess import call class DebomaticModule_Lintian: def __init__(self): self.lintian = '/usr/bin/lintian' def post_build(self, args): changesfile = None if args['opts'].has_section('lintian'): lintopts = args['opts'].get('lintian', 'lintopts').strip() else: lintopts = [] with open(args['cfg'], 'r') as fd: for line in [line.strip() for line in fd.readlines()]: if 'MIRRORSITE' in line: try: profile = line.split('/')[-1] except IndexError: profile = None if profile: lintopts += ' --profile %s' % profile break resultdir = os.path.join(args['directory'], 'pool', args['package']) lintian = os.path.join(resultdir, args['package']) + '.lintian' for filename in os.listdir(resultdir): if filename.endswith('.changes'): changesfile = os.path.join(resultdir, filename) break if changesfile: with open(lintian, 'w') as fd: call([self.lintian, '-V'], stdout=fd) fd.write('Options: %s\n\n' % lintopts) fd.flush() cmd = [self.lintian] + lintopts.split() + [changesfile] call(cmd, stdout=fd) debomatic-0.11/modules/Mailer.py0000644000000000000000000000627712153635240014760 0ustar 00000000000000# Deb-o-Matic - Mailer module # # Copyright (C) 2010 Alessio Treglia # # Authors: Alessio Treglia # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Send a reply to the uploader once the build has finished. import os from subprocess import Popen, PIPE from smtplib import SMTP from email.parser import Parser class DebomaticModule_Mailer: DEFAULT_OPTIONS = ( 'fromaddr', 'smtphost', 'smtpport', 'authrequired', 'smtpuser', 'smtppass', 'success', 'failure') def __init__(self): pass def write_reply(self, template, buildlog, args): with open(template, 'r') as fd: substdict = dict(args) substdict['buildlog'] = buildlog substdict['fromaddr'] = self.fromaddr substdict['lintlog'] = 'No log' if self.lintlog: lintfile = os.path.join(self.resultdir, '%s.lintian' % args['package']) if os.path.isfile(lintfile): with open(lintfile, 'r') as lintfd: substdict['lintlog'] = lintfd.read() reply = fd.read() % substdict msg = Parser().parsestr(reply) return msg.as_string() def post_build(self, args): if not args['uploader']: return template = None uploader = args['uploader'] self.resultdir = os.path.join(args['directory'], 'pool', args['package']) if args['opts'].has_section('mailer'): for opt in self.DEFAULT_OPTIONS: setattr(self, opt, args['opts'].get('mailer', opt)) if args['opts'].has_option('mailer', 'lintlog'): self.lintlog = args['opts'].getint('mailer', 'lintlog') for filename in os.listdir(self.resultdir): if filename.endswith('.changes'): template = self.success break if not template: template = self.failure try: bp = '%(directory)s/pool/%(package)s/%(package)s.buildlog' % args buildlog_exc = Popen(['tail', '--lines=20', bp], stdout=PIPE).communicate()[0] msg = self.write_reply(template, buildlog_exc, args) self.smtp = SMTP(self.smtphost, int(self.smtpport)) if int(self.authrequired): self.smtp.login(self.smtpuser, self.smtppass) self.smtp.sendmail(self.fromaddr, uploader, msg) self.smtp.quit() except Exception as e: raise e debomatic-0.11/modules/Piuparts.py0000644000000000000000000000434212153635240015345 0ustar 00000000000000# Deb-o-Matic - PiuParts module # # Copyright (C) 2012 Leo Iannacone # # Authors: Leo Iannacone # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Check through piuparts if packages can be installed/upgraded/removed. import os from subprocess import call from re import findall class DebomaticModule_Piuparts: def __init__(self): self.piuparts = '/usr/sbin/piuparts' def post_build(self, args): if args['opts'].has_section('piuparts'): piupopts = args['opts'].get('piuparts', 'piupopts').strip().split() else: piupopts = [] with open(args['cfg'], 'r') as fd: data = fd.read() distribution = findall('[^#]?DISTRIBUTION="?(.*[^"])"?\n', data)[0] mirror = findall('[^#]?MIRRORSITE="?(.*[^"])"?\n', data)[0] components = findall('[^#]?COMPONENTS="?(.*[^"])"?\n', data)[0] piupopts += ['-e', '%(directory)s/%(distribution)s' % args] piupopts += ['-d', '%s' % distribution] piupopts += ['-m', '%s %s' % (mirror, components)] piupopts += ['-D', '%s' % mirror.split('/')[-1]] resultdir = os.path.join(args['directory'], 'pool', args['package']) for filename in os.listdir(resultdir): if filename.endswith('.changes'): piupartsout = os.path.join(resultdir, args['package']) + '.piuparts' with open(piupartsout, 'w') as fd: cmd = [self.piuparts] + piupopts + \ [os.path.join(resultdir, filename)] call(cmd, stdout=fd) break debomatic-0.11/modules/PrevBuildCleaner.py0000644000000000000000000000247712153635240016733 0ustar 00000000000000# Deb-o-Matic - Package build path cleaner # # Copyright (C) 2009 Alessio Treglia # # Authors: Alessio Treglia # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Delete all files generated by previous build. import os class DebomaticModule_PrevBuildCleaner: def pre_build(self, args): exts_to_clean = ['.deb', '.ddeb', '.gz', '.bz2', '.xz', '.dsc', '.contents', '.lintian', '.piuparts', '.changes'] pkg_build_path = '%(directory)s/pool/%(package)s' % args for filename in os.listdir(pkg_build_path): name, ext = os.path.splitext(filename) if ext in exts_to_clean: os.remove(os.path.join(pkg_build_path, filename)) debomatic-0.11/modules/Repository.py0000644000000000000000000000410612153635240015713 0ustar 00000000000000# Deb-o-Matic - Contents module # # Copyright (C) 2011-2013 Luca Falavigna # # Authors: Luca Falavigna # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # # Generate local repository of built packages import os from subprocess import call, PIPE class DebomaticModule_Repository: def __init__(self): self.af = '/usr/bin/apt-ftparchive' self.gzip = '/bin/gzip' def post_build(self, args): cwd = os.getcwd() if not os.path.isfile(self.af): return pool_dir = os.path.join(args['directory'], 'pool') packages_file = os.path.join(pool_dir, 'Packages') release_file = os.path.join(pool_dir, 'Release') os.chdir(pool_dir) with open(packages_file, 'w') as fd: call([self.af, 'packages', '.'], stdout=fd, stderr=PIPE) call([self.gzip, '-9', '-f', packages_file], stdout=PIPE, stderr=PIPE) with open(release_file, 'w') as fd: call([self.af, '-qq', '-o', 'APT::FTPArchive::Release::Origin=Deb-o-Matic', '-o', 'APT::FTPArchive::Release::Label=Deb-o-Matic', '-o', 'APT::FTPArchive::Release::Suite=%(dist)s' % {'dist': args['distribution']}, 'release', '.'], stdout=fd, stderr=PIPE) with open(release_file, 'r+') as fd: data = fd.read() fd.seek(0) fd.write(data.replace('MD5Sum', 'NotAutomatic: yes\nMD5Sum')) os.chdir(cwd) debomatic-0.11/pbuilderhooks/A00iptables0000755000000000000000000000044512153635240016360 0ustar 00000000000000#!/bin/sh if [ "$(uname -s)" = "Linux" ] then apt-get install -y iptables # GID must match the one defined by BUILDUSERID into pbuilderrc file iptables -A OUTPUT ! -s 127.0.0.1 ! -d 127.0.0.1 -m owner --gid-owner 1234 -j REJECT --reject-with icmp-port-unreachable iptables -nL OUTPUT fi debomatic-0.11/pbuilderhooks/B00iptables0000755000000000000000000000040712153635240016357 0ustar 00000000000000#!/bin/sh if [ "$(uname -s)" = "Linux" ] then # GID must match the one defined by BUILDUSERID into pbuilderrc file iptables -D OUTPUT ! -s 127.0.0.1 ! -d 127.0.0.1 -m owner --gid-owner 1234 -j REJECT --reject-with icmp-port-unreachable iptables -nL OUTPUT fi debomatic-0.11/pbuilderhooks/C00iptables0000755000000000000000000000040712153635240016360 0ustar 00000000000000#!/bin/sh if [ "$(uname -s)" = "Linux" ] then # GID must match the one defined by BUILDUSERID into pbuilderrc file iptables -D OUTPUT ! -s 127.0.0.1 ! -d 127.0.0.1 -m owner --gid-owner 1234 -j REJECT --reject-with icmp-port-unreachable iptables -nL OUTPUT fi debomatic-0.11/po/ast.po0000644000000000000000000001177212153635240013266 0ustar 00000000000000# Asturian translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2010-01-06 21:11+0000\n" "Last-Translator: Xuacu Saturio \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Nun pudo abrise %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Ficheru .changes incorreutu: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "Falló %(builder)s %(cmd)s" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "deb-o-matic tien d'executase como alministrador" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Ta n'execución otra instancia. Encaboxando" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "El ficheru de configuración %s nun esiste" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Nun se puede acceder al direutoriu %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Nun s'alcontró l'aniellu de claves" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Nun s'atoparon robles válides" debomatic-0.11/po/ca.po0000644000000000000000000001170212153635240013053 0ustar 00000000000000# Catalan translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2012-01-09 22:08+0000\n" "Last-Translator: telenieko \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "No es pot obrir %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Fitxer .changes erroni: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Ha d'executar deb-o-matic com a root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Un altre instància s'està executant. Abortant" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "El fitxer de configuració %s no existèix" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Incapaç d'accedir el directori %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Keyring no trobat" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "No s'han trobat signatures vàlides" debomatic-0.11/po/cs.po0000644000000000000000000001166312153635240013103 0ustar 00000000000000# Czech translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2010-05-09 16:54+0000\n" "Last-Translator: Roman Horník \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Nelze otevřít %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Špatný .changes soubor: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s selhalo" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "deb-o-matic musíte spustit jako root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Jiná instance je spuštěna. Rušení" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Konfigurační soubor %s neexistuje" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Nelze otevřít adresář %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Klíčenka nenalezena" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Žádný validní podpis" debomatic-0.11/po/da.po0000644000000000000000000001232612153635240013057 0ustar 00000000000000# Danish translation for debomatic # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2012-10-21 19:36+0000\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Kunne ikke åbne %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "Angiv venligst %(parm)s i %s(conf)s" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "Kunne ikke hente %s" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "Behandler %s" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "Distribution %s er deaktiveret" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "Bygger %s" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Ugylidg .changes-fil: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s mislykkedes" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Du skal køre deb-o-matic som administrator (root)" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "En anden instans kører. Afbryder" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "Konfigurationsfil er ikke angivet" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Konfigurationsfil %s findes ikke" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "Konfigurationsfil er ikke på version %s" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "Angiv »%(opt)s« i %(conffile)s" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Kunne ikke tilgå %s-mappe" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "Venter på at tråde bliver færdige ..." #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "Forældet lås fjernet" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Nøglering blev ikke fundet" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Ingen gyldige underskrifter fundet" debomatic-0.11/po/de.po0000644000000000000000000001253312153635240013063 0ustar 00000000000000# German translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2012-03-31 22:10+0000\n" "Last-Translator: Stefan Ebner \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "%s kann nicht geöffnet werden" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "Bitte setzen Sie %(parm)s in %s(conf)s" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "%s konnte nicht heruntergeladen werden" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "%s wird verarbeitet" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "Distribution %s ist deaktiviert" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "%s wird gebildet" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Schlechte .changes-Datei: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s fehlgeschlagen" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "deb-o-matic muss als root ausgeführt werden" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Eine Instanz läuft bereits. Abbrechen" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "Konfigurationsdatei wurde nicht angegeben" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Konfigurationsdatei %s existiert nicht" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "Die Konfigurationsdatei ist nicht auf Version %s" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "\"%(opt)s\" wird in %(conffile)s gesetzt" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Auf Verzeichnis %s kann nicht zugegriffen werden" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "Warte bis die Threads beendet sind..." #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "Obsolete Zugriffsperre wurde entfernt" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Schlüsselring nicht gefunden" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Keine gültigen Signaturen gefunden" debomatic-0.11/po/debomatic.pot0000644000000000000000000001111412153635240014600 0ustar 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "" debomatic-0.11/po/en_GB.po0000644000000000000000000001345112153635240013445 0ustar 00000000000000# English (United Kingdom) translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2012-11-18 02:59+0000\n" "Last-Translator: Luca Falavigna \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Unable to open %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "Please set %(parm)s in %s(conf)s" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "Downloading missing %s" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "Unable to fetch %s" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "%(mapped)s mapped as %(mapper)s" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "Processing %s" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "Performing a porter build" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "Thread for %s scheduled" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "Performing a package rebuild" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "Removing files" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "Removing %s" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "Full build routine launched" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "Simple build routine launched" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "Distribution %s is disabled" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "Building %s" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "Pre-build hooks launched" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "Pre-build hooks finished" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "Launching %s" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "Unable to launch %s" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "Post-build hooks launched" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "Post-build hooks finished" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "Build of %s complete" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Bad .changes file: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "Chroot must be created" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "Chroot must be updated" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "Launching %(builder)s %(cmd)s" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s failed" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "You must run deb-o-matic as root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Another instance is running. Aborting" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "Startup hooks launched" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "Startup hooks finished" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "Entering daemon mode" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "Configuration file has not been specified" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Configuration file %s does not exist" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "Configuration file is not at version %s" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "Set \"%(opt)s\" in %(conffile)s" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "Inotify loop started" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "Timer loop started" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Unable to access %s directory" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "Waiting for threads to complete..." #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "Shutdown hooks launched" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "Shutdown hooks finished" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "Obsolete lock removed" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Keyring not found" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "No valid signatures found" debomatic-0.11/po/eo.po0000644000000000000000000001175212153635240013100 0ustar 00000000000000# Esperanto translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2011-03-16 17:19+0000\n" "Last-Translator: Michael Moroni \n" "Language-Team: Esperanto \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Ne povas malfermi %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "Bonvolu agordi %(parm)s en %s(conf)s" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "Ne povas obteni %s" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "Distribuaĵo %s estas malŝaltita" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Malbona dosiero .changes: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s fiaskis" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Vi devas ruli deb-o-matic kiel ĉefuzanto" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Alia peto rulas. Nuliganta" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Agordfosiero %s ne ekzistas" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Ne povas akiri dosierujon %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "" debomatic-0.11/po/es.po0000644000000000000000000001230212153635240013074 0ustar 00000000000000# Spanish translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2012-04-28 09:40+0000\n" "Last-Translator: David Marzal \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "No se pudo abrir %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "Por favor establezca %(parm)s en %s(conf)s" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "La distribución %s está desactivada" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Archivo .changes incorrecto: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s ha fallado" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Debe ejecutar deb-o-matic como administrador (root)" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Hay otra instancia del programa en ejecución. Cancelando." #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "No se ha especificado fichero de configuración" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "El archivo de configuración %s no existe" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "Establezca %(opt)s\" en %(conffile)s" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "No se puede acceder al directorio %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "Esperando hilos para completar..." #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Anillo de claves no encontrado" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "No se encontraron firmas válidas" debomatic-0.11/po/fi.po0000644000000000000000000001176412153635240013076 0ustar 00000000000000# Finnish translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2009-12-06 02:02+0000\n" "Last-Translator: Jarkko Oranen \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Tiedoston %s avaaminen ei onnistunut" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Epäkelpo .changes-tiedosto: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "deb-o-matic pitää ajaa pääkäyttäjän (root) oikeuksilla" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Toinen deb-o-matic-prosessi on jo ajossa. Keskeytetään" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Asetustiedosto %s ei ole olemassa" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Hakemistoa %s ei voitu lukea" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Avainnippua ei löytynyt" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Kelvollisia allekirjoituksia ei löydy" debomatic-0.11/po/fr.po0000644000000000000000000001202412153635240013075 0ustar 00000000000000# French translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2010-12-23 14:20+0000\n" "Last-Translator: Thibault Févry \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Incapable d'ouvrir %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "La distribution %s est désactivée" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Fichier .changes invalide: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s a échoué" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Vous devez lancer deb-o-matic en root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Une autre instance est en cours d'exécution. Abandon" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Le fichier de configuration %s est inexistant" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Impossible d'accéder au dossier %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Trousseau de clés introuvable" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Aucune signature valide disponible" debomatic-0.11/po/he.po0000644000000000000000000001210212153635240013057 0ustar 00000000000000# Hebrew translation for debomatic # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2010-04-12 16:44+0000\n" "Last-Translator: Yaron \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "לא ניתן לפתוח את %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "קובץ ה־‎.changes לא תקין: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "הפקודה %(cmd)s של %(builder)s כשלה" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "יש להריץ את deb-o-matic כמשתמש על" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "ישנו מופע נוסף פעיל. מתבצע ביטול." #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "קובץ התצורה %s אינו קיים" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "לא ניתן לגשת אל התיקייה %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "צרור המפתחות לא נמצא" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "לא נמצאו חתימות תקניות" debomatic-0.11/po/id.po0000644000000000000000000001133412153635240013065 0ustar 00000000000000# Indonesian translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2009-12-05 08:04+0000\n" "Last-Translator: Iwan Setiawan \n" "Language-Team: Indonesian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Berkas konfigurasi %s tidak ada" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "" debomatic-0.11/po/it.po0000644000000000000000000001403012153635240013101 0ustar 00000000000000# Italian translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2012-11-18 02:58+0000\n" "Last-Translator: Luca Falavigna \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Impossibile aprire %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "Impostare %(parm)s nel file %(conf)s" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "Scaricamento del file mancante %s" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "Impossibile scaricare %s" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "%(mapped)s mappata come %(mapper)s" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "Lavorazione di %s" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "Effettuazione di una compilazione porter" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "Thread per %s registrato" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "Effettuazione di una ricompilazione" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "Rimozione di fule" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "Rimozione di %s" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "Compilazione completa in esecuzione" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "Compilazione semplificata in esecuzione" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "La distribuzione %s è disabilitata" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "Compilazione di %s" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "Hook di pre-compilazione lanciati" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "Hook di pre-compilazione terminati" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "Esecuzione di %s" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "Impossibile eseguire %s" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "Hook di post-compilazione lanciati" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "Hook di post-compilazione terminati" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "Compilazione di %s completa" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "File .changes non valido: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "La chroot deve essere creata" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "La chroot deve essere aggiornata" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "Esecuzione di %(builder)s %(cmd)s" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s non riuscito" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Eseguire deb-o-matic come root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Un'altra istanza è in esecuzione. Operazione terminata" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "Hook di avvio lanciati" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "Hook di avvio terminati" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "Attivazione della modalità daemon" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "Nessun file di configurazione specificato" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Il file di configurazione %s non esiste" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "Il file di configurazione non è alla versione %s" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "Impostare \"%(opt)s\" nel file %(conffile)s" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "Loop di inotify lanciato" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "Loop timer lanciato" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Impossibile accedere alla directory %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "In attesa del completamento dei processi..." #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "Hook di chiusura lanciati" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "Hook di chiusura terminati" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "Blocco obsoleto rimosso" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Portachiavi non trovato" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Nessuna firma valida trovata" debomatic-0.11/po/ja.po0000644000000000000000000001215612153635240013066 0ustar 00000000000000# Japanese translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # Hideki Yamane (Debian-JP) , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic 0.7-1\n" "Report-Msgid-Bugs-To: Luca Falavigna \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2009-12-11 13:22+0000\n" "Last-Translator: Hideki Yamane \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "%s が開けません" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "不正な .changes ファイル: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "deb-o-matic は root で実行する必要があります" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "別のインスタンスが実行されています。終了します" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "設定ファイル %s が存在しません" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "%s ディレクトリにアクセスできません" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "キーリングが見つかりません" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "妥当な署名が見つかりませんでした" debomatic-0.11/po/nl.po0000644000000000000000000001202412153635240013077 0ustar 00000000000000# Dutch translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2010-10-06 18:55+0000\n" "Last-Translator: Johny Provoost \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "%s kan niet geopend worden" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "Distributie %s is uitgeschakeld" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Fout .changes bestand: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s is mislukt" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Deb-o-matic moet als root uitgevoerd worden" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Een andere instantie is al actief. Bezig met stoppen" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Configuratiebestand %s bestaat niet" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Niet in staat locatie %s te openen" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Sleutelring niet gevonden" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Geen geldige handtekening gevonden" debomatic-0.11/po/pl.po0000644000000000000000000001251112153635240013102 0ustar 00000000000000# Polish translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2012-10-21 22:02+0000\n" "Last-Translator: Stanisław Dac \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Nie można otworzyć %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "Proszę ustawić %(param)s w %s(conf)s" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "Nie można pozyskać %s" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "Przetwarzanie %s" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "Dystrybucja %s jest wyłączona" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "Buduję %s" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Nieprawidłowy plik .changes: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s nie powiodło się" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "" "Deb-o-matic do poprawnego działania wymaga uruchomienia z poziomu root'a" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Aplikacja jest już uruchomiona. Anulowanie" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "Plik konfiguracyjny nie został określony" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Plik konfiguracyjny %s nie istnieje" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "Plik konfiguracyjny nie jest w wersji %s" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "Ustaw \"%(opt)s\" w %(conffile)s" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Nie można uzyskać dostępu do katalogu %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "Czekam na ukończenie wątków..." #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "Usunięto przestarzałe blokady" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Baza kluczy nie odnaleziona" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Nie znaleziono prawidłowych podpisów" debomatic-0.11/po/pt.po0000644000000000000000000001201512153635240013111 0ustar 00000000000000# Portuguese translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2012-01-09 22:08+0000\n" "Last-Translator: André Oliveira \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Não foi possível abrir %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "Distribuição %s está desabilitada" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Ficheiro .changes inválido: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "O deb-o-matic tem que ser lanaçado com acesso root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Outra instância da aplicação já em execução" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Ficheiro de configuração %s não existente" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Impossível aceder o directório %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Chaveiro não encontrado" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Nenhuma assinatura válida encontrada" debomatic-0.11/po/pt_BR.po0000644000000000000000000001176612153635240013510 0ustar 00000000000000# Brazilian Portuguese translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2010-01-19 00:35+0000\n" "Last-Translator: Ricardo Martins \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Não foi possível abrir %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Arquivo .changes corrompido: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Você deve executar o deb-o-matic como root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Já existe uma instância em execução. Abortando" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Arquivo de configuração %s não existe" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Não foi possível abrir o diretório %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Nenhuma assinatura válida encontrada" debomatic-0.11/po/ro.po0000644000000000000000000001203612153635240013111 0ustar 00000000000000# Romanian translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2010-10-13 21:38+0000\n" "Last-Translator: Lucian Adrian Grijincu \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Nu s-a putut deschide %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "Distribuția %s este dezactivată" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Fișier .changes greșit: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s a eșuat" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Trebuie să rulați deb-o-matic ca root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "O altă instanță rulează deja. Anulez" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Fișierul de configurare %s nu există" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Nu s-a putut accesa dosarul %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Inelul de chei nu a fost găsit" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Nu s-a găsit nicio semnătură validă" debomatic-0.11/po/ru.po0000644000000000000000000001260612153635240013122 0ustar 00000000000000# Russian translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2012-11-30 11:57+0000\n" "Last-Translator: Eugene Marshal \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Не удалось открыть %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "Пожалуйста установите %(parm)s в %s(conf)s" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "Обработка %s" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "Удаление файлов" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "Удаление %s" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "Распределение %s отключено" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "Сборка %s" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "Запуск %s" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "Невозможно запустить %s" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "Сборка %s завершена" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Плохой файл .changes: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s не удалось" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "deb-o-matic нужно запускать от имени root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Другой экземпляр уже выполняется. Останов" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Файл настроек %s не существует" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Нет доступа к каталогу %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Брелок не найден" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Не найдены допустимые подписи" debomatic-0.11/po/sl.po0000644000000000000000000001173312153635240013112 0ustar 00000000000000# Slovenian translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2010-02-05 06:10+0000\n" "Last-Translator: grofaty \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Ni mogoče odpreti %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Pokvarjena .changes datoteka: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "%(builder)s %(cmd)s je spodletelo" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Deb-o-matic moraš zagnati kot root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Program že teče. Preklicujem" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Nastavitvena datoteka %s ne obstaja" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Ne morem dostopati do direktorija %s" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Zbirke ključev ni mogoče najti" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Ne najdem veljavnih podpisov" debomatic-0.11/po/sr.po0000644000000000000000000001341712153635240013121 0ustar 00000000000000# Serbian translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2012-04-13 22:11+0000\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Не могу да отворим „%s“" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "Молим подесите %(parm)s у %s(conf)s" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "Не могу да довучем %s" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "Обрађујем %s" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "Дистрибуција %s искључена" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "Изграђујем %s" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Лоша датотека измена (.changes): %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "Неуспешно извршавање наредбе „%(cmd)s“ програма %(builder)s" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Морате да покренете деб-о-матик као администратор" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "Један други примерак је покренут. Прекидам" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "Датотека подешавања није наведена" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Датотека подешавања „%s“ не постоји" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "Датотека подешавања није у издању %s" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "Подешавам „%(opt)s“ у %(conffile)s" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Не могу да приступим директоријуму „%s“" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "Чекам на нити да заврше..." #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "Уклонио сам застарело закључавање" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Нисам нашао привезак кључева" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Не могу да нађем исправан потпис" debomatic-0.11/po/sv.po0000644000000000000000000001166412153635240013127 0ustar 00000000000000# Swedish translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2009-12-29 10:05+0000\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "Kunde inte öppna %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr "Felaktig .changes fil: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "Du måste köra deb-o-matic som root" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "En annan instans körs. Avslutar" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "Konfigurations filen %s finns inte" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "Har inte tillgång till %s mappen" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "Kunde inte hitta nyckelringen" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "Inga giltiga signaturer hittades" debomatic-0.11/po/zh_CN.po0000644000000000000000000001163612153635240013477 0ustar 00000000000000# Chinese (Simplified) translation for debomatic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the debomatic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: debomatic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-11-18 03:45+0100\n" "PO-Revision-Date: 2009-12-06 06:18+0000\n" "Last-Translator: desk \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-18 05:08+0000\n" "X-Generator: Launchpad (build 16626)\n" #: Debomatic/commands.py:50 Debomatic/build.py:274 Debomatic/build.py:289 #: Debomatic/build.py:304 Debomatic/build.py:399 #, python-format msgid "Unable to open %s" msgstr "无法打开 %s" #: Debomatic/commands.py:56 Debomatic/build.py:295 Debomatic/build.py:309 msgid "Please set %(parm)s in %s(conf)s" msgstr "" #: Debomatic/commands.py:65 Debomatic/build.py:156 #, python-format msgid "Downloading missing %s" msgstr "" #: Debomatic/commands.py:69 Debomatic/build.py:241 Debomatic/build.py:382 #, python-format msgid "Unable to fetch %s" msgstr "" #: Debomatic/commands.py:82 Debomatic/commands.py:87 Debomatic/build.py:218 #, python-format msgid "%(mapped)s mapped as %(mapper)s" msgstr "" #: Debomatic/commands.py:93 Debomatic/build.py:394 #, python-format msgid "Processing %s" msgstr "" #: Debomatic/commands.py:114 msgid "Performing a porter build" msgstr "" #: Debomatic/commands.py:132 Debomatic/commands.py:153 #: Debomatic/debomatic.py:150 Debomatic/debomatic.py:155 #, python-format msgid "Thread for %s scheduled" msgstr "" #: Debomatic/commands.py:136 msgid "Performing a package rebuild" msgstr "" #: Debomatic/commands.py:157 msgid "Removing files" msgstr "" #: Debomatic/commands.py:162 #, python-format msgid "Removing %s" msgstr "" #: Debomatic/build.py:61 msgid "Full build routine launched" msgstr "" #: Debomatic/build.py:63 msgid "Simple build routine launched" msgstr "" #: Debomatic/build.py:69 #, python-format msgid "Distribution %s is disabled" msgstr "" #: Debomatic/build.py:83 #, python-format msgid "Building %s" msgstr "" #: Debomatic/build.py:88 msgid "Pre-build hooks launched" msgstr "" #: Debomatic/build.py:96 msgid "Pre-build hooks finished" msgstr "" #: Debomatic/build.py:108 #, python-format msgid "Launching %s" msgstr "" #: Debomatic/build.py:122 Debomatic/build.py:327 Debomatic/build.py:350 #, python-format msgid "Unable to launch %s" msgstr "" #: Debomatic/build.py:123 msgid "Post-build hooks launched" msgstr "" #: Debomatic/build.py:131 msgid "Post-build hooks finished" msgstr "" #: Debomatic/build.py:133 #, python-format msgid "Build of %s complete" msgstr "" #: Debomatic/build.py:145 Debomatic/build.py:278 Debomatic/build.py:404 #, python-format msgid "Bad .changes file: %s" msgstr ".changes文件有错: %s" #: Debomatic/build.py:230 Debomatic/build.py:253 msgid "Chroot must be created" msgstr "" #: Debomatic/build.py:234 Debomatic/build.py:243 Debomatic/build.py:257 msgid "Chroot must be updated" msgstr "" #: Debomatic/build.py:335 #, python-format msgid "Launching %(builder)s %(cmd)s" msgstr "" #: Debomatic/build.py:346 #, python-format msgid "%(builder)s %(cmd)s failed" msgstr "" #: Debomatic/debomatic.py:49 msgid "You must run deb-o-matic as root" msgstr "你要以超级用户身份运行deb-o-matic" #: Debomatic/debomatic.py:63 msgid "Another instance is running. Aborting" msgstr "另一个实例正在运行。终止。" #: Debomatic/debomatic.py:67 msgid "Startup hooks launched" msgstr "" #: Debomatic/debomatic.py:69 msgid "Startup hooks finished" msgstr "" #: Debomatic/debomatic.py:77 msgid "Entering daemon mode" msgstr "" #: Debomatic/debomatic.py:88 msgid "Configuration file has not been specified" msgstr "" #: Debomatic/debomatic.py:90 #, python-format msgid "Configuration file %s does not exist" msgstr "配置文件 %s 不存在" #: Debomatic/debomatic.py:94 #, python-format msgid "Configuration file is not at version %s" msgstr "" #: Debomatic/debomatic.py:99 #, python-format msgid "Set \"%(opt)s\" in %(conffile)s" msgstr "" #: Debomatic/debomatic.py:130 msgid "Inotify loop started" msgstr "" #: Debomatic/debomatic.py:134 msgid "Timer loop started" msgstr "" #: Debomatic/debomatic.py:145 #, python-format msgid "Unable to access %s directory" msgstr "无法进入 %s 目录" #: Debomatic/debomatic.py:159 Debomatic/debomatic.py:181 msgid "Waiting for threads to complete..." msgstr "" #: Debomatic/debomatic.py:162 msgid "Shutdown hooks launched" msgstr "" #: Debomatic/debomatic.py:164 msgid "Shutdown hooks finished" msgstr "" #: Debomatic/debomatic.py:187 msgid "Obsolete lock removed" msgstr "" #: Debomatic/gpg.py:46 msgid "Keyring not found" msgstr "未找到密钥环" #: Debomatic/gpg.py:54 msgid "No valid signatures found" msgstr "未找到有效的签名"