Compare commits
2889 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
593c1ca0e2 | ||
![]() |
8ebd69f4cf | ||
![]() |
5a83b036b8 | ||
![]() |
8f1ec4e34a | ||
![]() |
4e63390e17 | ||
![]() |
65b9bb0d6b | ||
![]() |
252ec6bcf2 | ||
![]() |
51f400d8bb | ||
![]() |
2988f9a651 | ||
![]() |
d3bd4f49fa | ||
![]() |
f49627f417 | ||
![]() |
b587358b11 | ||
![]() |
e189faabe5 | ||
![]() |
34b4661268 | ||
![]() |
9562100580 | ||
![]() |
e98bf0da72 | ||
![]() |
cefe3dd4ff | ||
![]() |
8d71e67a75 | ||
![]() |
b933485394 | ||
![]() |
11c79ee537 | ||
![]() |
3380da638e | ||
![]() |
87eb5300d2 | ||
![]() |
e47dc4aa78 | ||
![]() |
4a6753c867 | ||
![]() |
226419f794 | ||
![]() |
6e0a8d8ca1 | ||
![]() |
7516740bbf | ||
![]() |
dcfbb766dc | ||
![]() |
8c84ae9ff6 | ||
![]() |
683bad19fc | ||
![]() |
438302fcf5 | ||
![]() |
06d12fc924 | ||
![]() |
24162cb162 | ||
![]() |
e11b42ce50 | ||
![]() |
4e60f8af13 | ||
![]() |
3ff5896dc6 | ||
![]() |
5f4e65bc77 | ||
![]() |
ad1a4b6479 | ||
![]() |
73bfc6ca32 | ||
![]() |
79cc616de2 | ||
![]() |
5e7746668e | ||
![]() |
ada9a99804 | ||
![]() |
0aa2603a23 | ||
![]() |
0851a8a6a4 | ||
![]() |
44e66c1318 | ||
![]() |
b237c73a04 | ||
![]() |
563c149217 | ||
![]() |
6017420dde | ||
![]() |
4948f634ed | ||
![]() |
a1fce99a05 | ||
![]() |
37bdfb9faa | ||
![]() |
9c435e0173 | ||
![]() |
07572d36c0 | ||
![]() |
42bc197f67 | ||
![]() |
ea32c12938 | ||
![]() |
c24b2b1a8b | ||
![]() |
5a6e033e82 | ||
![]() |
e311d7a893 | ||
![]() |
6def41fab4 | ||
![]() |
33e7e8da58 | ||
![]() |
8a49fde016 | ||
![]() |
8b703ba6a3 | ||
![]() |
c367731c42 | ||
![]() |
47c504df5d | ||
![]() |
1a1009a2a9 | ||
![]() |
61ee55db6a | ||
![]() |
35156574b8 | ||
![]() |
57f2a4c9eb | ||
![]() |
638c9feeb6 | ||
![]() |
2f88ba0d3f | ||
![]() |
09491e4cbb | ||
![]() |
1554c3a07c | ||
![]() |
3d0709c779 | ||
![]() |
ede19c8a61 | ||
![]() |
3519697d0e | ||
![]() |
0899eefde7 | ||
![]() |
d7767afe1b | ||
![]() |
6831fac76b | ||
![]() |
6f16d3db83 | ||
![]() |
b9a1d090ec | ||
![]() |
bcfd9ec355 | ||
![]() |
4bf3afac48 | ||
![]() |
da49becac3 | ||
![]() |
6324fa3eb9 | ||
![]() |
7d08770806 | ||
![]() |
52a82ea1e6 | ||
![]() |
46ca4d93e7 | ||
![]() |
4e8d67052f | ||
![]() |
ad9306d7bb | ||
![]() |
51c18baedb | ||
![]() |
f376b42c31 | ||
![]() |
ad76a2cbe8 | ||
![]() |
67d2b5568d | ||
![]() |
0538881447 | ||
![]() |
653359d815 | ||
![]() |
7bfb769288 | ||
![]() |
d5e6e1075d | ||
![]() |
e0ee2d9514 | ||
![]() |
1e05e7996b | ||
![]() |
14c26d01af | ||
![]() |
e9a98f35ad | ||
![]() |
38c65e80f3 | ||
![]() |
f1a47a9f0a | ||
![]() |
c79fc2e6d9 | ||
![]() |
b9f22a7526 | ||
![]() |
bf677df6ca | ||
![]() |
805fed559c | ||
![]() |
8913317a44 | ||
![]() |
74a3a2da78 | ||
![]() |
854eb845d2 | ||
![]() |
22ba21f937 | ||
![]() |
e294221a2d | ||
![]() |
8a2f60a03a | ||
![]() |
b7a3f58df4 | ||
![]() |
a1690ac2d6 | ||
![]() |
0be4c38a87 | ||
![]() |
390acd41b2 | ||
![]() |
c5fa6383d7 | ||
![]() |
2820316d16 | ||
![]() |
670d8089bc | ||
![]() |
1452b74740 | ||
![]() |
2f3062f4c2 | ||
![]() |
81fe8b1488 | ||
![]() |
b8583a1e59 | ||
![]() |
12a361556b | ||
![]() |
07a9e3dd46 | ||
![]() |
1297845e31 | ||
![]() |
559c53b09c | ||
![]() |
bc9d8fb13a | ||
![]() |
bf9f1c95bc | ||
![]() |
d6825c4986 | ||
![]() |
3596b48c7a | ||
![]() |
fc2286117d | ||
![]() |
e577cd4495 | ||
![]() |
9bf7212458 | ||
![]() |
54d31c85e7 | ||
![]() |
2b485a5e59 | ||
![]() |
a65723d4da | ||
![]() |
12b23db286 | ||
![]() |
f38b518e86 | ||
![]() |
7e0e063c3f | ||
![]() |
e8cb5c621a | ||
![]() |
616f3d4fd7 | ||
![]() |
e0b8942242 | ||
![]() |
954e8ee3f8 | ||
![]() |
4114a2bbe8 | ||
![]() |
ce67712009 | ||
![]() |
03e621f4a2 | ||
![]() |
4d1630bf8b | ||
![]() |
cbb1a5ef36 | ||
![]() |
a1fb83bdc4 | ||
![]() |
53fb16437f | ||
![]() |
0e977a7e42 | ||
![]() |
740f1e7fe5 | ||
![]() |
85a1eb95ee | ||
![]() |
243c4e6b02 | ||
![]() |
59f11e9b67 | ||
![]() |
613d076a60 | ||
![]() |
51c5c9ba26 | ||
![]() |
b81bc17560 | ||
![]() |
f32671ebab | ||
![]() |
604535f65a | ||
![]() |
4b2b74bdbd | ||
![]() |
949f9e466f | ||
![]() |
d6fe30dfdb | ||
![]() |
5de99d53d2 | ||
![]() |
4e588584d7 | ||
![]() |
9eee00c286 | ||
![]() |
aba212d700 | ||
![]() |
f8c3b76367 | ||
![]() |
6c7e7a6d55 | ||
![]() |
401a090cae | ||
![]() |
c98b5d7667 | ||
![]() |
6bdc655719 | ||
![]() |
1bf73c29c4 | ||
![]() |
56f71501cc | ||
![]() |
e361f52415 | ||
![]() |
ec99079cdf | ||
![]() |
8f13e7abb4 | ||
![]() |
3a5334071d | ||
![]() |
bc77478b2a | ||
![]() |
0d2763f68a | ||
![]() |
9051faf062 | ||
![]() |
afedc8475d | ||
![]() |
293844072d | ||
![]() |
235db9f961 | ||
![]() |
768760793a | ||
![]() |
792ba8c0af | ||
![]() |
a658e88575 | ||
![]() |
a316f1b40d | ||
![]() |
1570105ddb | ||
![]() |
3b7c2b2221 | ||
![]() |
d2e11dd5d1 | ||
![]() |
c2d0a247a3 | ||
![]() |
b43759c6a5 | ||
![]() |
e8b17b9878 | ||
![]() |
400a5751f9 | ||
![]() |
535f81ba8a | ||
![]() |
7094c7bf39 | ||
![]() |
fedfed5619 | ||
![]() |
c2585749ac | ||
![]() |
a624d91433 | ||
![]() |
6b9a1530f8 | ||
![]() |
eb4ffe737e | ||
![]() |
995646936f | ||
![]() |
6ea73a8ca2 | ||
![]() |
373b94b968 | ||
![]() |
6ccdf79f77 | ||
![]() |
6bb7df918d | ||
![]() |
6388b41e6c | ||
![]() |
e800b2da2d | ||
![]() |
cc357140e5 | ||
![]() |
6b2088c94e | ||
![]() |
3531896892 | ||
![]() |
96c2c62470 | ||
![]() |
a4fadcd9be | ||
![]() |
b5c56fd579 | ||
![]() |
1a542d3afe | ||
![]() |
7ea6768852 | ||
![]() |
56ecf01dea | ||
![]() |
6a7a486b8c | ||
![]() |
f1c46d01e9 | ||
![]() |
8b561a29f5 | ||
![]() |
fce798dadf | ||
![]() |
a156d2e63f | ||
![]() |
ce699d8e3d | ||
![]() |
00b6694073 | ||
![]() |
453d533d2c | ||
![]() |
70df0b0bc8 | ||
![]() |
c3528e4e40 | ||
![]() |
67fafa04ac | ||
![]() |
f494440895 | ||
![]() |
5e3a0eda73 | ||
![]() |
ebecfb9f8b | ||
![]() |
88be947f6c | ||
![]() |
46f2d72b4c | ||
![]() |
5f7cfefed7 | ||
![]() |
c3bc305bb6 | ||
![]() |
cba5b9e4fb | ||
![]() |
e5f93d3563 | ||
![]() |
015f644acf | ||
![]() |
5d54a08581 | ||
![]() |
a86ffd105a | ||
![]() |
d068371e62 | ||
![]() |
2f25173ac3 | ||
![]() |
2f7d251000 | ||
![]() |
1554646a38 | ||
![]() |
989d08c70a | ||
![]() |
e5aa90d3a8 | ||
![]() |
d102750b13 | ||
![]() |
3dce393dcc | ||
![]() |
e1bf7ae96f | ||
![]() |
b54b486ee8 | ||
![]() |
2b37c41b08 | ||
![]() |
131352ca03 | ||
![]() |
e2bf717ea0 | ||
![]() |
dbfd8bea03 | ||
![]() |
f06766085a | ||
![]() |
acb731d823 | ||
![]() |
54e66ff1c0 | ||
![]() |
60f8a7c5fb | ||
![]() |
6936915dd6 | ||
![]() |
7deb6c0e9e | ||
![]() |
432154e50a | ||
![]() |
66f96e339c | ||
![]() |
17cc0470da | ||
![]() |
bf7eed9342 | ||
![]() |
fb7e6101ff | ||
![]() |
7ce2a87644 | ||
![]() |
ef436ac4d7 | ||
![]() |
2a0d4e5a23 | ||
![]() |
26cabbb3e4 | ||
![]() |
cd804470b5 | ||
![]() |
d8a862ec82 | ||
![]() |
4fa61249a8 | ||
![]() |
9fa5ab04e5 | ||
![]() |
f9659989b1 | ||
![]() |
546253d750 | ||
![]() |
b29f3e919b | ||
![]() |
cc0e39db56 | ||
![]() |
629fc83f21 | ||
![]() |
69cad09a00 | ||
![]() |
7b297a0e16 | ||
![]() |
846936357b | ||
![]() |
9ef22f4168 | ||
![]() |
6ee0da41c8 | ||
![]() |
f0a25bd397 | ||
![]() |
fa1c848faf | ||
![]() |
dba346be7a | ||
![]() |
d71e0a009c | ||
![]() |
619a6a3f97 | ||
![]() |
4e1b6f89c7 | ||
![]() |
983e32c9d9 | ||
![]() |
185c5d8b51 | ||
![]() |
8d9c3c428d | ||
![]() |
242572f57d | ||
![]() |
d75439e711 | ||
![]() |
7019b6d663 | ||
![]() |
4f70568c65 | ||
![]() |
63c6a8bac8 | ||
![]() |
f67c7f900c | ||
![]() |
df634573bf | ||
![]() |
eb627bc055 | ||
![]() |
8f81fd7188 | ||
![]() |
154396f80a | ||
![]() |
f3c57723df | ||
![]() |
236bd0eb96 | ||
![]() |
a57a1fdbd8 | ||
![]() |
78af510535 | ||
![]() |
b68e535131 | ||
![]() |
716328cafb | ||
![]() |
ddcfd861cc | ||
![]() |
1825ae1de4 | ||
![]() |
a72d59d23b | ||
![]() |
516c8bf7b6 | ||
![]() |
241c1840aa | ||
![]() |
fe78ec494f | ||
![]() |
1021db053d | ||
![]() |
2d8cf6aabf | ||
![]() |
03b2c8054b | ||
![]() |
2107efdd75 | ||
![]() |
72f97ac163 | ||
![]() |
2c99a8c6f8 | ||
![]() |
ffe3209121 | ||
![]() |
cf341c53fa | ||
![]() |
74c8f34b79 | ||
![]() |
e15db9a68c | ||
![]() |
b419f5a3c3 | ||
![]() |
93221da5ea | ||
![]() |
e2d6e63fe6 | ||
![]() |
d8b8d17e86 | ||
![]() |
5bf118409a | ||
![]() |
c333b9bb0a | ||
![]() |
01911beccc | ||
![]() |
252a88cb7f | ||
![]() |
43c172f54d | ||
![]() |
d0276fd25f | ||
![]() |
dabd895755 | ||
![]() |
d630c2aadf | ||
![]() |
e773fb65a8 | ||
![]() |
a73ad23b9f | ||
![]() |
ded7991dd6 | ||
![]() |
dd670f7c44 | ||
![]() |
aa4569b55b | ||
![]() |
bb1df38caa | ||
![]() |
e186e54434 | ||
![]() |
98ebb6f8d1 | ||
![]() |
7830461ac5 | ||
![]() |
caea146840 | ||
![]() |
b48de5b908 | ||
![]() |
e4c97cac2b | ||
![]() |
efe41da24d | ||
![]() |
d731e12456 | ||
![]() |
ea8f5afc3c | ||
![]() |
ce5b5c6734 | ||
![]() |
38293b0f09 | ||
![]() |
a4ad440403 | ||
![]() |
a888156deb | ||
![]() |
27f965deb6 | ||
![]() |
5d577371e7 | ||
![]() |
da2fff1256 | ||
![]() |
4543feccca | ||
![]() |
439d537ca2 | ||
![]() |
97184dc498 | ||
![]() |
1a3dc7d386 | ||
![]() |
e6568667c4 | ||
![]() |
eee536046b | ||
![]() |
df20aa9ddb | ||
![]() |
fb6e65613b | ||
![]() |
cd7d109114 | ||
![]() |
a3b84fa674 | ||
![]() |
f024cb7370 | ||
![]() |
42888cece6 | ||
![]() |
bac1108781 | ||
![]() |
f4fe0881b9 | ||
![]() |
aa3633e43a | ||
![]() |
6ce1a49f1c | ||
![]() |
7521be3c5f | ||
![]() |
64eafe35d4 | ||
![]() |
108ba28c43 | ||
![]() |
192d307d39 | ||
![]() |
61557cf805 | ||
![]() |
049b9f9c74 | ||
![]() |
e400f79673 | ||
![]() |
4299ea1d4f | ||
![]() |
231fa815c1 | ||
![]() |
117418fe60 | ||
![]() |
788c84dc41 | ||
![]() |
e4e041df7e | ||
![]() |
1af8796b2b | ||
![]() |
cfbe722350 | ||
![]() |
0143aa5515 | ||
![]() |
d72e42f7ba | ||
![]() |
65e78e5915 | ||
![]() |
91a29c5885 | ||
![]() |
5e77d65424 | ||
![]() |
ed14c49a03 | ||
![]() |
35f4a81768 | ||
![]() |
a7f983db5f | ||
![]() |
dd52e10839 | ||
![]() |
59ea88f1ad | ||
![]() |
2a9205ebd9 | ||
![]() |
165e559866 | ||
![]() |
21d24eeb8d | ||
![]() |
4dd6ecd54e | ||
![]() |
9569105575 | ||
![]() |
850825f70f | ||
![]() |
bd2fb552b5 | ||
![]() |
3e26ae5ad6 | ||
![]() |
cf0119ed4a | ||
![]() |
039370d410 | ||
![]() |
af12583122 | ||
![]() |
fea9886683 | ||
![]() |
5241e25ae8 | ||
![]() |
67effe4214 | ||
![]() |
bd118bb457 | ||
![]() |
dfedc0fb21 | ||
![]() |
a21665011f | ||
![]() |
294d07db7b | ||
![]() |
5af37b0be3 | ||
![]() |
3c398bd15e | ||
![]() |
9651cc0cd7 | ||
![]() |
0cbbbf811a | ||
![]() |
44ec9d14a6 | ||
![]() |
3f1d12ccd8 | ||
![]() |
2b8309eb04 | ||
![]() |
adb9f37cca | ||
![]() |
ea61ac4386 | ||
![]() |
4912de5893 | ||
![]() |
a6406ac41b | ||
![]() |
5691f95833 | ||
![]() |
3444546159 | ||
![]() |
9230bd1842 | ||
![]() |
6bcf4995c9 | ||
![]() |
5c5c7f28dc | ||
![]() |
db51e813fb | ||
![]() |
8a413866a1 | ||
![]() |
21f52f9dc1 | ||
![]() |
18b805d43f | ||
![]() |
b897619558 | ||
![]() |
b191f39bdf | ||
![]() |
e7b39303e4 | ||
![]() |
8949b079e1 | ||
![]() |
c73e9ec89f | ||
![]() |
c1aa0b581e | ||
![]() |
9302ad1468 | ||
![]() |
b42f86f20f | ||
![]() |
d109fc5856 | ||
![]() |
13abe2a5de | ||
![]() |
c013036f31 | ||
![]() |
1184229c4a | ||
![]() |
9d4c2bf1c7 | ||
![]() |
d19c3b5458 | ||
![]() |
f8494f27d5 | ||
![]() |
6a6557e320 | ||
![]() |
6726a926a4 | ||
![]() |
7a26143fbc | ||
![]() |
bf7b41f548 | ||
![]() |
1fe337d6ed | ||
![]() |
d4f28e863f | ||
![]() |
785042ccf3 | ||
![]() |
0446f03613 | ||
![]() |
7b09344a8b | ||
![]() |
70bf033dc0 | ||
![]() |
1155b6fc3d | ||
![]() |
4d0cae4a9b | ||
![]() |
74ce0ba84d | ||
![]() |
777b582e5b | ||
![]() |
0ec77f5d85 | ||
![]() |
df1d7dea61 | ||
![]() |
0ccd55e33f | ||
![]() |
b04d59ba2e | ||
![]() |
42d00ffe38 | ||
![]() |
af282e092d | ||
![]() |
53beea6061 | ||
![]() |
94bd17ecf5 | ||
![]() |
b95b3dbc78 | ||
![]() |
22dbe60bb9 | ||
![]() |
47c167c043 | ||
![]() |
e2113eda38 | ||
![]() |
51d414d6ef | ||
![]() |
71dc9349ad | ||
![]() |
fac0c90de1 | ||
![]() |
3c7d97403e | ||
![]() |
1eba562d07 | ||
![]() |
9c2a26bed5 | ||
![]() |
1007680931 | ||
![]() |
c035029f38 | ||
![]() |
3d49379bec | ||
![]() |
b602d423c7 | ||
![]() |
ac8f99a206 | ||
![]() |
38ec357bd5 | ||
![]() |
2be9aece3f | ||
![]() |
61f579b591 | ||
![]() |
c2d759f11e | ||
![]() |
2ebf9124d1 | ||
![]() |
1cfdc8044c | ||
![]() |
405fc3dfc2 | ||
![]() |
7e8ef85dc9 | ||
![]() |
559b79f920 | ||
![]() |
10bec1d970 | ||
![]() |
9665af0e5a | ||
![]() |
48541629f9 | ||
![]() |
f3681a533e | ||
![]() |
488631824d | ||
![]() |
75eb2c3cd4 | ||
![]() |
afdf431b77 | ||
![]() |
1e1b7b7ece | ||
![]() |
cc6a598c61 | ||
![]() |
88aa1755ce | ||
![]() |
a64a54ff04 | ||
![]() |
0bf1df72cd | ||
![]() |
dc0164d508 | ||
![]() |
b5788d4b17 | ||
![]() |
3600c67485 | ||
![]() |
6d4a0a1ba3 | ||
![]() |
ba89f03d8e | ||
![]() |
4243d5f41a | ||
![]() |
64f9a2df26 | ||
![]() |
779e5ecf8f | ||
![]() |
981e96ea7f | ||
![]() |
c54e417ff3 | ||
![]() |
668921543a | ||
![]() |
63e61e9924 | ||
![]() |
5ed1dff655 | ||
![]() |
3588f06767 | ||
![]() |
fdfe52efe2 | ||
![]() |
03d086a233 | ||
![]() |
0379fa9b7d | ||
![]() |
404a9ef98a | ||
![]() |
186d32ebee | ||
![]() |
2b4bc7adf4 | ||
![]() |
3b9c0bdf91 | ||
![]() |
bb426ebac4 | ||
![]() |
9341a84820 | ||
![]() |
603a7106b3 | ||
![]() |
9acd2fe458 | ||
![]() |
f1446736f8 | ||
![]() |
5b609565e2 | ||
![]() |
b868894371 | ||
![]() |
6662cb5f2d | ||
![]() |
79b4f918fc | ||
![]() |
8e8525a941 | ||
![]() |
a90f510b85 | ||
![]() |
72f67286a4 | ||
![]() |
8fe2e1f68a | ||
![]() |
a3a1350dc7 | ||
![]() |
a4c1f07521 | ||
![]() |
33fec86ef6 | ||
![]() |
f8afb15c4c | ||
![]() |
6556f96442 | ||
![]() |
416c2c9689 | ||
![]() |
44ac33845d | ||
![]() |
46f7e6c131 | ||
![]() |
8348bd2bb7 | ||
![]() |
202fe46182 | ||
![]() |
d2c0c8d638 | ||
![]() |
b17e01edff | ||
![]() |
df67f2bb59 | ||
![]() |
f02cb1a8ea | ||
![]() |
1c8a72dcac | ||
![]() |
b9ad701a5c | ||
![]() |
b96ad4b166 | ||
![]() |
e60f8bcd06 | ||
![]() |
4ffa79d4cf | ||
![]() |
287047fe1a | ||
![]() |
e9908c84c2 | ||
![]() |
98d42719e1 | ||
![]() |
413e160368 | ||
![]() |
a5091c8c3b | ||
![]() |
1998405dbb | ||
![]() |
cdbc5a7b4b | ||
![]() |
f62bb70b28 | ||
![]() |
cc310a04b8 | ||
![]() |
d9ab35f4cc | ||
![]() |
3fafeaf09a | ||
![]() |
8625847866 | ||
![]() |
d3f84980b3 | ||
![]() |
0716f92f62 | ||
![]() |
8c7e214376 | ||
![]() |
b4485f4dc9 | ||
![]() |
9ae87b7fb7 | ||
![]() |
d3a27f3c3c | ||
![]() |
b30eaaddec | ||
![]() |
c767311062 | ||
![]() |
9295c91128 | ||
![]() |
caf18321df | ||
![]() |
7bae625f46 | ||
![]() |
b4a21d7aca | ||
![]() |
3ea796d009 | ||
![]() |
9fcf9b5fa8 | ||
![]() |
941cc9c48b | ||
![]() |
2e90a8d829 | ||
![]() |
d8dff3dc65 | ||
![]() |
8b10a9cfc2 | ||
![]() |
448e478b6d | ||
![]() |
0be5e04c2e | ||
![]() |
381a4f9b53 | ||
![]() |
d9f2f5e988 | ||
![]() |
63fc1ecca3 | ||
![]() |
d39f2b8c3e | ||
![]() |
cb67c79203 | ||
![]() |
a7b46a02eb | ||
![]() |
98524708cc | ||
![]() |
9f17d3fd12 | ||
![]() |
980e5e13f8 | ||
![]() |
ea63f48c31 | ||
![]() |
a1ed303820 | ||
![]() |
44ec8a7c0b | ||
![]() |
846d6abaa8 | ||
![]() |
81badc36f4 | ||
![]() |
1ff854f05d | ||
![]() |
efec12d001 | ||
![]() |
bce6f3f1b7 | ||
![]() |
3c6683bd98 | ||
![]() |
f72436aa0a | ||
![]() |
8af5fb5da5 | ||
![]() |
1bf95eacb0 | ||
![]() |
260862fabc | ||
![]() |
844831751d | ||
![]() |
92e36558fa | ||
![]() |
bc2435eb7d | ||
![]() |
fc8830ae4a | ||
![]() |
9154228421 | ||
![]() |
1ebb807624 | ||
![]() |
430b3b0722 | ||
![]() |
5349e03ea9 | ||
![]() |
0b8ef49e7e | ||
![]() |
c00a382aea | ||
![]() |
992c673951 | ||
![]() |
44602d0237 | ||
![]() |
83e6476be8 | ||
![]() |
e9384deb5d | ||
![]() |
bd775a16e2 | ||
![]() |
aa004503c5 | ||
![]() |
f8258f671b | ||
![]() |
6f15b69917 | ||
![]() |
08df3183dc | ||
![]() |
19874ebc3a | ||
![]() |
f94853eb28 | ||
![]() |
075a28a06d | ||
![]() |
0d7c1ec130 | ||
![]() |
5b376b41bf | ||
![]() |
3ad3a9adfc | ||
![]() |
04145f49f8 | ||
![]() |
82223431fa | ||
![]() |
0f50085bb9 | ||
![]() |
a8463a8763 | ||
![]() |
ab7f6abf02 | ||
![]() |
473576991d | ||
![]() |
1739d8f15f | ||
![]() |
6a1e46d7f6 | ||
![]() |
849da3f322 | ||
![]() |
c3860849c1 | ||
![]() |
1496173b2c | ||
![]() |
3d58127234 | ||
![]() |
7acc8bcec3 | ||
![]() |
cc3017be53 | ||
![]() |
0f87a4a91a | ||
![]() |
46ab3ac277 | ||
![]() |
f9a8a9f588 | ||
![]() |
108e227eec | ||
![]() |
b30bb7ae0b | ||
![]() |
24e129a413 | ||
![]() |
d3acc39d2d | ||
![]() |
a4682db987 | ||
![]() |
5af614daf7 | ||
![]() |
ec4b6752d6 | ||
![]() |
76a2791b12 | ||
![]() |
7d024cf72b | ||
![]() |
9d6d8ecaea | ||
![]() |
288fe5b274 | ||
![]() |
40961f21a7 | ||
![]() |
f0aa515c8b | ||
![]() |
9c8194402b | ||
![]() |
cdbf45b5d3 | ||
![]() |
3a4dcb6913 | ||
![]() |
7e6c3a2309 | ||
![]() |
49f4e7b8e1 | ||
![]() |
ce6fae900f | ||
![]() |
6bf82e9c65 | ||
![]() |
d0a65641e2 | ||
![]() |
112b51756b | ||
![]() |
f15a599bbd | ||
![]() |
9738851261 | ||
![]() |
7057081bdf | ||
![]() |
e49f0cf3ba | ||
![]() |
04f4441182 | ||
![]() |
ca1ae6fd1d | ||
![]() |
335ccbc149 | ||
![]() |
cf7391696e | ||
![]() |
dd8b893ee8 | ||
![]() |
f045e4f00e | ||
![]() |
16eff98a06 | ||
![]() |
0c92a36a53 | ||
![]() |
6d55005da0 | ||
![]() |
b16bd6bb23 | ||
![]() |
67aedd5582 | ||
![]() |
16bf7925a2 | ||
![]() |
1896a38ccc | ||
![]() |
fc034828c7 | ||
![]() |
1e0295dc65 | ||
![]() |
84240683f5 | ||
![]() |
cb4248e56d | ||
![]() |
c82b802f4e | ||
![]() |
4ae3a7af61 | ||
![]() |
b8a9c4c3b7 | ||
![]() |
2f7790d691 | ||
![]() |
0d1355d457 | ||
![]() |
39cae1f0fb | ||
![]() |
3fbca3ab4c | ||
![]() |
144b51f00e | ||
![]() |
17f73b1294 | ||
![]() |
38fa1d9567 | ||
![]() |
c43a6ab866 | ||
![]() |
c98a330bf9 | ||
![]() |
aae815cf3b | ||
![]() |
fcf6e2fb25 | ||
![]() |
1704ad5977 | ||
![]() |
f3752e200a | ||
![]() |
c3d27be103 | ||
![]() |
b9210721e6 | ||
![]() |
eafb8149b3 | ||
![]() |
a383aa974a | ||
![]() |
e99c60728b | ||
![]() |
18cc4b5c6f | ||
![]() |
d4a5640446 | ||
![]() |
4acf0d4d34 | ||
![]() |
45fb77fbf3 | ||
![]() |
3d72fb1bbe | ||
![]() |
a215871da8 | ||
![]() |
74eada048b | ||
![]() |
81e5bf4e6e | ||
![]() |
455cc29bc3 | ||
![]() |
fa258e3100 | ||
![]() |
6743de076f | ||
![]() |
73ab41c572 | ||
![]() |
343f4cefc8 | ||
![]() |
a34ca69d52 | ||
![]() |
7a0e91f076 | ||
![]() |
14dcbb94a3 | ||
![]() |
2f18921db9 | ||
![]() |
3692988b17 | ||
![]() |
f2bd956b89 | ||
![]() |
1742c10f7d | ||
![]() |
eee5674f6d | ||
![]() |
1da84ca09b | ||
![]() |
9af44a3c8d | ||
![]() |
5643c5cdc7 | ||
![]() |
c5729b861f | ||
![]() |
bd6aa58322 | ||
![]() |
3ca770aa63 | ||
![]() |
413614e14b | ||
![]() |
a289518a8a | ||
![]() |
0592d40bc2 | ||
![]() |
caff0176b1 | ||
![]() |
0d44d2838f | ||
![]() |
2ebfae134b | ||
![]() |
e56bdd019f | ||
![]() |
7ab9c63903 | ||
![]() |
5c402ffd66 | ||
![]() |
1542bad224 | ||
![]() |
9b15df595e | ||
![]() |
8e3ed3c933 | ||
![]() |
721748bed3 | ||
![]() |
3623e9aefc | ||
![]() |
67e96d2ce6 | ||
![]() |
88128e91fe | ||
![]() |
b85e5b52c2 | ||
![]() |
db5f3bc309 | ||
![]() |
319a720d1b | ||
![]() |
b144d81979 | ||
![]() |
3be360e433 | ||
![]() |
8cc114bf2c | ||
![]() |
f8385d2cb8 | ||
![]() |
13181a52ee | ||
![]() |
8c0c84f162 | ||
![]() |
cd1a4adaf8 | ||
![]() |
d267d4ab7b | ||
![]() |
938edf5bd6 | ||
![]() |
14fbbd92dc | ||
![]() |
092374d08c | ||
![]() |
f53f43ad03 | ||
![]() |
4b6718b354 | ||
![]() |
942221c764 | ||
![]() |
945effb048 | ||
![]() |
b5cfa5109e | ||
![]() |
4ab30569c2 | ||
![]() |
4f78afe67e | ||
![]() |
f0fd47eeb3 | ||
![]() |
dbd8f361d1 | ||
![]() |
c1064c5e08 | ||
![]() |
3cc50d8ac4 | ||
![]() |
58afa92298 | ||
![]() |
9dd58b9a22 | ||
![]() |
7c175f5005 | ||
![]() |
b4078f3634 | ||
![]() |
186c065b4c | ||
![]() |
a2c930a714 | ||
![]() |
ff66e4b3d5 | ||
![]() |
f6cb879929 | ||
![]() |
9a4c599e22 | ||
![]() |
2a3e616b0e | ||
![]() |
6978ce3cb4 | ||
![]() |
520f08bbba | ||
![]() |
31bf38977e | ||
![]() |
1ec886e8cb | ||
![]() |
3ade1fd84a | ||
![]() |
b709ba7a5b | ||
![]() |
9482935034 | ||
![]() |
478af25cec | ||
![]() |
0ff32784d1 | ||
![]() |
a9539018e9 | ||
![]() |
d15aa2bfc3 | ||
![]() |
dd7a5c45ed | ||
![]() |
af5c57a713 | ||
![]() |
c045af1975 | ||
![]() |
bf9c9a64f1 | ||
![]() |
132ff59d9c | ||
![]() |
a3eae323f1 | ||
![]() |
d74bdbcfd0 | ||
![]() |
3150785ff1 | ||
![]() |
1c4bf58fb4 | ||
![]() |
f0a33a235c | ||
![]() |
9e6bddf31a | ||
![]() |
1c285f011b | ||
![]() |
c963d8905f | ||
![]() |
271122865f | ||
![]() |
2ccd5a2043 | ||
![]() |
b7a27b3f9f | ||
![]() |
e3a41571f0 | ||
![]() |
727f7859b7 | ||
![]() |
b180cbd47d | ||
![]() |
97eb32bf5c | ||
![]() |
80a538665e | ||
![]() |
3f0612b4ad | ||
![]() |
0f2320bd47 | ||
![]() |
b98886cdc2 | ||
![]() |
a299b9dd3a | ||
![]() |
205fc4f948 | ||
![]() |
03d1fe434c | ||
![]() |
b949967529 | ||
![]() |
59cfdcccdf | ||
![]() |
0ed0d37693 | ||
![]() |
afc6e719b4 | ||
![]() |
ba514506bb | ||
![]() |
901ff0e4cf | ||
![]() |
e7610132ce | ||
![]() |
09b71819c2 | ||
![]() |
6ef01d83dd | ||
![]() |
06c6ea04c0 | ||
![]() |
409a3719cf | ||
![]() |
3c14d7092a | ||
![]() |
2ae86fa6e6 | ||
![]() |
e86f67cad8 | ||
![]() |
a93e96da7c | ||
![]() |
e8238ca713 | ||
![]() |
b3876b15f7 | ||
![]() |
a4c759355b | ||
![]() |
f4133a97db | ||
![]() |
fa7d2bda16 | ||
![]() |
1f21b9ad73 | ||
![]() |
1f0aec5f87 | ||
![]() |
d2c7c42aec | ||
![]() |
6d02bab098 | ||
![]() |
6df3c023c8 | ||
![]() |
b82da569d5 | ||
![]() |
d290862163 | ||
![]() |
f2e5f2f8e5 | ||
![]() |
06e2db946f | ||
![]() |
ff66eacd0d | ||
![]() |
fb9fa347a0 | ||
![]() |
bcff0454a3 | ||
![]() |
da4f8fffcf | ||
![]() |
cf538fb837 | ||
![]() |
cc6611bac4 | ||
![]() |
dac590a094 | ||
![]() |
2fa272ea2f | ||
![]() |
b869f716e7 | ||
![]() |
61a2335909 | ||
![]() |
ccfbd6b972 | ||
![]() |
35f8d90591 | ||
![]() |
2a30ae1e25 | ||
![]() |
e5215c7091 | ||
![]() |
66da5f2fa4 | ||
![]() |
ff2d2d0d45 | ||
![]() |
06cbabd189 | ||
![]() |
faa1cb6b65 | ||
![]() |
58ea40c14d | ||
![]() |
258a14bea2 | ||
![]() |
04a6fbc4c4 | ||
![]() |
0a88273e0d | ||
![]() |
3909459563 | ||
![]() |
f93cec031b | ||
![]() |
f9e99da468 | ||
![]() |
1f57a0ddda | ||
![]() |
aaa56b6903 | ||
![]() |
d4887426e2 | ||
![]() |
254933a488 | ||
![]() |
57907ca992 | ||
![]() |
c781343fdd | ||
![]() |
04e21b7e46 | ||
![]() |
0bbe03b214 | ||
![]() |
9bf0a3414f | ||
![]() |
1f7af88100 | ||
![]() |
ff9f47ec83 | ||
![]() |
04c14419c8 | ||
![]() |
567b01eab0 | ||
![]() |
09798a2a12 | ||
![]() |
8676ce9a20 | ||
![]() |
feab8bebba | ||
![]() |
dda2e1f29f | ||
![]() |
27f1e82a8f | ||
![]() |
a19109ed0b | ||
![]() |
03e09cb7e6 | ||
![]() |
fdfe3937e9 | ||
![]() |
b1b801e5f6 | ||
![]() |
2e6d632c7c | ||
![]() |
cba2733471 | ||
![]() |
0af12546ef | ||
![]() |
b4aca7e188 | ||
![]() |
00293d1111 | ||
![]() |
0f07550006 | ||
![]() |
a8359696ca | ||
![]() |
76b0981918 | ||
![]() |
8f590848bd | ||
![]() |
543a9e1afc | ||
![]() |
3069f4133f | ||
![]() |
b503aa645b | ||
![]() |
16eca3c1be | ||
![]() |
ca033583a4 | ||
![]() |
da5fb2d3e1 | ||
![]() |
d5e678157d | ||
![]() |
7859d98a32 | ||
![]() |
e3ee3c623d | ||
![]() |
8a7e9c4034 | ||
![]() |
b4c3236e4a | ||
![]() |
43565027f5 | ||
![]() |
f3e37f3cee | ||
![]() |
a5dfe7cd68 | ||
![]() |
4e9c18a565 | ||
![]() |
a843f34177 | ||
![]() |
d336d0167f | ||
![]() |
e888f7b90e | ||
![]() |
d93090de44 | ||
![]() |
225a5d31c2 | ||
![]() |
2a9bbf1dd5 | ||
![]() |
adc8d7e624 | ||
![]() |
3b152ba455 | ||
![]() |
43e271dfec | ||
![]() |
8e53b83f9f | ||
![]() |
009b3b460b | ||
![]() |
b7cc4860e0 | ||
![]() |
3731dfb146 | ||
![]() |
6f41949bba | ||
![]() |
6e9ce7194f | ||
![]() |
73b5c62ab8 | ||
![]() |
822e30c894 | ||
![]() |
afb4e00f92 | ||
![]() |
e5b7e66ee9 | ||
![]() |
83b2b95381 | ||
![]() |
741c1c5d1e | ||
![]() |
59255c7a57 | ||
![]() |
be7b63051e | ||
![]() |
e023da3f35 | ||
![]() |
26b1c349d3 | ||
![]() |
c4de62cb9a | ||
![]() |
83d2c06f68 | ||
![]() |
705e6dd8d6 | ||
![]() |
cbc376a206 | ||
![]() |
5191df2bde | ||
![]() |
57da222c72 | ||
![]() |
f18f425682 | ||
![]() |
e2b00bc517 | ||
![]() |
e9e4be1c60 | ||
![]() |
845fb3f6da | ||
![]() |
3e51d77782 | ||
![]() |
2535d8ccbd | ||
![]() |
2c297a068f | ||
![]() |
0f38ee624e | ||
![]() |
94f7efb89f | ||
![]() |
f20d0a7593 | ||
![]() |
aa5ef7a6b8 | ||
![]() |
15ace5202d | ||
![]() |
85bb8c27b3 | ||
![]() |
949e33f1e8 | ||
![]() |
63964de4bd | ||
![]() |
87c77d9807 | ||
![]() |
356e13ae93 | ||
![]() |
fe291bc51a | ||
![]() |
9f52282e4c | ||
![]() |
3eae98eac3 | ||
![]() |
1ce126c01e | ||
![]() |
c7eb8e1d2c | ||
![]() |
b6534c3ebf | ||
![]() |
72c9df67d2 | ||
![]() |
455de6f948 | ||
![]() |
f898840e16 | ||
![]() |
84558333bf | ||
![]() |
3bf57c7785 | ||
![]() |
36f9fd56a3 | ||
![]() |
7c268b2e4d | ||
![]() |
ed95c4a541 | ||
![]() |
8ab5b562ad | ||
![]() |
2516f18d1b | ||
![]() |
f00a095acb | ||
![]() |
ffce79e30e | ||
![]() |
73b5a0898d | ||
![]() |
42014a8201 | ||
![]() |
23eabd74c6 | ||
![]() |
c85d1ae1fe | ||
![]() |
f78752303b | ||
![]() |
6013ed52f8 | ||
![]() |
db08d2db8b | ||
![]() |
163351a803 | ||
![]() |
c6feedf923 | ||
![]() |
54fd1f4b26 | ||
![]() |
1f9f506a16 | ||
![]() |
486cdaeeb6 | ||
![]() |
2bd3f1d8c1 | ||
![]() |
b61b5f8650 | ||
![]() |
8127ae704c | ||
![]() |
e66f81f6ee | ||
![]() |
10991346b7 | ||
![]() |
7578768c46 | ||
![]() |
4e54a2aefe | ||
![]() |
8e07bb00f9 | ||
![]() |
48eae463cc | ||
![]() |
0bad5469fc | ||
![]() |
4746754344 | ||
![]() |
6863db0dc1 | ||
![]() |
f088efdf84 | ||
![]() |
1a5fa36fb6 | ||
![]() |
b15a76804c | ||
![]() |
621ac9b8db | ||
![]() |
4a08fdbb92 | ||
![]() |
d26fde6647 | ||
![]() |
c41ff94f8a | ||
![]() |
4d444cbfbb | ||
![]() |
0a44ce381e | ||
![]() |
3967cfe0eb | ||
![]() |
9d930ad9cc | ||
![]() |
a1d45122eb | ||
![]() |
8bfc4dfcd2 | ||
![]() |
dad9587c3e | ||
![]() |
4387b8061e | ||
![]() |
71e0081fce | ||
![]() |
7db398cfdf | ||
![]() |
89a04e0fa3 | ||
![]() |
89a180ee58 | ||
![]() |
b72eba8157 | ||
![]() |
7659dfdb9d | ||
![]() |
f03ae06deb | ||
![]() |
f2bfe2bd6a | ||
![]() |
cd725fbb4b | ||
![]() |
2007335865 | ||
![]() |
32c1f81fbf | ||
![]() |
3016b93c8f | ||
![]() |
81bec68b3d | ||
![]() |
3f2dd516d3 | ||
![]() |
03df5f6891 | ||
![]() |
aec066359a | ||
![]() |
db7cf74034 | ||
![]() |
d6ea30b23e | ||
![]() |
eae1e90dce | ||
![]() |
f2960366c8 | ||
![]() |
ac6c9fae4a | ||
![]() |
063fb24f3a | ||
![]() |
2e9a44269c | ||
![]() |
5a378090c2 | ||
![]() |
7ec8c454bd | ||
![]() |
8457a00ad0 | ||
![]() |
daaf16d331 | ||
![]() |
c36aa43f86 | ||
![]() |
f822856441 | ||
![]() |
3e57979e73 | ||
![]() |
e4a8b8358f | ||
![]() |
aeeb4332b0 | ||
![]() |
018788ddc0 | ||
![]() |
8fd66933ee | ||
![]() |
cd9c0ea781 | ||
![]() |
2e5301c5c9 | ||
![]() |
0bf28b0b94 | ||
![]() |
9e141636c5 | ||
![]() |
14a76a386a | ||
![]() |
d536173d66 | ||
![]() |
5afe54132b | ||
![]() |
168be02c96 | ||
![]() |
87aafb2442 | ||
![]() |
193efe1710 | ||
![]() |
6aedf4401f | ||
![]() |
365a2ad6fd | ||
![]() |
a1c70b46a1 | ||
![]() |
5f1d7b2e8d | ||
![]() |
d464e98e89 | ||
![]() |
fe5757c7d1 | ||
![]() |
4f0d6a8f25 | ||
![]() |
dca9ae0c93 | ||
![]() |
4434e85d4d | ||
![]() |
3552233bf1 | ||
![]() |
6667ea834f | ||
![]() |
996c82160e | ||
![]() |
4a3273d634 | ||
![]() |
bfc60ad2cf | ||
![]() |
0dd027af90 | ||
![]() |
19b1fb3358 | ||
![]() |
384b1ba8c6 | ||
![]() |
354dc1613a | ||
![]() |
09b5e42734 | ||
![]() |
17b9647016 | ||
![]() |
8cf3bd23b9 | ||
![]() |
734dbece8a | ||
![]() |
0947cd8354 | ||
![]() |
0ffa500432 | ||
![]() |
35a2bd3f0f | ||
![]() |
14c079d1d6 | ||
![]() |
acb5190217 | ||
![]() |
679f613955 | ||
![]() |
a940be2bb4 | ||
![]() |
8142d6f86c | ||
![]() |
83b06fe3cb | ||
![]() |
98c7cec732 | ||
![]() |
f6e6774f92 | ||
![]() |
fea403186f | ||
![]() |
478c394d99 | ||
![]() |
f629826d40 | ||
![]() |
2b9fa0f982 | ||
![]() |
9a2fca7f5b | ||
![]() |
364d50679f | ||
![]() |
7fa1c1b787 | ||
![]() |
84936a95fc | ||
![]() |
b28a50de6f | ||
![]() |
6c7d295712 | ||
![]() |
00fa911f72 | ||
![]() |
27f6eaaf75 | ||
![]() |
89b1f8d96b | ||
![]() |
01b75ef4b5 | ||
![]() |
6605e11394 | ||
![]() |
cb2b53ebf3 | ||
![]() |
d7e64de24a | ||
![]() |
eb8e95bb87 | ||
![]() |
9910b23152 | ||
![]() |
687a795b71 | ||
![]() |
44a11bd93b | ||
![]() |
51b47862cd | ||
![]() |
697ee6f65f | ||
![]() |
aa6109d470 | ||
![]() |
daeee09fdb | ||
![]() |
275e6b9342 | ||
![]() |
9e624c7bd5 | ||
![]() |
0d4d3e3c4d | ||
![]() |
63196ab58f | ||
![]() |
c412e285c2 | ||
![]() |
cd8c3089cb | ||
![]() |
d91683eec6 | ||
![]() |
89d495d5fb | ||
![]() |
5b4f9d0b98 | ||
![]() |
f1772a7eae | ||
![]() |
03541470d5 | ||
![]() |
fa1d314b13 | ||
![]() |
3d289f345a | ||
![]() |
6560ef00a1 | ||
![]() |
29e6934672 | ||
![]() |
0cb6c89876 | ||
![]() |
328a5bbbfb | ||
![]() |
bf50f8724d | ||
![]() |
27dc81f8b9 | ||
![]() |
4d3f20f4a7 | ||
![]() |
ba1013e5a7 | ||
![]() |
5a7bcb07d0 | ||
![]() |
ac5c9e3a90 | ||
![]() |
3313a5341d | ||
![]() |
36396d0cfd | ||
![]() |
9a5099cd48 | ||
![]() |
ee302debdf | ||
![]() |
72187f0ff7 | ||
![]() |
8f4bc9e58c | ||
![]() |
545e761666 | ||
![]() |
51a87071ae | ||
![]() |
2be2e1808a | ||
![]() |
eead42b773 | ||
![]() |
ea220e4f7a | ||
![]() |
f44dd73993 | ||
![]() |
d63e23b289 | ||
![]() |
81f12cb230 | ||
![]() |
3b14e354b0 | ||
![]() |
436e1de820 | ||
![]() |
1448a9b9a1 | ||
![]() |
032ed49cc4 | ||
![]() |
7734d84925 | ||
![]() |
0b61a02c31 | ||
![]() |
c7c7e6a6c1 | ||
![]() |
0f6602cad7 | ||
![]() |
ec42e3294f | ||
![]() |
b54273f904 | ||
![]() |
2911c789f9 | ||
![]() |
89e279c96a | ||
![]() |
f726634c2f | ||
![]() |
6b2d7f6a42 | ||
![]() |
788a233319 | ||
![]() |
58f10739e1 | ||
![]() |
ef70b2c32e | ||
![]() |
02e9872a99 | ||
![]() |
a86374386b | ||
![]() |
07027c2430 | ||
![]() |
ff9abdfc08 | ||
![]() |
b20c80a28c | ||
![]() |
1d696253c3 | ||
![]() |
8271b8399c | ||
![]() |
61100f1a73 | ||
![]() |
958fb7e7b0 | ||
![]() |
f093789deb | ||
![]() |
ceeab7087c | ||
![]() |
e46d9f735d | ||
![]() |
d3135898fd | ||
![]() |
5895f3fb71 | ||
![]() |
6221c6497a | ||
![]() |
21598ef4b3 | ||
![]() |
86fd014bbd | ||
![]() |
2f83d85e29 | ||
![]() |
9c457f9449 | ||
![]() |
a955791766 | ||
![]() |
cff24bdd79 | ||
![]() |
1df4239c02 | ||
![]() |
6aa8ba119e | ||
![]() |
2b1e516ec1 | ||
![]() |
2bbbb68838 | ||
![]() |
70f8beb931 | ||
![]() |
9486ee6fbf | ||
![]() |
464da39f60 | ||
![]() |
9ce08beead | ||
![]() |
40aa0fcaba | ||
![]() |
db537535ee | ||
![]() |
f28d28a455 | ||
![]() |
58d0e4b491 | ||
![]() |
f8e375cc9d | ||
![]() |
ffece5ffb9 | ||
![]() |
88b1d36009 | ||
![]() |
26e8a6bcb5 | ||
![]() |
faa496be4a | ||
![]() |
3e94570849 | ||
![]() |
a7bd1040c5 | ||
![]() |
77e2701365 | ||
![]() |
b4cbf73e2d | ||
![]() |
0b3a6baeea | ||
![]() |
029c3f1c74 | ||
![]() |
92a874dae7 | ||
![]() |
08138f5a41 | ||
![]() |
063482339f | ||
![]() |
7125012a35 | ||
![]() |
672e27564e | ||
![]() |
57fa51ecd9 | ||
![]() |
bc591f9bc1 | ||
![]() |
8173b68a71 | ||
![]() |
632445a431 | ||
![]() |
44f8a7ae47 | ||
![]() |
2a795843e2 | ||
![]() |
540a1c05b7 | ||
![]() |
79740c77a3 | ||
![]() |
e92927cff9 | ||
![]() |
ddf3b2d399 | ||
![]() |
ae09537bea | ||
![]() |
6e30a7b8f6 | ||
![]() |
f79fbd4105 | ||
![]() |
0f4fe6294c | ||
![]() |
881661e94b | ||
![]() |
0293015b09 | ||
![]() |
8e4ec921c6 | ||
![]() |
6167c81654 | ||
![]() |
613966d3ff | ||
![]() |
9104853ed9 | ||
![]() |
010526ee2a | ||
![]() |
b41e4624c9 | ||
![]() |
10d194d693 | ||
![]() |
584dec23d4 | ||
![]() |
a92cb32cef | ||
![]() |
b518ef7dfe | ||
![]() |
9f0f600aa4 | ||
![]() |
3bb5adcfca | ||
![]() |
f155c8351b | ||
![]() |
b6dd23a384 | ||
![]() |
ace6323987 | ||
![]() |
75b01cfc0a | ||
![]() |
ffed7b6d71 | ||
![]() |
6b07bdf6ed | ||
![]() |
02423c823d | ||
![]() |
268cf203a8 | ||
![]() |
2878c474c5 | ||
![]() |
2126be6d6d | ||
![]() |
7d5a209dd0 | ||
![]() |
8b66009d59 | ||
![]() |
0cffac10c6 | ||
![]() |
5a75d68534 | ||
![]() |
fc2a5d145a | ||
![]() |
fbab554dfa | ||
![]() |
8e9bf1c2a9 | ||
![]() |
705756b9bb | ||
![]() |
53cb27ebc8 | ||
![]() |
7c6783948a | ||
![]() |
ac0b2092f2 | ||
![]() |
73d0afca43 | ||
![]() |
16b99940ce | ||
![]() |
cadd9765db | ||
![]() |
4778687f14 | ||
![]() |
e37c7da60d | ||
![]() |
1f77441333 | ||
![]() |
17914b9cf9 | ||
![]() |
0aa215af65 | ||
![]() |
75fd1dd114 | ||
![]() |
e94c17e331 | ||
![]() |
e84f446c5f | ||
![]() |
c159ffe491 | ||
![]() |
5f7c9a00a0 | ||
![]() |
a5887e6dda | ||
![]() |
8be5c2ed10 | ||
![]() |
8b22786bd2 | ||
![]() |
633186778b | ||
![]() |
aeffbac9cd | ||
![]() |
2aece7ff1b | ||
![]() |
0d8e0d9b96 | ||
![]() |
af3261b16f | ||
![]() |
2e1dd8e7b1 | ||
![]() |
ca9281f690 | ||
![]() |
56e46a31a9 | ||
![]() |
1365b3dad4 | ||
![]() |
67efa8b4bb | ||
![]() |
466e08a8ba | ||
![]() |
634a53d27a | ||
![]() |
e0ba5a6ba2 | ||
![]() |
d94b9caba5 | ||
![]() |
32649f78ea | ||
![]() |
5ed57331d6 | ||
![]() |
d5eaacf67a | ||
![]() |
df0180fc12 | ||
![]() |
4726f04b16 | ||
![]() |
ec0b68084f | ||
![]() |
d7dc48d201 | ||
![]() |
15b5ef467e | ||
![]() |
d584a96335 | ||
![]() |
3ae545c8b1 | ||
![]() |
ba2b52ed1d | ||
![]() |
b37a675657 | ||
![]() |
9afe7a3711 | ||
![]() |
e87ce5a433 | ||
![]() |
8352be8bf5 | ||
![]() |
6b6267e3a4 | ||
![]() |
392b4d33a0 | ||
![]() |
85d9038317 | ||
![]() |
49e925ef47 | ||
![]() |
3529659629 | ||
![]() |
242d5c6499 | ||
![]() |
23bfcb755e | ||
![]() |
8b4ae1d687 | ||
![]() |
e02c21285a | ||
![]() |
e1ad08f9b6 | ||
![]() |
c3903b6e88 | ||
![]() |
c7f2ee28fc | ||
![]() |
c6a3e9b816 | ||
![]() |
9bdb05d4ea | ||
![]() |
ae14059e8b | ||
![]() |
fd384f334d | ||
![]() |
51431e0042 | ||
![]() |
55dca08c8c | ||
![]() |
0572e9cafc | ||
![]() |
7c08f9a033 | ||
![]() |
c40a5d62ca | ||
![]() |
a2180936ef | ||
![]() |
1cd9b93a22 | ||
![]() |
7a78f2600e | ||
![]() |
5a3fb613d9 | ||
![]() |
30a85668b7 | ||
![]() |
863a4cc2a4 | ||
![]() |
5523bffbf2 | ||
![]() |
1b23520f20 | ||
![]() |
92a6cbc773 | ||
![]() |
1a557804ab | ||
![]() |
4e75ea8bd0 | ||
![]() |
3480988f53 | ||
![]() |
7e9576d3d1 | ||
![]() |
2eecd431fe | ||
![]() |
95ceb1e8c7 | ||
![]() |
965bc3b0b4 | ||
![]() |
0ee0f40816 | ||
![]() |
86f66e8f16 | ||
![]() |
31d0b5b194 | ||
![]() |
6851f25d69 | ||
![]() |
0b3298fa44 | ||
![]() |
d6d3b41484 | ||
![]() |
b65b5228e1 | ||
![]() |
31aa8be620 | ||
![]() |
2609e05898 | ||
![]() |
4a45eb847d | ||
![]() |
42417ed3b2 | ||
![]() |
2b86d2481c | ||
![]() |
3ae4ccf402 | ||
![]() |
559bb6f27a | ||
![]() |
41769c8794 | ||
![]() |
4a9f409422 | ||
![]() |
cf1ee2cffe | ||
![]() |
65f71524e0 | ||
![]() |
ade7a22314 | ||
![]() |
9d395e82f0 | ||
![]() |
053321d4d2 | ||
![]() |
521015b1b4 | ||
![]() |
941b5af3a2 | ||
![]() |
08ea51a344 | ||
![]() |
8ad7184024 | ||
![]() |
38862660c7 | ||
![]() |
ecaf97aa60 | ||
![]() |
ab3e393d45 | ||
![]() |
4b4d7f3b10 | ||
![]() |
2ac518d8b9 | ||
![]() |
41e2de85b1 | ||
![]() |
a5555c3f94 | ||
![]() |
e55def87e9 | ||
![]() |
117859082e | ||
![]() |
626ac572d9 | ||
![]() |
871b56255b | ||
![]() |
695c1ea190 | ||
![]() |
dc81c76e5b | ||
![]() |
c92e12ef74 | ||
![]() |
fd2399f702 | ||
![]() |
5d016baee9 | ||
![]() |
3ecab4bedb | ||
![]() |
2c72524f29 | ||
![]() |
abae942e55 | ||
![]() |
36cefe3be1 | ||
![]() |
eb44d0c6be | ||
![]() |
24efce0c1d | ||
![]() |
5db4195b7e | ||
![]() |
34946ecdee | ||
![]() |
1a7b2668dc | ||
![]() |
d7b895b45d | ||
![]() |
a16ecba2bd | ||
![]() |
5f2bbd179c | ||
![]() |
1dcf56761f | ||
![]() |
e145bf68f1 | ||
![]() |
933e54a731 | ||
![]() |
3245d602db | ||
![]() |
805850d843 | ||
![]() |
f4eac6c86f | ||
![]() |
c296bcffa3 | ||
![]() |
a91ef65a37 | ||
![]() |
73b8ecd622 | ||
![]() |
c19866f887 | ||
![]() |
14875259c7 | ||
![]() |
575bc03a5c | ||
![]() |
e18cc81757 | ||
![]() |
0f0bae0235 | ||
![]() |
050d74b4be | ||
![]() |
14afce538b | ||
![]() |
fcbd6e38c5 | ||
![]() |
efab699479 | ||
![]() |
2061024a03 | ||
![]() |
57f02464d9 | ||
![]() |
665c2d53ab | ||
![]() |
c22e0a3451 | ||
![]() |
e2f6817536 | ||
![]() |
f73f94da27 | ||
![]() |
efd7145f76 | ||
![]() |
c8b96c278b | ||
![]() |
e406ae1967 | ||
![]() |
e1e81bb133 | ||
![]() |
f1bb70269f | ||
![]() |
65273a262b | ||
![]() |
60fbf04594 | ||
![]() |
3c6e53ecb9 | ||
![]() |
ee834a7abb | ||
![]() |
f0c4164515 | ||
![]() |
197cb9982c | ||
![]() |
bdd6bdc3b2 | ||
![]() |
215cd0d1c3 | ||
![]() |
b144f1dfc0 | ||
![]() |
7cef99605f | ||
![]() |
c8964717c7 | ||
![]() |
d81d585c32 | ||
![]() |
4cd2a4ae91 | ||
![]() |
a8075fba5f | ||
![]() |
253e5610af | ||
![]() |
b23dbd47c7 | ||
![]() |
57f5a92d96 | ||
![]() |
4968efdaa7 | ||
![]() |
355a4f9b8d | ||
![]() |
e507338f4c | ||
![]() |
1f57a99ff2 | ||
![]() |
6f7234e4ac | ||
![]() |
f157d9c459 | ||
![]() |
34e31d4331 | ||
![]() |
53eb6c614a | ||
![]() |
9c382e3555 | ||
![]() |
e96198e61c | ||
![]() |
8518a5037d | ||
![]() |
1c2cceb3b8 | ||
![]() |
9413b28209 | ||
![]() |
e9f2c57442 | ||
![]() |
31cfdf926c | ||
![]() |
172859dc2d | ||
![]() |
c48ec6bf94 | ||
![]() |
03871db597 | ||
![]() |
cac3e042d8 | ||
![]() |
3a0155b69d | ||
![]() |
3227658475 | ||
![]() |
01f0367459 | ||
![]() |
483c0a84f8 | ||
![]() |
21b4a36a91 | ||
![]() |
d83543d904 | ||
![]() |
740d723ec0 | ||
![]() |
a873badf87 | ||
![]() |
296146e4f8 | ||
![]() |
4a3378d8b9 | ||
![]() |
e2bf62a64b | ||
![]() |
c1d7d3daa6 | ||
![]() |
4c8a624c0b | ||
![]() |
afebe8211a | ||
![]() |
f07c6ed876 | ||
![]() |
f08b4e502a | ||
![]() |
4808201944 | ||
![]() |
2b9b8bbbe8 | ||
![]() |
62a8ee9708 | ||
![]() |
537aad1222 | ||
![]() |
fe3495ff97 | ||
![]() |
30335f27f0 | ||
![]() |
5e5701363c | ||
![]() |
e35992cf0b | ||
![]() |
028d424c73 | ||
![]() |
6a33e72b58 | ||
![]() |
00626fd96c | ||
![]() |
0948963d86 | ||
![]() |
2f871acbfd | ||
![]() |
0fda1dcf7d | ||
![]() |
fdbc253623 | ||
![]() |
473daecdbf | ||
![]() |
e2a5eb6840 | ||
![]() |
8bf95b6881 | ||
![]() |
064fff0c12 | ||
![]() |
aa50dfb8a1 | ||
![]() |
f85c70d4d2 | ||
![]() |
3fc23e3b07 | ||
![]() |
43f9f2e2f4 | ||
![]() |
463ea3c73f | ||
![]() |
f324a055e5 | ||
![]() |
2ce12d5368 | ||
![]() |
1eef6d69f2 | ||
![]() |
cb20ba6aba | ||
![]() |
0de98fe4c1 | ||
![]() |
dbc49f001e | ||
![]() |
a44e6802e5 | ||
![]() |
3c618a9a19 | ||
![]() |
ac713d8c4b | ||
![]() |
dc5d98af7d | ||
![]() |
0121e3755b | ||
![]() |
104452513b | ||
![]() |
527449a102 | ||
![]() |
c64aefe43c | ||
![]() |
52d1c8f88a | ||
![]() |
c69bd972e9 | ||
![]() |
71ca1e1544 | ||
![]() |
32c8338a9c | ||
![]() |
91cc5a2b42 | ||
![]() |
15a8d62986 | ||
![]() |
eda14ce548 | ||
![]() |
b36ad4c7f4 | ||
![]() |
04e53be934 | ||
![]() |
21f97db8fd | ||
![]() |
ad3c0de936 | ||
![]() |
296337d45d | ||
![]() |
9e274aac07 | ||
![]() |
ab69e7c83a | ||
![]() |
626dd038da | ||
![]() |
d814a3dba8 | ||
![]() |
37c211fd14 | ||
![]() |
7ea2ad7dc6 | ||
![]() |
245d4a8ef7 | ||
![]() |
478a275764 | ||
![]() |
10fb5b95c7 | ||
![]() |
3e32335511 | ||
![]() |
1afdcc9c82 | ||
![]() |
33e39b92fb | ||
![]() |
609ea8350c | ||
![]() |
82cc652f55 | ||
![]() |
ca40d2e2d9 | ||
![]() |
fce05acf1e | ||
![]() |
5066624a8e | ||
![]() |
082770032f | ||
![]() |
272cf099be | ||
![]() |
b8530c2c08 | ||
![]() |
ee3f308686 | ||
![]() |
b49b9a66e6 | ||
![]() |
eb72d662d1 | ||
![]() |
b2b9ae7799 | ||
![]() |
900deb5dc8 | ||
![]() |
7b87242107 | ||
![]() |
0ecf1e1cc1 | ||
![]() |
fcafe5db8f | ||
![]() |
2efce1ac7a | ||
![]() |
32e3933355 | ||
![]() |
f7102527a8 | ||
![]() |
a8c4f5b758 | ||
![]() |
35dff4d12c | ||
![]() |
44bc61d4be | ||
![]() |
23b507ae8e | ||
![]() |
20b477d063 | ||
![]() |
62579e0f42 | ||
![]() |
05f3fbea05 | ||
![]() |
3f1b31e352 | ||
![]() |
b27bc11975 | ||
![]() |
29cfcb01da | ||
![]() |
320779ccbe | ||
![]() |
88e5e98d29 | ||
![]() |
ea709aab59 | ||
![]() |
b5c0158ec2 | ||
![]() |
7b6ff8dd37 | ||
![]() |
6e31d9de4b | ||
![]() |
22ba3cc62d | ||
![]() |
c2929e93b3 | ||
![]() |
c63d4ad2cc | ||
![]() |
0902c74809 | ||
![]() |
b1b81f27cc | ||
![]() |
41ce42cd4b | ||
![]() |
e21a2f0676 | ||
![]() |
380e2b3613 | ||
![]() |
7e60ee059c | ||
![]() |
5380f8062d | ||
![]() |
1a87879f9b | ||
![]() |
dacd236f6a | ||
![]() |
a66eabe9ef | ||
![]() |
3762d4df05 | ||
![]() |
fad364993c | ||
![]() |
eacaa99609 | ||
![]() |
40f5440517 | ||
![]() |
eca56c7684 | ||
![]() |
c6235d03e7 | ||
![]() |
42889b5d7f | ||
![]() |
fec8361ed5 | ||
![]() |
824dac62d8 | ||
![]() |
d103c42091 | ||
![]() |
baabcc5bb4 | ||
![]() |
14df032803 | ||
![]() |
8f133fe113 | ||
![]() |
33fd5a1fad | ||
![]() |
ef4c2666e1 | ||
![]() |
0eb1f002db | ||
![]() |
f1c4caba48 | ||
![]() |
43cd415d9a | ||
![]() |
892e9798f4 | ||
![]() |
cc1136fb0e | ||
![]() |
f75839340a | ||
![]() |
b9372ba432 | ||
![]() |
33eab6e869 | ||
![]() |
37c236cfe7 | ||
![]() |
afb0b36f58 | ||
![]() |
bfa1f618c7 | ||
![]() |
38b347f8f2 | ||
![]() |
9568fc082f | ||
![]() |
b06498194e | ||
![]() |
506ea39508 | ||
![]() |
cc2e3f79ff | ||
![]() |
6a03bcb25e | ||
![]() |
45b71c24e7 | ||
![]() |
6c930af5cb | ||
![]() |
0813ec3327 | ||
![]() |
9018913af5 | ||
![]() |
40d7d1baac | ||
![]() |
a564d7a753 | ||
![]() |
d4a784f521 | ||
![]() |
630a508049 | ||
![]() |
8a14cc7ffc | ||
![]() |
5ffa09000a | ||
![]() |
411a202ba5 | ||
![]() |
66ae1823a5 | ||
![]() |
35916eb20f | ||
![]() |
2f786079f3 | ||
![]() |
8497aad7a1 | ||
![]() |
f9b114a67a | ||
![]() |
4d85a64e4f | ||
![]() |
dab831b2ff | ||
![]() |
1e08ee084f | ||
![]() |
92938f63f8 | ||
![]() |
8ce7457023 | ||
![]() |
8a6e4af511 | ||
![]() |
26b8c82630 | ||
![]() |
1fddf723fe | ||
![]() |
b99b87f787 | ||
![]() |
90a0605f38 | ||
![]() |
59dff815fc | ||
![]() |
389e36303f | ||
![]() |
1babcd2aa4 | ||
![]() |
5e35bcc830 | ||
![]() |
d6910b47b5 | ||
![]() |
d22f392609 | ||
![]() |
d0cdc8169e | ||
![]() |
d5d2d2a1f1 | ||
![]() |
e0bb7d9f6f | ||
![]() |
a01c428270 | ||
![]() |
3a3507f2b2 | ||
![]() |
01b22d27a8 | ||
![]() |
2b3cc17782 | ||
![]() |
d114c383fa | ||
![]() |
409ab6ee86 | ||
![]() |
bc484ae5da | ||
![]() |
4d3422b931 | ||
![]() |
11482559ad | ||
![]() |
2c110bfc66 | ||
![]() |
a835bb9a10 | ||
![]() |
682146aa9b | ||
![]() |
09020d68b0 | ||
![]() |
a3e528aae3 | ||
![]() |
a080e47f4b | ||
![]() |
23810aae3d | ||
![]() |
07c096673d | ||
![]() |
a4ed160060 | ||
![]() |
e78cde7ccb | ||
![]() |
00e9454344 | ||
![]() |
75da1bece4 | ||
![]() |
fdbfbfe284 | ||
![]() |
fb927c9763 | ||
![]() |
36fb1124be | ||
![]() |
51e743a67f | ||
![]() |
4b7403d115 | ||
![]() |
d90d451f42 | ||
![]() |
1f3cb32486 | ||
![]() |
824cb4d4b8 | ||
![]() |
4f684be83d | ||
![]() |
42331f6e13 | ||
![]() |
a25d61077f | ||
![]() |
f64a1eb16a | ||
![]() |
b607cf3f98 | ||
![]() |
781d76c9e5 | ||
![]() |
0c9480aa3f | ||
![]() |
f6419d5de1 | ||
![]() |
995ebd5c83 | ||
![]() |
1de2210d29 | ||
![]() |
f7c2e4a3e7 | ||
![]() |
ef08ff6ac0 | ||
![]() |
855b21a7db | ||
![]() |
abc98cfa79 | ||
![]() |
66eacce654 | ||
![]() |
a307217d83 | ||
![]() |
81520bbbf9 | ||
![]() |
0645a46b42 | ||
![]() |
98f912f80a | ||
![]() |
726f882185 | ||
![]() |
5a6a9a0d45 | ||
![]() |
8c21b59853 | ||
![]() |
f0cac7d669 | ||
![]() |
4d5ff6d5c4 | ||
![]() |
88d1d255f6 | ||
![]() |
e8282f27a3 | ||
![]() |
51b7ec875f | ||
![]() |
439f828d9b | ||
![]() |
931ce20f30 | ||
![]() |
25ba1bb767 | ||
![]() |
338635146f | ||
![]() |
b6b5c44996 | ||
![]() |
8119c7e72a | ||
![]() |
0d5db2dd06 | ||
![]() |
e1c85340e4 | ||
![]() |
4e4ffde604 | ||
![]() |
724b92ee60 | ||
![]() |
92a27a2c2d | ||
![]() |
f5ada5e9ef | ||
![]() |
97bdb9b4f7 | ||
![]() |
cfb0bebe0e | ||
![]() |
e1f4224bed | ||
![]() |
a58d59d86c | ||
![]() |
da1cc7c3a5 | ||
![]() |
a91edfef89 | ||
![]() |
80cad17e97 | ||
![]() |
240c703549 | ||
![]() |
7f1a59f02b | ||
![]() |
313531bc4b | ||
![]() |
948c078e1a | ||
![]() |
a78c368367 | ||
![]() |
2b2a69631f | ||
![]() |
3565b6806a | ||
![]() |
631923abf8 | ||
![]() |
67aa34c4a4 | ||
![]() |
37ce49b001 | ||
![]() |
14fbfa72d3 | ||
![]() |
43ebcf8b61 | ||
![]() |
a923db0289 | ||
![]() |
c16866fb88 | ||
![]() |
e29462bc05 | ||
![]() |
d78cbfc644 | ||
![]() |
2c76106a66 | ||
![]() |
46ad704ede | ||
![]() |
36a9088480 | ||
![]() |
0be6f63d2a | ||
![]() |
d3f9415bc1 | ||
![]() |
8aa8ac2d26 | ||
![]() |
08aa362c5c | ||
![]() |
3b5c4839e3 | ||
![]() |
31a1b710bc | ||
![]() |
6735ff1cd0 | ||
![]() |
fa2f91aa46 | ||
![]() |
3c48bbdb9c | ||
![]() |
8ced67680d | ||
![]() |
68aecf6a26 | ||
![]() |
d952faf909 | ||
![]() |
d7ed450dbf | ||
![]() |
1648f311fe | ||
![]() |
748d76df4f | ||
![]() |
347a25d13d | ||
![]() |
4a6ee39f8b | ||
![]() |
bfbb0f1c49 | ||
![]() |
8a9e85db71 | ||
![]() |
a4f9ac9aea | ||
![]() |
e113c8cc9b | ||
![]() |
e206eb086b | ||
![]() |
c3ff9edfa2 | ||
![]() |
3ee53435c5 | ||
![]() |
1dfb25372b | ||
![]() |
0bede0692a | ||
![]() |
daf9451e69 | ||
![]() |
22fdca8f44 | ||
![]() |
8a14316e16 | ||
![]() |
916c10816b | ||
![]() |
192263cf9d | ||
![]() |
d6b0583bad | ||
![]() |
b8e30e201f | ||
![]() |
4cdb603580 | ||
![]() |
45970fee27 | ||
![]() |
ba46a27b0f | ||
![]() |
560095d6f4 | ||
![]() |
7ae55b250c | ||
![]() |
203c389175 | ||
![]() |
9392473fec | ||
![]() |
e24f812b2d | ||
![]() |
4473d7f5dd | ||
![]() |
c9f942ad67 | ||
![]() |
4974d86932 | ||
![]() |
fde1aad465 | ||
![]() |
7f85781d99 | ||
![]() |
bff0bed07e | ||
![]() |
976150bc1e | ||
![]() |
ddfd120197 | ||
![]() |
5bb49e252d | ||
![]() |
75bba349be | ||
![]() |
f8db15adc4 | ||
![]() |
ccff4edd91 | ||
![]() |
5da2012465 | ||
![]() |
463545290e | ||
![]() |
53715f28d1 | ||
![]() |
665c425633 | ||
![]() |
c284024b0e | ||
![]() |
13d8b85de2 | ||
![]() |
0155d051aa | ||
![]() |
b2fcc61987 | ||
![]() |
b9b79f11a4 | ||
![]() |
0305476f8a | ||
![]() |
1b11cc90c4 | ||
![]() |
6365b7a362 | ||
![]() |
2cad90d9ca | ||
![]() |
fc91b4ce60 | ||
![]() |
8ad221311d | ||
![]() |
47b0fa5d55 | ||
![]() |
9b8d591b5d | ||
![]() |
e834ce532c | ||
![]() |
98ab4330c4 | ||
![]() |
3f55d415e9 | ||
![]() |
5623d8086b | ||
![]() |
789561be6a | ||
![]() |
45aac7db66 | ||
![]() |
8c1685d2cf | ||
![]() |
756e3084dc | ||
![]() |
9433311f24 | ||
![]() |
48d0c5beeb | ||
![]() |
cb2909f6d8 | ||
![]() |
4d6a5d0cb5 | ||
![]() |
c797a30a72 | ||
![]() |
dda4ab0b2e | ||
![]() |
e84193a2cb | ||
![]() |
e68723f1c7 | ||
![]() |
635f53a804 | ||
![]() |
f2a8f0fcdd | ||
![]() |
e3b8570d61 | ||
![]() |
bfefbd117d | ||
![]() |
91f87ba838 | ||
![]() |
0cd8940363 | ||
![]() |
066acdbbc6 | ||
![]() |
4a07bd4ae3 | ||
![]() |
df183d4026 | ||
![]() |
a0d56acabe | ||
![]() |
b48c2745c1 | ||
![]() |
0dbc44d388 | ||
![]() |
62e7128ff6 | ||
![]() |
2e850f23e6 | ||
![]() |
deec0b862f | ||
![]() |
71249866df | ||
![]() |
c1b5426c66 | ||
![]() |
fe8459b7f0 | ||
![]() |
04067e3a35 | ||
![]() |
55abe0247b | ||
![]() |
713774ab40 | ||
![]() |
e34c0576e7 | ||
![]() |
ba89b9f7f2 | ||
![]() |
8ba9d394ec | ||
![]() |
a9ec592185 | ||
![]() |
70f1079873 | ||
![]() |
f218e2e9a6 | ||
![]() |
73f8c627bd | ||
![]() |
992079bac1 | ||
![]() |
ac8de23c6e | ||
![]() |
4c65b8cc63 | ||
![]() |
2673d2fc35 | ||
![]() |
2ad44f6805 | ||
![]() |
f034b55da2 | ||
![]() |
6c40d69574 | ||
![]() |
3ae519b8ed | ||
![]() |
dc0ed24f1a | ||
![]() |
23c93904df | ||
![]() |
6c272bc8be | ||
![]() |
3c770b79b3 | ||
![]() |
14ff681106 | ||
![]() |
9039e15bdf | ||
![]() |
a62d96f555 | ||
![]() |
e6fe19df20 | ||
![]() |
dc16afac4a | ||
![]() |
f59b6da799 | ||
![]() |
6507098d16 | ||
![]() |
b9f802bbda | ||
![]() |
38b4f45b92 | ||
![]() |
d511cc2f7a | ||
![]() |
a617dba85e | ||
![]() |
8c4b6e4804 | ||
![]() |
35fb8dcc27 | ||
![]() |
5126aaae19 | ||
![]() |
d22178ca5e | ||
![]() |
f68d0f0628 | ||
![]() |
d1165bea56 | ||
![]() |
5b1e5a9e03 | ||
![]() |
abe558f127 | ||
![]() |
f35fab24ac | ||
![]() |
8255bc3fc1 | ||
![]() |
73eb718c08 | ||
![]() |
5e79176f47 | ||
![]() |
fb3bc12aac | ||
![]() |
1a48fa26df | ||
![]() |
f8f879153c | ||
![]() |
5dce8d4423 | ||
![]() |
0e7c984854 | ||
![]() |
1c598d769b | ||
![]() |
25d36a8943 | ||
![]() |
e074cc29c9 | ||
![]() |
881187de8d | ||
![]() |
b0afcf0c7b | ||
![]() |
67d7c700fd | ||
![]() |
ac2a9c569e | ||
![]() |
672f506e72 | ||
![]() |
d9effb4ba7 | ||
![]() |
d37ec35592 | ||
![]() |
0c4dc71d5c | ||
![]() |
24653c1cc6 | ||
![]() |
141842dfd2 | ||
![]() |
210ce97bf6 | ||
![]() |
741b680513 | ||
![]() |
0d4642ca6a | ||
![]() |
280e367c86 | ||
![]() |
eee9dee87f | ||
![]() |
c6d147bde6 | ||
![]() |
c6174b027c | ||
![]() |
60e12174fd | ||
![]() |
fab3ff2c41 | ||
![]() |
bed884c971 | ||
![]() |
1d143d95a0 | ||
![]() |
935f443a4d | ||
![]() |
689a65e107 | ||
![]() |
a318fc8f56 | ||
![]() |
bc9544bf14 | ||
![]() |
ff0676b79b | ||
![]() |
885fe80d5b | ||
![]() |
629bb2e2f6 | ||
![]() |
69c2d089f2 | ||
![]() |
738a6a9019 | ||
![]() |
d51a545fcf | ||
![]() |
39b5dd4e6e | ||
![]() |
376cb3c042 | ||
![]() |
28500de2f8 | ||
![]() |
c7d0df223a | ||
![]() |
1fec95ac48 | ||
![]() |
6dffec2730 | ||
![]() |
4491fb8c27 | ||
![]() |
40dd34c7d0 | ||
![]() |
0947da3d41 | ||
![]() |
ae861f7ec0 | ||
![]() |
bd73981c5f | ||
![]() |
ec2fc5a763 | ||
![]() |
8db8752a41 | ||
![]() |
3e51fe4651 | ||
![]() |
8465dcbc19 | ||
![]() |
a7c4e2d203 | ||
![]() |
dfd6bb6a8b | ||
![]() |
49e66b11a2 | ||
![]() |
309b2f872d | ||
![]() |
5763799ba9 | ||
![]() |
528b98c1c4 | ||
![]() |
f97a0756a9 | ||
![]() |
d9fb9c19a8 | ||
![]() |
68bb066755 | ||
![]() |
4ae398c18d | ||
![]() |
a381d6794f | ||
![]() |
c7857b7749 | ||
![]() |
b33e54abb9 | ||
![]() |
ca59c8419c | ||
![]() |
6d07527123 | ||
![]() |
72857b75d0 | ||
![]() |
17231ae41f | ||
![]() |
3b7c3c4f5d | ||
![]() |
c4951d5090 | ||
![]() |
8d4c7767d4 | ||
![]() |
f67d8ef162 | ||
![]() |
4c0a212b68 | ||
![]() |
27d4fa675b | ||
![]() |
c6671f9495 | ||
![]() |
e2c99eeb5e | ||
![]() |
3d2b9053b0 | ||
![]() |
da6f728cd4 | ||
![]() |
7e83296aa2 | ||
![]() |
02cb005529 | ||
![]() |
33f6bd5699 | ||
![]() |
c3d8112187 | ||
![]() |
fe069bdb23 | ||
![]() |
cbe5e37112 | ||
![]() |
03a7d1253c | ||
![]() |
e524ac952d | ||
![]() |
153d605bb6 | ||
![]() |
3db12cc29e | ||
![]() |
a85ff30ad4 | ||
![]() |
fed89badd4 | ||
![]() |
dd0491e5ca | ||
![]() |
022045ae05 | ||
![]() |
c83e5c57a4 | ||
![]() |
736f99768a | ||
![]() |
47979555fe | ||
![]() |
0235245631 | ||
![]() |
2b0b873159 | ||
![]() |
cdb99ad887 | ||
![]() |
1e09b823b7 | ||
![]() |
13ded5f005 | ||
![]() |
c90ebb5d82 | ||
![]() |
c3c4b79147 | ||
![]() |
6248c6d032 | ||
![]() |
20c1ae246d | ||
![]() |
5aafa0f4c4 | ||
![]() |
df74604755 | ||
![]() |
e7f4479df1 | ||
![]() |
6e22364a5a | ||
![]() |
3f9878afc1 | ||
![]() |
1a1fde1885 | ||
![]() |
5c8a99c77b | ||
![]() |
f856c07b04 | ||
![]() |
90f8e748ef | ||
![]() |
9e0aa76375 | ||
![]() |
e930c74e85 | ||
![]() |
ed71b2fbf5 | ||
![]() |
044f5ce2b5 | ||
![]() |
a69d47c115 | ||
![]() |
8ed8b5dfa3 | ||
![]() |
fd2853b2cf | ||
![]() |
6d744374db | ||
![]() |
ab6c6a6748 | ||
![]() |
0d6e10311c | ||
![]() |
c0fa212fa9 | ||
![]() |
692d405983 | ||
![]() |
09b73dce06 | ||
![]() |
7d00f7e0dc | ||
![]() |
fabe5ec439 | ||
![]() |
153757933a | ||
![]() |
9b0ea3f63d | ||
![]() |
b7c60cec66 | ||
![]() |
039065ee4a | ||
![]() |
8306de731a | ||
![]() |
d87d714b8d | ||
![]() |
0f5db0ba5e | ||
![]() |
616fbb08f3 | ||
![]() |
d17dac67e7 | ||
![]() |
32ae0a7bf6 | ||
![]() |
54b211daa4 | ||
![]() |
df1f9f1b56 | ||
![]() |
34e7b06cc9 | ||
![]() |
36a1d60c0e | ||
![]() |
1ae38c8ebc | ||
![]() |
91f88cebf0 | ||
![]() |
74fb88f9ac | ||
![]() |
dc87c11ac4 | ||
![]() |
7ff97bbb94 | ||
![]() |
70c4d8ae9c | ||
![]() |
55fb7565d4 | ||
![]() |
175082e3ad | ||
![]() |
4e3f9fb6b3 | ||
![]() |
4d90c8a00b | ||
![]() |
ee51e7abe1 | ||
![]() |
b7214b8ede | ||
![]() |
5af2a87709 | ||
![]() |
15cbdf2a18 | ||
![]() |
1ece171597 | ||
![]() |
60aecaf0b8 | ||
![]() |
bb2b5fd982 | ||
![]() |
526716556c | ||
![]() |
e5f2aba8e2 | ||
![]() |
401a34fcbd | ||
![]() |
7277d52828 | ||
![]() |
ea51ff9285 | ||
![]() |
5dc358093e | ||
![]() |
713132d4af | ||
![]() |
6434374bf3 | ||
![]() |
a7a6c937ea | ||
![]() |
120a2b0f03 | ||
![]() |
e65a0ee617 | ||
![]() |
cd44f548f5 | ||
![]() |
9e344f50a7 | ||
![]() |
7c633f1253 | ||
![]() |
aef529afe5 | ||
![]() |
b66867f0ff | ||
![]() |
4f274bae36 | ||
![]() |
4a9c8d0278 | ||
![]() |
7d1800a0d7 | ||
![]() |
e023adc9b2 | ||
![]() |
70054e5db4 | ||
![]() |
0046c3f161 | ||
![]() |
c0a3614f09 | ||
![]() |
da82adeeee | ||
![]() |
dc1a4fab8e | ||
![]() |
794939b6a8 | ||
![]() |
62696a3a48 | ||
![]() |
7d8e54ba47 | ||
![]() |
0e71957b74 | ||
![]() |
8af17fafe1 | ||
![]() |
dc523525c2 | ||
![]() |
e4bdeaa943 | ||
![]() |
f4f720bc8f | ||
![]() |
39ec061639 | ||
![]() |
156a473565 | ||
![]() |
4786a91eb8 | ||
![]() |
22e64d8c18 | ||
![]() |
8eace7ba5c | ||
![]() |
3d6e5c5df7 | ||
![]() |
1d44c88e0a | ||
![]() |
ddde817abf | ||
![]() |
fabb351b77 | ||
![]() |
e2bbaf2cee | ||
![]() |
fa75c2e2a0 | ||
![]() |
2490884b78 | ||
![]() |
64324c8fc2 | ||
![]() |
8e3f4547a5 | ||
![]() |
d46122dab9 | ||
![]() |
9ab1667088 | ||
![]() |
cb99f446b3 | ||
![]() |
479b467bb6 | ||
![]() |
79e8c447b9 | ||
![]() |
cc1a1079e4 | ||
![]() |
23af4fcdac | ||
![]() |
4c3c8c6239 | ||
![]() |
ded923fb95 | ||
![]() |
3f4e167aca | ||
![]() |
43c5e1fc96 | ||
![]() |
cca067a34d | ||
![]() |
1f6752307d | ||
![]() |
c3941b6e65 | ||
![]() |
be86561913 | ||
![]() |
77a31ac3b2 | ||
![]() |
d6c373c48d | ||
![]() |
86ffab1873 | ||
![]() |
6de82e6857 | ||
![]() |
c59af8881c | ||
![]() |
e51fbdc851 | ||
![]() |
d348977d07 | ||
![]() |
f8df49e40f | ||
![]() |
a0b4b2bf5e | ||
![]() |
1f3046dcca | ||
![]() |
69fae85fe8 | ||
![]() |
828448b2ff | ||
![]() |
249150dd1b | ||
![]() |
3ef950eea3 | ||
![]() |
90cb1ebc49 | ||
![]() |
7bce58f6f2 | ||
![]() |
1d71ad71c2 | ||
![]() |
7664a913cc | ||
![]() |
a128dd5d3c | ||
![]() |
a63a92e3d5 | ||
![]() |
dbde6149ac | ||
![]() |
4282bbbbc7 | ||
![]() |
d24e2b561f | ||
![]() |
ebb5efcd42 | ||
![]() |
06f96dc16f | ||
![]() |
e804ad2488 | ||
![]() |
2a4c74c099 | ||
![]() |
ade623f6b8 | ||
![]() |
c0be53523c | ||
![]() |
b1caca4694 | ||
![]() |
8304ce93bf | ||
![]() |
a4c5e18c4b | ||
![]() |
2aca5464b7 | ||
![]() |
960008b124 | ||
![]() |
39ed591414 | ||
![]() |
3f6e242fd9 | ||
![]() |
31fd7f8580 | ||
![]() |
82c4e7aa54 | ||
![]() |
82ba4be5e7 | ||
![]() |
3db901bd09 | ||
![]() |
2633cf1ef6 | ||
![]() |
7b4b268875 | ||
![]() |
e5b2faad9a | ||
![]() |
cd66405363 | ||
![]() |
d23eadbfda | ||
![]() |
d0c205c1cc | ||
![]() |
d08faf6e54 | ||
![]() |
ef6073de14 | ||
![]() |
d20a621e93 | ||
![]() |
24d0ca6f8e | ||
![]() |
ab5d5fb772 | ||
![]() |
b890345b1f | ||
![]() |
f7a87338b8 | ||
![]() |
a2a10d14b6 | ||
![]() |
da440256d9 | ||
![]() |
29fd0e0319 | ||
![]() |
1d5c4f13aa | ||
![]() |
6173f9337a | ||
![]() |
3945008956 | ||
![]() |
340c462062 | ||
![]() |
4b65600c08 | ||
![]() |
36d9e7d8f4 | ||
![]() |
e84db033b0 | ||
![]() |
f9d888ec24 | ||
![]() |
022e62b829 | ||
![]() |
05990fb287 | ||
![]() |
3b69e48e04 | ||
![]() |
16a5ca2a55 | ||
![]() |
3b354b8b20 | ||
![]() |
c6463a30ea | ||
![]() |
69cd87909b | ||
![]() |
9c6801afa8 | ||
![]() |
624b8ae853 | ||
![]() |
04cbceed5e | ||
![]() |
748973a17c | ||
![]() |
b2106287a6 | ||
![]() |
8a6925c5be | ||
![]() |
8b41a71668 | ||
![]() |
eb6270982f | ||
![]() |
b08cb52d0a | ||
![]() |
0c6dd4e788 | ||
![]() |
f85732ccb0 | ||
![]() |
1e3ff51bfe | ||
![]() |
f963b826ca | ||
![]() |
087c88753c | ||
![]() |
11aa6da1e9 | ||
![]() |
129bfa3a2e | ||
![]() |
bea41465e2 | ||
![]() |
facf5af589 | ||
![]() |
af0d04d523 | ||
![]() |
f33c737e99 | ||
![]() |
4abb87ccca | ||
![]() |
752399ca6b | ||
![]() |
88c75fb5dc | ||
![]() |
21f060c3fd | ||
![]() |
391bd1098f | ||
![]() |
388cddca7b | ||
![]() |
065a506470 | ||
![]() |
a97f4771d6 | ||
![]() |
9db7dd3f3e | ||
![]() |
9b14bf6826 | ||
![]() |
7e4cb28c1c | ||
![]() |
49a584377e | ||
![]() |
d55a5bde98 | ||
![]() |
e63160cbe9 | ||
![]() |
ede561789a | ||
![]() |
af4220331e | ||
![]() |
7393198f7b | ||
![]() |
c2fac3a717 | ||
![]() |
59ef307af2 | ||
![]() |
6c418402e3 | ||
![]() |
54b8ad5475 | ||
![]() |
c602f2493a | ||
![]() |
768c1dbe43 | ||
![]() |
7b6b53ab8c | ||
![]() |
e15e7d1dc5 | ||
![]() |
b48e0ebb37 | ||
![]() |
835850c02a | ||
![]() |
1a46e08cc2 | ||
![]() |
0872de7910 | ||
![]() |
733801980c | ||
![]() |
10dd32edd2 | ||
![]() |
081f5ec4d9 | ||
![]() |
a3c966cc6c | ||
![]() |
c7733f51d0 | ||
![]() |
fafc508d63 | ||
![]() |
5956c6678e | ||
![]() |
e756cc8720 | ||
![]() |
4e7020d030 | ||
![]() |
d2f5185d49 | ||
![]() |
39afbdb570 | ||
![]() |
9d97972a34 | ||
![]() |
ca7733c8e4 | ||
![]() |
3bf69c9da8 | ||
![]() |
e5562a5069 | ||
![]() |
34292618d8 | ||
![]() |
e2fee79957 | ||
![]() |
61a56336a1 | ||
![]() |
abe3f4cda0 | ||
![]() |
510f9352e7 | ||
![]() |
1038de899b | ||
![]() |
ff37792dc9 | ||
![]() |
476a576dda | ||
![]() |
c755c7ed98 | ||
![]() |
e7fabeceb2 | ||
![]() |
91d0ba1007 | ||
![]() |
0c71c7c23f | ||
![]() |
38deb66e42 | ||
![]() |
8920be6bca | ||
![]() |
c638343c18 | ||
![]() |
2c2bba5525 | ||
![]() |
b3f59cee25 | ||
![]() |
9f66b63c00 | ||
![]() |
2dcf265c40 | ||
![]() |
02fc4ce806 | ||
![]() |
d4f903b95c | ||
![]() |
6c8aa5da63 | ||
![]() |
57e6864902 | ||
![]() |
d4083c9bbb | ||
![]() |
d8ecd302e1 | ||
![]() |
1765412b61 | ||
![]() |
7655584022 | ||
![]() |
e04f87fe95 | ||
![]() |
4ddd1ecceb | ||
![]() |
c10ef9e3bc | ||
![]() |
04c084e831 | ||
![]() |
eda2e4e10a | ||
![]() |
fff4caf0de | ||
![]() |
3d7e5bc90d | ||
![]() |
aad79f664e | ||
![]() |
b8962cec2d | ||
![]() |
b271ed19b7 | ||
![]() |
83f5f9e1a7 | ||
![]() |
7c56a50632 | ||
![]() |
599c72bade | ||
![]() |
3c762d3e2b | ||
![]() |
2b6eb8473e | ||
![]() |
034447e021 | ||
![]() |
32ded8b731 | ||
![]() |
33a4b08ac0 | ||
![]() |
433ed8384f | ||
![]() |
83a89c144c | ||
![]() |
14a3e10cc2 | ||
![]() |
464561b420 | ||
![]() |
63b940a623 | ||
![]() |
7a42a4d71f | ||
![]() |
85551f0fdb | ||
![]() |
4cdfe1276a | ||
![]() |
9a35427113 | ||
![]() |
1a74a713b6 | ||
![]() |
7a4f6f7bfd | ||
![]() |
463435db68 | ||
![]() |
ba8811c628 | ||
![]() |
df0a98b2a4 | ||
![]() |
ac08598176 | ||
![]() |
8dc81b6987 | ||
![]() |
30ef7b4334 | ||
![]() |
215bc46469 | ||
![]() |
de5c97af11 | ||
![]() |
2a93c7e236 | ||
![]() |
ce244d8514 | ||
![]() |
875f79b49f | ||
![]() |
81912f9e7d | ||
![]() |
1ede7003c0 | ||
![]() |
ff74113675 | ||
![]() |
a33d9f5a06 | ||
![]() |
e3b4689cab | ||
![]() |
998790d69c | ||
![]() |
4aeb774812 | ||
![]() |
177d6fe861 | ||
![]() |
08b5012946 | ||
![]() |
412a8043a9 | ||
![]() |
ec800e4219 | ||
![]() |
26dd93b67c | ||
![]() |
b57e198c29 | ||
![]() |
b6228d137c | ||
![]() |
b6b9f888fc | ||
![]() |
4c893b8260 | ||
![]() |
e02077d58e | ||
![]() |
8ff1996e12 | ||
![]() |
6bef980636 | ||
![]() |
1de2a4ff14 | ||
![]() |
1c0e69e1c2 | ||
![]() |
938277b74e | ||
![]() |
2d09557297 | ||
![]() |
71b55995ee | ||
![]() |
1d30c99d89 | ||
![]() |
184462a875 | ||
![]() |
112895fddc | ||
![]() |
1ec7251275 | ||
![]() |
1eec1a9fe7 | ||
![]() |
f5b4e5d5e1 | ||
![]() |
938536c0c3 | ||
![]() |
5e03df723c | ||
![]() |
cf59e2884a | ||
![]() |
1a5c916923 | ||
![]() |
f59cae2dbb | ||
![]() |
fa28788f78 | ||
![]() |
ebc1db6a7b | ||
![]() |
f592a3f373 | ||
![]() |
025ab8b524 | ||
![]() |
0e2b3986b9 | ||
![]() |
f7191ac29e | ||
![]() |
52d3f4417f | ||
![]() |
bca316299e | ||
![]() |
dc403237f2 | ||
![]() |
4143ad67af | ||
![]() |
c7b646315a | ||
![]() |
4cb2ed9552 | ||
![]() |
c66ef5a201 | ||
![]() |
8825c9c995 | ||
![]() |
0aaf24c4a5 | ||
![]() |
4efb082d67 | ||
![]() |
8c92768f66 | ||
![]() |
1718f7a8a8 | ||
![]() |
377a78a405 | ||
![]() |
74aaccda15 | ||
![]() |
54356a22ba | ||
![]() |
15cce29a51 | ||
![]() |
c5ebe13aeb | ||
![]() |
cba4d2e93b | ||
![]() |
c850408555 | ||
![]() |
3b0c0435bc | ||
![]() |
1678a03cb3 | ||
![]() |
2eb84e2de1 | ||
![]() |
d65e0fb4c8 | ||
![]() |
9fe679dca8 | ||
![]() |
92bbf6896c | ||
![]() |
2eff1f0e78 | ||
![]() |
1d0ff39c92 | ||
![]() |
fba38b949a | ||
![]() |
47c167dc04 | ||
![]() |
65a989d3cd | ||
![]() |
489fd0b272 | ||
![]() |
cd7884a0e5 | ||
![]() |
c4324fd3ea | ||
![]() |
3f87cc214a | ||
![]() |
948ecb4fd1 | ||
![]() |
685c2c9de0 | ||
![]() |
afc0c78b4c | ||
![]() |
07da6e3905 | ||
![]() |
e37809a126 | ||
![]() |
0e68013bb3 | ||
![]() |
3897bd54df | ||
![]() |
4576cb4fa0 | ||
![]() |
21c7063239 | ||
![]() |
6ff0ac72de | ||
![]() |
aeffda945f | ||
![]() |
b5a09d2f83 | ||
![]() |
cec406e402 | ||
![]() |
cc3b0b2859 | ||
![]() |
32ebb08788 | ||
![]() |
8d6e3e547c | ||
![]() |
0fd7fec25e | ||
![]() |
1c9a2e8c5f | ||
![]() |
c628192163 | ||
![]() |
a0b4d58000 | ||
![]() |
a834d67283 | ||
![]() |
28c2da12ae | ||
![]() |
7a8eb09cdb | ||
![]() |
7d99ad3177 | ||
![]() |
862b05221d | ||
![]() |
8f1ab99190 | ||
![]() |
165bcfd75d | ||
![]() |
fa9006c677 | ||
![]() |
0f50dc8d33 | ||
![]() |
8302f2182b | ||
![]() |
d26fa63ccd | ||
![]() |
d7f7c16958 | ||
![]() |
4ab5b4a5e6 | ||
![]() |
99c03f7fbb | ||
![]() |
8f0a6d3065 | ||
![]() |
b209668d33 | ||
![]() |
290a708e56 | ||
![]() |
e9965d37e3 | ||
![]() |
80f49bed1d | ||
![]() |
9a63d63d5b | ||
![]() |
04cb5f14f7 | ||
![]() |
ba4b42b4ee | ||
![]() |
d3f55af51e | ||
![]() |
76144fb3dc | ||
![]() |
5a59eb1963 | ||
![]() |
7ec6dff352 | ||
![]() |
257f718ab6 | ||
![]() |
185367648f | ||
![]() |
e2d9ce737c | ||
![]() |
b9b48cfbb1 | ||
![]() |
4f216b0394 | ||
![]() |
0f7f5216ee | ||
![]() |
b074696ac1 | ||
![]() |
09006a936d | ||
![]() |
4f22a70b08 | ||
![]() |
df86972ea7 | ||
![]() |
3d68c74a19 | ||
![]() |
201c5ddfe1 | ||
![]() |
4cf3ec8663 | ||
![]() |
3302fe319b | ||
![]() |
220fd31226 | ||
![]() |
1299c64415 | ||
![]() |
350627172d | ||
![]() |
c5b038587e | ||
![]() |
ebb3f319cc | ||
![]() |
841ea9ff48 | ||
![]() |
3f18a58cca | ||
![]() |
2891e92d16 | ||
![]() |
c4bfad9399 | ||
![]() |
ef249043f9 | ||
![]() |
b4aaf85ccf | ||
![]() |
252089e372 | ||
![]() |
ed4cdbeacc | ||
![]() |
aa62ca639b | ||
![]() |
9b5a391c86 | ||
![]() |
3025c5383b | ||
![]() |
6d29c19e3e | ||
![]() |
d3828a82fc | ||
![]() |
1f34460d39 | ||
![]() |
0abde6f1a7 | ||
![]() |
5248a37eb3 | ||
![]() |
3ddee8090c | ||
![]() |
ae633c7e7b | ||
![]() |
c15022462a | ||
![]() |
623a8c2d43 | ||
![]() |
0f8751497e | ||
![]() |
0d91220ab7 | ||
![]() |
bfe45aea18 | ||
![]() |
3df0878e43 | ||
![]() |
0793971d01 | ||
![]() |
3c059cc599 | ||
![]() |
72dcf886bf | ||
![]() |
28bf4082b3 | ||
![]() |
bdb208c079 | ||
![]() |
4a5b3e7bc8 | ||
![]() |
d114a3dc21 | ||
![]() |
f5522425f6 | ||
![]() |
510e4a0033 | ||
![]() |
54a4644893 | ||
![]() |
d4b26bbaf0 | ||
![]() |
c93f749a35 | ||
![]() |
29ba5c961d | ||
![]() |
6d638539e5 | ||
![]() |
5e0f182ebc | ||
![]() |
b0abb99ee1 | ||
![]() |
f818d4b446 | ||
![]() |
136d22188e | ||
![]() |
3456aabfce | ||
![]() |
8f060a741f | ||
![]() |
aacdb6be29 | ||
![]() |
9b4af86ab9 | ||
![]() |
2db3b413f4 | ||
![]() |
0c8257df3d | ||
![]() |
7e24afc966 | ||
![]() |
717b8947d5 | ||
![]() |
c20ac0836e | ||
![]() |
7752cf31b3 | ||
![]() |
14979b1630 | ||
![]() |
a865620f90 | ||
![]() |
ee52e37b36 | ||
![]() |
8c527ab592 | ||
![]() |
4621937477 | ||
![]() |
862b7e34df | ||
![]() |
f89951716e | ||
![]() |
d903a50bd8 | ||
![]() |
bcc779bd43 | ||
![]() |
801c3d4715 | ||
![]() |
a7b0b03bde | ||
![]() |
6a02f2cfec | ||
![]() |
01c9916cb9 | ||
![]() |
adf81c0ab5 | ||
![]() |
6352b50ed0 | ||
![]() |
e49fb74847 | ||
![]() |
39cc43f26b | ||
![]() |
a78556b56a | ||
![]() |
248776144e | ||
![]() |
bde6d4e950 | ||
![]() |
aec6058dc5 | ||
![]() |
b2008b9031 | ||
![]() |
476e5ac603 | ||
![]() |
61ca6384cc | ||
![]() |
6d0f5e4111 | ||
![]() |
a2d245ef92 | ||
![]() |
327c1c0e7b | ||
![]() |
7c7af28a0d | ||
![]() |
50161cdab9 | ||
![]() |
5247c13f98 | ||
![]() |
b6719bda10 | ||
![]() |
35a2db064b | ||
![]() |
f9d9cd2df4 | ||
![]() |
8ecb364f8c | ||
![]() |
fba1bf7072 | ||
![]() |
1bb43e06e2 | ||
![]() |
87c5f6b4ab | ||
![]() |
7cbc43616e | ||
![]() |
5dac67b710 | ||
![]() |
2d754dac6d | ||
![]() |
51ad7df31c | ||
![]() |
790fbb96d5 | ||
![]() |
538779991e | ||
![]() |
81752b6f7c | ||
![]() |
a03394f177 | ||
![]() |
0ef28f6a50 | ||
![]() |
25e3f91754 | ||
![]() |
bff07ded25 | ||
![]() |
4e3ef607b1 | ||
![]() |
c20f7ee534 | ||
![]() |
da66ef42d7 | ||
![]() |
f6d8ed85e4 | ||
![]() |
5b67ca315a | ||
![]() |
497ecda14d | ||
![]() |
45c15de623 | ||
![]() |
be567dc508 | ||
![]() |
4ae484dbca | ||
![]() |
0877a994f1 | ||
![]() |
d909b8119e | ||
![]() |
bc5aa1f837 | ||
![]() |
071b3a0b3e | ||
![]() |
eb127a5e1b | ||
![]() |
5f1bd4396e | ||
![]() |
74169c166a | ||
![]() |
7cadfb8ddd | ||
![]() |
056b0d7548 | ||
![]() |
d5675508fa | ||
![]() |
8286bff95f | ||
![]() |
17eb3f5e33 | ||
![]() |
1b80cf82de | ||
![]() |
158e11de1e | ||
![]() |
7c2a196568 | ||
![]() |
f7e8488edf | ||
![]() |
094c213baa | ||
![]() |
f1435452ea | ||
![]() |
c5b45c37fc | ||
![]() |
371fe267b1 | ||
![]() |
94f5b13db0 | ||
![]() |
49eb8212e3 | ||
![]() |
e74831fcb4 | ||
![]() |
61d096c9ec | ||
![]() |
33b3321698 | ||
![]() |
dbba0c9b03 | ||
![]() |
2471e74aab | ||
![]() |
ef4bb5e13b | ||
![]() |
0238a7338a | ||
![]() |
6719a41aef | ||
![]() |
51e135cfbd | ||
![]() |
6f996d8eed | ||
![]() |
4495a4c739 | ||
![]() |
637a57d534 | ||
![]() |
6bdc4a55de | ||
![]() |
b42520b0ef | ||
![]() |
92260e7d0b | ||
![]() |
b044549013 | ||
![]() |
aaa6f6bd55 | ||
![]() |
44bf0a5d6d | ||
![]() |
9a7465bfd5 | ||
![]() |
214f9a308e | ||
![]() |
d5f3e2e7d4 | ||
![]() |
1242f71b3b | ||
![]() |
ea82a26dae | ||
![]() |
b582c27bf4 | ||
![]() |
90f79b0692 | ||
![]() |
781322ab41 | ||
![]() |
f6526f7d9f | ||
![]() |
274115c727 | ||
![]() |
2d7398161d | ||
![]() |
695b88b8a7 | ||
![]() |
b337a6b3f5 | ||
![]() |
2bb4dd8e22 | ||
![]() |
7c323bdcdc | ||
![]() |
7f295d9565 | ||
![]() |
2bc296b468 | ||
![]() |
45a31a3022 | ||
![]() |
d931b146e3 | ||
![]() |
e72ecaafd3 | ||
![]() |
6d10c41aeb | ||
![]() |
5a50a3a40c | ||
![]() |
57b608083e | ||
![]() |
ca67534cd2 | ||
![]() |
472ec32617 | ||
![]() |
05dfc24af6 | ||
![]() |
88cff387c3 | ||
![]() |
bacca04695 | ||
![]() |
29894cec6a | ||
![]() |
dac5516b2c | ||
![]() |
a0449abab9 | ||
![]() |
f410a4bb68 | ||
![]() |
c055e1da49 | ||
![]() |
aa0a799492 | ||
![]() |
f094cb543b | ||
![]() |
7e0cc7af41 | ||
![]() |
85b873a1a2 | ||
![]() |
49ed97cb77 | ||
![]() |
f0134aab71 | ||
![]() |
86bf9287ab | ||
![]() |
ae35256177 | ||
![]() |
18942f835f | ||
![]() |
15d8503726 | ||
![]() |
152c3352c2 | ||
![]() |
b5e17b7ea5 | ||
![]() |
7bf0fded1b | ||
![]() |
adb312bdd2 | ||
![]() |
ffeed05a5d | ||
![]() |
c7780db07a | ||
![]() |
1f2f1a657e | ||
![]() |
ca13d1670e | ||
![]() |
59ddda6225 | ||
![]() |
9408601074 | ||
![]() |
ad725b671e | ||
![]() |
a11280b427 | ||
![]() |
090716ba4f | ||
![]() |
7efed8226c | ||
![]() |
c1151cbcfa | ||
![]() |
8181808bec | ||
![]() |
3b35ca7bb9 | ||
![]() |
95722541d0 | ||
![]() |
f8998834cf | ||
![]() |
d42e757576 | ||
![]() |
f3e7fe5eb4 | ||
![]() |
96580e5c40 | ||
![]() |
6432b7f42a | ||
![]() |
684c5f477c | ||
![]() |
b4b1bf5de2 | ||
![]() |
df5a0d25bc | ||
![]() |
27bc64e63f | ||
![]() |
241cb04f06 | ||
![]() |
1b3d32ca79 | ||
![]() |
340ffd070c | ||
![]() |
dd33cbfa36 | ||
![]() |
6c0fecd40d | ||
![]() |
c3c845e9d7 | ||
![]() |
4f60a6340e | ||
![]() |
04e608d164 | ||
![]() |
f95b4ba825 | ||
![]() |
cc17898da8 | ||
![]() |
0dde233c51 | ||
![]() |
f75a1e1c9a | ||
![]() |
c0e1ebb72a | ||
![]() |
39ef671836 | ||
![]() |
4c7a0035aa | ||
![]() |
39a5453904 | ||
![]() |
1f34c2834e | ||
![]() |
12675be516 | ||
![]() |
bf675d971b | ||
![]() |
faa88afc88 | ||
![]() |
229d09927e | ||
![]() |
3e2908ea16 | ||
![]() |
110a84344b | ||
![]() |
4cdcb48de6 | ||
![]() |
b62004aae9 | ||
![]() |
240fe2a564 | ||
![]() |
6ede9f2c7c | ||
![]() |
e65969d587 | ||
![]() |
8b8ecf7b7b | ||
![]() |
b502d78984 | ||
![]() |
394eee3954 | ||
![]() |
8d23e665ea | ||
![]() |
daa5b804b3 | ||
![]() |
31878dd43b | ||
![]() |
15bca702c1 | ||
![]() |
95936549e2 | ||
![]() |
4af68365c9 | ||
![]() |
bf882cec1d | ||
![]() |
9ef04192db | ||
![]() |
97ddd30af4 | ||
![]() |
72d742e2f4 | ||
![]() |
c766a0f10f | ||
![]() |
dec30d70fd | ||
![]() |
0d2425ca78 | ||
![]() |
44489d3d7b | ||
![]() |
b8505dc621 | ||
![]() |
53b6113c75 | ||
![]() |
eaea262449 | ||
![]() |
5d25719918 | ||
![]() |
4b3f7eb209 | ||
![]() |
24c2c435a0 | ||
![]() |
4525060c26 | ||
![]() |
68e8b0695d | ||
![]() |
db80a34aca | ||
![]() |
50b6801d35 | ||
![]() |
f233cac7a1 | ||
![]() |
ea8adc3de7 | ||
![]() |
af862336a8 | ||
![]() |
91625c8ba8 | ||
![]() |
21aec96e2e | ||
![]() |
f45ed644d9 | ||
![]() |
8c0ef5798d | ||
![]() |
2088261ac6 | ||
![]() |
1b3797b414 | ||
![]() |
d956c79291 | ||
![]() |
f1d7b29f11 | ||
![]() |
02e5e0de5e | ||
![]() |
5b987d4f33 | ||
![]() |
c971127b17 | ||
![]() |
e56948cefa | ||
![]() |
be0831ee11 | ||
![]() |
8947f9c00c | ||
![]() |
a574b43eb8 | ||
![]() |
842a90e026 | ||
![]() |
94083edf9c | ||
![]() |
445eb1f640 | ||
![]() |
252ce70203 | ||
![]() |
b38ae75bef | ||
![]() |
8f581ca861 | ||
![]() |
6b77d5db4a | ||
![]() |
abdeb07bd3 | ||
![]() |
0c65ecf53e | ||
![]() |
b20a957c6e | ||
![]() |
538d8d5497 | ||
![]() |
9f55cf4cf4 | ||
![]() |
32eee82744 | ||
![]() |
f2e68ddcf4 | ||
![]() |
750465153f | ||
![]() |
7f8a31007a | ||
![]() |
04615b251c | ||
![]() |
ce6d54ad95 | ||
![]() |
fed298b179 | ||
![]() |
e7e66497d2 | ||
![]() |
23a957e783 | ||
![]() |
f6d89354a1 | ||
![]() |
e6713d456c | ||
![]() |
c03c6fc8ed | ||
![]() |
44b250809f | ||
![]() |
60c1d40b20 | ||
![]() |
1cc40bda83 | ||
![]() |
4924839217 | ||
![]() |
16a460adff | ||
![]() |
970702daa0 | ||
![]() |
63b8de00ef | ||
![]() |
537c257acf | ||
![]() |
56f926094e | ||
![]() |
8e2d257040 | ||
![]() |
53b208e891 | ||
![]() |
6c4efc1f9c | ||
![]() |
55f61fda35 | ||
![]() |
03ed308bd9 | ||
![]() |
d41d8df2a5 | ||
![]() |
c59678594b | ||
![]() |
156d78feb3 | ||
![]() |
549ba662f5 | ||
![]() |
a991577779 | ||
![]() |
399919c49a | ||
![]() |
f2438a5bf4 | ||
![]() |
d16c75b15c | ||
![]() |
b1ccd573f8 | ||
![]() |
ecdd09edcd | ||
![]() |
61f46e77e0 | ||
![]() |
d3df346ce7 | ||
![]() |
08537823ae | ||
![]() |
5597215d58 | ||
![]() |
5a18a6cba9 | ||
![]() |
c14239ca30 | ||
![]() |
1b91f831bf | ||
![]() |
ba7259d9ee | ||
![]() |
dd0adeb3bb | ||
![]() |
2b4ffb2bd3 | ||
![]() |
e6b55a1f70 | ||
![]() |
e59b3e8bf5 | ||
![]() |
6ba8ac8526 | ||
![]() |
add90e873b | ||
![]() |
93eb712824 | ||
![]() |
d08325d3d0 | ||
![]() |
2c399d4494 | ||
![]() |
5e352c6771 | ||
![]() |
3bd77913f7 | ||
![]() |
5c6c67a974 | ||
![]() |
1962bbf08d | ||
![]() |
2cffe2ec1a | ||
![]() |
8e4a2b3543 | ||
![]() |
f6373561d3 | ||
![]() |
9c85537659 | ||
![]() |
042cef0945 | ||
![]() |
c7da99d870 | ||
![]() |
e8408cb5b2 | ||
![]() |
4df9bd8917 | ||
![]() |
ed999a247a | ||
![]() |
d0d017f5fe | ||
![]() |
d039f9bbb8 | ||
![]() |
a01539b664 | ||
![]() |
1674c81e9c | ||
![]() |
7adbc8cda6 | ||
![]() |
8eb04a082e | ||
![]() |
a7a3c4f2d8 | ||
![]() |
93742a8efe | ||
![]() |
4b3bb54320 | ||
![]() |
3930826e93 | ||
![]() |
9f0f08b571 | ||
![]() |
ca9f21d805 | ||
![]() |
ebc4ebbbcc | ||
![]() |
4202126f34 | ||
![]() |
8885611ae3 | ||
![]() |
d8dc512f45 | ||
![]() |
f1822c2adb |
@@ -1,3 +1,5 @@
|
||||
# SPDX-FileCopyrightText: no
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
---
|
||||
BasedOnStyle: WebKit
|
||||
|
||||
@@ -6,6 +8,7 @@ AlignEscapedNewlines: DontAlign
|
||||
AllowAllParametersOfDeclarationOnNextLine: "false"
|
||||
AllowShortFunctionsOnASingleLine: Inline
|
||||
AllowShortIfStatementsOnASingleLine: "false"
|
||||
AllowShortLambdasOnASingleLine: All
|
||||
AllowShortLoopsOnASingleLine: "false"
|
||||
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
||||
AlwaysBreakTemplateDeclarations: Yes
|
||||
|
35
.clang-format.base
Normal file
35
.clang-format.base
Normal file
@@ -0,0 +1,35 @@
|
||||
# SPDX-FileCopyrightText: no
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
---
|
||||
BasedOnStyle: WebKit
|
||||
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignEscapedNewlines: DontAlign
|
||||
AllowAllParametersOfDeclarationOnNextLine: "false"
|
||||
AllowShortFunctionsOnASingleLine: Inline
|
||||
AllowShortIfStatementsOnASingleLine: "false"
|
||||
AllowShortLambdasOnASingleLine: All
|
||||
AllowShortLoopsOnASingleLine: "false"
|
||||
AlwaysBreakAfterReturnType: TopLevelDefinitions
|
||||
AlwaysBreakTemplateDeclarations: Yes
|
||||
BinPackArguments: "false"
|
||||
BinPackParameters: "false"
|
||||
BreakBeforeBraces: Allman
|
||||
BreakBeforeTernaryOperators: "true"
|
||||
BreakConstructorInitializers: BeforeComma
|
||||
ColumnLimit: 120
|
||||
Cpp11BracedListStyle: "false"
|
||||
FixNamespaceComments: "true"
|
||||
IncludeBlocks: Preserve
|
||||
IndentWidth: "4"
|
||||
MaxEmptyLinesToKeep: "2"
|
||||
NamespaceIndentation: None
|
||||
PointerAlignment: Left
|
||||
ReflowComments: "false"
|
||||
SortIncludes: "true"
|
||||
SpaceAfterCStyleCast: "false"
|
||||
SpacesBeforeTrailingComments: "2"
|
||||
SpacesInAngles: "true"
|
||||
SpacesInParentheses: "true"
|
||||
SpacesInSquareBrackets: "true"
|
||||
Standard: Cpp11
|
@@ -1,4 +1,5 @@
|
||||
# http://EditorConfig.org
|
||||
# SPDX-FileCopyrightText: no
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
root = true
|
||||
|
||||
@@ -7,7 +8,22 @@ charset = utf-8
|
||||
end_of_line = lf
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[CMakeLists.txt]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
insert_final_newline = true
|
||||
|
||||
[*.cmake]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{py,cpp,h}]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
insert_final_newline = true
|
||||
|
||||
[*.sh]
|
||||
indent_style = tab
|
||||
insert_final_newline = true
|
||||
|
||||
|
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -1,3 +1,6 @@
|
||||
# SPDX-FileCopyrightText: no
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
.editorconfig export-ignore
|
||||
.gitattributes export-ignore
|
||||
.github export-ignore
|
||||
|
63
.github/ISSUE_TEMPLATE/usability_test.md
vendored
Normal file
63
.github/ISSUE_TEMPLATE/usability_test.md
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
name: Usability testing
|
||||
about: Propose a usability test to help us
|
||||
---
|
||||
# Objective
|
||||
The test goals. e.g.: Evaluate the language selection and the partitioning configurations.
|
||||
|
||||
# Requirements
|
||||
|
||||
## Environment
|
||||
What is the environment that should be tested and how it should be prepared. e.g.: The test needs to run in the release 3.32.34 installing Manjaro.
|
||||
|
||||
## User profile
|
||||
Describe the target users you are looking for the test. e.g.: A user that has already used a system-installer.
|
||||
|
||||
## Facilitator
|
||||
What the facilitator should be familiar with to run the tests. e.g.: The facilitator needs to know how to build Calamares to be able to run the tests.
|
||||
|
||||
# Test design
|
||||
## Tasks
|
||||
A list of tasks that the user has to perform. e.g.:
|
||||
|
||||
* Use another language.
|
||||
* Change partitioning configurations.
|
||||
|
||||
## Scenarios
|
||||
A list of scenarios for the user to perform the tasks. They should put the user in a context and not give specific hints about what you want the user to do. e.g.:
|
||||
|
||||
1. You want to change the installer language to English. Please, look for this option in the application.
|
||||
2. You are a big fan of a lot of distributions and want to have some space left to install other distributions in your disk after this installation. Please, resize your disk to have 35GB of space left.
|
||||
|
||||
<!--
|
||||
|
||||
## Results
|
||||
|
||||
Uncomment this session once you have your results.
|
||||
|
||||
### Summary
|
||||
|
||||
| - | User 1 | User 2 | User 3 | User 4 | User 5 |
|
||||
|:------:|:------:|:--------:|:------------------:|:------:|:------:|
|
||||
| Task 1 | :x: | :question: | :heavy_check_mark: | :x: | :heavy_check_mark: |
|
||||
| Task 2 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| Task 3 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| Task 4 | :heavy_check_mark: | :question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
|
||||
### Task 1
|
||||
|
||||
#### What went well?
|
||||
Describe what happened as expected. e.g.: Most users intuitively found the language selector for changing the installer language.
|
||||
|
||||
#### What were the challenges?
|
||||
Describe where the users had issues and why. Try to write the details to ensure a good understanding of what happened. You can also attach videos, GIFs, or screenshots to illustrate. e.g.: Two of the users had issues searching for English on the language selector because they didn't realize they could scroll down to find it.
|
||||
|
||||
### Task 2
|
||||
|
||||
#### What went well?
|
||||
Describe what happened as expected. e.g.: Most users intuitively found the language selector for changing the installer language.
|
||||
|
||||
#### What were the challenges?
|
||||
Describe where the users had issues and why. Try to write the details to ensure a good understanding of what happened. You can also attach videos, GIFs, or screenshots to illustrate. e.g.: Two of the users had issues searching for English on the language selector because they didn't realize they could scroll down to find it.
|
||||
|
||||
-->
|
32
.github/workflows/issues.yml
vendored
Normal file
32
.github/workflows/issues.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
name: issues
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened, reopened, closed]
|
||||
|
||||
jobs:
|
||||
notify:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: "notify: new"
|
||||
if: github.event.issue.state == 'open'
|
||||
uses: calamares/actions/matrix-notify@v3
|
||||
with:
|
||||
token: ${{ secrets.MATRIX_TOKEN }}
|
||||
room: ${{ secrets.MATRIX_ROOM }}
|
||||
message: "OPENED ${{ github.event.issue.html_url }} by ${{ github.actor }} ${{ github.event.issue.title }}"
|
||||
- name: "notify: closed"
|
||||
if: github.event.issue.state != 'open'
|
||||
uses: calamares/actions/matrix-notify@v3
|
||||
with:
|
||||
token: ${{ secrets.MATRIX_TOKEN }}
|
||||
room: ${{ secrets.MATRIX_ROOM }}
|
||||
message: "CLOSED ${{ github.event.issue.html_url }} by ${{ github.actor }} ${{ github.event.issue.title }}"
|
||||
- name: "remove in-progress label"
|
||||
if: github.event.issue.state != 'open'
|
||||
run: |
|
||||
curl -X DELETE \
|
||||
-H 'Accept: application/vnd.github.v3+json' \
|
||||
-H 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
|
||||
"https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/labels/hacking%3A%20in-progress"
|
||||
|
44
.github/workflows/nightly-debian.yml
vendored
Normal file
44
.github/workflows/nightly-debian.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
name: nightly-debian-10
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "12 23 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
BUILDDIR: /build
|
||||
SRCDIR: ${{ github.workspace }}
|
||||
CMAKE_ARGS: |
|
||||
-DWEBVIEW_FORCE_WEBKIT=1
|
||||
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON
|
||||
-DWITH_PYTHONQT=OFF"
|
||||
-DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker://debian:10
|
||||
options: --tmpfs /build:rw --user 0:0
|
||||
steps:
|
||||
- name: "prepare env"
|
||||
uses: calamares/actions/prepare-debian@v3
|
||||
- name: "prepare source"
|
||||
uses: actions/checkout@v2
|
||||
- name: "build"
|
||||
id: build
|
||||
uses: calamares/actions/generic-build@v3
|
||||
- name: "notify: ok"
|
||||
if: ${{ success() && github.repository == 'calamares/calamares' }}
|
||||
uses: calamares/actions/matrix-notify@v3
|
||||
with:
|
||||
token: ${{ secrets.MATRIX_TOKEN }}
|
||||
room: ${{ secrets.MATRIX_ROOM }}
|
||||
message: "OK ${{ github.workflow }} in ${{ github.repository }} ${{ steps.build.outputs.git-summary }}"
|
||||
- name: "notify: fail"
|
||||
if: ${{ failure() && github.repository == 'calamares/calamares' }}
|
||||
uses: calamares/actions/matrix-notify@v3
|
||||
with:
|
||||
token: ${{ secrets.MATRIX_TOKEN }}
|
||||
room: ${{ secrets.MATRIX_ROOM }}
|
||||
message: "FAIL ${{ github.workflow }} in ${{ github.repository }} ${{ steps.build.outputs.git-summary }}"
|
56
.github/workflows/nightly-neon.yml
vendored
Normal file
56
.github/workflows/nightly-neon.yml
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
name: nightly-neon
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "52 23 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
BUILDDIR: /build
|
||||
SRCDIR: ${{ github.workspace }}
|
||||
CMAKE_ARGS: |
|
||||
-DWEBVIEW_FORCE_WEBKIT=1
|
||||
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON
|
||||
-DWITH_PYTHONQT=OFF"
|
||||
-DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker://kdeneon/plasma:user
|
||||
options: --tmpfs /build:rw --user 0:0
|
||||
steps:
|
||||
- name: "prepare env"
|
||||
uses: calamares/actions/prepare-neon@v3
|
||||
- name: "prepare source"
|
||||
uses: actions/checkout@v2
|
||||
- name: "build"
|
||||
id: build
|
||||
uses: calamares/actions/generic-build@v3
|
||||
- name: "Calamares: archive"
|
||||
working-directory: ${{ env.BUILDDIR }}
|
||||
run: |
|
||||
make install DESTDIR=${{ env.BUILDDIR }}/stage
|
||||
tar czf calamares.tar.gz stage
|
||||
- name: "Calamares: upload"
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: calamares-tarball
|
||||
path: ${{ env.BUILDDIR }}/calamares.tar.gz
|
||||
if-no-files-found: error
|
||||
retention-days: 3
|
||||
- name: "notify: ok"
|
||||
if: ${{ success() && github.repository == 'calamares/calamares' }}
|
||||
uses: calamares/actions/matrix-notify@v3
|
||||
with:
|
||||
token: ${{ secrets.MATRIX_TOKEN }}
|
||||
room: ${{ secrets.MATRIX_ROOM }}
|
||||
message: "OK ${{ github.workflow }} in ${{ github.repository }} ${{ steps.build.outputs.git-summary }}"
|
||||
- name: "notify: fail"
|
||||
if: ${{ failure() && github.repository == 'calamares/calamares' }}
|
||||
uses: calamares/actions/matrix-notify@v3
|
||||
with:
|
||||
token: ${{ secrets.MATRIX_TOKEN }}
|
||||
room: ${{ secrets.MATRIX_ROOM }}
|
||||
message: "FAIL ${{ github.workflow }} in ${{ github.repository }} ${{ steps.build.outputs.git-summary }}"
|
45
.github/workflows/nightly-opensuse.yml
vendored
Normal file
45
.github/workflows/nightly-opensuse.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
name: nightly-opensuse
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "32 23 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
BUILDDIR: /build
|
||||
SRCDIR: ${{ github.workspace }}
|
||||
CMAKE_ARGS: |
|
||||
-DWEBVIEW_FORCE_WEBKIT=1
|
||||
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON
|
||||
-DWITH_PYTHONQT=OFF"
|
||||
-DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker://opensuse/leap
|
||||
options: --tmpfs /build:rw --user 0:0
|
||||
steps:
|
||||
- name: "prepare env"
|
||||
uses: calamares/actions/prepare-opensuse@v3
|
||||
- name: "prepare source"
|
||||
uses: actions/checkout@v2
|
||||
- name: "build"
|
||||
id: build
|
||||
uses: calamares/actions/generic-build@v3
|
||||
- name: "notify: ok"
|
||||
if: ${{ success() && github.repository == 'calamares/calamares' }}
|
||||
uses: calamares/actions/matrix-notify@v3
|
||||
with:
|
||||
token: ${{ secrets.MATRIX_TOKEN }}
|
||||
room: ${{ secrets.MATRIX_ROOM }}
|
||||
message: |
|
||||
OK ${{ github.workflow }} in ${{ github.repository }} ${{ steps.build.outputs.git-summary }}"
|
||||
- name: "notify: fail"
|
||||
if: ${{ failure() && github.repository == 'calamares/calamares' }}
|
||||
uses: calamares/actions/matrix-notify@v3
|
||||
with:
|
||||
token: ${{ secrets.MATRIX_TOKEN }}
|
||||
room: ${{ secrets.MATRIX_ROOM }}
|
||||
message: "FAIL ${{ github.workflow }} in ${{ github.repository }} ${{ steps.build.outputs.git-summary }}"
|
55
.github/workflows/push.yml
vendored
Normal file
55
.github/workflows/push.yml
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
name: ci-push
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- calamares
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
BUILDDIR: /build
|
||||
SRCDIR: ${{ github.workspace }}
|
||||
CMAKE_ARGS: |
|
||||
-DWEBVIEW_FORCE_WEBKIT=1
|
||||
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON
|
||||
-DWITH_PYTHONQT=OFF"
|
||||
-DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker://kdeneon/plasma:user
|
||||
options: --tmpfs /build:rw --user 0:0
|
||||
steps:
|
||||
- name: "prepare env"
|
||||
uses: calamares/actions/prepare-neon@v3
|
||||
- name: "prepare source"
|
||||
uses: actions/checkout@v2
|
||||
- name: "build"
|
||||
id: build
|
||||
uses: calamares/actions/generic-build@v3
|
||||
- name: "notify: ok"
|
||||
if: ${{ success() && github.repository == 'calamares/calamares' }}
|
||||
uses: calamares/actions/matrix-notify@v3
|
||||
with:
|
||||
token: ${{ secrets.MATRIX_TOKEN }}
|
||||
room: ${{ secrets.MATRIX_ROOM }}
|
||||
message: |
|
||||
OK ${{ github.workflow }} in ${{ github.repository }} by ${{ github.actor }} on ${{ github.event.ref }}
|
||||
.. ${{ steps.build.outputs.git-summary }}
|
||||
- name: "notify: fail"
|
||||
if: ${{ failure() && github.repository == 'calamares/calamares' }}
|
||||
uses: calamares/actions/matrix-notify@v3
|
||||
with:
|
||||
token: ${{ secrets.MATRIX_TOKEN }}
|
||||
room: ${{ secrets.MATRIX_ROOM }}
|
||||
message: |
|
||||
FAIL ${{ github.workflow }} in ${{ github.repository }} by ${{ github.actor }} on ${{ github.event.ref }}
|
||||
.. ${{ steps.build.outputs.git-summary }}
|
||||
.. ${{ github.event.compare }}
|
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,3 +1,6 @@
|
||||
# SPDX-FileCopyrightText: no
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
#
|
||||
# C++ objects and libs
|
||||
|
||||
*.slo
|
||||
@@ -47,6 +50,8 @@ CMakeLists.txt.user
|
||||
|
||||
# Backup files
|
||||
*~
|
||||
*.bak
|
||||
|
||||
# Kate
|
||||
*.kate-swp
|
||||
tags
|
||||
|
90
.reuse/dep5
Normal file
90
.reuse/dep5
Normal file
@@ -0,0 +1,90 @@
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: Calamares
|
||||
Source: https://github.com/calamares/calamares.git
|
||||
|
||||
### ACTUAL LICENSES
|
||||
#
|
||||
# Images in the locale module are a bit unclear; they were added
|
||||
# by Teo in 2014 but I suspect they came from somewhere else.
|
||||
#
|
||||
Files: src/modules/locale/images/timezone*.png
|
||||
License: GPL-3.0-or-later
|
||||
Copyright: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
|
||||
Files: man/calamares.8
|
||||
License: GPL-3.0-or-later
|
||||
Copyright: 2017 Jonathan Carter <jcarter@linux.com>
|
||||
|
||||
### BUILD ARTIFACTS / NOT SOURCE
|
||||
#
|
||||
# QRC Files are basically build artifacts
|
||||
#
|
||||
FILES: src/modules/*/*.qrc
|
||||
License: CC0-1.0
|
||||
Copyright: no
|
||||
|
||||
# GitHub issue templates are not part of the source
|
||||
#
|
||||
Files: .github/ISSUE_TEMPLATE/*
|
||||
License: CC0-1.0
|
||||
Copyright: no
|
||||
|
||||
# GitHub actions are not part of the source
|
||||
Files: .github/workflows/*.yml
|
||||
License: CC0-1.0
|
||||
Copyright: no
|
||||
|
||||
# Packaging information
|
||||
#
|
||||
Files: data/FreeBSD/distinfo data/FreeBSD/pkg-descr data/FreeBSD/pkg-plist
|
||||
License: CC0-1.0
|
||||
Copyright: no
|
||||
|
||||
# Example data for timezones, which is copied out of zoneinfo,
|
||||
# which has this notice:
|
||||
#
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
#
|
||||
Files: data/example-root/usr/share/zoneinfo/Zulu data/example-root/usr/share/zoneinfo/UTC data/example-root/usr/share/zoneinfo/America/New_York
|
||||
License: CC0-1.0
|
||||
Copyright: no
|
||||
|
||||
### TRANSLATIONS
|
||||
#
|
||||
# .desktop files and template change only with translation
|
||||
#
|
||||
FILES: calamares.desktop*
|
||||
License: CC0-1.0
|
||||
Copyright: no
|
||||
|
||||
# Transifex translations derive from the source, and have no
|
||||
# embedded copyright information.
|
||||
#
|
||||
Files: lang/*.ts
|
||||
License: GPL-3.0-or-later
|
||||
Copyright: 2020 Calamares authors and translators
|
||||
|
||||
# Translations of branding slideshow are the same
|
||||
Files: src/branding/default/lang/*.ts
|
||||
License: GPL-3.0-or-later
|
||||
Copyright: 2020 Calamares authors and translators
|
||||
|
||||
# Python translation files have some copyright information, but
|
||||
# it's generally very sketchy.
|
||||
#
|
||||
Files: lang/python.pot
|
||||
License: GPL-3.0-or-later
|
||||
Copyright: 2020 Calamares authors and translators
|
||||
|
||||
Files: lang/python/*/LC_MESSAGES/python.po
|
||||
License: GPL-3.0-or-later
|
||||
Copyright: 2020 Calamares authors and translators
|
||||
|
||||
Files: src/modules/dummypythonqt/lang/dummypythonqt.pot
|
||||
License: GPL-3.0-or-later
|
||||
Copyright: 2020 Calamares authors and translators
|
||||
|
||||
Files: src/modules/dummypythonqt/lang/*/LC_MESSAGES/dummypythonqt.po
|
||||
License: GPL-3.0-or-later
|
||||
Copyright: 2020 Calamares authors and translators
|
20
.travis.yml
20
.travis.yml
@@ -1,20 +0,0 @@
|
||||
language: cpp
|
||||
|
||||
python:
|
||||
- 3.5
|
||||
|
||||
sudo: required
|
||||
|
||||
services:
|
||||
- docker
|
||||
|
||||
notifications:
|
||||
irc:
|
||||
- "chat.freenode.net#calamares"
|
||||
|
||||
install:
|
||||
- docker build -t calamares .
|
||||
|
||||
script:
|
||||
- docker run -v $PWD:/src --tmpfs /build:rw,size=81920k -e SRCDIR=/src -e BUILDDIR=/build calamares "/src/ci/travis.sh"
|
||||
|
10
.tx/config
10
.tx/config
@@ -1,17 +1,15 @@
|
||||
# SPDX-FileCopyrightText: no
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[calamares.calamares-master]
|
||||
[calamares.calamares]
|
||||
file_filter = lang/calamares_<lang>.ts
|
||||
source_file = lang/calamares_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
|
||||
[calamares.dummypythonqt]
|
||||
file_filter = src/modules/dummypythonqt/lang/<lang>/LC_MESSAGES/dummypythonqt.po
|
||||
source_file = src/modules/dummypythonqt/lang/dummypythonqt.pot
|
||||
source_lang = en
|
||||
|
||||
[calamares.fdo]
|
||||
file_filter = lang/desktop_<lang>.desktop
|
||||
source_file = calamares.desktop
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <QSharedMemory>
|
||||
#include <QSharedData>
|
||||
#include <QBasicTimer>
|
||||
#include <QElapsedTimer>
|
||||
#include <QTime>
|
||||
|
||||
#include <algorithm>
|
||||
@@ -764,7 +765,7 @@ void KDSingleApplicationGuard::Private::create( const QStringList & arguments )
|
||||
}
|
||||
|
||||
const int maxWaitMSecs = 1000 * 60; // stop waiting after 60 seconds
|
||||
QTime waitTimer;
|
||||
QElapsedTimer waitTimer;
|
||||
waitTimer.start();
|
||||
|
||||
// lets wait till the other instance initialized the register
|
||||
@@ -1118,7 +1119,7 @@ void KDSingleApplicationGuard::Private::poll() {
|
||||
}
|
||||
}
|
||||
|
||||
#include "moc_kdsingleapplicationguard.cpp"
|
||||
// #include "moc_kdsingleapplicationguard.cpp"
|
||||
|
||||
#ifdef KDTOOLSCORE_UNITTESTS
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
@@ -41,7 +41,7 @@ public:
|
||||
explicit KDSingleApplicationGuard( Policy policy, QObject * parent=nullptr );
|
||||
explicit KDSingleApplicationGuard( const QStringList & arguments, QObject * parent=nullptr );
|
||||
explicit KDSingleApplicationGuard( const QStringList & arguments, Policy policy, QObject * parent=nullptr );
|
||||
~KDSingleApplicationGuard();
|
||||
~KDSingleApplicationGuard() override;
|
||||
|
||||
bool isOperational() const;
|
||||
|
||||
@@ -70,7 +70,7 @@ public Q_SLOTS:
|
||||
void killOtherInstances();
|
||||
|
||||
protected:
|
||||
/*! \reimp */ bool event( QEvent * event );
|
||||
/*! \reimp */ bool event( QEvent * event ) override;
|
||||
|
||||
private:
|
||||
#ifndef Q_WS_WIN
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
* SPDX-License-Identifier: LGPL-2.0-only
|
||||
* License-Filename: LICENSES/LGPLv2-KDAB
|
||||
*
|
||||
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
||||
*/
|
||||
|
4
3rdparty/waitingspinnerwidget.cpp
vendored
4
3rdparty/waitingspinnerwidget.cpp
vendored
@@ -1,6 +1,8 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2012-2014 Alexander Turkin
|
||||
* SPDX-FileCopyrightText: 2014 William Hallatt
|
||||
* SPDX-FileCopyrightText: 2015 Jacob Dawid
|
||||
* SPDX-License-Identifier: MIT
|
||||
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
||||
*/
|
||||
|
||||
/* Original Work Copyright (c) 2012-2014 Alexander Turkin
|
||||
|
7
3rdparty/waitingspinnerwidget.h
vendored
7
3rdparty/waitingspinnerwidget.h
vendored
@@ -1,11 +1,14 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2012-2014 Alexander Turkin
|
||||
* SPDX-FileCopyrightText: 2014 William Hallatt
|
||||
* SPDX-FileCopyrightText: 2015 Jacob Dawid
|
||||
* SPDX-License-Identifier: MIT
|
||||
* License-Filename: LICENSES/MIT-QtWaitingSpinner
|
||||
*/
|
||||
|
||||
/* Original Work Copyright (c) 2012-2014 Alexander Turkin
|
||||
Modified 2014 by William Hallatt
|
||||
Modified 2015 by Jacob Dawid
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
@@ -82,7 +85,7 @@ private slots:
|
||||
void rotate();
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *paintEvent);
|
||||
void paintEvent(QPaintEvent *paintEvent) override;
|
||||
|
||||
private:
|
||||
static int lineCountDistanceFromPrimary(int current, int primary,
|
||||
|
8
AUTHORS
8
AUTHORS
@@ -1,3 +1,7 @@
|
||||
<!-- SPDX-FileCopyrightText: no
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
-->
|
||||
|
||||
# MAINTAINER
|
||||
|
||||
Calamares development is sponsored by Blue Systems GmbH - Liberating Software.
|
||||
@@ -20,8 +24,7 @@ and moral support from (alphabetically by first name or nickname):
|
||||
- artoo@cromnix.org
|
||||
- Bernhard Landauer
|
||||
- Bezzy1999
|
||||
- Bill Auguer
|
||||
- bill-auger
|
||||
- Bill Auger
|
||||
- Caio Jordão Carvalho
|
||||
- Collabora LTD
|
||||
- crispg72
|
||||
@@ -35,6 +38,7 @@ and moral support from (alphabetically by first name or nickname):
|
||||
- Kevin Kofler
|
||||
- Kyle Robertze
|
||||
- Lisa Vitolo
|
||||
- Neal Gompa
|
||||
- n3rdopolis
|
||||
- Philip Müller
|
||||
- Ramon Buldó
|
||||
|
907
CHANGES
907
CHANGES
@@ -1,8 +1,915 @@
|
||||
<!-- SPDX-FileCopyrightText: no
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
-->
|
||||
|
||||
This is the changelog for Calamares. For each release, the major changes and
|
||||
contributors are listed. Note that Calamares does not have a historical
|
||||
changelog -- this log starts with version 3.2.0. The release notes on the
|
||||
website will have to do for older versions.
|
||||
|
||||
# 3.2.43 (2021-09-17) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Joe Kamprad
|
||||
|
||||
## Core ##
|
||||
- Translations have been made more consistent. In particular, some *OK*,
|
||||
*Yes*, *No* and *Cancel* buttons that were previously untranslated
|
||||
or "stuck" in the language that Calamares started in, are now
|
||||
changed to the current language as selected in the welcome page.
|
||||
- Documentation improvements from Joe Kamprad. A *sizeLimit* of zero
|
||||
(which is the default if nothing is set in the branding configuration)
|
||||
disables log uploads.
|
||||
|
||||
## Modules ##
|
||||
- The *keyboardq* module (QML-based UI for keyboard-layout-selection)
|
||||
now features an interactive keyboard preview and has the
|
||||
layout adjusted. (Thanks Anke)
|
||||
|
||||
|
||||
# 3.2.42 (2021-09-06) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Artem Grinev
|
||||
- Nico 'dr460nf1r3' (new contributor, welcome!)
|
||||
- Waneon Kim (new contributor, welcome!)
|
||||
|
||||
## Core ##
|
||||
- No core changes yet
|
||||
|
||||
## Modules ##
|
||||
- BTRFS partitions are no longer listed as "check in phase 2" in
|
||||
the *fstab* module. (Thanks Nico)
|
||||
- The *keyboard* module (and *keyboardq*) now pick an English layout
|
||||
(with Rupee) for keyboards when the language is English and locale is India,
|
||||
rather than Hindi layout.
|
||||
- The *localeq* module had the i18n.qml rewritten to make it easier
|
||||
to customize. A bug in the layout has been fixed, and the overall
|
||||
look has been updated.
|
||||
- *networkcfg* now translates the "live user" on an ISO to the regular
|
||||
user on the installed system, so that network configuration changes
|
||||
made in the live system are automatically used after installation. #1755
|
||||
- *partition* no longer allows you to delete an extended partition with
|
||||
children (which led to crashes). #1749 (Thanks Artem)
|
||||
- *partition* complains in more detail about the state of the UEFI
|
||||
boot partition (under manual partitioning schemes). #1761
|
||||
- *welcome* can now check multiple URLs to determine if internet connectivity
|
||||
is available. It is still recommended to check the distro home-page or
|
||||
some special "ping" page of the distro, although that has some privacy
|
||||
implications; using example.com or google.com may work as well. Listing
|
||||
multiple URLs will ping each of them in turn until one succeeds. #1669
|
||||
- The work to make a QML version available for all view modules is almost
|
||||
completed. Two new QML modules have been added *packagechooserq* and *summaryq*.
|
||||
Summaryq brings the option to present the summary page in a customizable
|
||||
way, with a bit more of a contemporary look. Packagechooserq adds the option
|
||||
to preselect an item and displays all options in one overview.
|
||||
(Thanks Anke)
|
||||
|
||||
|
||||
# 3.2.41.1 (2021-08-05) #
|
||||
|
||||
This is a hotfix release for a crash in the *partition* module, reported on
|
||||
KDE neon. #1746
|
||||
|
||||
|
||||
# 3.2.41 (2021-07-31) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Camilo Higuita
|
||||
|
||||
## Core ##
|
||||
- The (re)translation framework has been internally re-vamped to be
|
||||
less resource-intensive and to work with all QObjects, not just
|
||||
widgets. Consumers of the translations framework are expected to
|
||||
set up the event filter on the top-level widget(s) manually. Since
|
||||
Calamares and the Calamares-test-applications have been adjusted already,
|
||||
no further action is needed.
|
||||
|
||||
## Modules ##
|
||||
- When the *keyboard* module is activated, it no longer replaces
|
||||
an explicit user choice (e.g. for a Belgian layout) by a guessed-for-
|
||||
this-language layout (e.g. Danish if you're installing in Danish).
|
||||
- Logic for handling installation lists has been moved around in the
|
||||
*packages* module so that package managers can, in principle,
|
||||
adjust how to handle critical and non-critical package lists.
|
||||
- In the *partition* module, translation code has been simplified.
|
||||
- The *usersq* module has had a fair bit of QML rewritten to make it easier
|
||||
to customize the colors used by the module in a consistent way.
|
||||
(Thanks Anke)
|
||||
- *Welcome* now uses a translated message from the Config object,
|
||||
increasing the sharing between widgets- and QML-modules.
|
||||
|
||||
|
||||
# 3.2.40 (2021-07-14) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Anubhav Choudhary (SoK success!)
|
||||
- Emmanuel Arias (new contributor! welcome!)
|
||||
- Erik Dubois
|
||||
- Jerrod Frost (new contributor! welcome!)
|
||||
- Jia Chao (new contributor! welcome!)
|
||||
- Joe Kamprad
|
||||
- Lisa Vitolo (blast from the past!)
|
||||
- Omer I.S. (new contributor! welcome!)
|
||||
|
||||
In project news, chat (instant-messaging) communications has largely
|
||||
moved to Matrix and Libera.Chat. CI notifications -- issues and build
|
||||
results -- are sent to Matrix only.
|
||||
|
||||
## Core ##
|
||||
- The CMake modules for consumption by external modules (e.g. the
|
||||
calamares-extensions repository, but also any other modules built
|
||||
by distro's for internal use) now support consistent skip-module
|
||||
behavior and reporting. #1641 (one tiny part of this change)
|
||||
- In global storage, the *filesystem_use* key now has an API in
|
||||
libcalamares to systematically mark filesystem (types) as "in use"
|
||||
or not. This, in turn, means that modules can depend on that information
|
||||
for other work (e.g. removing drivers for unused filesystems). #1635
|
||||
- The "upload log file" now has a configurable log-file-size. (Thanks Anubhav)
|
||||
|
||||
## Modules ##
|
||||
- *bootloader* can now install an aarch64 (ARM) compatible EFI GRUB. (Thanks Jia)
|
||||
- *displaymanager* example configuration has been shuffled around a bit,
|
||||
for better results when the live image is running XFCE. Also lists
|
||||
more potential display managers. #1205 (Thanks Erik)
|
||||
- *keyboard* now switches on an alternate `en_US` keyboard layout when
|
||||
Arabic or Hebrew is selected as primary layout. (Thanks Omer)
|
||||
- *localeq* now has a fully functional offline option (alongside the default
|
||||
interactive map option, which requires internet).
|
||||
- The *netinstall* module can now fall back to alternative URLs when
|
||||
loading groups data. The first URL to yield a non-empty groups
|
||||
collection is accepted. No changes are needed in the configuration. #1673
|
||||
- *packagechooser* can now integrate with the *packages* module; that
|
||||
means you can specify package names to install for a given selection,
|
||||
and the regular package-installation mechanism will take care of it.
|
||||
Legacy configurations that use *contextualprocess* are still supported.
|
||||
See the `packagechooser.conf` file for details. #1550
|
||||
- A long-neglected pull request from Lisa Vitolo for the *partition*
|
||||
module -- allowing to set filesystem labels during manual partitioning --
|
||||
has been revived and merged.
|
||||
- The *partition* manager has had a long-standing bug with partition-flags
|
||||
and manual partitioning resolved. This may help resolve some installation
|
||||
issues on UEFI systems. #1724
|
||||
- *usersq* is further implemented and can now be used for a successful install.
|
||||
Not all warning messages available in the regular users module are implemented.
|
||||
|
||||
|
||||
# 3.2.39.3 (2021-04-14) #
|
||||
|
||||
A minor bugfix tweak release. Since this contains yet **another**
|
||||
autologin-related fix, and there is nothing large enough to justify
|
||||
a 3.2.40 release yet, add it to the growing tail of 3.2.39. (Reported
|
||||
by Joe Kamprad, #1672). Also fixes a regression from 3.2.28 in
|
||||
localized packages (e.g. *package-LOCALE* did not work).
|
||||
|
||||
|
||||
# 3.2.39.2 (2021-04-02) #
|
||||
|
||||
This is **another** hotfix release for issues around autologin ..
|
||||
autoLogin, really, since the whole problem is that internal capitalization
|
||||
changed. An unrelated bug in writing /etc/default/keyboard was
|
||||
also fixed. (Reported by pcrepix, #1668)
|
||||
|
||||
|
||||
# 3.2.39.1 (2021-03-30) #
|
||||
|
||||
This hotfix release corrects a regression in the *displaymanager*
|
||||
module caused by changes in the *users* module; autologin was
|
||||
internally renamed and no longer recognized by the *displaymanager*
|
||||
module. (Reported by Erik Dubois, #1665)
|
||||
|
||||
|
||||
# 3.2.39 (2021-03-19) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Matti Hyttinen
|
||||
|
||||
## Core ##
|
||||
- A *packages* service has been added to the core, for use by
|
||||
*netinstall* module and any others that need to set up
|
||||
package information for the *packages* module.
|
||||
|
||||
## Modules ##
|
||||
- The *mount* module has gained a configurable setup for btrfs volumes.
|
||||
If your distro has a default-to-btrfs setup, it can skip the hard-
|
||||
coded setup (which Calamares has had for a long time with @home
|
||||
and similar) and introduce a custom btrfs configuration through the
|
||||
`mount.conf` file. See issues #1659 and #1661 for warnings about
|
||||
using this in production.
|
||||
- *netinstall* now supports fallbacks for the groups data.
|
||||
Instead of a single URL, multiple URLs may be specified in
|
||||
a list and Calamares goes through them until one is successfully
|
||||
retrieved. Older configurations with a single string are
|
||||
treated like a one-item list. #1579
|
||||
- The *usersq* module now connects to the internal configuration
|
||||
object and may be usable for regular installations.
|
||||
|
||||
|
||||
# 3.2.38.1 (2021-03-15) #
|
||||
|
||||
This hotfix release is for this item in the release notes of 3.2.38:
|
||||
- The .desktop file for Calamares now makes a longer trip, calling
|
||||
`sh -c "pkexec calamares"`; distributions may still need to adjust.
|
||||
The change had been lost while updating other files. It has been restored
|
||||
in `calamares.desktop` and `calamares.desktop.in`. (Reported by Erik)
|
||||
Other minor changes and fixes:
|
||||
- presets in the *users* module show the hostname, too,
|
||||
- translations update for Korean, Ukranian and Chinese (zh_TW).
|
||||
|
||||
|
||||
# 3.2.38 (2021-03-14) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Anubhav Choudhary
|
||||
- Neal Gompa
|
||||
|
||||
## Core ##
|
||||
- Uploading your log files (in case of installation failure) has been
|
||||
expanded and is now more configurable. Users should still take care
|
||||
when uploading logs, and distro's should configure a URL with
|
||||
no public viewing of those logs. (Thanks Anubhav)
|
||||
- The .desktop file for Calamares now makes a longer trip, calling
|
||||
`sh -c "pkexec calamares"`; distributions may still need to adjust.
|
||||
|
||||
## Modules ##
|
||||
- A new QML-based *finishedq* module has been added. (Thanks Anke)
|
||||
- The *packages* module no longer supports *urpmi*; no Calamares-
|
||||
consumers with that package manager seem to exist. (Thanks Neal)
|
||||
- The *users* module now can set a fixed username and prevent editing.
|
||||
The *presets* configuration entry in `users.conf` can set a *loginName*
|
||||
and a *fullName* and (independently) enable or disable editing of
|
||||
that value. You can, for instance, set *loginName* to "manjaro" if
|
||||
you like; the user can change it afterwards. You could set the
|
||||
*loginName* to "oem" and prevent editing it as well. #942
|
||||
|
||||
|
||||
# 3.2.37 (2021-02-23) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- benne-dee
|
||||
|
||||
## Core ##
|
||||
- Calamares has a table of 'best guess' languages for each country
|
||||
and when GeoIP is enabled, it will automatically select that
|
||||
country's language as default -- the user can of course pick
|
||||
a different one. The 'best guess' is based on Unicode / ISO
|
||||
data, which is sometimes dubious. Based on some personal notes,
|
||||
the 'best guess' language for Belarus has been changed to Russian.
|
||||
- Calamares has a table of 'best guess' keyboard mappings,
|
||||
allowing native language input. However, usernames and
|
||||
passwords should be in US-ASCII (this is a limitation of
|
||||
the login system -- **some** parts of the system will support
|
||||
non-ASCII input, but it's better safe than sorry).
|
||||
Add Greek to the list of languages that needs US-ASCII
|
||||
in addition to native input.
|
||||
- The CI infrastructure now builds Calamares and Calamares-extensions
|
||||
on a nightly basis.
|
||||
|
||||
## Modules ##
|
||||
- The *netinstall* module has a YAML schema, allowing packagers
|
||||
to validate and verify their netinstall configurations before
|
||||
shipping an ISO (or writing bug reports). Thanks benne-dee.
|
||||
- The *finished* module has been heavily refactored, opening
|
||||
the way to a QML-based version of the same module. This is
|
||||
also preparatory work for allowing packagers (e.g. PostmarketOS)
|
||||
to customize the messages on the finished page.
|
||||
|
||||
|
||||
# 3.2.36 (2021-02-03) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anubhav Choudhary
|
||||
- benne-dee
|
||||
- Gaël PORTAY
|
||||
- Jonas Strassel
|
||||
- Kevin Kofler
|
||||
- Matti Hyttinen
|
||||
- Neal Gompa
|
||||
|
||||
## Core ##
|
||||
- It is now possible to hide the *next* and *back* buttons during
|
||||
the "exec" phase of installation. Thanks Anubhav.
|
||||
- The Calamares CI has migrated to GitHub actions. Thanks Jonas.
|
||||
|
||||
## Modules ##
|
||||
- *bootloader* now uses the current file names for the UEFI Secure Boot
|
||||
shim instead of obsolete ones.
|
||||
- The *mount* module creates swap in its own subvolume, if btrfs is used.
|
||||
Thanks Matti.
|
||||
- *partition* includes more information about what it will do, including
|
||||
GPT partition types (in human-readable format, if possible). Thanks Gaël.
|
||||
- Some edge-cases with overlay filesystems have been resolved in the
|
||||
*partition* module. Thanks Gaël.
|
||||
- During the creation of filesystems and partitions, automounting is
|
||||
turned off (if DBus is available, and the host system supports
|
||||
KDE Solid automount control). This should reduce the number of
|
||||
failed installations if automount grabs partitions while they are
|
||||
being created. The code is prepared to handle other ways to control
|
||||
automount-behavior as well.
|
||||
|
||||
|
||||
# 3.2.35.1 (2020-12-07) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anubhav Choudhary
|
||||
- Matti Hyttinen
|
||||
|
||||
Some strange string artifacts appeared, leading to `{1?}` being
|
||||
displayed in various user-facing messages. These have been removed
|
||||
and the translations updated.
|
||||
|
||||
## Modules ##
|
||||
- The *initcpiocfg* module would sometimes configure the system to ask
|
||||
for a passphrase, when none is needed.
|
||||
|
||||
|
||||
# 3.2.35 (2020-11-30) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Clarissa Borges
|
||||
- Matti Hyttinen
|
||||
|
||||
A new kind of issue template has been added for Calamares,
|
||||
for reporting (and adding tests for) usability issues. Thanks
|
||||
to Clarissa for leading that effort.
|
||||
|
||||
## Core ##
|
||||
- No core changes yet
|
||||
|
||||
## Modules ##
|
||||
- The *partition* module now supports a not-full-disk-encryption setup,
|
||||
where `/boot` is not encrypted, but the rest of the system is.
|
||||
- The *plasmalnf* module has been substantially rewritten, so that it
|
||||
can support a QML version of the module in future. The UI has changed
|
||||
a little, and now displays more themes than before.
|
||||
|
||||
|
||||
# 3.2.34 (2020-11-16) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Artem Grinev
|
||||
- Gaël PORTAY
|
||||
|
||||
## Core ##
|
||||
- No core changes yet
|
||||
|
||||
## Modules ##
|
||||
- The *keyboard* module had a regression in which it no-longer painted
|
||||
the keycaps in the keyboard preview. (reported by Vinnie)
|
||||
- The *plasmalnf* module did not set all of the look-and-feel values
|
||||
in the target system. (reported by Bluestar Linux)
|
||||
- In the *users* module, warnings about the strength of the password
|
||||
are now correctly pluralized when possible.
|
||||
- In the *users* module, if ICU is installed, the user's full name is
|
||||
automatically transliterated to US-ASCII (for some locales; this will
|
||||
need tweaking) so that the login name is acceptable. (Thanks Artem)
|
||||
|
||||
|
||||
# 3.2.33 (2020-11-09) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Andrius Štikonas
|
||||
- Artem Grinev
|
||||
- Gaël PORTAY
|
||||
- Matti Hyttinen
|
||||
- TTran Me
|
||||
|
||||
## Core ##
|
||||
- Calamares now sets the C++ standard for compilation to C++17; this
|
||||
is for better compatibility and fewer warnings when building with
|
||||
modern KDE Frameworks and KPMcore 4.2.0.
|
||||
- Vietnamese translations have been added. Welcome! (Thanks TTran)
|
||||
|
||||
## Modules ##
|
||||
- The *initcpiocfg* module should support plymouth with encryption
|
||||
now. (Thanks Matti)
|
||||
- The *keyboard* and *keyboardq* modules now share backend code
|
||||
and handle non-ASCII layouts better (for setting passwords
|
||||
and usernames). (Thanks Artem)
|
||||
- Various cleanups and documentation improvements in the *partition*
|
||||
module, and configurable GPT name for swap. (Thanks Gaël)
|
||||
- A long-standing bug related to GPT partition flags in the
|
||||
*partition* module has been resolved. #1327 #1267
|
||||
- The *users* module now has a more detailed way to specify
|
||||
user groups -- which may be system groups rather than user-GIDs.
|
||||
A new option in each group can require that the group already
|
||||
exists in the target system, allowing for better consistency checks
|
||||
with the squashfs. #1523
|
||||
|
||||
|
||||
# 3.2.32.1 (2020-10-17) #
|
||||
|
||||
This is a release to address source-incompatible changes in KPMcore 4.2.0,
|
||||
which was released just before Calamares 3.2.32 and had not yet been
|
||||
compile-tested. There is also one changed message in the translations,
|
||||
reported by Yuri Chornoivan.
|
||||
|
||||
|
||||
# 3.2.32 (2020-10-16) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Fabian Tomat
|
||||
- Gaël PORTAY
|
||||
|
||||
## Core ##
|
||||
- When doing GeoIP lookups, Calamares pretends to be Firefox.
|
||||
This resolves an issue where the GeoIP provider was refusing
|
||||
QNAM connections with the default User-Agent.
|
||||
- New translation available, Friulian. Welcome!
|
||||
|
||||
## Modules ##
|
||||
- The *netinstall* module has some tricky configuration files;
|
||||
it now complains about more cases of bad syntax or poor structure.
|
||||
- The *partition* module can now be constrained to work only with
|
||||
a particular kind of partition table. (thanks Gaël)
|
||||
- The *partition* module is a little more resilient to variations
|
||||
in btrfs notation from os-prober.
|
||||
- The *shellprocess* module now supports having a different progress
|
||||
message (other than "Shell Processes Job") through the config file.
|
||||
|
||||
|
||||
# 3.2.31 (2020-10-06) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Corentin Noël
|
||||
- kadler15 (new contributor! hi!)
|
||||
|
||||
## Core ##
|
||||
- At the start of the *exec* phase, an overview is given of the
|
||||
various job weights, which allows you to tweak the overall
|
||||
progress reporting during the installation.
|
||||
- Problems with running Calamares on a 1-core single CPU have been resolved.
|
||||
|
||||
## Modules ##
|
||||
- The *keyboard* module now recognizes Turkish "F" layout and
|
||||
will set the vconsole keyboard layout correctly even if xkb
|
||||
keymaps are not found.
|
||||
- The *machineid* module, which generates UUIDs for systemd and dbus
|
||||
and can generate entropy files (filled from `/dev/urandom` in the host
|
||||
system) now supports more than one entropy file; generate them as needed
|
||||
(or copy a fixed value to all, depending on *entropy-copy*). Deprecate
|
||||
*entropy* (which generates a specific output file) as too inflexible.
|
||||
- In the *partition* module, swap can now be chosen as *file*, which is
|
||||
**not** create a swap partition, but write a `/swapfile` in the root
|
||||
directory, 512MiB large, and set that as swap. There is as yet no
|
||||
"smarts" about the size of the swap file.
|
||||
- Multiple problems in the *partition* module around partition
|
||||
sizing have been resolved by Corentin Noël.
|
||||
- The *preservefiles* module documentation did not match the functionality,
|
||||
and when used, didn't work right. #1521 (thanks kadler15)
|
||||
- Progress reporting from the *unpackfs* module has been revamped:
|
||||
it reports more often now, so that it is more obvious that files
|
||||
are being transferred even when the percentage progress does not
|
||||
change.
|
||||
- The *unpackfs* module now supports a *weight* setting for each
|
||||
of the unpack entries. For a single entry this does not matter,
|
||||
but if there are multiple entries it allows tweaking the relative
|
||||
progress between each entry.
|
||||
|
||||
|
||||
# 3.2.30 (2020-09-03) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Asif Mahmud Shimon
|
||||
- Manzoor Ahmed Munawar
|
||||
- Sai Kamal
|
||||
- Victor Ibragimov
|
||||
|
||||
This release has two giant source-code changes that have no effect
|
||||
on functionality, but do touch each and every source file:
|
||||
- SPDX headers for licensing information, following the standard
|
||||
set by REUSE.software ; all source files and resources have
|
||||
SPDX-License-Identifier information and copyright notices. All
|
||||
of the boilerplate texts have been removed.
|
||||
- Calamares coding style has been mechanically applied to the entire
|
||||
codebase. This was already done to most of it, but there were
|
||||
some hold-outs.
|
||||
|
||||
## Core ##
|
||||
- Network access status is deprecated in Qt 5.15's QNetworkAccessManager,
|
||||
and was not useful already in some previous versions. Replace its
|
||||
use in the Calamares network service by testing-it-ourself directly
|
||||
via a synchronous ping. (Thanks to Asif)
|
||||
- New Telugu translation. (Thanks to Sai)
|
||||
- Urdu translation started. (Thanks to Manzoor)
|
||||
- Timezones translated in Tajik and Russian. (Thanks to Victor)
|
||||
|
||||
## Modules ##
|
||||
- *keyboardq* and *localeq* improvements. (Thanks to Anke)
|
||||
- *users* module did not set up autologin properly. This is yet another
|
||||
regression left over from 3.2.28. (Reported by Phil and pcrepix, #1498)
|
||||
- *welcome* module now sets the *LANG* key in the locale configuration
|
||||
(which is shared with the *locale* module and consumed by the
|
||||
*localecfg* module). This makes it feasible to drop the *locale*
|
||||
module and still set the installed system's language to the language
|
||||
selected in Calamares. (Reported by FerenOS)
|
||||
|
||||
|
||||
# 3.2.29 (2020-08-20) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Asif Mahmud Shimon (new contributor! hi!)
|
||||
|
||||
## Core ##
|
||||
- Edge case in extracting string-lists from YAML, reported and fixed
|
||||
by Asif (#1491).
|
||||
- Progress reporting is now more flexible. Modules can have a weight
|
||||
assigned to them in the descriptor; module instances can have a weight
|
||||
assigned which overrides the module descriptor. When jobs are run
|
||||
for a module instance, the jobs report progress pro-rated by the
|
||||
module's weight. Or in other words, it is now possible to tweak
|
||||
the amount of the overall progress bar that different modules fill.
|
||||
The default settings give unpackfs a weight of 12. (#1176)
|
||||
|
||||
## Modules ##
|
||||
- The *users* module did not read the *defaultGroups* correctly.
|
||||
Fixed by the string-lists change mentioned above.
|
||||
|
||||
|
||||
# 3.2.28.3 (2020-08-18) #
|
||||
|
||||
Another hotfix, for more issues reported by Marco Obaid. Users
|
||||
were not having a password set (#1489)
|
||||
|
||||
|
||||
# 3.2.28.2 (2020-08-12) #
|
||||
|
||||
A second hotfix, for autologin support -- the autologin group was not
|
||||
created in the target system before assigning the user to it. Reported
|
||||
by Marco Obaid.
|
||||
|
||||
|
||||
# 3.2.28.1 (2020-08-10) #
|
||||
|
||||
This is a hotfix release for #1482 and #1483, where no user was
|
||||
created during installation and a chmod was failing (resulting in
|
||||
a failed installation). Reported by Jonathan Riddell.
|
||||
|
||||
With incidental improvements in SPDX tagging (code licensing)
|
||||
and some new icon options for the welcomeq and localeq modules.
|
||||
|
||||
|
||||
# 3.2.28 (2020-08-09) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- apt-ghetto
|
||||
- Victor Ibragimov
|
||||
|
||||
## Core ##
|
||||
- A new object *Network* is available to QML modules in `io.calamares.core`.
|
||||
It exposes network status through the *hasInternet* property.
|
||||
- Welcome to Tajik translations. The Tajik language has quickly reached
|
||||
100% completion. Thanks Victor!
|
||||
- Welcome to [Interlingue](https://en.wikipedia.org/wiki/Interlingue).
|
||||
The translation is at an early stage. Qt does not support language
|
||||
code *ie* though, so it may take some time to be integrated (much
|
||||
like Esperanto wasn't supported until Qt 5.12).
|
||||
|
||||
## Modules ##
|
||||
- The *locale* module has been completely redone on the inside.
|
||||
Users should see no changes. #1391
|
||||
- The *localeq* module uses the redone internals of the locale module.
|
||||
It can now be used to set timezone, language and locale information
|
||||
and is a suitable alternative module. Thanks to Anke Boersma who did
|
||||
the work of figuring out maps. Note that the map uses several GeoIP
|
||||
and GeoData providers and you may need to configure the URLs
|
||||
with suitable usernames for those services. #1426
|
||||
- Both *locale* and *localeq* can now be configured to use the system's
|
||||
timezone setting -- this can be useful to avoid both hard-coding an
|
||||
initial zone and doing extra GeoIP lookups, in the case where the
|
||||
live system already does so. #1391
|
||||
- The *locale* and *localeq* modules have additional machinery for
|
||||
timezone lookups; please report cases where clicking on the map
|
||||
returns an obviously bogus timezone (up until this release, for
|
||||
instance, Cape Town).
|
||||
- The *users* module no longer accepts `root` as a username. #1462
|
||||
- The *keyboardq* module is now more inline with the look of the rest
|
||||
of the Calamares modules, use of a background image is removed.
|
||||
- The *grubcfg* module now understands `/etc/default/grub.d`. #1457
|
||||
|
||||
|
||||
# 3.2.27 (2020-07-11) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Gaël PORTAY
|
||||
- Vitor Lopes (new! welcome!)
|
||||
|
||||
## Core ##
|
||||
- QML modules with no surrounding navigation -- this is basically a
|
||||
special case for full-screen Calamares -- now have margins suitable
|
||||
for full-screen use.
|
||||
- PythonQt modules are increasingly on the way out.
|
||||
|
||||
## Modules ##
|
||||
- The Manjaro package manager *pamac* has been added to those supported by
|
||||
the *packages* module.
|
||||
- The *netinstall* module has had some minor UI tweaks.
|
||||
- Partitioning now tries harder to avoid floppy drives.
|
||||
|
||||
|
||||
# 3.2.26.1 (2020-06-23) #
|
||||
|
||||
This is a hotfix release for undefined behavior caused by an
|
||||
uninitialized integer variable. It includes new translations
|
||||
and features as well since those arrived independently.
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Gaël PORTAY
|
||||
|
||||
## Core ##
|
||||
- Welcome to Azerbaijani translations. These are available
|
||||
in two variations, *Azerbaijani* and *Azerbaijani (Azerbaijan)*.
|
||||
[Wikipedia Azerbaijani](https://en.wikipedia.org/wiki/Azerbaijani_language#North_vs._South_Azerbaijani)
|
||||
has a nice overview.
|
||||
- Warnings while building with Qt 5.15 have been much reduced.
|
||||
|
||||
## Modules ##
|
||||
- *partitioning* has one case of undefined behavior (UB) due
|
||||
to a missing integer-initialization. (Thanks Gaël)
|
||||
- *keyboardq* QML module now works correctly. (Thanks Anke)
|
||||
|
||||
|
||||
# 3.2.26 (2020-06-18) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Gaël PORTAY
|
||||
- Pablo Ovelleiro Corral
|
||||
- Philip Müller
|
||||
|
||||
## Core ##
|
||||
- The default branch for Calamares source repositories (calamares
|
||||
and calamares-extensions) is now *calamares*.
|
||||
- External modules can now be built again, outside of the Calamares
|
||||
source and build-tree.
|
||||
- The repository *calamares-tools* has been removed. The idea behind
|
||||
the tooling was to provide schema validation for Calamares configuration
|
||||
files. This has been merged into the primary repository, where it
|
||||
is now part of the test suite.
|
||||
|
||||
## Modules ##
|
||||
- *locale* put some more places into the correct timezone **visually**;
|
||||
for instance Norfolk Island gave up UTC+11.5 in 2015 and is now
|
||||
UTC+11, but Calamares still showed it in a zone separate from UTC+11.
|
||||
- *localeq* can now properly switch between on & offline mode,
|
||||
it detects internet status through js.
|
||||
- *packages* gained support for the Void Linux package manager,
|
||||
*xbps*. (thanks Pablo)
|
||||
- *tracking* now supports kuserfeedback configuration.
|
||||
- *welcomeq* added the GEOIP configuration option, so locale can be
|
||||
initially set according to IP address.
|
||||
|
||||
|
||||
# 3.2.25 (2020-06-06) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Callum Farmer
|
||||
- FLVAL
|
||||
- Gaël PORTAY
|
||||
|
||||
## Core ##
|
||||
- The slideshow in `branding.desc` can be configured with QML (recommended,
|
||||
as it has been for the past umpteen releases) or with a list of
|
||||
images (new).
|
||||
- It is possible to turn off all the new QML code -- navigation, slideshow,
|
||||
QML-based modules -- with a single `-DWITH_QML=OFF` at CMake time.
|
||||
This removes QML from Calamares' dependency footprint (but only saves
|
||||
200kB in Calamares itself).
|
||||
- Tests have been extended and now support a tests/CMakeTests.txt file
|
||||
for fine-tuning tests for Python modules.
|
||||
- SPDX identifiers are used much more widely and consistently in Calamares.
|
||||
(thanks Callum)
|
||||
|
||||
## Modules ##
|
||||
- The QML based *welcomeq* module is now a viable alternative to the
|
||||
*welcome*(widgets based) module. Using QML files means it no longer
|
||||
is needed to have pop-up windows for additional information or warnings,
|
||||
all loads in the Calamares window itself. Additional features include the
|
||||
option to customize the *About* info and load files like Release Notes
|
||||
direct into Calamares, QML files added to the branding directory can be used.
|
||||
- The *welcome* and *locale* modules that do GeoIP lookup can now also
|
||||
use "fixed" style; this just negates the GeoIP lookup and substitutes a
|
||||
constant (fixed) value; useful for testing specific locales.
|
||||
- The *keyboard* module no longer uses *ca_eng* keyboards in Canada by
|
||||
default, but sticks to the *us* keyboard. #1419
|
||||
|
||||
|
||||
# 3.2.24 (2020-05-11) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Bill Auger
|
||||
- Gaël PORTAY
|
||||
- Luna Jernberg
|
||||
- Philip Müller
|
||||
|
||||
## Core ##
|
||||
- There is now a bash-completions script for Calamares; turn on
|
||||
the (CMake-time) option INSTALL_COMPLETION to get it. (Thanks Gaël)
|
||||
- The *productWallpaper* setting is documented and works. (Thanks Bill)
|
||||
- GlobalStorage is available to QML modules as `Global`.
|
||||
- The height of the navigation bar in QML can be set within the
|
||||
QML code for the navigation; if not set, try something sensible.
|
||||
- A regression in the requirements-checker which could block the
|
||||
installer from proceeding without telling the user **why** it
|
||||
was blocked, has been resolved.
|
||||
|
||||
## Modules ##
|
||||
- The *bootloader* module can force a UEFI-based machine to boot into
|
||||
the newly-installed system. #1394 (Thanks Gaël)
|
||||
- *partition* Pop-ups about boot flags use the right flag names. #1192
|
||||
|
||||
|
||||
# 3.2.23 (2020-04-17) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- FLVAL
|
||||
|
||||
## Core ##
|
||||
- Some strange annotations were added to the *About* dialog text in
|
||||
all the translations, like `{1?}`. These have been removed again.
|
||||
|
||||
## Modules ##
|
||||
- *locale* module had some errors in timezone data, where clicking
|
||||
on a city would select a different timezone. Some of these are
|
||||
now fixed (thanks FLVAL). #1374
|
||||
- *netinstall* supports a wider variety of package naming schemes,
|
||||
and is more flexible in loading a `netinstall.yaml` that is copied from
|
||||
the example configuration file, *groups* key and all. #1369
|
||||
- *users* module logs a full error message from libpwquality if something
|
||||
is wrong internally.
|
||||
|
||||
|
||||
# 3.2.22 (2020-04-08) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Camilo Higuita
|
||||
|
||||
## Core ##
|
||||
- Both the sidebar (on the left) and the navigation buttons (along the
|
||||
bottom of the window) can now be configured to use the traditional
|
||||
*widgets*, to use *qml*, or *hidden* from view (hiding the navigation
|
||||
is not recommended unless you have a pure-QML UI to run inside
|
||||
Calamares). The example QML that is compiled into Calamares has
|
||||
been improved. To use your own QML, put files `calamares-sidebar.qml`
|
||||
or `calamares-navigation.qml` into the branding directory.
|
||||
- The sidebar and navigation can now be placed on any side of the
|
||||
main window. This is probably only useful for QML-based UIs.
|
||||
See `branding.desc` for details.
|
||||
|
||||
## Modules ##
|
||||
- The *welcomeq* module has been improved with better layout and
|
||||
nicer buttons in the example QML form. (Thanks to Anke Boersma)
|
||||
- The *keyboardq* and *localeq* modules now provide some QML for
|
||||
configuring these parts, although they are still very primitive.
|
||||
- *netinstall* has had some minor layout fixes.
|
||||
- *unpackfs* has much more detailed progress reporting and no
|
||||
longer jumps around strangely in overall progress.
|
||||
- *partition* now correctly marks a partition as bootable in BIOS + MBR
|
||||
installs. #1175
|
||||
|
||||
|
||||
# 3.2.21 (2020-03-27) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Camilo Higuita
|
||||
- Gabriel Craciunescu
|
||||
- Gaël PORTAY
|
||||
|
||||
## Core ##
|
||||
- Python job modules (such as *unpackfs* or *packages*) can now provide
|
||||
a `pretty_status_message()` function, like the existing `pretty_name()`
|
||||
function, that is used to update the status during install. #1330
|
||||
- QML support-modules and objects are now registered into the io.calamares
|
||||
namespace. This affects modules using Calamares models inside their
|
||||
QML UI (at this point, very few). With this release, the necessary
|
||||
`import` for Calamares parts looks like
|
||||
> ```import io.calamares.ui 1.0```
|
||||
A complete list of objects available from Calamares van be found in the
|
||||
documentation in `Qml.h`.
|
||||
- The sidebar (which shows overall progress in the installation) is now
|
||||
more configurable: the branding key *sidebar* controls it. The sidebar
|
||||
can be shown as a widget (default, as it has been), hidden, or use a
|
||||
new QML view which is more easily customised.
|
||||
- A new `settings.conf` key *quit-at-end* will automatically close
|
||||
Calamares (by clicking on the *Done* button) when the end of the
|
||||
sequence is reached. If *finished* is the last module in the sequence,
|
||||
this will run whatever it is configured for; you can also leave out
|
||||
the finished page and Calamares will close after the exec parts.
|
||||
|
||||
## Modules ##
|
||||
- *packages* now reports more details in the installation progress-bar.
|
||||
- *netinstall* module supports an `expanded` key, which will pre-expand
|
||||
a group (as if the user had pressed the arrow-button in the tree-view).
|
||||
This only affects the UI, and only the **outermost** level of groups.
|
||||
- *netinstall* module now supports a special value for *groupsUrl*.
|
||||
Setting this to *local* will read the groups directly from the
|
||||
configuration file.
|
||||
- *netinstall* groups now support a new key `immutable` which prevents
|
||||
their check-state from being changed (they are shown, or hidden,
|
||||
as usual and can be expanded).
|
||||
- Modules that use QML need a new import line. The QML file for the
|
||||
module is configured through new keys *qmlSearch* and *qmlFilename*
|
||||
(previously those were without the `qml` prefix, which invites name
|
||||
collisions). The full module identifier is also used as a filename,
|
||||
so that multiple instances of a module can use different QML files.
|
||||
- *partition* module has a number of new features and settings for
|
||||
type, UUID, and filesystem characteristics. Thanks to Gaël.
|
||||
|
||||
|
||||
# 3.2.20 (2020-02-27) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Bart Ribbers
|
||||
|
||||
## Core ##
|
||||
- When logging level is set to 8 (eight), for instance via the `-D8`
|
||||
logging flag, or the `-d` debug flag, the *Show debug information*
|
||||
button will appear in the progress view. This helps with debugging
|
||||
issues where the `-d` flag would be inappropriate.
|
||||
- Calamares now starts at logging level 1 (warnings and errors to
|
||||
the console) by default. Previously it (wrongly) started at level 8.
|
||||
|
||||
## Modules ##
|
||||
- The *partition* module now stores which filesystems are in use in
|
||||
global storage.
|
||||
- The *contextualprocess* module now understands "compound variable
|
||||
names", where a dot (.) is used to index into structured data
|
||||
stored in global storage. This allows it to use the map stored
|
||||
by the partition module (but also other things, like looking into
|
||||
the branding information).
|
||||
- The *packages* module now understands "apk", the Alpine Linux
|
||||
package manager.
|
||||
|
||||
|
||||
# 3.2.19.1 (2020-02-24) #
|
||||
|
||||
This is a hotfix release for bugs in the *users* module.
|
||||
Reported by Philip Mueller and Walter Lapchynski.
|
||||
|
||||
## Modules ##
|
||||
- The *users* module no longer wrote `/etc/hostname` at all.
|
||||
- The *users* module erroneously shows the root password input fields.
|
||||
- The *initramfs* module sets a resume-hook even when there is no swap.
|
||||
- The partitioning service expects *udevadm* in `/sbin`, but some
|
||||
distro's place it elsewhere.
|
||||
- The mount service didn't unmount directories properly, leading to
|
||||
blocked installations.
|
||||
|
||||
|
||||
# 3.2.19 (2020-02-21) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- Anke Boersma
|
||||
- Camilo Higuita
|
||||
- Gabriel Craciunescu
|
||||
|
||||
## Core ##
|
||||
- *Assamese* translation has been completed.
|
||||
- Translations are now loaded from more places: instead of **only**
|
||||
being compiled in to the Calamares executable, they can now be
|
||||
read from the current directory (when Calamares is run in developer
|
||||
mode) and from the application data directory.This allows updating the
|
||||
translations without requiring a recompile: helpful for translators
|
||||
and possibly for distributions with their own translation style.
|
||||
See the translators and deployers wiki for details.
|
||||
- A new `ViewStep` base class, `QmlViewStep`, has been added that loads
|
||||
a configurable QML file and plays it. This is used by the new *notesqml*
|
||||
module -- which is in itself a minimal wrapper around the same that
|
||||
adds only a translatable module name.
|
||||
|
||||
## Modules ##
|
||||
- The *machineid* and *users* modules now prefer high-quality random
|
||||
data from `/dev/urandom` rather than pseudo-random data. #1254
|
||||
- A new *notesqml* module supports loading QML. This can be used for
|
||||
"fancy" release notes as a QML application, rather than a webview
|
||||
or text widget. Note that this does not replace the slideshow-during-
|
||||
installation module.
|
||||
- The *users* module now has knobs for setting the hostname and writing
|
||||
the `/etc/hosts` file. The new configuration options are documented
|
||||
in `users.conf`. #1140
|
||||
- Multiple *netinstall* modules can exist side-by-side, and they each
|
||||
control the package installation for their part of the package list.
|
||||
Previously, a netinstall module would overwrite all of the package
|
||||
configuration done by other netinstall modules. Translations can be
|
||||
provided in the configuration file, `netinstall.conf`. #1303
|
||||
- The *fstab* module no longer "claims" all the swap partitions it finds
|
||||
on disk. It only uses swap specified for the current installation.
|
||||
This means that "replace" and "alongside" installations will have
|
||||
no swap configured in the target system.
|
||||
|
||||
|
||||
# 3.2.18 (2020-01-28) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
|
423
CMakeLists.txt
423
CMakeLists.txt
@@ -1,20 +1,15 @@
|
||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# Calamares 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.
|
||||
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
# Calamares is Free Software: see the License-Identifier above.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0+
|
||||
# License-Filename: LICENSE
|
||||
# Individual files may have different licenses (like the CMake
|
||||
# infrastructure, which is BSD-2-Clause licensed). Check the SPDX
|
||||
# identifiers in each file.
|
||||
#
|
||||
###
|
||||
#
|
||||
@@ -27,8 +22,13 @@
|
||||
# USE_<foo> : fills in SKIP_MODULES for modules called <foo>-<something>
|
||||
# WITH_<foo> : try to enable <foo> (these usually default to ON). For
|
||||
# a list of WITH_<foo> grep CMakeCache.txt after running
|
||||
# CMake once.
|
||||
# CMake once. These affect the ABI offered by Calamares.
|
||||
# - PYTHON (enable Python Job modules)
|
||||
# - QML (enable QML UI View modules)
|
||||
# - PYTHONQT # TODO:3.3: remove
|
||||
# BUILD_<foo> : choose additional things to build
|
||||
# - TESTING (standard CMake option)
|
||||
# - SCHEMA_TESTING (requires Python, see ci/configvalidator.py)
|
||||
# DEBUG_<foo> : special developer flags for debugging
|
||||
#
|
||||
# Example usage:
|
||||
@@ -38,10 +38,12 @@
|
||||
# One special target is "show-version", which can be built
|
||||
# to obtain the version number from here.
|
||||
|
||||
# TODO:3.3: Require CMake 3.12
|
||||
cmake_minimum_required( VERSION 3.3 FATAL_ERROR )
|
||||
project( CALAMARES
|
||||
VERSION 3.2.18
|
||||
LANGUAGES C CXX )
|
||||
VERSION 3.2.43
|
||||
LANGUAGES C CXX
|
||||
)
|
||||
|
||||
set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during development
|
||||
|
||||
@@ -49,10 +51,28 @@ set( CALAMARES_VERSION_RC 0 ) # Set to 0 during release cycle, 1 during develop
|
||||
#
|
||||
option( INSTALL_CONFIG "Install configuration files" OFF )
|
||||
option( INSTALL_POLKIT "Install Polkit configuration" ON )
|
||||
option( BUILD_TESTING "Build the testing tree." ON )
|
||||
option( INSTALL_COMPLETION "Install shell completions" OFF )
|
||||
# Options for the calamares executable
|
||||
option( WITH_KF5Crash "Enable crash reporting with KCrash." ON ) # TODO:3.3: WITH->BUILD (this isn't an ABI thing)
|
||||
option( WITH_KF5DBus "Use DBus service for unique-application." OFF ) # TODO:3.3: WITH->BUILD
|
||||
# When adding WITH_* that affects the ABI offered by libcalamares,
|
||||
# also update libcalamares/CalamaresConfig.h.in
|
||||
option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON )
|
||||
option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." OFF )
|
||||
option( WITH_KF5Crash "Enable crash reporting with KCrash." ON )
|
||||
option( WITH_PYTHONQT "Enable Python view modules API (deprecated, requires PythonQt)." OFF ) # TODO:3.3: remove
|
||||
option( WITH_QML "Enable QML UI options." ON )
|
||||
#
|
||||
# Additional parts to build
|
||||
option( BUILD_SCHEMA_TESTING "Enable schema-validation-tests" ON )
|
||||
|
||||
|
||||
# Possible debugging flags are:
|
||||
# - DEBUG_TIMEZONES draws latitude and longitude lines on the timezone
|
||||
# widget and enables chatty debug logging, for dealing with the timezone
|
||||
# location database.
|
||||
# - DEBUG_FILESYSTEMS does extra logging and checking when looking at
|
||||
# partition configuration. Lists known KPMCore FS types.
|
||||
# - DEBUG_PARTITION_UNSAFE (see partition/CMakeLists.txt)
|
||||
# - DEBUG_PARTITION_LAME (see partition/CMakeLists.txt)
|
||||
|
||||
|
||||
### USE_*
|
||||
@@ -70,8 +90,14 @@ option( WITH_KF5Crash "Enable crash reporting with KCrash." ON )
|
||||
# all the implementations are enabled (this just means they are
|
||||
# **available** to `settings.conf`, not that they are used).
|
||||
#
|
||||
# Currently, only USE_services is in use (to pick only one of the two
|
||||
# modules, systemd or openrc).
|
||||
# To explicitly disable a set of modules, set USE_<foo>=none
|
||||
# (e.g. the literal string none), which won't match any of the
|
||||
# modules but is handled specially.
|
||||
#
|
||||
# The following USE_* functionalities are available:
|
||||
# - *services* picks one of the two service-configuration modules,
|
||||
# for either systemd or openrc. This defaults to empty so that
|
||||
# **both** modules are available.
|
||||
set( USE_services "" CACHE STRING "Select the services module to use" )
|
||||
|
||||
### Calamares application info
|
||||
@@ -101,21 +127,20 @@ set( CALAMARES_DESCRIPTION_SUMMARY
|
||||
# TODO: drop the es_ES translation from Transifex
|
||||
#
|
||||
# NOTE: move eo (Esperanto) to _ok once Qt can actually create a
|
||||
# locale for it. (Qt 5.12.2 can, see check later on).
|
||||
# NOTE: update these lines by running txstats.py, or copy these four lines
|
||||
# and prefix each variable name with "p", so that the automatic
|
||||
# checks for new languages and misspelled ones are done (that is,
|
||||
# copy these four lines to four backup lines, add "p", and then update
|
||||
# the original four lines with the current translations).
|
||||
# locale for it. (Qt 5.12.2 can, see Translation Status section).
|
||||
# NOTE: move ie (Interlingue) to _ok once Qt supports it.
|
||||
# NOTE: update these lines by running `txstats.py`, or for full automation
|
||||
# `txstats.py -e`. See also
|
||||
#
|
||||
# Total 62 languages
|
||||
set( _tx_complete ca da fi_FI fr he hr ja lt sq tr_TR )
|
||||
set( _tx_good ast cs_CZ de es es_MX et gl hi hu id it_IT ko ml nl
|
||||
pl pt_BR pt_PT ru sk zh_TW )
|
||||
set( _tx_ok ar as be bg el en_GB es_PR eu is mr nb ro sl sr
|
||||
sr@latin sv th uk zh_CN )
|
||||
set( _tx_incomplete ca@valencia eo fa fr_CH gu kk kn lo mk ne_NP ur
|
||||
uz )
|
||||
# Total 79 languages
|
||||
set( _tx_complete az az_AZ ca fi_FI he hi ja ko lt pt_PT sq sv uk
|
||||
zh_CN zh_TW )
|
||||
set( _tx_good as be ca@valencia cs_CZ da de fr fur hr it_IT ml nl
|
||||
pt_BR ru sk tg tr_TR vi )
|
||||
set( _tx_ok ar ast bg bn el en_GB es es_MX et eu fa gl hu id is mr
|
||||
nb pl ro si sl sr sr@latin th )
|
||||
set( _tx_incomplete eo es_PE es_PR fr_CH gu id_ID ie kk kn ko_KR lo
|
||||
lv mk ne ne_NP ru_RU te ur uz zh zh_HK )
|
||||
|
||||
### Required versions
|
||||
#
|
||||
@@ -135,10 +160,11 @@ set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules" )
|
||||
if( POLICY CMP0057 )
|
||||
cmake_policy( SET CMP0057 NEW )
|
||||
endif()
|
||||
# CMake 3.9, 3.10 compatibility
|
||||
# Let ``AUTOMOC`` and ``AUTOUIC`` process ``GENERATED`` files.
|
||||
if( POLICY CMP0071 )
|
||||
cmake_policy( SET CMP0071 NEW )
|
||||
endif()
|
||||
# Recognize more macros to trigger automoc
|
||||
if(NOT CMAKE_VERSION VERSION_LESS "3.10.0")
|
||||
list(APPEND CMAKE_AUTOMOC_MACRO_NAMES
|
||||
"K_PLUGIN_FACTORY_WITH_JSON"
|
||||
@@ -147,46 +173,40 @@ if(NOT CMAKE_VERSION VERSION_LESS "3.10.0")
|
||||
)
|
||||
endif()
|
||||
|
||||
# CMake Modules
|
||||
include( CMakePackageConfigHelpers )
|
||||
include( CTest )
|
||||
include( FeatureSummary )
|
||||
|
||||
# Calamares Modules
|
||||
include( CMakeColors )
|
||||
|
||||
### C++ SETUP
|
||||
#
|
||||
set( CMAKE_CXX_STANDARD 14 )
|
||||
set( CMAKE_CXX_STANDARD 17 )
|
||||
set( CMAKE_CXX_STANDARD_REQUIRED ON )
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror=return-type" )
|
||||
set( CMAKE_CXX_FLAGS_DEBUG "-Og -g ${CMAKE_CXX_FLAGS_DEBUG}" )
|
||||
set( CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
|
||||
set( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" )
|
||||
set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
||||
|
||||
set( CMAKE_C_STANDARD 99 )
|
||||
set( CMAKE_C_STANDARD_REQUIRED ON )
|
||||
|
||||
# Debugging flags
|
||||
#
|
||||
# Possible debugging flags are:
|
||||
# - DEBUG_TIMEZONES draws latitude and longitude lines on the timezone
|
||||
# widget and enables chatty debug logging, for dealing with the timezone
|
||||
# location database.
|
||||
# - DEBUG_FILESYSTEMS does extra logging and checking when looking at
|
||||
# partition configuration. Lists known KPMCore FS types.
|
||||
#
|
||||
# The flags listed here are enabled in Debug builds. By default, none
|
||||
# are **actually** listed, because they're for such specific scenarios.
|
||||
set( _enable_debug_flags
|
||||
# DEBUG_TIMEZONES
|
||||
# DEBUG_FILESYSTEMS
|
||||
)
|
||||
# Add those flags to the CXX flags in a suitable format.
|
||||
foreach( _edf ${_enable_debug_flags} )
|
||||
string( APPEND CMAKE_CXX_FLAGS_DEBUG " -D${_edf}" )
|
||||
endforeach()
|
||||
|
||||
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" )
|
||||
set( CMAKE_C_FLAGS_DEBUG "-Og -g" )
|
||||
set( CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
|
||||
set( CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG" )
|
||||
set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
||||
|
||||
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined -Wl,--fatal-warnings" )
|
||||
|
||||
if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
||||
message( STATUS "Found Clang ${CMAKE_CXX_COMPILER_VERSION}, setting up Clang-specific compiler flags." )
|
||||
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall" )
|
||||
set( CMAKE_C_FLAGS_DEBUG "-g" )
|
||||
set( CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
|
||||
set( CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG" )
|
||||
set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
||||
|
||||
# Clang warnings: doing *everything* is counter-productive, since it warns
|
||||
# about things which we can't fix (e.g. C++98 incompatibilities, but
|
||||
# Calamares is C++14).
|
||||
# Calamares is C++17).
|
||||
foreach( CLANG_WARNINGS
|
||||
-Weverything
|
||||
-Wno-c++98-compat
|
||||
@@ -198,40 +218,30 @@ if( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
|
||||
-Wno-missing-prototypes
|
||||
-Wno-documentation-unknown-command
|
||||
-Wno-unknown-warning-option
|
||||
-Werror=return-type
|
||||
)
|
||||
string( APPEND CMAKE_CXX_FLAGS " ${CLANG_WARNINGS}" )
|
||||
endforeach()
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOTREACHED='//' -DFALLTHRU='[[clang::fallthrough]]'")
|
||||
|
||||
# The dwarf-debugging flags are slightly different, too
|
||||
string( APPEND CMAKE_CXX_FLAGS_DEBUG " -gdwarf" )
|
||||
string( APPEND CMAKE_C_FLAGS_DEBUG " -gdwarf" )
|
||||
|
||||
# Third-party code where we don't care so much about compiler warnings
|
||||
# (because it's uncomfortable to patch) get different flags; use
|
||||
# mark_thirdparty_code( <file> [<file>...] )
|
||||
# to switch off warnings for those sources.
|
||||
set( SUPPRESS_3RDPARTY_WARNINGS "-Wno-everything" )
|
||||
set( SUPPRESS_BOOST_WARNINGS " -Wno-zero-as-null-pointer-constant -Wno-disabled-macro-expansion" )
|
||||
|
||||
set( CMAKE_CXX_FLAGS_DEBUG "-g ${CMAKE_CXX_FLAGS_DEBUG}" )
|
||||
set( CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG" )
|
||||
set( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" )
|
||||
set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" )
|
||||
|
||||
set( CMAKE_TOOLCHAIN_PREFIX "llvm-" )
|
||||
|
||||
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
|
||||
|
||||
# The path prefix is only relevant for CMake 3.16 and later, fixes #1286
|
||||
set( CMAKE_AUTOMOC_PATH_PREFIX OFF )
|
||||
set( CALAMARES_AUTOMOC_OPTIONS "-butils/moc-warnings.h" )
|
||||
set( CALAMARES_AUTOUIC_OPTIONS --include utils/moc-warnings.h )
|
||||
else()
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-undefined" )
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--fatal-warnings -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type" )
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Woverloaded-virtual" )
|
||||
|
||||
set( SUPPRESS_3RDPARTY_WARNINGS "" )
|
||||
set( SUPPRESS_BOOST_WARNINGS "" )
|
||||
|
||||
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOTREACHED='__builtin_unreachable();' -DFALLTHRU='/* */'" )
|
||||
endif()
|
||||
|
||||
# Use mark_thirdparty_code() to reduce warnings from the compiler
|
||||
@@ -252,20 +262,12 @@ if( CMAKE_COMPILER_IS_GNUCXX )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include( FeatureSummary )
|
||||
include( CMakeColors )
|
||||
|
||||
|
||||
### DEPENDENCIES
|
||||
#
|
||||
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Concurrent Core Gui Widgets LinguistTools Svg Quick QuickWidgets )
|
||||
if( Qt5_VERSION VERSION_GREATER 5.12.1 )
|
||||
# At least Qt 5.12.2 seems to support Esperanto in QLocale
|
||||
if( "eo" IN_LIST _tx_incomplete )
|
||||
message(STATUS "Esperanto support since Qt 5.12.2, enabling Esperanto locale")
|
||||
list( REMOVE_ITEM _tx_incomplete "eo" )
|
||||
list( APPEND _tx_ok "eo" )
|
||||
endif()
|
||||
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Concurrent Core Gui LinguistTools Network Svg Widgets )
|
||||
if( WITH_QML )
|
||||
find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Quick QuickWidgets )
|
||||
endif()
|
||||
# Optional Qt parts
|
||||
find_package( Qt5DBus CONFIG )
|
||||
@@ -299,7 +301,7 @@ if( ECM_FOUND )
|
||||
include(KDEInstallDirs)
|
||||
endif()
|
||||
|
||||
find_package( KF5 QUIET COMPONENTS CoreAddons Crash )
|
||||
find_package( KF5 QUIET COMPONENTS CoreAddons Crash DBusAddons )
|
||||
set_package_properties(
|
||||
KF5::CoreAddons PROPERTIES
|
||||
TYPE REQUIRED
|
||||
@@ -308,22 +310,63 @@ set_package_properties(
|
||||
PURPOSE "About Calamares"
|
||||
)
|
||||
if( NOT KF5Crash_FOUND )
|
||||
if( WITH_KF5Crash )
|
||||
message(WARNING "WITH_KF5Crash is set, but KF5::Crash is not available.")
|
||||
endif()
|
||||
set( WITH_KF5Crash OFF )
|
||||
endif()
|
||||
if( NOT KF5DBusAddons_FOUND )
|
||||
if( WITH_KF5DBus )
|
||||
message(WARNING "WITH_KF5DBus is set, but KF5::DBusAddons is not available.")
|
||||
endif()
|
||||
set( WITH_KF5DBus OFF )
|
||||
endif()
|
||||
|
||||
if( BUILD_TESTING )
|
||||
enable_testing()
|
||||
endif ()
|
||||
# TODO:3.3: Use FindPython3 instead
|
||||
find_package( PythonInterp ${PYTHONLIBS_VERSION} )
|
||||
set_package_properties(
|
||||
PythonInterp PROPERTIES
|
||||
DESCRIPTION "Python 3 interpreter."
|
||||
URL "https://python.org"
|
||||
PURPOSE "Python 3 interpreter for certain tests."
|
||||
)
|
||||
|
||||
set( _schema_explanation "" )
|
||||
if ( PYTHONINTERP_FOUND )
|
||||
if ( BUILD_SCHEMA_TESTING )
|
||||
# The configuration validator script has some dependencies,
|
||||
# and if they are not installed, don't run. If errors out
|
||||
# with exit(1) on missing dependencies.
|
||||
if ( CALAMARES_CONFIGVALIDATOR_CHECKED )
|
||||
set( _validator_deps ${CALAMARES_CONFIGVALIDATOR_RESULT} )
|
||||
else()
|
||||
exec_program( ${PYTHON_EXECUTABLE} ARGS "${CMAKE_SOURCE_DIR}/ci/configvalidator.py" -x RETURN_VALUE _validator_deps )
|
||||
set( CALAMARES_CONFIGVALIDATOR_CHECKED TRUE CACHE INTERNAL "Dependencies for configvalidator checked" )
|
||||
set( CALAMARES_CONFIGVALIDATOR_RESULT ${_validator_deps} CACHE INTERNAL "Result of configvalidator dependency check" )
|
||||
endif()
|
||||
# It should never succeed, but only returns 1 when the imports fail
|
||||
if ( _validator_deps EQUAL 1 )
|
||||
set( _schema_explanation " Missing dependencies for configvalidator.py." )
|
||||
set( BUILD_SCHEMA_TESTING OFF )
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
# Can't run schema tests without Python3.
|
||||
set( _schema_explanation " Missing Python3." )
|
||||
set( BUILD_SCHEMA_TESTING OFF )
|
||||
endif()
|
||||
add_feature_info( yaml-schema BUILD_SCHEMA_TESTING "Validate YAML (config files) with schema.${_schema_explanation}" )
|
||||
|
||||
find_package( PythonLibs ${PYTHONLIBS_VERSION} )
|
||||
set_package_properties(
|
||||
PythonLibs PROPERTIES
|
||||
DESCRIPTION "C interface libraries for the Python 3 interpreter."
|
||||
URL "http://python.org"
|
||||
URL "https://python.org"
|
||||
PURPOSE "Python 3 is used for Python job modules."
|
||||
)
|
||||
|
||||
if ( PYTHONLIBS_FOUND )
|
||||
# TODO:3.3: Require Boost + CMake; sort out Boost::Python
|
||||
# Since Boost provides CMake config files (starting with Boost 1.70.
|
||||
# or so) the mess that is the Calamares find code picks the wrong
|
||||
# bits. Suppress those CMake config files, as suggested by @jmrcpn
|
||||
@@ -334,7 +377,7 @@ if ( PYTHONLIBS_FOUND )
|
||||
Boost PROPERTIES
|
||||
PURPOSE "Boost.Python is used for Python job modules."
|
||||
)
|
||||
|
||||
# TODO:3.3: Remove PythonQt support
|
||||
find_package( PythonQt )
|
||||
set_package_properties( PythonQt PROPERTIES
|
||||
DESCRIPTION "A Python embedding solution for Qt applications."
|
||||
@@ -352,32 +395,34 @@ if( NOT PYTHONLIBS_FOUND OR NOT PYTHONQT_FOUND )
|
||||
set( WITH_PYTHONQT OFF )
|
||||
endif()
|
||||
|
||||
# Now we know the state of the ABI-options, copy them into "Calamares_"
|
||||
# prefixed variables, to match how the variables would-be-named
|
||||
# when building out-of-tree.
|
||||
set(Calamares_WITH_PYTHON ${WITH_PYTHON})
|
||||
set(Calamares_WITH_PYTHONQT ${WITH_PYTHONQT})
|
||||
set(Calamares_WITH_QML ${WITH_QML})
|
||||
|
||||
### Transifex Translation status
|
||||
#
|
||||
# Construct language lists for use. If there are p_tx* variables,
|
||||
# then run an extra cmake-time check for consistency of the old
|
||||
# (p_tx*) and new (_tx*) lists.
|
||||
# Construct language lists for use. This massages the language lists
|
||||
# for use with older Qt (which does not support Esperanto) and checks
|
||||
# for some obvious error. The actual work of compiling translations
|
||||
# is done in the lang/ directory.
|
||||
#
|
||||
set( prev_tx ${p_tx_complete} ${p_tx_good} ${p_tx_ok} ${p_tx_incomplete} )
|
||||
if( Qt5_VERSION VERSION_GREATER 5.12.1 )
|
||||
# At least Qt 5.12.2 seems to support Esperanto in QLocale
|
||||
if( "eo" IN_LIST _tx_incomplete )
|
||||
message(STATUS "Esperanto support since Qt 5.12.2, enabling Esperanto locale")
|
||||
list( REMOVE_ITEM _tx_incomplete "eo" )
|
||||
list( APPEND _tx_ok "eo" )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set( curr_tx ${_tx_complete} ${_tx_good} ${_tx_ok} ${_tx_incomplete} )
|
||||
set( tx_errors OFF )
|
||||
if ( prev_tx )
|
||||
# Gone in new list
|
||||
foreach( l ${prev_tx} )
|
||||
list( FIND curr_tx ${l} p_l )
|
||||
if( p_l EQUAL -1 )
|
||||
message(WARNING "Language ${l} was present in previous translations and is now absent.")
|
||||
set( tx_errors ON )
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if ( curr_tx )
|
||||
# New in list
|
||||
foreach( l ${curr_tx} )
|
||||
list( FIND prev_tx ${l} p_l )
|
||||
if( p_l EQUAL -1 )
|
||||
message(WARNING "Language ${l} is new.")
|
||||
set( tx_errors ON )
|
||||
endif()
|
||||
set( p_l "lang/calamares_${l}.ts" )
|
||||
if( NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${p_l} )
|
||||
message(WARNING "Language ${l} has no .ts file yet.")
|
||||
@@ -388,7 +433,6 @@ if ( prev_tx )
|
||||
unset( p_l )
|
||||
unset( l )
|
||||
endif()
|
||||
unset( prev_tx )
|
||||
unset( curr_tx )
|
||||
if( tx_errors )
|
||||
message( FATAL_ERROR "Translation warnings, see above." )
|
||||
@@ -399,7 +443,6 @@ list( SORT CALAMARES_TRANSLATION_LANGUAGES )
|
||||
|
||||
add_subdirectory( lang ) # i18n tools
|
||||
|
||||
|
||||
### Example Distro
|
||||
#
|
||||
# For testing purposes Calamares includes a very, very, limited sample
|
||||
@@ -460,22 +503,15 @@ if( CALAMARES_VERSION_TWEAK )
|
||||
set( CALAMARES_VERSION "${CALAMARES_VERSION}.${CALAMARES_VERSION_TWEAK}" )
|
||||
endif()
|
||||
set( CALAMARES_VERSION_SHORT "${CALAMARES_VERSION}" )
|
||||
if( CALAMARES_VERSION_RC )
|
||||
set( CALAMARES_VERSION ${CALAMARES_VERSION}rc${CALAMARES_VERSION_RC} )
|
||||
endif()
|
||||
|
||||
# additional info for non-release builds
|
||||
# Additional info for non-release builds. The "extended" version information
|
||||
# with date and git information (commit, dirty status) is used only
|
||||
# by CalamaresVersionX.h, which is included by consumers that need a full
|
||||
# version number with all that information; normal consumers can include
|
||||
# CalamaresVersion.h with more stable numbers.
|
||||
if( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" )
|
||||
include( CMakeDateStamp )
|
||||
set( CALAMARES_VERSION_DATE "${CMAKE_DATESTAMP_YEAR}${CMAKE_DATESTAMP_MONTH}${CMAKE_DATESTAMP_DAY}" )
|
||||
if( CALAMARES_VERSION_DATE GREATER 0 )
|
||||
set( CALAMARES_VERSION ${CALAMARES_VERSION}.${CALAMARES_VERSION_DATE} )
|
||||
endif()
|
||||
|
||||
include( CMakeVersionSource )
|
||||
if( CMAKE_VERSION_SOURCE )
|
||||
set( CALAMARES_VERSION ${CALAMARES_VERSION}-${CMAKE_VERSION_SOURCE} )
|
||||
endif()
|
||||
include( ExtendedVersion )
|
||||
extend_version( "${CALAMARES_VERSION}" OFF CALAMARES_VERSION_SHORT CALAMARES_VERSION )
|
||||
endif()
|
||||
|
||||
# Special target for not-RC (e.g. might-be-release) builds.
|
||||
@@ -488,7 +524,11 @@ if ( CALAMARES_VERSION_RC EQUAL 0 )
|
||||
endif()
|
||||
|
||||
# enforce using constBegin, constEnd for const-iterators
|
||||
add_definitions( "-DQT_STRICT_ITERATORS" )
|
||||
add_definitions(
|
||||
-DQT_STRICT_ITERATORS
|
||||
-DQT_SHARED
|
||||
-DQT_SHAREDPOINTER_TRACK_POINTERS
|
||||
)
|
||||
|
||||
# set paths
|
||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
|
||||
@@ -505,16 +545,10 @@ endif()
|
||||
# make predefined install dirs available everywhere
|
||||
include( GNUInstallDirs )
|
||||
|
||||
# make uninstall support
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
||||
IMMEDIATE @ONLY
|
||||
)
|
||||
|
||||
# Early configure these files as we need them later on
|
||||
set( CALAMARES_CMAKE_DIR "${CMAKE_SOURCE_DIR}/CMakeModules" )
|
||||
set( CALAMARES_LIBRARIES calamares )
|
||||
# This is used by CalamaresAddLibrary; once Calamares is installed,
|
||||
# the CalamaresConfig.cmake module sets this variable to the IMPORTED
|
||||
# libraries for Calamares.
|
||||
set( Calamares_LIBRARIES calamares )
|
||||
|
||||
add_subdirectory( src )
|
||||
|
||||
@@ -522,82 +556,88 @@ add_feature_info(Python ${WITH_PYTHON} "Python job modules")
|
||||
add_feature_info(PythonQt ${WITH_PYTHONQT} "Python view modules")
|
||||
add_feature_info(Config ${INSTALL_CONFIG} "Install Calamares configuration")
|
||||
add_feature_info(KCrash ${WITH_KF5Crash} "Crash dumps via KCrash")
|
||||
add_feature_info(KDBusAddons ${WITH_KF5DBus} "Unique-application via DBus")
|
||||
|
||||
# Add all targets to the build-tree export set
|
||||
### CMake infrastructure installation
|
||||
#
|
||||
#
|
||||
set( CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/Calamares" CACHE PATH "Installation directory for CMake files" )
|
||||
set( CMAKE_INSTALL_FULL_CMAKEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" )
|
||||
export( TARGETS calamares
|
||||
FILE "${PROJECT_BINARY_DIR}/CalamaresLibraryDepends.cmake" )
|
||||
|
||||
# Export the package for use from the build-tree
|
||||
# (this registers the build-tree with a global CMake-registry)
|
||||
export( PACKAGE Calamares )
|
||||
|
||||
# Create a CalamaresBuildTreeSettings.cmake file for the use from the build tree
|
||||
configure_file( CalamaresBuildTreeSettings.cmake.in "${PROJECT_BINARY_DIR}/CalamaresBuildTreeSettings.cmake" @ONLY )
|
||||
|
||||
# Create the CalamaresConfig.cmake and CalamaresConfigVersion files
|
||||
file( RELATIVE_PATH CONF_REL_INCLUDE_DIR "${CMAKE_INSTALL_FULL_CMAKEDIR}" "${CMAKE_INSTALL_FULL_INCLUDEDIR}" )
|
||||
|
||||
configure_file( CalamaresConfig.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfig.cmake" @ONLY )
|
||||
configure_file( CalamaresConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake" @ONLY )
|
||||
configure_file( CalamaresUse.cmake.in "${PROJECT_BINARY_DIR}/CalamaresUse.cmake" @ONLY )
|
||||
configure_package_config_file(
|
||||
"CalamaresConfig.cmake.in"
|
||||
"${PROJECT_BINARY_DIR}/CalamaresConfig.cmake"
|
||||
INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
|
||||
PATH_VARS
|
||||
CMAKE_INSTALL_INCLUDEDIR
|
||||
CMAKE_INSTALL_LIBDIR
|
||||
CMAKE_INSTALL_DATADIR
|
||||
)
|
||||
write_basic_package_version_file(
|
||||
${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
install(
|
||||
EXPORT Calamares
|
||||
DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
|
||||
FILE "CalamaresTargets.cmake"
|
||||
NAMESPACE Calamares::
|
||||
)
|
||||
|
||||
# Install the cmake files
|
||||
install(
|
||||
FILES
|
||||
"${PROJECT_BINARY_DIR}/CalamaresConfig.cmake"
|
||||
"${PROJECT_BINARY_DIR}/CalamaresConfigVersion.cmake"
|
||||
"${PROJECT_BINARY_DIR}/CalamaresUse.cmake"
|
||||
"CMakeModules/CalamaresAddPlugin.cmake"
|
||||
"CMakeModules/CalamaresAddModuleSubdirectory.cmake"
|
||||
"CMakeModules/CalamaresAddLibrary.cmake"
|
||||
"CMakeModules/CalamaresAddBrandingSubdirectory.cmake"
|
||||
"CMakeModules/CalamaresAddLibrary.cmake"
|
||||
"CMakeModules/CalamaresAddModuleSubdirectory.cmake"
|
||||
"CMakeModules/CalamaresAddPlugin.cmake"
|
||||
"CMakeModules/CalamaresAddTest.cmake"
|
||||
"CMakeModules/CalamaresAddTranslations.cmake"
|
||||
"CMakeModules/CalamaresAutomoc.cmake"
|
||||
"CMakeModules/CalamaresCheckModuleSelection.cmake"
|
||||
"CMakeModules/CMakeColors.cmake"
|
||||
"CMakeModules/FindYAMLCPP.cmake"
|
||||
DESTINATION
|
||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||
)
|
||||
|
||||
# Install the export set for use with the install-tree
|
||||
install(
|
||||
EXPORT
|
||||
CalamaresLibraryDepends
|
||||
DESTINATION
|
||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||
)
|
||||
|
||||
### Miscellaneous installs
|
||||
#
|
||||
#
|
||||
if( INSTALL_CONFIG )
|
||||
install(
|
||||
FILES
|
||||
settings.conf
|
||||
DESTINATION
|
||||
share/calamares
|
||||
FILES settings.conf
|
||||
DESTINATION share/calamares
|
||||
)
|
||||
endif()
|
||||
|
||||
if( INSTALL_POLKIT )
|
||||
install(
|
||||
FILES
|
||||
com.github.calamares.calamares.policy
|
||||
DESTINATION
|
||||
"${POLKITQT-1_POLICY_FILES_INSTALL_DIR}"
|
||||
FILES com.github.calamares.calamares.policy
|
||||
DESTINATION "${POLKITQT-1_POLICY_FILES_INSTALL_DIR}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if ( INSTALL_COMPLETION )
|
||||
if( NOT CMAKE_INSTALL_BASHCOMPLETIONDIR )
|
||||
set( CMAKE_INSTALL_BASHCOMPLETIONDIR "${CMAKE_INSTALL_DATADIR}/bash-completion/completions" )
|
||||
endif()
|
||||
|
||||
install( FILES ${CMAKE_SOURCE_DIR}/data/completion/bash/calamares DESTINATION "${CMAKE_INSTALL_BASHCOMPLETIONDIR}" )
|
||||
endif()
|
||||
|
||||
install(
|
||||
FILES
|
||||
calamares.desktop
|
||||
DESTINATION
|
||||
${CMAKE_INSTALL_DATADIR}/applications
|
||||
FILES calamares.desktop
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
|
||||
)
|
||||
|
||||
install(
|
||||
FILES
|
||||
man/calamares.8
|
||||
DESTINATION
|
||||
${CMAKE_INSTALL_MANDIR}/man8/
|
||||
FILES man/calamares.8
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man8/
|
||||
)
|
||||
|
||||
# uninstall target
|
||||
@@ -635,3 +675,16 @@ feature_summary(
|
||||
DESCRIPTION "The following REQUIRED packages were not found:"
|
||||
QUIET_ON_EMPTY
|
||||
)
|
||||
|
||||
### PACKAGING
|
||||
#
|
||||
# Note: most distro's will do distro-specific packaging rather than
|
||||
# using CPack, and this duplicates information in the AppStream, too.
|
||||
# TODO:3.3 With newer CMake, move HOMEPAGE_URL to the project()call
|
||||
set(CPACK_PACKAGE_VENDOR calamares)
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A Linux system installer")
|
||||
set(CPACK_PACKAGE_DESCRIPTION "Calamares is a Linux system installer, intended for Linux distributions to use on their ISOs and other bootable media to install the distribution to the end-user's computer. Calamares can also be used as an OEM configuration tool. It is modular, extensible and highly-configurable for Linux distributions from all five major Linux families.")
|
||||
set(CPACK_PACKAGE_HOMEPAGE_URL "https://calamares.io")
|
||||
set(CPACK_PACKAGE_ICON "data/images/squid.png")
|
||||
|
||||
include(CPack)
|
||||
|
@@ -1,3 +1,17 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org>
|
||||
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-FileCopyrightText: 2019 Kevin Kofler <kevin.kofler@chello.at>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
###
|
||||
#
|
||||
# Handles the mess that Boost::Python is before CMake 3.16 and
|
||||
# Boost 1.70 or so.
|
||||
#
|
||||
###
|
||||
#
|
||||
# On Ubuntu 14.04, the libboost-python1.54-dev package comes with one library
|
||||
# for each Python version:
|
||||
# libboost_python-py27.so
|
||||
@@ -68,7 +82,7 @@ macro( find_boost_python3 boost_version python_version found_var )
|
||||
endif()
|
||||
|
||||
set( ${found_var} ${_fbp_found} )
|
||||
|
||||
|
||||
# This is superfluous, but allows proper reporting in the features list
|
||||
if ( _fbp_found )
|
||||
find_package( Boost ${boost_version} COMPONENTS ${_fbp_found} )
|
||||
|
@@ -1,3 +1,14 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2014 Kevin Kofler <kevin.kofler@chello.at>
|
||||
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
###
|
||||
#
|
||||
# Defines a handful of strings that, with normal xterm handling,
|
||||
# will change colors in the output, so it's nicer to read.
|
||||
if(NOT WIN32)
|
||||
set(_use_color ON)
|
||||
if("0" STREQUAL "$ENV{CLICOLOR}")
|
||||
|
@@ -1,23 +0,0 @@
|
||||
find_program(DATE_EXECUTABLE NAMES date)
|
||||
mark_as_advanced(DATE_EXECUTABLE)
|
||||
|
||||
if(DATE_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND ${DATE_EXECUTABLE} +%Y
|
||||
OUTPUT_VARIABLE CMAKE_DATESTAMP_YEAR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
execute_process(
|
||||
COMMAND ${DATE_EXECUTABLE} +%m
|
||||
OUTPUT_VARIABLE CMAKE_DATESTAMP_MONTH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
execute_process(
|
||||
COMMAND ${DATE_EXECUTABLE} +%d
|
||||
OUTPUT_VARIABLE CMAKE_DATESTAMP_DAY
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
endif()
|
@@ -1,45 +0,0 @@
|
||||
# Try to identify the current development source version.
|
||||
set(CMAKE_VERSION_SOURCE "")
|
||||
if(EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD)
|
||||
find_program(GIT_EXECUTABLE NAMES git git.cmd)
|
||||
mark_as_advanced(GIT_EXECUTABLE)
|
||||
if(GIT_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=7 HEAD
|
||||
OUTPUT_VARIABLE head
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
if(head)
|
||||
set(branch "")
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} name-rev HEAD
|
||||
OUTPUT_VARIABLE branch
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
string(REGEX REPLACE "HEAD " "" branch "${branch}")
|
||||
set(CMAKE_VERSION_SOURCE "git-${branch}-${head}")
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} update-index -q --refresh
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
|
||||
OUTPUT_VARIABLE dirty
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
if(dirty)
|
||||
set(CMAKE_VERSION_SOURCE "${CMAKE_VERSION_SOURCE}-dirty")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
elseif(EXISTS ${CMAKE_SOURCE_DIR}/CVS/Repository)
|
||||
file(READ ${CMAKE_SOURCE_DIR}/CVS/Repository repo)
|
||||
set(branch "")
|
||||
if("${repo}" MATCHES "\\.git/")
|
||||
string(REGEX REPLACE ".*\\.git/([^\r\n]*).*" "-\\1" branch "${repo}")
|
||||
endif()
|
||||
set(CMAKE_VERSION_SOURCE "cvs${branch}")
|
||||
endif()
|
@@ -1,20 +1,11 @@
|
||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# Calamares 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.
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Calamares 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.
|
||||
# Calamares is Free Software: see the License-Identifier above.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0+
|
||||
# License-Filename: LICENSE
|
||||
#
|
||||
###
|
||||
#
|
||||
@@ -70,7 +61,11 @@ function( calamares_add_branding NAME )
|
||||
foreach( BRANDING_COMPONENT_FILE ${BRANDING_COMPONENT_FILES} )
|
||||
set( _subpath ${_brand_dir}/${BRANDING_COMPONENT_FILE} )
|
||||
if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} )
|
||||
configure_file( ${_subpath} ${_subpath} COPYONLY )
|
||||
set( _src ${CMAKE_CURRENT_SOURCE_DIR}/${_subpath} )
|
||||
set( _dst ${CMAKE_CURRENT_BINARY_DIR}/${_subpath} )
|
||||
if( ${_src} IS_NEWER_THAN ${_dst} )
|
||||
configure_file( ${_src} ${_dst} COPYONLY )
|
||||
endif()
|
||||
|
||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${_subpath}
|
||||
DESTINATION ${BRANDING_COMPONENT_DESTINATION}/${_subdir}/ )
|
||||
|
@@ -1,20 +1,11 @@
|
||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# Calamares 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.
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Calamares 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.
|
||||
# Calamares is Free Software: see the License-Identifier above.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0+
|
||||
# License-Filename: LICENSE
|
||||
#
|
||||
###
|
||||
#
|
||||
@@ -62,10 +53,8 @@ function(calamares_add_library)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
# add resources from current dir
|
||||
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${LIBRARY_RESOURCES}")
|
||||
qt5_add_resources(LIBRARY_RC_SOURCES "${LIBRARY_RESOURCES}")
|
||||
list(APPEND LIBRARY_SOURCES ${LIBRARY_RC_SOURCES})
|
||||
unset(LIBRARY_RC_SOURCES)
|
||||
if(LIBRARY_RESOURCES)
|
||||
list(APPEND LIBRARY_SOURCES ${LIBRARY_RESOURCES})
|
||||
endif()
|
||||
|
||||
# add target
|
||||
@@ -81,6 +70,9 @@ function(calamares_add_library)
|
||||
if(LIBRARY_UI)
|
||||
calamares_autouic(${target} ${LIBRARY_UI})
|
||||
endif()
|
||||
if(LIBRARY_RESOURCES)
|
||||
calamares_autorcc(${target} ${LIBRARY_RESOURCES})
|
||||
endif()
|
||||
|
||||
if(LIBRARY_EXPORT_MACRO)
|
||||
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS ${LIBRARY_EXPORT_MACRO})
|
||||
@@ -93,11 +85,10 @@ function(calamares_add_library)
|
||||
|
||||
# add link targets
|
||||
target_link_libraries(${target}
|
||||
LINK_PUBLIC ${CALAMARES_LIBRARIES}
|
||||
LINK_PUBLIC ${Calamares_LIBRARIES}
|
||||
Qt5::Core
|
||||
Qt5::Gui
|
||||
Qt5::Widgets
|
||||
${LIBRARY_QT5_MODULES}
|
||||
)
|
||||
if(LIBRARY_LINK_LIBRARIES)
|
||||
target_link_libraries(${target} LINK_PUBLIC ${LIBRARY_LINK_LIBRARIES})
|
||||
|
@@ -1,53 +1,82 @@
|
||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# Calamares 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.
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Calamares 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.
|
||||
# Calamares is Free Software: see the License-Identifier above.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0+
|
||||
# License-Filename: LICENSE
|
||||
#
|
||||
###
|
||||
#
|
||||
# Function and support code for adding a Calamares module (either a Qt / C++ plugin,
|
||||
# or a Python module, or whatever) to the build.
|
||||
#
|
||||
# # Usage
|
||||
#
|
||||
# The public API is one single function:
|
||||
#
|
||||
# - calamares_add_module_subdirectory(subdirectory [skiplistvar])
|
||||
# Adds a given *subdirectory* to the modules list, building the
|
||||
# module that is there. The *subdirectory* must contain a `module.desc`
|
||||
# (generally non-C++ modules) or a `CMakeLists.txt` (for C++ modules,
|
||||
# or special cases). The module is assumed to be named after the
|
||||
# (last component of) the subdirectory.
|
||||
#
|
||||
# If the module would be skipped (by the global SKIP_MODULES setting
|
||||
# or a USE_* setting) or the module itself sets a reason to skip
|
||||
# via the calamares_skip_module() function, the module is added to
|
||||
# the list of skipped-modules in *skiplistvar*. If no variable is
|
||||
# given, the reason is set in the parent scope variable
|
||||
# SKIPPED_MODULES . Do **not** use SKIPPED_MODULES as the name of
|
||||
# *skiplistvar*, things will get weird.
|
||||
#
|
||||
# Do note that the name of a module must be the same as the name of
|
||||
# the directory containing it (as documented in src/modules/README.md).
|
||||
# This applies to both C++ and Python modules, and allows the use of
|
||||
# the subdirectory as a proxy for the module name inside.
|
||||
#
|
||||
|
||||
include( CalamaresAddTranslations )
|
||||
include( CalamaresCheckModuleSelection )
|
||||
|
||||
set( MODULE_DATA_DESTINATION share/calamares/modules )
|
||||
|
||||
# Convenience function to indicate that a module has been skipped
|
||||
# (optionally also why). Call this in the module's CMakeLists.txt
|
||||
macro( calamares_skip_module )
|
||||
set( SKIPPED_MODULES ${SKIPPED_MODULES} ${ARGV} PARENT_SCOPE )
|
||||
endmacro()
|
||||
|
||||
function( calamares_explain_skipped_modules )
|
||||
if ( ARGN )
|
||||
message( "${ColorReset}-- Skipped modules:" )
|
||||
foreach( SUBDIRECTORY ${ARGN} )
|
||||
message( "${ColorReset}-- Skipped ${BoldRed}${SUBDIRECTORY}${ColorReset}." )
|
||||
endforeach()
|
||||
message( "" )
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function( calamares_add_module_subdirectory )
|
||||
function( _calamares_add_module_subdirectory_impl )
|
||||
set( SUBDIRECTORY ${ARGV0} )
|
||||
|
||||
set( SKIPPED_MODULES )
|
||||
# Set SKIPPED_MODULES here, so CMake-based modules have a
|
||||
# parent scope to set it in; this function, in turn sets it
|
||||
# in **its** parent scope.
|
||||
set( SKIPPED_MODULES "" )
|
||||
set( MODULE_CONFIG_FILES "" )
|
||||
|
||||
# The module subdirectory may be given as a/b/c, but the module
|
||||
# needs to be installed as "c", so we split off any intermediate
|
||||
# directories.
|
||||
#
|
||||
# Compute _modulename (the last directory name) and _mod_dir
|
||||
# (the full path to the module sources).
|
||||
get_filename_component(_dirname "${SUBDIRECTORY}" DIRECTORY)
|
||||
if( _dirname )
|
||||
# Remove the dirname and any leftover leading /s
|
||||
string( REGEX REPLACE "^${_dirname}/*" "" _modulename "${SUBDIRECTORY}" )
|
||||
else()
|
||||
set( _modulename ${SUBDIRECTORY} )
|
||||
endif()
|
||||
# Strip any remaining /
|
||||
string( REGEX REPLACE "/" "" _modulename "${_modulename}" )
|
||||
set( _mod_dir "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" )
|
||||
|
||||
# Skip list check applies to all kinds of modules
|
||||
calamares_check_skip( ${_modulename} SKIPPED_MODULES )
|
||||
if ( SKIPPED_MODULES )
|
||||
# If it's skipped by infrastucture, the message already includes the module
|
||||
# name. We don't need to do any further checking.
|
||||
set( SKIPPED_MODULES "${SKIPPED_MODULES}" PARENT_SCOPE )
|
||||
return()
|
||||
endif()
|
||||
|
||||
# If this subdirectory has a CMakeLists.txt, we add_subdirectory it...
|
||||
if( EXISTS "${_mod_dir}/CMakeLists.txt" )
|
||||
add_subdirectory( ${SUBDIRECTORY} )
|
||||
@@ -57,11 +86,21 @@ function( calamares_add_module_subdirectory )
|
||||
if ( SKIPPED_MODULES )
|
||||
set( SKIPPED_MODULES ${SKIPPED_MODULES} PARENT_SCOPE )
|
||||
set( MODULE_CONFIG_FILES "" )
|
||||
else()
|
||||
# The SKIPPED_MODULES may be set in the directory itself
|
||||
get_directory_property( _skip DIRECTORY ${SUBDIRECTORY} DEFINITION SKIPPED_MODULES )
|
||||
if ( _skip )
|
||||
set( SKIPPED_MODULES ${_skip} PARENT_SCOPE )
|
||||
set( MODULE_CONFIG_FILES "" )
|
||||
endif()
|
||||
endif()
|
||||
if ( SKIPPED_MODULES )
|
||||
return()
|
||||
endif()
|
||||
# ...otherwise, we look for a module.desc.
|
||||
elseif( EXISTS "${_mod_dir}/module.desc" )
|
||||
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
|
||||
set( MODULE_DESTINATION ${MODULES_DIR}/${SUBDIRECTORY} )
|
||||
set( MODULE_DESTINATION ${MODULES_DIR}/${_modulename} )
|
||||
|
||||
# Read module.desc, check that the interface type is supported.
|
||||
#
|
||||
@@ -70,11 +109,11 @@ function( calamares_add_module_subdirectory )
|
||||
# _mod_testing boolean if the module should be added to the loadmodule tests
|
||||
file(STRINGS "${_mod_dir}/module.desc" MODULE_INTERFACE REGEX "^interface")
|
||||
if ( MODULE_INTERFACE MATCHES "pythonqt" )
|
||||
set( _mod_enabled ${WITH_PYTHONQT} )
|
||||
set( _mod_enabled ${Calamares_WITH_PYTHONQT} )
|
||||
set( _mod_reason "No PythonQt support" )
|
||||
set( _mod_testing OFF )
|
||||
elseif ( MODULE_INTERFACE MATCHES "python" )
|
||||
set( _mod_enabled ${WITH_PYTHON} )
|
||||
set( _mod_enabled ${Calamares_WITH_PYTHON} )
|
||||
set( _mod_reason "No Python support" )
|
||||
set( _mod_testing ON ) # Will check syntax and imports, at least
|
||||
elseif ( MODULE_INTERFACE MATCHES "qtplugin" )
|
||||
@@ -113,7 +152,7 @@ function( calamares_add_module_subdirectory )
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${SUBDIRECTORY}${ColorReset}" )
|
||||
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${_modulename}${ColorReset}" )
|
||||
message( " ${Green}TYPE:${ColorReset} jobmodule" )
|
||||
message( " ${Green}MODULE_DESTINATION:${ColorReset} ${MODULE_DESTINATION}" )
|
||||
if( MODULE_CONFIG_FILES )
|
||||
@@ -126,10 +165,10 @@ function( calamares_add_module_subdirectory )
|
||||
endif()
|
||||
message( "" )
|
||||
# We copy over the lang directory, if any
|
||||
if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang" )
|
||||
if( IS_DIRECTORY "${_mod_dir}/lang" )
|
||||
install_calamares_gettext_translations(
|
||||
${SUBDIRECTORY}
|
||||
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/lang"
|
||||
SOURCE_DIR "${_mod_dir}/lang"
|
||||
FILENAME ${SUBDIRECTORY}.mo
|
||||
RENAME calamares-${SUBDIRECTORY}.mo
|
||||
)
|
||||
@@ -158,15 +197,65 @@ function( calamares_add_module_subdirectory )
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# Check that the module can be loaded. Since this calls exec(), the module
|
||||
# Adding general tests
|
||||
#
|
||||
# Add a check that the module can be loaded. Since this calls exec(), the module
|
||||
# may try to do things to the running system. Needs work to make that a
|
||||
# safe thing to do.
|
||||
#
|
||||
# If the module has a tests/ subdirectory with *.global and *.job
|
||||
# files (YAML files holding global and job-configurations for
|
||||
# testing purposes) then those files are used to drive additional
|
||||
# tests. The files must be numbered (starting from 1) for this to work;
|
||||
# 1.global and 1.job together make the configuration for test 1.
|
||||
#
|
||||
# If the module has a tests/CMakeLists.txt while it doesn't have its
|
||||
# own CMakeLists.txt (e.g. a Python module), then the subdirectory
|
||||
# for tests/ is added on its own.
|
||||
#
|
||||
if ( BUILD_TESTING AND _mod_enabled AND _mod_testing )
|
||||
add_test(
|
||||
NAME load-${SUBDIRECTORY}
|
||||
COMMAND loadmodule ${SUBDIRECTORY}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
# Try it with the tests/ configurations shipped with the module
|
||||
set( _count 1 )
|
||||
set( _testdir ${_mod_dir}/tests )
|
||||
while ( EXISTS "${_testdir}/${_count}.global" OR EXISTS "${_testdir}/${_count}.job" )
|
||||
set( _dash_g "" )
|
||||
set( _dash_j "" )
|
||||
if ( EXISTS "${_testdir}/${_count}.global" )
|
||||
set( _dash_g -g ${_testdir}/${_count}.global )
|
||||
endif()
|
||||
if ( EXISTS "${_testdir}/${_count}.job" )
|
||||
set( _dash_j -j ${_testdir}/${_count}.job )
|
||||
endif()
|
||||
add_test(
|
||||
NAME load-${SUBDIRECTORY}-${_count}
|
||||
COMMAND loadmodule ${_dash_g} ${_dash_j} ${SUBDIRECTORY}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
math( EXPR _count "${_count} + 1" )
|
||||
endwhile()
|
||||
if ( EXISTS ${_testdir}/CMakeTests.txt AND NOT EXISTS ${_mod_dir}/CMakeLists.txt )
|
||||
include( ${_testdir}/CMakeTests.txt )
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function( calamares_add_module_subdirectory )
|
||||
set( SUBDIRECTORY ${ARGV0} )
|
||||
set( _ams_SKIP_LIST ${ARGV1} )
|
||||
|
||||
set( SKIPPED_MODULES "" )
|
||||
_calamares_add_module_subdirectory_impl( ${SUBDIRECTORY} )
|
||||
if ( SKIPPED_MODULES )
|
||||
if ( _ams_SKIP_LIST )
|
||||
list( APPEND ${_ams_SKIP_LIST} "${SKIPPED_MODULES}" )
|
||||
set( ${_ams_SKIP_LIST} "${${_ams_SKIP_LIST}}" PARENT_SCOPE )
|
||||
else()
|
||||
set( SKIPPED_MODULES "${SKIPPED_MODULES}" PARENT_SCOPE )
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
@@ -1,20 +1,11 @@
|
||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# Calamares 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.
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Calamares 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.
|
||||
# Calamares is Free Software: see the License-Identifier above.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0+
|
||||
# License-Filename: LICENSE
|
||||
#
|
||||
###
|
||||
#
|
||||
@@ -41,6 +32,7 @@
|
||||
# [NO_CONFIG]
|
||||
# [SHARED_LIB]
|
||||
# [EMERGENCY]
|
||||
# [WEIGHT w]
|
||||
# )
|
||||
#
|
||||
# Function parameters:
|
||||
@@ -63,17 +55,28 @@
|
||||
# - EMERGENCY
|
||||
# If this is set, the module is marked as an *emergency* module in the
|
||||
# descriptor. See *Emergency Modules* in the module documentation.
|
||||
# - WEIGHT
|
||||
# If this is set, writes an explicit weight into the module.desc;
|
||||
# module weights are used in progress reporting.
|
||||
#
|
||||
#
|
||||
# This function follows the global SKIP_MODULES and USE_* settings, so
|
||||
# a plugin may be skipped -- then nothing will be built. In that case,
|
||||
# SKIPPED_MODULES is set in the parent (i.e. caller's) scope with the
|
||||
# reason why. This should rarely be a concern as AddModuleSubdirectory
|
||||
# already handles skip-reasons and collects them for reporting.
|
||||
|
||||
include( CMakeParseArguments )
|
||||
|
||||
include( CalamaresAddLibrary )
|
||||
include( CalamaresCheckModuleSelection )
|
||||
include( CMakeColors )
|
||||
|
||||
function( calamares_add_plugin )
|
||||
# parse arguments ( name needs to be saved before passing ARGN into the macro )
|
||||
set( NAME ${ARGV0} )
|
||||
set( options NO_CONFIG NO_INSTALL SHARED_LIB EMERGENCY )
|
||||
set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES )
|
||||
set( oneValueArgs NAME TYPE EXPORT_MACRO RESOURCES WEIGHT )
|
||||
set( multiValueArgs SOURCES UI LINK_LIBRARIES LINK_PRIVATE_LIBRARIES COMPILE_DEFINITIONS REQUIRES )
|
||||
cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
||||
set( PLUGIN_NAME ${NAME} )
|
||||
@@ -85,6 +88,12 @@ function( calamares_add_plugin )
|
||||
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
||||
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
||||
|
||||
calamares_check_skip( ${NAME} _skip)
|
||||
if ( _skip )
|
||||
set( SKIPPED_MODULES "${_skip}" PARENT_SCOPE )
|
||||
return()
|
||||
endif()
|
||||
|
||||
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${PLUGIN_NAME}${ColorReset}" )
|
||||
message( " ${Green}TYPE:${ColorReset} ${PLUGIN_TYPE}" )
|
||||
message( " ${Green}LINK_LIBRARIES:${ColorReset} ${PLUGIN_LINK_LIBRARIES}" )
|
||||
@@ -117,6 +126,15 @@ function( calamares_add_plugin )
|
||||
# create target name once for convenience
|
||||
set( target "calamares_${PLUGIN_TYPE}_${PLUGIN_NAME}" )
|
||||
|
||||
# automatic library linkage
|
||||
if(PLUGIN_TYPE STREQUAL "view" OR PLUGIN_TYPE STREQUAL "viewmodule")
|
||||
list(APPEND PLUGIN_LINK_PRIVATE_LIBRARIES Calamares::calamaresui)
|
||||
elseif(PLUGIN_TYPE STREQUAL "job")
|
||||
list(APPEND PLUGIN_LINK_PRIVATE_LIBRARIES Calamares::calamares)
|
||||
else()
|
||||
message(FATAL_ERROR "Unknown plugin type ${PLUGIN_TYPE}")
|
||||
endif()
|
||||
|
||||
# determine target type
|
||||
if( NOT ${PLUGIN_SHARED_LIB} )
|
||||
set( target_type "MODULE" )
|
||||
@@ -181,19 +199,31 @@ function( calamares_add_plugin )
|
||||
if ( PLUGIN_NO_CONFIG )
|
||||
file( APPEND ${_file} "noconfig: true\n" )
|
||||
endif()
|
||||
if ( PLUGIN_WEIGHT )
|
||||
file( APPEND ${_file} "weight: ${PLUGIN_WEIGHT}\n" )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if ( NOT PLUGIN_NO_INSTALL )
|
||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE}
|
||||
DESTINATION ${PLUGIN_DESTINATION} )
|
||||
|
||||
set( _warned_config OFF )
|
||||
foreach( PLUGIN_CONFIG_FILE ${PLUGIN_CONFIG_FILES} )
|
||||
configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY )
|
||||
if( ${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_CONFIG_FILE} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} OR INSTALL_CONFIG )
|
||||
configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY )
|
||||
else()
|
||||
message( " ${BoldYellow}Not updating${ColorReset} ${PLUGIN_CONFIG_FILE}" )
|
||||
set( _warned_config ON )
|
||||
endif()
|
||||
if ( INSTALL_CONFIG )
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE}
|
||||
DESTINATION ${PLUGIN_DATA_DESTINATION} )
|
||||
endif()
|
||||
endforeach()
|
||||
if ( _warned_config )
|
||||
message( "" )
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
55
CMakeModules/CalamaresAddTest.cmake
Normal file
55
CMakeModules/CalamaresAddTest.cmake
Normal file
@@ -0,0 +1,55 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Calamares is Free Software: see the License-Identifier above.
|
||||
#
|
||||
#
|
||||
###
|
||||
#
|
||||
# Support functions for building Calamares tests.
|
||||
# This extends KDE's ECM tests with some custom patterns.
|
||||
#
|
||||
# calamares_add_test(
|
||||
# <NAME>
|
||||
# [GUI]
|
||||
# [RESOURCES FILE]
|
||||
# SOURCES <FILE..>
|
||||
# )
|
||||
|
||||
include( CMakeParseArguments )
|
||||
include( CalamaresAutomoc )
|
||||
|
||||
function( calamares_add_test )
|
||||
# parse arguments (name needs to be saved before passing ARGN into the macro)
|
||||
set( NAME ${ARGV0} )
|
||||
set( options GUI )
|
||||
set( oneValueArgs NAME RESOURCES )
|
||||
set( multiValueArgs SOURCES LIBRARIES DEFINITIONS )
|
||||
cmake_parse_arguments( TEST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
||||
set( TEST_NAME ${NAME} )
|
||||
|
||||
if( ECM_FOUND AND BUILD_TESTING )
|
||||
ecm_add_test(
|
||||
${TEST_SOURCES} ${TEST_RESOURCES}
|
||||
TEST_NAME
|
||||
${TEST_NAME}
|
||||
LINK_LIBRARIES
|
||||
Calamares::calamares
|
||||
${TEST_LIBRARIES}
|
||||
Qt5::Core
|
||||
Qt5::Test
|
||||
)
|
||||
calamares_automoc( ${TEST_NAME} )
|
||||
# We specifically pass in the source directory of the test-being-
|
||||
# compiled, so that it can find test-files in that source dir.
|
||||
target_compile_definitions( ${TEST_NAME} PRIVATE -DBUILD_AS_TEST="${CMAKE_CURRENT_SOURCE_DIR}" ${TEST_DEFINITIONS} )
|
||||
if( TEST_GUI )
|
||||
target_link_libraries( ${TEST_NAME} Calamares::calamaresui Qt5::Gui )
|
||||
endif()
|
||||
if( TEST_RESOURCES )
|
||||
calamares_autorcc( ${TEST_NAME} ${TEST_RESOURCES} )
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
@@ -1,20 +1,10 @@
|
||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# Calamares 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.
|
||||
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Calamares 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.
|
||||
# Calamares is Free Software: see the License-Identifier above.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0+
|
||||
# License-Filename: LICENSE
|
||||
#
|
||||
###
|
||||
#
|
||||
@@ -22,104 +12,14 @@
|
||||
|
||||
include( CMakeParseArguments )
|
||||
|
||||
if( NOT _rcc_version_support_checked )
|
||||
set( _rcc_version_support_checked TRUE )
|
||||
|
||||
# Extract the executable name
|
||||
get_property( _rcc_executable
|
||||
TARGET ${Qt5Core_RCC_EXECUTABLE}
|
||||
PROPERTY IMPORTED_LOCATION
|
||||
)
|
||||
if( NOT _rcc_executable )
|
||||
# Weird, probably now uses Qt5::rcc which is wrong too
|
||||
set( _rcc_executable ${Qt5Core_RCC_EXECUTABLE} )
|
||||
endif()
|
||||
|
||||
# Try an empty RCC file with explicit format-version
|
||||
execute_process(
|
||||
COMMAND echo "<RCC version='1.0'></RCC>"
|
||||
COMMAND ${Qt5Core_RCC_EXECUTABLE} --format-version 1 --list -
|
||||
RESULT_VARIABLE _rcc_version_rv
|
||||
ERROR_VARIABLE _rcc_version_dump
|
||||
)
|
||||
if ( _rcc_version_rv EQUAL 0 )
|
||||
# Supported: force to the reproducible version
|
||||
set( _rcc_version_support --format-version 1 )
|
||||
else()
|
||||
# Older Qt versions (5.7, 5.8) don't support setting the
|
||||
# rcc format-version, so won't be reproducible if they
|
||||
# default to version 2.
|
||||
set( _rcc_version_support "" )
|
||||
endif()
|
||||
unset( _rcc_version_rv )
|
||||
unset( _rcc_version_dump )
|
||||
endif()
|
||||
|
||||
|
||||
# Internal macro for adding the C++ / Qt translations to the
|
||||
# build and install tree. Should be called only once, from
|
||||
# src/calamares/CMakeLists.txt.
|
||||
macro(add_calamares_translations language)
|
||||
list( APPEND CALAMARES_LANGUAGES ${ARGV} )
|
||||
|
||||
set( calamares_i18n_qrc_content "<!DOCTYPE RCC><RCC version=\"1.0\">\n" )
|
||||
|
||||
# calamares and qt language files
|
||||
set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}<qresource prefix=\"/lang\">\n" )
|
||||
foreach( lang ${CALAMARES_LANGUAGES} )
|
||||
foreach( tlsource "calamares_${lang}" "tz_${lang}" )
|
||||
if( EXISTS "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts" )
|
||||
set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}<file>${tlsource}.qm</file>\n" )
|
||||
list( APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts" )
|
||||
endif()
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}</qresource>\n" )
|
||||
set( calamares_i18n_qrc_content "${calamares_i18n_qrc_content}</RCC>\n" )
|
||||
|
||||
file( WRITE ${CMAKE_BINARY_DIR}/lang/calamares_i18n.qrc "${calamares_i18n_qrc_content}" )
|
||||
|
||||
qt5_add_translation(QM_FILES ${TS_FILES})
|
||||
|
||||
## HACK HACK HACK - around rcc limitations to allow out of source-tree building
|
||||
set( trans_file calamares_i18n )
|
||||
set( trans_srcfile ${CMAKE_BINARY_DIR}/lang/${trans_file}.qrc )
|
||||
set( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc )
|
||||
set( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx )
|
||||
|
||||
# Copy the QRC file to the output directory
|
||||
add_custom_command(
|
||||
OUTPUT ${trans_infile}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${trans_srcfile} ${trans_infile}
|
||||
MAIN_DEPENDENCY ${trans_srcfile}
|
||||
)
|
||||
|
||||
# Run the resource compiler (rcc_options should already be set)
|
||||
add_custom_command(
|
||||
OUTPUT ${trans_outfile}
|
||||
COMMAND "${Qt5Core_RCC_EXECUTABLE}"
|
||||
ARGS ${rcc_options} ${_rcc_version_support} -name ${trans_file} -o ${trans_outfile} ${trans_infile}
|
||||
MAIN_DEPENDENCY ${trans_infile}
|
||||
DEPENDS ${QM_FILES}
|
||||
)
|
||||
endmacro()
|
||||
|
||||
# Internal macro for Python translations
|
||||
#
|
||||
# Translations of the Python modules that don't have their own
|
||||
# lang/ subdirectories -- these are collected in top-level
|
||||
# lang/python/<lang>/LC_MESSAGES/python.mo
|
||||
macro(add_calamares_python_translations language)
|
||||
set( CALAMARES_LANGUAGES "" )
|
||||
list( APPEND CALAMARES_LANGUAGES ${ARGV} )
|
||||
|
||||
install_calamares_gettext_translations( python
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/lang/python
|
||||
FILENAME python.mo
|
||||
RENAME calamares-python.mo
|
||||
)
|
||||
endmacro()
|
||||
# The Gettext module is still old-fashioned, ALLCAPS variables
|
||||
find_package( Gettext )
|
||||
set_package_properties( GETTEXT PROPERTIES
|
||||
DESCRIPTION "GNU gettext (translation) tools."
|
||||
URL "https://www.gnu.org/software/gettext/"
|
||||
PURPOSE "Gettext is used in the translation of Python modules."
|
||||
TYPE REQUIRED
|
||||
)
|
||||
|
||||
# Installs a directory containing language-code-labeled subdirectories with
|
||||
# gettext data into the appropriate system directory. Allows renaming the
|
||||
@@ -151,31 +51,52 @@ function( install_calamares_gettext_translations )
|
||||
if( NOT TRANSLATION_RENAME )
|
||||
set( TRANSLATION_RENAME "${TRANSLATION_FILENAME}" )
|
||||
endif()
|
||||
string( REGEX REPLACE ".mo$" ".po" TRANSLATION_SOURCE_FILENAME "${TRANSLATION_FILENAME}" )
|
||||
|
||||
message(STATUS "Installing gettext translations for ${TRANSLATION_NAME}")
|
||||
message(STATUS " Installing ${TRANSLATION_FILENAME} from ${TRANSLATION_SOURCE_DIR}")
|
||||
if ( GETTEXT_FOUND AND GETTEXT_MSGFMT_EXECUTABLE )
|
||||
message( STATUS "Installing gettext translations for ${TRANSLATION_NAME}")
|
||||
message( STATUS " Installing ${TRANSLATION_FILENAME} from ${TRANSLATION_SOURCE_DIR}")
|
||||
else()
|
||||
message( WARNING "Gettext translations requested for ${TRANSLATION_NAME}, but gettext was not found." )
|
||||
return()
|
||||
endif()
|
||||
|
||||
set( TARGET_NAME calamares-gettext-translations-${NAME} )
|
||||
if( NOT TARGET "${TARGET_NAME}" )
|
||||
add_custom_target( "${TARGET_NAME}" ALL )
|
||||
endif()
|
||||
|
||||
set( TRANSLATION_NAME "${NAME}" )
|
||||
set( INSTALLED_TRANSLATIONS "" )
|
||||
foreach( lang ${CALAMARES_TRANSLATION_LANGUAGES} ) # Global
|
||||
set( lang_mo "${TRANSLATION_SOURCE_DIR}/${lang}/LC_MESSAGES/${TRANSLATION_FILENAME}" )
|
||||
string( MAKE_C_IDENTIFIER "${TARGET_NAME}-${lang}" TARGET_SUBNAME )
|
||||
|
||||
set( lang_po "${TRANSLATION_SOURCE_DIR}/${lang}/LC_MESSAGES/${TRANSLATION_SOURCE_FILENAME}" )
|
||||
set( lang_mo_dir "${CMAKE_BINARY_DIR}/lang/${lang}/LC_MESSAGES" )
|
||||
set( lang_mo "${lang_mo_dir}/${TRANSLATION_RENAME}" )
|
||||
if( lang STREQUAL "en" )
|
||||
message( STATUS " Skipping ${TRANSLATION_NAME} translations for en_US" )
|
||||
else( EXISTS ${lang_mo} )
|
||||
list( APPEND INSTALLED_LANGUAGES "${lang}" )
|
||||
else()
|
||||
# We **don't** use the gettext macro's here because the source
|
||||
# structure doesn't match: we are calling this once per language
|
||||
# for all of Calamares's languages, while the gettext module
|
||||
# expects it to be called once, for a given language source-dir.
|
||||
#
|
||||
# Using any of the gettext macros just gets us multiple rules
|
||||
# for python.gmo, and it wants to use msgmerge, besides, which
|
||||
# doesn't fit our Transifex workflow.
|
||||
make_directory( ${lang_mo_dir} )
|
||||
add_custom_command(
|
||||
OUTPUT ${lang_mo}
|
||||
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
|
||||
ARGS -o ${lang_mo} ${lang_po}
|
||||
MAIN_DEPENDENCY ${lang_po}
|
||||
)
|
||||
add_custom_target( "${TARGET_SUBNAME}" DEPENDS ${lang_mo} )
|
||||
add_dependencies( "${TARGET_NAME}" "${TARGET_SUBNAME}" )
|
||||
install(
|
||||
FILES ${lang_mo}
|
||||
DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${lang}/LC_MESSAGES/
|
||||
RENAME ${TRANSLATION_RENAME}
|
||||
)
|
||||
# TODO: make translations available in build dir too, for
|
||||
# translation when running calamares -d from builddir.
|
||||
set(_build_lc ${CMAKE_BINARY_DIR}/lang/${lang}/LC_MESSAGES/)
|
||||
file(COPY ${lang_mo} DESTINATION ${_build_lc})
|
||||
if (NOT TRANSLATION_FILENAME STREQUAL TRANSLATION_RENAME)
|
||||
file(RENAME ${_build_lc}${TRANSLATION_FILENAME} ${_build_lc}${TRANSLATION_RENAME})
|
||||
endif()
|
||||
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
@@ -1,34 +1,35 @@
|
||||
# === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# Calamares 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.
|
||||
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Calamares 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.
|
||||
# Calamares is Free Software: see the License-Identifier above.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0+
|
||||
# License-Filename: LICENSE
|
||||
#
|
||||
###
|
||||
#
|
||||
# Helper function for doing automoc on a target, and autoui on a .ui file.
|
||||
# Helper function for doing automoc, autouic, autorcc on targets,
|
||||
# and on the corresponding .ui or .rcc files.
|
||||
#
|
||||
# Sets AUTOMOC TRUE for a target.
|
||||
# calamares_automoc(target)
|
||||
# Sets AUTOMOC TRUE for a target.
|
||||
#
|
||||
# If the global variable CALAMARES_AUTOMOC_OPTIONS is set, uses that
|
||||
# as well to set options passed to MOC. This can be used to add
|
||||
# libcalamares/utils/moc-warnings.h file to the moc, which in turn
|
||||
# reduces compiler warnings in generated MOC code.
|
||||
# If the global variable CALAMARES_AUTOMOC_OPTIONS is set, uses that
|
||||
# as well to set options passed to MOC. This can be used to add
|
||||
# libcalamares/utils/moc-warnings.h file to the moc, which in turn
|
||||
# reduces compiler warnings in generated MOC code.
|
||||
#
|
||||
# If the global variable CALAMARES_AUTOUIC_OPTIONS is set, adds that
|
||||
# to the options passed to uic.
|
||||
# calamares_autouic(target [uifile ..])
|
||||
# Sets AUTOUIC TRUE for a target.
|
||||
#
|
||||
# If the global variable CALAMARES_AUTOUIC_OPTIONS is set, adds that
|
||||
# to the options passed to uic for each of the named uifiles.
|
||||
#
|
||||
# calamares_autorcc(target [rcfile ..])
|
||||
# Sets AUTOUIC TRUE for a target.
|
||||
#
|
||||
# If the global variable CALAMARES_AUTORCC_OPTIONS is set, adds that
|
||||
# to the options passed to rcc for each of the named rcfiles.
|
||||
|
||||
function(calamares_automoc TARGET)
|
||||
set_target_properties( ${TARGET} PROPERTIES AUTOMOC TRUE )
|
||||
@@ -45,3 +46,12 @@ function(calamares_autouic TARGET)
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(calamares_autorcc TARGET)
|
||||
set_target_properties( ${TARGET} PROPERTIES AUTORCC TRUE )
|
||||
if ( CALAMARES_AUTORCC_OPTIONS )
|
||||
foreach(S ${ARGN})
|
||||
set_property(SOURCE ${S} PROPERTY AUTORCC_OPTIONS "${CALAMARES_AUTORCC_OPTIONS}")
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction()
|
||||
|
116
CMakeModules/CalamaresCheckModuleSelection.cmake
Normal file
116
CMakeModules/CalamaresCheckModuleSelection.cmake
Normal file
@@ -0,0 +1,116 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Calamares is Free Software: see the License-Identifier above.
|
||||
#
|
||||
###
|
||||
#
|
||||
# This module implements the "skip modules" part of configuring
|
||||
# the Calamares repository or an external-modules repository.
|
||||
#
|
||||
# It should not be necessary to include() this module explicitly,
|
||||
# since both AddPlugin and AddModuleSubdirectory do so implicitly.
|
||||
#
|
||||
#
|
||||
# # Usage
|
||||
#
|
||||
# The public API is two functions:
|
||||
#
|
||||
# - calamares_skip_module(reason)
|
||||
# A C++ module (or any that uses CMake) can call this macro to
|
||||
# add *reason* to the list of skipped modules. Typically a module
|
||||
# will pass in "modulename (why)" so that it is clear **which**
|
||||
# module is skipped. This macro should be called at the top-level
|
||||
# of a module's CMakeLists.txt and the module should then **not**
|
||||
# call calamares_add_plugin().
|
||||
# - calamares_explain_skipped_modules(list...)
|
||||
# This will print out all the module reasons (see above) that have
|
||||
# been added to the given *listvar*. When AddModuleSubdirectory is
|
||||
# used as the mechanism to add all the subdirectories in the repository
|
||||
# that contain modules, with a consistent *listvar* setting,
|
||||
# this will show all the modules that have been skipped.
|
||||
#
|
||||
# The internal API is one function:
|
||||
#
|
||||
# - calamares_check_skip(modulename outvar)
|
||||
# Checks if the *modulename* has been listed in the global SKIP_MODULES
|
||||
# variable (to skip specifically-named modules) or if there is a USE_*
|
||||
# setting applicable to the module. If the module is skipped for this
|
||||
# reason, a suitable entry is added to *outvar* as if
|
||||
# calamares_skip_module() had been called.
|
||||
#
|
||||
# Best practice is to pick a variable to collect all of the skipped
|
||||
# modules, and to pass the name of that variable to AddModuleSubdirectory
|
||||
# in each call. After all subdirectories have been added, call
|
||||
# calamares_explain_skipped_modules() with the value of that variable.
|
||||
|
||||
|
||||
# Convenience function to indicate that a module has been skipped
|
||||
# (optionally also why). Call this in the module's CMakeLists.txt
|
||||
macro( calamares_skip_module )
|
||||
set( SKIPPED_MODULES ${SKIPPED_MODULES} ${ARGV} PARENT_SCOPE )
|
||||
endmacro()
|
||||
|
||||
function( calamares_explain_skipped_modules )
|
||||
if ( ARGN )
|
||||
message( "${ColorReset}-- Skipped modules:" )
|
||||
foreach( SUBDIRECTORY ${ARGN} )
|
||||
message( "${ColorReset}-- Skipped ${BoldRed}${SUBDIRECTORY}${ColorReset}." )
|
||||
endforeach()
|
||||
message( "" )
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Globally, SKIP_MODULES and USE_* affect what modules are built.
|
||||
# Check if *modulename* should be skipped, and if so, set *outvar* to
|
||||
# a human-readable reason for skipping it.
|
||||
function( _calamares_check_skip_impl modulename outvar )
|
||||
# Globally-defined SKIP_MODULES may be space- or semicolon- separated
|
||||
# so convert it to a list-variable.
|
||||
string( REPLACE " " ";" SKIP_LIST "${SKIP_MODULES}" )
|
||||
|
||||
list( FIND SKIP_LIST "${modulename}" DO_SKIP )
|
||||
if( NOT DO_SKIP EQUAL -1 )
|
||||
set( ${outvar} "user request" PARENT_SCOPE )
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Not skipped by the global check, see if it has an applicable USE_*
|
||||
if( "${modulename}" MATCHES "^[a-zA-Z0-9_]+-" )
|
||||
# Split the name into <category>-<implementation>
|
||||
string( REGEX REPLACE "-.*" "" _category "${modulename}" )
|
||||
string( REGEX REPLACE "^[^-]+-" "" _implementation "${modulename}" )
|
||||
else()
|
||||
# Not a module to which USE_* applies
|
||||
return()
|
||||
endif()
|
||||
|
||||
if( "${USE_${_category}}" STREQUAL "none" )
|
||||
set( ${outvar} "category ${_category} disabled" PARENT_SCOPE )
|
||||
return()
|
||||
elseif( "${USE_${_category}}" STREQUAL "" )
|
||||
# Category not set at all or nonexistent
|
||||
return()
|
||||
endif()
|
||||
|
||||
if ( "${USE_${_category}}" STREQUAL "${_implementation}" )
|
||||
# Matches, so accept this module
|
||||
else()
|
||||
set( ${outvar} "category ${_category} selects ${USE_${_category}}" PARENT_SCOPE )
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# This is the public API;it calls the _impl version so that there
|
||||
# is an extra intermediate scope for the subdirectory to write results into.
|
||||
function( calamares_check_skip modulename outvar )
|
||||
set( _skip "" )
|
||||
_calamares_check_skip_impl( "${modulename}" _skip )
|
||||
if ( _skip )
|
||||
message( "${ColorReset}-- Skipping module ${BoldRed}${modulename} (${_skip})${ColorReset}." )
|
||||
message( "" )
|
||||
set( ${outvar} "${modulename} (${_skip})" PARENT_SCOPE )
|
||||
endif()
|
||||
endfunction()
|
75
CMakeModules/ExtendedVersion.cmake
Normal file
75
CMakeModules/ExtendedVersion.cmake
Normal file
@@ -0,0 +1,75 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
###
|
||||
#
|
||||
# This file defines one function for extending a VERSION-like value
|
||||
# with date and git information (if desired).
|
||||
#
|
||||
# - extend_version( version-string short_only short_var long_var )
|
||||
# Calling this function will copy *version-string* (which would typically
|
||||
# be a semver-style string, like "3.2.40") into the variable *short_var*.
|
||||
# If *short_only* is true, then:
|
||||
# - the short version is also copied into the variable *long_var*,
|
||||
# If *short_only* is false, then:
|
||||
# - the *version-string* plus date and git information, is copied
|
||||
# into the varialbe *long_var*, in the format {version}-{date}-{hash}
|
||||
#
|
||||
#
|
||||
|
||||
function( get_git_version_info out_var )
|
||||
set(CMAKE_VERSION_SOURCE "")
|
||||
if(EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD)
|
||||
find_program(GIT_EXECUTABLE NAMES git git.cmd)
|
||||
mark_as_advanced(GIT_EXECUTABLE)
|
||||
if(GIT_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=8 HEAD
|
||||
OUTPUT_VARIABLE head
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
if(head)
|
||||
set(CMAKE_VERSION_SOURCE "${head}")
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} update-index -q --refresh
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
|
||||
OUTPUT_VARIABLE dirty
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
if(dirty)
|
||||
set(CMAKE_VERSION_SOURCE "${CMAKE_VERSION_SOURCE}-dirty")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
set( ${out_var} "${CMAKE_VERSION_SOURCE}" PARENT_SCOPE )
|
||||
endfunction()
|
||||
|
||||
function( extend_version version short_only short_var long_var )
|
||||
set( ${short_var} "${version}" PARENT_SCOPE )
|
||||
set( _v "${version}" )
|
||||
if ( NOT short_only )
|
||||
# Additional info for non-release builds which want "long" version info
|
||||
# with date and git information (commit, dirty status). That is used only
|
||||
# by CalamaresVersionX.h, which is included by consumers that need a full
|
||||
# version number with all that information; normal consumers can include
|
||||
# CalamaresVersion.h with more stable numbers.
|
||||
string( TIMESTAMP CALAMARES_VERSION_DATE "%Y%m%d" )
|
||||
if( CALAMARES_VERSION_DATE GREATER 0 )
|
||||
set( _v ${_v}.${CALAMARES_VERSION_DATE} )
|
||||
endif()
|
||||
get_git_version_info( _gitv )
|
||||
if( _gitv )
|
||||
set( _v "${_v}-${_gitv}" )
|
||||
endif()
|
||||
endif()
|
||||
set( ${long_var} "${_v}" PARENT_SCOPE )
|
||||
endfunction()
|
@@ -1,3 +1,11 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
###
|
||||
#
|
||||
# - Find libcrypt
|
||||
# Find the libcrypt includes and the libcrypt libraries
|
||||
# This module defines
|
||||
|
@@ -1,4 +1,5 @@
|
||||
# Copyright (C) 2008,2010,2011 by Volker Lanz <vl@fidra.de>
|
||||
# SPDX-FileCopyrightText: 2008,2010,2011 by Volker Lanz <vl@fidra.de>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
@@ -44,7 +45,7 @@ else (LIBPARTED_FS_RESIZE_LIBRARY)
|
||||
set(LIBPARTED_LIBS ${LIBPARTED_LIBRARY})
|
||||
endif (LIBPARTED_FS_RESIZE_LIBRARY)
|
||||
|
||||
# KDE adds -ansi to the C make flags, parted headers use GNU extensions, so
|
||||
# KDE adds -ansi to the C make flags, parted headers use GNU extensions, so
|
||||
# undo that
|
||||
unset(CMAKE_C_FLAGS)
|
||||
|
||||
|
@@ -1,3 +1,10 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
###
|
||||
#
|
||||
# Locate libpwquality
|
||||
# https://github.com/libpwquality/libpwquality
|
||||
#
|
||||
@@ -6,10 +13,16 @@
|
||||
# LibPWQuality_LIBRARIES, where to find the library
|
||||
# LibPWQuality_INCLUDE_DIRS, where to find pwquality.h
|
||||
#
|
||||
include(FindPkgConfig)
|
||||
find_package(PkgConfig)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
pkg_search_module(pc_pwquality QUIET pwquality)
|
||||
if(PkgConfig_FOUND)
|
||||
pkg_search_module(pc_pwquality QUIET pwquality)
|
||||
else()
|
||||
# It's just possible that the find_path and find_library will
|
||||
# find it **anyway**, so let's pretend it was there.
|
||||
set(pc_pwquality_FOUND ON)
|
||||
endif()
|
||||
|
||||
find_path(LibPWQuality_INCLUDE_DIR
|
||||
NAMES pwquality.h
|
||||
|
@@ -1,3 +1,11 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2016 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
###
|
||||
#
|
||||
# Find PythonQt
|
||||
#
|
||||
# Sets PYTHONQT_FOUND, PYTHONQT_INCLUDE_DIR, PYTHONQT_LIBRARY, PYTHONQT_LIBRARIES
|
||||
|
@@ -1,9 +1,19 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
###
|
||||
#
|
||||
# Locate yaml-cpp
|
||||
#
|
||||
# This module defines
|
||||
# YAMLCPP_FOUND, if false, do not try to link to yaml-cpp
|
||||
# YAMLCPP_LIBRARY, where to find yaml-cpp
|
||||
# YAMLCPP_INCLUDE_DIR, where to find yaml.h
|
||||
# YAMLCPP_FOUND, if false, do not try to link to yaml-cpp
|
||||
# YAMLCPP_LIBRARY, where to find yaml-cpp
|
||||
# YAMLCPP_INCLUDE_DIR, where to find yaml.h
|
||||
# There is also one IMPORTED library target,
|
||||
# yamlcpp::yamlcpp
|
||||
#
|
||||
# By default, the dynamic libraries of yaml-cpp will be found. To find the static ones instead,
|
||||
# you must set the YAMLCPP_STATIC_LIBRARY variable to TRUE before calling find_package(YamlCpp ...).
|
||||
@@ -11,6 +21,10 @@
|
||||
# If yaml-cpp is not installed in a standard path, you can use the YAMLCPP_DIR CMake variable
|
||||
# to tell CMake where yaml-cpp is.
|
||||
|
||||
if(TARGET yamlcpp::yamlcpp)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# attempt to find static library first if this is set
|
||||
if(YAMLCPP_STATIC_LIBRARY)
|
||||
set(YAMLCPP_STATIC libyaml-cpp.a)
|
||||
@@ -48,3 +62,12 @@ find_library(YAMLCPP_LIBRARY
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(YAMLCPP DEFAULT_MSG YAMLCPP_INCLUDE_DIR YAMLCPP_LIBRARY)
|
||||
mark_as_advanced(YAMLCPP_INCLUDE_DIR YAMLCPP_LIBRARY)
|
||||
|
||||
# Add an imported target
|
||||
if( YAMLCPP_LIBRARY )
|
||||
add_library( yamlcpp::yamlcpp UNKNOWN IMPORTED )
|
||||
set_property( TARGET yamlcpp::yamlcpp PROPERTY IMPORTED_LOCATION ${YAMLCPP_LIBRARY} )
|
||||
if ( YAMLCPP_INCLUDE_DIR )
|
||||
set_property( TARGET yamlcpp::yamlcpp PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${YAMLCPP_INCLUDE_DIR} )
|
||||
endif()
|
||||
endif()
|
||||
|
@@ -1,17 +0,0 @@
|
||||
# Shared CMake core for finding KPMCore
|
||||
#
|
||||
# This is wrapped into a CMake include file because there's a bunch of
|
||||
# pre-requisites that need searching for before looking for KPMCore.
|
||||
# If you just do find_package( KPMCore ) without finding the things
|
||||
# it links against first, you get CMake errors.
|
||||
#
|
||||
#
|
||||
find_package(ECM 5.10.0 REQUIRED NO_MODULE)
|
||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH})
|
||||
|
||||
include(KDEInstallDirs)
|
||||
include(GenerateExportHeader)
|
||||
find_package( KF5 REQUIRED CoreAddons )
|
||||
find_package( KF5 REQUIRED Config I18n Service WidgetsAddons )
|
||||
|
||||
find_package( KPMcore 3.2 REQUIRED )
|
39
CMakeModules/KPMcoreHelper.cmake
Normal file
39
CMakeModules/KPMcoreHelper.cmake
Normal file
@@ -0,0 +1,39 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
###
|
||||
#
|
||||
# Finds KPMcore and consistently sets API flags based on the version.
|
||||
#
|
||||
if ( NOT KPMcore_searched_for )
|
||||
set( KPMcore_searched_for TRUE )
|
||||
|
||||
find_package( KPMcore 3.3 )
|
||||
set_package_properties(
|
||||
KPMcore PROPERTIES
|
||||
URL "https://invent.kde.org/kde/kpmcore"
|
||||
DESCRIPTION "KDE Partitioning library"
|
||||
TYPE RECOMMENDED
|
||||
PURPOSE "For disk partitioning support"
|
||||
)
|
||||
|
||||
if( KPMcore_FOUND )
|
||||
set( KPMcore_API_DEFINITIONS "" )
|
||||
if( KPMcore_VERSION VERSION_GREATER "3.3.70" AND KPMcore_VERSION VERSION_LESS "4.0" )
|
||||
message( FATAL_ERROR "KPMCore beta versions ${KPMcore_VERSION} not supported" )
|
||||
endif()
|
||||
if ( KPMcore_VERSION VERSION_GREATER "3.3.0")
|
||||
list( APPEND KPMcore_API_DEFINITIONS WITH_KPMCORE331API) # kpmcore > 3.3.0 with deprecations
|
||||
endif()
|
||||
if ( KPMcore_VERSION VERSION_GREATER_EQUAL "4.0")
|
||||
list( APPEND KPMcore_API_DEFINITIONS WITH_KPMCORE4API) # kpmcore 4 with new API
|
||||
endif()
|
||||
if( KPMcore_VERSION VERSION_GREATER_EQUAL "4.2" )
|
||||
list( APPEND KPMcore_API_DEFINITIONS WITH_KPMCORE42API) # kpmcore 4.2 with new API
|
||||
endif()
|
||||
else()
|
||||
set( KPMcore_API_DEFINITIONS WITHOUT_KPMcore )
|
||||
endif()
|
||||
endif()
|
121
CONTRIBUTING.md
Normal file
121
CONTRIBUTING.md
Normal file
@@ -0,0 +1,121 @@
|
||||
<!-- SPDX-FileCopyrightText: no
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
-->
|
||||
|
||||
# Contributing to Calamares
|
||||
|
||||
Welcome to Calamares! We're happy that you would like to add
|
||||
something to Calamares. This contribution guide should help you
|
||||
get started. The guide is not exhaustive: most of it points
|
||||
to other documents that you will need.
|
||||
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
The Calamares community -- of developers, translators, and downstream (distro) users --
|
||||
aims to be courteous, professional, and inclusive. Harrassment, discriminatory
|
||||
statements and abuse are not tolerated. In general, we apply the
|
||||
[KDE Code of Conduct](https://www.kde.org/code-of-conduct/) and the
|
||||
[GNOME Code of Conduct](https://wiki.gnome.org/Foundation/CodeOfConduct) (the
|
||||
rules of decent behavior in both communities are pretty much the same).
|
||||
|
||||
> See the [CoC section on the wiki](https://github.com/calamares/calamares/wiki#code-of-conduct)
|
||||
> for a longer text. To report a problem, please contact the maintainer,
|
||||
> Adriaan de Groot, or the KDE Community Working Group.
|
||||
|
||||
|
||||
## Join the Conversation
|
||||
|
||||
GitHub Issues are **one** place for discussing Calamares if there are concrete
|
||||
problems or a new feature to discuss.
|
||||
|
||||
Regular Calamares development chit-chat happens in a [Matrix](https://matrix.org/)
|
||||
room, `#calamares:kde.org`. The conversation is bridged with IRC
|
||||
on [Libera.Chat](https://libera.chat/).
|
||||
Responsiveness is best during the day
|
||||
in Europe, but feel free to idle. If you use IRC, **DO NOT** ask-and-leave. Keep
|
||||
that chat window open because it can easily take a few hours for
|
||||
someone to notice a message.
|
||||
Matrix is persistent, and we'll see your message eventually.
|
||||
|
||||
* [](https://webchat.kde.org/#/room/%23calamares:kde.org)
|
||||
* [](https://kiwiirc.com/client/irc.libera.chat/#calamares)
|
||||
|
||||
|
||||
## General Guidelines
|
||||
|
||||
Pull Requests are welcome!
|
||||
|
||||
It is often a good idea to start a Pull Request early, with just work-in-progress,
|
||||
so that the overall approach can be discussed before you put a lot of work
|
||||
into something. Or file an issue describing what you would like to do.
|
||||
|
||||
If you are writing code, stick to the existing coding style and apply
|
||||
the coding-style tool before you commit. It's not my favorite style,
|
||||
but at least all of Calamares is consistent and the tool helps it
|
||||
stay that way.
|
||||
|
||||
If you are writing documentation, use *en_US* spelling.
|
||||
|
||||
If you are doing cool stuff, let us know (on IRC or through issues).
|
||||
|
||||
**Do** fork Calamares to try new things, **don't** keep your fork to
|
||||
yourself, **do** upstream things as much as you can. When you make cool
|
||||
new things, it's best for the whole Calamares-using-community
|
||||
to build new things that are configurable and applicable to other
|
||||
distributions than your own. So keep other folk in mind. There is
|
||||
also the [extensions](https://github.com/calamares/calamares-extensions)
|
||||
repository for somewhat-more-specialized modules and examples.
|
||||
|
||||
|
||||
## Building Calamares
|
||||
|
||||
Up to date
|
||||
[building-Calamares](https://github.com/calamares/calamares/wiki/Develop-Guide)
|
||||
instructions are on the wiki.
|
||||
|
||||
### Dependencies
|
||||
|
||||
Main:
|
||||
* Compiler with C++17 support: GCC >= 7 or Clang >= 5
|
||||
* CMake >= 3.3
|
||||
* Qt >= 5.9
|
||||
* yaml-cpp >= 0.5.1
|
||||
* Python >= 3.3 (required for some modules)
|
||||
* Boost.Python >= 1.55.0 (required for some modules)
|
||||
* KDE extra-cmake-modules >= 5.18 (recommended; required for some modules;
|
||||
required for some tests)
|
||||
* KDE Frameworks KCoreAddons (>= 5.58 recommended)
|
||||
* PythonQt (optional, deprecated)
|
||||
|
||||
Individual modules may have their own requirements;
|
||||
these are listed in CMake output.
|
||||
Particular requirements (not complete):
|
||||
|
||||
* *fsresizer* KPMCore >= 3.3 (>= 4.2 recommended)
|
||||
* *partition* KPMCore >= 3.3 (>= 4.2 recommended)
|
||||
* *users* LibPWQuality (optional)
|
||||
|
||||
|
||||
## Configuring and Deploying Calamares
|
||||
|
||||
[Deployment](https://github.com/calamares/calamares/wiki/Deploy-Guide)
|
||||
instructions are on the wiki.
|
||||
|
||||
|
||||
## Translating Calamares
|
||||
|
||||
Calamares translations are done on Transifex.
|
||||
The [translator's guide](https://github.com/calamares/calamares/wiki/Translate-Guide)
|
||||
on the wiki explains how to get involved there.
|
||||
|
||||
|
||||
## Testing Calamares
|
||||
|
||||
There is a [testing guide](https://github.com/calamares/calamares/wiki/Test-Guide)
|
||||
on the wiki. It is possible to test most parts of Calamares in isolation,
|
||||
but the real proof of the pudding comes with an actual installation
|
||||
of *some* distro using Calamares.
|
||||
|
||||
The UI components should get some specific usability testing instructions soon.
|
||||
|
@@ -1,4 +0,0 @@
|
||||
set(CALAMARES_INCLUDE_DIRS
|
||||
"@PROJECT_SOURCE_DIR@/src/libcalamares"
|
||||
"@PROJECT_BINARY_DIR@/src/libcalamares"
|
||||
)
|
@@ -1,32 +1,91 @@
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Note that Calamares itself is GPL-3.0-or-later: the above license
|
||||
# applies to **this** CMake file.
|
||||
#
|
||||
# Config file for the Calamares package
|
||||
#
|
||||
# It defines the following variables
|
||||
# CALAMARES_INCLUDE_DIRS - include directories for Calamares
|
||||
# CALAMARES_LIBRARIES - libraries to link against
|
||||
# CALAMARES_USE_FILE - name of a convenience include
|
||||
# CALAMARES_APPLICATION_NAME - human-readable application name
|
||||
#
|
||||
# Typical use is:
|
||||
#
|
||||
# find_package(Calamares REQUIRED)
|
||||
# include("${CALAMARES_USE_FILE}")
|
||||
# The following IMPORTED targets are defined:
|
||||
# - Calamares::calamares - the core library
|
||||
# - Calamares::calamaresui - the UI (and QML) library
|
||||
#
|
||||
# For legacy use it defines the following variables:
|
||||
# - Calamares_INCLUDE_DIRS - include directories for Calamares
|
||||
# - Calamares_LIB_DIRS - library directories
|
||||
# - Calamares_LIBRARIES - libraries to link against
|
||||
|
||||
# Compute paths
|
||||
get_filename_component(CALAMARES_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
if(EXISTS "${CALAMARES_CMAKE_DIR}/CMakeCache.txt")
|
||||
# In build tree
|
||||
include("${CALAMARES_CMAKE_DIR}/CalamaresBuildTreeSettings.cmake")
|
||||
else()
|
||||
set(CALAMARES_INCLUDE_DIRS "${CALAMARES_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@/libcalamares")
|
||||
@PACKAGE_INIT@
|
||||
|
||||
### Versioning and IMPORTED targets
|
||||
#
|
||||
#
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/CalamaresConfigVersion.cmake)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/CalamaresTargets.cmake)
|
||||
if (NOT TARGET Calamares::calamares OR NOT TARGET Calamares::calamaresui)
|
||||
message(FATAL_ERROR "Calamares found with missing CMake targets")
|
||||
endif()
|
||||
|
||||
# Our library dependencies (contains definitions for IMPORTED targets)
|
||||
include("${CALAMARES_CMAKE_DIR}/CalamaresLibraryDepends.cmake")
|
||||
# Need various CMake files that are installed alongside this one.
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
# These are IMPORTED targets created by CalamaresLibraryDepends.cmake
|
||||
set(CALAMARES_LIBRARIES calamares)
|
||||
### Dependencies
|
||||
#
|
||||
# The libraries can depend on a variety of Qt and KDE Frameworks
|
||||
# components, so accumulate them and find (just once).
|
||||
#
|
||||
macro(accumulate_deps outvar target namespace)
|
||||
string(LENGTH ${namespace} _nslen)
|
||||
get_target_property(_libs ${target} INTERFACE_LINK_LIBRARIES)
|
||||
foreach(_lib ${_libs})
|
||||
if (_lib MATCHES ^${namespace})
|
||||
string(SUBSTRING ${_lib} ${_nslen} -1 _component)
|
||||
list(APPEND ${outvar} ${_component})
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
# Convenience variables
|
||||
set(CALAMARES_USE_FILE "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake")
|
||||
set(CALAMARES_APPLICATION_NAME "Calamares")
|
||||
# Qt5 infrastructure for translations is required
|
||||
set(qt5_required Core Widgets LinguistTools)
|
||||
accumulate_deps(qt5_required Calamares::calamares Qt5::)
|
||||
accumulate_deps(qt5_required Calamares::calamaresui Qt5::)
|
||||
find_package(Qt5 CONFIG REQUIRED ${qt5_required})
|
||||
|
||||
set(kf5_required "")
|
||||
accumulate_deps(kf5_required Calamares::calamares KF5::)
|
||||
accumulate_deps(kf5_required Calamares::calamaresui KF5::)
|
||||
if(kf5_required)
|
||||
find_package(ECM ${ECM_VERSION} NO_MODULE)
|
||||
if( ECM_FOUND )
|
||||
list(INSERT CMAKE_MODULE_PATH 0 ${ECM_MODULE_PATH})
|
||||
find_package(KF5 REQUIRED COMPONENTS ${kf5_required})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(YAMLCPP REQUIRED)
|
||||
|
||||
### Legacy support
|
||||
#
|
||||
#
|
||||
set(Calamares_LIB_DIRS "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
|
||||
set(Calamares_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
|
||||
set(Calamares_LIBRARIES Calamares::calamares)
|
||||
|
||||
### CMake support
|
||||
#
|
||||
#
|
||||
include(CalamaresAddBrandingSubdirectory)
|
||||
include(CalamaresAddLibrary)
|
||||
include(CalamaresAddModuleSubdirectory)
|
||||
include(CalamaresAddPlugin)
|
||||
|
||||
# These are feature-settings that affect consumers of Calamares
|
||||
# libraries as well; without Python-support in the libs, for instance,
|
||||
# there's no point in having a Python plugin.
|
||||
#
|
||||
# This list should match the one in libcalamares/CalamaresConfig.h,
|
||||
# which is the C++-language side of the same configuration.
|
||||
set(Calamares_WITH_PYTHON @WITH_PYTHON@)
|
||||
set(Calamares_WITH_PYTHONQT @WITH_PYTHONQT@)
|
||||
set(Calamares_WITH_QML @WITH_QML@)
|
||||
|
@@ -1,12 +0,0 @@
|
||||
set(PACKAGE_VERSION "@CALAMARES_VERSION@")
|
||||
|
||||
# Check whether the requested PACKAGE_FIND_VERSION is compatible
|
||||
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
else()
|
||||
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
|
||||
set(PACKAGE_VERSION_EXACT TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
@@ -1,29 +0,0 @@
|
||||
# A setup-cmake-things-for-Calamares module.
|
||||
#
|
||||
# This module handles looking for dependencies and including
|
||||
# all of the Calamares macro modules, so that you can focus
|
||||
# on just using the macros to build Calamares modules.
|
||||
# Typical use looks like this:
|
||||
#
|
||||
# ```
|
||||
# find_package( Calamares REQUIRED )
|
||||
# include( "${CALAMARES_CMAKE_DIR}/CalamaresUse.cmake" )
|
||||
# ```
|
||||
#
|
||||
# The first CMake command finds Calamares (which will contain
|
||||
# this file), then adds the found location to the search path,
|
||||
# and then includes this file. After that, you can use
|
||||
# Calamares module and plugin macros.
|
||||
|
||||
if( NOT CALAMARES_CMAKE_DIR )
|
||||
message( FATAL_ERROR "Use find_package(Calamares) first." )
|
||||
endif()
|
||||
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CALAMARES_CMAKE_DIR} )
|
||||
|
||||
find_package( Qt5 @QT_VERSION@ CONFIG REQUIRED Core Widgets LinguistTools )
|
||||
|
||||
include( CalamaresAddLibrary )
|
||||
include( CalamaresAddModuleSubdirectory )
|
||||
include( CalamaresAddPlugin )
|
||||
include( CalamaresAddBrandingSubdirectory )
|
||||
|
@@ -1,2 +0,0 @@
|
||||
FROM kdeneon/all:user
|
||||
RUN sudo apt-get update && sudo apt-get -y install build-essential cmake extra-cmake-modules gettext kio-dev libatasmart-dev libboost-python-dev libkf5config-dev libkf5coreaddons-dev libkf5i18n-dev libkf5iconthemes-dev libkf5parts-dev libkf5service-dev libkf5solid-dev libkpmcore-dev libparted-dev libpolkit-qt5-1-dev libqt5svg5-dev libqt5webkit5-dev libyaml-cpp-dev os-prober pkg-config python3-dev qtbase5-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools
|
24
LICENSES/BSD-2-Clause.txt
Normal file
24
LICENSES/BSD-2-Clause.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
Copyright 2019 Adriaan de Groot <groot@kde.org>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
@@ -1,49 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
324
LICENSES/CC-BY-4.0.txt
Normal file
324
LICENSES/CC-BY-4.0.txt
Normal file
@@ -0,0 +1,324 @@
|
||||
Creative Commons Attribution 4.0 International Creative Commons Corporation
|
||||
("Creative Commons") is not a law firm and does not provide legal services
|
||||
or legal advice. Distribution of Creative Commons public licenses does not
|
||||
create a lawyer-client or other relationship. Creative Commons makes its licenses
|
||||
and related information available on an "as-is" basis. Creative Commons gives
|
||||
no warranties regarding its licenses, any material licensed under their terms
|
||||
and conditions, or any related information. Creative Commons disclaims all
|
||||
liability for damages resulting from their use to the fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and conditions
|
||||
that creators and other rights holders may use to share original works of
|
||||
authorship and other material subject to copyright and certain other rights
|
||||
specified in the public license below. The following considerations are for
|
||||
informational purposes only, are not exhaustive, and do not form part of our
|
||||
licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are intended for use by
|
||||
those authorized to give the public permission to use material in ways otherwise
|
||||
restricted by copyright and certain other rights. Our licenses are irrevocable.
|
||||
Licensors should read and understand the terms and conditions of the license
|
||||
they choose before applying it. Licensors should also secure all rights necessary
|
||||
before applying our licenses so that the public can reuse the material as
|
||||
expected. Licensors should clearly mark any material not subject to the license.
|
||||
This includes other CC-licensed material, or material used under an exception
|
||||
or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public licenses, a licensor
|
||||
grants the public permission to use the licensed material under specified
|
||||
terms and conditions. If the licensor's permission is not necessary for any
|
||||
reason–for example, because of any applicable exception or limitation to copyright–then
|
||||
that use is not regulated by the license. Our licenses grant only permissions
|
||||
under copyright and certain other rights that a licensor has authority to
|
||||
grant. Use of the licensed material may still be restricted for other reasons,
|
||||
including because others have copyright or other rights in the material. A
|
||||
licensor may make special requests, such as asking that all changes be marked
|
||||
or described. Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations for the public
|
||||
: wiki.creativecommons.org/Considerations_for_licensees Creative Commons Attribution
|
||||
4.0 International Public License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree to
|
||||
be bound by the terms and conditions of this Creative Commons Attribution
|
||||
4.0 International Public License ("Public License"). To the extent this Public
|
||||
License may be interpreted as a contract, You are granted the Licensed Rights
|
||||
in consideration of Your acceptance of these terms and conditions, and the
|
||||
Licensor grants You such rights in consideration of benefits the Licensor
|
||||
receives from making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
Section 1 – Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar Rights
|
||||
that is derived from or based upon the Licensed Material and in which the
|
||||
Licensed Material is translated, altered, arranged, transformed, or otherwise
|
||||
modified in a manner requiring permission under the Copyright and Similar
|
||||
Rights held by the Licensor. For purposes of this Public License, where the
|
||||
Licensed Material is a musical work, performance, or sound recording, Adapted
|
||||
Material is always produced where the Licensed Material is synched in timed
|
||||
relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright and Similar
|
||||
Rights in Your contributions to Adapted Material in accordance with the terms
|
||||
and conditions of this Public License.
|
||||
|
||||
c. Copyright and Similar Rights means copyright and/or similar rights closely
|
||||
related to copyright including, without limitation, performance, broadcast,
|
||||
sound recording, and Sui Generis Database Rights, without regard to how the
|
||||
rights are labeled or categorized. For purposes of this Public License, the
|
||||
rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
||||
|
||||
d. Effective Technological Measures means those measures that, in the absence
|
||||
of proper authority, may not be circumvented under laws fulfilling obligations
|
||||
under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996,
|
||||
and/or similar international agreements.
|
||||
|
||||
e. Exceptions and Limitations means fair use, fair dealing, and/or any other
|
||||
exception or limitation to Copyright and Similar Rights that applies to Your
|
||||
use of the Licensed Material.
|
||||
|
||||
f. Licensed Material means the artistic or literary work, database, or other
|
||||
material to which the Licensor applied this Public License.
|
||||
|
||||
g. Licensed Rights means the rights granted to You subject to the terms and
|
||||
conditions of this Public License, which are limited to all Copyright and
|
||||
Similar Rights that apply to Your use of the Licensed Material and that the
|
||||
Licensor has authority to license.
|
||||
|
||||
h. Licensor means the individual(s) or entity(ies) granting rights under this
|
||||
Public License.
|
||||
|
||||
i. Share means to provide material to the public by any means or process that
|
||||
requires permission under the Licensed Rights, such as reproduction, public
|
||||
display, public performance, distribution, dissemination, communication, or
|
||||
importation, and to make material available to the public including in ways
|
||||
that members of the public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
j. Sui Generis Database Rights means rights other than copyright resulting
|
||||
from Directive 96/9/EC of the European Parliament and of the Council of 11
|
||||
March 1996 on the legal protection of databases, as amended and/or succeeded,
|
||||
as well as other essentially equivalent rights anywhere in the world.
|
||||
|
||||
k. You means the individual or entity exercising the Licensed Rights under
|
||||
this Public License. Your has a corresponding meaning.
|
||||
|
||||
Section 2 – Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License, the Licensor
|
||||
hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive,
|
||||
irrevocable license to exercise the Licensed Rights in the Licensed Material
|
||||
to:
|
||||
|
||||
A. reproduce and Share the Licensed Material, in whole or in part; and
|
||||
|
||||
B. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions
|
||||
and Limitations apply to Your use, this Public License does not apply, and
|
||||
You do not need to comply with its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section 6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The Licensor authorizes
|
||||
You to exercise the Licensed Rights in all media and formats whether now known
|
||||
or hereafter created, and to make technical modifications necessary to do
|
||||
so. The Licensor waives and/or agrees not to assert any right or authority
|
||||
to forbid You from making technical modifications necessary to exercise the
|
||||
Licensed Rights, including technical modifications necessary to circumvent
|
||||
Effective Technological Measures. For purposes of this Public License, simply
|
||||
making modifications authorized by this Section 2(a)(4) never produces Adapted
|
||||
Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed
|
||||
Material automatically receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this Public License.
|
||||
|
||||
B. No downstream restrictions. You may not offer or impose any additional
|
||||
or different terms or conditions on, or apply any Effective Technological
|
||||
Measures to, the Licensed Material if doing so restricts exercise of the Licensed
|
||||
Rights by any recipient of the Licensed Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or may be construed
|
||||
as permission to assert or imply that You are, or that Your use of the Licensed
|
||||
Material is, connected with, or sponsored, endorsed, or granted official status
|
||||
by, the Licensor or others designated to receive attribution as provided in
|
||||
Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not licensed under this
|
||||
Public License, nor are publicity, privacy, and/or other similar personality
|
||||
rights; however, to the extent possible, the Licensor waives and/or agrees
|
||||
not to assert any such rights held by the Licensor to the limited extent necessary
|
||||
to allow You to exercise the Licensed Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to collect royalties
|
||||
from You for the exercise of the Licensed Rights, whether directly or through
|
||||
a collecting society under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly reserves any right
|
||||
to collect such royalties.
|
||||
|
||||
Section 3 – License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the following
|
||||
conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified form), You must:
|
||||
|
||||
A. retain the following if it is supplied by the Licensor with the Licensed
|
||||
Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed Material and any others
|
||||
designated to receive attribution, in any reasonable manner requested by the
|
||||
Licensor (including by pseudonym if designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
|
||||
|
||||
B. indicate if You modified the Licensed Material and retain an indication
|
||||
of any previous modifications; and
|
||||
|
||||
C. indicate the Licensed Material is licensed under this Public License, and
|
||||
include the text of, or the URI or hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner
|
||||
based on the medium, means, and context in which You Share the Licensed Material.
|
||||
For example, it may be reasonable to satisfy the conditions by providing a
|
||||
URI or hyperlink to a resource that includes the required information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the information required
|
||||
by Section 3(a)(1)(A) to the extent reasonably practicable.
|
||||
|
||||
4. If You Share Adapted Material You produce, the Adapter's License You apply
|
||||
must not prevent recipients of the Adapted Material from complying with this
|
||||
Public License.
|
||||
|
||||
Section 4 – Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that apply to
|
||||
Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract,
|
||||
reuse, reproduce, and Share all or a substantial portion of the contents of
|
||||
the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database contents in
|
||||
a database in which You have Sui Generis Database Rights, then the database
|
||||
in which You have Sui Generis Database Rights (but not its individual contents)
|
||||
is Adapted Material; and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share all or
|
||||
a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not replace
|
||||
Your obligations under this Public License where the Licensed Rights include
|
||||
other Copyright and Similar Rights.
|
||||
|
||||
Section 5 – Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. Unless otherwise separately undertaken by the Licensor, to the extent possible,
|
||||
the Licensor offers the Licensed Material as-is and as-available, and makes
|
||||
no representations or warranties of any kind concerning the Licensed Material,
|
||||
whether express, implied, statutory, or other. This includes, without limitation,
|
||||
warranties of title, merchantability, fitness for a particular purpose, non-infringement,
|
||||
absence of latent or other defects, accuracy, or the presence or absence of
|
||||
errors, whether or not known or discoverable. Where disclaimers of warranties
|
||||
are not allowed in full or in part, this disclaimer may not apply to You.
|
||||
|
||||
b. To the extent possible, in no event will the Licensor be liable to You
|
||||
on any legal theory (including, without limitation, negligence) or otherwise
|
||||
for any direct, special, indirect, incidental, consequential, punitive, exemplary,
|
||||
or other losses, costs, expenses, or damages arising out of this Public License
|
||||
or use of the Licensed Material, even if the Licensor has been advised of
|
||||
the possibility of such losses, costs, expenses, or damages. Where a limitation
|
||||
of liability is not allowed in full or in part, this limitation may not apply
|
||||
to You.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided above
|
||||
shall be interpreted in a manner that, to the extent possible, most closely
|
||||
approximates an absolute disclaimer and waiver of all liability.
|
||||
|
||||
Section 6 – Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and Similar Rights
|
||||
licensed here. However, if You fail to comply with this Public License, then
|
||||
Your rights under this Public License terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under Section
|
||||
6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided it is cured
|
||||
within 30 days of Your discovery of the violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
c. For the avoidance of doubt, this Section 6(b) does not affect any right
|
||||
the Licensor may have to seek remedies for Your violations of this Public
|
||||
License.
|
||||
|
||||
d. For the avoidance of doubt, the Licensor may also offer the Licensed Material
|
||||
under separate terms or conditions or stop distributing the Licensed Material
|
||||
at any time; however, doing so will not terminate this Public License.
|
||||
|
||||
e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
|
||||
|
||||
Section 7 – Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different terms or
|
||||
conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the Licensed
|
||||
Material not stated herein are separate from and independent of the terms
|
||||
and conditions of this Public License.
|
||||
|
||||
Section 8 – Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and shall not
|
||||
be interpreted to, reduce, limit, restrict, or impose conditions on any use
|
||||
of the Licensed Material that could lawfully be made without permission under
|
||||
this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is deemed
|
||||
unenforceable, it shall be automatically reformed to the minimum extent necessary
|
||||
to make it enforceable. If the provision cannot be reformed, it shall be severed
|
||||
from this Public License without affecting the enforceability of the remaining
|
||||
terms and conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no failure
|
||||
to comply consented to unless expressly agreed to by the Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted as a limitation
|
||||
upon, or waiver of, any privileges and immunities that apply to the Licensor
|
||||
or You, including from the legal processes of any jurisdiction or authority.
|
||||
|
||||
Creative Commons is not a party to its public licenses. Notwithstanding, Creative
|
||||
Commons may elect to apply one of its public licenses to material it publishes
|
||||
and in those instances will be considered the "Licensor." The text of the
|
||||
Creative Commons public licenses is dedicated to the public domain under the
|
||||
CC0 Public Domain Dedication. Except for the limited purpose of indicating
|
||||
that material is shared under a Creative Commons public license or as otherwise
|
||||
permitted by the Creative Commons policies published at creativecommons.org/policies,
|
||||
Creative Commons does not authorize the use of the trademark "Creative Commons"
|
||||
or any other trademark or logo of Creative Commons without its prior written
|
||||
consent including, without limitation, in connection with any unauthorized
|
||||
modifications to any of its public licenses or any other arrangements, understandings,
|
||||
or agreements concerning use of licensed material. For the avoidance of doubt,
|
||||
this paragraph does not form part of the public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
119
LICENSES/CC0-1.0.txt
Normal file
119
LICENSES/CC0-1.0.txt
Normal file
@@ -0,0 +1,119 @@
|
||||
Creative Commons Legal Code
|
||||
|
||||
CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
|
||||
NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
|
||||
AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
|
||||
ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
|
||||
OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
|
||||
LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
|
||||
OR WORKS PROVIDED HEREUNDER.
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer exclusive
|
||||
Copyright and Related Rights (defined below) upon the creator and subsequent
|
||||
owner(s) (each and all, an "owner") of an original work of authorship and/or
|
||||
a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for the
|
||||
purpose of contributing to a commons of creative, cultural and scientific
|
||||
works ("Commons") that the public can reliably and without fear of later claims
|
||||
of infringement build upon, modify, incorporate in other works, reuse and
|
||||
redistribute as freely as possible in any form whatsoever and for any purposes,
|
||||
including without limitation commercial purposes. These owners may contribute
|
||||
to the Commons to promote the ideal of a free culture and the further production
|
||||
of creative, cultural and scientific works, or to gain reputation or greater
|
||||
distribution for their Work in part through the use and efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any expectation
|
||||
of additional consideration or compensation, the person associating CC0 with
|
||||
a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
|
||||
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
|
||||
and publicly distribute the Work under its terms, with knowledge of his or
|
||||
her Copyright and Related Rights in the Work and the meaning and intended
|
||||
legal effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be protected
|
||||
by copyright and related or neighboring rights ("Copyright and Related Rights").
|
||||
Copyright and Related Rights include, but are not limited to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display, communicate,
|
||||
and translate a Work;
|
||||
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
|
||||
iii. publicity and privacy rights pertaining to a person's image or likeness
|
||||
depicted in a Work;
|
||||
|
||||
iv. rights protecting against unfair competition in regards to a Work, subject
|
||||
to the limitations in paragraph 4(a), below;
|
||||
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||
in a Work;
|
||||
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal protection
|
||||
of databases, and under any national implementation thereof, including any
|
||||
amended or successor version of such directive); and
|
||||
|
||||
vii. other similar, equivalent or corresponding rights throughout the world
|
||||
based on applicable law or treaty, and any national implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention of,
|
||||
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
|
||||
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
|
||||
and Related Rights and associated claims and causes of action, whether now
|
||||
known or unknown (including existing as well as future claims and causes of
|
||||
action), in the Work (i) in all territories worldwide, (ii) for the maximum
|
||||
duration provided by applicable law or treaty (including future time extensions),
|
||||
(iii) in any current or future medium and for any number of copies, and (iv)
|
||||
for any purpose whatsoever, including without limitation commercial, advertising
|
||||
or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
|
||||
benefit of each member of the public at large and to the detriment of Affirmer's
|
||||
heirs and successors, fully intending that such Waiver shall not be subject
|
||||
to revocation, rescission, cancellation, termination, or any other legal or
|
||||
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||
as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason be
|
||||
judged legally invalid or ineffective under applicable law, then the Waiver
|
||||
shall be preserved to the maximum extent permitted taking into account Affirmer's
|
||||
express Statement of Purpose. In addition, to the extent the Waiver is so
|
||||
judged Affirmer hereby grants to each affected person a royalty-free, non
|
||||
transferable, non sublicensable, non exclusive, irrevocable and unconditional
|
||||
license to exercise Affirmer's Copyright and Related Rights in the Work (i)
|
||||
in all territories worldwide, (ii) for the maximum duration provided by applicable
|
||||
law or treaty (including future time extensions), (iii) in any current or
|
||||
future medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||
including without limitation commercial, advertising or promotional purposes
|
||||
(the "License"). The License shall be deemed effective as of the date CC0
|
||||
was applied by Affirmer to the Work. Should any part of the License for any
|
||||
reason be judged legally invalid or ineffective under applicable law, such
|
||||
partial invalidity or ineffectiveness shall not invalidate the remainder of
|
||||
the License, and in such case Affirmer hereby affirms that he or she will
|
||||
not (i) exercise any of his or her remaining Copyright and Related Rights
|
||||
in the Work or (ii) assert any associated claims and causes of action with
|
||||
respect to the Work, in either case contrary to Affirmer's express Statement
|
||||
of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
|
||||
licensed or otherwise affected by this document.
|
||||
|
||||
b. Affirmer offers the Work as-is and makes no representations or warranties
|
||||
of any kind concerning the Work, express, implied, statutory or otherwise,
|
||||
including without limitation warranties of title, merchantability, fitness
|
||||
for a particular purpose, non infringement, or the absence of latent or other
|
||||
defects, accuracy, or the present or absence of errors, whether or not discoverable,
|
||||
all to the greatest extent permissible under applicable law.
|
||||
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without limitation
|
||||
any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
|
||||
responsibility for obtaining any necessary consents, permissions or other
|
||||
rights required for any use of the Work.
|
||||
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a party
|
||||
to this document and has no duty or obligation with respect to this CC0 or
|
||||
use of the Work.
|
@@ -1,383 +0,0 @@
|
||||
Unless otherwise *explicitly* stated the following text describes the
|
||||
licensed conditions under which the contents of this libpwquality release
|
||||
may be distributed:
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
Redistribution and use in source and binary forms of libpwquality, with
|
||||
or without modification, are permitted provided that the following
|
||||
conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain any existing copyright
|
||||
notice, and this entire permission notice in its entirety,
|
||||
including the disclaimer of warranties.
|
||||
|
||||
2. Redistributions in binary form must reproduce all prior and current
|
||||
copyright notices, this list of conditions, and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
3. The name of any author may not be used to endorse or promote
|
||||
products derived from this software without their specific prior
|
||||
written permission.
|
||||
|
||||
ALTERNATIVELY, this product may be distributed under the terms of the
|
||||
GNU General Public License version 2 or later, in which case the provisions
|
||||
of the GNU GPL are required INSTEAD OF the above restrictions.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGE.
|
||||
|
||||
The full text of the GNU GENERAL PUBLIC LICENSE Version 2 is included
|
||||
below.
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
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
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
@@ -1,16 +0,0 @@
|
||||
/*
|
||||
* Copyright 2012, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
467
LICENSES/LGPL-2.1-only.txt
Normal file
467
LICENSES/LGPL-2.1-only.txt
Normal file
@@ -0,0 +1,467 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this license
|
||||
document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts as the
|
||||
successor of the GNU Library Public License, version 2, hence the version
|
||||
number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your freedom to share
|
||||
and change it. By contrast, the GNU General Public Licenses are intended to
|
||||
guarantee your freedom to share and change free software--to make sure the
|
||||
software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some specially
|
||||
designated software packages--typically libraries--of the Free Software Foundation
|
||||
and other authors who decide to use it. You can use it too, but we suggest
|
||||
you first think carefully about whether this license or the ordinary General
|
||||
Public License is the better strategy to use in any particular case, based
|
||||
on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use, not price.
|
||||
Our General Public Licenses are designed to make sure that you have the freedom
|
||||
to distribute copies of free software (and charge for this service if you
|
||||
wish); that you receive source code or can get it if you want it; that you
|
||||
can change the software and use pieces of it in new free programs; and that
|
||||
you are informed that you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid distributors
|
||||
to deny you these rights or to ask you to surrender these rights. These restrictions
|
||||
translate to certain responsibilities for you if you distribute copies of
|
||||
the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis or for
|
||||
a fee, you must give the recipients all the rights that we gave you. You must
|
||||
make sure that they, too, receive or can get the source code. If you link
|
||||
other code with the library, you must provide complete object files to the
|
||||
recipients, so that they can relink them with the library after making changes
|
||||
to the library and recompiling it. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the library,
|
||||
and (2) we offer you this license, which gives you legal permission to copy,
|
||||
distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that there is no
|
||||
warranty for the free library. Also, if the library is modified by someone
|
||||
else and passed on, the recipients should know that what they have is not
|
||||
the original version, so that the original author's reputation will not be
|
||||
affected by problems that might be introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of any free
|
||||
program. We wish to make sure that a company cannot effectively restrict the
|
||||
users of a free program by obtaining a restrictive license from a patent holder.
|
||||
Therefore, we insist that any patent license obtained for a version of the
|
||||
library must be consistent with the full freedom of use specified in this
|
||||
license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the ordinary GNU
|
||||
General Public License. This license, the GNU Lesser General Public License,
|
||||
applies to certain designated libraries, and is quite different from the ordinary
|
||||
General Public License. We use this license for certain libraries in order
|
||||
to permit linking those libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using a shared
|
||||
library, the combination of the two is legally speaking a combined work, a
|
||||
derivative of the original library. The ordinary General Public License therefore
|
||||
permits such linking only if the entire combination fits its criteria of freedom.
|
||||
The Lesser General Public License permits more lax criteria for linking other
|
||||
code with the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it does Less
|
||||
to protect the user's freedom than the ordinary General Public License. It
|
||||
also provides other free software developers Less of an advantage over competing
|
||||
non-free programs. These disadvantages are the reason we use the ordinary
|
||||
General Public License for many libraries. However, the Lesser license provides
|
||||
advantages in certain special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to encourage the
|
||||
widest possible use of a certain library, so that it becomes a de-facto standard.
|
||||
To achieve this, non-free programs must be allowed to use the library. A more
|
||||
frequent case is that a free library does the same job as widely used non-free
|
||||
libraries. In this case, there is little to gain by limiting the free library
|
||||
to free software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free programs
|
||||
enables a greater number of people to use a large body of free software. For
|
||||
example, permission to use the GNU C Library in non-free programs enables
|
||||
many more people to use the whole GNU operating system, as well as its variant,
|
||||
the GNU/Linux operating system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the users'
|
||||
freedom, it does ensure that the user of a program that is linked with the
|
||||
Library has the freedom and the wherewithal to run that program using a modified
|
||||
version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and modification
|
||||
follow. Pay close attention to the difference between a "work based on the
|
||||
library" and a "work that uses the library". The former contains code derived
|
||||
from the library, whereas the latter must be combined with the library in
|
||||
order to run.
|
||||
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other program
|
||||
which contains a notice placed by the copyright holder or other authorized
|
||||
party saying it may be distributed under the terms of this Lesser General
|
||||
Public License (also called "this License"). Each licensee is addressed as
|
||||
"you".
|
||||
|
||||
A "library" means a collection of software functions and/or data prepared
|
||||
so as to be conveniently linked with application programs (which use some
|
||||
of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work which has
|
||||
been distributed under these terms. A "work based on the Library" means either
|
||||
the Library or any derivative work under copyright law: that is to say, a
|
||||
work containing the Library or a portion of it, either verbatim or with modifications
|
||||
and/or translated straightforwardly into another language. (Hereinafter, translation
|
||||
is included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for making modifications
|
||||
to it. For a library, complete source code means all the source code for all
|
||||
modules it contains, plus any associated interface definition files, plus
|
||||
the scripts used to control compilation and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not covered
|
||||
by this License; they are outside its scope. The act of running a program
|
||||
using the Library is not restricted, and output from such a program is covered
|
||||
only if its contents constitute a work based on the Library (independent of
|
||||
the use of the Library in a tool for writing it). Whether that is true depends
|
||||
on what the Library does and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's complete source
|
||||
code as you receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice and disclaimer
|
||||
of warranty; keep intact all the notices that refer to this License and to
|
||||
the absence of any warranty; and distribute a copy of this License along with
|
||||
the Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and you
|
||||
may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion of it,
|
||||
thus forming a work based on the Library, and copy and distribute such modifications
|
||||
or work under the terms of Section 1 above, provided that you also meet all
|
||||
of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices stating that
|
||||
you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no charge to all
|
||||
third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a table of
|
||||
data to be supplied by an application program that uses the facility, other
|
||||
than as an argument passed when the facility is invoked, then you must make
|
||||
a good faith effort to ensure that, in the event an application does not supply
|
||||
such function or table, the facility still operates, and performs whatever
|
||||
part of its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has a purpose
|
||||
that is entirely well-defined independent of the application. Therefore, Subsection
|
||||
2d requires that any application-supplied function or table used by this function
|
||||
must be optional: if the application does not supply it, the square root function
|
||||
must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If identifiable
|
||||
sections of that work are not derived from the Library, and can be reasonably
|
||||
considered independent and separate works in themselves, then this License,
|
||||
and its terms, do not apply to those sections when you distribute them as
|
||||
separate works. But when you distribute the same sections as part of a whole
|
||||
which is a work based on the Library, the distribution of the whole must be
|
||||
on the terms of this License, whose permissions for other licensees extend
|
||||
to the entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest your
|
||||
rights to work written entirely by you; rather, the intent is to exercise
|
||||
the right to control the distribution of derivative or collective works based
|
||||
on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library with
|
||||
the Library (or with a work based on the Library) on a volume of a storage
|
||||
or distribution medium does not bring the other work under the scope of this
|
||||
License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public License
|
||||
instead of this License to a given copy of the Library. To do this, you must
|
||||
alter all the notices that refer to this License, so that they refer to the
|
||||
ordinary GNU General Public License, version 2, instead of to this License.
|
||||
(If a newer version than version 2 of the ordinary GNU General Public License
|
||||
has appeared, then you can specify that version instead if you wish.) Do not
|
||||
make any other change in these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for that copy,
|
||||
so the ordinary GNU General Public License applies to all subsequent copies
|
||||
and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of the Library
|
||||
into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or derivative of
|
||||
it, under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you accompany it with the complete corresponding
|
||||
machine-readable source code, which must be distributed under the terms of
|
||||
Sections 1 and 2 above on a medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy from a designated
|
||||
place, then offering equivalent access to copy the source code from the same
|
||||
place satisfies the requirement to distribute the source code, even though
|
||||
third parties are not compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the Library, but
|
||||
is designed to work with the Library by being compiled or linked with it,
|
||||
is called a "work that uses the Library". Such a work, in isolation, is not
|
||||
a derivative work of the Library, and therefore falls outside the scope of
|
||||
this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library creates an
|
||||
executable that is a derivative of the Library (because it contains portions
|
||||
of the Library), rather than a "work that uses the library". The executable
|
||||
is therefore covered by this License. Section 6 states terms for distribution
|
||||
of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file that
|
||||
is part of the Library, the object code for the work may be a derivative work
|
||||
of the Library even though the source code is not. Whether this is true is
|
||||
especially significant if the work can be linked without the Library, or if
|
||||
the work is itself a library. The threshold for this to be true is not precisely
|
||||
defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data structure layouts
|
||||
and accessors, and small macros and small inline functions (ten lines or less
|
||||
in length), then the use of the object file is unrestricted, regardless of
|
||||
whether it is legally a derivative work. (Executables containing this object
|
||||
code plus portions of the Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may distribute
|
||||
the object code for the work under the terms of Section 6. Any executables
|
||||
containing that work also fall under Section 6, whether or not they are linked
|
||||
directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or link a "work
|
||||
that uses the Library" with the Library to produce a work containing portions
|
||||
of the Library, and distribute that work under terms of your choice, provided
|
||||
that the terms permit modification of the work for the customer's own use
|
||||
and reverse engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the Library
|
||||
is used in it and that the Library and its use are covered by this License.
|
||||
You must supply a copy of this License. If the work during execution displays
|
||||
copyright notices, you must include the copyright notice for the Library among
|
||||
them, as well as a reference directing the user to the copy of this License.
|
||||
Also, you must do one of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding machine-readable source
|
||||
code for the Library including whatever changes were used in the work (which
|
||||
must be distributed under Sections 1 and 2 above); and, if the work is an
|
||||
executable linked with the Library, with the complete machine-readable "work
|
||||
that uses the Library", as object code and/or source code, so that the user
|
||||
can modify the Library and then relink to produce a modified executable containing
|
||||
the modified Library. (It is understood that the user who changes the contents
|
||||
of definitions files in the Library will not necessarily be able to recompile
|
||||
the application to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the Library. A
|
||||
suitable mechanism is one that (1) uses at run time a copy of the library
|
||||
already present on the user's computer system, rather than copying library
|
||||
functions into the executable, and (2) will operate properly with a modified
|
||||
version of the library, if the user installs one, as long as the modified
|
||||
version is interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at least three years,
|
||||
to give the same user the materials specified in Subsection 6a, above, for
|
||||
a charge no more than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy from a designated
|
||||
place, offer equivalent access to copy the above specified materials from
|
||||
the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these materials or
|
||||
that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the Library" must
|
||||
include any data and utility programs needed for reproducing the executable
|
||||
from it. However, as a special exception, the materials to be distributed
|
||||
need not include anything that is normally distributed (in either source or
|
||||
binary form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component itself
|
||||
accompanies the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license restrictions of
|
||||
other proprietary libraries that do not normally accompany the operating system.
|
||||
Such a contradiction means you cannot use both them and the Library together
|
||||
in an executable that you distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the Library side-by-side
|
||||
in a single library together with other library facilities not covered by
|
||||
this License, and distribute such a combined library, provided that the separate
|
||||
distribution of the work based on the Library and of the other library facilities
|
||||
is otherwise permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based on the
|
||||
Library, uncombined with any other library facilities. This must be distributed
|
||||
under the terms of the Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact that part of
|
||||
it is a work based on the Library, and explaining where to find the accompanying
|
||||
uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute the Library
|
||||
except as expressly provided under this License. Any attempt otherwise to
|
||||
copy, modify, sublicense, link with, or distribute the Library is void, and
|
||||
will automatically terminate your rights under this License. However, parties
|
||||
who have received copies, or rights, from you under this License will not
|
||||
have their licenses terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not signed
|
||||
it. However, nothing else grants you permission to modify or distribute the
|
||||
Library or its derivative works. These actions are prohibited by law if you
|
||||
do not accept this License. Therefore, by modifying or distributing the Library
|
||||
(or any work based on the Library), you indicate your acceptance of this License
|
||||
to do so, and all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the Library),
|
||||
the recipient automatically receives a license from the original licensor
|
||||
to copy, distribute, link with or modify the Library subject to these terms
|
||||
and conditions. You may not impose any further restrictions on the recipients'
|
||||
exercise of the rights granted herein. You are not responsible for enforcing
|
||||
compliance by third parties with this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent infringement
|
||||
or for any other reason (not limited to patent issues), conditions are imposed
|
||||
on you (whether by court order, agreement or otherwise) that contradict the
|
||||
conditions of this License, they do not excuse you from the conditions of
|
||||
this License. If you cannot distribute so as to satisfy simultaneously your
|
||||
obligations under this License and any other pertinent obligations, then as
|
||||
a consequence you may not distribute the Library at all. For example, if a
|
||||
patent license would not permit royalty-free redistribution of the Library
|
||||
by all those who receive copies directly or indirectly through you, then the
|
||||
only way you could satisfy both it and this License would be to refrain entirely
|
||||
from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any patents
|
||||
or other property right claims or to contest validity of any such claims;
|
||||
this section has the sole purpose of protecting the integrity of the free
|
||||
software distribution system which is implemented by public license practices.
|
||||
Many people have made generous contributions to the wide range of software
|
||||
distributed through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing to
|
||||
distribute software through any other system and a licensee cannot impose
|
||||
that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to be a
|
||||
consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in certain
|
||||
countries either by patents or by copyrighted interfaces, the original copyright
|
||||
holder who places the Library under this License may add an explicit geographical
|
||||
distribution limitation excluding those countries, so that distribution is
|
||||
permitted only in or among countries not thus excluded. In such case, this
|
||||
License incorporates the limitation as if written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new versions of
|
||||
the Lesser General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to address
|
||||
new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library specifies
|
||||
a version number of this License which applies to it and "any later version",
|
||||
you have the option of following the terms and conditions either of that version
|
||||
or of any later version published by the Free Software Foundation. If the
|
||||
Library does not specify a license version number, you may choose any version
|
||||
ever published by the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free programs
|
||||
whose distribution conditions are incompatible with these, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free Software
|
||||
Foundation, write to the Free Software Foundation; we sometimes make exceptions
|
||||
for this. Our decision will be guided by the two goals of preserving the free
|
||||
status of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
|
||||
THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
|
||||
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY
|
||||
"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||||
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
|
||||
OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
|
||||
THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
|
||||
OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
|
||||
OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
|
||||
OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
|
||||
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest possible
|
||||
use to the public, we recommend making it free software that everyone can
|
||||
redistribute and change. You can do so by permitting redistribution under
|
||||
these terms (or, alternatively, under the terms of the ordinary General Public
|
||||
License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is safest
|
||||
to attach them to the start of each source file to most effectively convey
|
||||
the exclusion of warranty; and each file should have at least the "copyright"
|
||||
line and a pointer to where the full notice is found.
|
||||
|
||||
< one line to give the library's name and an idea of what it does. >
|
||||
|
||||
Copyright (C) < year > < name of author >
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the Free
|
||||
Software Foundation; either version 2.1 of the License, or (at your option)
|
||||
any later version.
|
||||
|
||||
This library 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 Lesser General Public License for more
|
||||
details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License along
|
||||
with this library; if not, write to the Free Software Foundation, Inc., 51
|
||||
Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information
|
||||
on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your school,
|
||||
if any, to sign a "copyright disclaimer" for the library, if necessary. Here
|
||||
is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in
|
||||
|
||||
the library `Frob' (a library for tweaking knobs) written
|
||||
|
||||
by James Random Hacker.
|
||||
|
||||
< signature of Ty Coon > , 1 April 1990
|
||||
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
163
LICENSES/LGPL-3.0-or-later.txt
Normal file
163
LICENSES/LGPL-3.0-or-later.txt
Normal file
@@ -0,0 +1,163 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this license
|
||||
document, but changing it is not allowed.
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates the terms
|
||||
and conditions of version 3 of the GNU General Public License, supplemented
|
||||
by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser General
|
||||
Public License, and the "GNU GPL" refers to version 3 of the GNU General Public
|
||||
License.
|
||||
|
||||
|
||||
|
||||
"The Library" refers to a covered work governed by this License, other than
|
||||
an Application or a Combined Work as defined below.
|
||||
|
||||
|
||||
|
||||
An "Application" is any work that makes use of an interface provided by the
|
||||
Library, but which is not otherwise based on the Library. Defining a subclass
|
||||
of a class defined by the Library is deemed a mode of using an interface provided
|
||||
by the Library.
|
||||
|
||||
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an Application
|
||||
with the Library. The particular version of the Library with which the Combined
|
||||
Work was made is also called the "Linked Version".
|
||||
|
||||
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the Corresponding
|
||||
Source for the Combined Work, excluding any source code for portions of the
|
||||
Combined Work that, considered in isolation, are based on the Application,
|
||||
and not on the Linked Version.
|
||||
|
||||
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the object
|
||||
code and/or source code for the Application, including any data and utility
|
||||
programs needed for reproducing the Combined Work from the Application, but
|
||||
excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License without
|
||||
being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a facility
|
||||
refers to a function or data to be supplied by an Application that uses the
|
||||
facility (other than as an argument passed when the facility is invoked),
|
||||
then you may convey a copy of the modified version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to ensure
|
||||
that, in the event an Application does not supply the function or data, the
|
||||
facility still operates, and performs whatever part of its purpose remains
|
||||
meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of this License
|
||||
applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from a header
|
||||
file that is part of the Library. You may convey such object code under terms
|
||||
of your choice, provided that, if the incorporated material is not limited
|
||||
to numerical parameters, data structure layouts and accessors, or small macros,
|
||||
inline functions and templates (ten or fewer lines in length), you do both
|
||||
of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the Library
|
||||
is used in it and that the Library and its use are covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that, taken together,
|
||||
effectively do not restrict modification of the portions of the Library contained
|
||||
in the Combined Work and reverse engineering for debugging such modifications,
|
||||
if you also do each of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that the Library
|
||||
is used in it and that the Library and its use are covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during execution, include
|
||||
the copyright notice for the Library among these notices, as well as a reference
|
||||
directing the user to the copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this License,
|
||||
and the Corresponding Application Code in a form suitable for, and under terms
|
||||
that permit, the user to recombine or relink the Application with a modified
|
||||
version of the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the Library. A
|
||||
suitable mechanism is one that (a) uses at run time a copy of the Library
|
||||
already present on the user's computer system, and (b) will operate properly
|
||||
with a modified version of the Library that is interface-compatible with the
|
||||
Linked Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise be required
|
||||
to provide such information under section 6 of the GNU GPL, and only to the
|
||||
extent that such information is necessary to install and execute a modified
|
||||
version of the Combined Work produced by recombining or relinking the Application
|
||||
with a modified version of the Linked Version. (If you use option 4d0, the
|
||||
Installation Information must accompany the Minimal Corresponding Source and
|
||||
Corresponding Application Code. If you use option 4d1, you must provide the
|
||||
Installation Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the Library side
|
||||
by side in a single library together with other library facilities that are
|
||||
not Applications and are not covered by this License, and convey such a combined
|
||||
library under terms of your choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based on the
|
||||
Library, uncombined with any other library facilities, conveyed under the
|
||||
terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it is a work
|
||||
based on the Library, and explaining where to find the accompanying uncombined
|
||||
form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of the
|
||||
GNU Lesser General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to address
|
||||
new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library as you
|
||||
received it specifies that a certain numbered version of the GNU Lesser General
|
||||
Public License "or any later version" applies to it, you have the option of
|
||||
following the terms and conditions either of that published version or of
|
||||
any later version published by the Free Software Foundation. If the Library
|
||||
as you received it does not specify a version number of the GNU Lesser General
|
||||
Public License, you may choose any version of the GNU Lesser General Public
|
||||
License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide whether
|
||||
future versions of the GNU Lesser General Public License shall apply, that
|
||||
proxy's public statement of acceptance of any version is permanent authorization
|
||||
for you to choose that version for the Library.
|
@@ -1,83 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the QML Presentation System.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3.0 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 3.0 requirements will be
|
||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QML Presentation System.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3.0 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 3.0 requirements will be
|
||||
** met: http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
@@ -1,22 +0,0 @@
|
||||
Digia Qt LGPL Exception version 1.1
|
||||
|
||||
As an additional permission to the GNU Lesser General Public License version
|
||||
2.1, the object code form of a "work that uses the Library" may incorporate
|
||||
material from a header file that is part of the Library. You may distribute
|
||||
such object code under terms of your choice, provided that:
|
||||
(i) the header files of the Library have not been modified; and
|
||||
(ii) the incorporated material is limited to numerical parameters, data
|
||||
structure layouts, accessors, macros, inline functions and
|
||||
templates; and
|
||||
(iii) you comply with the terms of Section 6 of the GNU Lesser General
|
||||
Public License version 2.1.
|
||||
|
||||
Moreover, you may apply this exception to a modified version of the Library,
|
||||
provided that such modification does not involve copying material from the
|
||||
Library into the modified Library's header files unless such material is
|
||||
limited to (i) numerical parameters; (ii) data structure layouts;
|
||||
(iii) accessors; and (iv) small macros, templates and inline functions of
|
||||
five lines or less in length.
|
||||
|
||||
Furthermore, you are not required to apply this additional permission to a
|
||||
modified version of the Library.
|
@@ -1,209 +0,0 @@
|
||||
The Breeze Icon Theme in icons/
|
||||
|
||||
Copyright (C) 2014 Uri Herrera <uri_herrera@nitrux.in> and others
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Clarification:
|
||||
|
||||
The GNU Lesser General Public License or LGPL is written for
|
||||
software libraries in the first place. We expressly want the LGPL to
|
||||
be valid for this artwork library too.
|
||||
|
||||
KDE Breeze theme icons is a special kind of software library, it is an
|
||||
artwork library, it's elements can be used in a Graphical User Interface, or
|
||||
GUI.
|
||||
|
||||
Source code, for this library means:
|
||||
- where they exist, SVG;
|
||||
- otherwise, if applicable, the multi-layered formats xcf or psd, or
|
||||
otherwise png.
|
||||
|
||||
The LGPL in some sections obliges you to make the files carry
|
||||
notices. With images this is in some cases impossible or hardly useful.
|
||||
|
||||
With this library a notice is placed at a prominent place in the directory
|
||||
containing the elements. You may follow this practice.
|
||||
|
||||
The exception in section 5 of the GNU Lesser General Public License covers
|
||||
the use of elements of this art library in a GUI.
|
||||
|
||||
https://vdesign.kde.org/
|
||||
|
||||
-----
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
@@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Original Work Copyright (c) 2012-2015 Alexander Turkin
|
||||
Modified 2014 by William Hallatt
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
19
LICENSES/MIT.txt
Normal file
19
LICENSES/MIT.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
MIT License Copyright (c) <year> <copyright holders>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice (including the next
|
||||
paragraph) shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
90
README.md
90
README.md
@@ -1,39 +1,69 @@
|
||||
### Calamares: Distribution-Independent Installer Framework
|
||||
<!-- SPDX-FileCopyrightText: no
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
-->
|
||||
|
||||
# Calamares: Distribution-Independent Installer Framework
|
||||
---------
|
||||
|
||||
[](https://github.com/calamares/calamares/labels/hacking%3A%20in-progress)
|
||||
[](https://github.com/calamares/calamares/releases)
|
||||
[](https://calamares.io/ci/job/calamares-post_commit/)
|
||||
[](https://travis-ci.org/calamares/calamares)
|
||||
[](https://scan.coverity.com/projects/5389)
|
||||
[](https://github.com/calamares/calamares/blob/master/LICENSE)
|
||||
[](https://github.com/calamares/calamares/actions?query=workflow%3Aci)
|
||||
[](https://github.com/calamares/calamares/blob/calamares/LICENSE)
|
||||
|
||||
| [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Contribute](https://github.com/calamares/calamares/blob/master/ci/HACKING.md) | [Translate](https://www.transifex.com/projects/p/calamares/) | Freenode (IRC): #calamares | [Wiki](https://github.com/calamares/calamares/wiki) |
|
||||
|:-----------------------------------------:|:----------------------:|:-----------------------:|:--------------------------:|:--------------------------:|
|
||||
|
||||
### Dependencies
|
||||
| [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Translate](https://www.transifex.com/projects/p/calamares/) | [Contribute](CONTRIBUTING.md) | [Matrix: #calamares:kde.org](https://webchat.kde.org/#/room/%23calamares:kde.org) | [IRC: Libera.Chat #calamares](https://kiwiirc.com/client/irc.libera.chat/#calamares) | [Wiki](https://github.com/calamares/calamares/wiki) |
|
||||
|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||
|
||||
Main:
|
||||
* Compiler with C++14 support: GCC >= 5 or Clang >= 3.5.1
|
||||
* CMake >= 3.3
|
||||
* Qt >= 5.9
|
||||
* yaml-cpp >= 0.5.1
|
||||
* Python >= 3.3 (required for some modules)
|
||||
* Boost.Python >= 1.55.0 (required for some modules)
|
||||
* KDE extra-cmake-modules >= 5.18 (recommended; required for some modules;
|
||||
required for some tests)
|
||||
* KDE Frameworks KCoreAddons (>= 5.58 recommended)
|
||||
* PythonQt (optional, deprecated)
|
||||
|
||||
Modules:
|
||||
* Individual modules may have their own requirements;
|
||||
these are listed in CMake output. Particular requirements (not complete):
|
||||
* *fsresizer* KPMCore >= 3.3
|
||||
* *partition* KPMCore >= 3.3
|
||||
* *users* LibPWQuality (optional)
|
||||
> Calamares is a distribution-independent system installer, with an advanced partitioning
|
||||
> feature for both manual and automated partitioning operations. Calamares is designed to
|
||||
> be customizable by distribution maintainers without need for cumbersome patching,
|
||||
> thanks to third party branding and external modules support.
|
||||
|
||||
### Building
|
||||
## Target Audience
|
||||
|
||||
See [wiki](https://github.com/calamares/calamares/wiki) for up to date
|
||||
[building](https://github.com/calamares/calamares/wiki/Develop-Guide)
|
||||
and [deployment](https://github.com/calamares/calamares/wiki/Deploy-Guide)
|
||||
instructions.
|
||||
Calamares is a Linux installer; users who install Linux on a computer will hopefully
|
||||
use it just **once**, to install their Linux distribution. Calamares is not
|
||||
a "ready to use" application: distributions apply a huge amount of customisation
|
||||
and configuration to Calamares, and the target audience for this repository
|
||||
is those distributions, and the people who make those Linux distro's.
|
||||
|
||||
Calamares has some [generic user documentation](https://calamares.io/docs/users-guide/)
|
||||
for end-users, but most of what we have is for distro developers.
|
||||
|
||||
## Getting Calamares
|
||||
|
||||
Clone Calamares from GitHub. The default branch is called *calamares*.
|
||||
|
||||
```
|
||||
git clone https://github.com/calamares/calamares.git
|
||||
```
|
||||
|
||||
Calamares is a KDE-Frameworks and Qt-based, C++17, CMake-built application.
|
||||
The dependencies are explained in [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## Contributing to Calamares
|
||||
|
||||
Calamares welcomes PRs. New issues are welcome, too.
|
||||
There are both the Calamares **core** repository (this one),
|
||||
and an **extensions** repository ([Calamares extensions](https://github.com/calamares/calamares-extensions)).
|
||||
|
||||
Contributions to code, modules, documentation, the wiki and the website are all welcome.
|
||||
There is more information in the [CONTRIBUTING.md](CONTRIBUTING.md) file.
|
||||
|
||||
## Join the Conversation
|
||||
|
||||
GitHub Issues are **one** place for discussing Calamares if there are concrete
|
||||
problems or a new feature to discuss.
|
||||
|
||||
Regular Calamares development chit-chat happens in a [Matrix](https://matrix.org/)
|
||||
room, `#calamares:kde.org`. The conversation is bridged with IRC
|
||||
on [Libera.Chat](https://libera.chat/).
|
||||
Responsiveness is best during the day
|
||||
in Europe, but feel free to idle. If you use IRC, **DO NOT** ask-and-leave. Keep
|
||||
that chat window open because it can easily take a few hours for
|
||||
someone to notice a message.
|
||||
Matrix is persistent, and we'll see your message eventually.
|
||||
|
||||
* [](https://webchat.kde.org/#/room/%23calamares:kde.org)
|
||||
* [](https://kiwiirc.com/client/irc.libera.chat/#calamares)
|
||||
|
@@ -5,7 +5,7 @@ Name=Install System
|
||||
GenericName=System Installer
|
||||
Keywords=calamares;system;installer;
|
||||
TryExec=calamares
|
||||
Exec=pkexec /usr/bin/calamares
|
||||
Exec=sh -c "pkexec calamares"
|
||||
Comment=Calamares — System Installer
|
||||
Icon=calamares
|
||||
Terminal=false
|
||||
@@ -17,6 +17,14 @@ Name[ar]=تثبيت النظام
|
||||
Icon[ar]=كالامارس
|
||||
GenericName[ar]=مثبت النظام
|
||||
Comment[ar]=كالامارس - مثبت النظام
|
||||
Name[as]=চিছটেম ইনস্তল কৰক
|
||||
Icon[as]=কেলামাৰেচ
|
||||
GenericName[as]=চিছটেম ইনস্তলাৰ
|
||||
Comment[as]=কেলামাৰেচ — চিছটেম ইনস্তলাৰ
|
||||
Name[az]=Sistemi Quraşdırmaq
|
||||
Icon[az]=calamares
|
||||
GenericName[az]=Sistem Quraşdırıcısı
|
||||
Comment[az]=Calamares Sistem Quraşdırıcısı
|
||||
Name[be]=Усталяваць сістэму
|
||||
Icon[be]=calamares
|
||||
GenericName[be]=Усталёўшчык сістэмы
|
||||
@@ -25,6 +33,10 @@ Name[bg]=Инсталирай системата
|
||||
Icon[bg]=calamares
|
||||
GenericName[bg]=Системен Инсталатор
|
||||
Comment[bg]=Calamares — Системен Инсталатор
|
||||
Name[bn]=সিস্টেম ইনস্টল করুন
|
||||
Icon[bn]=ক্যালামারেস
|
||||
GenericName[bn]=সিস্টেম ইনস্টলার
|
||||
Comment[bn]=ক্যালামারেস - সিস্টেম ইনস্টলার
|
||||
Name[ca]=Instal·la el sistema
|
||||
Icon[ca]=calamares
|
||||
GenericName[ca]=Instal·lador de sistema
|
||||
@@ -57,11 +69,19 @@ Name[eu]=Sistema instalatu
|
||||
Icon[eu]=calamares
|
||||
GenericName[eu]=Sistema instalatzailea
|
||||
Comment[eu]=Calamares - sistema instalatzailea
|
||||
Name[fa]=نصب سامانه
|
||||
Icon[fa]=کالامارس
|
||||
GenericName[fa]=نصبکنندهٔ سامانه
|
||||
Comment[fa]=کالامارس — نصبکنندهٔ سامانه
|
||||
Name[es_PR]=Instalar el sistema
|
||||
Name[fr]=Installer le système
|
||||
Icon[fr]=calamares
|
||||
GenericName[fr]=Installateur système
|
||||
Comment[fr]=Calamares - Installateur système
|
||||
Name[fur]=Instale il sisteme
|
||||
Icon[fur]=calamares
|
||||
GenericName[fur]=Program di instalazion dal sisteme
|
||||
Comment[fur]=Calamares — Program di instalazion dal sisteme
|
||||
Name[gl]=Instalación do Sistema
|
||||
Icon[gl]=calamares
|
||||
GenericName[gl]=Instalador de sistemas
|
||||
@@ -78,6 +98,10 @@ Name[hr]=Instaliraj sustav
|
||||
Icon[hr]=calamares
|
||||
GenericName[hr]=Instalacija sustava
|
||||
Comment[hr]=Calamares — Instalacija sustava
|
||||
Name[ie]=Installar li sistema
|
||||
Icon[ie]=calamares
|
||||
GenericName[ie]=Installator del sistema
|
||||
Comment[ie]=Calamares — Installator del sistema
|
||||
Name[hu]=Rendszer telepítése
|
||||
Icon[hu]=calamares
|
||||
GenericName[hu]=Rendszertelepítő
|
||||
@@ -99,9 +123,9 @@ Icon[ja]=calamares
|
||||
GenericName[ja]=システムインストーラー
|
||||
Comment[ja]=Calamares — システムインストーラー
|
||||
Name[ko]=시스템 설치
|
||||
Icon[ko]=깔라마레스 (Calamares)
|
||||
Icon[ko]=깔라마레스
|
||||
GenericName[ko]=시스템 설치 관리자
|
||||
Comment[ko]=깔라마레스 (Calamares) — 시스템 설치 관리자
|
||||
Comment[ko]=깔라마레스 — 시스템 설치 관리자
|
||||
Name[lt]=Įdiegti Sistemą
|
||||
Icon[lt]=calamares
|
||||
GenericName[lt]=Sistemos diegimas į kompiuterį
|
||||
@@ -126,6 +150,10 @@ Name[nl]=Installeer systeem
|
||||
Icon[nl]=calamares
|
||||
GenericName[nl]=Installatieprogramma
|
||||
Comment[nl]=Calamares — Installatieprogramma
|
||||
Name[az_AZ]=Sistemi quraşdırmaq
|
||||
Icon[az_AZ]=calamares
|
||||
GenericName[az_AZ]=Sistem quraşdırcısı
|
||||
Comment[az_AZ]=Calamares — Sistem Quraşdırıcısı
|
||||
Name[pl]=Zainstaluj system
|
||||
Icon[pl]=calamares
|
||||
GenericName[pl]=Instalator systemu
|
||||
@@ -151,10 +179,10 @@ Name[sq]=Instalo Sistemin
|
||||
Icon[sq]=calamares
|
||||
GenericName[sq]=Instalues Sistemi
|
||||
Comment[sq]=Calamares — Instalues Sistemi
|
||||
Name[fi_FI]=Asenna Järjestelmä
|
||||
Name[fi_FI]=Asenna järjestelmä
|
||||
Icon[fi_FI]=calamares
|
||||
GenericName[fi_FI]=Järjestelmän Asennusohjelma
|
||||
Comment[fi_FI]=Calamares — Järjestelmän Asentaja
|
||||
GenericName[fi_FI]=Järjestelmän asennusohjelma
|
||||
Comment[fi_FI]=Calamares — Järjestelmän asentaja
|
||||
Name[sr@latin]=Instaliraj sistem
|
||||
Name[sr]=Инсталирај систем
|
||||
Icon[sr]=calamares
|
||||
@@ -164,11 +192,19 @@ Name[sv]=Installera system
|
||||
Icon[sv]=calamares
|
||||
GenericName[sv]=Systeminstallerare
|
||||
Comment[sv]=Calamares — Systeminstallerare
|
||||
Name[tg]=Насбкунии низом
|
||||
Icon[tg]=calamares
|
||||
GenericName[tg]=Насбкунандаи низомӣ
|
||||
Comment[tg]=Calamares — Насбкунандаи низомӣ
|
||||
Name[th]=ติดตั้งระบบ
|
||||
Name[uk]=Встановити Систему
|
||||
Icon[uk]=calamares
|
||||
GenericName[uk]=Встановлювач системи
|
||||
Comment[uk]=Calamares - Встановлювач системи
|
||||
Name[vi]=Cài đặt hệ thống
|
||||
Icon[vi]=calamares
|
||||
GenericName[vi]=Bộ cài đặt hệ thống
|
||||
Comment[vi]=Calamares — Bộ cài đặt hệ thống
|
||||
Name[zh_CN]=安装系统
|
||||
Icon[zh_CN]=calamares
|
||||
GenericName[zh_CN]=系统安装程序
|
||||
|
@@ -5,7 +5,7 @@ Name=Install System
|
||||
GenericName=System Installer
|
||||
Keywords=calamares;system;installer;
|
||||
TryExec=calamares
|
||||
Exec=pkexec /usr/bin/calamares
|
||||
Exec=sh -c "pkexec calamares"
|
||||
Comment=Calamares — System Installer
|
||||
Icon=calamares
|
||||
Terminal=false
|
||||
|
@@ -1,45 +0,0 @@
|
||||
# AppImage building for Calamares
|
||||
|
||||
> It is possible to build Calamares as an AppImage (perhaps other
|
||||
> containerized formats as well). This might make sense for
|
||||
> OEM phase-1 deployments in environments where Calamares is
|
||||
> not using the native toolkit.
|
||||
|
||||
## AppImage tools
|
||||
|
||||
You will need
|
||||
- [`linuxdeploy-x86_64.AppImage`](https://github.com/linuxdeploy/linuxdeploy/releases)
|
||||
- [`linuxdeploy-plugin-qt-x86_64.AppImage`](https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases)
|
||||
- [`linuxdeploy-plugin-conda.sh`](https://github.com/linuxdeploy/linuxdeploy-plugin-conda)
|
||||
|
||||
These tools should run -- they are bundled as AppImages after all -- on
|
||||
any modern Linux system. The [AppImage packaging documentation](https://docs.appimage.org/packaging-guide/)
|
||||
explains how the whole tooling works.
|
||||
|
||||
If the tools are not present, the build script (see below) will download them,
|
||||
but you should save them for later.
|
||||
|
||||
## AppImage build
|
||||
|
||||
From the **source** directory, run `ci/AppImage.sh`:
|
||||
- Use `--tools-dir` to copy the tools from a local cache rather than
|
||||
downloading them again.
|
||||
- Run it with `--cmake-args` for special CMake handling.
|
||||
- Use `--skip-build` to avoid rebuilding Calamares all the time.
|
||||
- Use `--config-dir` to copy in Calamares configuration files (e.g.
|
||||
*settings.conf* and the module configuration files) from a given
|
||||
directory.
|
||||
|
||||
The build process will:
|
||||
- copy (or download) the AppImage tools into a fresh build directory
|
||||
- configure and build Calamares with suitable settings
|
||||
- modifies the standard `.desktop` file to be AppImage-compatible
|
||||
- builds the image with the AppImage tools
|
||||
|
||||
## AppImage caveats
|
||||
|
||||
The resulting AppImage, `Calamares-x86_64.AppImage`, can be run as if it is
|
||||
a regular Calamares executable. For internal reasons it always passes the
|
||||
`-X` flag; any other command-line flags are passed in unchanged. Internally,
|
||||
`XDG_*_DIRS` are used to get Calamares to find the resources inside the AppImage
|
||||
rather than in the host system.
|
@@ -1,9 +1,8 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Copyright 2019 Adriaan de Groot <groot@kde.org>
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
|
211
ci/HACKING.md
211
ci/HACKING.md
@@ -1,211 +0,0 @@
|
||||
Hacking on Calamares
|
||||
====================
|
||||
|
||||
These are the guidelines for hacking on Calamares. Except for the licensing,
|
||||
which **must** be GPLv3+, these are guidelines and -- like PEP8 -- the most
|
||||
important thing is to know when you can ignore them.
|
||||
|
||||
|
||||
Licensing
|
||||
---------
|
||||
Calamares is released under the terms of the GNU GPL, version 3 or later.
|
||||
Every source file must have a license header, with a list of copyright holders and years.
|
||||
|
||||
Example:
|
||||
```
|
||||
/* === This file is part of Calamares - <https://github.com/calamares> ===
|
||||
*
|
||||
* Copyright 2013-2014, Random Person <name@example.com>
|
||||
* Copyright 2010, Someone Else <someone@example.com>
|
||||
*
|
||||
* Calamares 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.
|
||||
*
|
||||
* Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
```
|
||||
Copyright holders must be physical or legal personalities. A statement such as
|
||||
`Copyright 2014, The FooBarQuux project` has no legal value if "The FooBarQuux
|
||||
project" is not the legal name of a person, company, incorporated
|
||||
organization, etc.
|
||||
|
||||
Please add your name to files you touch when making any contribution (even if
|
||||
it's just a typo-fix which might not be copyrightable in all jurisdictions).
|
||||
|
||||
|
||||
Formatting C++
|
||||
--------------
|
||||
This formatting guide applies to C++ code only; for Python modules, we use
|
||||
[pycodestyle](https://github.com/PyCQA/pycodestyle) to apply a check of
|
||||
some PEP8 guidelines.
|
||||
|
||||
* Spaces, not tabs.
|
||||
* Indentation is 4 spaces.
|
||||
* Lines should be limited to 90 characters.
|
||||
* Spaces between brackets and argument functions, including for template arguments
|
||||
* No space before brackets, except for keywords, for example `function( argument )` but
|
||||
`if ( condition )`.
|
||||
* For pointer and reference variable declarations, put a space before the variable name
|
||||
and no space between the type and the `*` or `&`, e.g. `int* p`.
|
||||
* `for`, `if`, `else`, `while` and similar statements put the braces on the next line,
|
||||
if the following block is more than one statement. Always use braces.
|
||||
* Function and class definitions have their braces on separate lines.
|
||||
* A function implementation's return type is on its own line.
|
||||
* `CamelCase.{cpp,h}` style file names.
|
||||
* Lambdas are preferrably indented to a 4-space tab, even when passed as an
|
||||
argument to functions.
|
||||
|
||||
Example:
|
||||
```
|
||||
bool
|
||||
MyClass::myMethod( QStringList list, const QString& name )
|
||||
{
|
||||
if ( list.isEmpty() )
|
||||
return false;
|
||||
|
||||
cDebug() << "Items in list ..";
|
||||
foreach ( const QString& string, list )
|
||||
cDebug() << " .." << string;
|
||||
|
||||
switch ( m_enumValue )
|
||||
{
|
||||
case Something:
|
||||
return true;
|
||||
case SomethingElse:
|
||||
doSomething();
|
||||
break;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You can use `clang-format` (version 7) to have Calamares sources formatted
|
||||
the right way. There is a `.clang-format` file that specifies the details.
|
||||
In general:
|
||||
```
|
||||
$ clang-format-7 -i -style=file <files>
|
||||
```
|
||||
`
|
||||
|
||||
**NOTE:** An .editorconfig file is included to assist with formatting. In
|
||||
order to take advantage of this functionality you will need to acquire the
|
||||
[EditorConfig](http://editorconfig.org/#download) plug-in for your editor.
|
||||
|
||||
|
||||
Naming
|
||||
------
|
||||
* Use CamelCase for everything.
|
||||
* Local variables should start out with a lowercase letter.
|
||||
* Class names are capitalized
|
||||
* Prefix class member variables with `m_`, e.g. `m_queue`.
|
||||
* Prefix static member variables with `s_`, e.g. `s_instance`.
|
||||
* Functions are named in the Qt style, like Java's, without the 'get' prefix.
|
||||
* A getter is `variable()`.
|
||||
* If it's a getter for a boolean, prefix with 'is', so `isCondition()`.
|
||||
* A setter is `setVariable( arg )`.
|
||||
|
||||
|
||||
Includes
|
||||
--------
|
||||
Header includes should be listed in the following order:
|
||||
|
||||
* own header,
|
||||
* Calamares includes,
|
||||
* includes for Qt-based libraries,
|
||||
* Qt includes,
|
||||
* other includes.
|
||||
|
||||
They should also be sorted alphabetically for ease of locating them.
|
||||
|
||||
Includes in a header file should be kept to the absolute minimum, as to keep
|
||||
compile times short. This can be achieved by using forward declarations
|
||||
instead of includes, like `class QListView;`.
|
||||
|
||||
Example:
|
||||
```
|
||||
#include "Settings.h"
|
||||
|
||||
#include "CalamaresApplication.h"
|
||||
#include "utils/CalamaresUtils.h"
|
||||
#include "utils/Logger.h"
|
||||
#include "YamlUtils.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QFile>
|
||||
|
||||
#include <yaml-cpp/yaml.h>
|
||||
```
|
||||
|
||||
Use include guards, not `#pragma once`.
|
||||
|
||||
|
||||
C++ tips
|
||||
--------
|
||||
All C++11 features are acceptable, and the use of new C++11 features is encouraged when
|
||||
it makes the code easier to understand and more maintainable.
|
||||
|
||||
The use of `nullptr` is preferred over the use of `0` or `NULL`.
|
||||
|
||||
For Qt containers it is better to use Qt's own `foreach`. For all other containers, the
|
||||
range-based `for` syntax introduced with C++11 is preferred ([see this blog post][1]).
|
||||
|
||||
When re-implementing a virtual method, always add the `override` keyword.
|
||||
|
||||
Try to keep your code const correct. Declare methods const if they don't mutate the
|
||||
object, and use const variables. It improves safety, and also makes it easier to
|
||||
understand the code.
|
||||
|
||||
For the Qt signal-slot system, the new (Qt5) syntax is to be preferred because it allows
|
||||
the compiler to check for the existence of signals and slots. As an added benefit, the
|
||||
new syntax can also be used with `tr1::bind` and C++11 lambdas. For more information, see
|
||||
the [Qt wiki][2].
|
||||
|
||||
Example:
|
||||
```
|
||||
connect( m_next, &QPushButton::clicked, this, &ViewManager::next );
|
||||
|
||||
connect( m_moduleManager, &Calamares::ModuleManager::modulesLoaded, [this]
|
||||
{
|
||||
m_mainwindow->show();
|
||||
});
|
||||
```
|
||||
|
||||
[1]: http://blog.qt.digia.com/blog/2011/05/26/cpp0x-in-qt/
|
||||
[2]: http://qt-project.org/wiki/New_Signal_Slot_Syntax
|
||||
|
||||
|
||||
Debugging
|
||||
---------
|
||||
Use `cDebug()` from `utils/Logger.h`. You can pass a debug-level to the
|
||||
macro (6 is debugging, higher is less important). Use `cWarning()` for warning
|
||||
messages (equivalent to level 2) and `cError()` for errors (level 1). Warnings
|
||||
and errors will add relevant text automatically. See `libcalamares/utils/Logger.h`
|
||||
for details.
|
||||
|
||||
For log messages that are continued across multiple calls to `cDebug()`,
|
||||
in particular listing things, conventional formatting is as follows:
|
||||
* End the first debug message with ` ..`
|
||||
* Start the next debug message by outputting `Logger::SubEntry`
|
||||
|
||||
For single-outputs that need to be split across multiplt lines,
|
||||
output `Logger::Continuation`.
|
||||
|
||||
|
||||
Commit Messages
|
||||
---------------
|
||||
Keep commit messages short(-ish) and try to describe what is being changed
|
||||
*as well as why*. Use the commit keywords for GitHub, especially *FIXES:*
|
||||
to auto-close issues when they are resolved.
|
||||
|
||||
For functional changes to Calamares modules or libraries, try to put
|
||||
*[modulename]* in front of the first line of the commit message.
|
||||
|
||||
For non-functional changes to infrastructure, try to label the change
|
||||
with the kind of change, e.g. *CMake* or *i18n* or *Documentation*.
|
193
ci/RELEASE.md
193
ci/RELEASE.md
@@ -1,22 +1,40 @@
|
||||
The Calamares release process
|
||||
=============================
|
||||
# Calamares Release Process
|
||||
|
||||
> As releases from *master* are now rolling when-they-are-ready releases,
|
||||
> some of these steps no longer are followed. In particular, -RC releases
|
||||
> are not done anymore (although the RC variable is set in `CMakeLists.txt`
|
||||
> to avoid accidents) and most things are automated through the release
|
||||
> script [RELEASE.sh](RELEASE.sh)
|
||||
<!-- SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
|
||||
SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
-->
|
||||
|
||||
#### (0) A week in advance
|
||||
> Calamares releases are now rolling when-they-are-ready releases.
|
||||
> Releases are made from *calamares* and tagged there. When, in future,
|
||||
> LTS releases resume, these steps may be edited again.
|
||||
>
|
||||
> Most things are automated through the release script [RELEASE.sh](RELEASE.sh)
|
||||
|
||||
## (0) During a release cycle
|
||||
|
||||
* Fetch latest translations from Transifex. We only push / pull translations
|
||||
from *calamares* branch, so longer-lived branches (e.g. 3.1.x) don't get
|
||||
translation updates. This is to keep the translation workflow simple.
|
||||
The script automatically commits changes to the translations. It's ok
|
||||
to do this during a release cycle. Run `sh ci/txpull.sh`
|
||||
to fetch translations and commit the changes in one go.
|
||||
* Push the strings to Transifex. From a checkout, run `ci/txpush.sh`
|
||||
* Update the list of enabled translation languages in `CMakeLists.txt`.
|
||||
Check the [translation site][transifex] for the list of languages with
|
||||
fairly complete translations, or use `ci/txstats.py --edit` for an automated
|
||||
suggestion. If there are changes, commit them.
|
||||
|
||||
## (1) Preparation
|
||||
|
||||
* Double-check the *CALAMARES_VERSION* value at the top of `CMakeLists.txt`.
|
||||
* Set *CALAMARES_RELEASE_MODE* to `ON` in `CMakeLists.txt`.
|
||||
* Edit `CHANGES` and set the date of the release.
|
||||
* Commit both. This is usually done with commit-message
|
||||
*Changes: pre-release housekeeping*.
|
||||
|
||||
## (2) Release Preparation
|
||||
|
||||
* (Only releases from master)
|
||||
Run [Coverity scan][coverity], fix what's relevant. The Coverity scan runs
|
||||
automatically once a week on master.
|
||||
* Build with clang -Weverything, fix what's relevant.
|
||||
```
|
||||
rm -rf build ; mkdir build ; cd build
|
||||
CC=clang CXX=clang++ cmake .. && make
|
||||
```
|
||||
* Make sure all tests pass.
|
||||
```
|
||||
make
|
||||
@@ -26,59 +44,98 @@ The Calamares release process
|
||||
an additional environment variable to be set for some tests, which will
|
||||
destroy an attached disk. This is not always desirable. There are some
|
||||
sample config-files that are empty and which fail the config-tests.
|
||||
* (Only releases from master)
|
||||
Notify [translators][transifex]. In the dashboard there is an *Announcements*
|
||||
link that you can use to send a translation announcement.
|
||||
Note that the release script (see below) also runs the tests and
|
||||
will bail out if any fail.
|
||||
* Make sure the translations are up-to-date. There is logic to check
|
||||
for changes in translations: a movable tag *translations* indicates
|
||||
when translations were last pushed, and the logic tries to enforce a
|
||||
week of latency between push-translations and a release, to allow
|
||||
translators to catch up. Run `ci/txcheck.sh` to confirm this.
|
||||
Run `ci/txcheck.sh --cleanup` to tidy up afterwards, and possibly pass
|
||||
`-T` to the release script to skip the translation-age check if you
|
||||
feel it is warranted.
|
||||
* Run the helper script `ci/RELEASE.sh` or follow steps below.
|
||||
The script checks:
|
||||
- for uncommitted local changes,
|
||||
- if translations are up-to-date and translators
|
||||
have had enough time to chase new strings,
|
||||
- that the build is successful (with gcc and clang, if available),
|
||||
- tests pass,
|
||||
- tarball can be created,
|
||||
- tarball can be signed.
|
||||
On success, it prints out a suitable signature- and SHA256 blurb
|
||||
for use in the release announcement.
|
||||
|
||||
[coverity]: https://scan.coverity.com/projects/calamares-calamares?tab=overview
|
||||
[transifex]: https://www.transifex.com/calamares/calamares/dashboard/
|
||||
## (3) Release
|
||||
|
||||
#### (1) Preparation
|
||||
Follow the instructions printed by the release script.
|
||||
|
||||
* Bump version in `CMakeLists.txt`, *CALAMARES_VERSION* variables, and set
|
||||
RC to a non-zero value (e.g. doing -rc1, -rc2, ...). Push that.
|
||||
* Check `README.md` and everything `ci/HACKING.md`, make sure it's all still
|
||||
relevant. Run `ci/calamaresstyle` to check the C++ code style.
|
||||
Run pycodestyle on recently-modified Python modules, fix what makes sense.
|
||||
* Check defaults in `settings.conf` and other configuration files.
|
||||
* (Only releases from master)
|
||||
Pull latest translations from Transifex. We only push / pull translations
|
||||
from master, so longer-lived branches (e.g. 3.1.x) don't get translation
|
||||
updates. This is to keep the translation workflow simple.
|
||||
```
|
||||
sh ci/txpull.sh
|
||||
```
|
||||
* (Only releases from master)
|
||||
Update the list of enabled translation languages in `CMakeLists.txt`.
|
||||
Check the [translation site][transifex] for the list of languages with
|
||||
fairly complete translations.
|
||||
|
||||
#### (2) Tarball
|
||||
|
||||
* Create tarball: `git-archive-all -v calamares-1.1-rc1.tar.gz` or without
|
||||
the helper script,
|
||||
```
|
||||
V=calamares-3.1.5
|
||||
git archive -o $V.tar.gz --prefix $V/ master
|
||||
```
|
||||
Double check that the tarball matches the version number.
|
||||
* Test tarball (e.g. unpack somewhere else and run the tests from step 0).
|
||||
|
||||
#### (3) Tag
|
||||
|
||||
* Set RC to zero in `CMakeLists.txt` if this is the actual release.
|
||||
* `git tag -s v1.1.0` Make sure the signing key is known in GitHub, so that the
|
||||
tag is shown as a verified tag. Do not sign -rc tags.
|
||||
* Generate MD5 and SHA256 checksums.
|
||||
* Upload tarball.
|
||||
* Announce on mailing list, notify packagers.
|
||||
* Write release article.
|
||||
|
||||
#### (4) Release day
|
||||
|
||||
* Publish tarball.
|
||||
* Update download page.
|
||||
* Push the tags.
|
||||
* Create a new release on GitHub.
|
||||
* Upload tarball and signature.
|
||||
* Publish release article on `calamares.io`.
|
||||
* Publicize on social networks.
|
||||
* Close associated milestone on GitHub if this is the actual release.
|
||||
* Publish blog post.
|
||||
* Close associated milestone on GitHub if it's entirely done.
|
||||
* Update topic on #calamares IRC channel.
|
||||
|
||||
## (4) Post-Release
|
||||
|
||||
* Bump the version number in `CMakeLists.txt` in *CALAMARES_VERSION*.
|
||||
* Set *CALAMARES_RELEASE_MODE* back to `OFF`.
|
||||
* Add a placeholder entry for the next release in `CHANGES` with date
|
||||
text *not released yet*.
|
||||
* Commit and push that, usually with the message
|
||||
*Changes: post-release housekeeping*.
|
||||
|
||||
```
|
||||
# 3.2.XX (unreleased) #
|
||||
|
||||
This release contains contributions from (alphabetically by first name):
|
||||
- No external contributors yet
|
||||
|
||||
## Core ##
|
||||
- No core changes yet
|
||||
|
||||
## Modules ##
|
||||
- No module changes yet
|
||||
```
|
||||
|
||||
# Related Material
|
||||
|
||||
> This section isn't directly related to any specific release,
|
||||
> but bears on all releases.
|
||||
|
||||
## GPG Key Maintainence
|
||||
|
||||
Calamares uses GPG Keys for signing the tarballs and some commits
|
||||
(tags, mostly). Calamares uses the **maintainer's** personal GPG
|
||||
key for this. This section details some GPG activities that the
|
||||
maintainer should do with those keys.
|
||||
|
||||
- Signing sub-key. It's convenient to use a signing sub-key specifically
|
||||
for the signing of Calamares. To do so, add a key to the private key.
|
||||
It's recommended to use key expiry, and to update signing keys periodically.
|
||||
- Run `gpg -K` to find the key ID of your personal GPG secret key.
|
||||
- Run `gpg --edit-key <keyid>` to edit that personal GPG key.
|
||||
- In gpg edit-mode, use `addkey`, then pick a key type that is *sign-only*
|
||||
(e.g. type 4, *RSA (sign only)*), then pick a keysize (3072 seems ok
|
||||
as of 2020) and set a key expiry time, (e.g. in 18 months time).
|
||||
- After generation, the secret key information is printed again, now
|
||||
including the new signing subkey:
|
||||
```
|
||||
ssb rsa3072/0xCFDDC96F12B1915C
|
||||
created: 2020-07-11 expires: 2022-01-02 usage: S
|
||||
```
|
||||
- Update the `RELEASE.sh` script with a new signing sub-key ID when a new
|
||||
one is generated. Also announce the change of signing sub-key (e.g. on
|
||||
the Calmares site or as part of a release announcement).
|
||||
- Send the updated key to keyservers with `gpg --send-keys <keyid>`
|
||||
- Optional: sanitize the keyring for use in development machines.
|
||||
Export the current subkeys of the primary key and keep **only** those
|
||||
secret keys around. There is documentation
|
||||
[here](https://blog.tinned-software.net/create-gnupg-key-with-sub-keys-to-sign-encrypt-authenticate/)
|
||||
but be careful.
|
||||
- Export the public key material with `gpg --export --armor <keyid>`,
|
||||
possibly also setting an output file.
|
||||
- Upload that public key to the relevant GitHub profile.
|
||||
- Upload that public key to the Calamares site.
|
||||
|
||||
|
@@ -1,9 +1,14 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
### USAGE
|
||||
#
|
||||
# Release script for Calamares
|
||||
#
|
||||
# NOTE: this script contains Linuxisms (in particular, expects GNU mktemp(1))
|
||||
#
|
||||
# This attempts to perform the different steps of the RELEASE.md
|
||||
# document automatically. It's not tested on other machines or
|
||||
# setups other than [ade]'s development VM.
|
||||
@@ -70,6 +75,12 @@ fi
|
||||
#
|
||||
#
|
||||
BUILDDIR=$(mktemp -d --suffix=-build --tmpdir=.)
|
||||
KEY_ID="CFDDC96F12B1915C"
|
||||
|
||||
# Try to make gpg cache the signing key, so we can leave the process
|
||||
# to run and sign.
|
||||
rm -f CHANGES.gpg
|
||||
gpg -s -u $KEY_ID CHANGES
|
||||
|
||||
### Build with default compiler
|
||||
#
|
||||
@@ -78,7 +89,7 @@ if test "x$BUILD_DEFAULT" = "xtrue" ; then
|
||||
rm -rf "$BUILDDIR"
|
||||
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
||||
( cd "$BUILDDIR" && cmake .. && make -j4 ) || { echo "Could not perform test-build in $BUILDDIR." ; exit 1 ; }
|
||||
( cd "$BUILDDIR" && make test ) || { echo "Tests failed in $BUILDDIR." ; exit 1 ; }
|
||||
( cd "$BUILDDIR" && make test ) || { echo "Tests failed in $BUILDDIR ." ; exit 1 ; }
|
||||
fi
|
||||
|
||||
### Build with clang
|
||||
@@ -95,7 +106,7 @@ if test "x$BUILD_CLANG" = "xtrue" ; then
|
||||
fi
|
||||
|
||||
if test "x$BUILD_ONLY" = "xtrue" ; then
|
||||
echo "Builds completed, release stopped. Build remains in $BUILDDIR."
|
||||
echo "Builds completed, release stopped. Build remains in $BUILDDIR ."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -106,20 +117,19 @@ else
|
||||
# Presumably -B was given; just do the cmake part
|
||||
rm -rf "$BUILDDIR"
|
||||
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
||||
( cd "$BUILDDIR" && cmake .. ) || { echo "Could not run cmake in $BUILDDIR." ; exit 1 ; }
|
||||
( cd "$BUILDDIR" && cmake .. ) || { echo "Could not run cmake in $BUILDDIR ." ; exit 1 ; }
|
||||
fi
|
||||
|
||||
### Get version number for this release
|
||||
#
|
||||
#
|
||||
V=$( cd "$BUILDDIR" && make show-version | grep ^CALAMARES_VERSION | sed s/^[A-Z_]*=// )
|
||||
test -n "$V" || { echo "Could not obtain version in $BUILDDIR." ; exit 1 ; }
|
||||
test -n "$V" || { echo "Could not obtain version in $BUILDDIR ." ; exit 1 ; }
|
||||
|
||||
### Create signed tag
|
||||
#
|
||||
# This is the signing key ID associated with the GitHub account adriaandegroot,
|
||||
# which is used to create all "verified" tags in the Calamares repo.
|
||||
KEY_ID="128F00873E05AF1D"
|
||||
git tag -u "$KEY_ID" -m "Release v$V" "v$V" || { echo "Could not sign tag v$V." ; exit 1 ; }
|
||||
|
||||
### Create the tarball
|
||||
@@ -139,7 +149,8 @@ TMPDIR=$(mktemp -d --suffix="-calamares-$D")
|
||||
test -d "$TMPDIR" || { echo "Could not create tarball-build directory." ; exit 1 ; }
|
||||
tar xzf "$TAR_FILE" -C "$TMPDIR" || { echo "Could not unpack tarball." ; exit 1 ; }
|
||||
test -d "$TMPDIR/$TAR_V" || { echo "Tarball did not contain source directory." ; exit 1 ; }
|
||||
( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed in $TMPDIR." ; exit 1 ; }
|
||||
( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed in $TMPDIR ." ; exit 1 ; }
|
||||
gpg -s -u $KEY_ID --detach --armor $TAR_FILE # Sign the tarball
|
||||
|
||||
### Cleanup
|
||||
#
|
||||
@@ -152,7 +163,6 @@ rm -rf "$TMPDIR" # From tarball
|
||||
cat <<EOF
|
||||
# Next steps for this release:
|
||||
git push origin v$V
|
||||
gpg -s -u $KEY_ID --detach --armor $TAR_FILE # Sign the tarball
|
||||
# Upload tarball $TAR_FILE and the signature $TAR_FILE.asc
|
||||
# Announce via https://github.com/calamares/calamares/releases/new
|
||||
# SHA256: $SHA256
|
||||
|
@@ -1,3 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org>
|
||||
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
|
||||
# Do not create a backup file
|
||||
suffix=none
|
||||
|
||||
|
@@ -1,25 +1,75 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org>
|
||||
# SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Calls astyle with settings matching Calamares coding style
|
||||
# Requires astyle >= 2.04 and clang-format-7
|
||||
# Requires astyle >= 2.04 and clang-format-8 or later
|
||||
#
|
||||
# You can pass in directory names, in which case the files
|
||||
# in that directory (NOT below it) are processed.
|
||||
#
|
||||
LANG=C
|
||||
LC_ALL=C
|
||||
LC_NUMERIC=C
|
||||
export LANG LC_ALL LC_NUMERIC
|
||||
|
||||
BASEDIR=$(dirname $0)
|
||||
TOPDIR=$( cd $BASEDIR/.. && pwd -P )
|
||||
test -d "$BASEDIR" || { echo "! Could not determine base for $0" ; exit 1 ; }
|
||||
test -d "$TOPDIR" || { echo "! Cound not determine top-level source dir" ; exit 1 ; }
|
||||
test -f "$TOPDIR/.clang-format.base" || { echo "! No .clang-format support files in $TOPDIR" ; exit 1 ; }
|
||||
|
||||
AS=$( which astyle )
|
||||
|
||||
for _cf in clang-format-7 clang-format-8 clang-format70 clang-format80 clang-format
|
||||
# Allow specifying CF_VERSIONS outside already
|
||||
CF_VERSIONS="$CF_VERSIONS clang-format-8 clang-format80 clang-format90 clang-format-9.0.1 clang-format"
|
||||
for _cf in $CF_VERSIONS
|
||||
do
|
||||
# Not an error if this particular clang-format isn't found
|
||||
CF=$( which $_cf || true )
|
||||
CF=$( which $_cf 2> /dev/null || true )
|
||||
test -n "$CF" && break
|
||||
done
|
||||
|
||||
test -n "$AS" || { echo "! No astyle found in PATH"; exit 1 ; }
|
||||
test -n "$CF" || { echo "! No clang-format-7 found in PATH"; exit 1 ; }
|
||||
test -n "$CF" || { echo "! No clang-format ($CF_VERSIONS) found in PATH"; exit 1 ; }
|
||||
test -x "$AS" || { echo "! $AS is not executable."; exit 1 ; }
|
||||
test -x "$CF" || { echo "! $CF is not executable."; exit 1 ; }
|
||||
|
||||
### CLANG-FORMAT-WRANGLING
|
||||
#
|
||||
# Version 7 and earlier doesn't understand all the options we would like
|
||||
# Version 8 is ok
|
||||
# Version 9 is ok
|
||||
# Later versions change some defaults so need extra wrangling.
|
||||
# .. there are extra files that are appended to the settings, per
|
||||
# .. clang-format version.
|
||||
|
||||
format_version=`"$CF" --version | tr -dc '[^.0-9]' | cut -d . -f 1`
|
||||
case "$format_version" in
|
||||
[0-7] )
|
||||
echo "! Clang-format version 8+ required"
|
||||
exit 1
|
||||
;;
|
||||
[89] )
|
||||
:
|
||||
;;
|
||||
* )
|
||||
echo "! Clang-format version '$format_version' unsupported."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
_fmt="$TOPDIR/.clang-format"
|
||||
cp "$_fmt.base" "$_fmt"
|
||||
for f in "$extra_settings" ; do
|
||||
test -f "$_fmt.$f" && cat "$_fmt.$f" >> "$_fmt"
|
||||
done
|
||||
|
||||
|
||||
### FILE PROCESSING
|
||||
#
|
||||
#
|
||||
set -e
|
||||
|
||||
any_dirs=no
|
||||
@@ -30,8 +80,10 @@ done
|
||||
|
||||
style_some()
|
||||
{
|
||||
$AS --options=$(dirname $0)/astylerc --quiet "$@"
|
||||
$CF -i -style=file "$@"
|
||||
if test -n "$*" ; then
|
||||
$AS --options=$BASEDIR/astylerc --quiet "$@"
|
||||
$CF -i -style=file "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
if test "x$any_dirs" = "xyes" ; then
|
||||
@@ -46,3 +98,8 @@ if test "x$any_dirs" = "xyes" ; then
|
||||
else
|
||||
style_some "$@"
|
||||
fi
|
||||
|
||||
### CLANG-FORMAT-WRANGLING
|
||||
#
|
||||
# Restore the original .clang-format
|
||||
cp "$_fmt.base" "$_fmt"
|
||||
|
136
ci/configvalidator.py
Normal file
136
ci/configvalidator.py
Normal file
@@ -0,0 +1,136 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
usage = """
|
||||
Validates a Calamares config file -- YAML syntax -- against a schema.
|
||||
|
||||
The schema is also written in YAML syntax, but the schema itself
|
||||
is JSON-schema. This is possible because all JSON is YAML, and most
|
||||
YAML is JSON. The limited subset of YAML that Calamares uses is
|
||||
JSON-representable, anyway.
|
||||
|
||||
Usage:
|
||||
configvalidator.py <schema> <file> ...
|
||||
configvalidator.py -m <module>
|
||||
configvalidator.py -x
|
||||
|
||||
Exits with value 0 on success, otherwise:
|
||||
1 on missing dependencies
|
||||
2 on invalid command-line arguments
|
||||
3 on missing files
|
||||
4 if files have invalid syntax
|
||||
5 if files fail to validate
|
||||
Use -x as only command-line argument to check the imports only.
|
||||
|
||||
Use -m <module> as shorthand for standard paths in src/modules/<module>/
|
||||
"""
|
||||
|
||||
# The schemata originally lived outside the Calamares repository,
|
||||
# without documented tooling. By putting them in the repository
|
||||
# with the example files and explicit tooling, there's a better
|
||||
# chance of them catching problems and acting as documentation.
|
||||
|
||||
dependencies = """
|
||||
Dependencies for this tool are: py-yaml and py-jsonschema.
|
||||
|
||||
https://pyyaml.org/
|
||||
https://github.com/Julian/jsonschema
|
||||
|
||||
Simple installation is `pip install pyyaml jsonschema`
|
||||
"""
|
||||
|
||||
ERR_IMPORT, ERR_USAGE, ERR_FILE_NOT_FOUND, ERR_SYNTAX, ERR_INVALID = range(1,6)
|
||||
|
||||
### DEPENDENCIES
|
||||
#
|
||||
#
|
||||
try:
|
||||
from jsonschema import validate, SchemaError, ValidationError
|
||||
from jsonschema import draft7_format_checker
|
||||
from yaml import safe_load, YAMLError
|
||||
except ImportError as e:
|
||||
print(e)
|
||||
print(dependencies)
|
||||
exit(ERR_IMPORT)
|
||||
|
||||
from os.path import exists
|
||||
import sys
|
||||
|
||||
### INPUT VALIDATION
|
||||
#
|
||||
#
|
||||
if len(sys.argv) < 3:
|
||||
# Special-case: called with -x to just test the imports
|
||||
if len(sys.argv) == 2 and sys.argv[1] == "-x":
|
||||
exit(0)
|
||||
print(usage)
|
||||
exit(ERR_USAGE)
|
||||
|
||||
if len(sys.argv) == 3 and sys.argv[1] == "-m":
|
||||
module = sys.argv[2]
|
||||
schema_file_name = f"src/modules/{module}/{module}.schema.yaml"
|
||||
config_file_names = [ f"src/modules/{module}/{module}.conf" ]
|
||||
else:
|
||||
schema_file_name = sys.argv[1]
|
||||
config_file_names = sys.argv[2:]
|
||||
|
||||
if not exists(schema_file_name):
|
||||
print(usage)
|
||||
print("\nSchema file '{}' does not exist.".format(schema_file_name))
|
||||
exit(ERR_FILE_NOT_FOUND)
|
||||
for f in config_file_names:
|
||||
if not exists(f):
|
||||
print(usage)
|
||||
print("\nYAML file '{}' does not exist.".format(f))
|
||||
exit(ERR_FILE_NOT_FOUND)
|
||||
|
||||
### FILES SYNTAX CHECK
|
||||
#
|
||||
#
|
||||
with open(schema_file_name, "r") as data:
|
||||
try:
|
||||
schema = safe_load(data)
|
||||
except YAMLError as e:
|
||||
print("Schema error: {} {}.".format(e.problem, e.problem_mark))
|
||||
print("\nSchema file '{}' is invalid YAML.".format(schema_file_name))
|
||||
exit(ERR_SYNTAX)
|
||||
|
||||
try:
|
||||
validate(instance={}, schema=schema)
|
||||
# While developing the schemata, get full exceptions from schema failure
|
||||
except SchemaError as e:
|
||||
print(e)
|
||||
print("\nSchema file '{}' is invalid JSON-Schema.".format(schema_file_name))
|
||||
exit(ERR_INVALID)
|
||||
except ValidationError:
|
||||
# Just means that empty isn't valid, but the Schema itself is
|
||||
pass
|
||||
|
||||
configs = []
|
||||
for f in config_file_names:
|
||||
config = None
|
||||
with open(f, "r") as data:
|
||||
try:
|
||||
config = safe_load(data)
|
||||
except YAMLError as e:
|
||||
print("YAML error: {} {}.".format(e.problem, e.problem_mark))
|
||||
print("\nYAML file '{}' is invalid.".format(f))
|
||||
exit(ERR_SYNTAX)
|
||||
if config is None:
|
||||
print("YAML file '{}' is empty.".format(f))
|
||||
configs.append(config)
|
||||
|
||||
assert len(configs) == len(config_file_names), "Not all configurations loaded."
|
||||
|
||||
### SCHEMA VALIDATION
|
||||
#
|
||||
#
|
||||
for c, f in zip(configs, config_file_names):
|
||||
try:
|
||||
validate(instance=c, schema=schema)
|
||||
except ValidationError as e:
|
||||
print(e)
|
||||
print("\nConfig file '{}' does not validate in schema.".format(f))
|
||||
exit(ERR_INVALID)
|
@@ -3,4 +3,7 @@
|
||||
|
||||
Calamares doesn't seem to geenerate any false positives,
|
||||
so the model-file is empty.
|
||||
|
||||
SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
|
||||
SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd "$WORKSPACE"
|
||||
cppcheck --enable=all --inconclusive --xml --xml-version=2 src 2> cppcheck.xml
|
@@ -1,13 +0,0 @@
|
||||
# Build configuration on Travis.
|
||||
#
|
||||
# Defines a CMAKE_ARGS variable for use with cmake
|
||||
#
|
||||
# This file is sourced by travis.sh, and exports the variables
|
||||
# to the environment.
|
||||
CMAKE_ARGS="\
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DWEBVIEW_FORCE_WEBKIT=1 \
|
||||
-DKDE_INSTALL_USE_QT_SYS_PATHS=ON \
|
||||
-DWITH_PYTHONQT=OFF"
|
||||
|
||||
export CMAKE_ARGS
|
@@ -1,55 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Travis CI script for use on every-commit:
|
||||
# - build and install Calamares
|
||||
#
|
||||
test -n "$BUILDDIR" || { echo "! \$BUILDDIR not set" ; exit 1 ; }
|
||||
test -n "$SRCDIR" || { echo "! \$SRCDIR not set" ; exit 1 ; }
|
||||
|
||||
test -d $BUILDDIR || { echo "! $BUILDDIR not a directory" ; exit 1 ; }
|
||||
test -d $SRCDIR || { echo "! $SRCDIR not a directory" ; exit 1 ; }
|
||||
test -f $SRCDIR/CMakeLists.txt || { echo "! Missing $SRCDIR/CMakeLists.txt" ; exit 1 ; }
|
||||
|
||||
cd $BUILDDIR || exit 1
|
||||
|
||||
section() {
|
||||
echo "###"
|
||||
echo "### $1"
|
||||
echo "###"
|
||||
pwd -P
|
||||
df -h
|
||||
}
|
||||
|
||||
section "cmake $CMAKE_ARGS $SRCDIR"
|
||||
cmake $CMAKE_ARGS $SRCDIR || { echo "! CMake failed" ; exit 1 ; }
|
||||
|
||||
section "make"
|
||||
make -j2 || { echo "! Make recheck" ; pwd -P ; df -h ; make -j1 VERBOSE=1 ; echo "! Make failed" ; exit 1 ; }
|
||||
|
||||
section "make install"
|
||||
|
||||
install_debugging() {
|
||||
ls -la $( find "$1" -type f -name '*.so' )
|
||||
}
|
||||
|
||||
echo "# Build results"
|
||||
install_debugging "$BUILDDIR"
|
||||
|
||||
echo "# Install"
|
||||
DESTDIR=/build/INSTALL_ROOT
|
||||
mkdir -p "$DESTDIR"
|
||||
|
||||
if make install VERBOSE=1 DESTDIR="$DESTDIR" ;
|
||||
then
|
||||
echo "# .. install OK"
|
||||
result=true
|
||||
else
|
||||
echo "# .. install failed"
|
||||
result=false
|
||||
fi
|
||||
|
||||
|
||||
section "Install results"
|
||||
install_debugging "$DESTDIR"
|
||||
|
||||
$result || { echo "! Install failed" ; exit 1 ; } # Result of make install, above
|
@@ -1,34 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Travis CI script for weekly (cron) use:
|
||||
# - use the coverity tool to build and and upload results
|
||||
#
|
||||
test -n "$COVERITY_SCAN_TOKEN" || { echo "! Missing Coverity token" ; exit 1 ; }
|
||||
test -n "$BUILDDIR" || { echo "! \$BUILDDIR not set" ; exit 1 ; }
|
||||
test -n "$SRCDIR" || { echo "! \$SRCDIR not set" ; exit 1 ; }
|
||||
|
||||
test -d $BUILDDIR || { echo "! $BUILDDIR not a directory" ; exit 1 ; }
|
||||
test -d $SRCDIR || { echo "! $SRCDIR not a directory" ; exit 1 ; }
|
||||
test -f $SRCDIR/CMakeLists.txt || { echo "! Missing $SRCDIR/CMakeLists.txt" ; exit 1 ; }
|
||||
|
||||
cd $BUILDDIR || exit 1
|
||||
|
||||
curl -k -o coverity_tool.tar.gz \
|
||||
-d "token=$COVERITY_SCAN_TOKEN&project=calamares%2Fcalamares" \
|
||||
https://scan.coverity.com/download/cxx/linux64 || exit 1
|
||||
mkdir "$BUILDDIR/coveritytool"
|
||||
tar xvf coverity_tool.tar.gz -C "$BUILDDIR/coveritytool" --strip-components 2
|
||||
export PATH="$BUILDDIR/coveritytool/bin:$PATH"
|
||||
|
||||
echo "# cmake -DCMAKE_BUILD_TYPE=Debug $CMAKE_ARGS $SRCDIR"
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug $CMAKE_ARGS $SRCDIR || exit 1
|
||||
cov-build --dir cov-int make -j2
|
||||
|
||||
tar caf calamares-ci.tar.xz cov-int
|
||||
|
||||
curl -k --form token=$COVERITY_SCAN_TOKEN \
|
||||
--form email=groot@kde.org \
|
||||
--form file=@calamares-ci.tar.xz \
|
||||
--form version="master-`date -u +%Y%m%d`" \
|
||||
--form description="master on `date -u`" \
|
||||
https://scan.coverity.com/builds?project=calamares%2Fcalamares
|
21
ci/travis.sh
21
ci/travis.sh
@@ -1,21 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Travis build driver script:
|
||||
# - the regular CI runs, triggered by commits, run a script that builds
|
||||
# and installs calamares, and then runs the tests.
|
||||
# - the cronjob CI runs, triggered weekly, run a script that uses the
|
||||
# coverity tools to submit a build. This is slightly more resource-
|
||||
# intensive than the coverity add-on, but works on master.
|
||||
#
|
||||
D=`dirname "$0"`
|
||||
test -d "$D" || { echo "! No directory $D" ; exit 1 ; }
|
||||
test -x "$D/travis-continuous.sh" || { echo "! Missing -continuous" ; exit 1 ; }
|
||||
test -x "$D/travis-coverity.sh" || { echo "! Missing -coverity" ; exit 1 ; }
|
||||
|
||||
test -f "$D/travis-config.sh" && . "$D/travis-config.sh"
|
||||
|
||||
if test "$TRAVIS_EVENT_TYPE" = "cron" ; then
|
||||
exec "$D/travis-coverity.sh"
|
||||
else
|
||||
exec "$D/travis-continuous.sh"
|
||||
fi
|
@@ -1,5 +1,18 @@
|
||||
#! /bin/sh
|
||||
|
||||
### LICENSE
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2019-2020 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# This file is Free Software: you can redistribute it and/or modify
|
||||
# it under the terms of the 2-clause BSD License.
|
||||
#
|
||||
### END LICENSE
|
||||
|
||||
### USAGE
|
||||
#
|
||||
# Does the translation tag (from a previous txpush) exist?
|
||||
# This assumes that the release host has also locally done
|
||||
# a translations push, which works for the current development
|
||||
@@ -7,9 +20,16 @@
|
||||
# the typical txpush log messages instead of the tag.
|
||||
#
|
||||
# Use --cleanup as an argument to clean things up.
|
||||
#
|
||||
# Normal use:
|
||||
# $ sh ci/txcheck.sh
|
||||
# If there are differences, fix them and then clean up:
|
||||
# $ sh ci/txcheck.sh --cleanup
|
||||
#
|
||||
### END USAGE
|
||||
|
||||
# The files that are translated; should match the contents of .tx/config
|
||||
TX_FILE_LIST="lang/calamares_en.ts lang/python.pot src/modules/dummypythonqt/lang/dummypythonqt.pot calamares.desktop"
|
||||
TX_FILE_LIST="lang/calamares_en.ts lang/python.pot calamares.desktop"
|
||||
|
||||
### COMMAND ARGUMENTS
|
||||
#
|
||||
@@ -17,15 +37,18 @@ TX_FILE_LIST="lang/calamares_en.ts lang/python.pot src/modules/dummypythonqt/lan
|
||||
# normally used much later in the script.
|
||||
tx_cleanup()
|
||||
{
|
||||
# Cleanup artifacs of checking
|
||||
git worktree remove --force build-txcheck-head
|
||||
git worktree remove --force build-txcheck-prev
|
||||
git branch -D build-txcheck-head > /dev/null 2>&1
|
||||
# Cleanup artifacs of checking
|
||||
git worktree remove --force build-txcheck-head
|
||||
git worktree remove --force build-txcheck-prev
|
||||
git branch -D build-txcheck-head > /dev/null 2>&1
|
||||
}
|
||||
|
||||
if test "x$1" = "x--cleanup" ; then
|
||||
tx_cleanup
|
||||
exit 0
|
||||
tx_cleanup
|
||||
exit 0
|
||||
fi
|
||||
if test "x$1" = "x--help" ; then
|
||||
sed -e '1,/USAGE/d' -e '/END.USAGE/,$d' < "$0"
|
||||
fi
|
||||
test -z "$1" || { echo "! Usage: txcheck.sh [--cleanup]" ; exit 1 ; }
|
||||
|
||||
@@ -36,22 +59,22 @@ test -z "$1" || { echo "! Usage: txcheck.sh [--cleanup]" ; exit 1 ; }
|
||||
XMLLINT=""
|
||||
for _xmllint in xmllint
|
||||
do
|
||||
$_xmllint --version > /dev/null 2>&1 && XMLLINT=$_xmllint
|
||||
test -n "$XMLLINT" && break
|
||||
$_xmllint --version > /dev/null 2>&1 && XMLLINT=$_xmllint
|
||||
test -n "$XMLLINT" && break
|
||||
done
|
||||
|
||||
# Distinguish GNU date from BSD date
|
||||
if date +%s -d "1 week ago" > /dev/null 2>&1 ; then
|
||||
last_week() { date +%s -d "1 week ago" ; }
|
||||
last_week() { date +%s -d "1 week ago" ; }
|
||||
else
|
||||
last_week() { date -v1w +%s; }
|
||||
last_week() { date -v1w +%s; }
|
||||
fi
|
||||
|
||||
# Distinguish GNU SHA executables from BSD ones
|
||||
if which sha256sum > /dev/null 2>&1 ; then
|
||||
SHA256=sha256sum
|
||||
SHA256=sha256sum
|
||||
else
|
||||
SHA256=sha256
|
||||
SHA256=sha256
|
||||
fi
|
||||
|
||||
### CHECK WORKING DIRECTORY
|
||||
@@ -67,6 +90,8 @@ fi
|
||||
if test `git describe` = `git describe --dirty` ; then
|
||||
:
|
||||
else
|
||||
# Don't want any local changes, since those won't be
|
||||
# reflected in the worktrees and we might miss a string change.
|
||||
echo "! There are local changes."
|
||||
exit 1
|
||||
fi
|
||||
@@ -75,13 +100,20 @@ DATE_PREV=$( git log -1 translation --date=unix | sed -e '/^Date:/s+.*:++p' -e d
|
||||
DATE_HEAD=$( last_week )
|
||||
test "$DATE_PREV" -le "$DATE_HEAD" || { echo "! Translation tag has not aged enough." ; git log -1 translation ; exit 1 ; }
|
||||
|
||||
# Tag is good, do real work of checking strings: collect names of relevant files
|
||||
# Tag is good, check that necessary files exist. The list of
|
||||
# files is hard-coded, but should match what is in the Transifex config.
|
||||
test -f ".tx/config" || { echo "! No Transifex configuration is present." ; exit 1 ; }
|
||||
for f in $TX_FILE_LIST ; do
|
||||
test -f $f || { echo "! Translation file '$f' does not exist." ; exit 1 ; }
|
||||
done
|
||||
|
||||
# The state of translations
|
||||
### COMPARE TRANSLATIONS
|
||||
#
|
||||
#
|
||||
|
||||
# The state of translations; assume that sha256 is enough
|
||||
# to distinguish changed translations when we cat all the
|
||||
# string sources together.
|
||||
tx_sum()
|
||||
{
|
||||
CURDIR=`pwd`
|
||||
@@ -93,7 +125,7 @@ tx_sum()
|
||||
|
||||
# Remove linenumbers from .ts (XML) and .pot
|
||||
sed -i'' -e '/<location filename/d' "$WORKTREE_NAME/lang/calamares_en.ts"
|
||||
sed -i'' -e '/^#: src..*[0-9]$/d' $WORKTREE_NAME/lang/python.pot $WORKTREE_NAME/src/modules/dummypythonqt/lang/dummypythonqt.pot
|
||||
sed -i'' -e '/^#: src..*[0-9]$/d' $WORKTREE_NAME/lang/python.pot
|
||||
|
||||
_SUM=$( cd $WORKTREE_NAME && cat $TX_FILE_LIST | $SHA256 )
|
||||
echo "$_SUM"
|
||||
|
85
ci/txpull.sh
85
ci/txpull.sh
@@ -1,4 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
### LICENSE
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# This file is Free Software: you can redistribute it and/or modify
|
||||
# it under the terms of the 2-clause BSD License.
|
||||
#
|
||||
### END LICENSE
|
||||
|
||||
### USAGE
|
||||
#
|
||||
# Fetch the Transifex translations for Calamares and incorporate them
|
||||
# into the source tree, adding commits of the different files.
|
||||
@@ -6,21 +20,18 @@
|
||||
# Run this (occasionally) at the top-level directory to get
|
||||
# new translations. See also CMakeLists.txt and ci/txstats.py
|
||||
# for update instructions.
|
||||
#
|
||||
### END USAGE
|
||||
|
||||
### INITIAL SETUP
|
||||
### SANITY CHECKING
|
||||
#
|
||||
# This stuff needs to be done once; in a real CI environment where it
|
||||
# runs regularly in a container, the setup needs to be done when
|
||||
# creating the container.
|
||||
# The script needs a .tx/config to talk to the Transifex server;
|
||||
# it also checks that it is run from the top-level of a Calamares
|
||||
# checkout. In order to use the system overall, you'll also need:
|
||||
# - ~/.gitconfig (For the git commits this does)
|
||||
# - ~/.transifexrc (Password token for Transifex)
|
||||
# - ~/.ssh (For git commits)
|
||||
#
|
||||
#
|
||||
# cp ~/jenkins-master/.transifexrc ~ # Transifex user settings
|
||||
# cp ~/jenkins-master/.gitconfig ~ # Git config, user settings
|
||||
# cp -R ~/jenkins-master/.ssh ~ # SSH, presumably for github
|
||||
#
|
||||
# cd "$WORKSPACE"
|
||||
# git config --global http.sslVerify false
|
||||
|
||||
test -f "CMakeLists.txt" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||
test -f ".tx/config" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||
test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||
@@ -32,8 +43,8 @@ test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ;
|
||||
XMLLINT=""
|
||||
for _xmllint in xmllint
|
||||
do
|
||||
$_xmllint --version > /dev/null 2>&1 && XMLLINT=$_xmllint
|
||||
test -n "$XMLLINT" && break
|
||||
$_xmllint --version > /dev/null 2>&1 && XMLLINT=$_xmllint
|
||||
test -n "$XMLLINT" && break
|
||||
done
|
||||
# XMLLINT is optional
|
||||
|
||||
@@ -53,9 +64,9 @@ tx pull --force --source --all
|
||||
# so clean them up after pulling.
|
||||
#
|
||||
drop_language() {
|
||||
rm -rf lang/python/"$1" src/modules/dummypythonqt/lang/"$1" lang/calamares_"$1".ts
|
||||
grep -v "\\[$1]" calamares.desktop > calamares.desktop.new
|
||||
mv calamares.desktop.new calamares.desktop
|
||||
rm -rf lang/python/"$1" lang/calamares_"$1".ts
|
||||
grep -v "\\[$1]" calamares.desktop > calamares.desktop.new
|
||||
mv calamares.desktop.new calamares.desktop
|
||||
}
|
||||
|
||||
drop_language es_ES
|
||||
@@ -68,10 +79,10 @@ mv calamares.desktop.new calamares.desktop
|
||||
|
||||
# And fixup the XML files like in txpush.sh
|
||||
if test -n "$XMLLINT" ; then
|
||||
for TS_FILE in lang/calamares_*.ts
|
||||
do
|
||||
$XMLLINT --c14n11 "$TS_FILE" | { echo "<!DOCTYPE TS>" ; cat - ; } | $XMLLINT --format --encode utf-8 -o "$TS_FILE".new - && mv "$TS_FILE".new "$TS_FILE"
|
||||
done
|
||||
for TS_FILE in lang/calamares_*.ts
|
||||
do
|
||||
$XMLLINT --c14n11 "$TS_FILE" | { echo "<!DOCTYPE TS>" ; cat - ; } | $XMLLINT --format --encode utf-8 -o "$TS_FILE".new - && mv "$TS_FILE".new "$TS_FILE"
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
@@ -108,26 +119,24 @@ git diff --numstat src/modules | awk '($1==1 && $2==1){print $3}' | xargs git ch
|
||||
# Go through the Python modules; those with a lang/ subdir have their
|
||||
# own complete gettext-based setup.
|
||||
for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do
|
||||
FILES=$(find "$MODULE_DIR" -name "*.py" -a -type f)
|
||||
if test -n "$FILES" ; then
|
||||
MODULE_NAME=$(basename ${MODULE_DIR})
|
||||
if [ -d ${MODULE_DIR}/lang ]; then
|
||||
# Convert PO files to MO files
|
||||
for POFILE in $(find ${MODULE_DIR} -name "*.po") ; do
|
||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
|
||||
msgfmt -o ${POFILE%.po}.mo $POFILE
|
||||
done
|
||||
git add --verbose ${MODULE_DIR}/lang/*
|
||||
git commit "$AUTHOR" --message="i18n: [${MODULE_NAME}] $BOILERPLATE" | true
|
||||
fi
|
||||
fi
|
||||
FILES=$(find "$MODULE_DIR" -name "*.py" -a -type f)
|
||||
if test -n "$FILES" ; then
|
||||
MODULE_NAME=$(basename ${MODULE_DIR})
|
||||
if [ -d ${MODULE_DIR}/lang ]; then
|
||||
# Convert PO files to MO files
|
||||
for POFILE in $(find ${MODULE_DIR} -name "*.po") ; do
|
||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
|
||||
# msgfmt -o ${POFILE%.po}.mo $POFILE
|
||||
done
|
||||
git add --verbose ${MODULE_DIR}/lang/*
|
||||
git commit "$AUTHOR" --message="i18n: [${MODULE_NAME}] $BOILERPLATE" | true
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
for POFILE in $(find lang -name "python.po") ; do
|
||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
|
||||
msgfmt -o ${POFILE%.po}.mo $POFILE
|
||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' $POFILE
|
||||
# msgfmt -o ${POFILE%.po}.mo $POFILE
|
||||
done
|
||||
git add --verbose lang/python*
|
||||
git commit "$AUTHOR" --message="i18n: [python] $BOILERPLATE" | true
|
||||
|
||||
# git push --set-upstream origin master
|
||||
|
138
ci/txpush.sh
138
ci/txpush.sh
@@ -1,48 +1,63 @@
|
||||
#!/bin/sh
|
||||
|
||||
### LICENSE
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-FileCopyrightText: 2017-2020 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# This file is Free Software: you can redistribute it and/or modify
|
||||
# it under the terms of the 2-clause BSD License.
|
||||
#
|
||||
### END LICENSE
|
||||
|
||||
### USAGE
|
||||
#
|
||||
# Extract translations from Calamares source and send them
|
||||
# to Transifex.
|
||||
# to Transifex. Also (forcibly) updates the git "translation"
|
||||
# tag to document that source texts were updated and sent;
|
||||
# this is used by txcheck.sh to ensure that there's enough
|
||||
# time between updates and releases, and that strings don't
|
||||
# change between updates and releases.
|
||||
#
|
||||
# Run this at the top-level.
|
||||
#
|
||||
# Use the --no-tx option to do the extraction, but not the
|
||||
# pushing-to-Transifex part. This can be useful to check for
|
||||
# new strings or when testing the tools themselves.
|
||||
#
|
||||
### END USAGE
|
||||
|
||||
### INITIAL SETUP
|
||||
### SANITY CHECKING
|
||||
#
|
||||
# This stuff needs to be done once; in a real CI environment where it
|
||||
# runs regularly in a container, the setup needs to be done when
|
||||
# creating the container.
|
||||
# The script needs a .tx/config to talk to the Transifex server;
|
||||
# it also checks that it is run from the top-level of a Calamares
|
||||
# checkout. In order to use the system overall, you'll also need:
|
||||
# - ~/.gitconfig (For the git commits this does)
|
||||
# - ~/.transifexrc (Password token for Transifex)
|
||||
# - ~/.ssh (For git commits)
|
||||
#
|
||||
#
|
||||
# cp ~/jenkins-master/.transifexrc ~ # Transifex user settings
|
||||
# cp ~/jenkins-master/.gitconfig ~ # Git config, user settings
|
||||
# cp -R ~/jenkins-master/.ssh ~ # SSH, presumably for github
|
||||
#
|
||||
# cd "$WORKSPACE"
|
||||
# git config --global http.sslVerify false
|
||||
|
||||
test -f "CMakeLists.txt" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||
test -f ".tx/config" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||
test -f "calamares.desktop" || { echo "! Not at Calamares top-level" ; exit 1 ; }
|
||||
|
||||
if test "x$1" = "x--no-tx" ; then
|
||||
# tx is the transifex command -- eat its arguments and do nothing
|
||||
tx() {
|
||||
echo "Skipped tx $*"
|
||||
}
|
||||
# txtag is used to tag in git to measure changes -- skip it too
|
||||
txtag() {
|
||||
echo "Skipped tx tagging."
|
||||
}
|
||||
# tx is the transifex command -- eat its arguments and do nothing
|
||||
tx() {
|
||||
echo "Skipped tx $*"
|
||||
}
|
||||
# txtag is used to tag in git to measure changes -- skip it too
|
||||
txtag() {
|
||||
echo "Skipped tx tagging."
|
||||
}
|
||||
else
|
||||
# tx is the regular transifex command
|
||||
# txtag is used to tag in git to measure changes
|
||||
txtag() {
|
||||
git tag -f translation
|
||||
git push --force origin translation
|
||||
}
|
||||
# tx is the regular transifex command
|
||||
# txtag is used to tag in git to measure changes
|
||||
txtag() {
|
||||
git tag -f translation
|
||||
git push --force origin translation
|
||||
}
|
||||
fi
|
||||
|
||||
|
||||
@@ -52,18 +67,18 @@ fi
|
||||
LUPDATE=""
|
||||
for _lupdate in lupdate-qt5 lupdate
|
||||
do
|
||||
export QT_SELECT=5
|
||||
$_lupdate -version > /dev/null 2>&1 || export QT_SELECT=qt5
|
||||
$_lupdate -version > /dev/null 2>&1 && LUPDATE=$_lupdate
|
||||
test -n "$LUPDATE" && break
|
||||
export QT_SELECT=5
|
||||
$_lupdate -version > /dev/null 2>&1 || export QT_SELECT=qt5
|
||||
$_lupdate -version > /dev/null 2>&1 && LUPDATE=$_lupdate
|
||||
test -n "$LUPDATE" && break
|
||||
done
|
||||
test -n "$LUPDATE" || { echo "! No working lupdate" ; lupdate -version ; exit 1 ; }
|
||||
|
||||
XMLLINT=""
|
||||
for _xmllint in xmllint
|
||||
do
|
||||
$_xmllint --version > /dev/null 2>&1 && XMLLINT=$_xmllint
|
||||
test -n "$XMLLINT" && break
|
||||
$_xmllint --version > /dev/null 2>&1 && XMLLINT=$_xmllint
|
||||
test -n "$XMLLINT" && break
|
||||
done
|
||||
# XMLLINT is optional
|
||||
|
||||
@@ -77,16 +92,23 @@ done
|
||||
# those are done separately.
|
||||
_srcdirs="src/calamares src/libcalamares src/libcalamaresui src/modules src/qml"
|
||||
$LUPDATE -no-obsolete $_srcdirs -ts lang/calamares_en.ts
|
||||
# Updating the TZ only needs to happen when the TZ themselves are updated,
|
||||
# very-very-rarely.
|
||||
# Non-Transifex special-cases
|
||||
#
|
||||
# - timezone names can be translated, but that's 700+ strings I don't want
|
||||
# to inflict on translators normally
|
||||
# - keyboard layouts can be translated, but that's 767 strings
|
||||
#
|
||||
# For both of these, the language / translation only needs to be updated
|
||||
# when the source data is updated, which is very very rarely.
|
||||
# $LUPDATE -no-obsolete -extensions cxxtr src/libcalamares/locale -ts lang/tz_en.ts
|
||||
# $LUPDATE -no-obsolete -extensions cxxtr src/modules/keyboard -ts lang/kb_en.ts
|
||||
|
||||
if test -n "$XMLLINT" ; then
|
||||
TS_FILE="lang/calamares_en.ts"
|
||||
$XMLLINT --c14n11 "$TS_FILE" | { echo "<!DOCTYPE TS>" ; cat - ; } | $XMLLINT --format --encode utf-8 -o "$TS_FILE".new - && mv "$TS_FILE".new "$TS_FILE"
|
||||
TS_FILE="lang/calamares_en.ts"
|
||||
$XMLLINT --c14n11 "$TS_FILE" | { echo "<!DOCTYPE TS>" ; cat - ; } | $XMLLINT --format --encode utf-8 -o "$TS_FILE".new - && mv "$TS_FILE".new "$TS_FILE"
|
||||
fi
|
||||
|
||||
tx push --source --no-interactive -r calamares.calamares-master
|
||||
tx push --source --no-interactive -r calamares.calamares
|
||||
tx push --source --no-interactive -r calamares.fdo
|
||||
|
||||
|
||||
@@ -103,29 +125,29 @@ PYGETTEXT="xgettext --keyword=_n:1,2 -L python"
|
||||
|
||||
SHARED_PYTHON=""
|
||||
for MODULE_DIR in $(find src/modules -maxdepth 1 -mindepth 1 -type d) ; do
|
||||
FILES=$(find "$MODULE_DIR" -name "*.py" -a -type f)
|
||||
if test -n "$FILES" ; then
|
||||
MODULE_NAME=$(basename ${MODULE_DIR})
|
||||
if [ -d ${MODULE_DIR}/lang ]; then
|
||||
${PYGETTEXT} -p ${MODULE_DIR}/lang -d ${MODULE_NAME} -o ${MODULE_NAME}.pot ${MODULE_DIR}/*.py
|
||||
POTFILE="${MODULE_DIR}/lang/${MODULE_NAME}.pot"
|
||||
if [ -f "$POTFILE" ]; then
|
||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' "$POTFILE"
|
||||
tx set -r calamares.${MODULE_NAME} --source -l en "$POTFILE"
|
||||
tx push --source --no-interactive -r calamares.${MODULE_NAME}
|
||||
fi
|
||||
else
|
||||
SHARED_PYTHON="$SHARED_PYTHON $FILES"
|
||||
fi
|
||||
fi
|
||||
FILES=$(find "$MODULE_DIR" -name "*.py" -a -type f)
|
||||
if test -n "$FILES" ; then
|
||||
MODULE_NAME=$(basename ${MODULE_DIR})
|
||||
if [ -d ${MODULE_DIR}/lang ]; then
|
||||
${PYGETTEXT} -p ${MODULE_DIR}/lang -d ${MODULE_NAME} -o ${MODULE_NAME}.pot ${MODULE_DIR}/*.py
|
||||
POTFILE="${MODULE_DIR}/lang/${MODULE_NAME}.pot"
|
||||
if [ -f "$POTFILE" ]; then
|
||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' "$POTFILE"
|
||||
tx set -r calamares.${MODULE_NAME} --source -l en "$POTFILE"
|
||||
tx push --source --no-interactive -r calamares.${MODULE_NAME}
|
||||
fi
|
||||
else
|
||||
SHARED_PYTHON="$SHARED_PYTHON $FILES"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if test -n "$SHARED_PYTHON" ; then
|
||||
${PYGETTEXT} -p lang -d python -o python.pot $SHARED_PYTHON
|
||||
POTFILE="lang/python.pot"
|
||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' "$POTFILE"
|
||||
tx set -r calamares.python --source -l en "$POTFILE"
|
||||
tx push --source --no-interactive -r calamares.python
|
||||
${PYGETTEXT} -p lang -d python -o python.pot $SHARED_PYTHON
|
||||
POTFILE="lang/python.pot"
|
||||
sed -i'' '/^"Content-Type/s/CHARSET/UTF-8/' "$POTFILE"
|
||||
tx set -r calamares.python --source -l en "$POTFILE"
|
||||
tx push --source --no-interactive -r calamares.python
|
||||
fi
|
||||
|
||||
txtag
|
||||
|
47
ci/txreduce.py
Normal file
47
ci/txreduce.py
Normal file
@@ -0,0 +1,47 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Reduce a translation file -- generally, a Timezone translation -- by
|
||||
# dropping untranslated strings. An untranslated string is one that
|
||||
# has an empty translation **and** is marked unfinished.
|
||||
#
|
||||
# This is mostly useful to cut down the size of the source file:
|
||||
# far and away most of the zones are not translated, and it's just a
|
||||
# handful of places that get special treatment.
|
||||
|
||||
from xml.dom.minidom import parse
|
||||
import sys
|
||||
|
||||
valid = True
|
||||
dom = parse(sys.argv[1])
|
||||
for n in dom.getElementsByTagName("translation"):
|
||||
attrs = n.attributes.keys()
|
||||
|
||||
drop = True
|
||||
if "type" not in attrs:
|
||||
drop = False
|
||||
elif "type" in attrs and n.attributes["type"].value != "unfinished":
|
||||
# In the samples I've seen, only "unfinished" is a valid type;
|
||||
# once something has been translated, the attribute vanishes (see
|
||||
# the if branch, above).
|
||||
print("WARNING ''{!s}'' unknown type".format(n.attributes["type"].value))
|
||||
drop = False
|
||||
valid = False
|
||||
else:
|
||||
t = n.firstChild
|
||||
if t is None:
|
||||
# Unfinished and empty
|
||||
drop = True
|
||||
else:
|
||||
drop = bool(t.data)
|
||||
if drop:
|
||||
message = n.parentNode
|
||||
message.parentNode.removeChild(message)
|
||||
message.unlink()
|
||||
|
||||
if valid:
|
||||
for line in dom.toxml().split("\n"):
|
||||
if line.strip():
|
||||
print(line)
|
198
ci/txstats.py
198
ci/txstats.py
@@ -1,5 +1,8 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Uses the Transifex API to get a list of enabled languages,
|
||||
# and outputs CMake settings for inclusion into CMakeLists.txt.
|
||||
#
|
||||
@@ -8,25 +11,137 @@
|
||||
# Run it with a -v command-line option to get extra output on
|
||||
# actual translation percentages.
|
||||
import sys
|
||||
import argparse
|
||||
|
||||
def get_tx_credentials():
|
||||
class TXError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class TransifexGetter(object):
|
||||
"""
|
||||
Gets the API token out of the user's .transifexrc (this is supposed
|
||||
to be secure).
|
||||
Get language data from Transifex.
|
||||
|
||||
The object does all the work in __init__, after that
|
||||
the only relevant data is .languages, a dictionary
|
||||
of language data.
|
||||
"""
|
||||
import configparser
|
||||
import os
|
||||
txconfig_name = os.path.expanduser("~/.transifexrc")
|
||||
try:
|
||||
with open(txconfig_name, "r") as f:
|
||||
parser = configparser.ConfigParser()
|
||||
parser.read_file(f)
|
||||
def __init__(self):
|
||||
token = self.get_tx_credentials()
|
||||
if token is None:
|
||||
raise TXError("Could not get Transifex API token")
|
||||
|
||||
return parser.get("https://www.transifex.com", "password")
|
||||
except IOError as e:
|
||||
return None
|
||||
import requests
|
||||
r = requests.get("https://api.transifex.com/organizations/calamares/projects/calamares/resources/calamares/", auth=("api", token))
|
||||
if r.status_code != 200:
|
||||
raise TXError("Could not get Transifex data from API")
|
||||
|
||||
def output_langs(all_langs, label, filterfunc):
|
||||
j = r.json()
|
||||
self.languages = j["stats"]
|
||||
|
||||
|
||||
def get_tx_credentials(self):
|
||||
"""
|
||||
Gets the API token out of the user's .transifexrc (this is supposed
|
||||
to be secure).
|
||||
"""
|
||||
import configparser
|
||||
import os
|
||||
txconfig_name = os.path.expanduser("~/.transifexrc")
|
||||
try:
|
||||
with open(txconfig_name, "r") as f:
|
||||
parser = configparser.ConfigParser()
|
||||
parser.read_file(f)
|
||||
|
||||
return parser.get("https://www.transifex.com", "password")
|
||||
except IOError as e:
|
||||
return None
|
||||
|
||||
|
||||
class BogusGetter(object):
|
||||
"""
|
||||
Fake language data.
|
||||
|
||||
This object pretends to retrieve data, and returns fixed language lists and percentages,
|
||||
for testing purposes without hitting Transifex servers all the time.
|
||||
"""
|
||||
def __init__(self):
|
||||
self.languages = dict()
|
||||
for lang, completion in ( ("sq", 100), ("ar", 44), ("as", 28), ("de", 15), ("da", 4), ("ts", 82) ):
|
||||
self.languages[lang] = dict(translated=dict(stringcount=686, percentage=(completion/100.0)))
|
||||
|
||||
|
||||
class PrintOutputter(object):
|
||||
"""
|
||||
Output via print-statements.
|
||||
"""
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def print(self, s):
|
||||
print(s)
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, e, v, tb):
|
||||
pass
|
||||
|
||||
|
||||
class EditingOutputter(object):
|
||||
"""
|
||||
Edit CMakeLists in-place.
|
||||
"""
|
||||
def __init__(self):
|
||||
with open("CMakeLists.txt", "r") as f:
|
||||
lines = f.readlines()
|
||||
|
||||
mark = None
|
||||
for l in lines:
|
||||
# Note that we didn't strip the lines, so need the \n here
|
||||
if l.startswith("# Total ") and l.endswith(" languages\n"):
|
||||
mark = lines.index(l)
|
||||
break
|
||||
if mark is None:
|
||||
raise TXError("No CMakeLists.txt lines for TX stats found")
|
||||
self.pre_lines = lines[:mark]
|
||||
|
||||
nextmark = mark + 1
|
||||
for l in lines[mark+1:]:
|
||||
if l.startswith("set( _tx_"):
|
||||
nextmark += 1
|
||||
continue
|
||||
if l.startswith(" "):
|
||||
nextmark += 1
|
||||
continue
|
||||
break
|
||||
if nextmark > mark + 12 or nextmark > len(lines) - 4:
|
||||
# Try to catch runaway nextmarks: we know there should
|
||||
# be four set-lines, which are unlikely to be 3 lines each;
|
||||
# similarly the CMakeLists.txt is supposed to end with
|
||||
# some boilerplate.
|
||||
raise TXError("Could not find end of TX settings in CMakeLists.txt")
|
||||
self.post_lines = lines[nextmark:]
|
||||
|
||||
self.mid_lines = []
|
||||
print("# Editing CMakeLists.txt in-place")
|
||||
|
||||
def print(self, s):
|
||||
# Add the implicit \n from print()
|
||||
self.mid_lines.append(s + "\n")
|
||||
if s.startswith("#"):
|
||||
print(s)
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, e, v, tb):
|
||||
if e is None:
|
||||
with open("CMakeLists.txt", "w") as f:
|
||||
f.write("".join(self.pre_lines + self.mid_lines + self.post_lines))
|
||||
print("# CMakeLists.txt updated")
|
||||
|
||||
|
||||
def output_langs(all_langs, outputter, label, filterfunc):
|
||||
"""
|
||||
Output (via print) all of the languages in @p all_langs
|
||||
that satisfy the translation-percentage filter @p filterfunc.
|
||||
@@ -42,12 +157,13 @@ def output_langs(all_langs, label, filterfunc):
|
||||
|
||||
while len(out) > width - len(prefix):
|
||||
chunk = out[:out[:width].rfind(" ")]
|
||||
print("%s%s" % (prefix, chunk))
|
||||
outputter.print("%s%s" % (prefix, chunk))
|
||||
out = out[len(chunk)+1:]
|
||||
prefix = " "
|
||||
print("%s%s" % (prefix, out))
|
||||
outputter.print("%s%s" % (prefix, out))
|
||||
|
||||
def get_tx_stats(token, verbose):
|
||||
|
||||
def get_tx_stats(languages, outputter, verbose):
|
||||
"""
|
||||
Does an API request to Transifex with the given API @p token, getting
|
||||
the translation statistics for the main body of texts. Then prints
|
||||
@@ -56,12 +172,6 @@ def get_tx_stats(token, verbose):
|
||||
|
||||
If @p verbose is True, prints out language stats as well.
|
||||
"""
|
||||
import requests
|
||||
|
||||
r = requests.get("https://api.transifex.com/organizations/calamares/projects/calamares/resources/calamares-master/", auth=("api", token))
|
||||
if r.status_code != 200:
|
||||
return 1
|
||||
|
||||
suppressed_languages = ( "es_ES", ) # In Transifex, but not used
|
||||
# Some languages go into the "incomplete" list by definition,
|
||||
# regardless of their completion status: this can have various reasons.
|
||||
@@ -71,13 +181,11 @@ def get_tx_stats(token, verbose):
|
||||
# and it's at-the-least ok.
|
||||
incomplete_languages = (
|
||||
"eo", # Not supported by QLocale < 5.12.1
|
||||
"ie", # Not supported by Qt at least through 5.15.0
|
||||
)
|
||||
|
||||
all_langs = []
|
||||
|
||||
j = r.json()
|
||||
languages = j["stats"]
|
||||
print("# Total %d languages" % len(languages))
|
||||
outputter.print("# Total %d languages" % len(languages))
|
||||
for lang_name in languages:
|
||||
if lang_name in suppressed_languages:
|
||||
continue
|
||||
@@ -91,23 +199,35 @@ def get_tx_stats(token, verbose):
|
||||
|
||||
if verbose:
|
||||
for s, l in sorted(all_langs, reverse=True):
|
||||
print("# %16s\t%6.2f" % (l, s * 100.0))
|
||||
output_langs(all_langs, "complete", lambda s : s == 1.0)
|
||||
output_langs(all_langs, "good", lambda s : 1.0 > s >= 0.75)
|
||||
output_langs(all_langs, "ok", lambda s : 0.75 > s >= 0.05)
|
||||
output_langs(all_langs, "incomplete", lambda s : 0.05 > s)
|
||||
outputter.print("# %16s\t%6.2f" % (l, s * 100.0))
|
||||
output_langs(all_langs, outputter, "complete", lambda s : s == 1.0)
|
||||
output_langs(all_langs, outputter, "good", lambda s : 1.0 > s >= 0.75)
|
||||
output_langs(all_langs, outputter, "ok", lambda s : 0.75 > s >= 0.05)
|
||||
output_langs(all_langs, outputter, "incomplete", lambda s : 0.05 > s)
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
def main():
|
||||
verbose = (sys.argv[-1] == "-v")
|
||||
cred = get_tx_credentials()
|
||||
if cred:
|
||||
return get_tx_stats(cred, verbose)
|
||||
else:
|
||||
print("! Could not find API token in ~/.transifexrc")
|
||||
return 1
|
||||
parser = argparse.ArgumentParser(description="Update Transifex Statistics")
|
||||
parser.add_argument("--verbose", "-v", help="Show statistics", action="store_true")
|
||||
parser.add_argument("--bogus", "-n", help="Use bogus data (do not query Transifex)", action="store_true")
|
||||
parser.add_argument("--edit", "-e", help="Edit CMakeLists.txt in-place", action="store_true")
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
if args.bogus:
|
||||
getter = BogusGetter()
|
||||
else:
|
||||
getter = TransifexGetter()
|
||||
if args.edit:
|
||||
outputter = EditingOutputter()
|
||||
else:
|
||||
outputter = PrintOutputter()
|
||||
with outputter:
|
||||
return get_tx_stats(getter.languages, outputter, args.verbose)
|
||||
except TXError as e:
|
||||
print("! " + str(e))
|
||||
return 1;
|
||||
return 0
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
@@ -1,3 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
|
||||
IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
|
||||
ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
|
@@ -1,4 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- SPDX-FileCopyrightText: no
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
-->
|
||||
<!DOCTYPE policyconfig PUBLIC
|
||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
|
||||
@@ -19,4 +22,4 @@
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/calamares</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
||||
</action>
|
||||
</policyconfig>
|
||||
</policyconfig>
|
||||
|
37
data/FreeBSD/Makefile
Normal file
37
data/FreeBSD/Makefile
Normal file
@@ -0,0 +1,37 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <adridg@FreeBSD.org>
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
|
||||
PORTNAME= calamares
|
||||
DISTVERSION= 3.2.25
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES= https://github.com/${PORTNAME}/${PORTNAME}/releases/download/v${DISTVERSION}/
|
||||
|
||||
MAINTAINER= adridg@FreeBSD.org
|
||||
COMMENT= GUI System installer and OEM configurator
|
||||
|
||||
LICENSE= GPLv3
|
||||
LICENSE_FILE= ${WRKSRC}/LICENSE
|
||||
|
||||
LIB_DEPENDS= libyaml-cpp.so:devel/yaml-cpp \
|
||||
libpwquality.so:security/libpwquality \
|
||||
libboost_python${PYTHON_SUFFIX}.so:devel/boost-python-libs
|
||||
|
||||
USES= cmake compiler:c++17-lang gettext kde:5 pkgconfig \
|
||||
python:3.3+ qt:5
|
||||
USE_QT= concurrent core dbus declarative gui \
|
||||
network quickcontrols2 svg widgets xml \
|
||||
buildtools_build linguist_build qmake_build
|
||||
USE_KDE= coreaddons dbusaddons parts service \
|
||||
ecm_build
|
||||
USE_LDCONFIG= yes
|
||||
|
||||
CMAKE_OFF= WITH_KF5Crash \
|
||||
INSTALL_CONFIG \
|
||||
INSTALL_COMPLETION \
|
||||
INSTALL_POLKIT
|
||||
CMAKE_ON= CMAKE_DISABLE_FIND_PACKAGE_KPMcore
|
||||
CMAKE_ARGS= -DSKIP_MODULES="webview"
|
||||
|
||||
.include <bsd.port.mk>
|
3
data/FreeBSD/distinfo
Normal file
3
data/FreeBSD/distinfo
Normal file
@@ -0,0 +1,3 @@
|
||||
TIMESTAMP = 1592339404
|
||||
SHA256 (calamares-3.2.25.tar.gz) = 797ce33db7d4e4c06bbccef95f6c4023f7628e91bd142896695565fed4ae8c4b
|
||||
SIZE (calamares-3.2.25.tar.gz) = 3580197
|
14
data/FreeBSD/pkg-descr
Normal file
14
data/FreeBSD/pkg-descr
Normal file
@@ -0,0 +1,14 @@
|
||||
Calamares is an installer framework. By design it is very customizable,
|
||||
in order to satisfy a wide variety of needs and use cases.
|
||||
|
||||
Calamares aims to be easy, usable, beautiful, pragmatic, inclusive and
|
||||
distribution-agnostic.
|
||||
|
||||
Got a Linux distribution but no system installer? Grab Calamares, mix
|
||||
and match any number of Calamares modules (or write your own in Python
|
||||
or C++), throw together some branding, package it up and you are ready
|
||||
to ship!
|
||||
|
||||
(The above applies to FreeBSD as well)
|
||||
|
||||
WWW: https://calamares.io/
|
224
data/FreeBSD/pkg-plist
Normal file
224
data/FreeBSD/pkg-plist
Normal file
@@ -0,0 +1,224 @@
|
||||
bin/calamares
|
||||
include/libcalamares/CalamaresConfig.h
|
||||
include/libcalamares/CppJob.h
|
||||
include/libcalamares/DllMacro.h
|
||||
include/libcalamares/GlobalStorage.h
|
||||
include/libcalamares/Job.h
|
||||
include/libcalamares/JobExample.h
|
||||
include/libcalamares/JobQueue.h
|
||||
include/libcalamares/ProcessJob.h
|
||||
include/libcalamares/PythonHelper.h
|
||||
include/libcalamares/PythonJob.h
|
||||
include/libcalamares/PythonJobApi.h
|
||||
include/libcalamares/Settings.h
|
||||
include/libcalamares/utils/BoostPython.h
|
||||
include/libcalamares/utils/CalamaresUtilsSystem.h
|
||||
include/libcalamares/utils/CommandList.h
|
||||
include/libcalamares/utils/Dirs.h
|
||||
include/libcalamares/utils/Entropy.h
|
||||
include/libcalamares/utils/Logger.h
|
||||
include/libcalamares/utils/NamedEnum.h
|
||||
include/libcalamares/utils/NamedSuffix.h
|
||||
include/libcalamares/utils/PluginFactory.h
|
||||
include/libcalamares/utils/RAII.h
|
||||
include/libcalamares/utils/Retranslator.h
|
||||
include/libcalamares/utils/String.h
|
||||
include/libcalamares/utils/Tests.h
|
||||
include/libcalamares/utils/UMask.h
|
||||
include/libcalamares/utils/Units.h
|
||||
include/libcalamares/utils/Variant.h
|
||||
include/libcalamares/utils/Yaml.h
|
||||
include/libcalamares/utils/moc-warnings.h
|
||||
lib/calamares/libcalamares.so
|
||||
lib/calamares/modules/bootloader/main.py
|
||||
lib/calamares/modules/bootloader/module.desc
|
||||
lib/calamares/modules/bootloader/test.yaml
|
||||
lib/calamares/modules/contextualprocess/libcalamares_job_contextualprocess.so
|
||||
lib/calamares/modules/contextualprocess/module.desc
|
||||
lib/calamares/modules/displaymanager/main.py
|
||||
lib/calamares/modules/displaymanager/module.desc
|
||||
lib/calamares/modules/dracut/main.py
|
||||
lib/calamares/modules/dracut/module.desc
|
||||
lib/calamares/modules/dracutlukscfg/libcalamares_job_dracutlukscfg.so
|
||||
lib/calamares/modules/dracutlukscfg/module.desc
|
||||
lib/calamares/modules/dummycpp/libcalamares_job_dummycpp.so
|
||||
lib/calamares/modules/dummycpp/module.desc
|
||||
lib/calamares/modules/dummyprocess/module.desc
|
||||
lib/calamares/modules/dummypython/main.py
|
||||
lib/calamares/modules/dummypython/module.desc
|
||||
lib/calamares/modules/finished/libcalamares_viewmodule_finished.so
|
||||
lib/calamares/modules/finished/module.desc
|
||||
lib/calamares/modules/fstab/main.py
|
||||
lib/calamares/modules/fstab/module.desc
|
||||
lib/calamares/modules/fstab/test.yaml
|
||||
lib/calamares/modules/grubcfg/main.py
|
||||
lib/calamares/modules/grubcfg/module.desc
|
||||
lib/calamares/modules/hostinfo/libcalamares_job_hostinfo.so
|
||||
lib/calamares/modules/hostinfo/module.desc
|
||||
lib/calamares/modules/hwclock/main.py
|
||||
lib/calamares/modules/hwclock/module.desc
|
||||
lib/calamares/modules/initcpio/libcalamares_job_initcpio.so
|
||||
lib/calamares/modules/initcpio/module.desc
|
||||
lib/calamares/modules/initcpiocfg/main.py
|
||||
lib/calamares/modules/initcpiocfg/module.desc
|
||||
lib/calamares/modules/initramfs/libcalamares_job_initramfs.so
|
||||
lib/calamares/modules/initramfs/module.desc
|
||||
lib/calamares/modules/initramfscfg/encrypt_hook
|
||||
lib/calamares/modules/initramfscfg/encrypt_hook_nokey
|
||||
lib/calamares/modules/initramfscfg/main.py
|
||||
lib/calamares/modules/initramfscfg/module.desc
|
||||
lib/calamares/modules/interactiveterminal/libcalamares_viewmodule_interactiveterminal.so
|
||||
lib/calamares/modules/interactiveterminal/module.desc
|
||||
lib/calamares/modules/keyboard/libcalamares_viewmodule_keyboard.so
|
||||
lib/calamares/modules/keyboard/module.desc
|
||||
lib/calamares/modules/keyboardq/libcalamares_viewmodule_keyboardq.so
|
||||
lib/calamares/modules/keyboardq/module.desc
|
||||
lib/calamares/modules/license/libcalamares_viewmodule_license.so
|
||||
lib/calamares/modules/license/module.desc
|
||||
lib/calamares/modules/locale/libcalamares_viewmodule_locale.so
|
||||
lib/calamares/modules/locale/module.desc
|
||||
lib/calamares/modules/localecfg/main.py
|
||||
lib/calamares/modules/localecfg/module.desc
|
||||
lib/calamares/modules/localeq/libcalamares_viewmodule_localeq.so
|
||||
lib/calamares/modules/localeq/module.desc
|
||||
lib/calamares/modules/luksbootkeyfile/libcalamares_job_luksbootkeyfile.so
|
||||
lib/calamares/modules/luksbootkeyfile/module.desc
|
||||
lib/calamares/modules/luksopenswaphookcfg/main.py
|
||||
lib/calamares/modules/luksopenswaphookcfg/module.desc
|
||||
lib/calamares/modules/machineid/libcalamares_job_machineid.so
|
||||
lib/calamares/modules/machineid/module.desc
|
||||
lib/calamares/modules/mount/main.py
|
||||
lib/calamares/modules/mount/module.desc
|
||||
lib/calamares/modules/mount/test.yaml
|
||||
lib/calamares/modules/netinstall/libcalamares_viewmodule_netinstall.so
|
||||
lib/calamares/modules/netinstall/module.desc
|
||||
lib/calamares/modules/networkcfg/main.py
|
||||
lib/calamares/modules/networkcfg/module.desc
|
||||
lib/calamares/modules/notesqml/libcalamares_viewmodule_notesqml.so
|
||||
lib/calamares/modules/notesqml/module.desc
|
||||
lib/calamares/modules/oemid/libcalamares_viewmodule_oemid.so
|
||||
lib/calamares/modules/oemid/module.desc
|
||||
lib/calamares/modules/openrcdmcryptcfg/main.py
|
||||
lib/calamares/modules/openrcdmcryptcfg/module.desc
|
||||
lib/calamares/modules/packagechooser/libcalamares_viewmodule_packagechooser.so
|
||||
lib/calamares/modules/packagechooser/module.desc
|
||||
lib/calamares/modules/packages/main.py
|
||||
lib/calamares/modules/packages/module.desc
|
||||
lib/calamares/modules/packages/test.yaml
|
||||
lib/calamares/modules/plymouthcfg/main.py
|
||||
lib/calamares/modules/plymouthcfg/module.desc
|
||||
lib/calamares/modules/preservefiles/libcalamares_job_preservefiles.so
|
||||
lib/calamares/modules/preservefiles/module.desc
|
||||
lib/calamares/modules/rawfs/main.py
|
||||
lib/calamares/modules/rawfs/module.desc
|
||||
lib/calamares/modules/removeuser/libcalamares_job_removeuser.so
|
||||
lib/calamares/modules/removeuser/module.desc
|
||||
lib/calamares/modules/services-openrc/main.py
|
||||
lib/calamares/modules/services-openrc/module.desc
|
||||
lib/calamares/modules/services-systemd/main.py
|
||||
lib/calamares/modules/services-systemd/module.desc
|
||||
lib/calamares/modules/shellprocess/libcalamares_job_shellprocess.so
|
||||
lib/calamares/modules/shellprocess/module.desc
|
||||
lib/calamares/modules/summary/libcalamares_viewmodule_summary.so
|
||||
lib/calamares/modules/summary/module.desc
|
||||
lib/calamares/modules/tracking/libcalamares_viewmodule_tracking.so
|
||||
lib/calamares/modules/tracking/module.desc
|
||||
lib/calamares/modules/umount/main.py
|
||||
lib/calamares/modules/umount/module.desc
|
||||
lib/calamares/modules/unpackfs/main.py
|
||||
lib/calamares/modules/unpackfs/module.desc
|
||||
lib/calamares/modules/unpackfs/runtests.sh
|
||||
lib/calamares/modules/users/libcalamares_viewmodule_users.so
|
||||
lib/calamares/modules/users/module.desc
|
||||
lib/calamares/modules/welcome/libcalamares_viewmodule_welcome.so
|
||||
lib/calamares/modules/welcome/module.desc
|
||||
lib/calamares/modules/welcomeq/libcalamares_viewmodule_welcomeq.so
|
||||
lib/calamares/modules/welcomeq/module.desc
|
||||
lib/cmake/Calamares/CMakeColors.cmake
|
||||
lib/cmake/Calamares/CalamaresAddBrandingSubdirectory.cmake
|
||||
lib/cmake/Calamares/CalamaresAddLibrary.cmake
|
||||
lib/cmake/Calamares/CalamaresAddModuleSubdirectory.cmake
|
||||
lib/cmake/Calamares/CalamaresAddPlugin.cmake
|
||||
lib/cmake/Calamares/CalamaresAddTest.cmake
|
||||
lib/cmake/Calamares/CalamaresAddTranslations.cmake
|
||||
lib/cmake/Calamares/CalamaresAutomoc.cmake
|
||||
lib/cmake/Calamares/CalamaresConfig.cmake
|
||||
lib/cmake/Calamares/CalamaresConfigVersion.cmake
|
||||
lib/cmake/Calamares/CalamaresLibraryDepends-%%CMAKE_BUILD_TYPE%%.cmake
|
||||
lib/cmake/Calamares/CalamaresLibraryDepends.cmake
|
||||
lib/cmake/Calamares/CalamaresUse.cmake
|
||||
lib/libcalamares.so
|
||||
lib/libcalamares.so.3.2.25
|
||||
lib/libcalamaresui.so
|
||||
lib/libcalamaresui.so.3.2.25
|
||||
man/man8/calamares.8.gz
|
||||
share/applications/calamares.desktop
|
||||
%%DATADIR%%/branding/default/banner.png
|
||||
%%DATADIR%%/branding/default/branding.desc
|
||||
%%DATADIR%%/branding/default/lang/calamares-default_ar.qm
|
||||
%%DATADIR%%/branding/default/lang/calamares-default_en.qm
|
||||
%%DATADIR%%/branding/default/lang/calamares-default_eo.qm
|
||||
%%DATADIR%%/branding/default/lang/calamares-default_fr.qm
|
||||
%%DATADIR%%/branding/default/lang/calamares-default_nl.qm
|
||||
%%DATADIR%%/branding/default/languages.png
|
||||
%%DATADIR%%/branding/default/show.qml
|
||||
%%DATADIR%%/branding/default/squid.png
|
||||
%%DATADIR%%/branding/default/stylesheet.qss
|
||||
%%DATADIR%%/qml/calamares/slideshow/BackButton.qml
|
||||
%%DATADIR%%/qml/calamares/slideshow/ForwardButton.qml
|
||||
%%DATADIR%%/qml/calamares/slideshow/NavButton.qml
|
||||
%%DATADIR%%/qml/calamares/slideshow/Presentation.qml
|
||||
%%DATADIR%%/qml/calamares/slideshow/Slide.qml
|
||||
%%DATADIR%%/qml/calamares/slideshow/SlideCounter.qml
|
||||
%%DATADIR%%/qml/calamares/slideshow/qmldir
|
||||
share/icons/hicolor/scalable/apps/calamares.svg
|
||||
share/locale/ar/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/as/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/ast/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/be/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/bg/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/ca/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/cs_CZ/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/da/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/de/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/el/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/en_GB/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/eo/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/es/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/es_MX/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/es_PR/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/et/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/eu/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/fi_FI/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/fr/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/gl/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/he/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/hi/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/hr/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/hu/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/id/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/is/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/it_IT/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/ja/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/ko/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/lt/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/ml/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/mr/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/nb/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/nl/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/pl/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/pt_BR/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/pt_PT/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/ro/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/ru/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/sk/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/sl/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/sq/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/sr/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/sr@latin/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/sv/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/th/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/tr_TR/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/uk/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/zh_CN/LC_MESSAGES/calamares-python.mo
|
||||
share/locale/zh_TW/LC_MESSAGES/calamares-python.mo
|
27
data/completion/bash/calamares
Normal file
27
data/completion/bash/calamares
Normal file
@@ -0,0 +1,27 @@
|
||||
# === This file is part of Calamares - <https://calamares.io> ===
|
||||
#
|
||||
# SPDX-FileCopyrightText: 2020 Gaël PORTAY <gael.portay@gmail.com>
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
#
|
||||
# Calamares is Free Software: see the License-Identifier above.
|
||||
#
|
||||
|
||||
_calamares()
|
||||
{
|
||||
local cur prev words cword
|
||||
_init_completion || return
|
||||
|
||||
case "$prev" in
|
||||
-D)
|
||||
COMPREPLY=( $( compgen -W "$( seq 0 1 8 )" -- "$cur" ) )
|
||||
return
|
||||
;;
|
||||
-c|--config)
|
||||
_filedir
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
COMPREPLY=( $( compgen -W "-h --help -v --version -d --debug -D -c --config -X -xdg-config -T --debug-translation" -- "$cur" ) )
|
||||
} &&
|
||||
complete -F _calamares calamares
|
2
data/config-appimage/branding/default/squid.png.license
Normal file
2
data/config-appimage/branding/default/squid.png.license
Normal file
@@ -0,0 +1,2 @@
|
||||
SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user