mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-08-15 07:54:06 +00:00
Compare commits
1505 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
7dd913fe16 | ||
|
bcf3e153f7 | ||
|
466e2784de | ||
|
ba3f0511f9 | ||
|
2e550ceff2 | ||
|
6c8a5d74bd | ||
|
3d11516599 | ||
|
5a20308ab1 | ||
|
b551877651 | ||
|
4a4c4e0a27 | ||
|
865c1c97bc | ||
|
d09718e976 | ||
|
bff7baecc9 | ||
|
45fbbb5bd1 | ||
|
ca217c035e | ||
|
b5e117788b | ||
|
ddba2d1e98 | ||
|
02d65a5804 | ||
|
bda85fa6a8 | ||
|
86a83bf74d | ||
|
162e758671 | ||
|
049425adb7 | ||
|
f6ca6cad92 | ||
|
3dc17934d6 | ||
|
10a176567a | ||
|
86b366c6c5 | ||
|
50b580b30e | ||
|
6ba0641f63 | ||
|
1e815db9d2 | ||
|
e2f43318bd | ||
|
cdd81232d9 | ||
|
65044d84d9 | ||
|
19e40b49c2 | ||
|
55eb521461 | ||
|
983bb3b70e | ||
|
85f2e46f7d | ||
|
649c3db767 | ||
|
e7ba650414 | ||
|
3bc802a209 | ||
|
92c80d7bb7 | ||
|
d7362d9ed8 | ||
|
c7a855ff20 | ||
|
017941ad70 | ||
|
69914f861e | ||
|
454f1e30c8 | ||
|
55bc403a95 | ||
|
c9339aeae4 | ||
|
c205ee0381 | ||
|
7577e10f13 | ||
|
e328dc05c2 | ||
|
9a94c9dea1 | ||
|
47ab7b608b | ||
|
56044d8eac | ||
|
c523b4cfc4 | ||
|
3df40f6392 | ||
|
6ebffe3f4a | ||
|
f01234e8a5 | ||
|
43891eda88 | ||
|
132866e2ba | ||
|
a0fcac7777 | ||
|
490895075d | ||
|
5186e76d8d | ||
|
bf46f7fbc1 | ||
|
881602c4b9 | ||
|
c869d07f75 | ||
|
59041af613 | ||
|
0ec53180f2 | ||
|
c92fa6502f | ||
|
07d3158ade | ||
|
d5faa9b133 | ||
|
9e710a3d66 | ||
|
010af53d7c | ||
|
0bef4d7352 | ||
|
688202a7cf | ||
|
691c1381db | ||
|
f01502bda2 | ||
|
42f8e5c0d2 | ||
|
bb8a9f7394 | ||
|
a058c716b9 | ||
|
e64fe7e212 | ||
|
f07d3df40c | ||
|
f73f2c1df1 | ||
|
268d082226 | ||
|
6bc59d789e | ||
|
9a4cc312f4 | ||
|
ffc787b454 | ||
|
bce1ef88c5 | ||
|
a9eb902b83 | ||
|
cb7464cf61 | ||
|
19f1df1054 | ||
|
7f64dde12c | ||
|
c2539c6787 | ||
|
fd885ec239 | ||
|
abbc56e185 | ||
|
a2176110f0 | ||
|
a5185e4612 | ||
|
e90ceaf26b | ||
|
47fd5d7cca | ||
|
2f396fe549 | ||
|
5bda35f6b4 | ||
|
db916653cd | ||
|
784e7814e9 | ||
|
bed2dc470d | ||
|
414bc76b50 | ||
|
6f0caf1fc0 | ||
|
4bcc55372a | ||
|
232a73de31 | ||
|
9aab0135a2 | ||
|
23539f28b1 | ||
|
4a09d23db6 | ||
|
534cd254f4 | ||
|
29c3fa98bc | ||
|
7c9c7f2890 | ||
|
739279da3f | ||
|
7c11832ee0 | ||
|
f5512846d6 | ||
|
9e0dff4461 | ||
|
7129e6e27a | ||
|
79d30a9bfc | ||
|
2c6a8b5451 | ||
|
ad014685ea | ||
|
ff1c95e2c0 | ||
|
89e788bf48 | ||
|
a000e9db5e | ||
|
83158d24d9 | ||
|
6e6e1f1e1a | ||
|
c7a7767339 | ||
|
ac2f980e0f | ||
|
ccab82e054 | ||
|
2e4e8b35b2 | ||
|
53fcd577e8 | ||
|
8430d445d8 | ||
|
c8a757eb07 | ||
|
66a2773c1c | ||
|
17d2770451 | ||
|
3136541ca6 | ||
|
f3a0182e1a | ||
|
6498a13f18 | ||
|
d2debf9ed9 | ||
|
a11cb1f630 | ||
|
34578e6a1e | ||
|
21784052ba | ||
|
aa556af89d | ||
|
069a6926c0 | ||
|
444b319c12 | ||
|
4449cf2437 | ||
|
9fa29f6ad5 | ||
|
a160def2ab | ||
|
909d945af4 | ||
|
f6fde2e217 | ||
|
17bed46ffb | ||
|
72add78e9d | ||
|
ab64467f33 | ||
|
b1bc7e1cdc | ||
|
8692bc2b1c | ||
|
a685368ae9 | ||
|
4e27045f49 | ||
|
db0e091e44 | ||
|
3354b526b5 | ||
|
79d24c9df1 | ||
|
932166484b | ||
|
bd770fa6b1 | ||
|
3d54a17403 | ||
|
3bdb827516 | ||
|
0d94b5e747 | ||
|
0f3d2fed2a | ||
|
844d6d942c | ||
|
ae43fd1929 | ||
|
69ac109cdb | ||
|
9f2a53c166 | ||
|
a69c40d403 | ||
|
c1e4b14a98 | ||
|
096d5612e7 | ||
|
b510dbd91e | ||
|
803949ed8b | ||
|
e219eaa5fc | ||
|
60ee986014 | ||
|
dabe475067 | ||
|
0a9e18ed91 | ||
|
7859889438 | ||
|
a3c87e78aa | ||
|
05af489f64 | ||
|
d5fdc00396 | ||
|
7d278cde21 | ||
|
ad402231db | ||
|
562e6b13cd | ||
|
9c1561ff26 | ||
|
06a04f642f | ||
|
8f0005ce1d | ||
|
51ebfb21d3 | ||
|
f83161dcc2 | ||
|
bf5796c69e | ||
|
214da052b2 | ||
|
b9c9a21696 | ||
|
1f3e4a5ad7 | ||
|
835fe258ab | ||
|
5618358870 | ||
|
d1de55b320 | ||
|
87858a4387 | ||
|
cb48d71056 | ||
|
b2d259b415 | ||
|
533b9535aa | ||
|
7d3ea739a2 | ||
|
c53750694f | ||
|
0dde3262d1 | ||
|
3a903ca628 | ||
|
c7058559c5 | ||
|
13123c51c6 | ||
|
009b79224f | ||
|
7fc6788b35 | ||
|
3ef7c4a569 | ||
|
cd4d717551 | ||
|
d903160215 | ||
|
8fe22fbbb6 | ||
|
06038060b0 | ||
|
4d72d184db | ||
|
20261960f6 | ||
|
d05e023dfe | ||
|
de295fe524 | ||
|
1e2036399e | ||
|
85125e3c90 | ||
|
cfa45994d0 | ||
|
a74a49fb81 | ||
|
74867c90f4 | ||
|
b904993e05 | ||
|
000d3c1c2d | ||
|
9a44175a17 | ||
|
a9e2a2689d | ||
|
fec7a72ef7 | ||
|
9360b17bcb | ||
|
5eeb707142 | ||
|
c1b1c106dc | ||
|
266085d587 | ||
|
6ca12331d6 | ||
|
5fcc4b5b46 | ||
|
a3ff68be5a | ||
|
a1b56ac31f | ||
|
ceb020d0fa | ||
|
fbbcee9cc1 | ||
|
511aa3d80c | ||
|
6c8109b6ae | ||
|
296e498fe9 | ||
|
3f0d63d5b6 | ||
|
49527c36e1 | ||
|
14a8005d45 | ||
|
52032eb081 | ||
|
4fc36efcf2 | ||
|
7f227f6264 | ||
|
d598900df7 | ||
|
b4ca04efaa | ||
|
0eaf71737d | ||
|
1b12d8b4e3 | ||
|
be6e09a02b | ||
|
86276665cd | ||
|
3f2983c157 | ||
|
4f6d6bf2d8 | ||
|
df93a225a8 | ||
|
d8df8cc869 | ||
|
243a728d6c | ||
|
6e18d60de4 | ||
|
dbd453876e | ||
|
732ff00cac | ||
|
2ac69a89e3 | ||
|
4e5e6efdb1 | ||
|
e193c30695 | ||
|
6bf3640e8f | ||
|
5dcde81c58 | ||
|
30abe6eacd | ||
|
c0546396bf | ||
|
ef100f6166 | ||
|
3428a65b1c | ||
|
91e0babd93 | ||
|
952b331c22 | ||
|
e44bc63209 | ||
|
c2ea95c067 | ||
|
f25f815bef | ||
|
a0315dac8c | ||
|
ec36c7c792 | ||
|
9be49e7b93 | ||
|
90824e056c | ||
|
1093c372eb | ||
|
ff66707a4c | ||
|
128eca1a5b | ||
|
4f10be3f13 | ||
|
b687e11813 | ||
|
eca442bf35 | ||
|
ede8a77718 | ||
|
85ed9ad1ce | ||
|
f97b19554f | ||
|
a5ee35c812 | ||
|
d784fea1cd | ||
|
728849964e | ||
|
09537bd44d | ||
|
484a668c0a | ||
|
bc24ef23de | ||
|
ea549d6c19 | ||
|
7118411b89 | ||
|
2c6f87acd3 | ||
|
211416d2fd | ||
|
0eeb93ee0c | ||
|
b35712fa40 | ||
|
ee9b8756d9 | ||
|
9792f5b95c | ||
|
d8d4fd9285 | ||
|
9a38ad1b7b | ||
|
db181f4aa6 | ||
|
04ae04e17b | ||
|
ae3837be1d | ||
|
20036e6c36 | ||
|
e13a4eb45e | ||
|
cb865e3b86 | ||
|
61f0023c37 | ||
|
e5a42b1ba1 | ||
|
359cb18d8d | ||
|
b89ad962f4 | ||
|
58ca95e719 | ||
|
a26a154bc9 | ||
|
fed562405d | ||
|
248cf38d79 | ||
|
3d0921ee54 | ||
|
c29b660dbf | ||
|
b2f4ceee8e | ||
|
b6e0b5b388 | ||
|
494e0d6ddd | ||
|
2cfcbdb300 | ||
|
07d7381b4d | ||
|
d19ac157b0 | ||
|
6698b70f98 | ||
|
d464c1ffe8 | ||
|
42c659555c | ||
|
120f15ca50 | ||
|
4e63b2cbb5 | ||
|
f2118d6e7f | ||
|
52739e44ad | ||
|
12c2e6bf42 | ||
|
ae74f71a1e | ||
|
930c05621e | ||
|
48c7130008 | ||
|
3eefdec9b6 | ||
|
e7f0447342 | ||
|
90cb51becb | ||
|
e54a13743c | ||
|
07b81efd24 | ||
|
390be3f0b3 | ||
|
9d7ce2745f | ||
|
f8c0d87b6f | ||
|
02c531dfb5 | ||
|
5a428b462d | ||
|
6cc8040510 | ||
|
5856b6a41f | ||
|
d3a7eac62f | ||
|
a75fb35fc8 | ||
|
c5b5d554bc | ||
|
2720ffa12a | ||
|
bafe94c5c7 | ||
|
6a9bcc6e14 | ||
|
b00aea7aa5 | ||
|
322df409c2 | ||
|
b30df2b227 | ||
|
6c097233a9 | ||
|
4b3e9b8479 | ||
|
097eea7d5f | ||
|
622f550cc9 | ||
|
8d77c72c33 | ||
|
928da0ec02 | ||
|
f5aa75a3a5 | ||
|
529c2870fc | ||
|
ce4d8fb85f | ||
|
0aa7280f94 | ||
|
5a895e9685 | ||
|
8aa2d602c5 | ||
|
8f42fb976f | ||
|
ea30b9f5bc | ||
|
c622c30297 | ||
|
fe4d2f08a5 | ||
|
11429b213c | ||
|
eaa07014e0 | ||
|
8682c44957 | ||
|
20dd65b281 | ||
|
45253b398c | ||
|
e1f2cbf831 | ||
|
8ebd086aac | ||
|
9f428e471b | ||
|
907061c15e | ||
|
ee98423715 | ||
|
d98e16226b | ||
|
53fa2336b8 | ||
|
f5694d7cf6 | ||
|
7900a09763 | ||
|
f2b758f503 | ||
|
2decc105a2 | ||
|
41df9a33a4 | ||
|
36ffc92e00 | ||
|
3d7f542e49 | ||
|
ebe460aad1 | ||
|
5553d98e47 | ||
|
5838fa39ff | ||
|
63f614ebe3 | ||
|
f026b5d597 | ||
|
fe30873247 | ||
|
1e1702e676 | ||
|
f8fa865ab2 | ||
|
6e3d26185c | ||
|
c13988fbeb | ||
|
7b95e4c457 | ||
|
6e4ab93ff9 | ||
|
41345dd546 | ||
|
87f226258a | ||
|
82c8c438f7 | ||
|
1a30454d1e | ||
|
e37e9db7eb | ||
|
87a09640ba | ||
|
90e8fe81e1 | ||
|
c9c7fed1f6 | ||
|
7c097b19ba | ||
|
0f61836b10 | ||
|
b11b83f0e2 | ||
|
7084bfc8bc | ||
|
3491b0cff9 | ||
|
fb750e38bb | ||
|
3a413760f3 | ||
|
41a6c47ac2 | ||
|
e3268a62f4 | ||
|
cdaf5d0761 | ||
|
79b705d235 | ||
|
d7bcb012f6 | ||
|
ec72cf1538 | ||
|
3dabf05370 | ||
|
f4f16f95f7 | ||
|
b96885f05e | ||
|
f944d3146a | ||
|
9f58f5cb80 | ||
|
b0c22e1d57 | ||
|
506e3db601 | ||
|
d3b8d7a1b7 | ||
|
51231f116c | ||
|
d0aa64a51b | ||
|
b5ae0bdca3 | ||
|
463d1f63a8 | ||
|
c7b2149e1a | ||
|
8220accbe8 | ||
|
d3d63d6a59 | ||
|
17cce2602c | ||
|
0931098a2c | ||
|
982ebe6a46 | ||
|
ba2afc6429 | ||
|
21adb8f61f | ||
|
e083529784 | ||
|
9cd3479218 | ||
|
b76201967a | ||
|
dc6e03d38c | ||
|
c8602ba8a2 | ||
|
ec14165262 | ||
|
2c998a6fd2 | ||
|
0d9d78a721 | ||
|
e5c90b986c | ||
|
317b68bc08 | ||
|
7a6b779e77 | ||
|
454737b5bf | ||
|
4438c23a72 | ||
|
228c5710e7 | ||
|
2c4fcfc0b9 | ||
|
68b41fc82f | ||
|
434ca8952e | ||
|
19ba351f57 | ||
|
72a3420944 | ||
|
a7d166b52f | ||
|
06642ef9f7 | ||
|
38632a190e | ||
|
7b2f1a713b | ||
|
8bdf4f839a | ||
|
301569e809 | ||
|
bb765237db | ||
|
3d345113cc | ||
|
66afe7c6fc | ||
|
d681c7dc89 | ||
|
5f3247cfc0 | ||
|
96896fd2c8 | ||
|
16b9311995 | ||
|
6c375255c4 | ||
|
2c8c4d7268 | ||
|
3f5e56c75e | ||
|
76609fde49 | ||
|
673234e449 | ||
|
31d1ae269a | ||
|
b311cebaed | ||
|
81b17cd323 | ||
|
7c0efe2914 | ||
|
0de4509da6 | ||
|
4239d49582 | ||
|
6a60ee963d | ||
|
d1949a72aa | ||
|
118f95b62e | ||
|
3052bfcc16 | ||
|
05ce00a49a | ||
|
071ff40f20 | ||
|
2a0bffc2a0 | ||
|
a41af75643 | ||
|
7f9949fc4c | ||
|
23c7d67425 | ||
|
2d3765522e | ||
|
43ad610a66 | ||
|
9ef7545150 | ||
|
7c5f2431db | ||
|
2138919700 | ||
|
366ff25690 | ||
|
5769a70d02 | ||
|
03d2e89f31 | ||
|
7fd1a6a766 | ||
|
caaea17eec | ||
|
8ab21ea485 | ||
|
e163ee0158 | ||
|
b0421706d5 | ||
|
af622cb71e | ||
|
ae04bcfc43 | ||
|
dc3d2c0c2d | ||
|
6c47c075aa | ||
|
e0f6b6f97b | ||
|
ad6d560a15 | ||
|
c744f7441f | ||
|
3fb7516d72 | ||
|
257b0a8d67 | ||
|
1007bc87e8 | ||
|
cf91180e9a | ||
|
3f87486de3 | ||
|
07f2c179c2 | ||
|
6c404a3557 | ||
|
db13c754a5 | ||
|
9858a03a12 | ||
|
4a4ed663e0 | ||
|
dbbd7fcca0 | ||
|
5cf0f000db | ||
|
ae9c80de37 | ||
|
f9c4aeaae1 | ||
|
7143367610 | ||
|
eb84867721 | ||
|
fec29f22bc | ||
|
3bef7f999b | ||
|
fb22ba116f | ||
|
6b8a75bc99 | ||
|
dc5e586b99 | ||
|
c41f57686b | ||
|
c12595fa61 | ||
|
7d0205011a | ||
|
14a3dd5634 | ||
|
5b6445c1d0 | ||
|
2a620e9aa2 | ||
|
bc0c276364 | ||
|
1481ed8438 | ||
|
ff184c6780 | ||
|
0886e02435 | ||
|
190ad30a7b | ||
|
74df5b3869 | ||
|
468dbc7746 | ||
|
5ebd1eaa8d | ||
|
c5bc971f17 | ||
|
e763606da0 | ||
|
a2aacb28ff | ||
|
0ebcc329a3 | ||
|
105db5752b | ||
|
bdc647404f | ||
|
87e2e1b7aa | ||
|
607f5a712f | ||
|
10299855a5 | ||
|
06fc171980 | ||
|
92822060b2 | ||
|
1f7b7ea4ff | ||
|
eb844a2193 | ||
|
c40050f496 | ||
|
ddbd7f73c3 | ||
|
fc0919ed25 | ||
|
1ea9bce9b1 | ||
|
01906f8371 | ||
|
e88b4905bf | ||
|
afd95915e4 | ||
|
96d698e429 | ||
|
edb49c652c | ||
|
157411a199 | ||
|
224b059e30 | ||
|
0291ad07b0 | ||
|
a761ccfc72 | ||
|
4c66fba4d9 | ||
|
15841a3df6 | ||
|
798a36c2d8 | ||
|
59582ca06e | ||
|
0a3738cfbc | ||
|
d41602ba83 | ||
|
44dc0a9d88 | ||
|
179f45ca9c | ||
|
4471193d9c | ||
|
001d108b96 | ||
|
18ae4d8a39 | ||
|
cc7170eccb | ||
|
3a6cd3ac66 | ||
|
67c353d91b | ||
|
ba16daf56f | ||
|
6ee0915d3f | ||
|
bf52bd6fa3 | ||
|
6fea8fb542 | ||
|
f67601cb0c | ||
|
a6043a6ba8 | ||
|
88fbffaf49 | ||
|
3c138f6fe3 | ||
|
1c6b989590 | ||
|
e55c306a90 | ||
|
572f0f0156 | ||
|
e0c6689cb8 | ||
|
ab1e334e3e | ||
|
15a9f0e328 | ||
|
03fda64eae | ||
|
86b2c25c16 | ||
|
d67090f752 | ||
|
e56c0fce43 | ||
|
f232d121d2 | ||
|
4d07f85874 | ||
|
0575dd0112 | ||
|
53dc45e6e3 | ||
|
a595624527 | ||
|
139346addf | ||
|
bae9b3817d | ||
|
e903bf03d1 | ||
|
3a425de23e | ||
|
6fa16dd85e | ||
|
d140d6423b | ||
|
311f3d9a23 | ||
|
a753fedf7b | ||
|
de109e65c4 | ||
|
f7c0e64843 | ||
|
cb0e15a1e6 | ||
|
0ef87a90fe | ||
|
12c86a8fda | ||
|
a860b7cbaf | ||
|
8ac2c33059 | ||
|
91c5ff3bbf | ||
|
f0d22226a9 | ||
|
c4e998e165 | ||
|
30a6d4e304 | ||
|
ba4e195cde | ||
|
99eb51b4e1 | ||
|
9d09768bd1 | ||
|
dbeddb5559 | ||
|
221867ca37 | ||
|
24d9ce3e7c | ||
|
427ac0d620 | ||
|
149182a3cd | ||
|
124e421b61 | ||
|
646093d74a | ||
|
e162e7d580 | ||
|
8ae64c16e2 | ||
|
866adfd768 | ||
|
5da114b070 | ||
|
ed0cd2c1b5 | ||
|
412afabc1c | ||
|
1bab644191 | ||
|
ddabeed530 | ||
|
d86cacddf9 | ||
|
b8cf7b113e | ||
|
dae4c18c9e | ||
|
a7f4fc202b | ||
|
8b5db046be | ||
|
509b612b0f | ||
|
e959384f02 | ||
|
8c6371a416 | ||
|
c8ec463f7a | ||
|
57ea2cc410 | ||
|
194d23e878 | ||
|
e20d125709 | ||
|
3f512ee337 | ||
|
1d2f7f6d0d | ||
|
ea74634e93 | ||
|
1558b91dde | ||
|
1bbedd4ddd | ||
|
0c211c1bc7 | ||
|
65ab539516 | ||
|
a7dedd9296 | ||
|
d4f6ef320e | ||
|
88e3d1d6ba | ||
|
522030be12 | ||
|
72487d0477 | ||
|
7d70b6b3a3 | ||
|
a46a78b97f | ||
|
cbc2e76c74 | ||
|
7f13148ef4 | ||
|
bd226fc4e6 | ||
|
383cb8afef | ||
|
1c9762c3eb | ||
|
fbf0dcb259 | ||
|
d850fc8cab | ||
|
12ee7e71e3 | ||
|
b0209ce796 | ||
|
50e589a239 | ||
|
ad94031d84 | ||
|
02d3f8f3a0 | ||
|
c1e3ca14dc | ||
|
349ba9ef90 | ||
|
e21f15865c | ||
|
48d0285c93 | ||
|
75fd3b13bf | ||
|
1ecf020703 | ||
|
1ea8a4ef18 | ||
|
b07271fdf8 | ||
|
585902ad87 | ||
|
6f692c08a1 | ||
|
f07c0f8ccb | ||
|
0b6ba08175 | ||
|
5a8b4f9682 | ||
|
06874a8bad | ||
|
cc0e65e51c | ||
|
0ee01ef534 | ||
|
769ccd0f62 | ||
|
79abf8a50f | ||
|
22a7f51a9a | ||
|
2b5e91e32e | ||
|
6b84afdeeb | ||
|
a26129d283 | ||
|
ef37995a71 | ||
|
658946c214 | ||
|
a41422a7f4 | ||
|
0aaa0f1f4a | ||
|
bcdc6abbf8 | ||
|
b809e2deb0 | ||
|
9c28d4db7a | ||
|
19628caf13 | ||
|
eebe632337 | ||
|
7206593bc9 | ||
|
c2aa97dba2 | ||
|
70e79d313c | ||
|
9715d1de0a | ||
|
8440cef85b | ||
|
374d33464c | ||
|
59a79376cb | ||
|
c6c7699c86 | ||
|
77bde6c1c0 | ||
|
8bcad215ef | ||
|
5d02fe7a3e | ||
|
957a73772d | ||
|
a3bd35bd0c | ||
|
d6d933e8d5 | ||
|
8faeb46334 | ||
|
5f3e359ab6 | ||
|
d9763747d3 | ||
|
a23998a8f3 | ||
|
fabb0119ef | ||
|
487bc3a3c9 | ||
|
b84b312f44 | ||
|
71f84d4499 | ||
|
d04722f799 | ||
|
c3baa6ecbb | ||
|
5575d70531 | ||
|
34ca8072ff | ||
|
60e063e484 | ||
|
a9c0df9627 | ||
|
925e1c787e | ||
|
07c09fee81 | ||
|
143027d9fc | ||
|
18c8eaddb4 | ||
|
a87e0b6b80 | ||
|
fd4dde338a | ||
|
266e9a2df1 | ||
|
a8c89ab3fc | ||
|
9ec2dda809 | ||
|
e15667aa2f | ||
|
87d76c813a | ||
|
d826cd20e0 | ||
|
4dc40f4f4a | ||
|
0d32f2f838 | ||
|
6844b5aa48 | ||
|
c6c7cc7c1f | ||
|
cc55071afd | ||
|
1c698ff626 | ||
|
24e1161d3c | ||
|
0adca3f7a1 | ||
|
586197d591 | ||
|
73461fca08 | ||
|
e30a6e51a7 | ||
|
f29e729852 | ||
|
9baf39a262 | ||
|
b3f16cbee2 | ||
|
d3971342d8 | ||
|
73acf77646 | ||
|
c946f9457f | ||
|
4d28dfb9e6 | ||
|
0a5812f168 | ||
|
a8a1eef67a | ||
|
9b5cfb114d | ||
|
fd07e8e831 | ||
|
605b27a550 | ||
|
4056e98a43 | ||
|
fa83ac6b0b | ||
|
139e5dfda7 | ||
|
9f33928d38 | ||
|
4f308cdf62 | ||
|
1804158370 | ||
|
28b475ce7b | ||
|
b51dddcdc4 | ||
|
c0708dd41b | ||
|
3eff164421 | ||
|
d45bb86bcd | ||
|
024e48dcba | ||
|
2861c54ad7 | ||
|
e43486d4a1 | ||
|
885c0f90ec | ||
|
aa2730f07f | ||
|
f521caa013 | ||
|
026272428d | ||
|
337917c4d9 | ||
|
93fbe4c71c | ||
|
c759e49570 | ||
|
cdde59f436 | ||
|
4ef5a12e60 | ||
|
3136efc10d | ||
|
4f66ed834b | ||
|
0f5ab96310 | ||
|
fdbf495f15 | ||
|
055dce8f40 | ||
|
d692d7b79b | ||
|
ebe44bf04e | ||
|
b84c4d8530 | ||
|
314ed77d77 | ||
|
343ac49b39 | ||
|
4dbde5f886 | ||
|
165bb84bf5 | ||
|
e47a99c42a | ||
|
2a2e420353 | ||
|
ed96c35dc1 | ||
|
927947841c | ||
|
d69622fa9c | ||
|
b26dbaee68 | ||
|
083d44f676 | ||
|
b8a2ca9e5a | ||
|
71aab84949 | ||
|
4019f98594 | ||
|
42d9c851f1 | ||
|
b05cbfd8f9 | ||
|
36088bad6c | ||
|
42a76abaa7 | ||
|
d9bf247dee | ||
|
18f3109cee | ||
|
3c81209b34 | ||
|
ecc9501387 | ||
|
6e7a7bac35 | ||
|
c58f620d09 | ||
|
52fc42ca8f | ||
|
872957da4e | ||
|
790fb3a31a | ||
|
63aedf6912 | ||
|
ee569590a6 | ||
|
dead85ee75 | ||
|
2e9d81bdda | ||
|
346aae9d42 | ||
|
0eb6010448 | ||
|
40380a96c4 | ||
|
b5bec951c0 | ||
|
f17b90d30c | ||
|
b1eda34239 | ||
|
767951addb | ||
|
fdbb9b345c | ||
|
2afe15c4a3 | ||
|
f363b745ff | ||
|
30da459114 | ||
|
948032d8a3 | ||
|
aafcbd082e | ||
|
03e13834b9 | ||
|
cb225bd8f2 | ||
|
08754a3c71 | ||
|
d373b65c3e | ||
|
0713ff4f94 | ||
|
4e8e44a788 | ||
|
f245b24f30 | ||
|
a9386ef070 | ||
|
682f5859ae | ||
|
a0a25fc6ea | ||
|
e44205bb33 | ||
|
f124357734 | ||
|
69d226d489 | ||
|
12329170f1 | ||
|
9e1a6f6ff9 | ||
|
bbfbfd8956 | ||
|
e1e13bbfdc | ||
|
705335a220 | ||
|
3f6eb545e2 | ||
|
fb44f55379 | ||
|
edea7a2b9c | ||
|
d3144ea253 | ||
|
3f1644fad6 | ||
|
58e6dfbbdb | ||
|
9482e7b9f9 | ||
|
919f091820 | ||
|
34efc162a2 | ||
|
c4a2361451 | ||
|
3f08738b67 | ||
|
671fcab5c8 | ||
|
067fd52b5c | ||
|
a3f9eeed9f | ||
|
8e341da95c | ||
|
df04e14503 | ||
|
784efd7053 | ||
|
75c139ace8 | ||
|
a55229619e | ||
|
e4fcb01b6a | ||
|
8178324266 | ||
|
73f2273d71 | ||
|
198d5a8720 | ||
|
6ad66e3d42 | ||
|
90628d7ee7 | ||
|
bba53d9f7a | ||
|
c289c20b88 | ||
|
8ca2144a74 | ||
|
b771bf89b0 | ||
|
79e525d260 | ||
|
dc9d6b5bf3 | ||
|
1f2d2e8d62 | ||
|
857778b922 | ||
|
86ba4c99ca | ||
|
b4e0849690 | ||
|
f4793f0df0 | ||
|
7d5efa8a76 | ||
|
89e15a2f5d | ||
|
2da0560c68 | ||
|
973e1b51c1 | ||
|
4988d36ba2 | ||
|
a22f4eebab | ||
|
405a3c3327 | ||
|
ff644a2ca1 | ||
|
25694bdfdd | ||
|
dcef46eeea | ||
|
3a403daf6b | ||
|
09a870fa43 | ||
|
d420a25b94 | ||
|
58ee0de242 | ||
|
0d2d356ddb | ||
|
6ef82feac4 | ||
|
710aa8aa5a | ||
|
3ea5038905 | ||
|
89192f4e69 | ||
|
121af2e631 | ||
|
e68d3a699d | ||
|
9442e2ea30 | ||
|
899d1b5361 | ||
|
8a6502aaa4 | ||
|
32a85dc172 | ||
|
30cb57b32c | ||
|
d18a35c449 | ||
|
12030d99e9 | ||
|
fce947e0f4 | ||
|
2e8f16c972 | ||
|
bb1dcea894 | ||
|
5b8ac8354e | ||
|
ff9305976b | ||
|
9199747fc3 | ||
|
6c36b6dd6c | ||
|
e556fdae00 | ||
|
9c20cc13a3 | ||
|
75067b3cf3 | ||
|
88fe0e1bb8 | ||
|
3fca602809 | ||
|
9d227eb205 | ||
|
0e3a831df9 | ||
|
fc9ddd974e | ||
|
10e9b18ca7 | ||
|
d9c00752c0 | ||
|
1034cd0cb4 | ||
|
677e1b8e4e | ||
|
ea962ee2ac | ||
|
73843307f0 | ||
|
053b4dcc30 | ||
|
5f27c4c1e7 | ||
|
20e757b2a5 | ||
|
42e8c8b643 | ||
|
d0f707f33d | ||
|
83f9fba796 | ||
|
8d551acfb5 | ||
|
7ed4347de5 | ||
|
d30ffe59bc | ||
|
e56edac012 | ||
|
8d83b9b1de | ||
|
430fc81aab | ||
|
9ba1790863 | ||
|
7dfb6c3ed7 | ||
|
70a035f13d | ||
|
b70681960f | ||
|
5920bb9b35 | ||
|
af440c1703 | ||
|
41917433bd | ||
|
8c63520bac | ||
|
31e6991f24 | ||
|
26ff36479a | ||
|
fc669d8645 | ||
|
c85373f911 | ||
|
08afc2a0a9 | ||
|
35b742c1e8 | ||
|
3560b7a7f8 | ||
|
b03fb1f73f | ||
|
697b8d6bd3 | ||
|
82951a2716 | ||
|
2e217ac51e | ||
|
dd7c37e130 | ||
|
6a6f0ca9cb | ||
|
6f9551f1cb | ||
|
1a507e34b0 | ||
|
09e468211a | ||
|
cefbe3ccc2 | ||
|
0838fc6390 | ||
|
3d6d497df3 | ||
|
f0a0d62a5b | ||
|
1f91b015ab | ||
|
629fbd14ad | ||
|
054423d016 | ||
|
d4fbed617f | ||
|
f06bc5b375 | ||
|
cdec3f5868 | ||
|
ad463fb831 | ||
|
ce61a43a13 | ||
|
c4c758cc17 | ||
|
9d493af4b0 | ||
|
391e9c7f07 | ||
|
390d6f5a8d | ||
|
12b5dfd4da | ||
|
45db7b738e | ||
|
8aefff3758 | ||
|
3910b88ee9 | ||
|
6e4c276d1f | ||
|
9bcda8d239 | ||
|
8aa54e7cff | ||
|
885b241709 | ||
|
f6344a01c5 | ||
|
20cb64e557 | ||
|
84e7c2ccab | ||
|
840421c7c6 | ||
|
222ab46cff | ||
|
d125c47081 | ||
|
6155633e85 | ||
|
6ac3640c95 | ||
|
fae3d8db54 | ||
|
7466d8438b | ||
|
bb4f0d4295 | ||
|
c5201e1847 | ||
|
3d2127478d | ||
|
d0149b00d7 | ||
|
8f914adf7a | ||
|
1948b455be | ||
|
ab02df8cd1 | ||
|
c44f53e185 | ||
|
fed4e17188 | ||
|
f712a32238 | ||
|
6be22ce24b | ||
|
532e055b7c | ||
|
da18852892 | ||
|
5b12d0746c | ||
|
a944e7ea7f | ||
|
a9677cbe33 | ||
|
e899e83543 | ||
|
5bf59a2cd7 | ||
|
08513b1897 | ||
|
2ad6ec42dd | ||
|
41319d5069 | ||
|
56220bdd23 | ||
|
09b49cda66 | ||
|
c921d40a9f | ||
|
4f871e64b1 | ||
|
be30dcfdbb | ||
|
2b51da9af7 | ||
|
4750a90f80 | ||
|
fdd01746fe | ||
|
578273e517 | ||
|
b020d4a0fb | ||
|
aab58522ad | ||
|
e7c0233ca6 | ||
|
9b93191e17 | ||
|
fc3d02f28f | ||
|
7abc5b2184 | ||
|
c401cbb150 | ||
|
bf5de3c686 | ||
|
05b3f16f58 | ||
|
7099f9d98d | ||
|
ba472b71d9 | ||
|
663cb5214f | ||
|
5942694e6f | ||
|
268fea2a1c | ||
|
6fdef19b2c | ||
|
1e126f74d1 | ||
|
d52393da1b | ||
|
98617b342b | ||
|
7a08470ca1 | ||
|
05ec1d133d | ||
|
01bc2ab948 | ||
|
46f3f929bc | ||
|
1c814c8ec6 | ||
|
1aabfec757 | ||
|
754b3128a3 | ||
|
2f17d27ca7 | ||
|
cd236932de | ||
|
97634a34d1 | ||
|
ee62d21ba1 | ||
|
98f0ba6bb1 | ||
|
bf0709edf6 | ||
|
8bb4628586 | ||
|
dc962d7a3f | ||
|
f82cd1f2cc | ||
|
a29c6076f7 | ||
|
db2c5f4fbe | ||
|
1fc55fe66d | ||
|
a04a6a9602 | ||
|
ca2abaa613 | ||
|
29f1538d90 | ||
|
de25fb4a6c | ||
|
178456394e | ||
|
6ee66a6efc | ||
|
8543e3c5f9 | ||
|
3a07cf4a74 | ||
|
1dda02513c | ||
|
2663e8c1b2 | ||
|
e591ab20cf | ||
|
ba6bd9186b | ||
|
e9efe8d0f0 | ||
|
dc37cf94b3 | ||
|
5e59f725c0 | ||
|
700d2473a0 | ||
|
ec13baee65 | ||
|
e47bff4bed | ||
|
4f043a34e0 | ||
|
37917959fc | ||
|
b5ca7c1971 | ||
|
0ed7d2466d | ||
|
b35a2611af | ||
|
b314aa599c | ||
|
7c40574cf4 | ||
|
36bc8ee0f7 | ||
|
328e7bb241 | ||
|
cfa2134468 | ||
|
796ad86236 | ||
|
b68895d129 | ||
|
6e719c751d | ||
|
17b287e7bf | ||
|
0d4c692262 | ||
|
54cb83cd4d | ||
|
c9a2b9ac2b | ||
|
7196ad55f1 | ||
|
7c994cefee | ||
|
6f5982b9a7 | ||
|
a3378ee9fc | ||
|
8b273361cb | ||
|
c994254e4b | ||
|
d889f5af5a | ||
|
2b074fb581 | ||
|
5ac091b867 | ||
|
144f957675 | ||
|
8d35759719 | ||
|
01f8a0bd87 | ||
|
32db0692a3 | ||
|
b696cade13 | ||
|
fe102eaa5b | ||
|
59b69d3767 | ||
|
dbda709ce3 | ||
|
497177760b | ||
|
91c70189fd | ||
|
95e5437f44 | ||
|
165279fae9 | ||
|
76fabbe0ba | ||
|
1277344ec8 | ||
|
ed6962c413 | ||
|
26d68da791 | ||
|
1d1f86cb9c | ||
|
e04d4df889 | ||
|
13c0d09c25 | ||
|
13a6851a10 | ||
|
1cb0bfd1e7 | ||
|
ce2f96bc0d | ||
|
3e3b9bcff5 | ||
|
a6b95b7d53 | ||
|
a4000c606c | ||
|
44df5e3081 | ||
|
2aaa7de246 | ||
|
d624e9d18f | ||
|
9bc479dbcb | ||
|
f40db6836e | ||
|
38ade0ea7d | ||
|
189bfa238a | ||
|
1d68d8064c | ||
|
e3693820e5 | ||
|
c55c731237 | ||
|
fc3a05db7a | ||
|
0a2d4b11a8 | ||
|
f91f61f8d4 | ||
|
ff41896cc8 | ||
|
5eb960dd3f | ||
|
d26a7521b0 | ||
|
a3e252dece | ||
|
da15a35063 | ||
|
0ef30ff665 | ||
|
87e1cadcb0 | ||
|
0735ad8de3 | ||
|
f8d4866cbc | ||
|
ecaaa33fdc | ||
|
7386ca4d0c | ||
|
b9353d781a | ||
|
e8b02a39b2 | ||
|
e6bde18b04 | ||
|
2b03e3ca99 | ||
|
91bad45ec1 | ||
|
fdfef34b37 | ||
|
122e711d28 | ||
|
abfdd76f01 | ||
|
0744d360cc | ||
|
3eb727f3ca | ||
|
aa99618dd6 | ||
|
7acdaaf977 | ||
|
e124934502 | ||
|
405141964e | ||
|
04d4e0f3d9 | ||
|
8e8a5d7e52 | ||
|
a8965d486d | ||
|
5f374b192b | ||
|
d0afcbd295 | ||
|
3449fc6a64 | ||
|
5762512710 | ||
|
5f88f85278 | ||
|
5c960d720b | ||
|
ae55aac31b | ||
|
6e05bb7e74 | ||
|
b4a6cf5310 | ||
|
9357415020 | ||
|
40624a2443 | ||
|
798ed69085 | ||
|
a03fa654f3 | ||
|
0737f186fe | ||
|
ebbaada218 | ||
|
61cc8e57ba | ||
|
dfdbce7108 | ||
|
19c33e5e32 | ||
|
be202b94d5 | ||
|
544c21ba3a | ||
|
ba5566c4a1 | ||
|
c1eac4b0a9 | ||
|
dd46215fbe | ||
|
814fba1ade | ||
|
e6e0b97226 | ||
|
24452f43df | ||
|
78a427ad2c | ||
|
ffa4991cb4 | ||
|
71b8bf786f | ||
|
984ebf5e9b | ||
|
5c96b78d72 | ||
|
146b1619f1 | ||
|
de32133e75 | ||
|
0d3b618c0b | ||
|
16300e471f | ||
|
1a6fb270b4 | ||
|
2560aa210b | ||
|
2398d09ba4 | ||
|
d69e21a0af | ||
|
dcad51ec87 | ||
|
4349bcad39 | ||
|
6aee8410eb | ||
|
1c248875b4 | ||
|
c13550bcb6 | ||
|
1cd7d50b85 | ||
|
dfc4566257 | ||
|
7fd1e122d7 | ||
|
d82e65e0e2 | ||
|
6e70eb821e | ||
|
0cb8bf54d8 | ||
|
aa96842c84 | ||
|
3a91cf964d | ||
|
e8b3a18c45 | ||
|
e9b5d0aa20 | ||
|
a3e16b12b6 | ||
|
e6ccf7c66c | ||
|
29307e4566 | ||
|
4e8a631483 | ||
|
f8abc5b881 | ||
|
2d4683260b | ||
|
5287637ffd | ||
|
b6631943f3 | ||
|
7a104714c4 | ||
|
58334ba46d | ||
|
289d9244b0 | ||
|
a5691d4cd1 | ||
|
cf40e7bccf | ||
|
aecd1169fd | ||
|
7a45eede4a | ||
|
d94994b1f4 | ||
|
b4b217ade5 | ||
|
eee6501a18 | ||
|
328def15a2 | ||
|
ccbb9300f4 | ||
|
05f5ce10c8 | ||
|
6f26c6b58e | ||
|
7212902eb8 | ||
|
dceda81ff2 | ||
|
427aad7b15 | ||
|
cd533a92cb | ||
|
72b504ca2e | ||
|
3f06a00904 | ||
|
7218468e18 | ||
|
ebe04d88b0 | ||
|
dfc7a2ce26 | ||
|
11d380cfd8 | ||
|
640663269f | ||
|
f646002543 | ||
|
344cf5b718 | ||
|
7f7289bed9 | ||
|
96381b0ff3 | ||
|
1d36de0fbb | ||
|
c38452bb43 | ||
|
c5f75d2af3 | ||
|
e9cea63f52 | ||
|
4bd2570416 | ||
|
66a1d33481 | ||
|
d0aa685788 | ||
|
4dc91f0366 | ||
|
bfd984568f | ||
|
5ec650697c | ||
|
1ad1e42fb9 | ||
|
097fc7f7b6 | ||
|
a2eece166e | ||
|
87e4d3557a | ||
|
a72810805f | ||
|
2d74893dd2 | ||
|
457a6c6bee | ||
|
3386a80945 | ||
|
f5ce76d52e | ||
|
e3ea0c9b97 | ||
|
5bb84b1548 | ||
|
d9ec09c396 | ||
|
a3381c3724 | ||
|
4465bcd28c | ||
|
11fc1380f7 | ||
|
fd235db083 | ||
|
7f471eb318 | ||
|
69ec667c35 | ||
|
bc54558c3c | ||
|
fdb7a3d716 | ||
|
354b34ea1a | ||
|
d91afb44bb | ||
|
1329a9338d | ||
|
de373f2ddc | ||
|
343d5e97b4 | ||
|
63a99bb3bc | ||
|
1787c499ff | ||
|
24a1820266 | ||
|
010639eba5 | ||
|
280d8c1172 | ||
|
fd49a767bb | ||
|
56b5ee1703 | ||
|
877592d0a4 | ||
|
82187df277 | ||
|
b67cf6e986 | ||
|
e38f84cb64 | ||
|
1fe068de96 | ||
|
914af6bdfe | ||
|
1ce4774db7 | ||
|
6e485c2a7b | ||
|
9736ae4655 | ||
|
989aecd253 | ||
|
aae8cce991 | ||
|
faf30c45ec | ||
|
b354beb244 | ||
|
70d5255a48 | ||
|
abe0b35261 | ||
|
e0bc0afc78 | ||
|
36b422605b | ||
|
c8a854cc4a | ||
|
a93078cb32 | ||
|
7c723753e6 | ||
|
73518f83b5 | ||
|
e85a6f604f | ||
|
bebc67ec72 | ||
|
b4267dc5a7 | ||
|
c409ef2e4d | ||
|
a623269d2f | ||
|
5d7289caad | ||
|
35d3c4aee4 | ||
|
3d7657e466 | ||
|
997fb23b2d | ||
|
fe63eaec05 | ||
|
77c95c7f24 | ||
|
ebe9bfe05b | ||
|
dd7fd86c3d | ||
|
755166deec | ||
|
6bbdecfd7e | ||
|
95e7b5cd44 | ||
|
f797b18618 | ||
|
3887bc06b1 | ||
|
f53448ab4b | ||
|
d054dcf796 | ||
|
ddf4bac12e | ||
|
3ab7f120da | ||
|
834a2947dd | ||
|
5e28efeca2 | ||
|
7f311a2852 | ||
|
bae108a7ae | ||
|
8c0e535b29 | ||
|
5480d7bcef | ||
|
02c7c47ece | ||
|
13fbbcb4f3 | ||
|
c175f31ea7 | ||
|
cfa69ccf43 | ||
|
fef245e07c | ||
|
5ef61615ce | ||
|
186e6f13da | ||
|
b2b37159d5 | ||
|
6265047606 | ||
|
9ebaa17ad8 | ||
|
df38124295 | ||
|
fd6b8cdab0 | ||
|
99e6e3cc27 | ||
|
c896352a20 | ||
|
e1fe418927 | ||
|
2faba4eb3e | ||
|
b5fe00acc2 | ||
|
c4ffe8ad0b | ||
|
5fd32ddc17 | ||
|
dccc33c454 | ||
|
773c5c33e0 | ||
|
f8f79ecf99 | ||
|
8657394219 | ||
|
d80f8248b8 | ||
|
55d8398445 | ||
|
06132eec9b | ||
|
5b7535a628 | ||
|
ad837ae9cf | ||
|
142fcc94a3 | ||
|
526b7e63c6 | ||
|
bc3e647fc3 | ||
|
ce34dff75f | ||
|
19f4f57c8c | ||
|
eff2b11d81 | ||
|
df28e21b54 | ||
|
4faba7c569 | ||
|
b5ede6ab85 | ||
|
0dbaa60945 | ||
|
e84d3ed9db | ||
|
4ac501214d | ||
|
b248387f32 | ||
|
eeb8efc0b1 | ||
|
2c84b5db5b | ||
|
a1cafe8843 | ||
|
574f6a239d | ||
|
9bb93b6fc0 | ||
|
eb22cc206b | ||
|
b64ce68971 | ||
|
3bfd76f9d4 | ||
|
88c4a0fc7f | ||
|
3db76b355a | ||
|
876d8fdd8e | ||
|
013af48c51 | ||
|
6e38700f26 | ||
|
7d6f5ecb56 | ||
|
fd5da7c92b | ||
|
e6f97df7a7 | ||
|
f31ed78711 | ||
|
aa181c12ff | ||
|
1a8951e82d | ||
|
3b97f4f3e5 | ||
|
90b34b936f | ||
|
76876a11f0 | ||
|
4a97dee930 | ||
|
a5c5215959 | ||
|
d68b83af1d | ||
|
19221fd2bc | ||
|
c1a3f11583 | ||
|
038cd428d3 | ||
|
b1b1c9a91a | ||
|
1bc68bd2cf | ||
|
bb718951ed | ||
|
b11d08f6b0 | ||
|
495d14b69d | ||
|
baf7a803ae | ||
|
f4bbff9e9c | ||
|
e48a2c92d4 | ||
|
394d956a37 | ||
|
b62377b374 | ||
|
d7c0cad962 | ||
|
ed91b960e2 | ||
|
a99497b5ce | ||
|
4c299794a9 | ||
|
45317aa8e0 | ||
|
cdd93a4cd8 | ||
|
3ef8324ff7 | ||
|
d9a9b4cab4 | ||
|
5ad9ee9f5b | ||
|
c52f0965e7 | ||
|
182cab66c4 | ||
|
6b1ad27167 | ||
|
531aaba3a0 | ||
|
b78922b14a | ||
|
26c2198838 | ||
|
a3b82ff2e9 | ||
|
36f7f7729f | ||
|
620f3fb25a | ||
|
eed9304664 | ||
|
a2da2da87b | ||
|
3013ee034a | ||
|
1fb2545712 | ||
|
6c118ef1fe | ||
|
51fe0a4db8 | ||
|
5553c11ddd | ||
|
adc2b7869d | ||
|
62073c1085 | ||
|
1b93ed57ed | ||
|
be79f00dff | ||
|
2c27cf68a6 | ||
|
f7525d6dd5 | ||
|
c46bb9ed88 |
@ -1,2 +0,0 @@
|
|||||||
[BUILDDEB]
|
|
||||||
native = True
|
|
@ -1,9 +0,0 @@
|
|||||||
/.shelf/
|
|
||||||
/build/
|
|
||||||
/python-build-stamp-*
|
|
||||||
/debian/files
|
|
||||||
/debian/ubuntu-dev-tools/
|
|
||||||
/debian/ubuntu-dev-tools.debhelper.log
|
|
||||||
/debian/ubuntu-dev-tools.*.debhelper
|
|
||||||
/debian/ubuntu-dev-tools.substvars
|
|
||||||
ubuntu_dev_tools.egg-info
|
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
__pycache__
|
||||||
|
*.egg-info
|
65
.pylintrc
Normal file
65
.pylintrc
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
[MASTER]
|
||||||
|
|
||||||
|
# A comma-separated list of package or module names from where C extensions may
|
||||||
|
# be loaded. Extensions are loading into the active Python interpreter and may
|
||||||
|
# run arbitrary code.
|
||||||
|
extension-pkg-allow-list=apt_pkg
|
||||||
|
|
||||||
|
# Pickle collected data for later comparisons.
|
||||||
|
persistent=no
|
||||||
|
|
||||||
|
# Use all cpus, to speed up testing
|
||||||
|
jobs=0
|
||||||
|
|
||||||
|
|
||||||
|
[MESSAGES CONTROL]
|
||||||
|
|
||||||
|
# Disable the message, report, category or checker with the given id(s). You
|
||||||
|
# can either give multiple identifiers separated by comma (,) or put this
|
||||||
|
# option multiple times (only on the command line, not in the configuration
|
||||||
|
# file where it should appear only once).You can also use "--disable=all" to
|
||||||
|
# disable everything first and then reenable specific checks. For example, if
|
||||||
|
# you want to run only the similarities checker, you can use "--disable=all
|
||||||
|
# --enable=similarities". If you want to run only the classes checker, but have
|
||||||
|
# no Warning level messages displayed, use"--disable=all --enable=classes
|
||||||
|
# --disable=W"
|
||||||
|
disable=fixme,locally-disabled,missing-docstring,useless-option-value,
|
||||||
|
# TODO: Fix all following disabled checks!
|
||||||
|
invalid-name,
|
||||||
|
consider-using-with,
|
||||||
|
too-many-arguments,
|
||||||
|
too-many-branches,
|
||||||
|
too-many-statements,
|
||||||
|
too-many-locals,
|
||||||
|
duplicate-code,
|
||||||
|
too-many-instance-attributes,
|
||||||
|
too-many-nested-blocks,
|
||||||
|
too-many-lines,
|
||||||
|
|
||||||
|
|
||||||
|
[REPORTS]
|
||||||
|
|
||||||
|
# Tells whether to display a full report or only the messages
|
||||||
|
reports=no
|
||||||
|
|
||||||
|
|
||||||
|
[FORMAT]
|
||||||
|
|
||||||
|
# Maximum number of characters on a single line.
|
||||||
|
max-line-length=99
|
||||||
|
|
||||||
|
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
|
||||||
|
# tab).
|
||||||
|
indent-string=' '
|
||||||
|
|
||||||
|
|
||||||
|
[BASIC]
|
||||||
|
|
||||||
|
# Allow variables called e, f, lp
|
||||||
|
good-names=i,j,k,ex,Run,_,e,f,lp,me,to
|
||||||
|
|
||||||
|
|
||||||
|
[IMPORTS]
|
||||||
|
|
||||||
|
# Force import order to recognize a module as part of a third party library.
|
||||||
|
known-third-party=debian
|
176
404main
176
404main
@ -1,176 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# Copyright 2006-2007 (C) Pete Savage <petesavage@ubuntu.com>
|
|
||||||
# Copyright 2007 (C) Siegfried-A. Gevatter <rainct@ubuntu.com>
|
|
||||||
# Copyright 2009 (C) Canonical Ltd. (by Colin Watson <cjwatson@ubuntu.com>)
|
|
||||||
#
|
|
||||||
# ##################################################################
|
|
||||||
#
|
|
||||||
# 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 2
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# See file /usr/share/common-licenses/GPL for more details.
|
|
||||||
#
|
|
||||||
# ##################################################################
|
|
||||||
#
|
|
||||||
# This script is used to check if a package and all its build
|
|
||||||
# dependencies are in main or not.
|
|
||||||
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
|
|
||||||
import apt_pkg
|
|
||||||
import apt
|
|
||||||
|
|
||||||
def process_deps(cache, deps):
|
|
||||||
"""Takes a list of (build) dependencies and processes it."""
|
|
||||||
|
|
||||||
for basedep in [d.or_dependencies[0] for d in deps]:
|
|
||||||
if not packages.has_key(basedep.name) and basedep.name != '':
|
|
||||||
# Check the (build) dependencies recursively
|
|
||||||
find_main(cache, basedep.name)
|
|
||||||
|
|
||||||
|
|
||||||
def get_package_version(cache, distro, pack):
|
|
||||||
if pack not in cache:
|
|
||||||
return None
|
|
||||||
for version in (cache[pack].candidate, cache[pack].installed):
|
|
||||||
if not version:
|
|
||||||
continue
|
|
||||||
for origin in version.origins:
|
|
||||||
if origin.archive == distro:
|
|
||||||
return version
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
# Cache::CompTypeDeb isn't exposed via python-apt
|
|
||||||
def comp_type_deb(op):
|
|
||||||
ops = ("", "<=", ">=", "<<", ">>", "=", "!=")
|
|
||||||
if (op & 15) < 7:
|
|
||||||
return ops[op & 15]
|
|
||||||
return ""
|
|
||||||
|
|
||||||
|
|
||||||
def find_main(cache, pack):
|
|
||||||
"""Searches the dependencies and build dependencies of a package recursively
|
|
||||||
to determine if they are all in the 'main' component or not."""
|
|
||||||
|
|
||||||
global packages
|
|
||||||
|
|
||||||
if pack in packages:
|
|
||||||
return
|
|
||||||
|
|
||||||
# Retrieve information about the package
|
|
||||||
version = get_package_version(cache, distro, pack)
|
|
||||||
|
|
||||||
if not version:
|
|
||||||
packages[pack] = False
|
|
||||||
return
|
|
||||||
elif [origin for origin in version.origins if origin.component == 'main']:
|
|
||||||
packages[pack] = True
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
if not packages.has_key(pack):
|
|
||||||
packages[pack] = False
|
|
||||||
|
|
||||||
# Retrieve package dependencies
|
|
||||||
process_deps(cache, version.dependencies)
|
|
||||||
|
|
||||||
# Retrieve package build dependencies. There's no handy
|
|
||||||
# attribute on version for this, so unfortunately we have to
|
|
||||||
# do a lot of messing about with apt.
|
|
||||||
deps = []
|
|
||||||
src_records = apt_pkg.SourceRecords()
|
|
||||||
got_src = False
|
|
||||||
while src_records.lookup(version.source_name):
|
|
||||||
if pack in src_records.binaries:
|
|
||||||
got_src = True
|
|
||||||
break
|
|
||||||
if got_src:
|
|
||||||
# pylint: disable=E1101
|
|
||||||
for _, all_deps in src_records.build_depends.iteritems():
|
|
||||||
# pylint: enable=E1101
|
|
||||||
for or_deps in all_deps:
|
|
||||||
base_deps = []
|
|
||||||
for (name, ver, op) in or_deps:
|
|
||||||
base_deps.append(apt.package.BaseDependency(name, op,
|
|
||||||
ver, False))
|
|
||||||
deps.append(apt.package.Dependency(base_deps))
|
|
||||||
|
|
||||||
process_deps(cache, deps)
|
|
||||||
|
|
||||||
def usage(exit_code):
|
|
||||||
print 'Usage: %s <package name> [<distribution>]' % sys.argv[0]
|
|
||||||
sys.exit(exit_code)
|
|
||||||
|
|
||||||
def main():
|
|
||||||
|
|
||||||
global packages, distro
|
|
||||||
|
|
||||||
# Check if the amount of arguments is correct
|
|
||||||
if len(sys.argv) > 1 and sys.argv[1] in ('help', '-h', '--help'):
|
|
||||||
usage(0)
|
|
||||||
|
|
||||||
if len(sys.argv) < 2 or len(sys.argv) > 3:
|
|
||||||
usage(1)
|
|
||||||
|
|
||||||
cache = apt.cache.Cache()
|
|
||||||
|
|
||||||
if len(sys.argv) == 3 and sys.argv[2]:
|
|
||||||
distro = sys.argv[2]
|
|
||||||
if not get_package_version(cache, distro, 'bash'):
|
|
||||||
print '«%s» is not a valid distribution.' % distro
|
|
||||||
print ('Remember that for 404main to work with a certain '
|
|
||||||
'distribution it must be in your /etc/apt/sources.list '
|
|
||||||
'file.')
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
cmd = ['lsb_release', '-cs']
|
|
||||||
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
|
||||||
distro = process.stdout.read().strip('\n')
|
|
||||||
|
|
||||||
if not get_package_version(cache, distro, sys.argv[1]):
|
|
||||||
print 'Can\'t find package «%s» in distribution «%s».' % \
|
|
||||||
(sys.argv[1], distro)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
print 'Checking package «%s» in distribution «%s»...' % \
|
|
||||||
(sys.argv[1], distro)
|
|
||||||
|
|
||||||
find_main(cache, sys.argv[1])
|
|
||||||
|
|
||||||
# True if everything checked until the point is in main
|
|
||||||
all_in_main = True
|
|
||||||
|
|
||||||
for package in packages:
|
|
||||||
if not packages[package]:
|
|
||||||
if all_in_main:
|
|
||||||
print 'The following packages aren\'t in main:'
|
|
||||||
all_in_main = False
|
|
||||||
print ' ', package
|
|
||||||
|
|
||||||
if all_in_main:
|
|
||||||
print ('Package «%s» and all its dependencies and build dependencies '
|
|
||||||
'are in main.') % sys.argv[1]
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
|
|
||||||
# Global variable to hold the status of all packages
|
|
||||||
packages = {}
|
|
||||||
|
|
||||||
# Global variable to hold the target distribution
|
|
||||||
distro = ''
|
|
||||||
|
|
||||||
try:
|
|
||||||
main()
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
print 'Aborted.'
|
|
||||||
sys.exit(1)
|
|
@ -1,50 +1,54 @@
|
|||||||
Updating the ubuntu-dev-tools package in Ubuntu
|
Updating the ubuntu-dev-tools package
|
||||||
-----------------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
Here are the steps that are recommended to take when updating the
|
Here are the 10 steps that are recommended to take when updating the
|
||||||
ubuntu-dev-tools package in Ubuntu.
|
ubuntu-dev-tools package in Ubuntu.
|
||||||
|
|
||||||
1) Make sure that there are no new revisions to the package's trunk in Bazaar:
|
1) Make sure there are no new commits to the package's master branch in git:
|
||||||
|
|
||||||
bzr pull lp:ubuntu-dev-tools
|
git pull
|
||||||
|
|
||||||
2) Check to make sure that all approved merges have been merged:
|
2) Check to make sure that all approved merges have been merged:
|
||||||
|
|
||||||
https://code.launchpad.net/ubuntu-dev-tools/+activereviews
|
https://code.launchpad.net/ubuntu-dev-tools/+activereviews
|
||||||
|
|
||||||
3) Make sure that there is no low lying fruit that can be fixed at:
|
3) Make sure that there is no low lying fruit that can be fixed at:
|
||||||
|
|
||||||
https://bugs.launchpad.net/ubuntu/+source/ubuntu-dev-tools
|
https://bugs.launchpad.net/ubuntu/+source/ubuntu-dev-tools
|
||||||
|
https://bugs.debian.org/src:ubuntu-dev-tools
|
||||||
|
|
||||||
4) Before uploading the package change the UNRELEASED field in the
|
4) Check that the test suite passes
|
||||||
debian/changelog file to the current development release.
|
|
||||||
|
|
||||||
If there is no UNRELEASED entry, make sure that the version for the current
|
setup.py test
|
||||||
one has not been uploaded by someone else already:
|
|
||||||
|
|
||||||
|
5) Before uploading the package change the UNRELEASED field in the
|
||||||
|
debian/changelog file to unstable. (ubuntu-dev-tools is maintained in Debian
|
||||||
|
and synced to Ubuntu)
|
||||||
|
|
||||||
|
If there is no UNRELEASED entry, make sure that the version for the current
|
||||||
|
one has not been uploaded by someone else already:
|
||||||
|
|
||||||
|
https://tracker.debian.org/pkg/ubuntu-dev-tools
|
||||||
https://launchpad.net/ubuntu/+source/ubuntu-dev-tools/+publishinghistory
|
https://launchpad.net/ubuntu/+source/ubuntu-dev-tools/+publishinghistory
|
||||||
|
|
||||||
Using: dch -r UNRELEASED - will also set the release to the development
|
6) Once the target release has been changed, commit it to git (where X.YY is
|
||||||
version.
|
the new package version):
|
||||||
|
|
||||||
5) Once the target release has been changed, commit it to Bazaar (where X.YY is
|
git commit -a -m "Uploaded X.YY to RELEASE."
|
||||||
the new package version):
|
|
||||||
|
|
||||||
bzr commit -m "Uploaded X.YY to RELEASE."
|
7) Create the new source package and tag the new release in git:
|
||||||
|
|
||||||
6) Tag the new release in Bazaar:
|
gbp buildpackage -S --git-tag
|
||||||
|
|
||||||
bzr tag X.YY
|
For a full list of tags, please see: 'git tag -l'. This is so we can track
|
||||||
|
which git commit is in which release and makes bug triaging easier.
|
||||||
|
|
||||||
For a full list of tags, please see: 'bzr tags'. This is so we can track
|
8) Upload the package to Debian with dput as normal:
|
||||||
which Bazaar revision is in which release and makes bug triaging easier.
|
|
||||||
|
|
||||||
7) Create the new source package:
|
dput ftp-master ubuntu-dev-tools_X.YY_$arch.changes
|
||||||
|
|
||||||
bzr bd -S
|
9) Create a new blank entry with dch -i and mark it as UNRELEASED.
|
||||||
|
|
||||||
8) Upload the package to Ubuntu with dput as normal:
|
10) After it's been dinstalled in Debian, sync to Ubuntu:
|
||||||
|
|
||||||
dput ubuntu ubuntu-dev-tools_X.YY_source.changes
|
syncpackage ubuntu-dev-tools
|
||||||
|
|
||||||
9) Create a new blank entry with dch -i and mark it as UNRELEASED.
|
|
||||||
|
437
ack-sync
437
ack-sync
@ -1,437 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007, Canonical Ltd.
|
|
||||||
# Copyright (C) 2010, Benjamin Drung <bdrung@ubuntu.com>
|
|
||||||
# Copyright (C) 2010, Stefano Rivera <stefanor@ubuntu.com>
|
|
||||||
#
|
|
||||||
# It was initial written by Daniel Holbach.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# See file /usr/share/common-licenses/GPL-3 for more details.
|
|
||||||
|
|
||||||
import csv
|
|
||||||
import getopt
|
|
||||||
import lazr.restfulclient
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
import logging
|
|
||||||
import glob
|
|
||||||
import fnmatch
|
|
||||||
|
|
||||||
from ubuntutools.config import UDTConfig
|
|
||||||
from ubuntutools.lp.libsupport import get_launchpad
|
|
||||||
|
|
||||||
COMMAND_LINE_SYNTAX_ERROR = 1
|
|
||||||
VERSION_DETECTION_FAILED = 2
|
|
||||||
PRIVATE_USER_EMAIL = 3
|
|
||||||
UPLOAD_NOT_PERMITTED = 4
|
|
||||||
|
|
||||||
def get_version(title):
|
|
||||||
m = re.search("[() ][0-9][0-9a-zA-Z.:+-~]*", title)
|
|
||||||
if m is None:
|
|
||||||
print >> sys.stderr, ("Version could not be detected. Please specify "
|
|
||||||
"it with -V.")
|
|
||||||
sys.exit(VERSION_DETECTION_FAILED)
|
|
||||||
return m.group(0).strip("() ")
|
|
||||||
|
|
||||||
def strip_epoch(version):
|
|
||||||
parts = version.split(':')
|
|
||||||
if len(parts) > 1:
|
|
||||||
del parts[0]
|
|
||||||
version = ':'.join(parts)
|
|
||||||
return version
|
|
||||||
|
|
||||||
def log_call(command):
|
|
||||||
command = map(str, command)
|
|
||||||
logging.info("Running %s", " ".join(command))
|
|
||||||
return command
|
|
||||||
|
|
||||||
def get_source(package, version, section, dist, uploader_name, uploader_email,
|
|
||||||
bug, key, upload):
|
|
||||||
if os.path.isdir("/tmpfs"):
|
|
||||||
workdir = "/tmpfs/ack-sync"
|
|
||||||
else:
|
|
||||||
workdir = "/tmp/ack-sync"
|
|
||||||
if not os.path.isdir(workdir):
|
|
||||||
os.makedirs(workdir)
|
|
||||||
os.chdir(workdir)
|
|
||||||
|
|
||||||
cmd = ["syncpackage", package, "-r", dist, "-V", version, "-b", str(bug)]
|
|
||||||
if section is not None:
|
|
||||||
cmd += ["-c", section]
|
|
||||||
if uploader_email is not None:
|
|
||||||
cmd += ["-e", uploader_email]
|
|
||||||
if uploader_name is not None:
|
|
||||||
cmd += ["-n", uploader_name]
|
|
||||||
if not upload:
|
|
||||||
cmd += ['--dont-sign',]
|
|
||||||
if upload and key is not None:
|
|
||||||
cmd += ["-k", key]
|
|
||||||
subprocess.check_call(cmd)
|
|
||||||
|
|
||||||
dsc_file = package + "_" + strip_epoch(version) + "fakesync1.dsc"
|
|
||||||
if not os.path.exists(os.path.join(workdir, dsc_file)):
|
|
||||||
dsc_file = package + "_" + strip_epoch(version) + ".dsc"
|
|
||||||
if not os.path.exists(os.path.join(workdir, dsc_file)):
|
|
||||||
print >> sys.stderr, ("E: Failed to find .dsc file created by "
|
|
||||||
"syncpackage.")
|
|
||||||
sys.exit(1)
|
|
||||||
return dsc_file
|
|
||||||
|
|
||||||
def build_source(dist, dsc_file, pbuilder, sbuild):
|
|
||||||
try:
|
|
||||||
if sbuild:
|
|
||||||
cmd = ["sbuild", "-d", dist, "-A", dsc_file]
|
|
||||||
subprocess.check_call(log_call(cmd))
|
|
||||||
else:
|
|
||||||
if not os.path.isdir("buildresult"):
|
|
||||||
os.makedirs("buildresult")
|
|
||||||
cmd = ["sudo", "-E", "DIST=" + dist, pbuilder, "--build",
|
|
||||||
"--buildresult", "buildresult", dsc_file]
|
|
||||||
subprocess.check_call(log_call(cmd))
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
print >> sys.stderr, "E: %s failed to build." % (dsc_file)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
def test_install(dist, dsc_file, sbuild, lvm):
|
|
||||||
changes_files = glob.glob(os.path.splitext(dsc_file)[0]+"_*.changes")
|
|
||||||
changes_file = ""
|
|
||||||
|
|
||||||
for temp_file in changes_files:
|
|
||||||
if not fnmatch.fnmatch(temp_file, '*_source.changes'):
|
|
||||||
changes_file = temp_file
|
|
||||||
|
|
||||||
if not (os.path.isfile(changes_file)): # if no file exists at all => exit
|
|
||||||
print >> sys.stderr, "E: No .changes file has been generated."
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
try:
|
|
||||||
cmd = ["sudo", "piuparts", "-N", "-W", "--single-changes-list",
|
|
||||||
"--log-level=info", "--ignore=/var/log/apt/history.log",
|
|
||||||
"--mirror=http://archive.ubuntu.com/ubuntu main universe "
|
|
||||||
"restricted multiverse", changes_file]
|
|
||||||
if sbuild:
|
|
||||||
lvm_volume = lvm + "/" + dist + "_chroot"
|
|
||||||
subprocess.check_call(log_call(cmd + ["--lvm-volume="+lvm_volume]))
|
|
||||||
else:
|
|
||||||
subprocess.check_call(log_call(cmd + ["--pbuilder"]))
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
print >> sys.stderr, "E: %s failed to install. Please check log" % \
|
|
||||||
(changes_file)
|
|
||||||
|
|
||||||
def get_email_from_file(name):
|
|
||||||
filename = os.path.expanduser("~/.ack-sync-email.list")
|
|
||||||
if os.path.isfile(filename):
|
|
||||||
csvfile = open(filename)
|
|
||||||
csv_reader = csv.reader(csvfile)
|
|
||||||
for row in csv_reader:
|
|
||||||
if row and row[0] == name:
|
|
||||||
return row[1]
|
|
||||||
return None
|
|
||||||
|
|
||||||
def unsubscribe_sponsors(launchpad, bug):
|
|
||||||
ums = launchpad.people['ubuntu-main-sponsors']
|
|
||||||
try:
|
|
||||||
bug.unsubscribe(person=ums)
|
|
||||||
print "ubuntu-main-sponsors unsubscribed (for backward compatibility)"
|
|
||||||
except lazr.restfulclient.errors.HTTPError, http_error:
|
|
||||||
print "failed to unsubscribe ubuntu-main-sponsors: " + \
|
|
||||||
http_error.content
|
|
||||||
|
|
||||||
us = launchpad.people['ubuntu-sponsors']
|
|
||||||
bug.unsubscribe(person=us)
|
|
||||||
print "ubuntu-sponsors unsubscribed"
|
|
||||||
|
|
||||||
|
|
||||||
def ack_sync(bug_numbers, all_package, all_version, all_section, update,
|
|
||||||
all_uploader_email, key, upload, lpinstance, pbuilder, sbuild, lvm,
|
|
||||||
piuparts, verbose=False, silent=False):
|
|
||||||
launchpad = get_launchpad("ubuntu-dev-tools", server=lpinstance)
|
|
||||||
# TODO: use release-info (once available)
|
|
||||||
series = launchpad.distributions["ubuntu"].current_series
|
|
||||||
dist = series.name
|
|
||||||
|
|
||||||
# update pbuilder
|
|
||||||
if update:
|
|
||||||
if sbuild:
|
|
||||||
subprocess.call(log_call(["sbuild-update", dist]))
|
|
||||||
else:
|
|
||||||
cmd = ["sudo", "-E", "DIST=" + dist, pbuilder, "--update"]
|
|
||||||
subprocess.call(log_call(cmd))
|
|
||||||
|
|
||||||
for bug_number in bug_numbers:
|
|
||||||
bug = launchpad.bugs[bug_number]
|
|
||||||
uploader = bug.owner
|
|
||||||
uploader_name = uploader.display_name
|
|
||||||
if all_uploader_email is not None:
|
|
||||||
uploader_email = all_uploader_email
|
|
||||||
elif launchpad.people['ubuntumembers'] in uploader.super_teams:
|
|
||||||
uploader_email = uploader.name + '@ubuntu.com'
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
uploader_email = uploader.preferred_email_address.email
|
|
||||||
except ValueError:
|
|
||||||
uploader_email = get_email_from_file(uploader.name)
|
|
||||||
if uploader_email is None:
|
|
||||||
if not silent:
|
|
||||||
print >> sys.stderr, ("E: Bug owner '%s' does not have "
|
|
||||||
"a public email address. Specify "
|
|
||||||
"uploader with '-e'.") % \
|
|
||||||
(uploader_name)
|
|
||||||
sys.exit(PRIVATE_USER_EMAIL)
|
|
||||||
elif not silent:
|
|
||||||
print "Taking email address from local file: " + \
|
|
||||||
uploader_email
|
|
||||||
|
|
||||||
task = list(bug.bug_tasks)[0]
|
|
||||||
|
|
||||||
if all_package is not None:
|
|
||||||
package = all_package
|
|
||||||
else:
|
|
||||||
package = task.bug_target_name.split(" ")[0]
|
|
||||||
if package == "ubuntu":
|
|
||||||
words = bug.title.split(" ")
|
|
||||||
# no source package was defined. Guessing that the second or
|
|
||||||
# third word in the title is the package name, because most
|
|
||||||
# titles start with "Please sync <package>" or "Sync <package>"
|
|
||||||
if words[0].lower() == "please":
|
|
||||||
package = words[2]
|
|
||||||
else:
|
|
||||||
package = words[1]
|
|
||||||
if all_version is not None:
|
|
||||||
version = all_version
|
|
||||||
else:
|
|
||||||
version = get_version(bug.title)
|
|
||||||
|
|
||||||
src_pkg = series.getSourcePackage(name=package)
|
|
||||||
if src_pkg is None:
|
|
||||||
print "%s is NEW in %s." % (package, dist)
|
|
||||||
if src_pkg is not None:
|
|
||||||
# TODO: Port ack-sync to use lpapicache and reduce code-duplication.
|
|
||||||
can_upload = None
|
|
||||||
try:
|
|
||||||
series.main_archive.checkUpload(
|
|
||||||
component=src_pkg.latest_published_component_name,
|
|
||||||
distroseries=series, person=launchpad.me, pocket='Release',
|
|
||||||
sourcepackagename=package)
|
|
||||||
can_upload = True
|
|
||||||
except lazr.restfulclient.errors.HTTPError, e:
|
|
||||||
if e.response.status == 403:
|
|
||||||
can_upload = False
|
|
||||||
elif e.response.status == 400:
|
|
||||||
print ("W: Package is probably not in Ubuntu. Can't check "
|
|
||||||
"upload rights.")
|
|
||||||
can_upload = True
|
|
||||||
else:
|
|
||||||
raise e
|
|
||||||
if not can_upload:
|
|
||||||
print >> sys.stderr, ("E: Sorry, you are not allowed to upload "
|
|
||||||
'package "%s" to %s.' % (package, dist))
|
|
||||||
sys.exit(UPLOAD_NOT_PERMITTED)
|
|
||||||
|
|
||||||
if task.assignee == None:
|
|
||||||
task.assignee = launchpad.me
|
|
||||||
print "assigned me"
|
|
||||||
task.lp_save()
|
|
||||||
if task.assignee != launchpad.me:
|
|
||||||
print >> sys.stderr, ("E: %s is already assigned to "
|
|
||||||
"https://launchpad.net/bugs/%i") % \
|
|
||||||
(task.assignee.display_name, bug.id)
|
|
||||||
sys.exit(1)
|
|
||||||
old_status = task.status
|
|
||||||
task.status = 'In Progress'
|
|
||||||
unsubscribe_sponsors(launchpad, bug)
|
|
||||||
if task.importance == "Undecided":
|
|
||||||
task.importance = "Wishlist"
|
|
||||||
print "importance set to Wishlist"
|
|
||||||
task.lp_save()
|
|
||||||
|
|
||||||
print "package:", package
|
|
||||||
print "version:", version
|
|
||||||
dsc_file = get_source(package, version, all_section, dist,
|
|
||||||
uploader_name, uploader_email, bug_number, key,
|
|
||||||
upload)
|
|
||||||
|
|
||||||
if dsc_file.endswith('fakesync1.dsc'):
|
|
||||||
upload = True
|
|
||||||
|
|
||||||
# extract source
|
|
||||||
env = os.environ
|
|
||||||
env['DEB_VENDOR'] = 'Ubuntu'
|
|
||||||
subprocess.check_call(["dpkg-source", "-x", dsc_file], env=env)
|
|
||||||
|
|
||||||
build_source(dist, dsc_file, pbuilder, sbuild)
|
|
||||||
|
|
||||||
if piuparts:
|
|
||||||
test_install(dist, dsc_file, sbuild, lvm)
|
|
||||||
|
|
||||||
print bug.title
|
|
||||||
print '%s (was %s)' % (task.status, old_status)
|
|
||||||
print "Uploader:", uploader_name + " <" + uploader_email + ">"
|
|
||||||
if upload:
|
|
||||||
print ("Will upload sync directly, rather than subscribing "
|
|
||||||
"ubuntu-archive")
|
|
||||||
try:
|
|
||||||
raw_input('Press [Enter] to continue or [Ctrl-C] to abort.')
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
continue
|
|
||||||
|
|
||||||
bug.subscribe(person=launchpad.me)
|
|
||||||
print "subscribed me"
|
|
||||||
if upload:
|
|
||||||
task.status = 'Fix Committed'
|
|
||||||
task.assignee = None
|
|
||||||
print "unassigned me"
|
|
||||||
task.lp_save()
|
|
||||||
changes_file = dsc_file[:-4] + "_source.changes"
|
|
||||||
subprocess.check_call(["dput", "ubuntu", changes_file])
|
|
||||||
else:
|
|
||||||
task.status = 'Confirmed'
|
|
||||||
task.assignee = None
|
|
||||||
print "unassigned me"
|
|
||||||
task.lp_save()
|
|
||||||
cmd = ["dpkg-architecture", "-qDEB_BUILD_ARCH"]
|
|
||||||
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
|
||||||
architecture = process.communicate()[0].strip()
|
|
||||||
content = "%s %s builds on %s. Sync request ACK'd." % \
|
|
||||||
(package, version, architecture)
|
|
||||||
bug.newMessage(content=content, subject="ack-sync")
|
|
||||||
bug.subscribe(person=launchpad.people['ubuntu-archive'])
|
|
||||||
print "subscribed ubuntu-archive"
|
|
||||||
|
|
||||||
|
|
||||||
def usage():
|
|
||||||
print """ack-sync <bug numbers>
|
|
||||||
|
|
||||||
-e, specify uploader email address
|
|
||||||
-h, --help displays this help
|
|
||||||
-k, --key key used to sign the package (in case of sponsoring)
|
|
||||||
--lpinstance=<instance> Launchpad instance to connect to
|
|
||||||
(default: production)
|
|
||||||
-l, --lvm lvm root dev directory, used for sbuild and piuparts
|
|
||||||
default is /dev/vg
|
|
||||||
--no-conf Don't read config files or environment variables
|
|
||||||
-p, --package=<package> set the package
|
|
||||||
-P, --with-piuparts use piuparts to check the instalability
|
|
||||||
--section=<section> Debian section (one of main, contrib, non-free)
|
|
||||||
-s, --silent be more silent
|
|
||||||
-S, --with-sbuild use sbuild instead of pbuilder
|
|
||||||
-C, --pbuilder=<command> use <command> as pbuilder
|
|
||||||
-u, --update updates pbuilder before building
|
|
||||||
-U, --upload upload the sync immediately rather than ACK-ing it
|
|
||||||
for the archive admins
|
|
||||||
-v, --verbose be more verbosive
|
|
||||||
-V, --version=<version> set the version"""
|
|
||||||
|
|
||||||
def main():
|
|
||||||
try:
|
|
||||||
long_opts = ["help", "key=", "lvm=", "package=", "section=", "silent",
|
|
||||||
"update", "upload", "verbose", "version=", "with-sbuild",
|
|
||||||
"pbuilder=", "with-piuparts", "lpinstance=", "no-conf"]
|
|
||||||
opts, args = getopt.gnu_getopt(sys.argv[1:], "e:hk:p:PsSC:uUvV:",
|
|
||||||
long_opts)
|
|
||||||
except getopt.GetoptError, e:
|
|
||||||
# will print something like "option -a not recognized"
|
|
||||||
print >> sys.stderr, str(e)
|
|
||||||
sys.exit(COMMAND_LINE_SYNTAX_ERROR)
|
|
||||||
|
|
||||||
upload = False
|
|
||||||
package = None
|
|
||||||
sbuild = False
|
|
||||||
section = None
|
|
||||||
silent = False
|
|
||||||
update = False
|
|
||||||
uploader_email = None
|
|
||||||
verbose = False
|
|
||||||
version = None
|
|
||||||
piuparts = False
|
|
||||||
pbuilder = None
|
|
||||||
lvm = "/dev/vg"
|
|
||||||
key = None
|
|
||||||
lpinstance = None
|
|
||||||
no_conf = False
|
|
||||||
|
|
||||||
for o, a in opts:
|
|
||||||
if o in ("-h", "--help"):
|
|
||||||
usage()
|
|
||||||
sys.exit()
|
|
||||||
elif o in ("-e"):
|
|
||||||
uploader_email = a
|
|
||||||
elif o in ("-k", "--key"):
|
|
||||||
key = a
|
|
||||||
elif o in ("--lpinstance"):
|
|
||||||
lpinstance = a
|
|
||||||
elif o in ("-l", "--lvm"):
|
|
||||||
lvm = a
|
|
||||||
elif o in ("--no-conf"):
|
|
||||||
no_conf = True
|
|
||||||
elif o in ("-p", "--package"):
|
|
||||||
package = a
|
|
||||||
elif o in ("-P", "--with-piuparts"):
|
|
||||||
piuparts = True
|
|
||||||
elif o in ("--section"):
|
|
||||||
section = a
|
|
||||||
elif o in ("-s", "--silent"):
|
|
||||||
silent = True
|
|
||||||
elif o in ("-S", "--with-sbuild"):
|
|
||||||
sbuild = True
|
|
||||||
elif o in ("-C", "--pbuilder"):
|
|
||||||
pbuilder = a
|
|
||||||
elif o in ("-u", "--update"):
|
|
||||||
update = True
|
|
||||||
elif o in ("-U", "--upload"):
|
|
||||||
upload = True
|
|
||||||
elif o in ("-v", "--verbose"):
|
|
||||||
verbose = True
|
|
||||||
elif o in ("-V", "--version"):
|
|
||||||
version = a
|
|
||||||
else:
|
|
||||||
assert False, "unhandled option"
|
|
||||||
|
|
||||||
if len(args) == 0:
|
|
||||||
if not silent:
|
|
||||||
print >> sys.stderr, "E: You must specify at least one bug number."
|
|
||||||
sys.exit(COMMAND_LINE_SYNTAX_ERROR)
|
|
||||||
|
|
||||||
bug_numbers = []
|
|
||||||
for arg in args:
|
|
||||||
try:
|
|
||||||
number = int(arg)
|
|
||||||
except:
|
|
||||||
if not silent:
|
|
||||||
print >> sys.stderr, "E: '%s' is not a valid bug number." % arg
|
|
||||||
sys.exit(COMMAND_LINE_SYNTAX_ERROR)
|
|
||||||
bug_numbers.append(number)
|
|
||||||
|
|
||||||
config = UDTConfig(no_conf)
|
|
||||||
if lpinstance is None:
|
|
||||||
lpinstance = config.get_value('LPINSTANCE')
|
|
||||||
if pbuilder is None and not sbuild:
|
|
||||||
builder = config.get_value('BUILDER')
|
|
||||||
if builder == 'pbuilder':
|
|
||||||
pbuilder = 'pbuilder'
|
|
||||||
elif builder == 'sbuild':
|
|
||||||
sbuild = True
|
|
||||||
else:
|
|
||||||
print >> sys.stderr, "E: Unsupported build-system: %s" % builder
|
|
||||||
sys.exit(COMMAND_LINE_SYNTAX_ERROR)
|
|
||||||
if not update:
|
|
||||||
update = config.get_value('UPDATE_BUILDER', boolean=True)
|
|
||||||
#TODO: Support WORKDIR
|
|
||||||
|
|
||||||
ack_sync(bug_numbers, package, version, section, update, uploader_email,
|
|
||||||
key, upload, lpinstance, pbuilder, sbuild, lvm, piuparts, verbose,
|
|
||||||
silent)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
658
backportpackage
658
backportpackage
@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# ##################################################################
|
# ##################################################################
|
||||||
#
|
#
|
||||||
# Copyright (C) 2010, Evan Broder <evan@ebroder.net>
|
# Copyright (C) 2010-2011, Evan Broder <evan@ebroder.net>
|
||||||
# Copyright (C) 2010, Benjamin Drung <bdrung@ubuntu.com>
|
# Copyright (C) 2010, Benjamin Drung <bdrung@ubuntu.com>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or
|
# This program is free software; you can redistribute it and/or
|
||||||
@ -18,334 +18,478 @@
|
|||||||
#
|
#
|
||||||
# ##################################################################
|
# ##################################################################
|
||||||
|
|
||||||
import optparse
|
import argparse
|
||||||
|
import glob
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
import urllib
|
from urllib.parse import quote
|
||||||
|
|
||||||
from debian.deb822 import Dsc
|
try:
|
||||||
from launchpadlib.launchpad import Launchpad
|
import lsb_release
|
||||||
import lsb_release
|
except ImportError:
|
||||||
|
lsb_release = None
|
||||||
|
from distro_info import DebianDistroInfo, UbuntuDistroInfo
|
||||||
|
from httplib2 import Http, HttpLib2Error
|
||||||
|
|
||||||
from ubuntutools.config import UDTConfig, ubu_email
|
from ubuntutools import getLogger
|
||||||
|
from ubuntutools.archive import DebianSourcePackage, DownloadError, UbuntuSourcePackage
|
||||||
from ubuntutools.builder import get_builder
|
from ubuntutools.builder import get_builder
|
||||||
from ubuntutools.logger import Logger
|
from ubuntutools.config import UDTConfig, ubu_email
|
||||||
|
from ubuntutools.lp.lpapicache import (
|
||||||
|
Distribution,
|
||||||
|
Launchpad,
|
||||||
|
PackageNotFoundException,
|
||||||
|
SeriesNotFoundException,
|
||||||
|
)
|
||||||
|
from ubuntutools.misc import codename_to_distribution, system_distribution, vendor_to_distroinfo
|
||||||
from ubuntutools.question import YesNoQuestion
|
from ubuntutools.question import YesNoQuestion
|
||||||
from ubuntutools.misc import dsc_url
|
|
||||||
|
|
||||||
def error(msg):
|
Logger = getLogger()
|
||||||
Logger.error(msg)
|
|
||||||
|
|
||||||
|
def error(msg, *args):
|
||||||
|
Logger.error(msg, *args)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
def check_call(cmd, *args, **kwargs):
|
def check_call(cmd, *args, **kwargs):
|
||||||
Logger.command(cmd)
|
Logger.debug(" ".join(cmd))
|
||||||
ret = subprocess.call(cmd, *args, **kwargs)
|
ret = subprocess.call(cmd, *args, **kwargs)
|
||||||
if ret != 0:
|
if ret != 0:
|
||||||
error('%s returned %d.' % (cmd, ret))
|
error("%s returned %d.", cmd[0], ret)
|
||||||
|
|
||||||
def parse(args):
|
|
||||||
usage = 'Usage: %prog [options] <source package name or .dsc URL/file>'
|
|
||||||
parser = optparse.OptionParser(usage)
|
|
||||||
parser.add_option('-d', '--destination',
|
|
||||||
dest='dest_releases',
|
|
||||||
default=[],
|
|
||||||
action='append',
|
|
||||||
help='Backport to DEST release '
|
|
||||||
'(default: current release)',
|
|
||||||
metavar='DEST')
|
|
||||||
parser.add_option('-s', '--source',
|
|
||||||
dest='source_release',
|
|
||||||
default=None,
|
|
||||||
help='Backport from SOURCE release '
|
|
||||||
'(default: devel release)',
|
|
||||||
metavar='SOURCE')
|
|
||||||
parser.add_option('-S', '--suffix',
|
|
||||||
dest='suffix',
|
|
||||||
default=None,
|
|
||||||
help='Suffix to append to version number '
|
|
||||||
'(default: ~ppa1)',
|
|
||||||
metavar='SUFFIX')
|
|
||||||
parser.add_option('-b', '--build',
|
|
||||||
dest='build',
|
|
||||||
default=False,
|
|
||||||
action='store_true',
|
|
||||||
help='Build the package before uploading '
|
|
||||||
'(default: %default)')
|
|
||||||
parser.add_option('-B', '--builder',
|
|
||||||
dest='builder',
|
|
||||||
default=None,
|
|
||||||
help='Specify the package builder (default: pbuilder)',
|
|
||||||
metavar='BUILDER')
|
|
||||||
parser.add_option('-U', '--update',
|
|
||||||
dest='update',
|
|
||||||
default=False,
|
|
||||||
action='store_true',
|
|
||||||
help='Update the build environment before '
|
|
||||||
'attempting to build')
|
|
||||||
parser.add_option('-u', '--upload',
|
|
||||||
dest='upload',
|
|
||||||
help='Specify an upload destination',
|
|
||||||
metavar='UPLOAD')
|
|
||||||
parser.add_option('-y', '--yes',
|
|
||||||
dest='prompt',
|
|
||||||
default=True,
|
|
||||||
action='store_false',
|
|
||||||
help='Do not prompt before uploading to a PPA')
|
|
||||||
parser.add_option('-v', '--version',
|
|
||||||
dest='version',
|
|
||||||
default=None,
|
|
||||||
help='Package version to backport (or verify)',
|
|
||||||
metavar='VERSION')
|
|
||||||
parser.add_option('-w', '--workdir',
|
|
||||||
dest='workdir',
|
|
||||||
default=None,
|
|
||||||
help='Specify a working directory '
|
|
||||||
'(default: temporary dir)',
|
|
||||||
metavar='WORKDIR')
|
|
||||||
parser.add_option('-m', '--mirror',
|
|
||||||
dest='ubuntu_mirror',
|
|
||||||
default=None,
|
|
||||||
help='Preferred Ubuntu mirror (default: Launchpad)',
|
|
||||||
metavar='INSTANCE')
|
|
||||||
parser.add_option('-l', '--lpinstance',
|
|
||||||
dest='lpinstance',
|
|
||||||
default=None,
|
|
||||||
help='Launchpad instance to connect to '
|
|
||||||
'(default: production)',
|
|
||||||
metavar='INSTANCE')
|
|
||||||
parser.add_option('--no-conf',
|
|
||||||
dest='no_conf',
|
|
||||||
default=False,
|
|
||||||
help="Don't read config files or environment variables",
|
|
||||||
action='store_true')
|
|
||||||
|
|
||||||
opts, args = parser.parse_args(args)
|
def parse(argv):
|
||||||
if len(args) != 1:
|
usage = "%(prog)s [options] <source package name or .dsc URL/file>"
|
||||||
parser.error('You must specify a single source package or a .dsc '
|
parser = argparse.ArgumentParser(usage=usage)
|
||||||
'URL/path.')
|
parser.add_argument(
|
||||||
config = UDTConfig(opts.no_conf)
|
"-d",
|
||||||
if opts.builder is None:
|
"--destination",
|
||||||
opts.builder = config.get_value('BUILDER')
|
metavar="DEST",
|
||||||
if not opts.update:
|
dest="dest_releases",
|
||||||
opts.update = config.get_value('UPDATE_BUILDER', boolean=True)
|
default=[],
|
||||||
if opts.workdir is None:
|
action="append",
|
||||||
opts.workdir = config.get_value('WORKDIR')
|
help="Backport to DEST release (default: current release)",
|
||||||
if opts.lpinstance is None:
|
)
|
||||||
opts.lpinstance = config.get_value('LPINSTANCE')
|
parser.add_argument(
|
||||||
if opts.ubuntu_mirror is None:
|
"-s",
|
||||||
opts.ubuntu_mirror = config.get_value('UBUNTU_MIRROR')
|
"--source",
|
||||||
if not opts.upload and not opts.workdir:
|
metavar="SOURCE",
|
||||||
parser.error('Please specify either a working dir or an upload target!')
|
dest="source_release",
|
||||||
|
help="Backport from SOURCE release (default: devel release)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-S",
|
||||||
|
"--suffix",
|
||||||
|
metavar="SUFFIX",
|
||||||
|
help="Suffix to append to version number (default: ~ppa1 when uploading to a PPA)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-e",
|
||||||
|
"--message",
|
||||||
|
metavar="MESSAGE",
|
||||||
|
default="No-change",
|
||||||
|
help='Changelog message to use instead of "No-change" '
|
||||||
|
"(default: No-change backport to DEST.)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-b",
|
||||||
|
"--build",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Build the package before uploading (default: %(default)s)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-B",
|
||||||
|
"--builder",
|
||||||
|
metavar="BUILDER",
|
||||||
|
help="Specify the package builder (default: pbuilder)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-U",
|
||||||
|
"--update",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Update the build environment before attempting to build",
|
||||||
|
)
|
||||||
|
parser.add_argument("-u", "--upload", metavar="UPLOAD", help="Specify an upload destination")
|
||||||
|
parser.add_argument(
|
||||||
|
"-k", "--key", dest="keyid", help="Specify the key ID to be used for signing."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--dont-sign", dest="keyid", action="store_false", help="Do not sign the upload."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-y",
|
||||||
|
"--yes",
|
||||||
|
dest="prompt",
|
||||||
|
default=True,
|
||||||
|
action="store_false",
|
||||||
|
help="Do not prompt before uploading to a PPA",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-v", "--version", metavar="VERSION", help="Package version to backport (or verify)"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-w",
|
||||||
|
"--workdir",
|
||||||
|
metavar="WORKDIR",
|
||||||
|
help="Specify a working directory (default: temporary dir)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-r",
|
||||||
|
"--release-pocket",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Target the release pocket in the .changes file. "
|
||||||
|
"Necessary (and default) for uploads to PPAs",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-c", "--close", metavar="BUG", help="Bug to close in the changelog entry."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-m", "--mirror", metavar="URL", help="Preferred mirror (default: Launchpad)"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-l",
|
||||||
|
"--lpinstance",
|
||||||
|
metavar="INSTANCE",
|
||||||
|
help="Launchpad instance to connect to (default: production)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--no-conf",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Don't read config files or environment variables",
|
||||||
|
)
|
||||||
|
parser.add_argument("package_or_dsc", help=argparse.SUPPRESS)
|
||||||
|
|
||||||
return opts, args
|
args = parser.parse_args(argv)
|
||||||
|
config = UDTConfig(args.no_conf)
|
||||||
|
if args.builder is None:
|
||||||
|
args.builder = config.get_value("BUILDER")
|
||||||
|
if not args.update:
|
||||||
|
args.update = config.get_value("UPDATE_BUILDER", boolean=True)
|
||||||
|
if args.workdir is None:
|
||||||
|
args.workdir = config.get_value("WORKDIR")
|
||||||
|
if args.lpinstance is None:
|
||||||
|
args.lpinstance = config.get_value("LPINSTANCE")
|
||||||
|
if args.upload is None:
|
||||||
|
args.upload = config.get_value("UPLOAD")
|
||||||
|
if args.keyid is None:
|
||||||
|
args.keyid = config.get_value("KEYID")
|
||||||
|
if not args.upload and not args.workdir:
|
||||||
|
parser.error("Please specify either a working dir or an upload target!")
|
||||||
|
if args.upload and args.upload.startswith("ppa:"):
|
||||||
|
args.release_pocket = True
|
||||||
|
|
||||||
def find_release_package(launchpad, package, version, source_release):
|
return args, config
|
||||||
ubuntu = launchpad.distributions['ubuntu']
|
|
||||||
archive = ubuntu.main_archive
|
|
||||||
series = ubuntu.getSeries(name_or_version=source_release)
|
def find_release_package(mirror, workdir, package, version, source_release, config):
|
||||||
status = 'Published'
|
srcpkg = None
|
||||||
for pocket in ('Updates', 'Security', 'Release'):
|
|
||||||
try:
|
if source_release:
|
||||||
srcpkg = archive.getPublishedSources(source_name=package,
|
distribution = codename_to_distribution(source_release)
|
||||||
distro_series=series,
|
if not distribution:
|
||||||
pocket=pocket,
|
error("Unknown release codename %s", source_release)
|
||||||
status=status,
|
info = vendor_to_distroinfo(distribution)()
|
||||||
exact_match=True)[0]
|
source_release = info.codename(source_release, default=source_release)
|
||||||
break
|
|
||||||
except IndexError:
|
|
||||||
continue
|
|
||||||
else:
|
else:
|
||||||
error('Unable to find package %s in release %s.' %
|
distribution = system_distribution()
|
||||||
(package, source_release))
|
mirrors = [mirror] if mirror else []
|
||||||
|
|
||||||
if version and version != srcpkg.source_package_version:
|
mirrors.append(config.get_value(f"{distribution.upper()}_MIRROR"))
|
||||||
error('Requested backport of version %s but %s is at version %s.' %
|
|
||||||
(version, package, srcpkg.source_package_version))
|
if not version:
|
||||||
|
archive = Distribution(distribution.lower()).getArchive()
|
||||||
|
try:
|
||||||
|
spph = archive.getSourcePackage(package, source_release)
|
||||||
|
except (SeriesNotFoundException, PackageNotFoundException) as e:
|
||||||
|
error("%s", str(e))
|
||||||
|
version = spph.getVersion()
|
||||||
|
|
||||||
|
if distribution == "Debian":
|
||||||
|
srcpkg = DebianSourcePackage(package, version, workdir=workdir, mirrors=mirrors)
|
||||||
|
elif distribution == "Ubuntu":
|
||||||
|
srcpkg = UbuntuSourcePackage(package, version, workdir=workdir, mirrors=mirrors)
|
||||||
|
|
||||||
return srcpkg
|
return srcpkg
|
||||||
|
|
||||||
def find_version_package(launchpad, package, version):
|
|
||||||
ubuntu = launchpad.distributions['ubuntu']
|
|
||||||
archive = ubuntu.main_archive
|
|
||||||
try:
|
|
||||||
# Might get more than one (i.e. same version in multiple
|
|
||||||
# releases), but they should all be identical
|
|
||||||
return archive.getPublishedSources(source_name=package,
|
|
||||||
version=version)[0]
|
|
||||||
except IndexError:
|
|
||||||
error('Version %s of package %s was never published in Ubuntu.' %
|
|
||||||
(version, package))
|
|
||||||
|
|
||||||
def dscurls_from_package(launchpad, mirror, package, version, source_release):
|
def find_package(mirror, workdir, package, version, source_release, config):
|
||||||
|
"Returns the SourcePackage"
|
||||||
|
if package.endswith(".dsc"):
|
||||||
|
# Here we are using UbuntuSourcePackage just because we don't have any
|
||||||
|
# "general" class that is safely instantiable (as SourcePackage is an
|
||||||
|
# abstract class). None of the distribution-specific details within
|
||||||
|
# UbuntuSourcePackage is relevant for this use case.
|
||||||
|
return UbuntuSourcePackage(
|
||||||
|
version=version, dscfile=package, workdir=workdir, mirrors=(mirror,)
|
||||||
|
)
|
||||||
|
|
||||||
if not source_release and not version:
|
if not source_release and not version:
|
||||||
source_release = launchpad.distributions['ubuntu'].current_series.name
|
info = vendor_to_distroinfo(system_distribution())
|
||||||
|
source_release = info().devel()
|
||||||
|
|
||||||
# If source_release is specified, then version is just for verification
|
srcpkg = find_release_package(mirror, workdir, package, version, source_release, config)
|
||||||
if source_release:
|
if version and srcpkg.version != version:
|
||||||
srcpkg = find_release_package(launchpad, package, version,
|
error(
|
||||||
source_release)
|
"Requested backport of version %s but version of %s in %s is %s",
|
||||||
else:
|
version,
|
||||||
srcpkg = find_version_package(launchpad, package, version)
|
package,
|
||||||
|
source_release,
|
||||||
|
srcpkg.version,
|
||||||
|
)
|
||||||
|
|
||||||
urls = []
|
return srcpkg
|
||||||
if mirror:
|
|
||||||
urls.append(dsc_url(mirror, srcpkg.component_name, package,
|
|
||||||
srcpkg.source_package_version))
|
|
||||||
|
|
||||||
for source_file in srcpkg.sourceFileUrls():
|
|
||||||
if source_file.endswith('.dsc'):
|
|
||||||
urls.append(urllib.unquote(source_file))
|
|
||||||
return urls
|
|
||||||
else:
|
|
||||||
error('Package %s contains no .dsc file.' % package)
|
|
||||||
|
|
||||||
def dscurl_from_dsc(package):
|
|
||||||
path = os.path.abspath(os.path.expanduser(package))
|
|
||||||
if os.path.exists(path):
|
|
||||||
return 'file://%s' % path
|
|
||||||
else:
|
|
||||||
# Can't resolve it as a local path? Let's just hope it's good as-is
|
|
||||||
return package
|
|
||||||
|
|
||||||
def fetch_package(launchpad, mirror, workdir, package, version, source_release):
|
|
||||||
# Returns the path to the .dsc file that was fetched
|
|
||||||
if package.endswith('.dsc'):
|
|
||||||
dscs = [dscurl_from_dsc(package)]
|
|
||||||
else:
|
|
||||||
dscs = dscurls_from_package(launchpad, mirror, package, version,
|
|
||||||
source_release)
|
|
||||||
|
|
||||||
for dsc in dscs:
|
|
||||||
cmd = ('dget', '--download-only', '--allow-unauthenticated', dsc)
|
|
||||||
Logger.command(cmd)
|
|
||||||
ret = subprocess.call(cmd, cwd=workdir)
|
|
||||||
if ret == 0:
|
|
||||||
return os.path.join(workdir, os.path.basename(dsc))
|
|
||||||
|
|
||||||
def get_backport_version(version, suffix, upload, release):
|
def get_backport_version(version, suffix, upload, release):
|
||||||
backport_version = version + ('~%s1' % release)
|
distribution = codename_to_distribution(release)
|
||||||
|
if not distribution:
|
||||||
|
error("Unknown release codename %s", release)
|
||||||
|
if distribution == "Debian":
|
||||||
|
debian_distro_info = DebianDistroInfo()
|
||||||
|
debian_codenames = debian_distro_info.supported()
|
||||||
|
if release in debian_codenames:
|
||||||
|
release_version = debian_distro_info.version(release)
|
||||||
|
if not release_version:
|
||||||
|
error("Can't find the release version for %s", release)
|
||||||
|
backport_version = f"{version}~bpo{release_version}+1"
|
||||||
|
else:
|
||||||
|
error("%s is not a supported release (%s)", release, debian_codenames)
|
||||||
|
elif distribution == "Ubuntu":
|
||||||
|
series = Distribution(distribution.lower()).getSeries(name_or_version=release)
|
||||||
|
|
||||||
|
backport_version = f"{version}~bpo{series.version}.1"
|
||||||
|
else:
|
||||||
|
error("Unknown distribution «%s» for release «%s»", distribution, release)
|
||||||
if suffix is not None:
|
if suffix is not None:
|
||||||
backport_version += suffix
|
backport_version += suffix
|
||||||
elif upload and upload.startswith('ppa:'):
|
elif upload and upload.startswith("ppa:"):
|
||||||
backport_version += '~ppa1'
|
backport_version += "~ppa1"
|
||||||
return backport_version
|
return backport_version
|
||||||
|
|
||||||
def get_backport_dist(upload, release):
|
|
||||||
if not upload or upload == 'ubuntu':
|
|
||||||
return '%s-backports' % release
|
|
||||||
else:
|
|
||||||
return release
|
|
||||||
|
|
||||||
def do_build(workdir, package, release, bp_version, builder, update):
|
def get_old_version(source, release):
|
||||||
|
try:
|
||||||
|
distribution = codename_to_distribution(release)
|
||||||
|
archive = Distribution(distribution.lower()).getArchive()
|
||||||
|
pkg = archive.getSourcePackage(
|
||||||
|
source, release, ("Release", "Security", "Updates", "Proposed", "Backports")
|
||||||
|
)
|
||||||
|
return pkg.getVersion()
|
||||||
|
except (SeriesNotFoundException, PackageNotFoundException):
|
||||||
|
pass
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def get_backport_dist(release, release_pocket):
|
||||||
|
if release_pocket:
|
||||||
|
return release
|
||||||
|
return f"{release}-backports"
|
||||||
|
|
||||||
|
|
||||||
|
def do_build(workdir, dsc, release, builder, update):
|
||||||
builder = get_builder(builder)
|
builder = get_builder(builder)
|
||||||
if not builder:
|
if not builder:
|
||||||
return
|
return None
|
||||||
|
|
||||||
if update:
|
if update:
|
||||||
if 0 != builder.update(release):
|
if 0 != builder.update(release):
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
return builder.build(os.path.join(workdir,
|
# builder.build is going to chdir to buildresult:
|
||||||
'%s_%s.dsc' % (package, bp_version)),
|
workdir = os.path.realpath(workdir)
|
||||||
release,
|
return builder.build(os.path.join(workdir, dsc), release, os.path.join(workdir, "buildresult"))
|
||||||
os.path.join(workdir, "buildresult"))
|
|
||||||
|
|
||||||
def do_upload(workdir, package, bp_version, upload, prompt):
|
|
||||||
print 'Please check %s %s in file://%s carefully!' % \
|
def do_upload(workdir, package, bp_version, changes, upload, prompt):
|
||||||
(package, bp_version, workdir)
|
print(f"Please check {package} {bp_version} in file://{workdir} carefully!")
|
||||||
if prompt or upload == 'ubuntu':
|
if prompt or upload == "ubuntu":
|
||||||
question = 'Do you want to upload the package to %s' % upload
|
question = f"Do you want to upload the package to {upload}"
|
||||||
answer = YesNoQuestion().ask(question, "yes")
|
answer = YesNoQuestion().ask(question, "yes")
|
||||||
if answer == "no":
|
if answer == "no":
|
||||||
return
|
return
|
||||||
|
|
||||||
changes_file = '%s_%s_source.changes' % (package, bp_version)
|
check_call(["dput", upload, changes], cwd=workdir)
|
||||||
check_call(['dput', upload, changes_file], cwd=workdir)
|
|
||||||
|
|
||||||
|
|
||||||
def do_backport(workdir, package, dscfile, version, suffix, release, build,
|
def orig_needed(upload, workdir, pkg):
|
||||||
builder, update, upload, prompt):
|
"""Avoid a -sa if possible"""
|
||||||
check_call(['dpkg-source', '-x', dscfile, package], cwd=workdir)
|
if not upload or not upload.startswith("ppa:"):
|
||||||
srcdir = os.path.join(workdir, package)
|
return True
|
||||||
|
ppa = upload.split(":", 1)[1]
|
||||||
|
user, ppa = ppa.split("/", 1)
|
||||||
|
|
||||||
bp_version = get_backport_version(version, suffix, upload, release)
|
version = pkg.version.upstream_version
|
||||||
bp_dist = get_backport_dist(upload, release)
|
|
||||||
|
|
||||||
check_call(['dch',
|
http = Http()
|
||||||
'--force-bad-version',
|
for filename in glob.glob(os.path.join(workdir, f"{pkg.source}_{version}.orig*")):
|
||||||
'--preserve',
|
url = (
|
||||||
'--newversion', bp_version,
|
f"https://launchpad.net/~{quote(user)}/+archive/{quote(ppa)}/+sourcefiles"
|
||||||
'--distribution', bp_dist,
|
f"/{quote(pkg.source)}/{quote(pkg.version.full_version)}"
|
||||||
'No-change backport to %s' % release],
|
f"/{quote(os.path.basename(filename))}"
|
||||||
cwd=srcdir)
|
)
|
||||||
check_call(['debuild', '--no-lintian', '-S', '-sa'], cwd=srcdir)
|
try:
|
||||||
|
headers = http.request(url, "HEAD")[0]
|
||||||
|
if headers.status != 200 or not headers["content-location"].startswith(
|
||||||
|
"https://launchpadlibrarian.net"
|
||||||
|
):
|
||||||
|
return True
|
||||||
|
except HttpLib2Error as e:
|
||||||
|
Logger.debug(e)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
if ':' in bp_version:
|
|
||||||
bp_version = bp_version[bp_version.find(':')+1:]
|
def do_backport(
|
||||||
|
workdir,
|
||||||
|
pkg,
|
||||||
|
suffix,
|
||||||
|
message,
|
||||||
|
close,
|
||||||
|
release,
|
||||||
|
release_pocket,
|
||||||
|
build,
|
||||||
|
builder,
|
||||||
|
update,
|
||||||
|
upload,
|
||||||
|
keyid,
|
||||||
|
prompt,
|
||||||
|
):
|
||||||
|
dirname = f"{pkg.source}-{release}"
|
||||||
|
srcdir = os.path.join(workdir, dirname)
|
||||||
|
|
||||||
|
if os.path.exists(srcdir):
|
||||||
|
question = f"Working directory {srcdir} already exists. Delete it?"
|
||||||
|
if YesNoQuestion().ask(question, "no") == "no":
|
||||||
|
sys.exit(1)
|
||||||
|
shutil.rmtree(srcdir)
|
||||||
|
|
||||||
|
pkg.unpack(dirname)
|
||||||
|
|
||||||
|
bp_version = get_backport_version(pkg.version.full_version, suffix, upload, release)
|
||||||
|
old_version = get_old_version(pkg.source, release)
|
||||||
|
bp_dist = get_backport_dist(release, release_pocket)
|
||||||
|
|
||||||
|
changelog = f"{message} backport to {release}."
|
||||||
|
if close:
|
||||||
|
changelog += f" (LP: #{close})"
|
||||||
|
check_call(
|
||||||
|
[
|
||||||
|
"dch",
|
||||||
|
"--force-bad-version",
|
||||||
|
"--force-distribution",
|
||||||
|
"--preserve",
|
||||||
|
"--newversion",
|
||||||
|
bp_version,
|
||||||
|
"--distribution",
|
||||||
|
bp_dist,
|
||||||
|
changelog,
|
||||||
|
],
|
||||||
|
cwd=srcdir,
|
||||||
|
)
|
||||||
|
|
||||||
|
cmd = ["debuild", "--no-lintian", "-S", "-nc", "-uc", "-us"]
|
||||||
|
if orig_needed(upload, workdir, pkg):
|
||||||
|
cmd.append("-sa")
|
||||||
|
else:
|
||||||
|
cmd.append("-sd")
|
||||||
|
if old_version:
|
||||||
|
cmd.append(f"-v{old_version}")
|
||||||
|
env = os.environ.copy()
|
||||||
|
# An ubuntu.com e-mail address would make dpkg-buildpackage fail if there
|
||||||
|
# wasn't an Ubuntu maintainer for an ubuntu-versioned package. LP: #1007042
|
||||||
|
env.pop("DEBEMAIL", None)
|
||||||
|
check_call(cmd, cwd=srcdir, env=env)
|
||||||
|
|
||||||
|
fn_base = pkg.source + "_" + bp_version.split(":", 1)[-1]
|
||||||
|
changes = fn_base + "_source.changes"
|
||||||
|
|
||||||
if build:
|
if build:
|
||||||
if 0 != do_build(workdir, package, release, bp_version, builder,
|
if 0 != do_build(workdir, fn_base + ".dsc", release, builder, update):
|
||||||
update):
|
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
# None: sign with the default signature. False: don't sign
|
||||||
|
if keyid is not False:
|
||||||
|
cmd = ["debsign"]
|
||||||
|
if keyid:
|
||||||
|
cmd.append("-k" + keyid)
|
||||||
|
cmd.append(changes)
|
||||||
|
check_call(cmd, cwd=workdir)
|
||||||
if upload:
|
if upload:
|
||||||
do_upload(workdir, package, bp_version, upload, prompt)
|
do_upload(workdir, pkg.source, bp_version, changes, upload, prompt)
|
||||||
|
|
||||||
shutil.rmtree(srcdir)
|
shutil.rmtree(srcdir)
|
||||||
|
|
||||||
def main(args):
|
|
||||||
os.environ['DEB_VENDOR'] = 'Ubuntu'
|
def main(argv):
|
||||||
ubu_email()
|
ubu_email()
|
||||||
|
|
||||||
opts, (package_or_dsc,) = parse(args[1:])
|
args, config = parse(argv[1:])
|
||||||
|
|
||||||
script_name = os.path.basename(sys.argv[0])
|
Launchpad.login_anonymously(service=args.lpinstance)
|
||||||
launchpad = Launchpad.login_anonymously(script_name, opts.lpinstance)
|
|
||||||
|
|
||||||
if not opts.dest_releases:
|
if not args.dest_releases:
|
||||||
distinfo = lsb_release.get_distro_information()
|
if lsb_release:
|
||||||
try:
|
distinfo = lsb_release.get_distro_information()
|
||||||
opts.dest_releases = [distinfo['CODENAME']]
|
try:
|
||||||
except KeyError:
|
current_distro = distinfo["ID"]
|
||||||
error('No destination release specified and unable to guess yours.')
|
except KeyError:
|
||||||
|
error("No destination release specified and unable to guess yours.")
|
||||||
|
else:
|
||||||
|
err, current_distro = subprocess.getstatusoutput("lsb_release --id --short")
|
||||||
|
if err:
|
||||||
|
error("Could not run lsb_release to retrieve distribution")
|
||||||
|
|
||||||
if opts.workdir:
|
if current_distro == "Ubuntu":
|
||||||
workdir = os.path.expanduser(opts.workdir)
|
args.dest_releases = [UbuntuDistroInfo().lts()]
|
||||||
|
elif current_distro == "Debian":
|
||||||
|
args.dest_releases = [DebianDistroInfo().stable()]
|
||||||
|
else:
|
||||||
|
error("Unknown distribution %s, can't guess target release", current_distro)
|
||||||
|
|
||||||
|
if args.workdir:
|
||||||
|
workdir = os.path.expanduser(args.workdir)
|
||||||
else:
|
else:
|
||||||
workdir = tempfile.mkdtemp(prefix='backportpackage-')
|
workdir = tempfile.mkdtemp(prefix="backportpackage-")
|
||||||
|
|
||||||
if not os.path.exists(workdir):
|
if not os.path.exists(workdir):
|
||||||
os.makedirs(workdir)
|
os.makedirs(workdir)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
dscfile = fetch_package(launchpad,
|
pkg = find_package(
|
||||||
opts.ubuntu_mirror,
|
args.mirror, workdir, args.package_or_dsc, args.version, args.source_release, config
|
||||||
workdir,
|
)
|
||||||
package_or_dsc,
|
pkg.pull()
|
||||||
opts.version,
|
|
||||||
opts.source_release)
|
|
||||||
|
|
||||||
dsc = Dsc(open(os.path.join(workdir, dscfile)))
|
for release in args.dest_releases:
|
||||||
package = dsc['Source']
|
do_backport(
|
||||||
version = dsc['Version']
|
workdir,
|
||||||
|
pkg,
|
||||||
for release in opts.dest_releases:
|
args.suffix,
|
||||||
do_backport(workdir,
|
args.message,
|
||||||
package,
|
args.close,
|
||||||
dscfile,
|
release,
|
||||||
version,
|
args.release_pocket,
|
||||||
opts.suffix,
|
args.build,
|
||||||
release,
|
args.builder,
|
||||||
opts.build,
|
args.update,
|
||||||
opts.builder,
|
args.upload,
|
||||||
opts.update,
|
args.keyid,
|
||||||
opts.upload,
|
args.prompt,
|
||||||
opts.prompt)
|
)
|
||||||
|
except DownloadError as e:
|
||||||
|
error("%s", str(e))
|
||||||
finally:
|
finally:
|
||||||
if not opts.workdir:
|
if not args.workdir:
|
||||||
shutil.rmtree(workdir)
|
shutil.rmtree(workdir)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
|
if __name__ == "__main__":
|
||||||
sys.exit(main(sys.argv))
|
sys.exit(main(sys.argv))
|
||||||
|
@ -21,7 +21,7 @@ _pbuilder-dist()
|
|||||||
|
|
||||||
case $prev in
|
case $prev in
|
||||||
build)
|
build)
|
||||||
COMPREPLY=( $( compgen -o filenames -G "$cur*.dsc" ) )
|
_filedir "dsc"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
COMPREPLY=( $( compgen -W "$options" | grep "^$cur" ) )
|
COMPREPLY=( $( compgen -W "$options" | grep "^$cur" ) )
|
||||||
@ -30,6 +30,17 @@ _pbuilder-dist()
|
|||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
[ "$have" ] && complete -F _pbuilder-dist -o filenames \
|
[ "$have" ] && _pbuilder-aliases()
|
||||||
{pbuilder,cowbuilder}-{dist,dapper,hardy,jaunty,karmic,lucid,maverick,natty,sarge,etch,lenny,squeeze,sid,experimental}
|
{
|
||||||
# Make it pbuilder-* if you know how to do it
|
local distro builder arch
|
||||||
|
for distro in $(ubuntu-distro-info --all; debian-distro-info --all) stable testing unstable; do
|
||||||
|
for builder in pbuilder cowbuilder; do
|
||||||
|
echo "$builder-$distro"
|
||||||
|
for arch in i386 amd64 armhf; do
|
||||||
|
echo "$builder-$distro-$arch"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
[ "$have" ] && complete -F _pbuilder-dist -o filenames pbuilder-dist cowbuilder-dist $(_pbuilder-aliases)
|
||||||
|
226
check-mir
226
check-mir
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python3
|
||||||
#
|
#
|
||||||
# Check components of build dependencies and warn about universe/multiverse
|
# Check components of build dependencies and warn about universe/multiverse
|
||||||
# ones, for a package destined for main/restricted
|
# ones, for a package destined for main/restricted
|
||||||
@ -21,103 +21,183 @@
|
|||||||
# this program; if not, write to the Free Software Foundation, Inc.,
|
# this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
import apt, sys, os.path
|
# pylint: disable=invalid-name
|
||||||
|
# pylint: enable=invalid-name
|
||||||
|
|
||||||
apt_cache = apt.Cache()
|
"""Check if any of a package's build or binary dependencies are in universe or multiverse.
|
||||||
|
|
||||||
def check_support(pkgname, alt=False):
|
Run this inside an unpacked source package
|
||||||
'''Check if pkgname is in main or restricted.
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os.path
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import apt
|
||||||
|
|
||||||
|
|
||||||
|
def check_support(apt_cache, pkgname, alt=False):
|
||||||
|
"""Check if pkgname is in main or restricted.
|
||||||
|
|
||||||
This prints messages if a package is not in main/restricted, or only
|
This prints messages if a package is not in main/restricted, or only
|
||||||
partially (i. e. source in main, but binary in universe).
|
partially (i. e. source in main, but binary in universe).
|
||||||
'''
|
"""
|
||||||
if alt:
|
if alt:
|
||||||
prefix = ' ... alternative ' + pkgname
|
prefix = " ... alternative " + pkgname
|
||||||
else:
|
else:
|
||||||
prefix = ' * ' + pkgname
|
prefix = " * " + pkgname
|
||||||
|
|
||||||
try:
|
prov_packages = apt_cache.get_providing_packages(pkgname)
|
||||||
|
if pkgname in apt_cache:
|
||||||
pkg = apt_cache[pkgname]
|
pkg = apt_cache[pkgname]
|
||||||
except KeyError:
|
|
||||||
print >> sys.stderr, prefix, 'does not exist (pure virtual?)'
|
# If this is a virtual package, iterate through the binary packages that
|
||||||
return False
|
# provide this, and ensure they are all in Main. Source packages in and of
|
||||||
|
# themselves cannot provide virtual packages, only binary packages can.
|
||||||
section = pkg.candidate.section
|
elif len(prov_packages) > 0:
|
||||||
if section.startswith('universe') or section.startswith('multiverse'):
|
supported, unsupported = [], []
|
||||||
# check if the source package is in main and thus will only need binary
|
for pkg in prov_packages:
|
||||||
# promotion
|
candidate = pkg.candidate
|
||||||
sr = apt.apt_pkg.SourceRecords()
|
if candidate:
|
||||||
if not sr.lookup(pkg.candidate.source_name):
|
section = candidate.section
|
||||||
print >> sys.stderr, 'ERROR: Cannot lookup source package for', pkg.name
|
if section.startswith("universe") or section.startswith("multiverse"):
|
||||||
print prefix, 'package is in', section.split('/')[0]
|
unsupported.append(pkg.name)
|
||||||
return False
|
else:
|
||||||
src = apt.apt_pkg.TagSection(sr.record)
|
supported.append(pkg.name)
|
||||||
if src['Section'].startswith('universe') or src['Section'].startswith('multiverse'):
|
|
||||||
print prefix, 'binary and source package is in', section.split('/')[0]
|
if len(supported) > 0:
|
||||||
|
msg = "is a virtual package, which is provided by the following "
|
||||||
|
msg += "candidates in Main: " + " ".join(supported)
|
||||||
|
print(prefix, msg)
|
||||||
|
elif len(unsupported) > 0:
|
||||||
|
msg = "is a virtual package, but is only provided by the "
|
||||||
|
msg += "following non-Main candidates: " + " ".join(unsupported)
|
||||||
|
print(prefix, msg, file=sys.stderr)
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
print prefix, 'is in', section.split('/')[0] + ', but its source', pkg.candidate.source_name, 'is already in main; file an ubuntu-archive bug for promoting the current preferred alternative'
|
msg = "is a virtual package that exists but is not provided by "
|
||||||
return True
|
msg += "package currently in the archive. Proceed with caution."
|
||||||
|
print(prefix, msg, file=sys.stderr)
|
||||||
|
return False
|
||||||
|
|
||||||
|
else:
|
||||||
|
print(prefix, "does not exist", file=sys.stderr)
|
||||||
|
return False
|
||||||
|
|
||||||
|
section = pkg.candidate.section
|
||||||
|
if section.startswith("universe") or section.startswith("multiverse"):
|
||||||
|
# check if the source package is in main and thus will only need binary
|
||||||
|
# promotion
|
||||||
|
source_records = apt.apt_pkg.SourceRecords()
|
||||||
|
if not source_records.lookup(pkg.candidate.source_name):
|
||||||
|
print("ERROR: Cannot lookup source package for", pkg.name, file=sys.stderr)
|
||||||
|
print(prefix, "package is in", section.split("/")[0])
|
||||||
|
return False
|
||||||
|
src = apt.apt_pkg.TagSection(source_records.record)
|
||||||
|
if src["Section"].startswith("universe") or src["Section"].startswith("multiverse"):
|
||||||
|
print(prefix, "binary and source package is in", section.split("/")[0])
|
||||||
|
return False
|
||||||
|
|
||||||
|
print(
|
||||||
|
prefix,
|
||||||
|
"is in",
|
||||||
|
section.split("/")[0] + ", but its source",
|
||||||
|
pkg.candidate.source_name,
|
||||||
|
"is already in main; file an ubuntu-archive bug for "
|
||||||
|
"promoting the current preferred alternative",
|
||||||
|
)
|
||||||
|
return True
|
||||||
|
|
||||||
if alt:
|
if alt:
|
||||||
print prefix, 'is already in main; consider preferring it'
|
print(prefix, "is already in main; consider preferring it")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
#
|
def check_build_dependencies(apt_cache, control):
|
||||||
# main
|
print("Checking support status of build dependencies...")
|
||||||
#
|
|
||||||
|
|
||||||
if not os.path.exists('debian/control'):
|
any_unsupported = False
|
||||||
print >> sys.stderr, 'debian/control not found. You need to run this tool in a source package directory'
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
print 'Checking support status of build dependencies...'
|
for field in ("Build-Depends", "Build-Depends-Indep"):
|
||||||
|
|
||||||
# get build dependencies from debian/control
|
|
||||||
control=apt.apt_pkg.TagFile(open('debian/control'))
|
|
||||||
control.next()
|
|
||||||
|
|
||||||
|
|
||||||
any_unsupported = False
|
|
||||||
|
|
||||||
for field in ('Build-Depends', 'Build-Depends-Indep'):
|
|
||||||
if field not in control.section:
|
|
||||||
continue
|
|
||||||
for or_group in apt.apt_pkg.parse_src_depends(control.section[field]):
|
|
||||||
pkgname = or_group[0][0]
|
|
||||||
if not check_support(pkgname):
|
|
||||||
# check non-preferred alternatives
|
|
||||||
for altpkg in or_group[1:]:
|
|
||||||
if check_support(altpkg[0], alt=True):
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
any_unsupported = True
|
|
||||||
|
|
||||||
print '\nChecking support status of binary dependencies...'
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
control.next()
|
|
||||||
except StopIteration:
|
|
||||||
break
|
|
||||||
|
|
||||||
for field in ('Depends', 'Pre-Depends', 'Recommends'):
|
|
||||||
if field not in control.section:
|
if field not in control.section:
|
||||||
continue
|
continue
|
||||||
for or_group in apt.apt_pkg.parse_depends(control.section[field]):
|
for or_group in apt.apt_pkg.parse_src_depends(control.section[field]):
|
||||||
pkgname = or_group[0][0]
|
pkgname = or_group[0][0]
|
||||||
if pkgname.startswith('$'):
|
|
||||||
|
# debhelper-compat is expected to be a build dependency of every
|
||||||
|
# package, so it is a red herring to display it in this report.
|
||||||
|
# (src:debhelper is in Ubuntu Main anyway)
|
||||||
|
if pkgname == "debhelper-compat":
|
||||||
continue
|
continue
|
||||||
if not check_support(pkgname):
|
|
||||||
|
if not check_support(apt_cache, pkgname):
|
||||||
# check non-preferred alternatives
|
# check non-preferred alternatives
|
||||||
for altpkg in or_group[1:]:
|
for altpkg in or_group[1:]:
|
||||||
if check_support(altpkg[0], alt=True):
|
if check_support(apt_cache, altpkg[0], alt=True):
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
any_unsupported = True
|
any_unsupported = True
|
||||||
|
|
||||||
if any_unsupported:
|
return any_unsupported
|
||||||
print '\nPlease check https://wiki.ubuntu.com/MainInclusionProcess if this source package needs to get into in main/restricted, or reconsider if the package really needs above dependencies.'
|
|
||||||
else:
|
|
||||||
print 'All dependencies are supported in main or restricted.'
|
def check_binary_dependencies(apt_cache, control):
|
||||||
|
any_unsupported = False
|
||||||
|
|
||||||
|
print("\nChecking support status of binary dependencies...")
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
next(control)
|
||||||
|
except StopIteration:
|
||||||
|
break
|
||||||
|
|
||||||
|
for field in ("Depends", "Pre-Depends", "Recommends"):
|
||||||
|
if field not in control.section:
|
||||||
|
continue
|
||||||
|
for or_group in apt.apt_pkg.parse_src_depends(control.section[field]):
|
||||||
|
pkgname = or_group[0][0]
|
||||||
|
if pkgname.startswith("$"):
|
||||||
|
continue
|
||||||
|
if not check_support(apt_cache, pkgname):
|
||||||
|
# check non-preferred alternatives
|
||||||
|
for altpkg in or_group[1:]:
|
||||||
|
if check_support(apt_cache, altpkg[0], alt=True):
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
any_unsupported = True
|
||||||
|
|
||||||
|
return any_unsupported
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
|
parser.parse_args()
|
||||||
|
apt_cache = apt.Cache()
|
||||||
|
|
||||||
|
if not os.path.exists("debian/control"):
|
||||||
|
print(
|
||||||
|
"debian/control not found. You need to run this tool in a source package directory",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# get build dependencies from debian/control
|
||||||
|
control = apt.apt_pkg.TagFile(open("debian/control", encoding="utf-8"))
|
||||||
|
next(control)
|
||||||
|
|
||||||
|
unsupported_build_deps = check_build_dependencies(apt_cache, control)
|
||||||
|
unsupported_binary_deps = check_binary_dependencies(apt_cache, control)
|
||||||
|
|
||||||
|
if unsupported_build_deps or unsupported_binary_deps:
|
||||||
|
print(
|
||||||
|
"\nPlease check https://wiki.ubuntu.com/MainInclusionProcess if "
|
||||||
|
"this source package needs to get into in main/restricted, or "
|
||||||
|
"reconsider if the package really needs above dependencies."
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
print("All dependencies are supported in main or restricted.")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
@ -29,21 +29,55 @@
|
|||||||
# * nm (from binutils)
|
# * nm (from binutils)
|
||||||
|
|
||||||
DISTRO=$(lsb_release -c -s)
|
DISTRO=$(lsb_release -c -s)
|
||||||
VERSION=$(apt-cache madison "$1" | grep -- "$DISTRO"'/.*Sources$' | awk '{print $3}')
|
|
||||||
PACKAGES=$(apt-cache showsrc "$1" | grep-dctrl -s Binary -F Version "$VERSION" | sed 's/Binary\:\ //g;s/\,//g' | sort -u)
|
|
||||||
DEBLINE=""
|
DEBLINE=""
|
||||||
DEBUG=False
|
DEBUG=False
|
||||||
|
|
||||||
if [[ -z $1 ]]; then
|
usage() {
|
||||||
echo "Missing argument: source package name."
|
prog=$(basename $0)
|
||||||
exit 1
|
cat <<EOF
|
||||||
|
Usage: $prog [options] source-package [DEBDIR]
|
||||||
|
|
||||||
|
Get a diff of the exported symbols of all .so files in every binary package of
|
||||||
|
package the source package. The source package will be found in DEBDIR, defaulting to /var/cache/pbuilder/result.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
EOF
|
||||||
|
exit $1
|
||||||
|
}
|
||||||
|
|
||||||
|
PACKAGE=""
|
||||||
|
DEBDIR="/var/cache/pbuilder/result"
|
||||||
|
POSITION=0
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
-h|--help)
|
||||||
|
usage 0
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
usage 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ $POSITION -eq 0 ]; then
|
||||||
|
PACKAGE="$1"
|
||||||
|
elif [ $POSITION -eq 1 ]; then
|
||||||
|
DEBDIR="$1"
|
||||||
|
else
|
||||||
|
echo "Too many arguments." >&2
|
||||||
|
usage 1
|
||||||
|
fi
|
||||||
|
POSITION=$(($POSITION+1))
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $POSITION -eq 0 ]; then
|
||||||
|
echo "Missing argument: source package name." >&2
|
||||||
|
usage 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z $2 ]]; then
|
VERSION=$(apt-cache madison "$PACKAGE" | grep -- "$DISTRO"'/.*Sources$' | awk '{print $3}')
|
||||||
DEBDIR="/var/cache/pbuilder/result"
|
PACKAGES=$(apt-cache showsrc "$PACKAGE" | grep-dctrl -s Binary -F Version "$VERSION" | sed 's/Binary\:\ //g;s/\,//g' | sort -u)
|
||||||
else
|
|
||||||
DEBDIR="$2"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ `id -u` != "0" ]
|
if [ `id -u` != "0" ]
|
||||||
then
|
then
|
||||||
@ -67,7 +101,7 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [[ -z $DEBLINE ]]; then
|
if [[ -z $DEBLINE ]]; then
|
||||||
echo "Package doesn't exist: $1."
|
echo "Package doesn't exist: $PACKAGE."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
19
dch-repeat
19
dch-repeat
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
#
|
#
|
||||||
# Copyright (C) 2007-2008 Canonical, Ltd.
|
# Copyright (C) 2007-2008 Canonical, Ltd.,
|
||||||
|
# 2011, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
# Author: Kees Cook <kees@ubuntu.com>
|
# Author: Kees Cook <kees@ubuntu.com>
|
||||||
#
|
#
|
||||||
# ##################################################################
|
# ##################################################################
|
||||||
@ -47,11 +48,11 @@ EOM
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
my @releases = ('dapper', 'hardy', 'jaunty', 'karmic', 'lucid', 'maverick', 'natty');
|
my @releases = undef;
|
||||||
|
our $devel_release = undef;
|
||||||
|
|
||||||
#Getopt::Long::Configure("bundling", "no_ignore_case");
|
#Getopt::Long::Configure("bundling", "no_ignore_case");
|
||||||
our $opt_build_tree = "/scratch/ubuntu/build";
|
our $opt_build_tree = "/scratch/ubuntu/build";
|
||||||
our $opt_devel_release = $releases[$#releases];
|
|
||||||
our $opt_pocket = undef;
|
our $opt_pocket = undef;
|
||||||
our $opt_package = undef;
|
our $opt_package = undef;
|
||||||
our $opt_source_release = undef;
|
our $opt_source_release = undef;
|
||||||
@ -70,6 +71,10 @@ Usage() unless (GetOptions(
|
|||||||
));
|
));
|
||||||
Usage() if ($opt_help);
|
Usage() if ($opt_help);
|
||||||
|
|
||||||
|
@releases = split(/\s+/, `ubuntu-distro-info --supported`);
|
||||||
|
$devel_release = `ubuntu-distro-info --devel`;
|
||||||
|
chomp($devel_release);
|
||||||
|
|
||||||
sub get_changelog($)
|
sub get_changelog($)
|
||||||
{
|
{
|
||||||
my ($path) = @_;
|
my ($path) = @_;
|
||||||
@ -135,8 +140,8 @@ warn "package: '$opt_package\n" if ($opt_verbose);
|
|||||||
|
|
||||||
# By default, take changelog from newer release
|
# By default, take changelog from newer release
|
||||||
if (!defined($opt_source_release)) {
|
if (!defined($opt_source_release)) {
|
||||||
if ($opt_target_release eq $opt_devel_release) {
|
if ($opt_target_release eq $devel_release) {
|
||||||
die "No more recent release than '$opt_devel_release' to take changelog from\n";
|
die "No more recent release than '$devel_release' to take changelog from\n";
|
||||||
}
|
}
|
||||||
foreach my $i (0 .. $#releases) {
|
foreach my $i (0 .. $#releases) {
|
||||||
if ($releases[$i] eq $opt_target_release) {
|
if ($releases[$i] eq $opt_target_release) {
|
||||||
@ -148,11 +153,11 @@ if (!defined($opt_source_release)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
warn "source-release: '$opt_source_release\n" if ($opt_verbose);
|
warn "source-release: '$opt_source_release\n" if ($opt_verbose);
|
||||||
warn "devel-release: '$opt_devel_release\n" if ($opt_verbose);
|
warn "devel-release: '$devel_release\n" if ($opt_verbose);
|
||||||
|
|
||||||
# By default, use "security" pocket for non-devel releases
|
# By default, use "security" pocket for non-devel releases
|
||||||
if (!defined($opt_pocket)) {
|
if (!defined($opt_pocket)) {
|
||||||
if ($opt_target_release eq $opt_devel_release) {
|
if ($opt_target_release eq $devel_release) {
|
||||||
$opt_pocket = "";
|
$opt_pocket = "";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
1
debian/.gitignore
vendored
Normal file
1
debian/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
files
|
49
debian/NEWS
vendored
Normal file
49
debian/NEWS
vendored
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
ubuntu-dev-tools (0.135) unstable; urgency=low
|
||||||
|
|
||||||
|
reverse-build-depends was removed from ubuntu-dev-tools. reverse-depends -b
|
||||||
|
is equivalent.
|
||||||
|
|
||||||
|
-- Stefano Rivera <stefanor@debian.org> Sat, 12 Nov 2011 13:11:21 +0200
|
||||||
|
|
||||||
|
ubuntu-dev-tools (0.131) unstable; urgency=low
|
||||||
|
|
||||||
|
get-build-deps was removed from ubuntu-dev-tools. The newer mk-build-deps in
|
||||||
|
devscripts is equivalent (with the -ir options).
|
||||||
|
|
||||||
|
-- Stefano Rivera <stefanor@debian.org> Sat, 10 Sep 2011 00:13:18 +0200
|
||||||
|
|
||||||
|
ubuntu-dev-tools (0.129) unstable; urgency=low
|
||||||
|
|
||||||
|
Several tools that worked against Launchpad but were not specific to Ubuntu
|
||||||
|
have been migrated to the "lptools" project.
|
||||||
|
|
||||||
|
The following tools have moved:
|
||||||
|
- get-branches (renamed to lp-get-branches)
|
||||||
|
- grab-attachments (renamed to lp-grab-attachments)
|
||||||
|
- lp-project-upload
|
||||||
|
- lp-list-bugs
|
||||||
|
- lp-set-dup
|
||||||
|
- lp-shell
|
||||||
|
|
||||||
|
They can now be found in the lptools package (version 0.0.1~bzr28-1 or
|
||||||
|
later).
|
||||||
|
|
||||||
|
-- Jelmer Vernooij <jelmer@debian.org> Fri, 02 Sep 2011 13:43:34 +0200
|
||||||
|
|
||||||
|
ubuntu-dev-tools (0.119) unstable; urgency=low
|
||||||
|
|
||||||
|
launchpadlib 1.9 will cause some issues, as it uses the GNOME Keyring / KDE
|
||||||
|
wallet to store credentials.
|
||||||
|
https://help.launchpad.net/API/ThirdPartyIntegration
|
||||||
|
|
||||||
|
Known issues and workarounds:
|
||||||
|
|
||||||
|
Seeing keyring.backend.PasswordSetError or gnomekeyring.IOError when
|
||||||
|
using ubuntu-dev-tools on a remote machine?
|
||||||
|
Try ssh -X and run export `dbus-launch` in the ssh session.
|
||||||
|
|
||||||
|
Otherwise, uninstalling python-gnomekeyring will force the credentials to be
|
||||||
|
stored in ~/keyring_pass.cfg instead of a keyring, and bypass all these
|
||||||
|
issues.
|
||||||
|
|
||||||
|
-- Stefano Rivera <stefanor@debian.org> Tue, 01 Mar 2011 15:01:01 +0200
|
26
debian/README.source
vendored
Normal file
26
debian/README.source
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Changelog generation and releasing
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
The changelog is generated by the uploader using `gbp dch' from
|
||||||
|
`git-buildpackage'. To invoke, just run
|
||||||
|
|
||||||
|
$ gbp dch
|
||||||
|
|
||||||
|
and then edit the changelog as appropriate - wrap lines, remove Signed-Off-By,
|
||||||
|
and so on. Then finalise the changelog, e.g.
|
||||||
|
|
||||||
|
$ dch -D unstable --release ""
|
||||||
|
|
||||||
|
commit it
|
||||||
|
|
||||||
|
$ git commit debian/changelog -m "Releasing 0.foo"
|
||||||
|
|
||||||
|
and tag/sign this commit
|
||||||
|
|
||||||
|
$ gbp buildpackage --git-tag-only
|
||||||
|
|
||||||
|
then build using (for example)
|
||||||
|
|
||||||
|
$ gbp buildpackage -S
|
||||||
|
|
||||||
|
and test/upload as normal.
|
1886
debian/changelog
vendored
1886
debian/changelog
vendored
File diff suppressed because it is too large
Load Diff
2
debian/clean
vendored
2
debian/clean
vendored
@ -1 +1 @@
|
|||||||
*.egg-info/*
|
*.egg-info/
|
||||||
|
1
debian/compat
vendored
1
debian/compat
vendored
@ -1 +0,0 @@
|
|||||||
7
|
|
196
debian/control
vendored
196
debian/control
vendored
@ -1,92 +1,102 @@
|
|||||||
Source: ubuntu-dev-tools
|
Source: ubuntu-dev-tools
|
||||||
Section: devel
|
Section: devel
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: Ubuntu Developers <ubuntu-dev-team@lists.alioth.debian.org>
|
Maintainer: Ubuntu Developers <ubuntu-dev-tools@packages.debian.org>
|
||||||
Uploaders: Benjamin Drung <bdrung@debian.org>
|
Uploaders:
|
||||||
Vcs-Bzr: lp:ubuntu-dev-tools
|
Benjamin Drung <bdrung@debian.org>,
|
||||||
Vcs-Browser: https://code.launchpad.net/~ubuntu-dev/ubuntu-dev-tools/trunk
|
Stefano Rivera <stefanor@debian.org>,
|
||||||
Build-Depends: dctrl-tools,
|
Mattia Rizzolo <mattia@debian.org>,
|
||||||
debhelper (>= 7.0.50~),
|
Simon Quigley <tsimonq2@debian.org>,
|
||||||
devscripts,
|
Build-Depends:
|
||||||
libapt-pkg-perl,
|
black <!nocheck>,
|
||||||
libwww-perl,
|
dctrl-tools,
|
||||||
lsb-release,
|
debhelper-compat (= 13),
|
||||||
pylint,
|
devscripts (>= 2.11.0~),
|
||||||
python-all (>= 2.6.5-13~),
|
dh-make,
|
||||||
python-apt (>= 0.7.93~),
|
dh-python,
|
||||||
python-debian (>= 0.1.15),
|
distro-info (>= 0.2~),
|
||||||
python-gnupginterface,
|
flake8,
|
||||||
python-launchpadlib (>= 1.5.7),
|
isort <!nocheck>,
|
||||||
python-magic,
|
lsb-release,
|
||||||
python-mox,
|
pylint <!nocheck>,
|
||||||
python-setuptools,
|
python3-all,
|
||||||
python-soappy,
|
python3-apt,
|
||||||
python-unittest2
|
python3-dateutil,
|
||||||
X-Python-Version: >= 2.5
|
python3-debian,
|
||||||
|
python3-debianbts,
|
||||||
|
python3-distro-info,
|
||||||
|
python3-httplib2,
|
||||||
|
python3-launchpadlib-desktop,
|
||||||
|
python3-pytest,
|
||||||
|
python3-requests <!nocheck>,
|
||||||
|
python3-setuptools,
|
||||||
|
python3-yaml <!nocheck>,
|
||||||
|
Standards-Version: 4.7.2
|
||||||
|
Rules-Requires-Root: no
|
||||||
|
Vcs-Git: https://git.launchpad.net/ubuntu-dev-tools
|
||||||
|
Vcs-Browser: https://git.launchpad.net/ubuntu-dev-tools
|
||||||
Homepage: https://launchpad.net/ubuntu-dev-tools
|
Homepage: https://launchpad.net/ubuntu-dev-tools
|
||||||
Standards-Version: 3.9.1
|
|
||||||
|
|
||||||
Package: ubuntu-dev-tools
|
Package: ubuntu-dev-tools
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Depends: binutils,
|
Depends:
|
||||||
dctrl-tools,
|
binutils,
|
||||||
devscripts,
|
dctrl-tools,
|
||||||
diffstat,
|
devscripts (>= 2.11.0~),
|
||||||
dpkg-dev,
|
diffstat,
|
||||||
lsb-release,
|
distro-info (>= 0.2~),
|
||||||
python-apt (>= 0.7.93~),
|
dpkg-dev,
|
||||||
python-debian (>= 0.1.15),
|
dput,
|
||||||
python-launchpadlib (>= 1.5.7),
|
lsb-release,
|
||||||
python-lazr.restfulclient,
|
python3,
|
||||||
sudo,
|
python3-apt,
|
||||||
${misc:Depends},
|
python3-debian,
|
||||||
${perl:Depends},
|
python3-debianbts,
|
||||||
${python:Depends}
|
python3-distro-info,
|
||||||
Recommends: bzr,
|
python3-httplib2,
|
||||||
bzr-builddeb,
|
python3-launchpadlib-desktop,
|
||||||
ca-certificates,
|
python3-lazr.restfulclient,
|
||||||
debian-archive-keyring,
|
python3-ubuntutools (= ${binary:Version}),
|
||||||
debootstrap,
|
python3-yaml,
|
||||||
genisoimage,
|
sensible-utils,
|
||||||
libapt-pkg-perl,
|
sudo,
|
||||||
libwww-perl,
|
tzdata,
|
||||||
pbuilder | cowdancer | sbuild,
|
${misc:Depends},
|
||||||
perl-modules,
|
${perl:Depends},
|
||||||
python-gnupginterface,
|
Recommends:
|
||||||
python-magic,
|
arch-test,
|
||||||
python-soappy,
|
ca-certificates,
|
||||||
reportbug (>= 3.39ubuntu1)
|
debian-archive-keyring,
|
||||||
Suggests: python-simplejson | python (>= 2.7), qemu-kvm-extras-static
|
debian-keyring,
|
||||||
Breaks: ${python:Breaks}
|
debootstrap,
|
||||||
|
genisoimage,
|
||||||
|
lintian,
|
||||||
|
patch,
|
||||||
|
sbuild | pbuilder | cowbuilder,
|
||||||
|
python3-dns,
|
||||||
|
quilt,
|
||||||
|
reportbug (>= 3.39ubuntu1),
|
||||||
|
ubuntu-keyring | ubuntu-archive-keyring,
|
||||||
|
Suggests:
|
||||||
|
bzr | brz,
|
||||||
|
bzr-builddeb | brz-debian,
|
||||||
|
qemu-user-static,
|
||||||
Description: useful tools for Ubuntu developers
|
Description: useful tools for Ubuntu developers
|
||||||
This is a collection of useful tools that Ubuntu developers use to make their
|
This is a collection of useful tools that Ubuntu developers use to make their
|
||||||
packaging work a lot easier.
|
packaging work a lot easier.
|
||||||
.
|
.
|
||||||
Such tools include:
|
Such tools include:
|
||||||
.
|
.
|
||||||
- 404main - used to check what components a package's deps are in, for
|
- backportpackage - helper to test package backports
|
||||||
doing a main inclusion report for example.
|
- bitesize - add the 'bitesize' tag to a bug and comment that you are
|
||||||
|
willing to help fix it.
|
||||||
- check-mir - check support status of build/binary dependencies
|
- check-mir - check support status of build/binary dependencies
|
||||||
- check-symbols - will compare and give you a diff of the exported symbols of
|
- check-symbols - will compare and give you a diff of the exported symbols of
|
||||||
all .so files in a binary package.
|
all .so files in a binary package.
|
||||||
- dch-repeat - used to repeat a change log into an older release.
|
- dch-repeat - used to repeat a change log into an older release.
|
||||||
- dgetlp - download a source package from the Launchpad library.
|
|
||||||
- errno - search POSIX error codes by error number, name, or description
|
|
||||||
- get-branches - used to branch/checkout all the bzr branches in a Launchpad
|
|
||||||
team.
|
|
||||||
- get-build-deps - install the build dependencies needed for a package
|
|
||||||
reading debian/control.
|
|
||||||
- grab-attachments - download all bug attachments from a Launchpad bug
|
|
||||||
report.
|
|
||||||
- grab-merge - grabs a merge from merges.ubuntu.com easily.
|
- grab-merge - grabs a merge from merges.ubuntu.com easily.
|
||||||
- grep-merges - search for pending merges from Debian.
|
- grep-merges - search for pending merges from Debian.
|
||||||
- hugdaylist - compile HugDay lists from bug list URLs.
|
|
||||||
- import-bug-from-debian - copy a bug from the Debian BTS to Launchpad
|
- import-bug-from-debian - copy a bug from the Debian BTS to Launchpad
|
||||||
- lp-list-bugs - briefly list status of Launchpad bugs.
|
|
||||||
- lp-project-upload - upload a release tarball to a Launchpad project
|
|
||||||
- lp-set-dup - sets the "duplicate of" bug of a bug and its dups.
|
|
||||||
- manage-credentials - manage Launchpad token credentials.
|
|
||||||
- massfile - fill multiple bugs using a template.
|
|
||||||
- merge-changelog - manually merges two Debian changelogs with the same base
|
- merge-changelog - manually merges two Debian changelogs with the same base
|
||||||
version.
|
version.
|
||||||
- mk-sbuild - script to create LVM snapshot chroots via schroot and
|
- mk-sbuild - script to create LVM snapshot chroots via schroot and
|
||||||
@ -95,25 +105,51 @@ Description: useful tools for Ubuntu developers
|
|||||||
chroots (for different Ubuntu and Debian releases) on the same system.
|
chroots (for different Ubuntu and Debian releases) on the same system.
|
||||||
- pull-debian-debdiff - attempts to find and download a specific version of
|
- pull-debian-debdiff - attempts to find and download a specific version of
|
||||||
a Debian package and its immediate parent to generate a debdiff.
|
a Debian package and its immediate parent to generate a debdiff.
|
||||||
- pull-debian-source - downloads the lastest source package available in
|
- pull-debian-source - downloads the latest source package available in
|
||||||
Debian of a package.
|
Debian of a package.
|
||||||
- pull-lp-source - downloads lastest source package from Launchpad.
|
- pull-lp-source - downloads source package from Launchpad.
|
||||||
- pull-revu-source - downloads the latest source package from REVU
|
- pull-lp-debs - downloads debs package(s) from Launchpad.
|
||||||
- requestsync - files a sync request with Debian changelog and ratione.
|
- pull-lp-ddebs - downloads dbgsym/ddebs package(s) from Launchpad.
|
||||||
- reverse-build-depends - find the reverse build dependencies that a package
|
- pull-lp-udebs - downloads udebs package(s) from Launchpad.
|
||||||
has.
|
- pull-debian-* - same as pull-lp-* but for Debian packages.
|
||||||
|
- pull-uca-* - same as pull-lp-* but for Ubuntu Cloud Archive packages.
|
||||||
|
- pull-pkg - common script that provides above pull-* functionality.
|
||||||
|
- requestbackport - file a backporting request.
|
||||||
|
- requestsync - files a sync request with Debian changelog and rationale.
|
||||||
|
- reverse-depends - find the reverse dependencies (or build dependencies) of
|
||||||
|
a package.
|
||||||
|
- running-autopkgtests - lists the currently running and/or queued
|
||||||
|
autopkgtests on the Ubuntu autopkgtest infrastructure
|
||||||
|
- seeded-in-ubuntu - query if a package is safe to upload during a freeze.
|
||||||
- setup-packaging-environment - assistant to get an Ubuntu installation
|
- setup-packaging-environment - assistant to get an Ubuntu installation
|
||||||
ready for packaging work.
|
ready for packaging work.
|
||||||
- sponsor-patch - Downloads a patch from a Launchpad bug, patches the source
|
- sponsor-patch - Downloads a patch from a Launchpad bug, patches the source
|
||||||
package, and uploads it (to Ubuntu or a PPA)
|
package, and uploads it (to Ubuntu or a PPA)
|
||||||
- submittodebian - automatically send your changes to Debian as a bug report.
|
- submittodebian - automatically send your changes to Debian as a bug report.
|
||||||
- suspicious-source - outputs a list of files which are not common source
|
|
||||||
files.
|
|
||||||
- syncpackage - helper to prepare .changes file to upload synced packages
|
- syncpackage - helper to prepare .changes file to upload synced packages
|
||||||
- ubuntu-build - give commands to the Launchpad build daemons from the
|
- ubuntu-build - give commands to the Launchpad build daemons from the
|
||||||
command line.
|
command line.
|
||||||
- ubuntu-iso - output information of an Ubuntu ISO image.
|
- ubuntu-iso - output information of an Ubuntu ISO image.
|
||||||
|
- ubuntu-upload-permission - query / list the upload permissions for a
|
||||||
|
package.
|
||||||
- update-maintainer - script to update maintainer field in ubuntu packages.
|
- update-maintainer - script to update maintainer field in ubuntu packages.
|
||||||
- what-patch - determines what patch system, if any, a source package is
|
|
||||||
using.
|
Package: python3-ubuntutools
|
||||||
- wrap-and-sort - wrap long lines and sort items in packaging files.
|
Architecture: all
|
||||||
|
Section: python
|
||||||
|
Depends:
|
||||||
|
python3-dateutil,
|
||||||
|
python3-debian,
|
||||||
|
python3-distro-info,
|
||||||
|
python3-httplib2,
|
||||||
|
python3-launchpadlib-desktop,
|
||||||
|
python3-lazr.restfulclient,
|
||||||
|
python3-requests,
|
||||||
|
sensible-utils,
|
||||||
|
${misc:Depends},
|
||||||
|
${python3:Depends},
|
||||||
|
Description: useful APIs for Ubuntu developer tools — Python 3 library
|
||||||
|
This package ships a collection of APIs, helpers and wrappers used to
|
||||||
|
develop useful utilities for Ubuntu developers.
|
||||||
|
.
|
||||||
|
This package installs the library for Python 3.
|
||||||
|
223
debian/copyright
vendored
223
debian/copyright
vendored
@ -1,32 +1,33 @@
|
|||||||
Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
Name: Ubuntu Developer Tools
|
Upstream-Name: Ubuntu Developer Tools
|
||||||
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
|
Upstream-Contact: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
|
||||||
Source: https://launchpad.net/ubuntu-dev-tools
|
Source: https://launchpad.net/ubuntu-dev-tools
|
||||||
|
|
||||||
Files: *,
|
Files: backportpackage
|
||||||
backportpackage,
|
bash_completion/pbuilder-dist
|
||||||
bash_completion/pbuilder-dist,
|
check-symbols
|
||||||
check-symbols,
|
debian/*
|
||||||
doc/backportpackage.1,
|
doc/backportpackage.1
|
||||||
doc/check-symbols.1,
|
doc/check-symbols.1
|
||||||
doc/errno.1,
|
doc/requestsync.1
|
||||||
doc/requestsync.1,
|
doc/ubuntu-iso.1
|
||||||
doc/ubuntu-iso.1,
|
doc/running-autopkgtests.1
|
||||||
lp-shell,
|
GPL-2
|
||||||
requestsync,
|
README.updates
|
||||||
setup.py,
|
requestsync
|
||||||
ubuntu-iso,
|
setup.py
|
||||||
ubuntutools/requestsync/common.py,
|
TODO
|
||||||
ubuntutools/requestsync/lp.py,
|
ubuntu-iso
|
||||||
ubuntutools/requestsync/mail.py
|
ubuntutools/requestsync/*.py
|
||||||
Copyright: 2007, Albert Damen <albrt@gmx.net>
|
Copyright: 2007, Albert Damen <albrt@gmx.net>
|
||||||
2010, Benjamin Drung <bdrung@ubuntu.com>
|
2010-2024, Benjamin Drung <bdrung@ubuntu.com>
|
||||||
2007-2010, Canonical Ltd.
|
2007-2023, Canonical Ltd.
|
||||||
2006-2007, Daniel Holbach <daniel.holbach@ubuntu.com>
|
2006-2007, Daniel Holbach <daniel.holbach@ubuntu.com>
|
||||||
2010, Dustin Kirkland <kirkland@ubuntu.com>
|
|
||||||
2010, Evan Broder <evan@ebroder.net>
|
2010, Evan Broder <evan@ebroder.net>
|
||||||
2006-2007, Luke Yelavich <themuso@ubuntu.com>
|
2006-2007, Luke Yelavich <themuso@ubuntu.com>
|
||||||
2009-2010, Michael Bienia <geser@ubuntu.com>
|
2009-2010, Michael Bienia <geser@ubuntu.com>
|
||||||
|
2024-2025, Simon Quigley <tsimonq2@debian.org>
|
||||||
|
2010-2011, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
2008, Stephan Hermann <sh@sourcecode.de>
|
2008, Stephan Hermann <sh@sourcecode.de>
|
||||||
2007, Steve Kowalik <stevenk@ubuntu.com>
|
2007, Steve Kowalik <stevenk@ubuntu.com>
|
||||||
License: GPL-2
|
License: GPL-2
|
||||||
@ -42,34 +43,22 @@ License: GPL-2
|
|||||||
On Debian systems, the complete text of the GNU General Public License
|
On Debian systems, the complete text of the GNU General Public License
|
||||||
version 2 can be found in the /usr/share/common-licenses/GPL-2 file.
|
version 2 can be found in the /usr/share/common-licenses/GPL-2 file.
|
||||||
|
|
||||||
Files: 404main,
|
Files: doc/import-bug-from-debian.1
|
||||||
dgetlp,
|
doc/pbuilder-dist-simple.1
|
||||||
doc/404main.1,
|
doc/pbuilder-dist.1
|
||||||
doc/dgetlp.1,
|
doc/submittodebian.1
|
||||||
doc/import-bug-from-debian.1,
|
import-bug-from-debian
|
||||||
doc/lp-project-upload.1,
|
pbuilder-dist
|
||||||
doc/lp-set-dup.1,
|
pbuilder-dist-simple
|
||||||
doc/lp-shell.1,
|
|
||||||
doc/pbuilder-dist-simple.1,
|
|
||||||
doc/pbuilder-dist.1,
|
|
||||||
doc/reverse-build-depends.1,
|
|
||||||
doc/submittodebian.1,
|
|
||||||
import-bug-from-debian,
|
|
||||||
lp-project-upload,
|
|
||||||
lp-set-dup,
|
|
||||||
pbuilder-dist,
|
|
||||||
pbuilder-dist-simple,
|
|
||||||
reverse-build-depends,
|
|
||||||
submittodebian
|
submittodebian
|
||||||
Copyright: 2007-2010, Canonical Ltd.
|
Copyright: 2007-2010, Canonical Ltd.
|
||||||
2009, James Westby <james.westby@ubuntu.com>
|
2009, James Westby <james.westby@ubuntu.com>
|
||||||
2008, Jamin W. Collins <jcollins@asgardsrealm.net>
|
2008, Jamin W. Collins <jcollins@asgardsrealm.net>
|
||||||
2008, Jordan Mantha <mantha@ubuntu.com>
|
2008, Jordan Mantha <mantha@ubuntu.com>
|
||||||
2008-2009, Patrick Schoenfeld <schoenfeld@in-medias-res.com>
|
|
||||||
2006-2007, Pete Savage <petesavage@ubuntu.com>
|
2006-2007, Pete Savage <petesavage@ubuntu.com>
|
||||||
2009, Ryan Kavanagh <ryanakca@kubuntu.org>
|
2009, Ryan Kavanagh <ryanakca@kubuntu.org>
|
||||||
2007, Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
|
2007, Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
|
||||||
2010, Stefano Rivera <stefanor@ubuntu.com>
|
2010-2011, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
2008, Terence Simpson <tsimpson@ubuntu.com>
|
2008, Terence Simpson <tsimpson@ubuntu.com>
|
||||||
License: GPL-2+
|
License: GPL-2+
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
@ -85,33 +74,32 @@ License: GPL-2+
|
|||||||
On Debian systems, the complete text of the GNU General Public License
|
On Debian systems, the complete text of the GNU General Public License
|
||||||
version 2 can be found in the /usr/share/common-licenses/GPL-2 file.
|
version 2 can be found in the /usr/share/common-licenses/GPL-2 file.
|
||||||
|
|
||||||
Files: ack-sync,
|
Files: doc/lp-bitesize.1
|
||||||
doc/edit-patch.1,
|
doc/check-mir.1
|
||||||
doc/get-branches.1,
|
doc/grab-merge.1
|
||||||
doc/grab-attachments.1,
|
doc/merge-changelog.1
|
||||||
doc/grab-merge.1,
|
doc/pm-helper.1
|
||||||
doc/hugdaylist.1,
|
doc/setup-packaging-environment.1
|
||||||
doc/massfile.1,
|
doc/syncpackage.1
|
||||||
doc/merge-changelog.1,
|
lp-bitesize
|
||||||
doc/setup-packaging-environment.1,
|
check-mir
|
||||||
doc/syncpackage.1,
|
GPL-3
|
||||||
edit-patch,
|
grab-merge
|
||||||
errno,
|
merge-changelog
|
||||||
get-branches,
|
pm-helper
|
||||||
grab-attachments,
|
pyproject.toml
|
||||||
grab-merge,
|
run-linters
|
||||||
hugdaylist,
|
running-autopkgtests
|
||||||
massfile,
|
setup-packaging-environment
|
||||||
merge-changelog,
|
|
||||||
setup-packaging-environment,
|
|
||||||
syncpackage
|
syncpackage
|
||||||
Copyright: 2010, Benjamin Drung <bdrung@ubuntu.com>
|
ubuntutools/running_autopkgtests.py
|
||||||
2007-2010, Canonical Ltd.
|
ubuntutools/utils.py
|
||||||
2010, Dustin Kirkland <kirkland@ubuntu.com>
|
Copyright: 2010-2024, Benjamin Drung <bdrung@ubuntu.com>
|
||||||
|
2007-2024, Canonical Ltd.
|
||||||
2008, Jonathan Patrick Davies <jpds@ubuntu.com>
|
2008, Jonathan Patrick Davies <jpds@ubuntu.com>
|
||||||
2008-2010, Martin Pitt <martin.pitt@canonical.com>
|
2008-2010, Martin Pitt <martin.pitt@canonical.com>
|
||||||
2009, Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
|
2009, Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
|
||||||
2010, Stefano Rivera <stefanor@ubuntu.com>
|
2010-2011, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
License: GPL-3
|
License: GPL-3
|
||||||
This program is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -125,41 +113,37 @@ License: GPL-3
|
|||||||
On Debian systems, the complete text of the GNU General Public License
|
On Debian systems, the complete text of the GNU General Public License
|
||||||
version 3 can be found in the /usr/share/common-licenses/GPL-3 file.
|
version 3 can be found in the /usr/share/common-licenses/GPL-3 file.
|
||||||
|
|
||||||
Files: dch-repeat,
|
Files: dch-repeat
|
||||||
doc/dch-repeat.1,
|
doc/dch-repeat.1
|
||||||
doc/get-build-deps.1,
|
doc/grep-merges.1
|
||||||
doc/grep-merges.1,
|
doc/mk-sbuild.1
|
||||||
doc/lp-list-bugs.1,
|
doc/pull-pkg.1
|
||||||
doc/manage-credentials.1,
|
doc/ubuntu-build.1
|
||||||
doc/mk-sbuild.1,
|
grep-merges
|
||||||
doc/pull-debian-source.1,
|
mk-sbuild
|
||||||
doc/pull-lp-source.1,
|
pull-pkg
|
||||||
doc/pull-revu-source.1,
|
pull-*debs
|
||||||
doc/ubuntu-build.1,
|
pull-*-source
|
||||||
doc/what-patch.1,
|
requirements.txt
|
||||||
get-build-deps,
|
test-requirements.txt
|
||||||
grep-merges,
|
tox.ini
|
||||||
lp-list-bugs,
|
ubuntu-build
|
||||||
manage-credentials,
|
ubuntutools/__init__.py
|
||||||
mk-sbuild,
|
ubuntutools/lp/__init__.py
|
||||||
pull-debian-source,
|
ubuntutools/lp/lpapicache.py
|
||||||
pull-lp-source,
|
ubuntutools/lp/udtexceptions.py
|
||||||
pull-revu-source,
|
ubuntutools/misc.py
|
||||||
ubuntu-build,
|
ubuntutools/pullpkg.py
|
||||||
ubuntutools/lp/libsupport.py,
|
|
||||||
ubuntutools/lp/lpapicache.py,
|
|
||||||
ubuntutools/misc.py,
|
|
||||||
what-patch
|
|
||||||
Copyright: 2007-2010, Canonical Ltd.
|
Copyright: 2007-2010, Canonical Ltd.
|
||||||
2008-2009, Iain Lane <iain@orangesquash.org.uk>
|
2008-2009, Iain Lane <iain@orangesquash.org.uk>
|
||||||
2006, John Dong <jdong@ubuntu.com>
|
2006, John Dong <jdong@ubuntu.com>
|
||||||
2009, Jonathan Davies <jpds@ubuntu.com>
|
2009, Jonathan Davies <jpds@ubuntu.com>
|
||||||
2007-2008, Kees Cook <kees@ubuntu.com>
|
|
||||||
2009, Markus Korn <thekorn@gmx.de>
|
2009, Markus Korn <thekorn@gmx.de>
|
||||||
2009-2010, Michael Bienia <geser@ubuntu.com>
|
2009-2010, Michael Bienia <geser@ubuntu.com>
|
||||||
2009, Nathan Handler <nhandler@ubuntu.com>
|
2009, Nathan Handler <nhandler@ubuntu.com>
|
||||||
2007-2008, Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
|
2007-2008, Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
|
||||||
2010, Stefano Rivera <stefanor@ubuntu.com>
|
2010-2012, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
|
2012, Steve Langasek <steve.langasek@ubuntu.com>
|
||||||
License: GPL-3+
|
License: GPL-3+
|
||||||
This program is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -174,29 +158,38 @@ License: GPL-3+
|
|||||||
On Debian systems, the complete text of the GNU General Public License
|
On Debian systems, the complete text of the GNU General Public License
|
||||||
version 3 can be found in the /usr/share/common-licenses/GPL-3 file.
|
version 3 can be found in the /usr/share/common-licenses/GPL-3 file.
|
||||||
|
|
||||||
Files: doc/pull-debian-debdiff.1,
|
Files: doc/pull-debian-debdiff.1
|
||||||
doc/sponsor-patch.1,
|
doc/requestbackport.1
|
||||||
doc/suspicious-source.1,
|
doc/reverse-depends.1
|
||||||
doc/ubuntu-dev-tools.5,
|
doc/seeded-in-ubuntu.1
|
||||||
doc/update-maintainer.1,
|
doc/sponsor-patch.1
|
||||||
doc/wrap-and-sort.1,
|
doc/ubuntu-dev-tools.5
|
||||||
pull-debian-debdiff,
|
doc/ubuntu-upload-permission.1
|
||||||
sponsor-patch,
|
doc/update-maintainer.1
|
||||||
suspicious-source,
|
enforced-editing-wrapper
|
||||||
ubuntutools/builder.py,
|
pull-debian-debdiff
|
||||||
ubuntutools/config.py,
|
requestbackport
|
||||||
ubuntutools/control.py,
|
reverse-depends
|
||||||
ubuntutools/logger.py,
|
seeded-in-ubuntu
|
||||||
ubuntutools/question.py,
|
sponsor-patch
|
||||||
ubuntutools/sponsor_patch/*,
|
ubuntu-upload-permission
|
||||||
ubuntutools/test/*,
|
ubuntutools/archive.py
|
||||||
ubuntutools/update_maintainer.py,
|
ubuntutools/builder.py
|
||||||
update-maintainer,
|
ubuntutools/config.py
|
||||||
wrap-and-sort
|
ubuntutools/question.py
|
||||||
Copyright: 2010, Benjamin Drung <bdrung@ubuntu.com>
|
ubuntutools/rdepends.py
|
||||||
2010, Evan Broder <evan@ebroder.net>
|
ubuntutools/sponsor_patch/*
|
||||||
2008, Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
|
ubuntutools/test/*
|
||||||
2010, Stefano Rivera <stefanor@ubuntu.com>
|
ubuntutools/update_maintainer.py
|
||||||
|
ubuntutools/version.py
|
||||||
|
update-maintainer
|
||||||
|
.pylintrc
|
||||||
|
Copyright: 2009-2024, Benjamin Drung <bdrung@ubuntu.com>
|
||||||
|
2010, Evan Broder <evan@ebroder.net>
|
||||||
|
2008, Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
|
||||||
|
2010-2011, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
|
2017-2021, Dan Streetman <ddstreet@canonical.com>
|
||||||
|
2024, Canonical Ltd.
|
||||||
License: ISC
|
License: ISC
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
9
debian/gbp.conf
vendored
Normal file
9
debian/gbp.conf
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
debian-tag = %(version)s
|
||||||
|
debian-branch = master
|
||||||
|
sign-tags = True
|
||||||
|
|
||||||
|
[dch]
|
||||||
|
meta = True
|
||||||
|
auto = True
|
||||||
|
full = True
|
2
debian/links
vendored
2
debian/links
vendored
@ -1,4 +1,2 @@
|
|||||||
/usr/bin/edit-patch /usr/bin/add-patch
|
|
||||||
/usr/bin/pbuilder-dist /usr/bin/cowbuilder-dist
|
/usr/bin/pbuilder-dist /usr/bin/cowbuilder-dist
|
||||||
/usr/share/man/man1/edit-patch.1.gz /usr/share/man/man1/add-patch.1.gz
|
|
||||||
/usr/share/man/man1/pbuilder-dist.1.gz /usr/share/man/man1/cowbuilder-dist.1.gz
|
/usr/share/man/man1/pbuilder-dist.1.gz /usr/share/man/man1/cowbuilder-dist.1.gz
|
||||||
|
1
debian/python3-ubuntutools.install
vendored
Normal file
1
debian/python3-ubuntutools.install
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/usr/lib/python3.*
|
16
debian/rules
vendored
16
debian/rules
vendored
@ -1,12 +1,14 @@
|
|||||||
#!/usr/bin/make -f
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
%:
|
override_dh_auto_clean:
|
||||||
dh $@ --with python2
|
dh_auto_clean
|
||||||
|
rm -f .coverage
|
||||||
|
rm -rf .tox
|
||||||
|
|
||||||
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
|
|
||||||
override_dh_auto_test:
|
override_dh_auto_test:
|
||||||
set -e; \
|
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
|
||||||
for python in $(shell pyversions -r); do \
|
python3 -m pytest -v ubuntutools
|
||||||
$$python setup.py test; \
|
|
||||||
done
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@ --with python3 --buildsystem=pybuild
|
||||||
|
3
debian/source/lintian-overrides
vendored
Normal file
3
debian/source/lintian-overrides
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# pyc files are machine-generated; they're expected to have long lines and have unstated copyright
|
||||||
|
source: file-without-copyright-information *.pyc [debian/copyright]
|
||||||
|
source: very-long-line-length-in-source-file * > 512 [*.pyc:*]
|
7
debian/tests/control
vendored
Normal file
7
debian/tests/control
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Test-Command: python3 -m pytest -v ubuntutools
|
||||||
|
Depends:
|
||||||
|
dh-make,
|
||||||
|
python3-pytest,
|
||||||
|
python3-setuptools,
|
||||||
|
@,
|
||||||
|
Restrictions: allow-stderr
|
2
debian/ubuntu-dev-tools.install
vendored
Normal file
2
debian/ubuntu-dev-tools.install
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/usr/bin
|
||||||
|
/usr/share
|
324
dgetlp
324
dgetlp
@ -1,324 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
# -*- coding: UTF-8 -*-
|
|
||||||
# Copyright (C) 2008 Terence Simpson <tsimpson@ubuntu.com>
|
|
||||||
# License:
|
|
||||||
# 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 2 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, write to the Free Software Foundation, Inc.,
|
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# This script simulates «dget»'s behaviour for files hosted at
|
|
||||||
# launchpadlibrarian.net.
|
|
||||||
#
|
|
||||||
# Detailed description:
|
|
||||||
# This script attempts to download the source package in the same
|
|
||||||
# way as dget does, but from launchpadlibrarian.net, which doesn't
|
|
||||||
# store all the files in the same directory. It (the script) assumes
|
|
||||||
# that the files are stored in sequential directories on Launchpad
|
|
||||||
# Librarian and attempts to download and then unpack them.
|
|
||||||
# This is a Python rewrite of the original bash script
|
|
||||||
|
|
||||||
import sys, os
|
|
||||||
from optparse import OptionParser
|
|
||||||
import urllib2
|
|
||||||
import hashlib
|
|
||||||
import subprocess
|
|
||||||
import GnuPGInterface
|
|
||||||
from cStringIO import StringIO
|
|
||||||
from email.feedparser import FeedParser
|
|
||||||
|
|
||||||
USAGE = u"""Usage: %prog [-d|(-v|-q)] <Launchpad URL>
|
|
||||||
|
|
||||||
This scripts simulates «dget»'s behaviour for files hosted at
|
|
||||||
launchpadlibrarian.net.
|
|
||||||
|
|
||||||
If you specify the -d option then it won't do anything, except download the
|
|
||||||
.dsc file, but just print the commands it would run otherwise.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
%prog http://launchpadlibrarian.net/10348157/coreutils_5.97-5.4ubuntu1.dsc
|
|
||||||
"""
|
|
||||||
|
|
||||||
BASE_URL = "http://launchpadlibrarian.net/"
|
|
||||||
|
|
||||||
Debug = Verbose = Quiet = False
|
|
||||||
|
|
||||||
def unsign(data):
|
|
||||||
if data.splitlines()[0] != "-----BEGIN PGP SIGNED MESSAGE-----":
|
|
||||||
return data
|
|
||||||
oldstdout = sys.stdout
|
|
||||||
oldstderr = sys.stderr
|
|
||||||
sys.stdout = sys.__stdout__
|
|
||||||
sys.stderr = sys.__stderr__
|
|
||||||
gpg = GnuPGInterface.GnuPG()
|
|
||||||
proc = gpg.run(["--decrypt"], create_fhs=['stdin', 'stdout'])
|
|
||||||
proc.handles['stdin'].write(data)
|
|
||||||
proc.handles['stdin'].close()
|
|
||||||
plain = proc.handles['stdout'].read()
|
|
||||||
proc.handles['stdout'].close()
|
|
||||||
try:
|
|
||||||
proc.wait()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
sys.stdout = oldstdout
|
|
||||||
sys.stderr = oldstderr
|
|
||||||
return plain
|
|
||||||
|
|
||||||
def get_entries(data):
|
|
||||||
parser = FeedParser()
|
|
||||||
parser.feed(data)
|
|
||||||
return parser.close()
|
|
||||||
|
|
||||||
class DscParse(object):
|
|
||||||
"""Attempt to get the file list from the .dsc file"""
|
|
||||||
def __init__(self, data):
|
|
||||||
"""
|
|
||||||
__init__(data)
|
|
||||||
Given the contents of a .dsc, parse it and extract it's content
|
|
||||||
"""
|
|
||||||
self.entries = get_entries(unsign(data))
|
|
||||||
self.files = [x.strip().split() for x in
|
|
||||||
self.entries['Files'].splitlines()]
|
|
||||||
|
|
||||||
def verify_all(self):
|
|
||||||
"""
|
|
||||||
verify_all()
|
|
||||||
Verifies all the files, first checking the size, then the md5 sum.
|
|
||||||
Currently not used in this utility.
|
|
||||||
"""
|
|
||||||
assert self.files, "I have no files"
|
|
||||||
ret = []
|
|
||||||
for f in self.files:
|
|
||||||
ret.append(self.verify(f))
|
|
||||||
return ret
|
|
||||||
|
|
||||||
def verify(self, name):
|
|
||||||
"""
|
|
||||||
verify(name)
|
|
||||||
Verify the file 'name', first checking the size, then the md5 sum.
|
|
||||||
"""
|
|
||||||
assert self.files, "I have no files"
|
|
||||||
f = None
|
|
||||||
if isinstance(name, list):
|
|
||||||
f = name
|
|
||||||
else:
|
|
||||||
for i in self.files:
|
|
||||||
if i[2] == name:
|
|
||||||
f = i
|
|
||||||
if not f:
|
|
||||||
raise ValueError, "%s is not in the .dsc" % name
|
|
||||||
(md5sum, size, name) = tuple(f)
|
|
||||||
stat = os.stat(name)
|
|
||||||
if str(stat.st_size) != size:
|
|
||||||
return (False, name, "Expected a size of %s, got %s" % \
|
|
||||||
(size, stat.st_size))
|
|
||||||
return self.getsum(name, md5sum)
|
|
||||||
|
|
||||||
def getsum(self, name, md5sum=None):
|
|
||||||
"""
|
|
||||||
getsum(name[, md5sum])
|
|
||||||
Read the file 'name' (in 1MB chunks) and generate an md5 sum,
|
|
||||||
then compares that to the md5 sum in the .dsc file.
|
|
||||||
"""
|
|
||||||
chunk_size = 1073741824
|
|
||||||
fd = open(name, 'rb')
|
|
||||||
res = hashlib.md5()
|
|
||||||
if not md5sum:
|
|
||||||
assert self.files, "I have no files"
|
|
||||||
md5sum = [x[0] for x in self.files if x[2] == name][0]
|
|
||||||
data = fd.read(chunk_size)
|
|
||||||
while data:
|
|
||||||
res.update(data)
|
|
||||||
data = fd.read(chunk_size)
|
|
||||||
if res.hexdigest() != md5sum:
|
|
||||||
return (False, name, "Expected md5sum of %r, got %r" % \
|
|
||||||
(md5sum, res.hexdigest()))
|
|
||||||
return (True, name, None)
|
|
||||||
|
|
||||||
def is_native(self):
|
|
||||||
"""
|
|
||||||
is_native()
|
|
||||||
Returns True if this .dsc describes a native debian package;
|
|
||||||
else false.
|
|
||||||
"""
|
|
||||||
return len(self.files) == 1
|
|
||||||
|
|
||||||
# Access to fields in the .dsc via a dict-like interface
|
|
||||||
def __getitem__(self, item):
|
|
||||||
"""
|
|
||||||
x.__getitem(item) -> x[item]
|
|
||||||
"""
|
|
||||||
return self.entries.__getitem__(item)
|
|
||||||
|
|
||||||
def __contains__(self, item):
|
|
||||||
"""
|
|
||||||
x.__contains__(item) -> item in x
|
|
||||||
"""
|
|
||||||
return self.entries.__contains__(item)
|
|
||||||
|
|
||||||
def __getattr__(self, attr):
|
|
||||||
"""
|
|
||||||
x.__getattr__(attr) -> item.attr
|
|
||||||
"""
|
|
||||||
return getattr(self.entries, attr)
|
|
||||||
|
|
||||||
def error(ret, msg, *args):
|
|
||||||
"""Prints an error message, unless quiet is set, and exits with ret"""
|
|
||||||
if not Quiet:
|
|
||||||
print >> sys.stderr, msg % args
|
|
||||||
sys.exit(ret)
|
|
||||||
|
|
||||||
def debug(msg, *args):
|
|
||||||
"""If debugging is enabled, print a message"""
|
|
||||||
if Debug:
|
|
||||||
print >> sys.stderr, msg % args
|
|
||||||
|
|
||||||
def info(msg, *args):
|
|
||||||
"""If verbose is enabled, print a message"""
|
|
||||||
if Verbose:
|
|
||||||
print msg % tuple(args)
|
|
||||||
|
|
||||||
def status(msg, *args):
|
|
||||||
"""Prints a message, unless quiet is enabled"""
|
|
||||||
if not Quiet:
|
|
||||||
print msg % tuple(args)
|
|
||||||
|
|
||||||
def download(dscinfo, number, filename, verify=True):
|
|
||||||
"""download filename"""
|
|
||||||
ftype = filename.endswith(".diff.gz") and "diff.gz" or \
|
|
||||||
filename.endswith(".orig.tar.gz") and "orig.tar.gz" or \
|
|
||||||
filename.endswith(".dsc") and "dsc" or "tar.gz"
|
|
||||||
if verify and os.path.exists(filename):
|
|
||||||
info('Verifying "%s"', filename)
|
|
||||||
res = dscinfo.verify(filename)
|
|
||||||
if not res[0]:
|
|
||||||
error(104, "Verification of %s failed: %s", filename, res[2])
|
|
||||||
status("Getting %s", filename)
|
|
||||||
debug("%s%s/%s", BASE_URL, number, filename)
|
|
||||||
try:
|
|
||||||
fd = urllib2.urlopen("%s%s/%s" % (BASE_URL, number, filename))
|
|
||||||
outfd = open(filename, 'wb')
|
|
||||||
outfd.write(fd.read())
|
|
||||||
fd.close()
|
|
||||||
outfd.close()
|
|
||||||
except urllib2.HTTPError, err:
|
|
||||||
status("Failed to fetch «%s» file, aborting.", ftype)
|
|
||||||
error(106, "Error: (%d %s)", err.code, err.msg)
|
|
||||||
except urllib2.URLError, err:
|
|
||||||
status("Failed to fetch «%s» file, aborting.", ftype)
|
|
||||||
error(105, "Error: %s", err)
|
|
||||||
except IOError, err:
|
|
||||||
status('Could not create "%s"', filename)
|
|
||||||
error(107, "Error: %s", err)
|
|
||||||
|
|
||||||
def unpack(filename):
|
|
||||||
out = open('/dev/null', 'w')
|
|
||||||
err = open('/dev/null', 'w')
|
|
||||||
cmd = ["dpkg-source", "-x", filename]
|
|
||||||
ret = subprocess.call(cmd, stdout=out, stderr=err)
|
|
||||||
out.close()
|
|
||||||
err.close()
|
|
||||||
if ret:
|
|
||||||
status("Failed to unpack source, aborting.")
|
|
||||||
sys.exit(108)
|
|
||||||
|
|
||||||
def get_host(url):
|
|
||||||
return urllib2.splithost(urllib2.splittype(url)[1])[0]
|
|
||||||
|
|
||||||
def main():
|
|
||||||
global Debug, Verbose, Quiet
|
|
||||||
parser = OptionParser(usage=USAGE)
|
|
||||||
parser.add_option("-d", "--debug", action="store_true", dest="debug",
|
|
||||||
default=False, help="Enable debugging")
|
|
||||||
parser.add_option("-v", "--verbose", action="store_true", dest="verbose",
|
|
||||||
default=False, help="Enable verbose output")
|
|
||||||
parser.add_option("-q", "--quiet", action="store_true", dest="quiet",
|
|
||||||
default=False, help="Never print any output")
|
|
||||||
|
|
||||||
(options, args) = parser.parse_args()
|
|
||||||
if len(args) != 1:
|
|
||||||
parser.error("Missing URL")
|
|
||||||
Debug = options.debug
|
|
||||||
Verbose = options.verbose
|
|
||||||
Quiet = options.quiet
|
|
||||||
if Verbose and Quiet:
|
|
||||||
error(4, "Specifying both --verbose and --quiet does not make sense")
|
|
||||||
if Quiet:
|
|
||||||
sys.stderr = StringIO()
|
|
||||||
sys.stdout = StringIO()
|
|
||||||
|
|
||||||
url = args[0]
|
|
||||||
|
|
||||||
if url.startswith("https://"):
|
|
||||||
url = url.replace("https://", "http://", 1)
|
|
||||||
|
|
||||||
if not url.startswith("http://"):
|
|
||||||
url = "http://" + url
|
|
||||||
|
|
||||||
if get_host(url).startswith("www."):
|
|
||||||
url = url.replace("www.", "", 1)
|
|
||||||
|
|
||||||
if get_host(url) != get_host(BASE_URL):
|
|
||||||
error(1, "Error: This utility only works for files on %s.\n"
|
|
||||||
"Maybe you want to try dget?", BASE_URL)
|
|
||||||
|
|
||||||
(number, filename) = url.split('/')[3:]
|
|
||||||
|
|
||||||
if not filename.endswith('.dsc'):
|
|
||||||
error(2, "You have to provide the URL for the .dsc file.")
|
|
||||||
|
|
||||||
try:
|
|
||||||
number = int(number)
|
|
||||||
except:
|
|
||||||
error(3, "Bad URL format")
|
|
||||||
|
|
||||||
if os.path.exists(filename):
|
|
||||||
os.remove(filename)
|
|
||||||
|
|
||||||
download(None, number, filename, False)
|
|
||||||
try:
|
|
||||||
fd = open(filename)
|
|
||||||
dsc_data = fd.read()
|
|
||||||
fd.close()
|
|
||||||
except Exception:
|
|
||||||
status("Error: Please report this bug, providing the URL and attach"
|
|
||||||
" the following backtrace")
|
|
||||||
raise
|
|
||||||
|
|
||||||
dscinfo = DscParse(dsc_data)
|
|
||||||
|
|
||||||
# launchpadlibrarian.net seems to store in this order:
|
|
||||||
# For native packages:
|
|
||||||
# <number>/.changes
|
|
||||||
# <number>+1/.tar.gz
|
|
||||||
# <number>+2/.dsc
|
|
||||||
# For non-native packages:
|
|
||||||
# <number>/.changes
|
|
||||||
# <number>+1/.orig.tar.gz
|
|
||||||
# <number>+2/.diff.gz
|
|
||||||
# <number>+3/.dsc
|
|
||||||
##
|
|
||||||
# *Assuming* this does not change, we can figure out where the files are on
|
|
||||||
# launchpadlibrarian.net relative to the .dsc file we're given.
|
|
||||||
|
|
||||||
# Only one file listed in the .dsc means it's native package
|
|
||||||
if len(dscinfo.files) == 1:
|
|
||||||
download(dscinfo, number-1, dscinfo.files[0][-1]) # .tar.gz
|
|
||||||
else:
|
|
||||||
download(dscinfo, number-1, dscinfo.files[1][-1]) # .diff.gz
|
|
||||||
download(dscinfo, number-2, dscinfo.files[0][-1]) # .orig.tar.gz
|
|
||||||
|
|
||||||
status("Unpacking")
|
|
||||||
unpack(filename)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
@ -1,29 +0,0 @@
|
|||||||
.TH 404main 1 "February 17, 2008" "ubuntu-dev-tools"
|
|
||||||
|
|
||||||
.SH NAME
|
|
||||||
404main \- check if all build dependencies of a package are in main
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
\fB404main\fP <\fIpackage name\fP> [<\fIdistribution\fP>]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fB404main\fP is a script that can be used to check if a package and
|
|
||||||
all its build dependencies are in Ubuntu's main component or not.
|
|
||||||
|
|
||||||
.SH CAVEATS
|
|
||||||
\fB404main\fP will take the dependencies and build dependencies of the
|
|
||||||
packages from the distribution you have first in your
|
|
||||||
/etc/apt/sources.list file.
|
|
||||||
.PP
|
|
||||||
Also, because of this the <\fIdistribution\fP> option is NOT trustworthy; if
|
|
||||||
the dependencies changed YOU WILL GET INCORRECT RESULTS.
|
|
||||||
|
|
||||||
.SH SEE ALSO
|
|
||||||
.BR apt-cache (8)
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
\fB404main\fP was written by Pete Savage <petesavage@ubuntu.com> and
|
|
||||||
this manpage by Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>.
|
|
||||||
.PP
|
|
||||||
Both are released under the GNU General Public License, version 2 or
|
|
||||||
later.
|
|
@ -10,10 +10,11 @@ backportpackage \- helper to test package backports
|
|||||||
.PP
|
.PP
|
||||||
.B backportpackage \-h
|
.B backportpackage \-h
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fBbackportpackage\fR fetches a package from one Ubuntu release or
|
\fBbackportpackage\fR fetches a package from one distribution release
|
||||||
from a specified .dsc path or URL and creates a no-change backport of
|
or from a specified .dsc path or URL and creates a no-change backport
|
||||||
that package to a previous release, optionally doing a test build of
|
of that package to one or more Ubuntu releases release, optionally
|
||||||
the package and/or uploading the resulting backport for testing.
|
doing a test build of the package and/or uploading the resulting
|
||||||
|
backport for testing.
|
||||||
.PP
|
.PP
|
||||||
Unless a working directory is specified, the backported package is
|
Unless a working directory is specified, the backported package is
|
||||||
fetched and built in a temporary directory in \fB/tmp\fR, which is
|
fetched and built in a temporary directory in \fB/tmp\fR, which is
|
||||||
@ -29,30 +30,33 @@ is unspecified, then \fBbackportpackage\fR defaults to the release on
|
|||||||
which it is currently running.
|
which it is currently running.
|
||||||
.TP
|
.TP
|
||||||
.B \-s \fISOURCE\fR, \fB\-\-source\fR=\fISOURCE\fR
|
.B \-s \fISOURCE\fR, \fB\-\-source\fR=\fISOURCE\fR
|
||||||
Backport the package from the specified Ubuntu release. If neither
|
Backport the package from the specified release, which can be any
|
||||||
this option nor \fB\-\-version\fR are specified, then
|
release of your distribution or any of your distribution's parent
|
||||||
\fBbackportpackage\fR defaults to the current Ubuntu development
|
distributions. If neither this option nor \fB\-\-version\fR are
|
||||||
release.
|
specified, then \fBbackportpackage\fR defaults to the current
|
||||||
|
development release for your distribution.
|
||||||
.TP
|
.TP
|
||||||
.B \-S \fISUFFIX\fR, \fB\-\-suffix\fR=\fISUFFIX\fR
|
.B \-S \fISUFFIX\fR, \fB\-\-suffix\fR=\fISUFFIX\fR
|
||||||
Add the specified suffix to the version number when
|
Add the specified suffix to the version number when
|
||||||
backporting. \fBbackportpackage\fR will always append
|
backporting. \fBbackportpackage\fR will always append
|
||||||
~\fIDESTINATION\fR1 to the original version number, and if
|
~ubuntu\fIDESTINATION\fR.1 to the original version number, and if
|
||||||
\fISUFFIX\fR is specified, it is appended to that, to get version
|
\fISUFFIX\fR is specified, it is appended to that, to get version
|
||||||
numbers of the form
|
numbers of the form
|
||||||
\fIORIGINAL_VERSION\fR~\fIDESTINATION\fR1\fISUFFIX\fR. If the
|
\fIORIGINAL_VERSION\fR~ubuntu\fIDESTINATION\fR.1\fISUFFIX\fR. If the
|
||||||
backported package is being uploaded to a PPA, then \fISUFFIX\fR
|
backported package is being uploaded to a PPA, then \fISUFFIX\fR
|
||||||
defaults to \fB~ppa1\fR, otherwise the default is blank.
|
defaults to \fB~ppa1\fR, otherwise the default is blank.
|
||||||
.TP
|
.TP
|
||||||
.B \-b\fR, \fB\-\-build
|
.B \-b\fR, \fB\-\-build
|
||||||
Build the package with the specified builder before uploading. Note
|
Build the package with the specified builder before uploading. Note
|
||||||
for \fBpbuilder\fR(8) users: This assumes the common configuration,
|
for \fBcowbuilder\fR(8) and \fBpbuilder\fR(8) users:
|
||||||
|
This assumes the common configuration,
|
||||||
where the \fBARCH\fR and \fBDIST\fR environment is read by \fBpbuilderrc\fR(5)
|
where the \fBARCH\fR and \fBDIST\fR environment is read by \fBpbuilderrc\fR(5)
|
||||||
to select the correct base image.
|
to select the correct base image.
|
||||||
.TP
|
.TP
|
||||||
.B \-B \fIBUILDER\fR, \fB\-\-builder\fR=\fIBUILDER
|
.B \-B \fIBUILDER\fR, \fB\-\-builder\fR=\fIBUILDER
|
||||||
Use the specified builder to build the package. Supported are
|
Use the specified builder to build the package. Supported are
|
||||||
\fBpbuilder\fR(8), \fBpbuilder-dist\fR(1), and \fBsbuild\fR(1).
|
\fBcowbuilder\fR(8), \fBcowbuilder-dist\fR(1), \fBpbuilder\fR(8),
|
||||||
|
\fBpbuilder-dist\fR(1), and \fBsbuild\fR(1).
|
||||||
The default is \fBpbuilder\fR(8).
|
The default is \fBpbuilder\fR(8).
|
||||||
.TP
|
.TP
|
||||||
.B \-U\fR, \fB\-\-update
|
.B \-U\fR, \fB\-\-update
|
||||||
@ -61,6 +65,12 @@ Update the build environment before attempting to build.
|
|||||||
.B \-u \fIUPLOAD\fR, \fB\-\-upload\fR=\fIUPLOAD\fR
|
.B \-u \fIUPLOAD\fR, \fB\-\-upload\fR=\fIUPLOAD\fR
|
||||||
Upload to \fIUPLOAD\fR with \fBdput\fR(1) (after confirmation).
|
Upload to \fIUPLOAD\fR with \fBdput\fR(1) (after confirmation).
|
||||||
.TP
|
.TP
|
||||||
|
.B \-k \fIKEYID\fR, \fB\-\-key\fR=\fIKEYID\fR
|
||||||
|
Specify the key ID to be used for signing.
|
||||||
|
.TP
|
||||||
|
.B \-\-dont\-sign
|
||||||
|
Do not sign the upload.
|
||||||
|
.TP
|
||||||
.B \-y\fR, \fB\-\-yes
|
.B \-y\fR, \fB\-\-yes
|
||||||
Do not prompt before uploading to a PPA. For everyone's safety, this
|
Do not prompt before uploading to a PPA. For everyone's safety, this
|
||||||
option is ignored if \fIUPLOAD\fR is \fBubuntu\fR.
|
option is ignored if \fIUPLOAD\fR is \fBubuntu\fR.
|
||||||
@ -70,9 +80,10 @@ If the \fB\-\-source\fR option is specified, then
|
|||||||
\fBbackportpackage\fR verifies that the current version of \fIsource
|
\fBbackportpackage\fR verifies that the current version of \fIsource
|
||||||
package\fR in \fISOURCE\fR is the same as \fIVERSION\fR. Otherwise,
|
package\fR in \fISOURCE\fR is the same as \fIVERSION\fR. Otherwise,
|
||||||
\fBbackportpackage\fR finds version \fIVERSION\fR of \fIsource
|
\fBbackportpackage\fR finds version \fIVERSION\fR of \fIsource
|
||||||
package\fR, regardless of the release in which it was published (or if
|
package\fR in your distribution's publishing history, regardless of
|
||||||
that version is still current). This option is ignored if a .dsc URL
|
the release in which it was published (or if that version is still
|
||||||
or path is passed in instead of a source package name.
|
current). This option is ignored if a .dsc URL or path is passed in
|
||||||
|
instead of a source package name.
|
||||||
.TP
|
.TP
|
||||||
.B \-w \fIWORKDIR\fR, \fB\-\-workdir\fR=\fIWORKDIR\fR
|
.B \-w \fIWORKDIR\fR, \fB\-\-workdir\fR=\fIWORKDIR\fR
|
||||||
If \fIWORKDIR\fR is specified, then all files are downloaded,
|
If \fIWORKDIR\fR is specified, then all files are downloaded,
|
||||||
@ -80,12 +91,23 @@ unpacked, built into, and otherwise manipulated in
|
|||||||
\fIWORKDIR\fR. Otherwise, a temporary directory is created, which is
|
\fIWORKDIR\fR. Otherwise, a temporary directory is created, which is
|
||||||
deleted before \fIbackportpackage\fR exits.
|
deleted before \fIbackportpackage\fR exits.
|
||||||
.TP
|
.TP
|
||||||
.B \-m \fIUBUNTU_MIRROR\fR, \fB\-\-mirror\fR=\fIUBUNTU_MIRROR\fR
|
.B \-r\fR, \fB\-\-release\-pocket
|
||||||
|
Target the upload at the release pocket, rather than the
|
||||||
|
\fB\-backports\fR pocket.
|
||||||
|
This is required for Launchpad PPAs, which are pocket-less (and the
|
||||||
|
default, when the upload target is a PPA).
|
||||||
|
.TP
|
||||||
|
.B \-m \fIMIRROR\fR, \fB\-\-mirror\fR=\fIMIRROR\fR
|
||||||
Use the specified mirror.
|
Use the specified mirror.
|
||||||
Should be in the form \fBhttp://archive.ubuntu.com/ubuntu\fR.
|
Should be in the form \fBhttp://archive.ubuntu.com/ubuntu\fR.
|
||||||
If the package isn't found on this mirror, \fBbackportpackage\fR
|
If the package isn't found on this mirror, \fBbackportpackage\fR
|
||||||
will use Launchpad.
|
will use Launchpad.
|
||||||
.TP
|
.TP
|
||||||
|
.B \-c \fIBUG\fR, \fB\-\-close\fR=\fIBUG\fR
|
||||||
|
Include a Launchpad closer for the specified bug in the auto-generated
|
||||||
|
changelog. In the future, this may actually close the bug, but
|
||||||
|
currently does not.
|
||||||
|
.TP
|
||||||
.B \-l \fIINSTANCE\fR, \fB\-\-lpinstance\fR=\fIINSTANCE\fR
|
.B \-l \fIINSTANCE\fR, \fB\-\-lpinstance\fR=\fIINSTANCE\fR
|
||||||
Use the specified instance of Launchpad (e.g. "staging"), instead of
|
Use the specified instance of Launchpad (e.g. "staging"), instead of
|
||||||
the default of "production".
|
the default of "production".
|
||||||
@ -94,6 +116,13 @@ the default of "production".
|
|||||||
Do not read any configuration files, or configuration from environment
|
Do not read any configuration files, or configuration from environment
|
||||||
variables.
|
variables.
|
||||||
.SH ENVIRONMENT
|
.SH ENVIRONMENT
|
||||||
|
.TP
|
||||||
|
.BR DEBFULLNAME ", " DEBEMAIL ", " UBUMAIL
|
||||||
|
Used to determine the uploader (if not supplied as options).
|
||||||
|
See
|
||||||
|
.BR ubuntu\-dev\-tools (5)
|
||||||
|
for details.
|
||||||
|
.P
|
||||||
All of the \fBCONFIGURATION VARIABLES\fR below are also supported as
|
All of the \fBCONFIGURATION VARIABLES\fR below are also supported as
|
||||||
environment variables.
|
environment variables.
|
||||||
Variables in the environment take precedence to those in configuration
|
Variables in the environment take precedence to those in configuration
|
||||||
@ -111,11 +140,19 @@ The default value for \fB\-\-builder\fR.
|
|||||||
.BR BACKPORTPACKAGE_UPDATE_BUILDER ", " UBUNTUTOOLS_UPDATE_BUILDER
|
.BR BACKPORTPACKAGE_UPDATE_BUILDER ", " UBUNTUTOOLS_UPDATE_BUILDER
|
||||||
The default value for \fB--update\fR.
|
The default value for \fB--update\fR.
|
||||||
.TP
|
.TP
|
||||||
|
.B BACKPORTPACKAGE_UPLOAD
|
||||||
|
The default value for \fB--upload\fR.
|
||||||
|
.TP
|
||||||
.BR BACKPORTPACKAGE_WORKDIR ", " UBUNTUTOOLS_WORKDIR
|
.BR BACKPORTPACKAGE_WORKDIR ", " UBUNTUTOOLS_WORKDIR
|
||||||
The default value for \fB--workdir\fR.
|
The default value for \fB--workdir\fR.
|
||||||
.TP
|
.TP
|
||||||
.BR BACKPORTPACKAGE_UBUNTU_MIRROR ", " UBUNTUTOOLS_UBUNTU_MIRROR
|
.BR BACKPORTPACKAGE_UBUNTU_MIRROR ", " UBUNTUTOOLS_UBUNTU_MIRROR
|
||||||
The default value for \fB\-\-mirror\fR.
|
The default value for \fB\-\-mirror\fR if the specified \fISOURCE\fR
|
||||||
|
release is an Ubuntu release.
|
||||||
|
.TP
|
||||||
|
.BR BACKPORTPACKAGE_DEBIAN_MIRROR ", " UBUNTUTOOLS_DEBIAN_MIRROR
|
||||||
|
The default value for \fB\-\-mirror\fR if the specified \fISOURCE\fR
|
||||||
|
release is a Debian release.
|
||||||
.TP
|
.TP
|
||||||
.BR BACKPORTPACKAGE_LPINSTANCE ", " UBUNTUTOOLS_LPINSTANCE
|
.BR BACKPORTPACKAGE_LPINSTANCE ", " UBUNTUTOOLS_LPINSTANCE
|
||||||
The default value for \fB--lpinstance\fR.
|
The default value for \fB--lpinstance\fR.
|
||||||
|
38
doc/dgetlp.1
38
doc/dgetlp.1
@ -1,38 +0,0 @@
|
|||||||
.TH DGETLP "1" "27 August 2008" "ubuntu-dev-tools"
|
|
||||||
|
|
||||||
.SH NAME
|
|
||||||
dgetlp \- simulate ``dget'' behaviour for files hosted at librarian.launchpad.net
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B dgetlp [\fB\-d\fP|\fB(\fB\-v\fP|\fB\-q\fP)\fP] <\fBLaunchpad DSC URL\fP>
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBdgetlp\fR simulates dget behaviour by downloading and extracting the <\fBLaunchpad DSC URL\fP> from the Launchpad Librarian.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
Listed below are the command line options for dgetlp:
|
|
||||||
.TP
|
|
||||||
.B \-h, \-\-help
|
|
||||||
show this help message and exit.
|
|
||||||
.TP
|
|
||||||
.B \-d, \-\-debug
|
|
||||||
Enable debugging.
|
|
||||||
.TP
|
|
||||||
.B \-v, \-\-verbose
|
|
||||||
Enable verbose output.
|
|
||||||
.TP
|
|
||||||
.B \-q, \-\-quiet
|
|
||||||
Never print any output.
|
|
||||||
.TP
|
|
||||||
.B <Launchpad DSC URL>
|
|
||||||
This is the source package that you would like to be downloaded from the Launchpad Librarian.
|
|
||||||
|
|
||||||
.SH EXAMPLE
|
|
||||||
.B dgetlp http://launchpadlibrarian.net/10348157/coreutils_5.97-5.4ubuntu1.dsc
|
|
||||||
|
|
||||||
.SH AUTHOR
|
|
||||||
\fBdgetlp\fR was written by Terence Simpson <tsimpson@ubuntu.com> and
|
|
||||||
modified by Siegfried-A. Gevatter <rainct@ubuntu.com>. The python rewrite
|
|
||||||
was written by Terence Simpson <tsimpson@ubuntu.com> based off the original.
|
|
||||||
This man page was written by Ryan Kavanagh <ryanakca@kubuntu.org>.
|
|
||||||
Both are released under the GNU General Public License, version 2 or later.
|
|
@ -1,28 +0,0 @@
|
|||||||
.TH EDIT-PATCH "1" "June 2010" "ubuntu-dev-tools"
|
|
||||||
.SH NAME
|
|
||||||
\fBedit-patch\fR, \fBadd-patch\fR \- tool for preparing patches for Debian source packages
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
\fBedit-patch\fR <path to patch>
|
|
||||||
|
|
||||||
\fBadd-patch\fR <path to patch>
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBedit-patch\fR is a wrapper script around the quilt, cdbs, and dpatch patch systems. It simplifies the process of preparing and editing patches to Debian source packages and allows the user to not have to be concerned with which patch system is in use. Run from inside the root directory of the source package, \fBedit-patch\fR can be used to edit existing patches located in /debian/patches.
|
|
||||||
|
|
||||||
It can also be used to incorporate new patches. If pointed a patch not already present, it will copy the patch to /debian/patches in the correct format for the patch system in use. Next, the patch is applied and a subshell is opened in order to edit the patch. Typing "exit" or hitting Ctrl-d will close the subshell and launch an an editor to record the debian/changelong entry.
|
|
||||||
|
|
||||||
\fBedit-patch\fR is integrated with the bzr and git version control systems. The patch will be automatically added to the tree, and the debian/changelong entry will be used as the commit message.
|
|
||||||
|
|
||||||
If no patch system is present, the patch is applied inline, and a copy is stored in debian/patches-applied.
|
|
||||||
|
|
||||||
\fBadd-patch\fR is the non-interactive version of \fBedit-patch\fR.
|
|
||||||
The patch will be incorporated but no editor or subshell will be
|
|
||||||
spawned.
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
\fBedit-patch\fR was written by Daniel Holbach <daniel.holbach@canonical.com>, Michael Vogt <michael.vogt@canonical.com>, and David Futcher <bobbo@ubuntu.com>.
|
|
||||||
|
|
||||||
This manual page was written by Andrew Starr-Bochicchio <a.starr.b@gmail.com>.
|
|
||||||
.PP
|
|
||||||
Both are released under the terms of the GNU General Public License, version 3.
|
|
22
doc/errno.1
22
doc/errno.1
@ -1,22 +0,0 @@
|
|||||||
.TH errno 1 "10 Aug 2010" ubuntu-dev-tools "ubuntu-dev-tools"
|
|
||||||
.SH NAME
|
|
||||||
errno \- search POSIX error codes by error number, error name, or error description
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBerrno\fP is a simple script that interprets a POSIX error code, or finds error codes related to a search string.
|
|
||||||
|
|
||||||
.SH EXAMPLE
|
|
||||||
$ errno 36
|
|
||||||
ENAMETOOLONG 36 /* File name too long */
|
|
||||||
|
|
||||||
$ errno perm
|
|
||||||
EPERM 1 /* Operation not permitted */
|
|
||||||
EACCES 13 /* Permission denied */
|
|
||||||
|
|
||||||
.SH SEE ALSO
|
|
||||||
\fBerrno\fP(2)\fP, \fBerrno\fP(3), \fI/usr/include/asm/errno.h\fP
|
|
||||||
|
|
||||||
.SH AUTHOR
|
|
||||||
This manpage and the utility was written by Dustin Kirkland <kirkland@ubuntu.com> for Ubuntu systems (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 published by the Free Software Foundation.
|
|
||||||
|
|
||||||
On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL.
|
|
@ -1,47 +0,0 @@
|
|||||||
.TH get\-branches "1" "11 August 2008" "ubuntu-dev-tools"
|
|
||||||
.SH NAME
|
|
||||||
get\-branches - downloads all branches related to a Launchpad team or person
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B get\-branches
|
|
||||||
.RB [ \-d
|
|
||||||
.IR directory ]
|
|
||||||
.RB [ \-o
|
|
||||||
.BR branch | checkout ]
|
|
||||||
.B \-t
|
|
||||||
.I team
|
|
||||||
.br
|
|
||||||
.B get\-branches
|
|
||||||
.I team
|
|
||||||
.br
|
|
||||||
.B get\-branches \-\-help
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBget\-branches\fR uses the LP API to get a list of branches for a person or
|
|
||||||
team and calls Bazaar to download all branches.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
Listed below are the command line options for \fBget\-branches\fR:
|
|
||||||
.TP
|
|
||||||
.BR \-h ", " \-\-help
|
|
||||||
Display a help message and exit.
|
|
||||||
.TP
|
|
||||||
.BR \-d ", " \-\-directory
|
|
||||||
Download branches to a directory other than the current directory.
|
|
||||||
.TP
|
|
||||||
.BR \-o ", " \-\-operation
|
|
||||||
Specifies which Bazaar operation to use when downloading the branches; may be
|
|
||||||
either \fIbranch\fR or \fIcheckout\fR.
|
|
||||||
.TP
|
|
||||||
.BR \-t ", " \-\-team
|
|
||||||
Specifies which Launchpad team/person to download branches from.
|
|
||||||
This option is required.
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
\fBget\-branches\fR was written by Daniel Holbach <daniel.holbach@ubuntu.com>,
|
|
||||||
and this manual page was written by Jonathan Patrick Davies <jpds@ubuntu.com>.
|
|
||||||
.PP
|
|
||||||
Both are released under the terms of the GNU General Public License, version 3.
|
|
||||||
|
|
||||||
.SH SEE ALSO
|
|
||||||
.B bzr(1)
|
|
@ -1,60 +0,0 @@
|
|||||||
.TH GET\-BUILD\-DEPS 1 "October 27, 2007" "ubuntu-dev-tools"
|
|
||||||
|
|
||||||
.SH NAME
|
|
||||||
get\-build\-deps \- install build dependencies for one or more packages
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
\fBget\-build\-deps\fP [\fIpackage name\fR]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBget\-build\-deps\fP is a script to install the build dependencies for
|
|
||||||
either a local source package or one or more packages from the repositories.
|
|
||||||
.PP
|
|
||||||
In order to obtain all missing build dependencies for a package on
|
|
||||||
which source you are currently working, just run this script without
|
|
||||||
any argument, and it'll read its debian/control file to determine the
|
|
||||||
missing build dependencies.
|
|
||||||
.PP
|
|
||||||
Alternatively, you can call it with a list of space-separated package
|
|
||||||
names, or the name of a single file which contains the package names
|
|
||||||
each on a line.
|
|
||||||
Then it will install the missing dependencies for those packages using
|
|
||||||
"apt\-get build\-dep".
|
|
||||||
|
|
||||||
.SH EXAMPLES
|
|
||||||
.TP
|
|
||||||
get\-build\-deps
|
|
||||||
Looks for a debian/control file in the current working directory and
|
|
||||||
installs the dependencies listed there.
|
|
||||||
.TP
|
|
||||||
get\-build\-deps geany
|
|
||||||
Installs the build dependencies for the version of \fBgeany\fP that's
|
|
||||||
in the repositories.
|
|
||||||
.TP
|
|
||||||
get\-build\-deps geany epiphany\-browser rhythmbox
|
|
||||||
Same as the previous example but also with the dependencies for
|
|
||||||
.B epiphany\-browser
|
|
||||||
and
|
|
||||||
.BR rhythmbox .
|
|
||||||
.TP
|
|
||||||
get\-build\-deps ./package_list.txt
|
|
||||||
Reads the file
|
|
||||||
.B package_list.txt
|
|
||||||
(relative to the current working directory),
|
|
||||||
where each line contains the name of a package, and installs the
|
|
||||||
dependencies for the versions of all those that are in the repositories.
|
|
||||||
|
|
||||||
.SH KNOWN BUGS AND LIMITATIONS
|
|
||||||
When it's being used to install the missing dependencies for a local
|
|
||||||
source package (i.e., no arguments are passed to it) it doesn't check
|
|
||||||
for the dependencies to match the indicated versions, but just installs
|
|
||||||
the newest one available in the repositories.
|
|
||||||
|
|
||||||
.SH SEE ALSO
|
|
||||||
.BR dpkg\-checkbuilddeps (1),
|
|
||||||
.BR apt\-get (8)
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
\fBget\-build\-deps\fP and this manual page have been written by Siegfried-Angel
|
|
||||||
Gevatter Pujals <rainct@ubuntu.com>.
|
|
||||||
They are released under the GNU General Public License, version 3 or later.
|
|
@ -1,49 +0,0 @@
|
|||||||
.TH GRAB\-ATTACHMENTS "1" "10 August 2008" "ubuntu-dev-tools"
|
|
||||||
.SH NAME
|
|
||||||
grab\-attachments \- downloads attachments from a Launchpad bug
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B grab\-attachments\fR [\fIoptions\fR] \fIbug-number\fR...
|
|
||||||
.br
|
|
||||||
.B grab\-attachments \-h
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBgrab\-attachments\fR is a script to download all attachments from a
|
|
||||||
Launchpad bug report into the current directory.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
Listed below are the command line options for grab\-attachments:
|
|
||||||
.TP
|
|
||||||
.I bug-number
|
|
||||||
Specifies the Launchpad bug number that the script should download
|
|
||||||
attachments from.
|
|
||||||
.TP
|
|
||||||
.BR \-h ", " \-\-help
|
|
||||||
Display a help message and exit.
|
|
||||||
.TP
|
|
||||||
.B \-l \fIINSTANCE\fR, \fB\-\-lpinstance\fR=\fIINSTANCE\fR
|
|
||||||
Use the specified instance of Launchpad (e.g. "staging"), instead of
|
|
||||||
the default of "production".
|
|
||||||
.TP
|
|
||||||
.B \-\-no\-conf
|
|
||||||
Do not read any configuration files, or configuration from environment
|
|
||||||
variables.
|
|
||||||
.SH ENVIRONMENT
|
|
||||||
All of the \fBCONFIGURATION VARIABLES\fR below are also supported as
|
|
||||||
environment variables.
|
|
||||||
Variables in the environment take precedence to those in configuration
|
|
||||||
files.
|
|
||||||
.SH CONFIGURATION VARIABLES
|
|
||||||
The following variables can be set in the environment or in
|
|
||||||
.BR ubuntu\-dev\-tools (5)
|
|
||||||
configuration files.
|
|
||||||
In each case, the script\-specific variable takes precedence over the
|
|
||||||
package\-wide variable.
|
|
||||||
.TP
|
|
||||||
.BR GRAB_ATTACHMENTS_LPINSTANCE ", " UBUNTUTOOLS_LPINSTANCE
|
|
||||||
The default value for \fB--lpinstance\fR.
|
|
||||||
.SH SEE ALSO
|
|
||||||
.BR ubuntu\-dev\-tools (5)
|
|
||||||
.SH AUTHOR
|
|
||||||
\fBgrab\-attachments\fR was written by Daniel Holbach and this manual page
|
|
||||||
was written by Jonathan Patrick Davies.
|
|
||||||
.PP
|
|
||||||
Both are released under the GNU General Public License, version 2.
|
|
@ -1,26 +0,0 @@
|
|||||||
.TH HUGDAYLIST "1" "August 27, 2008" "ubuntu-dev-tools"
|
|
||||||
|
|
||||||
.SH NAME
|
|
||||||
hugdaylist \- produce MoinMoin wiki formatted tables based on a Launchpad bug list
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B hugdaylist [\fB\-n\fP|\fB\-\-number <NUMBER>\fP] \fBlaunchpad-buglist-url\fP
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBhugdaylist\fP produces MoinMoin wiki formatted tables based on a
|
|
||||||
Launchpad bug list
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
.TP
|
|
||||||
\fB\-\-number=<NUMBER>\fP
|
|
||||||
This option allows you to specify the number of entries to output.
|
|
||||||
.TP
|
|
||||||
\fBlaunchpad-buglist-url\fP
|
|
||||||
Required, this option is a URL pointing to a launchpad bug list.
|
|
||||||
|
|
||||||
.SH AUTHOR
|
|
||||||
\fBhugdaylist\fP has been written by Canonical Ltd., Daniel Holbach
|
|
||||||
<daniel.holbach@canonical.com> and Jonathan Patrick Davies <jpds@ubuntu.com>.
|
|
||||||
This manual page was written by Ryan Kavanagh <ryanakca@kubuntu.org>.
|
|
||||||
.PP
|
|
||||||
Both are released under the GNU General Public License, version 3.
|
|
@ -1,27 +1,25 @@
|
|||||||
.TH lp\-set\-dup "1" "March 6 2010" "ubuntu-dev-tools"
|
.TH lp-bitesize "1" "May 9 2010" "ubuntu-dev-tools"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
lp\-set\-dup \- mark one or more bugs as duplicate of another bug
|
lp-bitesize \- Add \fBbitesize\fR tag to bugs and add a comment.
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B lp\-set\-dup \fR[\fB\-f\fR] <\fImain bug\fR> <\fIduplicate bug\fR>
|
.B lp-bitesize \fR<\fIbug number\fR>
|
||||||
[<\fIduplicate bug\fR> ...]
|
|
||||||
.br
|
.br
|
||||||
.B lp\-set\-dup \-\-help
|
.B lp-bitesize \-\-help
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fBlp\-set\-dup\fR allow to easily mark one or more bug as duplicate of
|
\fBlp-bitesize\fR adds a bitesize tag to the bug, if it's not there yet. It
|
||||||
another bug. It checks for permission to operate on a given bug first,
|
also adds a comment to the bug indicating that you are willing to help with
|
||||||
|
fixing it.
|
||||||
|
It checks for permission to operate on a given bug first,
|
||||||
then perform required tasks on Launchpad.
|
then perform required tasks on Launchpad.
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
Listed below are the command line options for \fBlp\-set\-dup\fR:
|
Listed below are the command line options for \fBlp-bitesize\fR:
|
||||||
.TP
|
.TP
|
||||||
.BR \-h ", " \-\-help
|
.BR \-h ", " \-\-help
|
||||||
Display a help message and exit.
|
Display a help message and exit.
|
||||||
.TP
|
.TP
|
||||||
.B \-f
|
|
||||||
Skip confirmation prompt.
|
|
||||||
.TP
|
|
||||||
.B \-l \fIINSTANCE\fR, \fB\-\-lpinstance\fR=\fIINSTANCE\fR
|
.B \-l \fIINSTANCE\fR, \fB\-\-lpinstance\fR=\fIINSTANCE\fR
|
||||||
Use the specified instance of Launchpad (e.g. "staging"), instead of
|
Use the specified instance of Launchpad (e.g. "staging"), instead of
|
||||||
the default of "production".
|
the default of "production".
|
||||||
@ -43,14 +41,14 @@ configuration files.
|
|||||||
In each case, the script\-specific variable takes precedence over the
|
In each case, the script\-specific variable takes precedence over the
|
||||||
package\-wide variable.
|
package\-wide variable.
|
||||||
.TP
|
.TP
|
||||||
.BR LP_SET_DUP_LPINSTANCE ", " UBUNTUTOOLS_LPINSTANCE
|
.BR BITESIZE_LPINSTANCE ", " UBUNTUTOOLS_LPINSTANCE
|
||||||
The default value for \fB--lpinstance\fR.
|
The default value for \fB--lpinstance\fR.
|
||||||
|
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR ubuntu\-dev\-tools (5)
|
.BR ubuntu\-dev\-tools (5)
|
||||||
|
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
\fBlp\-set\-dup\fR was written by Loïc Minier <lool@dooz.org>,
|
\fBlp-bitesize\fR and this manual page were written by Daniel Holbach
|
||||||
and this manual page was written by Luca Falavigna <dktrkranz@debian.org>.
|
<daniel.holbach@canonical.com>.
|
||||||
.PP
|
.PP
|
||||||
Both are released under the terms of the GNU General Public License, version 2.
|
Both are released under the terms of the GNU General Public License, version 3.
|
@ -1,27 +0,0 @@
|
|||||||
.TH lp\-list\-bugs 1 2010-09-17 ubuntu-dev-tools
|
|
||||||
.SH NAME
|
|
||||||
lp\-list\-bugs \- briefly list status of Launchpad bugs
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.B lp\-list\-bugs
|
|
||||||
takes one or more Launchpad bug numbers, and lists the status of each bug in a
|
|
||||||
concise format.
|
|
||||||
For example:
|
|
||||||
.PP
|
|
||||||
.RS
|
|
||||||
.nf
|
|
||||||
$ lp\-list\-bugs 3
|
|
||||||
Bug 3: Custom information for each translation team
|
|
||||||
rosetta: Fix Released
|
|
||||||
ubuntu: Invalid
|
|
||||||
mono (Ubuntu): Invalid
|
|
||||||
.fi
|
|
||||||
.RE
|
|
||||||
.SH OPTIONS
|
|
||||||
.TP
|
|
||||||
.BR \-h ", " \-\-help
|
|
||||||
Display a help message and exit.
|
|
||||||
.SH AUTHORS
|
|
||||||
.B lp\-list\-bugs
|
|
||||||
and this manual page were written by Colin Watson <cjwatson@ubuntu.com>.
|
|
||||||
Both are released under the terms of the GNU General Public License, version
|
|
||||||
3 or later.
|
|
@ -1,20 +0,0 @@
|
|||||||
.TH lp-project-upload "1" "05 September 2009" "ubuntu-dev-tools"
|
|
||||||
.SH NAME
|
|
||||||
lp\-project\-upload \- Upload a release tarball to a Launchpad project.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B lp\-project\-upload
|
|
||||||
.I project-name version tarball
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBlp\-project\-upload\fR uploads a tarball release of a project to Launchpad.
|
|
||||||
It can create milestones and releases on the fly after confirmation.
|
|
||||||
|
|
||||||
If there is a file \fItarball\fB.asc\fR, it is uploaded as the signature of the
|
|
||||||
tarball.
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
\fBlp\-project\-upload\fR was written by Martin Pitt <martin.pitt@ubuntu.com>.
|
|
||||||
.PP
|
|
||||||
It is released under the terms of the GNU General Public License, version 2
|
|
||||||
or (at your option) any later version.
|
|
@ -1,42 +0,0 @@
|
|||||||
.TH lp-shell "1" "27 March 2010" "ubuntu-dev-tools"
|
|
||||||
.SH NAME
|
|
||||||
lp\-shell \- Open an interactive launchpadlib shell.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B lp\-shell
|
|
||||||
.RB [ \-a ]
|
|
||||||
.RI [ service ]
|
|
||||||
.RI [ "LP API version" ]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.B lp\-shell
|
|
||||||
opens an interactive Python shell with a launchpadlib.Launchpad object "lp"
|
|
||||||
which is ready for use.
|
|
||||||
|
|
||||||
It authenticates against Launchpad with the consumer name "udt-lp-shell". When
|
|
||||||
using \fBlp\-shell\fR with the \fB\-a\fR option it will use the anonymous login
|
|
||||||
from launchpadlib.Launchpad.
|
|
||||||
|
|
||||||
By default \fBlp\-shell\fR connects to the "\fIproduction\fR" Launchpad service
|
|
||||||
using the "\fI1.0\fR" LP API version.
|
|
||||||
|
|
||||||
If you want to connect to another Launchpad service, call \fBlp\-shell\fR with
|
|
||||||
the service name as the second argument. \fBlp\-shell\fR supports all services
|
|
||||||
known by launchpadlib Python module.
|
|
||||||
Currently known are (list can be incomplete or outdated): "production",
|
|
||||||
"staging", "dogfood".
|
|
||||||
|
|
||||||
A different LP API version can be selected by passing the API version to use as
|
|
||||||
the third argument. Current supported are: "beta", "1.0" and "devel".
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
.TP
|
|
||||||
.B \-a
|
|
||||||
Login anonymously into Launchpad.
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
.B lp\-shell
|
|
||||||
was written by Martin Pitt <martin.pitt@ubuntu.com>.
|
|
||||||
.PP
|
|
||||||
It is released under the terms of the GNU General Public License, version 2
|
|
||||||
or (at your option) any later version.
|
|
@ -1,69 +0,0 @@
|
|||||||
.TH MANAGE-CREDENTIALS "1" "13 January 2009" "ubuntu-dev-tools"
|
|
||||||
.SH NAME
|
|
||||||
manage-credentials \- a tool to create (and manage) credentials which
|
|
||||||
are used to access launchpad via the API.
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B manage-credentials create -c <consumer> [--email <email> --password <password>] [--service <staging|edge>]
|
|
||||||
.br
|
|
||||||
.B manage-credentials \-h
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBmanage-credentials\fR is a tool to create (and manage) credentials which
|
|
||||||
are used to access Launchpad via the API.
|
|
||||||
|
|
||||||
.PP
|
|
||||||
Currently this tool can be used
|
|
||||||
to create a token with or without using the web UI. In the future, once
|
|
||||||
related methods are available through the API, this tool can also be used
|
|
||||||
to manage tokens in launchpad and on the users local machine.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
Listed below are the command line options for requestsync:
|
|
||||||
.TP
|
|
||||||
.B \-h
|
|
||||||
Display a help message and exit.
|
|
||||||
.TP
|
|
||||||
.B \-c \-\-consumer
|
|
||||||
.TP
|
|
||||||
.B \-e \-\-email <email>
|
|
||||||
Your email address as registered on Launchpad.
|
|
||||||
.TP
|
|
||||||
.B \-p \-\-password <password>
|
|
||||||
Your Launchpad password.
|
|
||||||
.TP
|
|
||||||
.B \-s \-\-service <edge|staging>
|
|
||||||
If we should use the edge or staging root of the Launchpad API.
|
|
||||||
.TP
|
|
||||||
.B \-\-cache
|
|
||||||
Where to store the cache.
|
|
||||||
.TP
|
|
||||||
.B \-o
|
|
||||||
Which file we should save the credentials to. By default
|
|
||||||
\fBmanage-credentials\fR writes the credentials tokens to the
|
|
||||||
~/.cache/lp_credentials/ directory.
|
|
||||||
.TP
|
|
||||||
.B \-l \-\-level <number>
|
|
||||||
A number representing the access-level you wish to give to the new
|
|
||||||
Launchpad token. 0 is unauthorized, 1 is read public data, 2; write public data,
|
|
||||||
3; read private data and 4; write private data.
|
|
||||||
|
|
||||||
.SH EXAMPLE USAGE
|
|
||||||
To get Launchpad tokens using \fBmanage-credentials\fR, run the following command:
|
|
||||||
.TP
|
|
||||||
manage-credentials create \-c CONSUMER \-\-level 2
|
|
||||||
|
|
||||||
.TP
|
|
||||||
This will open your web browser with a Launchpad login page.
|
|
||||||
|
|
||||||
.TP
|
|
||||||
If you intend to use manage-credentials for Ubuntu development (such as
|
|
||||||
the ubuntu-dev-tools package). Please be sure to run the following:
|
|
||||||
|
|
||||||
.TP
|
|
||||||
manage-credentials create \-c ubuntu-dev-tools \-l 2
|
|
||||||
|
|
||||||
.SH AUTHOR
|
|
||||||
.B manage-credentials
|
|
||||||
was written by Markus Korn <thekorn@gmx.de> and this manual page was written by
|
|
||||||
Jonathan Davies <jpds@ubuntu.com>.
|
|
||||||
.PP
|
|
||||||
Both are released under the GNU General Public License, version 3.
|
|
@ -1,71 +0,0 @@
|
|||||||
.TH MASSFILE "1" "June 2010" "ubuntu-dev-tools"
|
|
||||||
.SH NAME
|
|
||||||
\fBmassfile\fR \- script for massfiling bugs against Ubuntu packages
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
\fBmassfile\fR [\fIoptions\fR]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBmassfile\fR is a script for massfiling bugs against Ubuntu packages in Launchpad. It requires an instructions file describing the contents of the bug report and a list file which lists the packages which the bug will be filed against.
|
|
||||||
|
|
||||||
Templates for both files can be found in /usr/share/doc/ubuntu-dev-tools/examples.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
.TP
|
|
||||||
.B \-l \fIINSTANCE\fR, \fB\-\-lpinstance\fR=\fIINSTANCE\fR
|
|
||||||
Use the specified instance of Launchpad (e.g. "staging"), instead of
|
|
||||||
the default of "production".
|
|
||||||
.TP
|
|
||||||
.B \-\-no\-conf
|
|
||||||
Do not read any configuration files, or configuration from environment
|
|
||||||
variables.
|
|
||||||
|
|
||||||
.SH EXAMPLES
|
|
||||||
\fBinstructions\fR - file designating the contents of the bug report
|
|
||||||
|
|
||||||
subject: [UNMETDEPS] $pack has unmet dependencies
|
|
||||||
assignee:
|
|
||||||
status: confirmed
|
|
||||||
subscribers: motu
|
|
||||||
tags: unmetdeps
|
|
||||||
buglist-url: http://bugs.launchpad.net/ubuntu/+bugs?field.tag=unmetdeps
|
|
||||||
text:
|
|
||||||
A run of
|
|
||||||
.
|
|
||||||
LC_ALL=C apt-cache \-i unmet | grep ^Package | cut \-d' ' \-f2 | grep
|
|
||||||
\-v dbgsym | sort \-u | xargs apt-cache showsrc | grep ^Directory |
|
|
||||||
sed 's/Package\:\ //g' | grep verse | cut \-d'/' \-f4
|
|
||||||
indicates that the source package $pack has binary packages that are
|
|
||||||
not installable (on AMD64) at the moment.
|
|
||||||
.
|
|
||||||
Please have a look and make sure it's installable again.
|
|
||||||
|
|
||||||
\fBlist\fR - file designating the packages affected
|
|
||||||
|
|
||||||
Each package should be listed on a new line as follows:
|
|
||||||
|
|
||||||
z88dk
|
|
||||||
zope-quotafolder
|
|
||||||
|
|
||||||
.SH ENVIRONMENT
|
|
||||||
All of the \fBCONFIGURATION VARIABLES\fR below are also supported as
|
|
||||||
environment variables.
|
|
||||||
Variables in the environment take precedence to those in configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
.SH CONFIGURATION VARIABLES
|
|
||||||
The following variables can be set in the environment or in
|
|
||||||
.BR ubuntu\-dev\-tools (5)
|
|
||||||
configuration files.
|
|
||||||
In each case, the script\-specific variable takes precedence over the
|
|
||||||
package\-wide variable.
|
|
||||||
.TP
|
|
||||||
.BR MASSFILE_LPINSTANCE ", " UBUNTUTOOLS_LPINSTANCE
|
|
||||||
The default value for \fB--lpinstance\fR.
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
\fBmassfile\fR was written by Iain Lane <iain@orangesquash.org.uk>, Daniel Hahler <ubuntu@thequod.de>. and Markus Korn <thekorn@gmx.de>.
|
|
||||||
|
|
||||||
This manual page was written by Andrew Starr-Bochicchio <a.starr.b@gmail.com>.
|
|
||||||
.PP
|
|
||||||
Both are released under the terms of the GNU General Public License, version 3.
|
|
207
doc/mk-sbuild.1
207
doc/mk-sbuild.1
@ -4,10 +4,7 @@
|
|||||||
mk\-sbuild \- creates chroots via schroot and sbuild
|
mk\-sbuild \- creates chroots via schroot and sbuild
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
\fBmk\-sbuild\fR [\fB\-\-arch=ARCH\fR] [\fB\-\-name=NAME\fR]
|
\fBmk\-sbuild\fR [\fIoptions\fR...] <\fIrelease\fR>
|
||||||
[\fB\-\-personality=PERSONALITY\fR] [\fB\-\-debug\fR] [\fB\-\-source\-template=FILE\fR]
|
|
||||||
[\fB\-\-debootstrap\-mirror=URL\fR] [\fB\-\-distro=DISTRO\fR]
|
|
||||||
[\fB\-\-vg=VOLUME_GROUP\fR] [\fB\-\-type=SCHROOT_TYPE\fR] <\fBRelease\fR>
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fBmk\-sbuild\fR creates chroots via schroot and sbuild.
|
\fBmk\-sbuild\fR creates chroots via schroot and sbuild.
|
||||||
@ -15,49 +12,102 @@ mk\-sbuild \- creates chroots via schroot and sbuild
|
|||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
Listed below are the command line options for mk\-sbuild:
|
Listed below are the command line options for mk\-sbuild:
|
||||||
.TP
|
.TP
|
||||||
.B \-\-arch=ARCH
|
.B \-\-arch\fR=\fIARCH
|
||||||
What architecture to select (defaults to the native architecture).
|
What architecture to select (defaults to the native architecture).
|
||||||
.TP
|
.TP
|
||||||
.B \-\-name=NAME
|
.B \-\-target\fR=\fRARCH
|
||||||
|
Set up the chroot as a cross-building environment targeting the specified
|
||||||
|
architecture.
|
||||||
|
.TP
|
||||||
|
.B \-\-name\fR=\fINAME
|
||||||
Base name for the schroot (arch is appended).
|
Base name for the schroot (arch is appended).
|
||||||
.TP
|
.TP
|
||||||
.B \-\-personality=PERSONALITY
|
.B \-\-personality\fR=\fIPERSONALITY
|
||||||
What personality to use (defaults to match \-\-arch).
|
What personality to use (defaults to match \fB\-\-arch\fR).
|
||||||
.TP
|
.TP
|
||||||
.B \-\-debug
|
.B \-\-debug
|
||||||
Turn on script debugging.
|
Turn on script debugging.
|
||||||
.TP
|
.TP
|
||||||
.B \-\-skip\-updates
|
.B \-\-skip\-updates
|
||||||
Do not include the \-updates pocket in the installed sources.list.
|
Do not include the \fB\-updates\fR pocket in the installed
|
||||||
|
\fBsources.list\fR.
|
||||||
.TP
|
.TP
|
||||||
.B \-\-source\-template=FILE
|
.B \-\-skip\-proposed
|
||||||
Use FILE as the sources.list template (defaults to $HOME/.mk\-sbuild.sources).
|
Do not include the \fB\-proposed\fR pocket in the installed
|
||||||
|
\fBsources.list\fR.
|
||||||
.TP
|
.TP
|
||||||
.B \-\-debootstrap\-mirror=URL
|
.B \-\-source\-template\fR=\fIFILE
|
||||||
Use URL as the debootstrap source (defaults to http://ports.ubuntu.com for lpia,
|
Use \fIFILE\fR as the \fBsources.list\fR template (defaults to
|
||||||
official Ubuntu repositories for the supported architectures).
|
\fI$HOME\fB/.mk\-sbuild.sources\fR).
|
||||||
.TP
|
.TP
|
||||||
.B \-\-debootstrap\-include=alpha,beta
|
.B \-\-debootstrap\-mirror\fR=\fIURL
|
||||||
Pass along a comma separated list of packages to debootstrap's \-\-include
|
Use \fIURL\fR as the debootstrap source (defaults to
|
||||||
argument. See debootstrap (8) for more details.
|
\fBhttp://ports.ubuntu.com\fR where appropriate, official Ubuntu
|
||||||
|
repositories for the supported architectures).
|
||||||
.TP
|
.TP
|
||||||
.B \-\-debootstrap\-exclude=alpha,beta
|
.B \-\-debootstrap\-include\fR=\fIalpha,beta
|
||||||
Pass along a comma separated list of packages to debootstrap's \-\-exclude
|
Pass along a comma separated list of packages to debootstrap's
|
||||||
argument. WARNING: be careful using this option as you can end up
|
\fB\-\-include\fR argument. See \fBdebootstrap\fR (8) for more details.
|
||||||
excluding essential package. See debootstrap (8) for more details.
|
|
||||||
.TP
|
.TP
|
||||||
.B \-\-distro=DISTRO
|
.B \-\-debootstrap\-exclude\fR=\fIalpha,beta
|
||||||
Enable distro-specific logic. Currently known distros: "ubuntu" (default)
|
Pass along a comma separated list of packages to debootstrap's
|
||||||
and "debian".
|
\fB\-\-exclude\fR argument.
|
||||||
|
\fBWARNING:\fR be careful using this option as you can end up
|
||||||
|
excluding essential package. See \fBdebootstrap \fR(8) for more details.
|
||||||
.TP
|
.TP
|
||||||
.B \-\-vg=VOLUME_GROUP
|
.B \-\-debootstrap\-keyring\fR=\fIkeyring
|
||||||
Specify a volume group, and subsequently use a default SCHROOT_TYPE of
|
Pass along the path to a gpg keyring file to debootsrap's
|
||||||
"lvm-snapshot" rather than "directory" (via aufs) mounts.
|
\fB\-\-keyring\fR argument. See \fBdebootstrap\fR (8) for more details.
|
||||||
.TP
|
.TP
|
||||||
.B \-\-type=SHROOT_TYPE
|
.B \-\-debootstrap\-no\-check\-gpg
|
||||||
Specify a SCHROOT_TYPE. Supported values are "directory" (default if
|
Disable checking gpg signatures of downloaded Release files by using
|
||||||
\-\-vg not specified), "lvm-snapshot" (default if \-\-vg specified),
|
debootstrap's \fB\-\-no\-check\-gpg\fR option. See \fBdebootstrap\fR (8)
|
||||||
"btrfs-snapshot", and "file".
|
for more details.
|
||||||
|
.TP
|
||||||
|
.B \-\-debootstrap\-proxy\fR=\fIPROXY
|
||||||
|
Use \fIPROXY\fR as apt proxy.
|
||||||
|
.TP
|
||||||
|
.B \-\-eatmydata
|
||||||
|
Install and use eatmydata (default)
|
||||||
|
.TP
|
||||||
|
.B \-\-skip\-eatmydata
|
||||||
|
Don't install and use eatmydata
|
||||||
|
.TP
|
||||||
|
.B \-\-distro\fR=\fIDISTRO
|
||||||
|
Enable distro-specific logic.
|
||||||
|
When not provided, the distribution is determined from \fIrelease\fR.
|
||||||
|
Currently known distros: "\fBdebian\fR" and "\fBubuntu\fR".
|
||||||
|
.TP
|
||||||
|
.B \-\-vg\fR=\fIVOLUME_GROUP
|
||||||
|
Specify a volume group, and subsequently use a default \fBSCHROOT_TYPE\fR of
|
||||||
|
"\fBlvm-snapshot\fR" rather than "\fBdirectory\fR" (via overlayfs or
|
||||||
|
aufs) mounts.
|
||||||
|
.TP
|
||||||
|
.B \-\-zfs-dataset=\fIDATASET
|
||||||
|
Specify a zfs dataset, and subsequently use a default \fBSCHROOT_TYPE\fR of
|
||||||
|
"\fBzfs-snapshot\fR" rather than "\fBdirectory\fR" (via overlayfs or
|
||||||
|
aufs) mounts.
|
||||||
|
.TP
|
||||||
|
.B \-\-type\fR=\fISHROOT_TYPE
|
||||||
|
Specify a \fBSCHROOT_TYPE\fR. Supported values are "\fBdirectory\fR"
|
||||||
|
(default if \fB\-\-vg\fR not specified), "\fBlvm-snapshot\fR" (default
|
||||||
|
if \fB\-\-vg\fR specified), "\fBbtrfs-snapshot\fR", "\fBzfs-snapshot\fR"
|
||||||
|
and "\fBfile\fR".
|
||||||
|
.TP
|
||||||
|
.B \-\-ccache
|
||||||
|
Enable usage of \fBccache\fR by default. See \fBccache\fR (1) for
|
||||||
|
more details.
|
||||||
|
.TP
|
||||||
|
.B \-\-ccache-dir=\fIPATH
|
||||||
|
Use \fBPATH\fR as schroot ccache directory. This directory can be
|
||||||
|
safely shared by multiple schroots, but they will all use the same
|
||||||
|
\fBCCACHE_MAXSIZE\fR.
|
||||||
|
Defaults to /var/cache/ccache-sbuild.
|
||||||
|
See \fBccache\fR (1) for more details.
|
||||||
|
.TP
|
||||||
|
.B \-\-ccache-size=\fISIZE
|
||||||
|
Sets \fBSIZE\fR as the schroot \fBCCACHE_DIR\fR max-size used by ccache.
|
||||||
|
See \fBccache\fR (1) for more details.
|
||||||
|
|
||||||
.SH ENVIRONMENT VARIABLES
|
.SH ENVIRONMENT VARIABLES
|
||||||
.TP
|
.TP
|
||||||
@ -70,62 +120,103 @@ Size of snapshot LVs (defaults to 4G).
|
|||||||
.B SCHROOT_CONF_SUFFIX
|
.B SCHROOT_CONF_SUFFIX
|
||||||
Lines to append to schroot entries.
|
Lines to append to schroot entries.
|
||||||
.TP
|
.TP
|
||||||
|
.B SCHROOT_PROFILE
|
||||||
|
Profile to use with schroot. (defaults to sbuild)
|
||||||
|
.TP
|
||||||
.B SKIP_UPDATES
|
.B SKIP_UPDATES
|
||||||
Do not include the \-updates pocket in the installed sources.list.
|
Do not include the \fB\-updates\fR pocket (same as
|
||||||
|
\fB\-\-skip\-updates\fR)
|
||||||
|
.TP
|
||||||
|
.B SKIP_PROPOSED
|
||||||
|
Do not include the \fB\-proposed\fR pocket (same as
|
||||||
|
\fB\-\-skip\-proposed\fR)
|
||||||
.TP
|
.TP
|
||||||
.B DEBOOTSTRAP_MIRROR
|
.B DEBOOTSTRAP_MIRROR
|
||||||
Mirror location (same as \-\-debootstrap-mirror)
|
Mirror location (same as \fB\-\-debootstrap-mirror\fR)
|
||||||
.TP
|
.TP
|
||||||
.B DEBOOTSTRAP_INCLUDE
|
.B DEBOOTSTRAP_INCLUDE
|
||||||
Comma separated list of packages to include when bootstrapping (same as \-\-debootstrap-include)
|
Comma separated list of packages to include when bootstrapping (same as
|
||||||
|
\fB\-\-debootstrap-include\fR)
|
||||||
.TP
|
.TP
|
||||||
.B DEBOOTSTRAP_EXCLUDE
|
.B DEBOOTSTRAP_EXCLUDE
|
||||||
Comma separated list of packages to exclude when bootstrapping (same as \-\-debootstrap-exclude; see warning above)
|
Comma separated list of packages to exclude when bootstrapping (same as
|
||||||
|
\fB\-\-debootstrap-exclude\fR; see warning above)
|
||||||
|
.TP
|
||||||
|
.B DEBOOTSTRAP_KEYRING
|
||||||
|
Keyring file to use for checking gpg signatures of retrieved release files
|
||||||
|
(same as \fB\-\-debootstrap\-keyring\fR)
|
||||||
|
.TP
|
||||||
|
.B DEBOOTSTRAP_NO_CHECK_GPG
|
||||||
|
Disable gpg verification of retrieved release files (same as
|
||||||
|
\fB\-\-debootstrap\-no\-check\-gpg\fR)
|
||||||
|
.TP
|
||||||
|
.B DEBOOTSTRAP_PROXY
|
||||||
|
Proxy to use for apt. (same as
|
||||||
|
\fB\-\-debootstrap\-proxy\fR)
|
||||||
|
.TP
|
||||||
|
.B EATMYDATA
|
||||||
|
Enable or disable eatmydata usage, see \fB\-\-eatmydata\fR
|
||||||
|
and \fB\-\-skip\-eatmydata\fR
|
||||||
.TP
|
.TP
|
||||||
.B SOURCE_CHROOTS_DIR
|
.B SOURCE_CHROOTS_DIR
|
||||||
use SOURCE_CHROOTS_DIR as home of schroot source directories. (default
|
Use \fBSOURCE_CHROOTS_DIR\fR as home of schroot source directories.
|
||||||
/var/lib/schroot/chroots)
|
(default \fB/var/lib/schroot/chroots\fR)
|
||||||
.TP
|
.TP
|
||||||
.B SOURCE_CHROOTS_TGZ
|
.B SOURCE_CHROOTS_TGZ
|
||||||
use SOURCE_CHROOTS_TGZ as home of schroot source tarballs. (default
|
Use \fBSOURCE_CHROOTS_TGZ\fR as home of schroot source tarballs.
|
||||||
/var/lib/schroot/tarballs)
|
(default \fB/var/lib/schroot/tarballs\fR)
|
||||||
.TP
|
.TP
|
||||||
.B CHROOT_SNAPSHOT_DIR
|
.B CHROOT_SNAPSHOT_DIR
|
||||||
use CHROOT_SNAPSHOT_DIR as home of mounted btrfs snapshots (default
|
Use \fBCHROOT_SNAPSHOT_DIR\fR as home of mounted btrfs snapshots.
|
||||||
/var/lib/schroot/snapshots)
|
(default \fB/var/lib/schroot/snapshots\fR)
|
||||||
|
.TP
|
||||||
|
.B CCACHE
|
||||||
|
Enable \fBccache\fR (1) by default.
|
||||||
|
(defaults to \fB0\fR)
|
||||||
|
.TP
|
||||||
|
.B CCACHE_DIR
|
||||||
|
Use \fBCCACHE_DIR\fR as the \fBccache\fR (1) directory.
|
||||||
|
(default \fB/var/cache/ccache-sbuild\fR)
|
||||||
|
.TP
|
||||||
|
.B CCACHE_SIZE
|
||||||
|
Use \fBCCACHE_SIZE\fR as the \fBccache\fR (1) max-size.
|
||||||
|
(defaults to \fB4G\fR)
|
||||||
|
|
||||||
|
|
||||||
.SH FILES
|
.SH FILES
|
||||||
.TP
|
.TP
|
||||||
.B $HOME/.mk\-sbuild.rc
|
.IB $HOME /.mk\-sbuild.rc
|
||||||
Sourced for environment variables (defined above).
|
Sourced for environment variables (defined above).
|
||||||
.TP
|
.TP
|
||||||
.B $HOME/.mk\-sbuild.sources[.$DISTRO]
|
.IB $HOME /.mk\-sbuild.sources\fR[\fB. $DISTRO\fR]
|
||||||
Can contain a customized sources.list.
|
Can contain a customized \fBsources.list\fR.
|
||||||
It will be read when creating the schroot.
|
It will be read when creating the schroot.
|
||||||
If a file with ".ubuntu" or ".debian" is found (based on the \-\-distro
|
If a file with "\fB.ubuntu\fR" or "\fB.debian\fR" is found (as
|
||||||
argument) that file will use used instead.
|
appropriate) it will use used instead.
|
||||||
See sources.list(5) for more details on the format.
|
See \fBsources.list\fR (5) for more details on the format.
|
||||||
.TP
|
.TP
|
||||||
.B $HOME/.mk\-sbuild.schroot.conf[.$SCHROOT_TYPE]
|
.IB $HOME /.mk\-sbuild.schroot.conf\fR[\fB. $SCHROOT_TYPE\fR]
|
||||||
Can contain a customized configuration section to be inserted into
|
Can contain a customized configuration section to be inserted into
|
||||||
/etc/schroot/schroot.conf.
|
\fB/etc/schroot/schroot.conf\fR.
|
||||||
If a file with ".lvm-snapshot", ".directory", or ".file" is found (based on the
|
If a file with "\fB.lvm-snapshot\fR", "\fB.directory\fR", "\fB.file\fR",
|
||||||
values of the \-\-vg and \-\-type arguments) that file will use used instead.
|
or "\fBbtrfs-snapshot\fR" is found (as appropriate) that file will use used instead.
|
||||||
See schroot.conf(5) for more details on the format.
|
See \fBschroot.conf\fR (5) for more details on the format.
|
||||||
.SH USING THE CHROOTS
|
.SH USING THE CHROOTS
|
||||||
.TP
|
.TP
|
||||||
To CHANGE the golden image: \fBsudo schroot \-c ${CHROOT_NAME}\-source \-u root\fR
|
To CHANGE the golden image: \fBsudo schroot \-c \fI${SCHROOT_NAME}\fB\-source \-u root\fR
|
||||||
.TP
|
.TP
|
||||||
To ENTER an image snapshot: \fBschroot \-c ${CHROOT_NAME}\fR
|
To ENTER an image snapshot: \fBschroot \-c \fI$SCHROOT_NAME\fR
|
||||||
.TP
|
.TP
|
||||||
To BUILD within a snapshot: \fBsbuild \-A \-d ${SCHROOT_NAME} PACKAGE*.dsc\fR
|
To BUILD within a snapshot: \fBsbuild \-A \-d \fI$SCHROOT_NAME $PACKAGE\fB*.dsc\fR
|
||||||
.TP
|
.TP
|
||||||
for example, to update the packages in a golden image: \fBschroot \-c ${CHROOT_NAME}\-source \-u root -- sh \-c "apt-get \-qq update && apt-get \-qy upgrade && apt-get clean" </dev/null\fR
|
for example, to update the packages in a \fBsid\-amd64\fR golden image:
|
||||||
|
\fBschroot \-c sid\-amd64\-source \-u root -- sh \-c "apt-get \-qq update && apt-get \-qy upgrade && apt-get clean" </dev/null\fR
|
||||||
|
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
sbuild\-setup (7), sources.list (5), schroot.conf (5),
|
.BR sbuild\-setup (7),
|
||||||
https://help.ubuntu.com/community/SbuildLVMHowto
|
.BR sources.list (5),
|
||||||
|
.BR schroot.conf (5),
|
||||||
|
.B https://help.ubuntu.com/community/SbuildLVMHowto
|
||||||
|
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
\fBmk\-sbuild\fR was written by Kees Cook <kees@ubuntu.com>.
|
\fBmk\-sbuild\fR was written by Kees Cook <kees@ubuntu.com>.
|
||||||
|
@ -1,35 +1,36 @@
|
|||||||
.TH PBUILDER\-DIST 1 "February 25, 2008" "ubuntu-dev-tools"
|
.TH PBUILDER\-DIST\-SIMPLE 1 "February 25, 2008" "ubuntu\-dev\-tools"
|
||||||
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
pbuilder\-dist\-simple \- simple multi-distribution pbuilder wrapper
|
pbuilder\-dist\-simple \- simple multi\-release pbuilder wrapper
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
\fBpbuilder\-\fI<dist>\fR\fP \fIoperation\fR [\fI...\fR]
|
\fBpbuilder\-\fI<dist>\fR\fP \fIoperation\fR [\fI...\fR]
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fBpbuilder\-dist\fP is a wrapper that makes it easy to use pbuilder with
|
\fBpbuilder\-dist\-simple\fP is a wrapper that makes it easy to use
|
||||||
chroots for many different Ubuntu/Debian distributions.
|
pbuilder with chroots for many different Ubuntu distributions.
|
||||||
If you need more features than \fBpbuilder\-dist\-simple\fP provides, have a
|
If you need more features than \fBpbuilder\-dist\-simple\fP provides, have a
|
||||||
look at \fBpbuilder\-dist\fP.
|
look at
|
||||||
|
.BR pbuilder\-dist (1).
|
||||||
|
|
||||||
.SH USAGE
|
.SH USAGE
|
||||||
Create one symlink to \fBpbuilder\-dist\-simple\fP for each distribution
|
Create one symlink to \fBpbuilder\-dist\-simple\fP for each distribution
|
||||||
for which you want a build environment, naming them like "pbuilder\-hardy",
|
for which you want a build environment, naming them like "pbuilder\-lucid",
|
||||||
"pbuilder\-gutsy", etc.
|
"pbuilder\-natty", etc.
|
||||||
.PP
|
.PP
|
||||||
Replace \fIoperation\fP with the action you want \fBpbuilder\-dist\-simple\fP
|
Replace \fIoperation\fP with the action you want \fBpbuilder\-dist\-simple\fP
|
||||||
to do (create, update, build, clean, login or execute).
|
to do (create, update, build, clean, login or execute).
|
||||||
|
|
||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
.TP
|
.TP
|
||||||
pbuilder\-gutsy create
|
pbuilder\-natty create
|
||||||
Creates a \fBpbuilder\fP environment for Ubuntu Gutsy.
|
Creates a \fBpbuilder\fP environment for Ubuntu Natty.
|
||||||
.TP
|
.TP
|
||||||
pbuilder\-sid update
|
pbuilder\-lucid update
|
||||||
Updates an existing Debian Sid environment.
|
Updates an existing Ubuntu Lucid environment.
|
||||||
.TP
|
.TP
|
||||||
pbuilder\-hardy build ./sample_1.0\-0ubuntu1.dsc
|
pbuilder\-lucid build ./sample_1.0\-0ubuntu1.dsc
|
||||||
Builds the specified package on an already existing Ubuntu Hardy environment.
|
Builds the specified package on an already existing Ubuntu Lucid environment.
|
||||||
|
|
||||||
.SH FILES
|
.SH FILES
|
||||||
By default, \fBpbuilder\-dist\-simple\fP will store all the files it
|
By default, \fBpbuilder\-dist\-simple\fP will store all the files it
|
||||||
@ -39,12 +40,14 @@ to any other directory you want.
|
|||||||
If the directory doesn't exit, it will be created at runtime.
|
If the directory doesn't exit, it will be created at runtime.
|
||||||
|
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
\fBpbuilder\fR, \fBpbuilderrc\fR
|
.BR pbuilder (1),
|
||||||
|
.BR pbuilderrc (5),
|
||||||
|
.BR pbuilder\-dist (1)
|
||||||
|
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
\fBpbuilder\-dist\fP was originally written by Jamin W. Collins
|
\fBpbuilder\-dist\fP was originally written by Jamin W. Collins
|
||||||
<jcollins@asgardsrealm.net> and Jordan Mantha <mantha@ubuntu.com>, and
|
<jcollins@asgardsrealm.net> and Jordan Mantha <mantha@ubuntu.com>, and
|
||||||
this manpage by Siegfried-A. Gevatter <rainct@ubuntu.com>.
|
this manpage by Siegfried\-A. Gevatter <rainct@ubuntu.com>.
|
||||||
.PP
|
.PP
|
||||||
Both are released under the GNU General Public License, version 2 or
|
Both are released under the GNU General Public License, version 2 or
|
||||||
later.
|
later.
|
||||||
|
@ -20,7 +20,7 @@ like for example \fBpbuilder\-feisty\fP, \fBpbuilder\-sid\fP, \fBpbuilder\-gutsy
|
|||||||
.PP
|
.PP
|
||||||
The same applies to \fBcowbuilder\-dist\fP, which uses cowbuilder. The main
|
The same applies to \fBcowbuilder\-dist\fP, which uses cowbuilder. The main
|
||||||
difference between both is that pbuilder compresses the created chroot as a
|
difference between both is that pbuilder compresses the created chroot as a
|
||||||
a tarball, thus using less disc space but needing to uncompress (and possibly
|
tarball, thus using less disc space but needing to uncompress (and possibly
|
||||||
compress) its contents again on each run, and cowbuilder doesn't do this.
|
compress) its contents again on each run, and cowbuilder doesn't do this.
|
||||||
|
|
||||||
.SH USAGE
|
.SH USAGE
|
||||||
@ -35,11 +35,13 @@ Replace this with the codename of the version of Ubuntu or Debian you want to us
|
|||||||
.TP
|
.TP
|
||||||
\fBarchitecture\fP
|
\fBarchitecture\fP
|
||||||
This optional parameter will attempt to construct a chroot in a foreign
|
This optional parameter will attempt to construct a chroot in a foreign
|
||||||
architecture. For some architecture pairs (e.g. i386 on an amd64 install),
|
architecture.
|
||||||
the chroot will be created natively. For others (e.g. armel on an i386
|
For some architecture pairs (e.g. i386 on an amd64 install), the chroot
|
||||||
install), qemu-static and binfmt-misc will be used. Note that some
|
will be created natively.
|
||||||
combinations (e.g. amd64 on an i386 install) require special separate
|
For others (e.g. arm64 on an amd64 install), qemu\-user\-static will be
|
||||||
kernel handling, and may break in unexpected ways.
|
used.
|
||||||
|
Note that some combinations (e.g. amd64 on an i386 install) require
|
||||||
|
special separate kernel handling, and may break in unexpected ways.
|
||||||
.TP
|
.TP
|
||||||
\fBoperation\fP
|
\fBoperation\fP
|
||||||
Replace this with the action you want \fBpbuilder\fP to do (create, update,
|
Replace this with the action you want \fBpbuilder\fP to do (create, update,
|
||||||
@ -58,26 +60,41 @@ building is the action you want to do.
|
|||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
\fB--main-only\fP (deprecated: \fBmainonly\fP)
|
\fB\-\-main\-only\fP (deprecated: \fBmainonly\fP)
|
||||||
If you specify this option, only packages from the \fImain\fP (in Debian) or
|
If you specify this option, only packages from the \fImain\fP (in Debian) or
|
||||||
\fImain\fP and \fIrestricted\fP (in Ubuntu) components will be used. By
|
\fImain\fP and \fIrestricted\fP (in Ubuntu) components will be used. By
|
||||||
default, all official components are enabled. This only has effect when
|
default, all official components are enabled. This only has effect when
|
||||||
creating a new environment.
|
creating a new environment.
|
||||||
.TP
|
.TP
|
||||||
\fB--debug-echo\fP
|
\fB\-\-debug\-echo\fP
|
||||||
The generated \fBpbuilder\fP/\fBcowbuilder\fP command will be printed to the
|
The generated \fBpbuilder\fP/\fBcowbuilder\fP command will be printed to the
|
||||||
standard output instead of being executed. This is useful for debugging.
|
standard output instead of being executed. This is useful for debugging.
|
||||||
.TP
|
.TP
|
||||||
\fB--buildresult\fP \fBDIRECTORY\fP (pbuilder-dist only)
|
\fB\-\-buildresult\fP \fBDIRECTORY\fP (pbuilder\-dist only)
|
||||||
If this option is specified, the resultant files of the \fBpbuilder\fP build
|
If this option is specified, the resultant files of the \fBpbuilder\fP build
|
||||||
are placed in \fBDIRECTORY\fP.
|
are placed in \fBDIRECTORY\fP.
|
||||||
|
.TP
|
||||||
|
\fB\-\-release\-only\fP
|
||||||
|
Only use the release pocket.
|
||||||
|
Default for development releases.
|
||||||
|
.TP
|
||||||
|
\fB\-\-security\-only\fP
|
||||||
|
Only use the release and security pockets.
|
||||||
|
Suitable environment for preparing security updates.
|
||||||
|
.TP
|
||||||
|
\fB\-\-updates\-only\fP
|
||||||
|
Only use the release, security, and updates pocket.
|
||||||
|
Not the proposed\-updates pocket.
|
||||||
|
.TP
|
||||||
|
\fB\-\-backports\fP
|
||||||
|
Also use the backports archive..
|
||||||
|
|
||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
.TP
|
.TP
|
||||||
pbuilder\-dist gutsy create
|
pbuilder\-dist gutsy create
|
||||||
Creates a \fBpbuilder\fP environment for Ubuntu Gutsy, with all components enabled.
|
Creates a \fBpbuilder\fP environment for Ubuntu Gutsy, with all components enabled.
|
||||||
.TP
|
.TP
|
||||||
pbuilder\-sid mainonly create
|
pbuilder\-sid \-\-main\-only create
|
||||||
Creates a \fBpbuilder\fP environment for Debian Sid, with only the main component.
|
Creates a \fBpbuilder\fP environment for Debian Sid, with only the main component.
|
||||||
.TP
|
.TP
|
||||||
pbuilder\-feisty build ./sample_1.0\-0ubuntu1.dsc
|
pbuilder\-feisty build ./sample_1.0\-0ubuntu1.dsc
|
||||||
@ -104,6 +121,16 @@ saved in the results subdirectory of each build environment.
|
|||||||
The default authentication method is \fBsudo\fP. You can change this by
|
The default authentication method is \fBsudo\fP. You can change this by
|
||||||
setting the \fBPBUILDAUTH\fP variable.
|
setting the \fBPBUILDAUTH\fP variable.
|
||||||
.PP
|
.PP
|
||||||
|
By default, \fBpbuilder\-dist\fP use the master Debian and Ubuntu mirrors.
|
||||||
|
The pbuilder \fBMIRRORSITE\fP and \fBOTHERMIRROR\fP variables are
|
||||||
|
supported, as are the standard ubuntu\-dev\-tools variables:
|
||||||
|
\fBUBUNTUTOOLS_DEBIAN_MIRROR\fP, \fBPBUILDER_DIST_DEBIAN_MIRROR\fP,
|
||||||
|
\fBUBUNTUTOOLS_DEBSEC_MIRROR\fP, \fBPBUILDER_DIST_DEBSEC_MIRROR\fP,
|
||||||
|
\fBUBUNTUTOOLS_UBUNTU_MIRROR\fP, \fBPBUILDER_DIST_UBUNTU\fP,
|
||||||
|
\fBUBUNTUTOOLS_UBUNTU_PORTS_MIRROR\fP, and
|
||||||
|
\fBPBUILDER_DIST_UBUNTU_PORTS_MIRROR\fP.
|
||||||
|
See \fBubuntu\-dev\-tools\fP (5) for details.
|
||||||
|
.PP
|
||||||
You may also want to know that \fBpbuilder\-dist\fP exports \fBDIST\fP and
|
You may also want to know that \fBpbuilder\-dist\fP exports \fBDIST\fP and
|
||||||
\fBARCH\fP environment variables to the invoked process, containing the name
|
\fBARCH\fP environment variables to the invoked process, containing the name
|
||||||
of the distribution and the architecture targeted by the current build. You
|
of the distribution and the architecture targeted by the current build. You
|
||||||
@ -111,13 +138,16 @@ can make use of them, for example, in \fBpbuilderrc\fP.
|
|||||||
|
|
||||||
.SH BUGS
|
.SH BUGS
|
||||||
If you experience any problem with this script contact me on rainct@ubuntu.com
|
If you experience any problem with this script contact me on rainct@ubuntu.com
|
||||||
or file a bug at https://bugs.launchpad.net/ubuntu/+source/ubuntu-dev-tools.
|
or file a bug at https://bugs.launchpad.net/ubuntu/+source/ubuntu\-dev\-tools.
|
||||||
.PP
|
.PP
|
||||||
Please ensure first that the problem is really this script and not an issue
|
Please ensure first that the problem is really this script and not an issue
|
||||||
with \fBpbuilder\fP or \fBcowbuilder\fP themselves.
|
with \fBpbuilder\fP or \fBcowbuilder\fP themselves.
|
||||||
|
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
\fBpbuilder\fR, \fBpbuilderrc\fR, \fBcowbuilder\fR
|
.BR pbuilder (1),
|
||||||
|
.BR pbuilderrc (5),
|
||||||
|
.BR cowbuilder (1),
|
||||||
|
.BR ubuntu\-dev\-tools (5).
|
||||||
|
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
\fBpbuilder\-dist\fP and this manual page were written by Siegfried-A. Gevatter
|
\fBpbuilder\-dist\fP and this manual page were written by Siegfried-A. Gevatter
|
||||||
|
44
doc/pm-helper.1
Normal file
44
doc/pm-helper.1
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
.\" Copyright (C) 2023, Canonical Ltd.
|
||||||
|
.\"
|
||||||
|
.\" This program is free software; you can redistribute it and/or
|
||||||
|
.\" modify it under the terms of the GNU General Public License, version 3.
|
||||||
|
.\"
|
||||||
|
.\" 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 <http://www.gnu.org/licenses/>.
|
||||||
|
.TH pm\-helper 1 "June 2023" ubuntu\-dev\-tools
|
||||||
|
|
||||||
|
.SH NAME
|
||||||
|
pm\-helper \- helper to guide a developer through proposed\-migration work
|
||||||
|
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B pm\-helper \fR[\fIoptions\fR] [\fIpackage\fR]
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Claim a package from proposed\-migration to work on and get additional
|
||||||
|
information (such as the state of the package in Debian) that may be helpful
|
||||||
|
in unblocking it.
|
||||||
|
.PP
|
||||||
|
This tool is incomplete and under development.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
.B \-l \fIINSTANCE\fR, \fB\-\-launchpad\fR=\fIINSTANCE\fR
|
||||||
|
Use the specified instance of Launchpad (e.g. "staging"), instead of
|
||||||
|
the default of "production".
|
||||||
|
.TP
|
||||||
|
.B \-v\fR, \fB--verbose\fR
|
||||||
|
be more verbose
|
||||||
|
.TP
|
||||||
|
\fB\-h\fR, \fB\-\-help\fR
|
||||||
|
Display a help message and exit
|
||||||
|
|
||||||
|
.SH AUTHORS
|
||||||
|
\fBpm\-helper\fR and this manpage were written by Steve Langasek
|
||||||
|
<steve.langasek@ubuntu.com>.
|
||||||
|
.PP
|
||||||
|
Both are released under the GPLv3 license.
|
1
doc/pull-debian-ddebs.1
Symbolic link
1
doc/pull-debian-ddebs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-debian-debs.1
Symbolic link
1
doc/pull-debian-debs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
@ -1,65 +0,0 @@
|
|||||||
.TH PULL\-DEBIAN\-SOURCE "1" "20 December 2008" "ubuntu-dev-tools"
|
|
||||||
|
|
||||||
.SH NAME
|
|
||||||
pull\-debian\-source \- download a source package from Debian
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B pull\-debian\-source \fR[\fIoptions\fR] <\fIsource package\fR> [\fItarget release\fR]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBpull\-debian\-source\fR downloads and extracts the latest version of
|
|
||||||
<\fBsource package\fR> from Debian.
|
|
||||||
If the optional parameter [\fItarget release\fR] is specified, the latest
|
|
||||||
version in that release will be downloaded instead.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
Listed below are the command line options for pull\-debian\-source:
|
|
||||||
.TP
|
|
||||||
.I source package
|
|
||||||
This is the source package that you would like to be downloaded from Debian.
|
|
||||||
.TP
|
|
||||||
.I target release
|
|
||||||
This is the release that you would like the source package to be downloaded from.
|
|
||||||
This value defaults to 'unstable'.
|
|
||||||
.TP
|
|
||||||
.BR \-h ", " \-\-help
|
|
||||||
Display the usage instructions and exit.
|
|
||||||
.TP
|
|
||||||
.B \-m \fIDEBIAN_MIRROR\fR, \fB\-\-mirror\fR=\fIDEBIAN_MIRROR\fR
|
|
||||||
Use the specified mirror.
|
|
||||||
Should be in the form \fBhttp://ftp.debian.org/debian\fR.
|
|
||||||
If the package isn't found on this mirror, \fBpull\-debian\-source\fR
|
|
||||||
will fall back to the default mirror.
|
|
||||||
.TP
|
|
||||||
.B \-\-no\-conf
|
|
||||||
Do not read any configuration files, or configuration from environment
|
|
||||||
variables.
|
|
||||||
|
|
||||||
.SH ENVIRONMENT
|
|
||||||
All of the \fBCONFIGURATION VARIABLES\fR below are also supported as
|
|
||||||
environment variables.
|
|
||||||
Variables in the environment take precedence to those in configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
.SH CONFIGURATION VARIABLES
|
|
||||||
The following variables can be set in the environment or in
|
|
||||||
.BR ubuntu\-dev\-tools (5)
|
|
||||||
configuration files.
|
|
||||||
In each case, the script\-specific variable takes precedence over the
|
|
||||||
package\-wide variable.
|
|
||||||
.TP
|
|
||||||
.BR PULL_DEBIAN_SOURCE_DEBIAN_MIRROR ", " UBUNTUTOOLS_DEBIAN_MIRROR
|
|
||||||
The default value for \fB\-\-mirror\fR.
|
|
||||||
|
|
||||||
.SH SEE ALSO
|
|
||||||
.BR dget (1),
|
|
||||||
.BR pull\-debian\-debdiff (1),
|
|
||||||
.BR pull\-lp\-source (1),
|
|
||||||
.BR ubuntu\-dev\-tools (5)
|
|
||||||
|
|
||||||
.SH AUTHOR
|
|
||||||
.PP
|
|
||||||
\fBpull\-debian\-source\fR and this manual page were written by Nathan Handler
|
|
||||||
<nhandler@ubuntu.com>. The manual page was based on Iain Lane's manual page for
|
|
||||||
pull-lp-source.
|
|
||||||
Both are released under the GNU General Public License, version 3 or later.
|
|
1
doc/pull-debian-source.1
Symbolic link
1
doc/pull-debian-source.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-debian-udebs.1
Symbolic link
1
doc/pull-debian-udebs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-lp-ddebs.1
Symbolic link
1
doc/pull-lp-ddebs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-lp-debs.1
Symbolic link
1
doc/pull-lp-debs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
@ -1,68 +0,0 @@
|
|||||||
.TH PULL\-LP\-SOURCE "1" "4 August 2008" "ubuntu-dev-tools"
|
|
||||||
|
|
||||||
.SH NAME
|
|
||||||
pull\-lp\-source \- download a source package from Launchpad
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B pull\-lp\-source \fR[\fIoptions\fR]\fB <\fBsource package\fR> [\fItarget release\fR]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBpull\-lp\-source\fR downloads and extracts the latest version of
|
|
||||||
<\fBsource package\fR> from Launchpad.
|
|
||||||
If the optional parameter [\fItarget release\fR] is specified, the latest
|
|
||||||
version in that release will be downloaded instead.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
Listed below are the command line options for pull\-lp\-source:
|
|
||||||
.TP
|
|
||||||
.B <source package>
|
|
||||||
This is the source package that you would like to be downloaded from Launchpad.
|
|
||||||
.TP
|
|
||||||
.B [target release]
|
|
||||||
This is the release that you would like the source package to be downloaded from.
|
|
||||||
This value defaults to the current development release.
|
|
||||||
.TP
|
|
||||||
.BR \-h ", " \-\-help
|
|
||||||
Display a help message and exit.
|
|
||||||
.TP
|
|
||||||
.B \-m \fIUBUNTU_MIRROR\fR, \fB\-\-mirror\fR=\fIUBUNTU_MIRROR\fR
|
|
||||||
Use the specified Ubuntu mirror.
|
|
||||||
Should be in the form \fBhttp://archive.ubuntu.com/ubuntu\fR.
|
|
||||||
If the package isn't found on this mirror, \fBpull\-lp\-source\fR will
|
|
||||||
fall back to Launchpad, as its name implies.
|
|
||||||
.TP
|
|
||||||
.B \-\-no\-conf
|
|
||||||
Do not read any configuration files, or configuration from environment
|
|
||||||
variables.
|
|
||||||
|
|
||||||
.SH ENVIRONMENT
|
|
||||||
All of the \fBCONFIGURATION VARIABLES\fR below are also supported as
|
|
||||||
environment variables.
|
|
||||||
Variables in the environment take precedence to those in configuration
|
|
||||||
files.
|
|
||||||
.TP
|
|
||||||
.B
|
|
||||||
DIST
|
|
||||||
Specifies the default target.
|
|
||||||
|
|
||||||
.SH CONFIGURATION VARIABLES
|
|
||||||
The following variables can be set in the environment or in
|
|
||||||
.BR ubuntu\-dev\-tools (5)
|
|
||||||
configuration files.
|
|
||||||
In each case, the script\-specific variable takes precedence over the
|
|
||||||
package\-wide variable.
|
|
||||||
.TP
|
|
||||||
.BR PULL_LP_SOURCE_UBUNTU_MIRROR ", " UBUNTUTOOLS_UBUNTU_MIRROR
|
|
||||||
The default value for \fB\-\-mirror\fR.
|
|
||||||
|
|
||||||
.SH SEE ALSO
|
|
||||||
.BR dget (1),
|
|
||||||
.BR pull\-debian\-source (1),
|
|
||||||
.BR pull\-debian\-debdiff (1),
|
|
||||||
.BR ubuntu\-dev\-tools (5)
|
|
||||||
|
|
||||||
.SH AUTHOR
|
|
||||||
.PP
|
|
||||||
\fBpull\-lp\-source\fR and this manual page were written by Iain Lane
|
|
||||||
<iain@orangesquash.org.uk>.
|
|
||||||
Both are released under the GNU General Public License, version 3 or later.
|
|
1
doc/pull-lp-source.1
Symbolic link
1
doc/pull-lp-source.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-lp-udebs.1
Symbolic link
1
doc/pull-lp-udebs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
147
doc/pull-pkg.1
Normal file
147
doc/pull-pkg.1
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
.TH PULL\-PKG "1" "28 August 2017" "ubuntu-dev-tools"
|
||||||
|
|
||||||
|
.SH NAME
|
||||||
|
pull\-pkg \- download a package for Debian, Ubuntu, UCA, or a PPA
|
||||||
|
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B pull\-pkg \fR[\fIoptions\fR]\fR <\fIpackage name\fR>
|
||||||
|
[\fIrelease\fR|\fIversion\fR]
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBpull\-pkg\fR downloads the specified \fIversion\fR of
|
||||||
|
<\fIpackage name\fR>, or the latest version from the
|
||||||
|
specified \fIrelease\fR. To request a version from
|
||||||
|
a particular pocket say \fIrelease\fB\-\fIpocket\fR (with a magic
|
||||||
|
\fB\-release\fR for only the release pocket). If no \fIpocket\fR is
|
||||||
|
specified, all pockets will be searched except -backports.
|
||||||
|
If no \fIversion\fR or \fIrelease\fR is specified, the latest version in
|
||||||
|
the development release will be downloaded.
|
||||||
|
|
||||||
|
There are convenience scripts that set pull type and distribution
|
||||||
|
appropriately: these are
|
||||||
|
\fBpull\-lp\-source\fR, \fBpull\-lp\-debs\fR, \fBpull\-lp\-ddebs\fR,
|
||||||
|
and \fBpull\-lp\-udebs\fR, which all pull Ubuntu packages;
|
||||||
|
\fBpull\-debian\-source\fR, \fBpull\-debian\-debs\fR, \fBpull\-debian\-ddebs\fR,
|
||||||
|
and \fBpull\-debian\-udebs\fR, which all pull Debian packages;
|
||||||
|
\fBpull\-uca\-source\fR, \fBpull\-uca\-debs\fR, \fBpull\-uca\-ddebs\fR,
|
||||||
|
and \fBpull\-uca\-udebs\fR, which all pull Ubuntu Cloud Archive packages;
|
||||||
|
and \fBpull\-ppa\-source\fR, \fBpull\-ppa\-debs\fR, \fBpull\-ppa\-ddebs\fR,
|
||||||
|
and \fBpull\-ppa\-udebs\fR, which all pull from a specified Personal Package
|
||||||
|
Archive on Launchpad. Each script pulls the file type in its name, i.e.
|
||||||
|
\fIsource\fR, \fIdebs\fR, \fIddebs\fR, or \fIudebs\fR.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
Listed below are the command line options for pull\-pkg:
|
||||||
|
.TP
|
||||||
|
.I package name
|
||||||
|
This is name of the package to downloaded.
|
||||||
|
You can use either the source package name, or binary package name.
|
||||||
|
.TP
|
||||||
|
.I version
|
||||||
|
This is the version of the package to downloaded.
|
||||||
|
.TP
|
||||||
|
.I release
|
||||||
|
This is the release to downloaded from.
|
||||||
|
For debian, you can use either the release name like \fBjessie\fR
|
||||||
|
or \fBsid\fR, or you can use the special release names \fBunstable\fR,
|
||||||
|
\fBstable\fR, or \fBtesting\fR.
|
||||||
|
For ubuntu, you can use either the release name like \fBxenial\fR
|
||||||
|
or the release-pocket like \fBxenial-proposed\fR.
|
||||||
|
For ubuntu cloud archive (uca) you can use either the uca release
|
||||||
|
name like \fBmitaka\fR or the ubuntu and uca release names like
|
||||||
|
\fBtrusty-mitaka\fR. Defaults to the current development release.
|
||||||
|
.TP
|
||||||
|
.BR \-h ", " \-\-help
|
||||||
|
Display a help message and exit.
|
||||||
|
.TP
|
||||||
|
.BR \-v ", " \-\-verbose
|
||||||
|
Be verbose about what is being done.
|
||||||
|
.TP
|
||||||
|
.BR \-d ", " \-\-download\-only
|
||||||
|
Do not extract the source package (applies only to source packages).
|
||||||
|
.TP
|
||||||
|
.B \-m \fIMIRROR\fR, \fB\-\-mirror\fR=\fIMIRROR\fR
|
||||||
|
Use the specified mirror server.
|
||||||
|
Should be in the form \fBhttp://archive.ubuntu.com/ubuntu\fR or
|
||||||
|
\fBhttp://deb.debian.org/debian\fR. If not specified or if the
|
||||||
|
package is not found on the specified mirror, this will fall
|
||||||
|
back to the default mirror(s) and/or mirror(s) from environment
|
||||||
|
variables, and then will fall back to Launchpad or Debian Snapshot.
|
||||||
|
This can be specified multiple times to try multiple mirrors.
|
||||||
|
.TP
|
||||||
|
.B \-\-no\-conf
|
||||||
|
Do not use mirrors from the default configuration, or from
|
||||||
|
any environment variables.
|
||||||
|
.TP
|
||||||
|
.B \-a \fIARCH\fR, \fB\-\-arch\fR=\fIARCH\fR
|
||||||
|
Get binary packages from the \fIARCH\fR architecture.
|
||||||
|
Defaults to the local architecture, if it can be deteected.
|
||||||
|
.TP
|
||||||
|
.B \-p \fIPULL\fR, \fB\-\-pull\fR=\fIPULL\fR
|
||||||
|
What to pull: \fBsource\fR, \fBdebs\fR, \fBddebs\fR, \fBudebs\fR,
|
||||||
|
or \fBlist\fR. The \fBlist\fR action only lists all a package's
|
||||||
|
source and binary files, but does not actually download any.
|
||||||
|
Defaults to \fBsource\fR.
|
||||||
|
.TP
|
||||||
|
.B \-D \fIDISTRO\fR, \fB\-\-distro\fR=\fIDISTRO\fR
|
||||||
|
Pull from: \fBdebian\fR, \fBuca\fR, \fBubuntu\fR, or a \fBppa\fR.
|
||||||
|
\fBlp\fR can be used instead of \fBubuntu\fR.
|
||||||
|
Any string containing \fBcloud\fR can be used instead of \fBuca\fR.
|
||||||
|
If pulling from a ppa, you must specify the PPA. Defaults to \fBubuntu\fR.
|
||||||
|
.TP
|
||||||
|
.B \-\-ppa\fR=ppa:\fIUSER/NAME\fR
|
||||||
|
Applies only when \fBdistro\fR is \fIppa\fR. Can be provided either as
|
||||||
|
a value to the \fB\-\-ppa\fR option parameter, or as a plain option
|
||||||
|
(like \fIrelease\fR or \fIversion\fR). When specified as a plain option,
|
||||||
|
the form must be \fBppa:USER/NAME\fR; when specified as a value to the
|
||||||
|
\fB\-\-ppa\fR option parameter, the leading \fBppa:\fR is optional.
|
||||||
|
|
||||||
|
.SH ENVIRONMENT
|
||||||
|
All of the \fBCONFIGURATION VARIABLES\fR below are also supported as
|
||||||
|
environment variables.
|
||||||
|
Variables in the environment take precedence to those in configuration
|
||||||
|
files.
|
||||||
|
|
||||||
|
.SH CONFIGURATION VARIABLES
|
||||||
|
The following variables can be set in the environment or in
|
||||||
|
.BR ubuntu\-dev\-tools (5)
|
||||||
|
configuration files.
|
||||||
|
In each case, the script\-specific variable takes precedence over the
|
||||||
|
package\-wide variable.
|
||||||
|
.TP
|
||||||
|
.BR UBUNTUTOOLS_UBUNTU_MIRROR
|
||||||
|
The default mirror.
|
||||||
|
.TP
|
||||||
|
.BR PULL_PKG_UBUNTU_MIRROR
|
||||||
|
The default mirror when using the \fBpull\-pkg\fR script.
|
||||||
|
.TP
|
||||||
|
.BR PULL_[LP|DEBIAN|PPA|UCA]_[SOURCE|DEBS|DDEBS|UDEBS]_MIRROR
|
||||||
|
The default mirror when using the associated script.
|
||||||
|
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR dget (1),
|
||||||
|
.BR pull\-lp\-source (1),
|
||||||
|
.BR pull\-lp\-debs (1),
|
||||||
|
.BR pull\-lp\-ddebs (1),
|
||||||
|
.BR pull\-lp\-udebs (1),
|
||||||
|
.BR pull\-debian\-source (1),
|
||||||
|
.BR pull\-debian\-debs (1),
|
||||||
|
.BR pull\-debian\-ddebs (1),
|
||||||
|
.BR pull\-debian\-udebs (1),
|
||||||
|
.BR pull\-ppa\-source (1),
|
||||||
|
.BR pull\-ppa\-debs (1),
|
||||||
|
.BR pull\-ppa\-ddebs (1),
|
||||||
|
.BR pull\-ppa\-udebs (1),
|
||||||
|
.BR pull\-uca\-source (1),
|
||||||
|
.BR pull\-uca\-debs (1),
|
||||||
|
.BR pull\-uca\-ddebs (1),
|
||||||
|
.BR pull\-uca\-udebs (1),
|
||||||
|
.BR pull\-debian\-debdiff (1),
|
||||||
|
.BR ubuntu\-dev\-tools (5)
|
||||||
|
|
||||||
|
.SH AUTHOR
|
||||||
|
.PP
|
||||||
|
\fBpull\-pkg\fR was written by Dan Streetman <ddstreet@canonical.com>,
|
||||||
|
based on the original \fBpull\-lp\-source\fR; it and this manual page
|
||||||
|
were written by Iain Lane <iain@orangesquash.org.uk>.
|
||||||
|
All are released under the GNU General Public License, version 3 or later.
|
1
doc/pull-ppa-ddebs.1
Symbolic link
1
doc/pull-ppa-ddebs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-ppa-debs.1
Symbolic link
1
doc/pull-ppa-debs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-ppa-source.1
Symbolic link
1
doc/pull-ppa-source.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-ppa-udebs.1
Symbolic link
1
doc/pull-ppa-udebs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
@ -1,27 +0,0 @@
|
|||||||
.TH PULL\-REVU\-SOURCE "1" "30 August 2009" "ubuntu-dev-tools"
|
|
||||||
|
|
||||||
.SH NAME
|
|
||||||
pull\-revu\-source \- download a source package from REVU
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B pull\-revu\-source \fR[\fB\-h\fR]\fB <\fBsource package\fR>
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBpull\-revu\-source\fR downloads and extracts the latest version of
|
|
||||||
<\fBsource package\fR> from REVU.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
Listed below are the command line options for pull\-revu\-source:
|
|
||||||
.TP
|
|
||||||
.B \-h, \-\-help
|
|
||||||
Display the usage instructions and exit.
|
|
||||||
.TP
|
|
||||||
.B <source package>
|
|
||||||
This is the source package that you would like to be downloaded from Debian.
|
|
||||||
|
|
||||||
.SH AUTHOR
|
|
||||||
.PP
|
|
||||||
\fBpull\-revu\-source\fR and this manual page were written by Nathan Handler
|
|
||||||
<nhandler@ubuntu.com>. \fBpull\-revu\-source\fR is based on \fBrevupull\fR in
|
|
||||||
\fBkubuntu\-dev\-tools\fR, written by Harald Sitter <apachelogger@ubuntu.com>.
|
|
||||||
Both are released under the GNU General Public License, version 3 or later.
|
|
1
doc/pull-uca-ddebs.1
Symbolic link
1
doc/pull-uca-ddebs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-uca-debs.1
Symbolic link
1
doc/pull-uca-debs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-uca-source.1
Symbolic link
1
doc/pull-uca-source.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
1
doc/pull-uca-udebs.1
Symbolic link
1
doc/pull-uca-udebs.1
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
pull-pkg.1
|
57
doc/requestbackport.1
Normal file
57
doc/requestbackport.1
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
.\" Copyright (C) 2011, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
|
.\"
|
||||||
|
.\" Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
.\" purpose with or without fee is hereby granted, provided that the above
|
||||||
|
.\" copyright notice and this permission notice appear in all copies.
|
||||||
|
.\"
|
||||||
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
.\" REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
.\" AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
.\" INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
.\" LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
.\" OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
.\" PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
.TH requestbackport 1 "November 2011" ubuntu\-dev\-tools
|
||||||
|
|
||||||
|
.SH NAME
|
||||||
|
requestbackport \- File a backport request bug
|
||||||
|
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B requestbackport \fR[\fIoptions\fR] \fIpackage\fR
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Determine the intermediate releases that \fIpackage\fR needs to be
|
||||||
|
backported to, list all reverse\-dependencies, and file the backporting
|
||||||
|
request.
|
||||||
|
\fBrequestbackport\fR will include a testing checklist in the bug.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
\fB\-d\fR \fIDEST\fR, \fB\-\-destination\fR=\fIDEST\fR
|
||||||
|
Backport to \fIDEST\fR release and necessary intermediate
|
||||||
|
releases. Default: current stable release.
|
||||||
|
.TP
|
||||||
|
\fB\-s\fR \fISOURCE\fR, \fB\-\-source\fR=\fISOURCE\fR
|
||||||
|
Backport from \fISOURCE\fR release.
|
||||||
|
Default: current development release.
|
||||||
|
.TP
|
||||||
|
\fB\-l\fR \fIINSTANCE\fR, \fB\-\-lpinstance\fR=\fIINSTANCE\fR
|
||||||
|
Launchpad instance to connect to.
|
||||||
|
Default: \fBproduction\fR.
|
||||||
|
.TP
|
||||||
|
\fB\-\-no\-conf\fR
|
||||||
|
Don't read config files or environment variables
|
||||||
|
.TP
|
||||||
|
\fB\-h\fR, \fB\-\-help\fR
|
||||||
|
Display a help message and exit.
|
||||||
|
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR backportpackage (1),
|
||||||
|
.BR reverse\-depends (1),
|
||||||
|
.BR https://wiki.ubuntu.com/UbuntuBackports .
|
||||||
|
|
||||||
|
.SH AUTHORS
|
||||||
|
\fBrequestbackport\fR and this manpage were written by Stefano Rivera
|
||||||
|
<stefanor@ubuntu.com>.
|
||||||
|
.PP
|
||||||
|
Both are released under the terms of the ISC License.
|
@ -11,14 +11,10 @@ requestsync \- helper to file sync requests for Ubuntu
|
|||||||
\fBrequestsync\fR looks at the versions of <source package> in Debian and
|
\fBrequestsync\fR looks at the versions of <source package> in Debian and
|
||||||
Ubuntu and prompts for an explanation of why the Ubuntu changes (if there
|
Ubuntu and prompts for an explanation of why the Ubuntu changes (if there
|
||||||
are any) should be dropped.
|
are any) should be dropped.
|
||||||
The changelog entry is then downloaded from packages.debian.org.
|
The changelog entry is then downloaded from packages.debian.org, and the
|
||||||
If the sync request is being filed per email (default), a prompt for your
|
sync request bug is filed in launchpad.
|
||||||
GPG passphrase follows so that it can sign the mail and send it off to
|
Alternatively, the sync request can be filed by GPG\-signed email (option
|
||||||
Launchpad.
|
\fB\-\-email\fR).
|
||||||
Alternatively a sync request can be filed directly using the launchpadlib
|
|
||||||
Python module (option \fB\-\-lp\fR).
|
|
||||||
\fBrequestsync\fR falls back to mail the sync request if submitting using
|
|
||||||
the launchpadlib module fails.
|
|
||||||
|
|
||||||
.PP
|
.PP
|
||||||
\fBrequestsync\fR checks if you have the permissions to request the sync from
|
\fBrequestsync\fR checks if you have the permissions to request the sync from
|
||||||
@ -28,13 +24,17 @@ you don't have upload permissions, the script will subscribe the necessary
|
|||||||
team with approval rights to the bug report for you.
|
team with approval rights to the bug report for you.
|
||||||
|
|
||||||
This check is only performed if \fBrequestsync\fR is allowed to use the LP API
|
This check is only performed if \fBrequestsync\fR is allowed to use the LP API
|
||||||
(option \fB\-\-lp\fR). In the other case \fBrequestsync\fR relies on that you
|
(not email submission). In the other case \fBrequestsync\fR relies on that you
|
||||||
answer the question about upload permissions honestly to determine if a team
|
answer the question about upload permissions honestly to determine if a team
|
||||||
with approval rights is to be subscribed to the bug.
|
with approval rights is to be subscribed to the bug.
|
||||||
|
|
||||||
|
If you have permission to upload the package directly, then you may prefer
|
||||||
|
to use \fBsyncpackage\fR instead to copy the package using the Launchpad
|
||||||
|
API. At some future point, \fBrequestsync\fR will be changed to do this
|
||||||
|
automatically.
|
||||||
|
|
||||||
.PP
|
.PP
|
||||||
\fBrequestsync\fR uses launchpadlib authentication to file its requests. Please
|
\fBrequestsync\fR uses launchpadlib authentication to file its requests.
|
||||||
see manage-credentials(1) for more information.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
Listed below are the command line options for requestsync:
|
Listed below are the command line options for requestsync:
|
||||||
@ -54,15 +54,21 @@ attempt to look it up in Ubuntu since it will not exist.
|
|||||||
Specifies your GPG key.
|
Specifies your GPG key.
|
||||||
This is only used if the sync request is mailed to Launchpad.
|
This is only used if the sync request is mailed to Launchpad.
|
||||||
.TP
|
.TP
|
||||||
.B \-\-lp
|
.B \-\-email
|
||||||
Use the launchpadlib Python module (packaged as python\-launchpadlib) to
|
Use GPG\-signed email to file the bug, rather than launchpadlib.
|
||||||
file the sync request in Launchpad.
|
|
||||||
.TP
|
.TP
|
||||||
.B \-s
|
.B \-s
|
||||||
Specifies that you require sponsorship.
|
Specifies that you require sponsorship.
|
||||||
You need this option if you don't have upload permissions for that package.
|
You need this option if you don't have upload permissions for that package.
|
||||||
This disables the upload permissions check described above.
|
This disables the upload permissions check described above.
|
||||||
.TP
|
.TP
|
||||||
|
.B \-C
|
||||||
|
Allow changelog to be manually filled in when missing.
|
||||||
|
\fBrequestsync\fR gets Debian changelogs from packages.debian.org, which
|
||||||
|
isn't in sync with the Debian archive.
|
||||||
|
To request a sync before the changelog is available, pass this option,
|
||||||
|
and provide the changelog entries yourself.
|
||||||
|
.TP
|
||||||
.B \-e
|
.B \-e
|
||||||
Use this flag after FeatureFreeze for non-bug fix syncs. \fBrequestsync\fR will
|
Use this flag after FeatureFreeze for non-bug fix syncs. \fBrequestsync\fR will
|
||||||
subscribe ubuntu-release team instead of sponsorship team.
|
subscribe ubuntu-release team instead of sponsorship team.
|
||||||
@ -105,7 +111,8 @@ files.
|
|||||||
.TP
|
.TP
|
||||||
.B REQUESTSYNC_SMTP_SERVER
|
.B REQUESTSYNC_SMTP_SERVER
|
||||||
Set which SMTP server to use when sending mail.
|
Set which SMTP server to use when sending mail.
|
||||||
If unspecified this defaults to fiordland.ubuntu.com.
|
If unspecified this defaults to launchpad's SMTP servers (the
|
||||||
|
eventual destination).
|
||||||
.TP
|
.TP
|
||||||
.B REQUESTSYNC_SMTP_PORT
|
.B REQUESTSYNC_SMTP_PORT
|
||||||
Sets which port of the SMTP server to use. Default is 25.
|
Sets which port of the SMTP server to use. Default is 25.
|
||||||
@ -114,13 +121,17 @@ Sets which port of the SMTP server to use. Default is 25.
|
|||||||
Sets the username and password to use when authenticating to the SMTP server.
|
Sets the username and password to use when authenticating to the SMTP server.
|
||||||
.TP
|
.TP
|
||||||
.BR REQUESTSYNC_USE_LPAPI
|
.BR REQUESTSYNC_USE_LPAPI
|
||||||
Setting this to \fIyes\fR is equivalent to running with \fB--lp\fR.
|
Setting this to \fIno\fR is equivalent to running with \fB--email\fR.
|
||||||
.TP
|
.TP
|
||||||
.BR REQUESTSYNC_LPINSTANCE ", " UBUNTUTOOLS_LPINSTANCE
|
.BR REQUESTSYNC_LPINSTANCE ", " UBUNTUTOOLS_LPINSTANCE
|
||||||
The default value for \fB--lpinstance\fR.
|
The default value for \fB--lpinstance\fR.
|
||||||
|
.TP
|
||||||
|
.BR REQUESTSYNC_KEYID ", " UBUNTUTOOLS_KEYID
|
||||||
|
The default value for \fB-k\fR.
|
||||||
|
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR rmadison (1),
|
.BR rmadison (1),
|
||||||
|
.BR syncpackage (1),
|
||||||
.BR ubuntu\-dev\-tools (5)
|
.BR ubuntu\-dev\-tools (5)
|
||||||
|
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
|
@ -1,172 +0,0 @@
|
|||||||
.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05)
|
|
||||||
.\"
|
|
||||||
.\" Standard preamble:
|
|
||||||
.\" ========================================================================
|
|
||||||
.de Sp \" Vertical space (when we can't use .PP)
|
|
||||||
.if t .sp .5v
|
|
||||||
.if n .sp
|
|
||||||
..
|
|
||||||
.de Vb \" Begin verbatim text
|
|
||||||
.ft CW
|
|
||||||
.nf
|
|
||||||
.ne \\$1
|
|
||||||
..
|
|
||||||
.de Ve \" End verbatim text
|
|
||||||
.ft R
|
|
||||||
.fi
|
|
||||||
..
|
|
||||||
.\" Set up some character translations and predefined strings. \*(-- will
|
|
||||||
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
|
|
||||||
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
|
|
||||||
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
|
|
||||||
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
|
|
||||||
.\" nothing in troff, for use with C<>.
|
|
||||||
.tr \(*W-
|
|
||||||
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
|
|
||||||
.ie n \{\
|
|
||||||
. ds -- \(*W-
|
|
||||||
. ds PI pi
|
|
||||||
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
|
|
||||||
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
|
||||||
. ds L" ""
|
|
||||||
. ds R" ""
|
|
||||||
. ds C` ""
|
|
||||||
. ds C' ""
|
|
||||||
'br\}
|
|
||||||
.el\{\
|
|
||||||
. ds -- \|\(em\|
|
|
||||||
. ds PI \(*p
|
|
||||||
. ds L" ``
|
|
||||||
. ds R" ''
|
|
||||||
'br\}
|
|
||||||
.\"
|
|
||||||
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
|
||||||
.ie \n(.g .ds Aq \(aq
|
|
||||||
.el .ds Aq '
|
|
||||||
.\"
|
|
||||||
.\" If the F register is turned on, we'll generate index entries on stderr for
|
|
||||||
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
|
||||||
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
|
||||||
.\" output yourself in some meaningful fashion.
|
|
||||||
.ie \nF \{\
|
|
||||||
. de IX
|
|
||||||
. tm Index:\\$1\t\\n%\t"\\$2"
|
|
||||||
..
|
|
||||||
. nr % 0
|
|
||||||
. rr F
|
|
||||||
.\}
|
|
||||||
.el \{\
|
|
||||||
. de IX
|
|
||||||
..
|
|
||||||
.\}
|
|
||||||
.\"
|
|
||||||
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
|
||||||
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
|
||||||
. \" fudge factors for nroff and troff
|
|
||||||
.if n \{\
|
|
||||||
. ds #H 0
|
|
||||||
. ds #V .8m
|
|
||||||
. ds #F .3m
|
|
||||||
. ds #[ \f1
|
|
||||||
. ds #] \fP
|
|
||||||
.\}
|
|
||||||
.if t \{\
|
|
||||||
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
|
|
||||||
. ds #V .6m
|
|
||||||
. ds #F 0
|
|
||||||
. ds #[ \&
|
|
||||||
. ds #] \&
|
|
||||||
.\}
|
|
||||||
. \" simple accents for nroff and troff
|
|
||||||
.if n \{\
|
|
||||||
. ds ' \&
|
|
||||||
. ds ` \&
|
|
||||||
. ds ^ \&
|
|
||||||
. ds , \&
|
|
||||||
. ds ~ ~
|
|
||||||
. ds /
|
|
||||||
.\}
|
|
||||||
.if t \{\
|
|
||||||
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
|
|
||||||
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
|
|
||||||
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
|
|
||||||
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
|
|
||||||
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
|
|
||||||
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
|
|
||||||
.\}
|
|
||||||
. \" troff and (daisy-wheel) nroff accents
|
|
||||||
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
|
|
||||||
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
|
|
||||||
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
|
|
||||||
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
|
|
||||||
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
|
|
||||||
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
|
|
||||||
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
|
|
||||||
.ds ae a\h'-(\w'a'u*4/10)'e
|
|
||||||
.ds Ae A\h'-(\w'A'u*4/10)'E
|
|
||||||
. \" corrections for vroff
|
|
||||||
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
|
|
||||||
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
|
|
||||||
. \" for low resolution devices (crt and lpr)
|
|
||||||
.if \n(.H>23 .if \n(.V>19 \
|
|
||||||
\{\
|
|
||||||
. ds : e
|
|
||||||
. ds 8 ss
|
|
||||||
. ds o a
|
|
||||||
. ds d- d\h'-1'\(ga
|
|
||||||
. ds D- D\h'-1'\(hy
|
|
||||||
. ds th \o'bp'
|
|
||||||
. ds Th \o'LP'
|
|
||||||
. ds ae ae
|
|
||||||
. ds Ae AE
|
|
||||||
.\}
|
|
||||||
.rm #[ #] #H #V #F C
|
|
||||||
.\" ========================================================================
|
|
||||||
.\"
|
|
||||||
.IX Title "BUILD-RDEPS 1"
|
|
||||||
.TH BUILD-RDEPS 1 "2008-08-14" "Debian Utilities" " "
|
|
||||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
|
||||||
.\" way too many mistakes in technical documents.
|
|
||||||
.if n .ad l
|
|
||||||
.nh
|
|
||||||
.SH "NAME"
|
|
||||||
build\-rdeps \- find packages that depend on a specific package to build (reverse build depends)
|
|
||||||
.SH "SYNOPSIS"
|
|
||||||
.IX Header "SYNOPSIS"
|
|
||||||
\&\fBubuild-rdeps\fR \fIpackage\fR
|
|
||||||
.SH "DESCRIPTION"
|
|
||||||
.IX Header "DESCRIPTION"
|
|
||||||
\&\fBubuild-rdeps\fR searches for all packages that build-depend on the specified package.
|
|
||||||
.SH "OPTIONS"
|
|
||||||
.IX Header "OPTIONS"
|
|
||||||
.IP "\fB\-u\fR \fB\-\-update\fR" 4
|
|
||||||
.IX Item "-u --update"
|
|
||||||
Run apt-get update before searching for build-depends.
|
|
||||||
.IP "\fB\-s\fR \fB\-\-sudo\fR" 4
|
|
||||||
.IX Item "-s --sudo"
|
|
||||||
Use sudo when running apt-get update. Has no effect if \-u is omitted.
|
|
||||||
.IP "\fB\-\-distribution\fR" 4
|
|
||||||
.IX Item "--distribution"
|
|
||||||
Select another distribution, which is searched for build-depends.
|
|
||||||
.IP "\fB\-m\fR \fB\-\-print\-maintainer\fR" 4
|
|
||||||
.IX Item "-m --print-maintainer"
|
|
||||||
Print the value of the maintainer field for each package.
|
|
||||||
.IP "\fB\-d\fR \fB\-\-debug\fR" 4
|
|
||||||
.IX Item "-d --debug"
|
|
||||||
Run the debug mode
|
|
||||||
.IP "\fB\-\-help\fR" 4
|
|
||||||
.IX Item "--help"
|
|
||||||
Show the usage information.
|
|
||||||
.IP "\fB\-\-version\fR" 4
|
|
||||||
.IX Item "--version"
|
|
||||||
Show the version information.
|
|
||||||
.SH "LICENSE"
|
|
||||||
.IX Header "LICENSE"
|
|
||||||
This code is copyright by Patrick Schoenfeld
|
|
||||||
<schoenfeld@in\-medias\-res.com>, all rights reserved.
|
|
||||||
This program comes with \s-1ABSOLUTELEY\s0 \s-1NO\s0 \s-1WARRANTY\s0.
|
|
||||||
You are free to redistribute this code under the terms of the
|
|
||||||
\&\s-1GNU\s0 General Public License, version 2 or later.
|
|
||||||
.SH "AUTHOR"
|
|
||||||
.IX Header "AUTHOR"
|
|
||||||
Patrick Schoenfeld <schoenfeld@in\-medias\-res.com>
|
|
81
doc/reverse-depends.1
Normal file
81
doc/reverse-depends.1
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
.\" Copyright (C) 2011, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
|
.\"
|
||||||
|
.\" Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
.\" purpose with or without fee is hereby granted, provided that the above
|
||||||
|
.\" copyright notice and this permission notice appear in all copies.
|
||||||
|
.\"
|
||||||
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
.\" REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
.\" AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
.\" INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
.\" LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
.\" OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
.\" PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
.TH reverse\-depends 1 "November 2011" ubuntu\-dev\-tools
|
||||||
|
|
||||||
|
.SH NAME
|
||||||
|
reverse\-depends \- List the reverse\-dependencies (or
|
||||||
|
build\-dependencies) of a package
|
||||||
|
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B reverse\-depends \fR[\fIoptions\fR] \fIpackage
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
List reverse\-dependencies (or build\-dependencies) of \fIpackage\fR.
|
||||||
|
If the package name is prefixed with \fBsrc:\fR then the
|
||||||
|
reverse\-dependencies of all the binary packages that the specified
|
||||||
|
source package builds will be listed.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
\fB\-r\fR \fIRELEASE\fR, \fB\-\-release\fR=\fIRELEASE\fR
|
||||||
|
Query dependencies in \fIRELEASE\fR.
|
||||||
|
Default: current development release.
|
||||||
|
.TP
|
||||||
|
\fB\-R\fR, \fB\-\-without\-recommends\fR
|
||||||
|
Only consider Depends relationships, not Recommends.
|
||||||
|
.TP
|
||||||
|
\fB\-s\fR, \fB\-\-with\-suggests\fR
|
||||||
|
Also consider Suggests relationships.
|
||||||
|
.TP
|
||||||
|
\fB\-b\fR, \fB\-\-build\-depends\fR
|
||||||
|
Query build dependencies.
|
||||||
|
Synonym for \fB\-\-arch\fR=\fIsource\fR.
|
||||||
|
.TP
|
||||||
|
\fB\-a\fR \fIARCH\fR, \fB\-\-arch\fR=\fIARCH\fR
|
||||||
|
Query dependencies in \fIARCH\fR.
|
||||||
|
Besides valid architecture names, the special values \fBany\fR and
|
||||||
|
\fBsource\fR may be used.
|
||||||
|
\fBany\fR displays all reverse dependencies, the union across all
|
||||||
|
architecture.
|
||||||
|
\fBsource\fR displays build dependencies.
|
||||||
|
Default: \fBany\fR.
|
||||||
|
.TP
|
||||||
|
\fB\-c\fR \fICOMPONENT\fR, \fB\-\-component\fR=\fICOMPONENT\fR
|
||||||
|
Only consider reverse\-dependencies in \fICOMPONENT\fR. Can
|
||||||
|
be specified multiple times.
|
||||||
|
Default: all components.
|
||||||
|
.TP
|
||||||
|
\fB\-l\fR, \fB\-\-list\fR
|
||||||
|
Display a simple, machine\-readable list.
|
||||||
|
.TP
|
||||||
|
\fB\-u\fR \fIURL\fR, \fB\-\-service\-url\fR=\fIURL\fR
|
||||||
|
Reverse Dependencies web\-service \fIURL\fR.
|
||||||
|
Default: UbuntuWire's service at
|
||||||
|
\fBhttp://qa.ubuntuwire.org/rdepends/\fR.
|
||||||
|
.TP
|
||||||
|
\fB\-h\fR, \fB\-\-help\fR
|
||||||
|
Display a help message and exit
|
||||||
|
|
||||||
|
.SH EXAMPLES
|
||||||
|
All reverse dependencies of source package bash:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
.B reverse\-depends src:bash
|
||||||
|
.fi
|
||||||
|
|
||||||
|
.SH AUTHORS
|
||||||
|
\fBreverse\-depends\fR and this manpage were written by Stefano Rivera
|
||||||
|
<stefanor@ubuntu.com>.
|
||||||
|
.PP
|
||||||
|
Both are released under the terms of the ISC License.
|
15
doc/running-autopkgtests.1
Normal file
15
doc/running-autopkgtests.1
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
.TH running\-autopkgtests "1" "18 January 2024" "ubuntu-dev-tools"
|
||||||
|
.SH NAME
|
||||||
|
running\-autopkgtests \- dumps a list of currently running autopkgtests
|
||||||
|
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B running\-autopkgtests
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Dumps a list of currently running and queued tests in Autopkgtest.
|
||||||
|
Pass --running to only see running tests, or --queued to only see
|
||||||
|
queued tests. Passing both will print both, which is the default behavior.
|
||||||
|
|
||||||
|
.SH AUTHOR
|
||||||
|
.B running\-autopkgtests
|
||||||
|
was written by Chris Peterson <chris.peterson@canonical.com>.
|
60
doc/seeded-in-ubuntu.1
Normal file
60
doc/seeded-in-ubuntu.1
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
.\" Copyright (C) 2011, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
|
.\"
|
||||||
|
.\" Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
.\" purpose with or without fee is hereby granted, provided that the above
|
||||||
|
.\" copyright notice and this permission notice appear in all copies.
|
||||||
|
.\"
|
||||||
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
.\" REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
.\" AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
.\" INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
.\" LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
.\" OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
.\" PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
.TH seeded\-in\-ubuntu 1 "December 2011" ubuntu\-dev\-tools
|
||||||
|
|
||||||
|
.SH NAME
|
||||||
|
seeded\-in\-ubuntu \- Determine whether a package is safe to upload
|
||||||
|
during a freeze
|
||||||
|
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B seeded\-in\-ubuntu \fR[\fIoptions\fR] \fIpackage\fR...
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Lists all the current daily images containing the specified packages.
|
||||||
|
Or whether the package is part of the supported seed.
|
||||||
|
.PP
|
||||||
|
If it isn't on an image, it should be safe to upload.
|
||||||
|
During the final freeze, one should avoid packages in the supported seed
|
||||||
|
too.
|
||||||
|
.PP
|
||||||
|
An index of the current manifests is downloaded from UbuntuWire.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
\fB\-b\fR, \fB\-\-binary\fR
|
||||||
|
The packages specified are binary packages.
|
||||||
|
This is faster than source packages, as otherwise we must query LP to
|
||||||
|
determine the binary packages that every specified source package
|
||||||
|
builds.
|
||||||
|
.TP
|
||||||
|
\fB\-u\fR \fIURL\fR, \fB\-\-data\-url\fR=\fIURL\fR
|
||||||
|
URL for index of seeded packages.
|
||||||
|
Default: UbuntuWire's service at
|
||||||
|
\fBhttp://qa.ubuntuwire.org/ubuntu-seeded-packages/seeded.json.gz\fR.
|
||||||
|
.TP
|
||||||
|
\fB\-h\fR, \fB\-\-help\fR
|
||||||
|
Display a help message and exit
|
||||||
|
|
||||||
|
.SH EXAMPLES
|
||||||
|
All the images that contain unity:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
.B seeded\-in\-ubuntu -b unity
|
||||||
|
.fi
|
||||||
|
|
||||||
|
.SH AUTHORS
|
||||||
|
\fBseeded\-in\-ubuntu\fR and this manpage were written by Stefano Rivera
|
||||||
|
<stefanor@ubuntu.com>.
|
||||||
|
.PP
|
||||||
|
Both are released under the terms of the ISC License.
|
@ -1,12 +1,18 @@
|
|||||||
.TH PULL-DEBIAN-DEBDIFF "1" "June 2010" "ubuntu-dev-tools"
|
.TH PULL-DEBIAN-DEBDIFF "1" "June 2010" "ubuntu-dev-tools"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
\fBsetup-packaging-environment\fR \- helps to get started with Ubuntu development
|
\fBsetup-packaging-environment\fR \- helps one to get started with Ubuntu development
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
\fBsetup-packaging-environment\fR
|
\fBsetup-packaging-environment\fR
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fBsetup-packaging-environment\fR aims to make it more straightforward for new contributors to get their Ubuntu installation ready for packaging work. It ensures that all four components from Ubuntu's official repositories are enabled along with their corresponding source repositories. It also installs a minimal set of packages needed for Ubuntu packaging work (ubuntu-dev-tools, devscripts, debhelper, cdbs, patchutils, pbuilder, and build-essential). Finally, it assists in defining the DEBEMAIL and DEBFULLNAME environment variables.
|
\fBsetup-packaging-environment\fR aims to make it more straightforward for new
|
||||||
|
contributors to get their Ubuntu installation ready for packaging work. It
|
||||||
|
ensures that all four components from Ubuntu's official repositories are enabled
|
||||||
|
along with their corresponding source repositories. It also installs a minimal
|
||||||
|
set of packages needed for Ubuntu packaging work (ubuntu-dev-tools, devscripts,
|
||||||
|
debhelper, patchutils, pbuilder, and build-essential). Finally, it assists
|
||||||
|
in defining the DEBEMAIL and DEBFULLNAME environment variables.
|
||||||
|
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
\fBsetup-packaging-environment\fR was written by Siegfried-A. Gevatter <rainct@ubuntu.com>.
|
\fBsetup-packaging-environment\fR was written by Siegfried-A. Gevatter <rainct@ubuntu.com>.
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
.TH sponsor\-patch "1" "September 21 2010" "ubuntu-dev-tools"
|
.TH sponsor\-patch "1" "September 21 2010" "ubuntu-dev-tools"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
sponsor\-patch \- Pull a patch / merge request from Launchpad,
|
sponsor\-patch \- Prepare, test\-build, and sponsor an upload.
|
||||||
test-build it, and upload.
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B sponsor\-patch \fR[\fIoptions\fR] \fIbug
|
.B sponsor\-patch \fR[\fIoptions\fR] \fIbug
|
||||||
@ -15,8 +14,8 @@ builds it, runs
|
|||||||
.BR lintian (1)
|
.BR lintian (1)
|
||||||
and, after review and confirmation, can upload it.
|
and, after review and confirmation, can upload it.
|
||||||
|
|
||||||
\fBsponsor\-patch\fR can be used for sponsoring patches, merges from
|
\fBsponsor\-patch\fR can be used for sponsoring patches, syncs and
|
||||||
Debian, SRUs, and creating debdiffs from patches.
|
merges from Debian, SRUs, and creating debdiffs from patches.
|
||||||
If \fIbug\fR has multiple patches or branches linked, it will prompt the
|
If \fIbug\fR has multiple patches or branches linked, it will prompt the
|
||||||
user to select one.
|
user to select one.
|
||||||
The same applies to bug tasks.
|
The same applies to bug tasks.
|
||||||
@ -43,7 +42,7 @@ The changelog target must be valid.
|
|||||||
The changelog timestamp is touched.
|
The changelog timestamp is touched.
|
||||||
|
|
||||||
.PP
|
.PP
|
||||||
Should any checks (or the build fail), the user has an option to edit
|
Should any checks (or the build) fail, the user has an option to edit
|
||||||
the patched source and try building it again.
|
the patched source and try building it again.
|
||||||
.PP
|
.PP
|
||||||
Unless a working directory is specified, the sources and patches will be
|
Unless a working directory is specified, the sources and patches will be
|
||||||
@ -51,16 +50,22 @@ downloaded into a temporary directory in \fB/tmp\fR, which is removed once the
|
|||||||
script finishes running.
|
script finishes running.
|
||||||
The output of the build tool will be placed in \fIworkdir\fR/\fBbuildresult/\fR.
|
The output of the build tool will be placed in \fIworkdir\fR/\fBbuildresult/\fR.
|
||||||
|
|
||||||
|
.PP
|
||||||
|
One of \fB\-\-upload\fR, \fB\-\-workdir\fR, or \fB--sponsor\fR must be
|
||||||
|
specified.
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
.BR \-b ", " \-\-build
|
.BR \-b ", " \-\-build
|
||||||
Build the package with the specified builder. Note for \fBpbuilder\fR(8) users:
|
Build the package with the specified builder. Note for \fBpbuilder\fR(8) and
|
||||||
|
\fBcowbuilder\fR(8) users:
|
||||||
This assumes the common configuration, where the \fBARCH\fR and \fBDIST\fR
|
This assumes the common configuration, where the \fBARCH\fR and \fBDIST\fR
|
||||||
environment is read by \fBpbuilderrc\fR(5) to select the correct base image.
|
environment is read by \fBpbuilderrc\fR(5) to select the correct base image.
|
||||||
.TP
|
.TP
|
||||||
.B \-B \fIBUILDER\fR, \fB\-\-builder\fR=\fIBUILDER
|
.B \-B \fIBUILDER\fR, \fB\-\-builder\fR=\fIBUILDER
|
||||||
Use the specify builder to build the package.
|
Use the specify builder to build the package.
|
||||||
Supported are \fBpbuilder\fR(8), \fBpbuilder-dist\fR(1), and \fBsbuild\fR(1).
|
Supported are \fBcowbuilder\fR(8), \fBcowbuilder-dist\fR(1), \fBpbuilder\fR(8),
|
||||||
|
\fBpbuilder-dist\fR(1), and \fBsbuild\fR(1).
|
||||||
The default is \fBpbuilder\fR(8).
|
The default is \fBpbuilder\fR(8).
|
||||||
.TP
|
.TP
|
||||||
.BR \-e ", " \-\-edit
|
.BR \-e ", " \-\-edit
|
||||||
@ -121,6 +126,9 @@ The default value for \fB--update\fR.
|
|||||||
.TP
|
.TP
|
||||||
.BR SPONSOR_PATCH_WORKDIR ", " UBUNTUTOOLS_WORKDIR
|
.BR SPONSOR_PATCH_WORKDIR ", " UBUNTUTOOLS_WORKDIR
|
||||||
The default value for \fB--workdir\fR.
|
The default value for \fB--workdir\fR.
|
||||||
|
.TP
|
||||||
|
.BR SPONSOR_PATCH_KEYID ", " UBUNTUTOOLS_KEYID
|
||||||
|
The default value for \fB--key\fR.
|
||||||
|
|
||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
Test-building and sponsoring an upload of bug \fB1234\fR:
|
Test-building and sponsoring an upload of bug \fB1234\fR:
|
||||||
@ -143,6 +151,8 @@ Performing a test build of bug \fB1234\fR in your PPA:
|
|||||||
.BR dput (1),
|
.BR dput (1),
|
||||||
.BR edit-patch (1),
|
.BR edit-patch (1),
|
||||||
.BR lintian (1),
|
.BR lintian (1),
|
||||||
|
.BR cowbuilder (8),
|
||||||
|
.BR cowbuilder-dist (1),
|
||||||
.BR pbuilder (8),
|
.BR pbuilder (8),
|
||||||
.BR pbuilder-dist (1),
|
.BR pbuilder-dist (1),
|
||||||
.BR sbuild (1),
|
.BR sbuild (1),
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
.\" Copyright (c) 2010, Benjamin Drung <bdrung@ubuntu.com>
|
|
||||||
.\"
|
|
||||||
.\" Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
.\" purpose with or without fee is hereby granted, provided that the above
|
|
||||||
.\" copyright notice and this permission notice appear in all copies.
|
|
||||||
.\"
|
|
||||||
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
.\"
|
|
||||||
.TH SUSPICIOUS\-SOURCE 1 "August 2010" "ubuntu-dev-tools"
|
|
||||||
|
|
||||||
.SH NAME
|
|
||||||
suspicious\-source \- search for files that are not the GPL's
|
|
||||||
"preferred form of modification"
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
\fBsuspicious\-source\fP [\fIoptions\fR]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBsuspicious\-source\fP is a script that outputs a list of files which
|
|
||||||
are not common source files.
|
|
||||||
This should be run in the root of a source tree to find files which might
|
|
||||||
not be the "preferred form of modification" that the GPL and other licenses
|
|
||||||
require.
|
|
||||||
.PP
|
|
||||||
The files inside version control system directories (like
|
|
||||||
".bzr/" or "CVS/") are not considered.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
.TP
|
|
||||||
\fB\-h\fR, \fB\-\-help\fR
|
|
||||||
show this help message and exit
|
|
||||||
.TP
|
|
||||||
\fB\-v\fR, \fB\-\-verbose\fR
|
|
||||||
print more information
|
|
||||||
.TP
|
|
||||||
\fB\-d\fR DIRECTORY, \fB\-\-directory\fR=\fIDIRECTORY\fR
|
|
||||||
check the files in the specified directory instead of the current directory
|
|
||||||
.TP
|
|
||||||
\fB\-m\fR MIMETYPE, \fB\-\-mimetype\fR=\fIMIMETYPE\fR
|
|
||||||
Add MIMETYPE to list of white-listed mime-types.
|
|
||||||
.TP
|
|
||||||
\fB\-e\fR EXTENSION, \fB\-\-extension\fR=\fIEXTENSION\fR
|
|
||||||
Add EXTENSION to list of white-listed extensions.
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
\fBsuspicious\-source\fP and this manpage has been written by
|
|
||||||
Benjamin Drung <bdrung@ubuntu.com>.
|
|
||||||
.PP
|
|
||||||
Both are released under the ISC license.
|
|
@ -1,37 +1,44 @@
|
|||||||
.TH SYNCPACKAGE "1" "June 2010" "ubuntu-dev-tools"
|
.TH SYNCPACKAGE "1" "June 2010" "ubuntu-dev-tools"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
syncpackage \- helper to prepare .changes file to upload synced packages
|
syncpackage \- copy source packages from Debian to Ubuntu
|
||||||
|
.\"
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B syncpackage
|
.B syncpackage
|
||||||
[\fIoptions\fR] \fI<.dsc URL/path or package name>\fR
|
[\fIoptions\fR] \fI<.dsc URL/path or package name(s)>\fR
|
||||||
|
.\"
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fBsyncpackage\fR generates a changes file to be directly uploaded to Ubuntu
|
\fBsyncpackage\fR causes one or more source package(s) to be copied from Debian
|
||||||
primary archive or PPA starting from a pristine Debian package.
|
to Ubuntu.
|
||||||
.PP
|
.PP
|
||||||
\fBsyncpackage\fR allows you to upload files with the same checksums of the
|
\fBsyncpackage\fR allows you to upload files with the same checksums of the
|
||||||
Debian ones, as the common script used by Ubuntu archive administrators does,
|
Debian ones, as the common script used by Ubuntu archive administrators does,
|
||||||
this way you can preserve source files integrity between the two distributions.
|
this way you can preserve source files integrity between the two distributions.
|
||||||
.PP
|
.PP
|
||||||
\fBsyncpackage\fR will detect source tarballs with mismatching checksums and will automatically create fake syncs instead.
|
\fBsyncpackage\fR will detect source tarballs with mismatching
|
||||||
|
checksums, and can perform fake syncs.
|
||||||
|
.\"
|
||||||
.SH WARNING
|
.SH WARNING
|
||||||
The use of \fBsyncpackage\fR is discouraged by the Ubuntu Archive
|
The use of \fBsyncpackage \-\-no\-lp\fR, which generates a changes file to
|
||||||
Administrators, as it introduces an unnecessary window for error.
|
be directly uploaded to the Ubuntu primary archive or a PPA, is discouraged
|
||||||
In future launchpad will offer the ability to directly perform sync
|
by the Ubuntu Archive Administrators, as it introduces an unnecessary window
|
||||||
requests, without a developer having to do an upload.
|
for error.
|
||||||
Until then, it's advised to use \fBsyncpackage\fR with caution, and
|
This only exists for backward compatibility, for unusual corner cases
|
||||||
request syncs via bugs with
|
(such as fakesyncs), and for uploads to archives other than the Ubuntu
|
||||||
.BR requestsync (1)
|
primary archive.
|
||||||
where possible.
|
Omitting this option will cause Launchpad to perform the sync request
|
||||||
|
directly, which is the preferred method for uploads to the Ubuntu primary
|
||||||
|
archive.
|
||||||
|
.\"
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
\fB\-h\fR, \fB\-\-help\fR
|
\fB\-h\fR, \fB\-\-help\fR
|
||||||
Show help message and exit
|
Show help message and exit
|
||||||
.TP
|
.TP
|
||||||
\fB\-d\fI DIST\fR, \fB\-\-distribution\fR=\fIDIST\fR
|
\fB\-d\fI DIST\fR, \fB\-\-distribution\fR=\fIDIST\fR
|
||||||
Debian distribution to sync from.
|
Debian distribution to sync from. Default is \fIunstable\fR.
|
||||||
.TP
|
.TP
|
||||||
\fB\-r\fI RELEASE\fR, \fB\-\-release\fR=\fIRELEASE\fR
|
\fB\-r\fI RELEASE\fR, \fB\-\-release\fR=\fIRELEASE\fR
|
||||||
Specify target Ubuntu release.
|
Specify target Ubuntu release. Default: current development release.
|
||||||
.TP
|
.TP
|
||||||
\fB\-V\fI DEBVERSION\fR, \fB\-\-debian\-version\fR=\fIDEBVERSION\fR
|
\fB\-V\fI DEBVERSION\fR, \fB\-\-debian\-version\fR=\fIDEBVERSION\fR
|
||||||
Specify the version to sync from.
|
Specify the version to sync from.
|
||||||
@ -39,13 +46,54 @@ Specify the version to sync from.
|
|||||||
\fB\-c\fI COMPONENT\fR, \fB\-\-component\fR=\fICOMPONENT\fR
|
\fB\-c\fI COMPONENT\fR, \fB\-\-component\fR=\fICOMPONENT\fR
|
||||||
Specify the component to sync from.
|
Specify the component to sync from.
|
||||||
.TP
|
.TP
|
||||||
\fB\-v\fR, \fB\-\-verbose\fR
|
\fB\-b\fI BUG\fR, \fB\-\-bug\fR=\fIBUG\fR
|
||||||
print more information
|
Mark a Launchpad bug as being fixed by this upload.
|
||||||
.TP
|
.TP
|
||||||
\fB\-n\fI UPLOADER\fR, \fB\-\-uploader\fR=\fIUPLOADER\fR
|
\fB\-s\fI USERNAME\fR, \fB\-\-sponsor\fR=\fIUSERNAME\fR
|
||||||
Use UPLOADER as the name and email address of the
|
Sponsor the sync for \fIUSERNAME\fR (a Launchpad username).
|
||||||
maintainer for this upload instead of evaluating
|
.TP
|
||||||
DEBFULLNAME and DEBEMAIL.
|
\fB\-v\fR, \fB\-\-verbose\fR
|
||||||
|
Display more progress information.
|
||||||
|
.TP
|
||||||
|
\fB\-F\fR, \fB\-\-fakesync\fR
|
||||||
|
Perform a fakesync, to work around a tarball mismatch between Debian and
|
||||||
|
Ubuntu.
|
||||||
|
This option ignores blocklisting, and performs a local sync.
|
||||||
|
It implies \fB\-\-no\-lp\fR, and will leave a signed \fB.changes\fR file
|
||||||
|
for you to upload.
|
||||||
|
.TP
|
||||||
|
\fB\-f\fR, \fB\-\-force\fR
|
||||||
|
Force sync over the top of Ubuntu changes.
|
||||||
|
.TP
|
||||||
|
.B \-\-no\-conf
|
||||||
|
Do not read any configuration files, or configuration from environment
|
||||||
|
variables.
|
||||||
|
.TP
|
||||||
|
\fB\-l\fI INSTANCE\fR, \fB\-\-lpinstance\fR=\fIINSTANCE\fR
|
||||||
|
Launchpad instance to connect to (default: production).
|
||||||
|
.TP
|
||||||
|
.B \-\-simulate
|
||||||
|
Show what would be done, but don't actually do it.
|
||||||
|
.\"
|
||||||
|
.SH LOCAL SYNC PREPARATION OPTIONS
|
||||||
|
.TP
|
||||||
|
Options that only apply when using \fB\-\-no\-lp\fR:
|
||||||
|
.TP
|
||||||
|
.B \-\-no\-lp
|
||||||
|
Construct sync locally, rather than letting Launchpad copy the package
|
||||||
|
directly.
|
||||||
|
It will leave a signed \fB.changes\fR file for you to upload.
|
||||||
|
See the \fBWARNING\fR above.
|
||||||
|
.TP
|
||||||
|
\fB\-n\fI UPLOADER_NAME\fR, \fB\-\-uploader\-name\fR=\fIUPLOADER_NAME\fR
|
||||||
|
Use UPLOADER_NAME as the name of the maintainer for this upload instead
|
||||||
|
of evaluating DEBFULLNAME and UBUMAIL.
|
||||||
|
This option may only be used in \fB\-\-no\-lp\fR mode.
|
||||||
|
.TP
|
||||||
|
\fB\-e\fI UPLOADER_EMAIL\fR, \fB\-\-uploader\-email\fR=\fIUPLOADER_EMAIL\fR
|
||||||
|
Use UPLOADER_EMAIL as the email address of the maintainer for this
|
||||||
|
upload instead of evaluating DEBEMAIL and UBUMAIL.
|
||||||
|
This option may only be used in \fB\-\-no\-lp\fR mode.
|
||||||
.TP
|
.TP
|
||||||
\fB\-k\fI KEYID\fR, \fB\-\-key\fR=\fIKEYID\fR
|
\fB\-k\fI KEYID\fR, \fB\-\-key\fR=\fIKEYID\fR
|
||||||
Specify the key ID to be used for signing.
|
Specify the key ID to be used for signing.
|
||||||
@ -53,12 +101,54 @@ Specify the key ID to be used for signing.
|
|||||||
\fB\-\-dont-sign\fR
|
\fB\-\-dont-sign\fR
|
||||||
Do not sign the upload.
|
Do not sign the upload.
|
||||||
.TP
|
.TP
|
||||||
\fB\-b\fI BUG\fR, \fB\-\-bug\fR=\fIBUG\fR
|
.B \-d \fIDEBIAN_MIRROR\fR, \fB\-\-debian\-mirror\fR=\fIDEBIAN_MIRROR\fR
|
||||||
Mark a Launchpad bug as being fixed by this upload.
|
Use the specified mirror.
|
||||||
.PP
|
Should be in the form \fBhttp://ftp.debian.org/debian\fR.
|
||||||
|
If the package isn't found on this mirror, \fBsyncpackage\fR will fall
|
||||||
|
back to the default mirror.
|
||||||
|
.TP
|
||||||
|
.B \-s \fIUBUNTU_MIRROR\fR, \fB\-\-debsec\-mirror\fR=\fIUBUNTU_MIRROR\fR
|
||||||
|
Use the specified Debian security mirror.
|
||||||
|
Should be in the form \fBhttp://archive.ubuntu.com/ubuntu\fR.
|
||||||
|
If the package isn't found on this mirror, \fBsyncpackage\fR will fall
|
||||||
|
back to the default mirror.
|
||||||
|
.\"
|
||||||
|
.SH ENVIRONMENT
|
||||||
|
.TP
|
||||||
|
.BR DEBFULLNAME ", " DEBEMAIL ", " UBUMAIL
|
||||||
|
Used to determine the uploader (if not supplied as options).
|
||||||
|
See
|
||||||
|
.BR ubuntu\-dev\-tools (5)
|
||||||
|
for details.
|
||||||
|
.P
|
||||||
|
All of the \fBCONFIGURATION VARIABLES\fR below are also supported as
|
||||||
|
environment variables.
|
||||||
|
Variables in the environment take precedence to those in configuration
|
||||||
|
files.
|
||||||
|
.\"
|
||||||
|
.SH CONFIGURATION VARIABLES
|
||||||
|
The following variables can be set in the environment or in
|
||||||
|
.BR ubuntu\-dev\-tools (5)
|
||||||
|
configuration files.
|
||||||
|
In each case, the script\-specific variable takes precedence over the
|
||||||
|
package\-wide variable.
|
||||||
|
.TP
|
||||||
|
.BR SYNCPACKAGE_DEBIAN_MIRROR ", " UBUNTUTOOLS_DEBIAN_MIRROR
|
||||||
|
The default value for \fB\-\-debian\-mirror\fR.
|
||||||
|
.TP
|
||||||
|
.BR SYNCPACKAGE_UBUNTU_MIRROR ", " UBUNTUTOOLS_DEBSEC_MIRROR
|
||||||
|
The default value for \fB\-\-ubuntu\-mirror\fR.
|
||||||
|
.TP
|
||||||
|
.BR SYNCPACKAGE_KEYID ", " UBUNTUTOOLS_KEYID
|
||||||
|
The default value for \fB\-\-key\fR.
|
||||||
|
.\"
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR requestsync (1),
|
||||||
|
.BR ubuntu\-dev\-tools (5)
|
||||||
|
.\"
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
\fBsyncpackage\fR was written by Martin Pitt <martin.pitt@canonical.com> and Benjamin Drung <bdrung@ubuntu.com>.
|
\fBsyncpackage\fR was written by Martin Pitt <martin.pitt@canonical.com> and Benjamin Drung <bdrung@ubuntu.com>.
|
||||||
.PP
|
.PP
|
||||||
This manual page were written by Luca Falavigna <dktrkranz@ubuntu.com>
|
This manual page was written by Luca Falavigna <dktrkranz@ubuntu.com>
|
||||||
.PP
|
.PP
|
||||||
Both are released under GNU General Public License, version 3.
|
Both are released under GNU General Public License, version 3.
|
||||||
|
@ -1,20 +1,19 @@
|
|||||||
.TH UBUNTU-BUILD "1" "June 2010" "ubuntu-dev-tools"
|
.TH UBUNTU-BUILD "1" "Mar 2024" "ubuntu-dev-tools"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
ubuntu-build \- command-line interface to Launchpad build operations
|
ubuntu-build \- command-line interface to Launchpad build operations
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B ubuntu-build <srcpackage> <release> <operation>
|
.nf
|
||||||
|
\fBubuntu-build\fR <srcpackage> <release> <operation>
|
||||||
|
\fBubuntu-build\fR --batch [--retry] [--rescore \fIPRIORITY\fR] [--arch \fIARCH\fR [...]]
|
||||||
|
[--series \fISERIES\fR] [--state \fIBUILD-STATE\fR]
|
||||||
|
[-A \fIARCHIVE\fR] [pkg]...
|
||||||
|
.fi
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\fBubuntu-build\fR provides a command line interface to the Launchpad build
|
\fBubuntu-build\fR provides a command line interface to the Launchpad build
|
||||||
operations.
|
operations.
|
||||||
|
|
||||||
.PP
|
|
||||||
\fBubuntu-build\fR uses a cookie file stored at \fI~/.lpcookie.txt\fR to authenticate
|
|
||||||
to Launchpad.
|
|
||||||
This cookie is created on run from the Mozilla Firefox cookie
|
|
||||||
file at \fI~/.mozilla/*/*/cookies.sqlite\fR.
|
|
||||||
|
|
||||||
.SH OPERATIONS
|
.SH OPERATIONS
|
||||||
Listed below are the available operations for \fBubuntu-build\fR:
|
Listed below are the available operations for \fBubuntu-build\fR:
|
||||||
.TP
|
.TP
|
||||||
@ -43,8 +42,8 @@ operations.
|
|||||||
.IP
|
.IP
|
||||||
\fB\-a\fR ARCHITECTURE, \fB\-\-arch\fR=\fIARCHITECTURE\fR
|
\fB\-a\fR ARCHITECTURE, \fB\-\-arch\fR=\fIARCHITECTURE\fR
|
||||||
Rebuild or rescore a specific architecture. Valid
|
Rebuild or rescore a specific architecture. Valid
|
||||||
architectures include: amd64, sparc, powerpc, i386,
|
architectures are:
|
||||||
armel, ia64, lpia, hppa.
|
armhf, arm64, amd64, i386, powerpc, ppc64el, riscv64, s390x.
|
||||||
.TP
|
.TP
|
||||||
Batch processing:
|
Batch processing:
|
||||||
.IP
|
.IP
|
||||||
@ -64,14 +63,16 @@ Retry builds (give\-back).
|
|||||||
\fB\-\-rescore\fR=\fIPRIORITY\fR
|
\fB\-\-rescore\fR=\fIPRIORITY\fR
|
||||||
Rescore builds to <priority>.
|
Rescore builds to <priority>.
|
||||||
.IP
|
.IP
|
||||||
\fB\-\-arch2\fR=\fIARCHITECTURE\fR
|
\fB\-\-arch\fR=\fIARCHITECTURE\fR
|
||||||
Affect only 'architecture' (can be used several
|
Affect only 'architecture' (can be used several
|
||||||
times). Valid architectures are: amd64, sparc,
|
times). Valid architectures are:
|
||||||
powerpc, i386, armel, ia64, lpia, hppa.
|
arm64, amd64, i386, powerpc, ppc64el, riscv64, s390x.
|
||||||
|
.IP
|
||||||
|
\fB\-A=\fIARCHIVE\fR
|
||||||
|
Act on the named archive (ppa) instead of on the main Ubuntu archive.
|
||||||
|
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
\fBubuntu-build\fR was written by Martin Pitt <martin.pitt@canonical.com>, and
|
\fBubuntu-build\fR was written by Martin Pitt <martin.pitt@canonical.com>, and
|
||||||
this manual page was written by Jonathan Patrick Davies <jpds@ubuntu.com>.
|
this manual page was written by Jonathan Patrick Davies <jpds@ubuntu.com>.
|
||||||
.PP
|
.PP
|
||||||
Both are released under the terms of the GNU General Public License, version 3
|
Both are released under the terms of the GNU General Public License, version 3.
|
||||||
or (at your option) any later version.
|
|
||||||
|
@ -43,6 +43,8 @@ In addition, several scripts use the following environment variables:
|
|||||||
.B UBUMAIL
|
.B UBUMAIL
|
||||||
Overrides \fBDEBEMAIL\fR and \fBDEBFULLNAME\fR when the target is
|
Overrides \fBDEBEMAIL\fR and \fBDEBFULLNAME\fR when the target is
|
||||||
clearly Ubuntu.
|
clearly Ubuntu.
|
||||||
|
Can either contain an e-mail address or \fBFull Name
|
||||||
|
<email@example.org>\fR.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.BR DEBEMAIL ", " DEBFULLNAME
|
.BR DEBEMAIL ", " DEBFULLNAME
|
||||||
@ -74,6 +76,12 @@ Should be of the form \fBhttp://archive.ubuntu.com/ubuntu\fR (no
|
|||||||
trailing slash).
|
trailing slash).
|
||||||
If not specified, the master will be used.
|
If not specified, the master will be used.
|
||||||
.TP
|
.TP
|
||||||
|
.B UBUNTUTOOLS_UBUNTU_PORTS_MIRROR
|
||||||
|
The preferred Ubuntu archive mirror.
|
||||||
|
Should be of the form \fBhttp://ports.ubuntu.com\fR (no
|
||||||
|
trailing slash).
|
||||||
|
If not specified, the master will be used.
|
||||||
|
.TP
|
||||||
.B UBUNTUTOOLS_LPINSTANCE
|
.B UBUNTUTOOLS_LPINSTANCE
|
||||||
The launchpad instance to communicate with. e.g. \fBproduction\fR
|
The launchpad instance to communicate with. e.g. \fBproduction\fR
|
||||||
(default) or \fBstaging\fR.
|
(default) or \fBstaging\fR.
|
||||||
|
60
doc/ubuntu-upload-permission.1
Normal file
60
doc/ubuntu-upload-permission.1
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
.\" Copyright (C) 2011, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
|
.\"
|
||||||
|
.\" Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
.\" purpose with or without fee is hereby granted, provided that the above
|
||||||
|
.\" copyright notice and this permission notice appear in all copies.
|
||||||
|
.\"
|
||||||
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
.\" REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
.\" AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
.\" INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
.\" LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
.\" OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
.\" PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
.TH ubuntu\-upload\-permission 1 "November 2011" ubuntu\-dev\-tools
|
||||||
|
|
||||||
|
.SH NAME
|
||||||
|
ubuntu\-upload\-permission \- Query upload rights and (optionally) list
|
||||||
|
the people and teams with upload rights for a package
|
||||||
|
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B ubuntu\-upload\-permission \fR[\fIoptions\fR] \fIpackage
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBubuntu\-upload\-permission\fR checks if the user has upload
|
||||||
|
permissions for \fIpackage\fR.
|
||||||
|
If the \fB\-\-list\-uploaders\fR option is provided, all the people and
|
||||||
|
teams that do have upload rights for \fIpackage\fR will be listed.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
\fB\-r\fR \fIRELEASE\fR, \fB\-\-release\fR=\fIRELEASE\fR
|
||||||
|
Query permissions in \fIRELEASE\fR.
|
||||||
|
Default: current development release.
|
||||||
|
.TP
|
||||||
|
\fB\-a\fR, \fB\-\-list\-uploaders\fR
|
||||||
|
List all the people and teams who have upload rights for \fIpackage\fR.
|
||||||
|
.TP
|
||||||
|
\fB\-t\fR, \fB\-\-list\-team\-members\fR
|
||||||
|
List all the members of every team with rights. (Implies
|
||||||
|
\fB\-\-list\-uploaders\fR)
|
||||||
|
.TP
|
||||||
|
\fB\-h\fR, \fB\-\-help\fR
|
||||||
|
Display a help message and exit
|
||||||
|
|
||||||
|
.SH EXIT STATUS
|
||||||
|
.TP
|
||||||
|
.B 0
|
||||||
|
You have the necessary upload rights.
|
||||||
|
.TP
|
||||||
|
.B 1
|
||||||
|
You don't have the necessary upload rights.
|
||||||
|
.TP
|
||||||
|
.B 2
|
||||||
|
There was an error.
|
||||||
|
|
||||||
|
.SH AUTHORS
|
||||||
|
\fBubuntu\-upload\-permission\fR and this manpage were written by
|
||||||
|
Stefano Rivera <stefanor@ubuntu.com>.
|
||||||
|
.PP
|
||||||
|
Both are released under the terms of the ISC License.
|
@ -1,40 +0,0 @@
|
|||||||
.TH WHAT\-PATCH "1" "10 August 2008" "ubuntu-dev-tools"
|
|
||||||
.SH NAME
|
|
||||||
what\-patch \- detects which patch system a Debian package uses
|
|
||||||
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B what\-patch [options]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBwhat\-patch\fR examines the debian/rules file to determine which patch
|
|
||||||
system the Debian package is using.
|
|
||||||
.PP
|
|
||||||
\fBwhat\-patch\fR should be run from the root directory of the Debian source
|
|
||||||
package.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
Listed below are the command line options for what\-patch:
|
|
||||||
.TP
|
|
||||||
.B \-h or \-\-help
|
|
||||||
Display a help message and exit.
|
|
||||||
.TP
|
|
||||||
.B \-v
|
|
||||||
Enable verbose mode.
|
|
||||||
This will include the listing of any files modified outside or the debian/
|
|
||||||
directory and report any additional details about the patch system if
|
|
||||||
available.
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
\fBwhat\-patch\fR was written by Kees Cook <kees@ubuntu.com>,
|
|
||||||
Siegfried-A. Gevatter <rainct@ubuntu.com>, and Daniel Hahler
|
|
||||||
<ubuntu@thequod.de>, among others.
|
|
||||||
This manual page was written by Jonathan Patrick Davies <jpds@ubuntu.com>.
|
|
||||||
.PP
|
|
||||||
Both are released under the GNU General Public License, version 2.
|
|
||||||
|
|
||||||
.SH SEE ALSO
|
|
||||||
The Ubuntu MOTU team has some documentation about patch systems at the Ubuntu
|
|
||||||
wiki: \fBhttps://wiki.ubuntu.com/PackagingGuide/PatchSystems\fR
|
|
||||||
|
|
||||||
.PP
|
|
||||||
.B cdbs\-edit\-patch(1), dbs\-edit\-patch(1), dpatch\-edit\-patch(1)
|
|
@ -1,69 +0,0 @@
|
|||||||
.\" Copyright (c) 2010, Benjamin Drung <bdrung@ubuntu.com>
|
|
||||||
.\"
|
|
||||||
.\" Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
.\" purpose with or without fee is hereby granted, provided that the above
|
|
||||||
.\" copyright notice and this permission notice appear in all copies.
|
|
||||||
.\"
|
|
||||||
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
.\"
|
|
||||||
.TH WRAP\-AND\-SORT 1 "September 2010" "ubuntu-dev-tools"
|
|
||||||
.SH NAME
|
|
||||||
wrap-and-sort \- wrap long lines and sort items in packaging files
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.B wrap-and-sort
|
|
||||||
[\fIoptions\fR]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
|
||||||
\fBwrap\-and\-sort\fP wraps the package lists in Debian control files. By
|
|
||||||
default the lists will only split into multiple lines if the entries are longer
|
|
||||||
than 80 characters. \fBwrap\-and\-sort\fP sorts the package lists in Debian
|
|
||||||
control files and all .install files. Beside that \fBwrap\-and\-sort\fP removes
|
|
||||||
trailing spaces in these files.
|
|
||||||
.PP
|
|
||||||
This script should be run in the root of a Debian package tree. It searches for
|
|
||||||
debian/control, debian/control.in, debian/copyright, debian/copyright.in,
|
|
||||||
and debian/*.install.
|
|
||||||
|
|
||||||
.SH OPTIONS
|
|
||||||
.TP
|
|
||||||
\fB\-h\fR, \fB\-\-help\fR
|
|
||||||
show this help message and exit
|
|
||||||
.TP
|
|
||||||
\fB\-a\fR, \fB\-\-wrap\-always\fR
|
|
||||||
wrap all package lists in the Debian control file
|
|
||||||
even if the entries are shorter than 80 characters and could fit in one line
|
|
||||||
line
|
|
||||||
.TP
|
|
||||||
\fB\-s\fR, \fB\-\-short\-indent\fR
|
|
||||||
only indent wrapped lines by one space (default is in\-line with the
|
|
||||||
field name)
|
|
||||||
.TP
|
|
||||||
\fB\-b\fR, \fB\-\-sort\-binary\-packages\fR
|
|
||||||
sort binary package paragraphs by name
|
|
||||||
.TP
|
|
||||||
\fB\-k\fR, \fB\-\-keep\-first\fR
|
|
||||||
When sorting binary package paragraphs, leave the first one at the top.
|
|
||||||
Unqualified
|
|
||||||
.BR debhelper (7)
|
|
||||||
configuration files are applied to the first package.
|
|
||||||
.TP
|
|
||||||
\fB\-n\fR, \fB\-\-no\-cleanup\fR
|
|
||||||
do not remove trailing whitespaces
|
|
||||||
.TP
|
|
||||||
\fB\-d \fIPATH\fR, \fB\-\-debian\-directory\fR=\fIPATH\fR
|
|
||||||
location of the \fIdebian\fR directory (default: \fB./debian\fR)
|
|
||||||
.TP
|
|
||||||
\fB\-v\fR, \fB\-\-verbose\fR
|
|
||||||
print all files that are touched
|
|
||||||
|
|
||||||
.SH AUTHORS
|
|
||||||
\fBwrap\-and\-sort\fP and this manpage has been written by
|
|
||||||
Benjamin Drung <bdrung@ubuntu.com>.
|
|
||||||
.PP
|
|
||||||
Both are released under the ISC license.
|
|
303
edit-patch
303
edit-patch
@ -1,303 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (C) 2009 Canonical
|
|
||||||
#
|
|
||||||
# Authors:
|
|
||||||
# Michael Vogt
|
|
||||||
# Daniel Holbach
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# 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 Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
|
|
||||||
PATCHSYSTEM="unknown"
|
|
||||||
PATCHNAME="no-patch-name"
|
|
||||||
PREFIX="debian/patches"
|
|
||||||
|
|
||||||
PATCH_DESC=$(cat<<EOF
|
|
||||||
## Description: add some description\
|
|
||||||
\n## Origin/Author: add some origin or author\
|
|
||||||
\n## Bug: bug URL
|
|
||||||
EOF
|
|
||||||
)
|
|
||||||
|
|
||||||
fatal_error() {
|
|
||||||
echo "$@" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# check if the given binary is installed and give a error if not
|
|
||||||
# arg1: binary
|
|
||||||
# arg2: error message
|
|
||||||
require_installed() {
|
|
||||||
if ! which "$1" >/dev/null; then
|
|
||||||
fatal_error "$2"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ensure_debian_dir() {
|
|
||||||
if [ ! -e debian/control ] || [ ! -e debian/rules ]; then
|
|
||||||
fatal_error "Can not find debian/rules or debian/control. Not in a debian dir?"
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
detect_patchsystem() {
|
|
||||||
CDBS_PATCHSYS="^[^#]*simple-patchsys.mk"
|
|
||||||
|
|
||||||
if grep -q "$CDBS_PATCHSYS" debian/rules; then
|
|
||||||
PATCHSYSTEM="cdbs"
|
|
||||||
require_installed cdbs-edit-patch "no cdbs-edit-patch found, is 'cdbs' installed?"
|
|
||||||
elif [ -e debian/patches/00list ]; then
|
|
||||||
PATCHSYSTEM="dpatch"
|
|
||||||
require_installed dpatch-edit-patch "no dpatch-edit-patch found, is 'dpatch' installed?"
|
|
||||||
elif [ -e debian/patches/series -o \
|
|
||||||
"$(cat debian/source/format 2> /dev/null)" = "3.0 (quilt)" ]; then
|
|
||||||
PATCHSYSTEM="quilt"
|
|
||||||
require_installed quilt "no quilt found, is 'quilt' installed?"
|
|
||||||
else
|
|
||||||
PATCHSYSTEM="none"
|
|
||||||
PREFIX="debian/applied-patches"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# remove full path if given
|
|
||||||
normalize_patch_path() {
|
|
||||||
PATCHNAME=${PATCHNAME##*/}
|
|
||||||
echo "Normalizing patch path to $PATCHNAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
# ensure (for new patches) that:
|
|
||||||
# - dpatch ends with .dpatch
|
|
||||||
# - cdbs/quilt with .patch
|
|
||||||
normalize_patch_extension() {
|
|
||||||
# check if we have a patch already
|
|
||||||
if [ -e $PREFIX/$PATCHNAME ]; then
|
|
||||||
echo "Patch $PATCHNAME exists, not normalizing"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# normalize name for new patches
|
|
||||||
PATCHNAME=${PATCHNAME%.*}
|
|
||||||
if [ "$PATCHSYSTEM" = "quilt" ]; then
|
|
||||||
PATCHNAME="${PATCHNAME}.patch"
|
|
||||||
elif [ "$PATCHSYSTEM" = "cdbs" ]; then
|
|
||||||
PATCHNAME="${PATCHNAME}.patch"
|
|
||||||
elif [ "$PATCHSYSTEM" = "dpatch" ]; then
|
|
||||||
PATCHNAME="${PATCHNAME}.dpatch"
|
|
||||||
elif [ "$PATCHSYSTEM" = "none" ]; then
|
|
||||||
PATCHNAME="${PATCHNAME}.patch"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Normalizing patch name to $PATCHNAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
edit_patch_cdbs() {
|
|
||||||
cdbs-edit-patch $PATCHNAME
|
|
||||||
vcs_add debian/patches/$1
|
|
||||||
}
|
|
||||||
|
|
||||||
edit_patch_dpatch() {
|
|
||||||
dpatch-edit-patch $PATCHNAME
|
|
||||||
# add if needed
|
|
||||||
if ! grep -q $1 $PREFIX/00list; then
|
|
||||||
echo "$1" >> $PREFIX/00list
|
|
||||||
fi
|
|
||||||
vcs_add $PREFIX/00list $PREFIX/$1
|
|
||||||
}
|
|
||||||
|
|
||||||
edit_patch_quilt() {
|
|
||||||
export QUILT_PATCHES=debian/patches
|
|
||||||
if [ -e $PREFIX/$1 ]; then
|
|
||||||
# if its a existing patch and we are at the end of the stack,
|
|
||||||
# go back at the beginning
|
|
||||||
if ! quilt unapplied; then
|
|
||||||
quilt pop -a
|
|
||||||
fi
|
|
||||||
quilt push $1
|
|
||||||
else
|
|
||||||
# if its a new patch make sure we are at the end of the stack
|
|
||||||
if quilt unapplied >/dev/null; then
|
|
||||||
quilt push -a
|
|
||||||
fi
|
|
||||||
quilt new $1
|
|
||||||
fi
|
|
||||||
# use a sub-shell
|
|
||||||
quilt shell
|
|
||||||
quilt refresh
|
|
||||||
quilt pop -a
|
|
||||||
vcs_add $PREFIX/$1 $PREFIX/series
|
|
||||||
}
|
|
||||||
|
|
||||||
edit_patch_none() {
|
|
||||||
# Dummy edit-patch function, just display a warning message
|
|
||||||
echo "No patchsystem could be found so the patch was applied inline and a copy \
|
|
||||||
stored in debian/patches-applied. Please remember to mention this in your changelog."
|
|
||||||
}
|
|
||||||
|
|
||||||
add_patch_quilt() {
|
|
||||||
# $1 is the original patchfile, $2 the normalized name
|
|
||||||
# FIXME: use quilt import instead?
|
|
||||||
cp $1 $PREFIX/$2
|
|
||||||
if ! grep -q $2 $PREFIX/series; then
|
|
||||||
echo "$2" >> $PREFIX/series
|
|
||||||
fi
|
|
||||||
vcs_add $PREFIX/$2 $PREFIX/series
|
|
||||||
}
|
|
||||||
|
|
||||||
add_patch_cdbs() {
|
|
||||||
# $1 is the original patchfile, $2 the normalized name
|
|
||||||
cp $1 $PREFIX/$2
|
|
||||||
vcs_add $PREFIX/$2
|
|
||||||
}
|
|
||||||
|
|
||||||
add_patch_dpatch() {
|
|
||||||
# $1 is the original patchfile, $2 the normalized name
|
|
||||||
cp $1 $PREFIX
|
|
||||||
if ! grep -q $2 $PREFIX/00list; then
|
|
||||||
echo "$2" >> $PREFIX/00list
|
|
||||||
fi
|
|
||||||
vcs_add $PREFIX/$2 $PREFIX/00list
|
|
||||||
}
|
|
||||||
|
|
||||||
add_patch_none() {
|
|
||||||
# $1 is the original patchfile, $2 the normalized name
|
|
||||||
cp $1 $PREFIX/$2
|
|
||||||
vcs_add $PREFIX/$2
|
|
||||||
}
|
|
||||||
|
|
||||||
vcs_add() {
|
|
||||||
if [ -d .bzr ]; then
|
|
||||||
bzr add $@
|
|
||||||
elif [ -d .git ];then
|
|
||||||
git add $@
|
|
||||||
else
|
|
||||||
echo "Remember to add $@ to a VCS if you use one"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
vcs_commit() {
|
|
||||||
# check if debcommit is happy
|
|
||||||
if ! debcommit --noact 2>/dev/null; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
# commit (if the user confirms)
|
|
||||||
debcommit --confirm
|
|
||||||
}
|
|
||||||
|
|
||||||
add_changelog() {
|
|
||||||
S="$PREFIX/$1: [DESCRIBE CHANGES HERE]"
|
|
||||||
if head -n1 debian/changelog|grep UNRELEASED; then
|
|
||||||
dch --append "$S"
|
|
||||||
else
|
|
||||||
dch --increment "$S"
|
|
||||||
fi
|
|
||||||
# let the user edit it
|
|
||||||
dch --edit
|
|
||||||
}
|
|
||||||
|
|
||||||
add_patch_tagging() {
|
|
||||||
# check if we have a descripton already
|
|
||||||
if grep "## Description:" $PREFIX/$1; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
# if not, add one
|
|
||||||
RANGE=1,1
|
|
||||||
# make sure we keep the first line (for dpatch)
|
|
||||||
if head -n1 $PREFIX/$1|grep -q '^#'; then
|
|
||||||
RANGE=2,2
|
|
||||||
fi
|
|
||||||
sed -i ${RANGE}i"$PATCH_DESC" $PREFIX/$1
|
|
||||||
}
|
|
||||||
|
|
||||||
detect_patch_location() {
|
|
||||||
# Checks whether the specified patch exists in debian/patches or on the filesystem
|
|
||||||
FILENAME=${PATCHNAME##*/}
|
|
||||||
|
|
||||||
if [ -f "$PREFIX/$FILENAME" ]; then
|
|
||||||
PATCHTYPE="debian"
|
|
||||||
elif [ -f "$PATCHNAME" ]; then
|
|
||||||
PATCHTYPE="file"
|
|
||||||
PATCHORIG="$PATCHNAME"
|
|
||||||
else
|
|
||||||
if [ "$PATCHSYSTEM" = "none" ]; then
|
|
||||||
fatal_error "No patchsystem detected, cannot create new patch (no dpatch/quilt/cdbs?)"
|
|
||||||
else
|
|
||||||
PATCHTYPE="new"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_file_patch() {
|
|
||||||
if [ "$PATCHTYPE" = "file" ]; then
|
|
||||||
[ -f "$PATCHORIG" ] || fatal_error "No patch detected"
|
|
||||||
|
|
||||||
if [ "$PATCHSYSTEM" = "none" ]; then
|
|
||||||
# If we're supplied a file and there is no patchsys we apply it directly
|
|
||||||
# and store it in debian/applied patches
|
|
||||||
[ -d $PREFIX ] || mkdir $PREFIX
|
|
||||||
|
|
||||||
patch -p0 < "$PATCHORIG"
|
|
||||||
cp "$PATCHORIG" "$PREFIX/$PATCHNAME"
|
|
||||||
else
|
|
||||||
# Patch type is file but there is a patchsys present, so we add it
|
|
||||||
# correctly
|
|
||||||
cp "$PATCHORIG" "$PREFIX/$PATCHNAME"
|
|
||||||
|
|
||||||
if [ "$PATCHSYSTEM" = "quilt" ]; then
|
|
||||||
echo "$PATCHNAME" >> $PREFIX/series
|
|
||||||
elif [ "$PATCHSYSTEM" = "dpatch" ]; then
|
|
||||||
echo "$PATCHNAME" >> $PREFIX/00list
|
|
||||||
|
|
||||||
# Add the dpatch header to files that don't already have it
|
|
||||||
if ! grep -q "@DPATCH@" "$PREFIX/$PATCHNAME"; then
|
|
||||||
sed -i '1i#! /bin/sh /usr/share/dpatch/dpatch-run\n@DPATCH@' $PREFIX/$PATCHNAME
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Copying and applying new patch. You can now edit the patch or exit the subshell to save."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# TODO:
|
|
||||||
# - edit-patch --remove implementieren
|
|
||||||
# - dbs patch system
|
|
||||||
|
|
||||||
main() {
|
|
||||||
# parse args
|
|
||||||
if [ $# -ne 1 ]; then
|
|
||||||
fatal_error "Need exactly one patch name"
|
|
||||||
fi
|
|
||||||
PATCHNAME="$1"
|
|
||||||
# do the work
|
|
||||||
ensure_debian_dir
|
|
||||||
detect_patchsystem
|
|
||||||
detect_patch_location
|
|
||||||
normalize_patch_path
|
|
||||||
normalize_patch_extension
|
|
||||||
handle_file_patch
|
|
||||||
if [ "$(basename $0)" = "edit-patch" ]; then
|
|
||||||
edit_patch_$PATCHSYSTEM $PATCHNAME
|
|
||||||
elif [ "$(basename $0)" = "add-patch" ]; then
|
|
||||||
add_patch_$PATCHSYSTEM $1 $PATCHNAME
|
|
||||||
fi
|
|
||||||
add_patch_tagging $PATCHNAME
|
|
||||||
add_changelog $PATCHNAME
|
|
||||||
vcs_commit
|
|
||||||
}
|
|
||||||
|
|
||||||
main $@
|
|
62
enforced-editing-wrapper
Executable file
62
enforced-editing-wrapper
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
#
|
||||||
|
# Copyright (C) 2011, Stefano Rivera <stefanor@ubuntu.com>
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
# purpose with or without fee is hereby granted, provided that the above
|
||||||
|
# copyright notice and this permission notice appear in all copies.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Wraps sensisible-editor in checks for remaining boilerplate.
|
||||||
|
# Configured through environment variables:
|
||||||
|
# UDT_EDIT_WRAPPER_EDITOR: The user's usual $EDITOR
|
||||||
|
# UDT_EDIT_WRAPPER_VISUAL: The user's usual $VISUAL
|
||||||
|
# UDT_EDIT_WRAPPER_TEMPLATE_RE: An extra boilerplate-detecting regex.
|
||||||
|
# UDT_EDIT_WRAPPER_FILE_DESCRIPTION: The type of file being edited.
|
||||||
|
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
# pylint: enable=invalid-name
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
|
from ubuntutools.question import EditFile
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(usage="%(prog)s [options] filename")
|
||||||
|
parser.add_argument("filename", help=argparse.SUPPRESS)
|
||||||
|
args = parser.parse_args()
|
||||||
|
if not os.path.isfile(args.filename):
|
||||||
|
parser.error(f"File {args.filename} does not exist")
|
||||||
|
|
||||||
|
if "UDT_EDIT_WRAPPER_EDITOR" in os.environ:
|
||||||
|
os.environ["EDITOR"] = os.environ["UDT_EDIT_WRAPPER_EDITOR"]
|
||||||
|
else:
|
||||||
|
del os.environ["EDITOR"]
|
||||||
|
|
||||||
|
if "UDT_EDIT_WRAPPER_VISUAL" in os.environ:
|
||||||
|
os.environ["VISUAL"] = os.environ["UDT_EDIT_WRAPPER_VISUAL"]
|
||||||
|
else:
|
||||||
|
del os.environ["VISUAL"]
|
||||||
|
|
||||||
|
placeholders = []
|
||||||
|
if "UDT_EDIT_WRAPPER_TEMPLATE_RE" in os.environ:
|
||||||
|
placeholders.append(re.compile(os.environ["UDT_EDIT_WRAPPER_TEMPLATE_RE"]))
|
||||||
|
|
||||||
|
description = os.environ.get("UDT_EDIT_WRAPPER_FILE_DESCRIPTION", "file")
|
||||||
|
|
||||||
|
EditFile(args.filename, description, placeholders).edit()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
42
errno
42
errno
@ -1,42 +0,0 @@
|
|||||||
#!/bin/sh -e
|
|
||||||
#
|
|
||||||
# errno - search POSIX error codes by error number, error name,
|
|
||||||
# or error description
|
|
||||||
#
|
|
||||||
# Copyright (C) 2010 Dustin Kirkland <kirkland@ubuntu.com>
|
|
||||||
#
|
|
||||||
# Authors:
|
|
||||||
# Dustin Kirkland <kirkland@ubuntu.com>
|
|
||||||
# Kees Cook <kees@ubuntu.com>
|
|
||||||
# Scott Moser <smoser@ubuntu.com>
|
|
||||||
#
|
|
||||||
# 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, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
if which gcc >/dev/null; then
|
|
||||||
# Header finding trick from Kees Cook <kees@ubuntu.com>
|
|
||||||
headers=$(echo "#include <asm/errno.h>" | gcc -E - | grep "\.h" | awk -F\" '{print $2}' | sort -u)
|
|
||||||
else
|
|
||||||
headers="/usr/include/asm-generic/errno*.h"
|
|
||||||
fi
|
|
||||||
|
|
||||||
code="$1"
|
|
||||||
|
|
||||||
for code in "${@}"; do
|
|
||||||
if [ "$code" -le 0 -o "$code" -ge 0 ] 2>/dev/null; then
|
|
||||||
# Input is a number, search for a particular matching code
|
|
||||||
sed -n "s,^#define\s\+\([^[:space:]]\+\s\+${code}\s.*\),\1,p" ${headers}
|
|
||||||
else
|
|
||||||
# Input is not a number, search for any matching strings
|
|
||||||
sed -n "s,^#define\s\+\(.*${code}.*\),\1,Ip" ${headers}
|
|
||||||
fi
|
|
||||||
done
|
|
@ -1,16 +0,0 @@
|
|||||||
subject: [UNMETDEPS] $pack has unmet dependencies
|
|
||||||
assignee:
|
|
||||||
status: confirmed
|
|
||||||
subscribers: motu
|
|
||||||
tags: unmetdeps
|
|
||||||
buglist-url: http://bugs.launchpad.net/ubuntu/+bugs?field.tag=unmetdeps
|
|
||||||
text:
|
|
||||||
A run of
|
|
||||||
.
|
|
||||||
LC_ALL=C apt-cache -i unmet | grep ^Package | cut -d' ' -f2 | grep
|
|
||||||
-v dbgsym | sort -u | xargs apt-cache showsrc | grep ^Directory |
|
|
||||||
sed 's/Package\:\ //g' | grep verse | cut -d'/' -f4
|
|
||||||
indicates that the source package $pack has binary packages that are not
|
|
||||||
installable (on AMD64) at the moment.
|
|
||||||
.
|
|
||||||
Please have a look and make sure it's installable again.
|
|
@ -1,2 +0,0 @@
|
|||||||
z88dk
|
|
||||||
zope-quotafolder
|
|
118
get-branches
118
get-branches
@ -1,118 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007 Canonical Ltd.
|
|
||||||
# Created by Daniel Holbach <daniel.holbach@ubuntu.com>
|
|
||||||
# Modified by Jonathan Patrick Davies <jpds@ubuntu.com>
|
|
||||||
#
|
|
||||||
# ##################################################################
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# See file /usr/share/common-licenses/GPL-3 for more details.
|
|
||||||
#
|
|
||||||
# ##################################################################
|
|
||||||
#
|
|
||||||
# This script is used to checkout or branch all the Bazaar branches
|
|
||||||
# of a Launchpad team.
|
|
||||||
#
|
|
||||||
|
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
from optparse import OptionParser
|
|
||||||
from ubuntutools.lp.lpapicache import PersonTeam
|
|
||||||
|
|
||||||
def main():
|
|
||||||
usage = "Usage: %prog [-d <directory>] -t <team> [-o <operation>]"
|
|
||||||
usage += "\nUsage: %prog <team>"
|
|
||||||
opt_parser = OptionParser(usage)
|
|
||||||
|
|
||||||
# Our options.
|
|
||||||
opt_parser.add_option("-d", "--directory", action="store", type="string",
|
|
||||||
dest="directory", default=os.getcwd(),
|
|
||||||
help="Directory to download branches to.")
|
|
||||||
opt_parser.add_option("-t", "--team", action="store", type="string",
|
|
||||||
dest="lpteam",
|
|
||||||
help="Launchpad team to download branches from.")
|
|
||||||
opt_parser.add_option("-o", "--operation", action="store", type="string",
|
|
||||||
dest="operation", default="branch",
|
|
||||||
help="Whether to branch or checkout the Bazaar "
|
|
||||||
"branches. May be either 'branch' or "
|
|
||||||
"'checkout'.")
|
|
||||||
|
|
||||||
(options, args) = opt_parser.parse_args()
|
|
||||||
|
|
||||||
# Fetch our current directory to return to later.
|
|
||||||
pwd = os.getcwd()
|
|
||||||
|
|
||||||
# Parse our options.
|
|
||||||
if len(args) != 1 and options.lpteam == None:
|
|
||||||
opt_parser.error("No team has been specified.")
|
|
||||||
|
|
||||||
# Dictionary settings.
|
|
||||||
directory = options.directory
|
|
||||||
if not os.path.isdir(directory): # Check that it is a directory.
|
|
||||||
opt_parser.error("%s is not a valid directory." % directory)
|
|
||||||
os.chdir(directory)
|
|
||||||
|
|
||||||
# Type of Bazaar operation to perform.
|
|
||||||
operation_type = options.operation.lower()
|
|
||||||
if operation_type not in ("branch", "checkout"):
|
|
||||||
opt_parser.error("Invalid operation '%s' for '-o' flag." % \
|
|
||||||
operation_type)
|
|
||||||
|
|
||||||
# Launchpad team setting.
|
|
||||||
if options.lpteam:
|
|
||||||
team = options.lpteam.lower()
|
|
||||||
if args:
|
|
||||||
team = args[0].lower()
|
|
||||||
try:
|
|
||||||
team = PersonTeam(team)
|
|
||||||
except KeyError:
|
|
||||||
print >> sys.stderr, "E: The team '%s' doesn't exist." % team
|
|
||||||
|
|
||||||
# Get a list of branches
|
|
||||||
branches = team.getBranches()
|
|
||||||
|
|
||||||
print "Downloading all branches for the '%s' team. This may take some " \
|
|
||||||
"time." % team.display_name
|
|
||||||
|
|
||||||
try:
|
|
||||||
os.makedirs(team.name)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
os.chdir(team.name)
|
|
||||||
|
|
||||||
for branch in branches:
|
|
||||||
project_name = branch.project.name
|
|
||||||
if not os.path.exists(project_name):
|
|
||||||
os.makedirs(project_name)
|
|
||||||
os.chdir(project_name)
|
|
||||||
|
|
||||||
if not os.path.exists(branch.name):
|
|
||||||
print "Branching %s ..." % branch.display_name
|
|
||||||
cmd = ["bzr", operation_type, branch.bzr_identity, branch.name]
|
|
||||||
subprocess.call(cmd)
|
|
||||||
else:
|
|
||||||
print "Merging %s ..." % branch.display_name
|
|
||||||
os.chdir(branch.name)
|
|
||||||
subprocess.call(["bzr", "merge", "--pull", "--remember"])
|
|
||||||
os.chdir(os.path.join(directory, team.name))
|
|
||||||
|
|
||||||
os.chdir(pwd)
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
try:
|
|
||||||
main()
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
print "Operation was interrupted by user."
|
|
@ -1,95 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# Copyright 2007 (C) Siegfried-A. Gevatter <rainct@ubuntu.com>
|
|
||||||
#
|
|
||||||
# ##################################################################
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# See file /usr/share/common-licenses/GPL for more details.
|
|
||||||
#
|
|
||||||
# ##################################################################
|
|
||||||
#
|
|
||||||
# If you don't pass it any argument, this script will check if
|
|
||||||
# there's a control (debian/control) file somewhere in the current
|
|
||||||
# directory, and if it's so, it'll install the build dependencies
|
|
||||||
# listed there.
|
|
||||||
#
|
|
||||||
# If it gets a single argument, and it's the name of a file, it will
|
|
||||||
# read it, supposing that each line contains the name of a package,
|
|
||||||
# and install the build dependencies for all those.
|
|
||||||
#
|
|
||||||
# Otherwise, if there is more than one argument, or the given argument
|
|
||||||
# isn't the name of an existing file, it will suppose that the each
|
|
||||||
# argument is the name of a package, and install the dependencies for
|
|
||||||
# all of them.
|
|
||||||
|
|
||||||
if [ $# -eq 0 ]
|
|
||||||
then
|
|
||||||
#########################################################
|
|
||||||
# Install the dependencies for the source package the
|
|
||||||
# user is working on.
|
|
||||||
|
|
||||||
if [ -f ../debian/control ]; then
|
|
||||||
cd ..
|
|
||||||
elif [ ! -f ./debian/control ]; then
|
|
||||||
echo "\
|
|
||||||
Couldn't find file debian/control. You have to be inside the \
|
|
||||||
source directory of a Debian package or pass the name of the \
|
|
||||||
package(s) whose build dependencies you want to install in order \
|
|
||||||
to use this script."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
filepath="`pwd`/debian/control"
|
|
||||||
missing_dependencies=$(dpkg-checkbuilddeps 2>&1)
|
|
||||||
|
|
||||||
if [ -z "$missing_dependencies" ]; then
|
|
||||||
echo "The build dependencies described in «$filepath» are already satisfied."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Installing the build dependencies described in «$filepath»..."
|
|
||||||
|
|
||||||
if [ -x /usr/lib/pbuilder/pbuilder-satisfydepends ]
|
|
||||||
then
|
|
||||||
sudo /usr/lib/pbuilder/pbuilder-satisfydepends
|
|
||||||
else
|
|
||||||
echo "Warning: «pbuilder» isn\'t installed, falling back to «dpkg-checkbuilddeps»."
|
|
||||||
sudo aptitude install $(echo $missing_dependencies | awk -F: '{ print $3 }' | sed 's/([^)]*)//g' | sed 's/|\s[^\s]*//g')
|
|
||||||
#' <--- Fix to avoid Geanys markup breaking
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
elif [ $# -eq 1 ]
|
|
||||||
then
|
|
||||||
#########################################################
|
|
||||||
# Check if the given argument is a file name, else
|
|
||||||
# continue after the if.
|
|
||||||
if [ -f $1 ]
|
|
||||||
then
|
|
||||||
packages=''
|
|
||||||
echo "Installing the build dependencies for the following packages:"
|
|
||||||
while read line
|
|
||||||
do
|
|
||||||
echo $line
|
|
||||||
packages="$packages $line"
|
|
||||||
done < $1
|
|
||||||
echo
|
|
||||||
sudo apt-get build-dep $packages
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
#########################################################
|
|
||||||
# All arguments should be package names, install
|
|
||||||
# their build dependencies.
|
|
||||||
|
|
||||||
sudo apt-get build-dep $*
|
|
@ -1,72 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007, Canonical Ltd.
|
|
||||||
# Written by Daniel Holbach,
|
|
||||||
# Stefano Rivera
|
|
||||||
#
|
|
||||||
# ##################################################################
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# See file /usr/share/common-licenses/GPL-3 for more details.
|
|
||||||
#
|
|
||||||
# ##################################################################
|
|
||||||
|
|
||||||
from optparse import OptionParser
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from ubuntutools.config import UDTConfig
|
|
||||||
from ubuntutools.lp.libsupport import get_launchpad
|
|
||||||
|
|
||||||
USAGE = "grab-attachments <bug numbers>"
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = OptionParser('Usage: %prog [options] <bug numbers>')
|
|
||||||
parser.add_option('-l', '--lpinstance', metavar='INSTANCE',
|
|
||||||
dest='lpinstance', default=None,
|
|
||||||
help='Launchpad instance to connect to '
|
|
||||||
'(default: production)')
|
|
||||||
parser.add_option('--no-conf',
|
|
||||||
dest='no_conf', default=False, action='store_true',
|
|
||||||
help="Don't read config files or environment variables")
|
|
||||||
opts, args = parser.parse_args()
|
|
||||||
if len(args) < 1:
|
|
||||||
parser.error('No bug numbers provided')
|
|
||||||
config = UDTConfig(opts.no_conf)
|
|
||||||
if opts.lpinstance is None:
|
|
||||||
opts.lpinstance = config.get_value('LPINSTANCE')
|
|
||||||
|
|
||||||
try:
|
|
||||||
launchpad = get_launchpad("ubuntu-dev-tools", server=opts.lpinstance)
|
|
||||||
|
|
||||||
for arg in args:
|
|
||||||
try:
|
|
||||||
number = int(arg)
|
|
||||||
except ValueError:
|
|
||||||
parser.error("'%s' is not a valid bug number." % arg)
|
|
||||||
|
|
||||||
bug = launchpad.bugs[number]
|
|
||||||
|
|
||||||
for attachment in bug.attachments:
|
|
||||||
f = attachment.data.open()
|
|
||||||
filename = os.path.join(os.getcwd(), f.filename)
|
|
||||||
local_file = open(filename, "w")
|
|
||||||
local_file.write(f.read())
|
|
||||||
f.close()
|
|
||||||
local_file.close()
|
|
||||||
|
|
||||||
# no LP credentials
|
|
||||||
except IOError, error:
|
|
||||||
print error
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@ -29,7 +29,7 @@ set -e
|
|||||||
|
|
||||||
MERGE=$1
|
MERGE=$1
|
||||||
|
|
||||||
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
if [ -z "$1" -o "$1" = "-h" -o "$1" = "--help" ]; then
|
||||||
echo "Usage: $0 <package name>"
|
echo "Usage: $0 <package name>"
|
||||||
echo ""
|
echo ""
|
||||||
echo "grab-merge downloads a merge's packaging files and report from"
|
echo "grab-merge downloads a merge's packaging files and report from"
|
||||||
@ -59,10 +59,10 @@ fi
|
|||||||
if [ "$RSYNC" = "y" ]; then
|
if [ "$RSYNC" = "y" ]; then
|
||||||
URL="merges.ubuntu.com:/srv/patches.ubuntu.com/merges/$HASH/$MERGE/"
|
URL="merges.ubuntu.com:/srv/patches.ubuntu.com/merges/$HASH/$MERGE/"
|
||||||
rsync --verbose --archive --progress --compress --delete \
|
rsync --verbose --archive --progress --compress --delete \
|
||||||
"$URL" . || { echo "Error while rsyncing $URL"; exit 1; }
|
"$URL" . || { echo "Error while rsyncing $URL"; exit 1; }
|
||||||
else
|
else
|
||||||
rm -rf --one-file-system *
|
rm -rf --one-file-system *
|
||||||
wget -q https://merges.ubuntu.com/$HASH/$MERGE/REPORT || {
|
wget -nv https://merges.ubuntu.com/$HASH/$MERGE/REPORT || {
|
||||||
echo "Package not found on merges.ubuntu.com."
|
echo "Package not found on merges.ubuntu.com."
|
||||||
[ "$CREATED_DIR" != "1" ] || { cd ..; rmdir $MERGE; }
|
[ "$CREATED_DIR" != "1" ] || { cd ..; rmdir $MERGE; }
|
||||||
exit 1
|
exit 1
|
||||||
|
86
grep-merges
86
grep-merges
@ -1,4 +1,4 @@
|
|||||||
#! /usr/bin/python
|
#! /usr/bin/python3
|
||||||
#
|
#
|
||||||
# grep-merges - search for pending merges from Debian
|
# grep-merges - search for pending merges from Debian
|
||||||
#
|
#
|
||||||
@ -19,32 +19,70 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import sys
|
# pylint: disable=invalid-name
|
||||||
import urllib2
|
# pylint: enable=invalid-name
|
||||||
|
|
||||||
|
import argparse
|
||||||
import json
|
import json
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from httplib2 import Http, HttpLib2Error
|
||||||
|
|
||||||
|
import ubuntutools.misc
|
||||||
|
from ubuntutools import getLogger
|
||||||
|
|
||||||
|
Logger = getLogger()
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
if len(sys.argv) > 1:
|
parser = argparse.ArgumentParser(
|
||||||
match = sys.argv[1]
|
usage="%(prog)s [options] [string]",
|
||||||
else:
|
description="List pending merges from Debian matching string",
|
||||||
match = None
|
)
|
||||||
|
parser.add_argument("string", nargs="?", help=argparse.SUPPRESS)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
for component in ('main', 'main-manual',
|
ubuntutools.misc.require_utf8()
|
||||||
'restricted', 'restricted-manual',
|
|
||||||
'universe', 'universe-manual',
|
|
||||||
'multiverse', 'multiverse-manual'):
|
|
||||||
page = urllib2.urlopen('http://merges.ubuntu.com/%s.json' % component)
|
|
||||||
for merge in json.load(page):
|
|
||||||
package = merge['source_package']
|
|
||||||
author, uploader = '', ''
|
|
||||||
if 'user' in merge:
|
|
||||||
author = merge['user']
|
|
||||||
if 'uploader' in merge:
|
|
||||||
uploader = '(%s)' % merge['uploader']
|
|
||||||
pretty_uploader = ' '.join((author, uploader)).strip()
|
|
||||||
if (match is None or
|
|
||||||
match in package or match in author or match in uploader):
|
|
||||||
print '%s\t%s' % (package, pretty_uploader)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
for component in (
|
||||||
|
"main",
|
||||||
|
"main-manual",
|
||||||
|
"restricted",
|
||||||
|
"restricted-manual",
|
||||||
|
"universe",
|
||||||
|
"universe-manual",
|
||||||
|
"multiverse",
|
||||||
|
"multiverse-manual",
|
||||||
|
):
|
||||||
|
url = f"https://merges.ubuntu.com/{component}.json"
|
||||||
|
try:
|
||||||
|
headers, page = Http().request(url)
|
||||||
|
except HttpLib2Error as e:
|
||||||
|
Logger.exception(e)
|
||||||
|
sys.exit(1)
|
||||||
|
if headers.status != 200:
|
||||||
|
Logger.error("%s: %s %s", url, headers.status, headers.reason)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
for merge in json.loads(page):
|
||||||
|
package = merge["source_package"]
|
||||||
|
author, uploader = "", ""
|
||||||
|
if merge.get("user"):
|
||||||
|
author = merge["user"]
|
||||||
|
if merge.get("uploader"):
|
||||||
|
uploader = f"({merge['uploader']})"
|
||||||
|
teams = merge.get("teams", [])
|
||||||
|
|
||||||
|
pretty_uploader = f"{author} {uploader}"
|
||||||
|
if (
|
||||||
|
args.string is None
|
||||||
|
or args.string in package
|
||||||
|
or args.string in author
|
||||||
|
or args.string in uploader
|
||||||
|
or args.string in teams
|
||||||
|
):
|
||||||
|
Logger.info("%s\t%s", package, pretty_uploader)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
135
hugdaylist
135
hugdaylist
@ -1,135 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007 Canonical Ltd., Daniel Holbach
|
|
||||||
# Copyright (C) 2008 Jonathan Patrick Davies <jpds@ubuntu.com>
|
|
||||||
#
|
|
||||||
# ##################################################################
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# See file /usr/share/common-licenses/GPL-3 for more details.
|
|
||||||
#
|
|
||||||
# ##################################################################
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# hugdaylist - produces MoinMoin wiki formatted tables based on a Launchpad bug
|
|
||||||
# list.
|
|
||||||
#
|
|
||||||
# hugdaylist <url>
|
|
||||||
# - produces lists like https://wiki.ubuntu.com/UbuntuBugDay/20070912?action=raw
|
|
||||||
#
|
|
||||||
# hugdaylist -n <howmany> <url>
|
|
||||||
# - will only list <howmany> URLs.
|
|
||||||
|
|
||||||
import sys
|
|
||||||
from optparse import OptionParser
|
|
||||||
|
|
||||||
from ubuntutools.lp.libsupport import (get_launchpad, translate_web_api,
|
|
||||||
translate_api_web)
|
|
||||||
|
|
||||||
def check_args():
|
|
||||||
howmany = -1
|
|
||||||
url = ""
|
|
||||||
|
|
||||||
# Our usage options.
|
|
||||||
usage = "usage: %prog [-n <number>] launchpad-buglist-url"
|
|
||||||
opt_parser = OptionParser(usage)
|
|
||||||
|
|
||||||
# Options - namely just the number of bugs to output.
|
|
||||||
opt_parser.add_option("-n", "--number", type="int",
|
|
||||||
dest="number", help="Number of entries to output.")
|
|
||||||
|
|
||||||
# Parse arguments.
|
|
||||||
(options, args) = opt_parser.parse_args()
|
|
||||||
|
|
||||||
# Check if we want a number other than the default.
|
|
||||||
howmany = options.number
|
|
||||||
|
|
||||||
# Check that we have an URL.
|
|
||||||
if not args:
|
|
||||||
print >> sys.stderr, "An URL pointing to a Launchpad bug list is " \
|
|
||||||
"required."
|
|
||||||
opt_parser.print_help()
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
url = args[0]
|
|
||||||
|
|
||||||
return (howmany, url)
|
|
||||||
|
|
||||||
def filter_unsolved(task):
|
|
||||||
# TODO: don't use this filter here, only check status and assignee of
|
|
||||||
# the given task
|
|
||||||
# Filter out special types of bugs:
|
|
||||||
# - https://wiki.ubuntu.com/Bugs/HowToTriage#Special%20types%20of%20bugs
|
|
||||||
# this is expensive, parse name out of self_link instead?
|
|
||||||
subscriptions = set(s.person.name for s in task.bug.subscriptions)
|
|
||||||
if (task.status != "Fix Committed" and
|
|
||||||
(not task.assignee or task.assignee.name in ['motu','desktop-bugs']) and
|
|
||||||
'ubuntu-sponsors' not in subscriptions and
|
|
||||||
'ubuntu-archive' not in subscriptions):
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def main():
|
|
||||||
(howmany, url) = check_args()
|
|
||||||
if len(url.split("?", 1)) == 2:
|
|
||||||
# search options not supported, because there is no mapping web ui
|
|
||||||
# options <-> API options
|
|
||||||
print >> sys.stderr, "Options in url are not supported, url: %s" % url
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
launchpad = None
|
|
||||||
try:
|
|
||||||
launchpad = get_launchpad("ubuntu-dev-tools")
|
|
||||||
except IOError, error:
|
|
||||||
print error
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
api_url = translate_web_api(url, launchpad)
|
|
||||||
try:
|
|
||||||
product = launchpad.load(api_url)
|
|
||||||
except Exception, error:
|
|
||||||
response = getattr(error, "response", {})
|
|
||||||
if response.get("status", None) == "404":
|
|
||||||
print >> sys.stderr, ("The URL at '%s' does not appear to be a "
|
|
||||||
"valid url to a product") % url
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
raise
|
|
||||||
|
|
||||||
bug_list = [b for b in product.searchTasks() if filter_unsolved(b)]
|
|
||||||
|
|
||||||
if not bug_list:
|
|
||||||
print "Bug list of %s is empty." % url
|
|
||||||
sys.exit(0)
|
|
||||||
if howmany == -1:
|
|
||||||
howmany = len(bug_list)
|
|
||||||
|
|
||||||
print """
|
|
||||||
## ||<rowbgcolor="#CCFFCC"> This task is done || somebody || ||
|
|
||||||
## ||<rowbgcolor="#FFFFCC"> This task is assigned || somebody || <status> ||
|
|
||||||
## ||<rowbgcolor="#FFEBBB"> This task isn't || ... || ||
|
|
||||||
## ||<rowbgcolor="#FFCCCC"> This task is blocked on something || somebody || <explanation> ||
|
|
||||||
|
|
||||||
|| Bug || Subject || Triager ||"""
|
|
||||||
|
|
||||||
for i in list(bug_list)[:howmany]:
|
|
||||||
bug = i.bug
|
|
||||||
print '||<rowbgcolor="#FFEBBB"> [%s %s] || %s || ||' % \
|
|
||||||
(translate_api_web(bug.self_link), bug.id, bug.title)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
try:
|
|
||||||
main()
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
print >> sys.stderr, "Aborted."
|
|
||||||
sys.exit(1)
|
|
@ -1,8 +1,7 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python3
|
||||||
# -*- coding: UTF-8 -*-
|
|
||||||
|
|
||||||
# Copyright © 2009 James Westby <james.westby@ubuntu.com>,
|
# Copyright © 2009 James Westby <james.westby@ubuntu.com>,
|
||||||
# 2010 Stefano Rivera <stefanor@ubuntu.com>
|
# 2010, 2011 Stefano Rivera <stefanor@ubuntu.com>
|
||||||
#
|
#
|
||||||
# ##################################################################
|
# ##################################################################
|
||||||
#
|
#
|
||||||
@ -22,172 +21,236 @@
|
|||||||
#
|
#
|
||||||
# ##################################################################
|
# ##################################################################
|
||||||
|
|
||||||
from optparse import OptionParser, SUPPRESS_HELP
|
# pylint: disable=invalid-name
|
||||||
|
# pylint: enable=invalid-name
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import logging
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import subprocess
|
import webbrowser
|
||||||
|
from collections.abc import Iterable
|
||||||
|
from email.message import EmailMessage
|
||||||
|
|
||||||
import SOAPpy
|
import debianbts
|
||||||
|
from launchpadlib.launchpad import Launchpad
|
||||||
|
|
||||||
|
from ubuntutools import getLogger
|
||||||
from ubuntutools.config import UDTConfig
|
from ubuntutools.config import UDTConfig
|
||||||
from ubuntutools.lp.libsupport import get_launchpad, translate_api_web
|
|
||||||
|
|
||||||
def main():
|
Logger = getLogger()
|
||||||
|
ATTACHMENT_MAX_SIZE = 2000
|
||||||
|
|
||||||
|
|
||||||
|
def parse_args() -> argparse.Namespace:
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument(
|
||||||
|
"-b",
|
||||||
|
"--browserless",
|
||||||
|
action="store_true",
|
||||||
|
help="Don't open the bug in the browser at the end",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-l",
|
||||||
|
"--lpinstance",
|
||||||
|
metavar="INSTANCE",
|
||||||
|
help="LP instance to connect to (default: production)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-v", "--verbose", action="store_true", help="Print info about the bug being imported"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-n",
|
||||||
|
"--dry-run",
|
||||||
|
action="store_true",
|
||||||
|
help="Don't actually open a bug (also sets verbose)",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-p", "--package", help="Launchpad package to file bug against (default: Same as Debian)"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--no-conf", action="store_true", help="Don't read config files or environment variables."
|
||||||
|
)
|
||||||
|
parser.add_argument("bugs", nargs="+", help="Bug number(s) or URL(s)")
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def get_bug_numbers(bug_list: Iterable[str]) -> list[int]:
|
||||||
bug_re = re.compile(r"bug=(\d+)")
|
bug_re = re.compile(r"bug=(\d+)")
|
||||||
|
|
||||||
url = 'http://bugs.debian.org/cgi-bin/soap.cgi'
|
bug_nums = []
|
||||||
namespace = 'Debbugs/SOAP'
|
|
||||||
debbugs = SOAPpy.SOAPProxy(url, namespace)
|
|
||||||
|
|
||||||
# debug
|
for bug_num in bug_list:
|
||||||
#debbugs.config.dumpSOAPOut = 1
|
if bug_num.startswith("http"):
|
||||||
#debbugs.config.dumpSOAPIn = 1
|
# bug URL
|
||||||
|
match = bug_re.search(bug_num)
|
||||||
|
if match is None:
|
||||||
|
Logger.error("Can't determine bug number from %s", bug_num)
|
||||||
|
sys.exit(1)
|
||||||
|
bug_num = match.groups()[0]
|
||||||
|
bug_num = bug_num.lstrip("#")
|
||||||
|
bug_nums.append(int(bug_num))
|
||||||
|
|
||||||
parser = OptionParser(usage="%prog [option] bug ...")
|
return bug_nums
|
||||||
parser.add_option("-b", "--browserless",
|
|
||||||
help="Don't open the bug in the browser at the end",
|
|
||||||
dest="browserless", action="store_true")
|
def walk_multipart_message(message: EmailMessage) -> tuple[str, list[tuple[int, EmailMessage]]]:
|
||||||
parser.add_option("-l", "--lpinstance", metavar="INSTANCE",
|
summary = ""
|
||||||
help="Launchpad instance to connect to "
|
attachments = []
|
||||||
"(default: production)",
|
i = 1
|
||||||
dest="lpinstance", default=None)
|
for part in message.walk():
|
||||||
parser.add_option("-n", "--dry-run",
|
content_type = part.get_content_type()
|
||||||
help=SUPPRESS_HELP,
|
|
||||||
dest="lpinstance", action="store_const", const="staging")
|
if content_type.startswith("multipart/"):
|
||||||
parser.add_option("-p", "--package", metavar="PACKAGE",
|
# we're already iterating on multipart items
|
||||||
help="Launchpad package to file bug against "
|
# let's just skip the multipart extra metadata
|
||||||
"(default: Same as Debian)",
|
continue
|
||||||
dest="package", default=None)
|
if content_type == "application/pgp-signature":
|
||||||
parser.add_option("--no-conf", dest="no_conf", default=False,
|
# we're not interested in importing pgp signatures
|
||||||
help="Don't read config files or environment variables.",
|
continue
|
||||||
action="store_true")
|
|
||||||
(options, args) = parser.parse_args()
|
if part.is_attachment():
|
||||||
|
attachments.append((i, part))
|
||||||
|
elif content_type.startswith("image/"):
|
||||||
|
# images here are not attachment, they are inline, but Launchpad can't handle that,
|
||||||
|
# so let's add them as attachments
|
||||||
|
summary += f"Message part #{i}\n"
|
||||||
|
summary += f"[inline image '{part.get_filename()}']\n\n"
|
||||||
|
attachments.append((i, part))
|
||||||
|
elif content_type.startswith("text/html"):
|
||||||
|
summary += f"Message part #{i}\n"
|
||||||
|
summary += "[inline html]\n\n"
|
||||||
|
attachments.append((i, part))
|
||||||
|
elif content_type == "text/plain":
|
||||||
|
summary += f"Message part #{i}\n"
|
||||||
|
summary += part.get_content() + "\n"
|
||||||
|
else:
|
||||||
|
raise RuntimeError(
|
||||||
|
f"""Unknown message part
|
||||||
|
Your Debian bug is too weird to be imported in Launchpad, sorry.
|
||||||
|
You can fix that by patching this script in ubuntu-dev-tools.
|
||||||
|
Faulty message part:
|
||||||
|
{part}"""
|
||||||
|
)
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
return summary, attachments
|
||||||
|
|
||||||
|
|
||||||
|
def process_bugs(
|
||||||
|
bugs: Iterable[debianbts.Bugreport],
|
||||||
|
launchpad: Launchpad,
|
||||||
|
package: str,
|
||||||
|
dry_run: bool = True,
|
||||||
|
browserless: bool = False,
|
||||||
|
) -> bool:
|
||||||
|
debian = launchpad.distributions["debian"]
|
||||||
|
ubuntu = launchpad.distributions["ubuntu"]
|
||||||
|
lp_debbugs = launchpad.bug_trackers.getByName(name="debbugs")
|
||||||
|
|
||||||
|
err = False
|
||||||
|
for bug in bugs:
|
||||||
|
ubupackage = bug.source
|
||||||
|
if package:
|
||||||
|
ubupackage = package
|
||||||
|
bug_num = bug.bug_num
|
||||||
|
subject = bug.subject
|
||||||
|
log = debianbts.get_bug_log(bug_num)
|
||||||
|
message = log[0]["message"]
|
||||||
|
assert isinstance(message, EmailMessage)
|
||||||
|
attachments: list[tuple[int, EmailMessage]] = []
|
||||||
|
if message.is_multipart():
|
||||||
|
summary, attachments = walk_multipart_message(message)
|
||||||
|
else:
|
||||||
|
summary = str(message.get_payload())
|
||||||
|
|
||||||
|
target = ubuntu.getSourcePackage(name=ubupackage)
|
||||||
|
if target is None:
|
||||||
|
Logger.error(
|
||||||
|
"Source package '%s' is not in Ubuntu. Please specify "
|
||||||
|
"the destination source package with --package",
|
||||||
|
ubupackage,
|
||||||
|
)
|
||||||
|
err = True
|
||||||
|
continue
|
||||||
|
|
||||||
|
description = f"Imported from Debian bug http://bugs.debian.org/{bug_num}:\n\n{summary}"
|
||||||
|
# LP limits descriptions to 50K chars
|
||||||
|
description = (description[:49994] + " [...]") if len(description) > 50000 else description
|
||||||
|
|
||||||
|
Logger.debug("Target: %s", target)
|
||||||
|
Logger.debug("Subject: %s", subject)
|
||||||
|
Logger.debug("Description: ")
|
||||||
|
Logger.debug(description)
|
||||||
|
for i, attachment in attachments:
|
||||||
|
Logger.debug("Attachment #%s (%s)", i, attachment.get_filename() or "inline")
|
||||||
|
Logger.debug("Content:")
|
||||||
|
if attachment.get_content_type() == "text/plain":
|
||||||
|
content = attachment.get_content()
|
||||||
|
if len(content) > ATTACHMENT_MAX_SIZE:
|
||||||
|
content = (
|
||||||
|
content[:ATTACHMENT_MAX_SIZE]
|
||||||
|
+ f" [attachment cropped after {ATTACHMENT_MAX_SIZE} characters...]"
|
||||||
|
)
|
||||||
|
Logger.debug(content)
|
||||||
|
else:
|
||||||
|
Logger.debug("[data]")
|
||||||
|
|
||||||
|
if dry_run:
|
||||||
|
Logger.info("Dry-Run: not creating Ubuntu bug.")
|
||||||
|
continue
|
||||||
|
|
||||||
|
u_bug = launchpad.bugs.createBug(target=target, title=subject, description=description)
|
||||||
|
for i, attachment in attachments:
|
||||||
|
name = f"#{i}-{attachment.get_filename() or "inline"}"
|
||||||
|
content = attachment.get_content()
|
||||||
|
if isinstance(content, str):
|
||||||
|
# Launchpad only wants bytes
|
||||||
|
content = content.encode()
|
||||||
|
u_bug.addAttachment(
|
||||||
|
filename=name,
|
||||||
|
data=content,
|
||||||
|
comment=f"Imported from Debian bug http://bugs.debian.org/{bug_num}",
|
||||||
|
)
|
||||||
|
d_sp = debian.getSourcePackage(name=package)
|
||||||
|
if d_sp is None and package:
|
||||||
|
d_sp = debian.getSourcePackage(name=package)
|
||||||
|
d_task = u_bug.addTask(target=d_sp)
|
||||||
|
d_watch = u_bug.addWatch(remote_bug=bug_num, bug_tracker=lp_debbugs)
|
||||||
|
d_task.bug_watch = d_watch
|
||||||
|
d_task.lp_save()
|
||||||
|
Logger.info("Opened %s", u_bug.web_link)
|
||||||
|
if not browserless:
|
||||||
|
webbrowser.open(u_bug.web_link)
|
||||||
|
|
||||||
|
return err
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
options = parse_args()
|
||||||
|
|
||||||
config = UDTConfig(options.no_conf)
|
config = UDTConfig(options.no_conf)
|
||||||
if options.lpinstance is None:
|
if options.lpinstance is None:
|
||||||
options.lpinstance = config.get_value("LPINSTANCE")
|
options.lpinstance = config.get_value("LPINSTANCE")
|
||||||
|
|
||||||
try:
|
if options.dry_run:
|
||||||
launchpad = get_launchpad("ubuntu-dev-tools", options.lpinstance)
|
launchpad = Launchpad.login_anonymously("ubuntu-dev-tools")
|
||||||
except IOError, msg:
|
options.verbose = True
|
||||||
print msg
|
else:
|
||||||
print "No credentials, can't continue"
|
launchpad = Launchpad.login_with("ubuntu-dev-tools", options.lpinstance)
|
||||||
|
|
||||||
|
if options.verbose:
|
||||||
|
Logger.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
bugs = debianbts.get_status(get_bug_numbers(options.bugs))
|
||||||
|
|
||||||
|
if not bugs:
|
||||||
|
Logger.error("Cannot find any of the listed bugs")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
debian = launchpad.distributions['debian']
|
if process_bugs(bugs, launchpad, options.package, options.dry_run, options.browserless):
|
||||||
ubuntu = launchpad.distributions['ubuntu']
|
sys.exit(1)
|
||||||
lp_debbugs = launchpad.bug_trackers.getByName(name='debbugs')
|
|
||||||
|
|
||||||
bug_nums = []
|
|
||||||
|
|
||||||
for bug_num in args:
|
if __name__ == "__main__":
|
||||||
if bug_num.startswith("http"):
|
|
||||||
# bug URL
|
|
||||||
match = bug_re.search(bug_num)
|
|
||||||
if match is None:
|
|
||||||
raise ValueError("Can't determine bug number from %s" % bug_num)
|
|
||||||
bug_num = match.groups()[0]
|
|
||||||
bug_num = bug_num.lstrip("#")
|
|
||||||
bug_num = int(bug_num)
|
|
||||||
bug_nums.append(bug_num)
|
|
||||||
|
|
||||||
bugs = debbugs.get_status(*bug_nums)
|
|
||||||
|
|
||||||
if len(bug_nums) > 1:
|
|
||||||
bugs = bugs[0]
|
|
||||||
|
|
||||||
#import pdb; pdb.set_trace()
|
|
||||||
for bug in bugs:
|
|
||||||
bug = bug.value
|
|
||||||
package = bug.package
|
|
||||||
ubupackage = package
|
|
||||||
if options.package:
|
|
||||||
ubupackage = options.package
|
|
||||||
bug_num = bug.bug_num
|
|
||||||
subject = bug.subject
|
|
||||||
log = debbugs.get_bug_log(bug_num)
|
|
||||||
summary = log[0][0]
|
|
||||||
target = ubuntu.getSourcePackage(name=ubupackage)
|
|
||||||
u_bug = launchpad.bugs.createBug(target=target, title=subject,
|
|
||||||
description='Imported from Debian bug '
|
|
||||||
'http://bugs.debian.org/%d:\n\n%s'
|
|
||||||
% (bug_num, summary))
|
|
||||||
d_sp = debian.getSourcePackage(name=package)
|
|
||||||
if d_sp is None and options.package:
|
|
||||||
d_sp = debian.getSourcePackage(name=options.package)
|
|
||||||
d_task = u_bug.addTask(target=d_sp)
|
|
||||||
d_watch = u_bug.addWatch(remote_bug=bug_num, bug_tracker=lp_debbugs)
|
|
||||||
d_task.bug_watch = d_watch
|
|
||||||
d_task.lp_save()
|
|
||||||
web_url = translate_api_web(u_bug.self_link)
|
|
||||||
print "Opened %s" % web_url
|
|
||||||
if not options.browserless:
|
|
||||||
subprocess.call(["xdg-open", web_url])
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
main()
|
||||||
|
|
||||||
#def get_status(*args):
|
|
||||||
# result = server.get_status(*args)
|
|
||||||
# return result
|
|
||||||
#
|
|
||||||
#def get_bugs(*args):
|
|
||||||
# result = server.get_bugs(*args)
|
|
||||||
# return result
|
|
||||||
#
|
|
||||||
#def get_usertag(email, *tags):
|
|
||||||
# result = server.get_usertag(email, *tags)
|
|
||||||
# return result
|
|
||||||
#
|
|
||||||
#def get_bug_log(bugnumber):
|
|
||||||
# result = server.get_bug_log(bugnumber)
|
|
||||||
# return result
|
|
||||||
#
|
|
||||||
#def newest_bugs(amount):
|
|
||||||
# result = server.newest_bugs(amount)
|
|
||||||
# return result
|
|
||||||
#
|
|
||||||
#if __name__ == "__main__":
|
|
||||||
# # Demonstration
|
|
||||||
#
|
|
||||||
# # some debug output
|
|
||||||
#
|
|
||||||
# # All bugs from one package (returns a list of bugnumbers)
|
|
||||||
# print get_bugs("package", "gtk-qt-engine")
|
|
||||||
#
|
|
||||||
# # All bugs of a maintainer
|
|
||||||
# print get_bugs("maint", "debian-qa@lists.debian.org")
|
|
||||||
#
|
|
||||||
# # returns the status of those bugs
|
|
||||||
# print get_status(409909, 419920, 421581, 417044, 397993)
|
|
||||||
#
|
|
||||||
# # get_status and get_bugs combined:
|
|
||||||
# print get_status(get_bugs("package", "gtk-qt-engine"))
|
|
||||||
#
|
|
||||||
# # returns the full log for the given bug number
|
|
||||||
# print get_bug_log(202526)
|
|
||||||
#
|
|
||||||
# # retrives the newest 20 bugs
|
|
||||||
# print newest_bugs(20)
|
|
||||||
#
|
|
||||||
# # All bugs of a maintainer
|
|
||||||
# print get_bugs("maint", "debian-qa@lists.debian.org")
|
|
||||||
#
|
|
||||||
# # returns the status of those bugs
|
|
||||||
# print get_status(409909, 419920, 421581, 417044, 397993)
|
|
||||||
#
|
|
||||||
# # get_status and get_bugs combined:
|
|
||||||
# print get_status(get_bugs("package", "gtk-qt-engine"))
|
|
||||||
#
|
|
||||||
# # returns the full log for the given bug number
|
|
||||||
# print get_bug_log(202526)
|
|
||||||
#
|
|
||||||
# # retrives the newest 20 bugs
|
|
||||||
# print newest_bugs(20)
|
|
||||||
#
|
|
||||||
# # returns bugs tagged by the given email
|
|
||||||
# print get_usertag("debian-qa@lists.debian.org")
|
|
||||||
#
|
|
||||||
# # returns bugs tagged by the given email, with the given tag
|
|
||||||
# print get_usertag("debian-qa@lists.debian.org", "qa-ftbfs-20070708")
|
|
||||||
#
|
|
||||||
|
105
lp-bitesize
Executable file
105
lp-bitesize
Executable file
@ -0,0 +1,105 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
"""Add 'bitesize' tag to bugs and add a comment."""
|
||||||
|
|
||||||
|
# Copyright (c) 2011 Canonical Ltd.
|
||||||
|
#
|
||||||
|
# bitesize 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, or (at your option) any
|
||||||
|
# later version.
|
||||||
|
#
|
||||||
|
# bitesize 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 bitesize; see the file COPYING. If not, write to the Free
|
||||||
|
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
||||||
|
# 02110-1301, USA.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Daniel Holbach <daniel.holbach@canonical.com>
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from launchpadlib.errors import HTTPError
|
||||||
|
from launchpadlib.launchpad import Launchpad
|
||||||
|
|
||||||
|
from ubuntutools import getLogger
|
||||||
|
from ubuntutools.config import UDTConfig
|
||||||
|
|
||||||
|
Logger = getLogger()
|
||||||
|
|
||||||
|
|
||||||
|
def error_out(msg, *args):
|
||||||
|
Logger.error(msg, *args)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def save_entry(entry):
|
||||||
|
try:
|
||||||
|
entry.lp_save()
|
||||||
|
except HTTPError as error:
|
||||||
|
error_out("%s", error.content)
|
||||||
|
|
||||||
|
|
||||||
|
def tag_bug(bug):
|
||||||
|
bug.tags = bug.tags + ["bitesize"] # LP: #254901 workaround
|
||||||
|
save_entry(bug)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(usage="%(prog)s [options] <bug number>")
|
||||||
|
parser.add_argument(
|
||||||
|
"-l",
|
||||||
|
"--lpinstance",
|
||||||
|
metavar="INSTANCE",
|
||||||
|
help="Launchpad instance to connect to (default: production)",
|
||||||
|
dest="lpinstance",
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--no-conf",
|
||||||
|
help="Don't read config files or environment variables.",
|
||||||
|
dest="no_conf",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
)
|
||||||
|
parser.add_argument("bug_number", help=argparse.SUPPRESS)
|
||||||
|
args = parser.parse_args()
|
||||||
|
config = UDTConfig(args.no_conf)
|
||||||
|
if args.lpinstance is None:
|
||||||
|
args.lpinstance = config.get_value("LPINSTANCE")
|
||||||
|
|
||||||
|
launchpad = Launchpad.login_with("ubuntu-dev-tools", args.lpinstance)
|
||||||
|
if launchpad is None:
|
||||||
|
error_out("Couldn't authenticate to Launchpad.")
|
||||||
|
|
||||||
|
# check that the new main bug isn't a duplicate
|
||||||
|
try:
|
||||||
|
bug = launchpad.bugs[args.bug_number]
|
||||||
|
except HTTPError as error:
|
||||||
|
if error.response.status == 401:
|
||||||
|
error_out(
|
||||||
|
"Don't have enough permissions to access bug %s. %s",
|
||||||
|
args.bug_number,
|
||||||
|
error.content,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
|
if "bitesize" in bug.tags:
|
||||||
|
error_out("Bug is already marked as 'bitesize'.")
|
||||||
|
bug.newMessage(
|
||||||
|
content="I'm marking this bug as 'bitesize' as it looks "
|
||||||
|
"like an issue that is easy to fix and suitable "
|
||||||
|
"for newcomers in Ubuntu development. If you need "
|
||||||
|
"any help with fixing it, talk to me about it."
|
||||||
|
)
|
||||||
|
bug.subscribe(person=launchpad.me)
|
||||||
|
tag_bug(launchpad.bugs[bug.id]) # fresh bug object, LP: #336866 workaround
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
64
lp-list-bugs
64
lp-list-bugs
@ -1,64 +0,0 @@
|
|||||||
#! /usr/bin/python
|
|
||||||
# -*- coding: UTF-8 -*-
|
|
||||||
"""Briefly list status of Launchpad bugs."""
|
|
||||||
|
|
||||||
# Copyright (c) 2010 Canonical Ltd.
|
|
||||||
#
|
|
||||||
# lp-set-dup 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, or (at your option) any
|
|
||||||
# later version.
|
|
||||||
#
|
|
||||||
# lp-set-dup 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 lp-set-dup; see the file COPYING. If not, write to the Free
|
|
||||||
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
||||||
# 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# Authors:
|
|
||||||
# Colin Watson <cjwatson@ubuntu.com>
|
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from optparse import OptionParser
|
|
||||||
|
|
||||||
from ubuntutools.lp.libsupport import get_launchpad
|
|
||||||
from launchpadlib.errors import HTTPError
|
|
||||||
|
|
||||||
def main():
|
|
||||||
usage = "Usage: %prog <bug> [...]"
|
|
||||||
parser = OptionParser(usage)
|
|
||||||
args = parser.parse_args()[1]
|
|
||||||
if len(args) < 1:
|
|
||||||
parser.error("Need at least one bug number")
|
|
||||||
|
|
||||||
try:
|
|
||||||
launchpad = get_launchpad('ubuntu-dev-tools')
|
|
||||||
except Exception, error:
|
|
||||||
print >> sys.stderr, 'Could not connect to Launchpad:', str(error)
|
|
||||||
sys.exit(2)
|
|
||||||
|
|
||||||
for bugnum in args:
|
|
||||||
try:
|
|
||||||
bug = launchpad.bugs[bugnum]
|
|
||||||
print "Bug %s: %s" % (bugnum, bug.title)
|
|
||||||
for task in bug.bug_tasks:
|
|
||||||
print " %s: %s" % (task.bug_target_name, task.status)
|
|
||||||
except HTTPError, error:
|
|
||||||
if error.response.status == 401:
|
|
||||||
print >> sys.stderr, \
|
|
||||||
("E: Don't have enough permissions to access bug %s" %
|
|
||||||
bugnum)
|
|
||||||
print >> sys.stderr, error.content
|
|
||||||
continue
|
|
||||||
elif error.response.status == 404:
|
|
||||||
print >> sys.stderr, "E: Bug %s not found" % bugnum
|
|
||||||
else:
|
|
||||||
raise
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@ -1,144 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
# Copyright (c) 2009 Canonical Ltd.
|
|
||||||
#
|
|
||||||
# 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 2, or (at your option) any
|
|
||||||
# later version.
|
|
||||||
#
|
|
||||||
# lp-project-upload 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.
|
|
||||||
|
|
||||||
# Authors:
|
|
||||||
# Martin Pitt <martin.pitt@ubuntu.com>, based on
|
|
||||||
# http://blog.launchpad.net/api/recipe-for-uploading-files-via-the-api
|
|
||||||
|
|
||||||
'''Upload a release tarball to a Launchpad project.'''
|
|
||||||
|
|
||||||
import datetime
|
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
import tempfile
|
|
||||||
|
|
||||||
from ubuntutools.lp.libsupport import get_launchpad
|
|
||||||
from launchpadlib.errors import HTTPError
|
|
||||||
|
|
||||||
def create_release(project, version):
|
|
||||||
'''Create new release and milestone for LP project.'''
|
|
||||||
|
|
||||||
print 'Release %s could not be found for project. Create it? (Y/n)' % \
|
|
||||||
version
|
|
||||||
answer = sys.stdin.readline().strip()
|
|
||||||
if answer.startswith('n'):
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
n_series = len(project.series)
|
|
||||||
if n_series == 1:
|
|
||||||
series = project.series[0]
|
|
||||||
elif n_series > 1:
|
|
||||||
msg = 'More than one series exist. Which one would you like to ' \
|
|
||||||
'upload to? Possible series are (listed as index, name):'
|
|
||||||
print msg
|
|
||||||
for idx, serie in enumerate(project.series):
|
|
||||||
print '\t%i - %s' % (idx, serie.name)
|
|
||||||
print 'Enter series index: '
|
|
||||||
answer = sys.stdin.readline().strip()
|
|
||||||
try:
|
|
||||||
series = project.series[int(answer)]
|
|
||||||
except (ValueError, IndexError):
|
|
||||||
print >> sys.stderr, 'The series index is invalid (%s).' % answer
|
|
||||||
sys.exit(3)
|
|
||||||
else:
|
|
||||||
print "Using series named '%s'" % series.name
|
|
||||||
else:
|
|
||||||
print >> sys.stderr, ('Does not support creating releases if no '
|
|
||||||
'series exists.')
|
|
||||||
sys.exit(3)
|
|
||||||
|
|
||||||
release_date = datetime.date.today().strftime('%Y-%m-%d')
|
|
||||||
milestone = series.newMilestone(name=version,
|
|
||||||
date_targeted=release_date)
|
|
||||||
return milestone.createProductRelease(date_released=release_date)
|
|
||||||
|
|
||||||
def edit_file(prefix, description):
|
|
||||||
(fd, f) = tempfile.mkstemp(prefix=prefix+'.')
|
|
||||||
os.write(fd, '\n\n#------\n# Please enter the %s here. '
|
|
||||||
'Lines which start with "#" are ignored.\n' % description)
|
|
||||||
os.close(fd)
|
|
||||||
subprocess.call(['sensible-editor', f])
|
|
||||||
content = ''
|
|
||||||
for line in open(f):
|
|
||||||
if line.startswith('#'):
|
|
||||||
continue
|
|
||||||
content += line
|
|
||||||
|
|
||||||
return content.strip()
|
|
||||||
|
|
||||||
def main():
|
|
||||||
if len(sys.argv) != 4:
|
|
||||||
print >> sys.stderr, '''Upload a release tarball to a Launchpad project.
|
|
||||||
|
|
||||||
Usage: %s <project name> <version> <tarball>''' % sys.argv[0]
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
(project, version, tarball) = sys.argv[1:]
|
|
||||||
|
|
||||||
try:
|
|
||||||
launchpad = get_launchpad('ubuntu-dev-tools')
|
|
||||||
except Exception, error:
|
|
||||||
print >> sys.stderr, 'Could not connect to Launchpad:', str(error)
|
|
||||||
sys.exit(2)
|
|
||||||
|
|
||||||
try:
|
|
||||||
# Look up the project using the Launchpad instance.
|
|
||||||
proj = launchpad.projects[project]
|
|
||||||
# Find the release in the project's releases collection.
|
|
||||||
release = None
|
|
||||||
for rel in proj.releases:
|
|
||||||
if rel.version == version:
|
|
||||||
release = rel
|
|
||||||
break
|
|
||||||
if not release:
|
|
||||||
release = create_release(proj, version)
|
|
||||||
|
|
||||||
# Get the file contents.
|
|
||||||
file_content = open(tarball, 'r').read()
|
|
||||||
# Get the signature, if available.
|
|
||||||
signature = tarball + '.asc'
|
|
||||||
if not os.path.exists(signature):
|
|
||||||
print 'Calling GPG to create tarball signature...'
|
|
||||||
cmd = ['gpg', '--armor', '--sign', '--detach-sig', tarball]
|
|
||||||
if subprocess.call(cmd) != 0:
|
|
||||||
print >> sys.stderr, 'gpg failed, aborting'
|
|
||||||
|
|
||||||
if os.path.exists(signature):
|
|
||||||
signature_content = open(signature, 'r').read()
|
|
||||||
else:
|
|
||||||
signature_content = None
|
|
||||||
|
|
||||||
# Create a new product release file.
|
|
||||||
filename = os.path.basename(tarball)
|
|
||||||
release.add_file(filename=filename, description='release tarball',
|
|
||||||
file_content=file_content, content_type='appplication/x-gzip',
|
|
||||||
file_type='Code Release Tarball', signature_filename=signature,
|
|
||||||
signature_content=signature_content)
|
|
||||||
|
|
||||||
changelog = edit_file('changelog', 'changelog')
|
|
||||||
if changelog:
|
|
||||||
release.changelog = changelog
|
|
||||||
release_notes = edit_file('releasenotes', 'release notes')
|
|
||||||
if release_notes:
|
|
||||||
release.release_notes = release_notes
|
|
||||||
|
|
||||||
release.lp_save()
|
|
||||||
|
|
||||||
except HTTPError, error:
|
|
||||||
print 'An error happened in the upload:', error.content
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
138
lp-set-dup
138
lp-set-dup
@ -1,138 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
# -*- coding: UTF-8 -*-
|
|
||||||
"""Sets the "duplicate of" bug of a bug and its dups."""
|
|
||||||
|
|
||||||
# Copyright (c) 2009 Canonical Ltd.
|
|
||||||
#
|
|
||||||
# lp-set-dup 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 2, or (at your option) any
|
|
||||||
# later version.
|
|
||||||
#
|
|
||||||
# lp-set-dup 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 lp-set-dup; see the file COPYING. If not, write to the Free
|
|
||||||
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
||||||
# 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# Authors:
|
|
||||||
# Loïc Minier <lool@dooz.org>
|
|
||||||
|
|
||||||
import sys
|
|
||||||
from optparse import OptionParser
|
|
||||||
|
|
||||||
from launchpadlib.errors import HTTPError
|
|
||||||
|
|
||||||
import ubuntutools.lp.libsupport as lp_libsupport
|
|
||||||
from ubuntutools.config import UDTConfig
|
|
||||||
|
|
||||||
def die(message):
|
|
||||||
print >> sys.stderr, "Fatal: " + message
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
def main():
|
|
||||||
usage = "Usage: %prog [-f] <new main bug> <bug to dup> [<bug to dup>...]"
|
|
||||||
opt_parser = OptionParser(usage)
|
|
||||||
opt_parser.add_option("-f",
|
|
||||||
help="Skip confirmation prompt",
|
|
||||||
dest="force", default=False, action="store_true")
|
|
||||||
opt_parser.add_option("-l", "--lpinstance", metavar="INSTANCE",
|
|
||||||
help="Launchpad instance to connect to "
|
|
||||||
"(default: production)",
|
|
||||||
dest="lpinstance", default=None)
|
|
||||||
opt_parser.add_option("--no-conf",
|
|
||||||
help="Don't read config files or "
|
|
||||||
"environment variables.",
|
|
||||||
dest="no_conf", default=False, action="store_true")
|
|
||||||
(options, args) = opt_parser.parse_args()
|
|
||||||
|
|
||||||
if len(args) < 2:
|
|
||||||
opt_parser.error("Need at least a new main bug and a bug to dup")
|
|
||||||
|
|
||||||
config = UDTConfig(options.no_conf)
|
|
||||||
if options.lpinstance is None:
|
|
||||||
options.lpinstance = config.get_value("LPINSTANCE")
|
|
||||||
|
|
||||||
launchpad = None
|
|
||||||
try:
|
|
||||||
print "Setting up Launchpad"
|
|
||||||
launchpad = lp_libsupport.get_launchpad("ubuntu-dev-tools",
|
|
||||||
server=options.lpinstance)
|
|
||||||
print "Launchpad setup complete"
|
|
||||||
except ImportError:
|
|
||||||
suggestion = "check whether python-launchpadlib is installed"
|
|
||||||
except IOError:
|
|
||||||
suggestion = "you might want to \"manage-credentials create " + \
|
|
||||||
"--consumer ubuntu-dev-tools --level 2\""
|
|
||||||
if launchpad is None:
|
|
||||||
die("Couldn't setup Launchpad for the ubuntu-dev-tools consumer; %s" % \
|
|
||||||
(suggestion, ))
|
|
||||||
|
|
||||||
# check that the new main bug isn't a duplicate
|
|
||||||
try:
|
|
||||||
new_main_bug = launchpad.bugs[args[0]]
|
|
||||||
except HTTPError, error:
|
|
||||||
if error.response.status == 401:
|
|
||||||
print >> sys.stderr, ("E: Don't have enough permissions to access "
|
|
||||||
"bug %s") % (args[0])
|
|
||||||
die(error.content)
|
|
||||||
else:
|
|
||||||
raise
|
|
||||||
new_main_dup_of = new_main_bug.duplicate_of
|
|
||||||
if new_main_dup_of is not None:
|
|
||||||
answer = None
|
|
||||||
try:
|
|
||||||
answer = raw_input("Bug %s is a duplicate of %s; would you like to "
|
|
||||||
"use %s as the new main bug instead? [y/N]" % \
|
|
||||||
(new_main_bug.id, new_main_dup_of.id,
|
|
||||||
new_main_dup_of.id))
|
|
||||||
except:
|
|
||||||
die("Aborted")
|
|
||||||
if answer.lower() not in ("y", "yes"):
|
|
||||||
die("User aborted")
|
|
||||||
new_main_bug = new_main_dup_of
|
|
||||||
|
|
||||||
# build list of bugs to process, first the dups then the bug
|
|
||||||
bugs_to_process = []
|
|
||||||
for bug_number in args[1:]:
|
|
||||||
print "Processing %s" % (bug_number)
|
|
||||||
try:
|
|
||||||
bug = launchpad.bugs[bug_number]
|
|
||||||
except HTTPError, error:
|
|
||||||
if error.response.status == 401:
|
|
||||||
print >> sys.stderr, ("W: Don't have enough permissions to "
|
|
||||||
"access bug %s") % (bug_number)
|
|
||||||
print >> sys.stderr, "W: %s" % (error.content)
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
raise
|
|
||||||
dups = bug.duplicates
|
|
||||||
if dups is not None:
|
|
||||||
bugs_to_process.extend(dups)
|
|
||||||
print "Found %i dups for %s" % (len(dups), bug_number)
|
|
||||||
bugs_to_process.append(bug)
|
|
||||||
|
|
||||||
# process dups first, then their main bug
|
|
||||||
print "Would set the following bugs as duplicates of %s: %s" % \
|
|
||||||
(new_main_bug.id, " ".join([str(b.id) for b in bugs_to_process]))
|
|
||||||
|
|
||||||
if not options.force:
|
|
||||||
answer = None
|
|
||||||
try:
|
|
||||||
answer = raw_input("Proceed? [y/N]")
|
|
||||||
except:
|
|
||||||
die("Aborted")
|
|
||||||
if answer.lower() not in ("y", "yes"):
|
|
||||||
die("User aborted")
|
|
||||||
|
|
||||||
for bug in bugs_to_process:
|
|
||||||
print "Marking bug %s as a duplicate of %s" % (bug.id, new_main_bug.id)
|
|
||||||
bug.duplicate_of = new_main_bug
|
|
||||||
bug.lp_save()
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
86
lp-shell
86
lp-shell
@ -1,86 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
# Open an interactive launchpadlib Python shell.
|
|
||||||
# It supports all known LP service instances and API versions. The login
|
|
||||||
# can optionally happen anonymously.
|
|
||||||
|
|
||||||
# Author: Martin Pitt <martin.pitt@ubuntu.com>
|
|
||||||
# Copyright: (C) 2010 Canonical Ltd.
|
|
||||||
#
|
|
||||||
# This package 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, at version 2.
|
|
||||||
#
|
|
||||||
# This package 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.
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import code
|
|
||||||
from optparse import OptionParser
|
|
||||||
|
|
||||||
from launchpadlib.launchpad import Launchpad
|
|
||||||
from launchpadlib.uris import lookup_service_root
|
|
||||||
|
|
||||||
def main():
|
|
||||||
instance = 'production'
|
|
||||||
valid_api_versions = ('beta', '1.0', 'devel')
|
|
||||||
api_version = '1.0'
|
|
||||||
|
|
||||||
usage = 'Usage: %prog [-a] [instance] [LP API version]'
|
|
||||||
opt_parser = OptionParser(usage)
|
|
||||||
opt_parser.add_option('-a', action='store_true',
|
|
||||||
dest='anonymous', default=False,
|
|
||||||
help='Login anonymously into LP.')
|
|
||||||
|
|
||||||
(options, args) = opt_parser.parse_args()
|
|
||||||
|
|
||||||
if len(args) >= 1:
|
|
||||||
try:
|
|
||||||
instance = lookup_service_root(args[0])
|
|
||||||
except ValueError, err:
|
|
||||||
print 'E: %s' % (err)
|
|
||||||
print 'I: Falling back to "production".'
|
|
||||||
|
|
||||||
if len(args) >= 2:
|
|
||||||
if args[1] in valid_api_versions:
|
|
||||||
api_version = args[1]
|
|
||||||
else:
|
|
||||||
print 'E: "%s" is not a valid LP API version.' % (args[1])
|
|
||||||
print 'I: Falling back to "1.0".'
|
|
||||||
|
|
||||||
if options.anonymous:
|
|
||||||
launchpad = Launchpad.login_anonymously('udt-lp-shell', instance,
|
|
||||||
version=api_version)
|
|
||||||
banner = ('Connected anonymously to LP service "%s" with API version '
|
|
||||||
'"%s":' % (instance, api_version))
|
|
||||||
else:
|
|
||||||
launchpad = Launchpad.login_with('udt-lp-shell', instance,
|
|
||||||
version=api_version)
|
|
||||||
banner = 'Connected to LP service "%s" with API version "%s":' % \
|
|
||||||
(instance, api_version)
|
|
||||||
|
|
||||||
banner += '\nNote: LP can be accessed through the "lp" object.'
|
|
||||||
|
|
||||||
class CompleterConsole(code.InteractiveConsole):
|
|
||||||
def __init__(self):
|
|
||||||
local = {'lp': launchpad}
|
|
||||||
code.InteractiveConsole.__init__(self, locals=local)
|
|
||||||
try:
|
|
||||||
import readline
|
|
||||||
except ImportError:
|
|
||||||
print 'I: readline module not available.'
|
|
||||||
else:
|
|
||||||
import rlcompleter
|
|
||||||
readline.parse_and_bind("tab: complete")
|
|
||||||
|
|
||||||
# Disable default apport hook, as lp-shell is intended for interactive use
|
|
||||||
# and thus exceptions often bubble up to the top level.
|
|
||||||
sys.excepthook = sys.__excepthook__
|
|
||||||
|
|
||||||
console = CompleterConsole()
|
|
||||||
console.interact(banner)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user