mirror of
				https://git.jami.net/savoirfairelinux/jami-client-qt.git
				synced 2025-10-30 07:53:33 +08:00 
			
		
		
		
	Compare commits
	
		
			887 Commits
		
	
	
		
			nightly/20
			...
			ca02cf172a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ca02cf172a | |||
| ba44b70f97 | |||
| 87e38c2bf5 | |||
| 98a300d36f | |||
| 5ac31130d0 | |||
| 9c11ec6233 | |||
| c9ab1a8e24 | |||
| 76e1bd9eb1 | |||
| ffb20d6767 | |||
| 87e63724c3 | |||
| 9fad769040 | |||
| 4106b8c752 | |||
| fd6e733433 | |||
| ee0a754b6a | |||
| 9278919410 | |||
| 8c1b79a86c | |||
| 3e6108f167 | |||
| 22be4be864 | |||
| bb359f851b | |||
| 36730480aa | |||
| e7d626a421 | |||
| 185869824a | |||
| 9858891fea | |||
| be7ec378c8 | |||
| cbed58544f | |||
| c642c1ddfa | |||
| aa8c1edbd4 | |||
| 2a28438275 | |||
| 92945ad29f | |||
| c22260fb20 | |||
| 0163ad7da1 | |||
| becd7ac144 | |||
| 8b19f733af | |||
| 25c9f0ef5c | |||
| f1895b31b8 | |||
| 13a314bde5 | |||
| 8c9f6a85a3 | |||
| 82eb5c59a6 | |||
| 84a9ba4196 | |||
| 6dac4d2ee3 | |||
| 674bf38766 | |||
| 52f3a9bc28 | |||
| abce881b50 | |||
| 666b149033 | |||
| eb10ccbd4a | |||
| f513358236 | |||
| 3c00829afb | |||
| 84a59889e3 | |||
| 6c35561817 | |||
| 6ffdda7b81 | |||
| a51078c900 | |||
| 76a710e2ab | |||
| bc324aa8bb | |||
| 5c772960bc | |||
| da2acefced | |||
| 524c9b0ed4 | |||
| 8677349c4a | |||
| 905b2e858e | |||
| 6fc2e75a33 | |||
| c738caa3a4 | |||
| cb13d4f771 | |||
| 436e11a6a4 | |||
| 869aef8929 | |||
| e0f939318e | |||
| 136dea011f | |||
| af09269d81 | |||
| 5a5ef4711d | |||
| 1dd745d446 | |||
| 3dd2d26d86 | |||
| eb6b6a2b93 | |||
| b15d692a0e | |||
| e76bcbd555 | |||
| b5a979e6b1 | |||
| 898444dd3c | |||
| 99f246016d | |||
| e24f3d91e8 | |||
| 3a7850b398 | |||
| 1e1750024b | |||
| 2ba53a2e40 | |||
| ceec1f95b9 | |||
| 1ac3db4f33 | |||
| 93d3d18c7b | |||
| d4b7891f48 | |||
| d7c294edd0 | |||
| 945cfe176d | |||
| fa3a153896 | |||
| e9106b2bcc | |||
| a967518d45 | |||
| 7ebed53e97 | |||
| ca05963c40 | |||
| df98c6c3fd | |||
| 05501e33e9 | |||
| 91780ae400 | |||
| 4900ca9f1b | |||
| 0f965aae28 | |||
| f8c29fc4a1 | |||
| 2e1889caf1 | |||
| 8070d1bfc2 | |||
| 4ee1a309a1 | |||
| 0333016c44 | |||
| 32b7525ee3 | |||
| 32b941ab96 | |||
| e4932abd39 | |||
| 718d1d266d | |||
| 8d55f352b4 | |||
| 2a72da564e | |||
| 88d0539085 | |||
| 4b1c299a1d | |||
| 479da3ca54 | |||
| 02140a11c4 | |||
| b5dbe23c17 | |||
| ff5f94b34a | |||
| def2e19abe | |||
| 69430c4af3 | |||
| 911fdbc9e5 | |||
| 80b3336f1b | |||
| f8bafd4154 | |||
| b8b06ccfa1 | |||
| 6cb5a8206a | |||
| ae1a2462e2 | |||
| 31581db7f5 | |||
| c323dcfe13 | |||
| 8a31aca346 | |||
| 7eeabbe1c6 | |||
| 8c0ecaf3c5 | |||
| c91bff35b6 | |||
| cb05b4afd0 | |||
| 4419f7bfbc | |||
| deaa15a36e | |||
| 6b70ffcf3e | |||
| a407fa2c47 | |||
| 3143d60760 | |||
| 73eacd5125 | |||
| fc70ddc6dc | |||
| e2e5a0c8cc | |||
| dd9ed8d57d | |||
| 7eea1484c5 | |||
| 6fac40340b | |||
| 04a1544d56 | |||
| 91fd8a0295 | |||
| bad5698e71 | |||
| 7f0a94dd48 | |||
| 81112ff1f8 | |||
| b63eb384b6 | |||
| ebcc60c570 | |||
| c12a753979 | |||
| 386b578e47 | |||
| 76417edfa4 | |||
| 960fdc0f05 | |||
| 2567d81359 | |||
| e700d8160a | |||
| 37065cb7d6 | |||
| 03efee4c14 | |||
| 04e43b07f4 | |||
| a00a191371 | |||
| 65d3befad8 | |||
| 84ac5dba02 | |||
| a149a575a7 | |||
| 407561732f | |||
| 82c2a9d9c6 | |||
| 1414e1804f | |||
| 7146f20b18 | |||
| 5ee4990534 | |||
| 0d1bdfdfdd | |||
| f3dd3b4643 | |||
| d3c76eac8d | |||
| 33da15daba | |||
| 82c876c0fa | |||
| 83765dcebf | |||
| b76570b892 | |||
| ffb9bb8748 | |||
| 416137d6dd | |||
| ffcfaffc90 | |||
| a950a3f9e7 | |||
| 3c279b292d | |||
| c19af7f97f | |||
| 0087f1b8a8 | |||
| 19f7f43912 | |||
| c818eeedce | |||
| 0f08dbcf59 | |||
| 7d3331d235 | |||
| aa375a7f89 | |||
| 9b51f26e80 | |||
| 6b0adb7005 | |||
| 217efe603b | |||
| 00febee4c7 | |||
| c88797163c | |||
| f7a771f7e1 | |||
| 03756aedd0 | |||
| 8af5a25607 | |||
| fe4c63b775 | |||
| 4ee1f1a5d3 | |||
| 37f29c9882 | |||
| 1bfacdbb76 | |||
| c5e455a9de | |||
| f489f21271 | |||
| 560f44f6f1 | |||
| d0639b4e88 | |||
| 79d3c7be03 | |||
| 5b6cc620cd | |||
| f4c997c62f | |||
| 2974cb52bd | |||
| 98e71a7c89 | |||
| 0b49077de9 | |||
| 5540001e7a | |||
| 71527afd76 | |||
| 15d62f0200 | |||
| 0024721192 | |||
| a540cbf529 | |||
| 6b142cd374 | |||
| 4e235d60e8 | |||
| 05954191a2 | |||
| 56b8aa16e7 | |||
| 7acf48d919 | |||
| 70c64a5947 | |||
| ca74c961ef | |||
| 32a44c9820 | |||
| d1a8ec3af0 | |||
| 12628713f1 | |||
| 7659080b34 | |||
| 4152700848 | |||
| cba84f2cb7 | |||
| 7289a92b2b | |||
| c6a474aa96 | |||
| 2226d30123 | |||
| 529b7cf529 | |||
| 49d83fd937 | |||
| 484808a2eb | |||
| dccc6c7e18 | |||
| 53a3d32114 | |||
| 6fdcfc6317 | |||
| 5352ded3e3 | |||
| 9a0ed9995e | |||
| 9771e291c8 | |||
| b37720e27f | |||
| d3a7df2f18 | |||
| 6093689cc4 | |||
| d188284245 | |||
| a01b578099 | |||
| 04fca1fc75 | |||
| a5621a1af1 | |||
| a1c2b8adef | |||
| 7424227f00 | |||
| b69d703e56 | |||
| bfe9128755 | |||
| 8b17b9e3cf | |||
| c2d5c3b764 | |||
| 41f5d151d9 | |||
| 542bd54c6b | |||
| eb60b68747 | |||
| 950e32e9a6 | |||
| 6ddd6a7f9e | |||
| 9ab5e52c8d | |||
| 56401d4125 | |||
| 7fdd2f5740 | |||
| 0f7e33cf33 | |||
| 73258efdf7 | |||
| a29d5f791f | |||
| 5186c27325 | |||
| 7e926a3e23 | |||
| 93cde493d8 | |||
| cb829676e3 | |||
| 112c6a4d7a | |||
| 188f487695 | |||
| 0af01cc62d | |||
| a8acc71830 | |||
| eaf409d6d3 | |||
| 42e3eeabf6 | |||
| 41cb6528c2 | |||
| b6aa9eedfa | |||
| 3c1b2c22b2 | |||
| fb660b928f | |||
| 2f163846c7 | |||
| c6f79f4132 | |||
| 6b9cb684ec | |||
| 1d0fa772e2 | |||
| 51c716d718 | |||
| 5e4556f786 | |||
| da667056fd | |||
| 9d00c4f4e3 | |||
| f5743da2d6 | |||
| 7152b51597 | |||
| 4a53397561 | |||
| d86a90207a | |||
| 7b298deee8 | |||
| 056cf14613 | |||
| 2e75dd8777 | |||
| 8bda8da414 | |||
| b7fb63ae40 | |||
| 31bd0392da | |||
| 59f3aa7c44 | |||
| 9aeb405644 | |||
| 9e1d8e3e56 | |||
| b65774add0 | |||
| c55486988f | |||
| 39833924af | |||
| a194e86d7a | |||
| 8cfd9bc3fc | |||
| bdec942d72 | |||
| 35d5595401 | |||
| 7330a87082 | |||
| 7243b10e81 | |||
| 964c8e0553 | |||
| 96c00ff019 | |||
| c8716d1113 | |||
| 630e5e9fe4 | |||
| f447327c02 | |||
| 650f98636b | |||
| b92cd902b9 | |||
| b99c2674b4 | |||
| 1524ba0177 | |||
| 5503769023 | |||
| 89354a07e1 | |||
| 69400bee2a | |||
| 0e07f9cee7 | |||
| d2eba1d91e | |||
| 78389d8c28 | |||
| e6d820850a | |||
| 0a7f9349a9 | |||
| 99254f8d02 | |||
| 010a2c4eea | |||
| 61163037d4 | |||
| 3577982a93 | |||
| 3ad0b92dcd | |||
| 91475c3a3f | |||
| 9379af23ec | |||
| 406a251c85 | |||
| 20e2852e44 | |||
| 3225f90ce8 | |||
| df3e76a1cf | |||
| c5e15d26a0 | |||
| 77e019b02b | |||
| 89bed2bf85 | |||
| 519871e458 | |||
| 0a842042b0 | |||
| 9aeb2377dc | |||
| 6ad5f4b850 | |||
| f5c63d24fb | |||
| 5cb34bd31c | |||
| e56a966de1 | |||
| acc0c97234 | |||
| 665af7c0c3 | |||
| fa51e042e5 | |||
| 3b9fb0bfca | |||
| 3673b0646c | |||
| 2e2f6423f8 | |||
| 28c1cbbb34 | |||
| 87c215deb7 | |||
| 77eddcd962 | |||
| 043a715c59 | |||
| 5bd3ead22d | |||
| a9aa1cac80 | |||
| 409ba70258 | |||
| dc50f19815 | |||
| d83895dcc9 | |||
| e24a3d6a4d | |||
| 06de33e1be | |||
| c8fbcd8c6b | |||
| 31269fe8fc | |||
| a676ad395a | |||
| 04c71d02e0 | |||
| 1fe60b9c33 | |||
| 51ef7a83da | |||
| 588a8abdac | |||
| 8a149b6c4f | |||
| 6105f4f7ce | |||
| 92341b27b6 | |||
| f39afdac4c | |||
| 690f2dd85c | |||
| bd45d6a406 | |||
| 5b92e4708a | |||
| 63c01f1439 | |||
| 73aeb02ebd | |||
| 9d91317089 | |||
| 474bc5f6a4 | |||
| f5b64e955b | |||
| b88627d125 | |||
| 200978a044 | |||
| a673ff9890 | |||
| 7803dd0991 | |||
| a8a736bc8c | |||
| ff7acf9932 | |||
| afde816b23 | |||
| 0745c3b798 | |||
| 1376ee1f4b | |||
| 2b03107bd5 | |||
| cd1ab0ed12 | |||
| a13c6ae0e7 | |||
| 1ef9a85148 | |||
| 072eafbaf4 | |||
| 201f3182ca | |||
| 23130a5752 | |||
| f28d47bc51 | |||
| ee7818eefb | |||
| f25e66aa6a | |||
| 79b19aec01 | |||
| 4c92cb9936 | |||
| 1c81553245 | |||
| 5c2fec53da | |||
| f706abe5a6 | |||
| 610c27f751 | |||
| 6d20d3b515 | |||
| a0b583aa8d | |||
| 3855a5e951 | |||
| 6689bce782 | |||
| 860ddf22b6 | |||
| ef716d657d | |||
| b0fe0251d1 | |||
| 1ec2d5f27b | |||
| 23316993e5 | |||
| d42fe78676 | |||
| 78724c2a7b | |||
| e14fbe9437 | |||
| 82c63d5a89 | |||
| a72af9cba5 | |||
| d7c642a2fe | |||
| 08f3339693 | |||
| 402515365d | |||
| df102068bc | |||
| d40e884a1f | |||
| 5371dac882 | |||
| 0f62829588 | |||
| 39da97396c | |||
| 406edda453 | |||
| bbbeda6a26 | |||
| 6b3efff7cc | |||
| 3531b8b354 | |||
| 487446cbc3 | |||
| d5349490f5 | |||
| 7650f45d6f | |||
| a98f6ca4e3 | |||
| 0b96cf5f1f | |||
| 07e0b10478 | |||
| b38e216721 | |||
| 91f32f2421 | |||
| 06c3ffa6ce | |||
| ae53d92c2e | |||
| 97e477416a | |||
| 3d3b4612df | |||
| 7060afe467 | |||
| f56026439a | |||
| 0a24bec5ec | |||
| 38b7880d5f | |||
| 71a88b75ab | |||
| 37e1780762 | |||
| e054fc9592 | |||
| 8305c0a082 | |||
| 7b03484497 | |||
| 4d29e11cd3 | |||
| f67a181e83 | |||
| 24edba9a2f | |||
| d1cde3792b | |||
| 3dfcae1c09 | |||
| 50ce16e0ab | |||
| 66e31bea1e | |||
| 154ce53e2d | |||
| 35f850289f | |||
| c8b52262bc | |||
| 4b17fa1a12 | |||
| 35482fa92f | |||
| 788ecaa496 | |||
| f40a8215d1 | |||
| c6ff91bdb1 | |||
| 99d415b1fe | |||
| 4edc2d6369 | |||
| 146dd21679 | |||
| fa2caa6d7c | |||
| 90e9a36a9e | |||
| 95e36ef89b | |||
| 79b906f12f | |||
| 92522d5cce | |||
| 25b74cdf6e | |||
| 0245671855 | |||
| 7c3eab9107 | |||
| 5b6ab48037 | |||
| 6003d007b8 | |||
| 30db1ba5f5 | |||
| 6aaac12758 | |||
| a0fc85d0a9 | |||
| 9c6bdec0f0 | |||
| ce8381e817 | |||
| 677ebe3297 | |||
| fa67ac0462 | |||
| c0c56023cc | |||
| e7ee0acf3a | |||
| f1f521973b | |||
| a4300308dc | |||
| 815d324118 | |||
| 2343f34b4f | |||
| 692ba0d5a8 | |||
| 84150e8977 | |||
| 9360458b9e | |||
| 46a955aa3d | |||
| 009a3902cb | |||
| 32b76c8da4 | |||
| 2bbd9637da | |||
| 2d664eacb1 | |||
| f1c90f316a | |||
| 5abed96b56 | |||
| f524c39c5f | |||
| 2215d51f98 | |||
| 127b39bec2 | |||
| 43fecd1d4a | |||
| 760f6dc72c | |||
| eaf155d8a4 | |||
| 3e7087e5e6 | |||
| 4ebb881be4 | |||
| a4014b7b6f | |||
| 93d2201277 | |||
| 2bf414e27e | |||
| c72e847bd4 | |||
| 74120737ca | |||
| f2424f4968 | |||
| 9d7eae0af8 | |||
| 38febbf0bc | |||
| bd8938b1df | |||
| 1e4c450423 | |||
| c1df66f28d | |||
| 721ea4b017 | |||
| b6737f1d50 | |||
| 15eb51c7ca | |||
| e74be0934e | |||
| a4b758611c | |||
| c00ea7ac51 | |||
| 58a53e70d1 | |||
| 4ca37a6293 | |||
| e2da7777de | |||
| 48e9887129 | |||
| 2af4bc663b | |||
| 72100f4700 | |||
| b7207e4b03 | |||
| 250196bbac | |||
| 04a57dfdbb | |||
| 4a3a49b0ec | |||
| 4342b9053f | |||
| ef0045c927 | |||
| d45f86362b | |||
| c4c2415d6b | |||
| b2318c7f7f | |||
| f46b94baeb | |||
| adfafd9dda | |||
| 45271413b6 | |||
| 87aed4c039 | |||
| 03c20a4205 | |||
| ddb1409195 | |||
| a74b54939d | |||
| 0af4af1685 | |||
| 850decf38e | |||
| bd39fbd5a4 | |||
| 7d7428af21 | |||
| 5cd2490f24 | |||
| ca85303110 | |||
| 46ca469bec | |||
| 49e64bb027 | |||
| 8dd04cab92 | |||
| be9725ec0c | |||
| b4de00ce61 | |||
| e753dd509e | |||
| 20c4081d88 | |||
| 48cfd8e29f | |||
| 3344fbaf9d | |||
| 5e362c2c2e | |||
| 7bd469525d | |||
| f457ed5076 | |||
| ed78c35fda | |||
| d42d1cd343 | |||
| 762cbbff38 | |||
| 500681fb69 | |||
| 8b09149ecd | |||
| eae76a619a | |||
| aa44599a66 | |||
| a8be1f0271 | |||
| d5bacf6b9f | |||
| bb8f4cc3a7 | |||
| 1d7d10a12d | |||
| c689997456 | |||
| 8fc1ba342c | |||
| 6b313e193d | |||
| 167550abc3 | |||
| 7736b5c34c | |||
| 1dd0ad71e9 | |||
| db4e0d3767 | |||
| b1e129b0e2 | |||
| 3818885095 | |||
| 6cbda2cea1 | |||
| 2656769a59 | |||
| 86c1bf8373 | |||
| f7bf2899f7 | |||
| dc7c366afa | |||
| b7c3f3b553 | |||
| a6b7ef76f8 | |||
| 17d6d56af4 | |||
| b5443e6484 | |||
| 3d0db97a17 | |||
| 23413a8f45 | |||
| 7f414f652e | |||
| c6833d69fb | |||
| 238547506f | |||
| cb68ee560c | |||
| 517f87826d | |||
| 0725683727 | |||
| 52f95ac8ed | |||
| 8d41ab6eb9 | |||
| b4b1cda9e6 | |||
| e46a123609 | |||
| 8e33a6125f | |||
| 3e17a9b247 | |||
| 38e5d0967a | |||
| 5ed836f34e | |||
| 7b55954245 | |||
| 8c75ac8a1f | |||
| 92546c7358 | |||
| 855b023349 | |||
| a0f0dd132a | |||
| 428756e568 | |||
| 04a8dfa468 | |||
| cbef11a9ca | |||
| 122628239c | |||
| 8922387217 | |||
| be85034d78 | |||
| 885f05ba12 | |||
| 60cfc8938f | |||
| 31c5cead63 | |||
| 1c576a7a3a | |||
| 92be4fa7dc | |||
| 6360e52eb5 | |||
| d38858c1f3 | |||
| 088c367485 | |||
| fc7109950b | |||
| 5776ab7c7d | |||
| d4d34ad4fc | |||
| 86d55fa985 | |||
| 303acbda64 | |||
| a433974340 | |||
| 7a759dab7a | |||
| d2e87150b4 | |||
| ec60458dbe | |||
| 8a9aea2f28 | |||
| ae86464658 | |||
| 5f0163df05 | |||
| 493addcbd8 | |||
| f144b27db8 | |||
| 861c42e3d5 | |||
| 873c4c72b9 | |||
| 3e012c32d5 | |||
| 6bff3c54f1 | |||
| e55eaa5d8e | |||
| 1a17735d55 | |||
| 4e5f153230 | |||
| 15351a5aae | |||
| e89aa95673 | |||
| 3609dae584 | |||
| 8b21b0fda9 | |||
| 811a93cc27 | |||
| baeb90bced | |||
| 439fea530d | |||
| 55415d6062 | |||
| 9d3b5cd0c5 | |||
| 4e549d123e | |||
| 77193b26d9 | |||
| afb514ee02 | |||
| f1ccd5d05d | |||
| 6a0963d37b | |||
| 6fc30b51d6 | |||
| 2719f303d9 | |||
| 100756b02d | |||
| b963a0bdf2 | |||
| d765fc9297 | |||
| f8f1301fa0 | |||
| b9d24298f7 | |||
| 6b9ce14ca9 | |||
| f88b8584af | |||
| ad35d108f2 | |||
| 63c3d0bf2e | |||
| 6f8f96edfd | |||
| 1bd7d75d29 | |||
| ad29993e17 | |||
| 70ce0c091e | |||
| ea5b2d6589 | |||
| eaababc817 | |||
| aa96b723bc | |||
| 1616261bef | |||
| 926ab72334 | |||
| a6d16ba1f8 | |||
| b0c205159e | |||
| 0c440660c4 | |||
| c8cc61520d | |||
| ab25276e27 | |||
| 7b41c6faff | |||
| 7a84518f2c | |||
| 1a12cb3b8c | |||
| 75a154f4fe | |||
| b95abbc891 | |||
| bc51b74692 | |||
| 899ff6120c | |||
| b77012baae | |||
| bc34abc8f4 | |||
| 69b59ad2dd | |||
| 1f2401bc7e | |||
| 06b0f1d39c | |||
| d5b36e7a6d | |||
| 4e2ae6cde0 | |||
| 0895a9f183 | |||
| e8075a412e | |||
| 4d55a1430d | |||
| 8de099e38d | |||
| 306c428019 | |||
| c0a5ced044 | |||
| 9f570a3cee | |||
| 2371f0c09f | |||
| f605cfce81 | |||
| 2aa3212b8f | |||
| 031d4348bc | |||
| e7436dbc05 | |||
| b291728472 | |||
| 5820052a53 | |||
| 65cc7a36ed | |||
| 46e2354274 | |||
| 1bbd8e31af | |||
| 0bd24bf8c5 | |||
| a028696e57 | |||
| c8b371e77a | |||
| b26259dac8 | |||
| 423290a09a | |||
| 3195fa9b22 | |||
| 4619f04f7b | |||
| ae2380c71b | |||
| 2bdf8e088c | |||
| 9947021394 | |||
| 80fe376e3c | |||
| d1eb1f5885 | |||
| b1ca6cf861 | |||
| 8c728374a7 | |||
| 3a693536e4 | |||
| ffcd3e59a4 | |||
| 77935de893 | |||
| 386ef224d1 | |||
| d62c2ff98e | |||
| 3b00b42213 | |||
| 21f3479a96 | |||
| 8307089900 | |||
| 2916b4c523 | |||
| 5530649f07 | |||
| 7581f9397a | |||
| 7f2c98a594 | |||
| 6341f32618 | |||
| a652a3d20f | |||
| 46da989a59 | |||
| 1a463ec662 | |||
| aee632c967 | |||
| e3a73ac932 | |||
| 416417d15a | |||
| 36a36dadcf | |||
| 38735b052a | |||
| 5b984396cf | |||
| 22cd3d4d4e | |||
| 53811f93b2 | |||
| 5e874f4f4b | |||
| a5bf258476 | |||
| 3b85425aa3 | |||
| e8e9fd30c9 | |||
| e914f795bc | |||
| 007b0c1132 | |||
| 11f67c73c8 | |||
| 01cbcbbb2c | |||
| 76fcd5f910 | |||
| 38a3da38c5 | |||
| f0b78036e3 | |||
| 2f7acbd31b | |||
| 8c1b214619 | |||
| e3e4de0fe7 | |||
| 452d49a439 | |||
| f53c2be978 | |||
| 36e5bdb839 | |||
| b54cb31d75 | |||
| 5134160539 | |||
| a9ad7d0bde | |||
| 6a1a9b60aa | |||
| 61126cfa64 | |||
| ec0feef74d | |||
| eff76eddc7 | |||
| 83039abc1b | |||
| bbdd68fb1d | |||
| afc0423bf6 | |||
| 0b18f3d145 | |||
| 593ecc9910 | |||
| 8fd7c70d1f | |||
| e71c1d1729 | |||
| 207872244b | |||
| 03b3530d3d | |||
| a7bd860e2b | |||
| df9c4b0653 | |||
| d2eed3af64 | |||
| f0eb826b64 | |||
| 2ed89fec3c | |||
| 281516823e | |||
| a2d110740d | |||
| ad14302ac5 | |||
| f903c635a7 | |||
| 5582d39a3f | |||
| 4f1e04a9b9 | |||
| 7514d75242 | |||
| fe2f3258b2 | |||
| c8ec980a3b | |||
| cb0e45c3fa | |||
| 532bf6c4ad | |||
| d7200cc8a3 | |||
| 3383f43688 | |||
| 26212b21b2 | |||
| 136f365fe2 | |||
| 2145ee6229 | |||
| 0f66152d72 | |||
| 24a0a384ff | |||
| 97297eacf7 | |||
| 5a70c7e7e8 | |||
| 7931d66b81 | |||
| 9fd48580bb | |||
| 1789402949 | |||
| 2546b69343 | |||
| fb420b2ff7 | |||
| 8a7547aaba | |||
| 9fe34c5282 | |||
| b948646cbd | |||
| 21c4afa564 | |||
| 41b9e541bb | |||
| e867b578bf | |||
| 944a20b2f3 | |||
| 7f4e3c4739 | |||
| 2ef5dcae71 | |||
| ad4d7aecc3 | |||
| 388ad92d96 | |||
| c37ec740e2 | |||
| cb31ea3575 | |||
| a27c344cb7 | |||
| a65c4f28e1 | |||
| ecd291c1be | |||
| 498dfed98b | |||
| da7366f23d | |||
| 8990162f99 | |||
| 1f0e2e92ad | |||
| 7743c14598 | |||
| c47cfe446d | |||
| 948e2cc837 | |||
| b611685653 | |||
| 26d16c38b8 | |||
| 5508f28c63 | |||
| c59ac1dd7f | |||
| 51cfef2fdc | |||
| 7611cb6147 | |||
| e04e3db69f | |||
| 6e7278c87a | |||
| 30e8bf56fb | |||
| d94c30833f | |||
| ed6e76aa0a | |||
| 1bf4d232b4 | |||
| 886074dc1e | |||
| 316750ad93 | |||
| f7bc95d47e | |||
| dc53aa887d | |||
| a179a9ae2d | |||
| 193b125c48 | |||
| 6d8adc9453 | |||
| e8b6914517 | |||
| da5d041227 | |||
| 5a48bccd25 | |||
| d4b3048e8e | |||
| 087135cccf | |||
| 8520ddaa83 | |||
| 7d856899c3 | |||
| 63687acc71 | |||
| 860f59893b | |||
| 39264e59c2 | |||
| 9ef9684556 | |||
| fa8fcd8786 | |||
| ac83334091 | |||
| a8586ecfd6 | |||
| ce58d238a9 | |||
| fc8a4d6e16 | |||
| 4769a78c50 | |||
| afb9211e7a | |||
| f1aa4173df | |||
| 91047b34c2 | |||
| 267f48ea8c | |||
| f9c61e4056 | |||
| bf0b3370ff | |||
| 05a09a8202 | |||
| bb5805fbc5 | 
							
								
								
									
										1
									
								
								.clang-tidy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.clang-tidy
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| Checks: '-*,analyzer-cplusplus.NewDeleteLeaks' | ||||
							
								
								
									
										2
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| custom: ['https://jami.net/whydonate/'] | ||||
| lfx_crowdfunding: jami-a-gnu-package | ||||
							
								
								
									
										17
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,9 +1,19 @@ | ||||
| *.user | ||||
| doc/Doxyfile | ||||
|  | ||||
| ### VisualStudioCode ### | ||||
| .vscode/**/* | ||||
| !.vscode/settings.json | ||||
| !.vscode/tasks.json | ||||
| !.vscode/launch.json | ||||
| !.vscode/extensions.json | ||||
| *.code-workspace | ||||
|  | ||||
| ### VisualStudioCode Patch ### | ||||
| # Ignore all local history of files | ||||
| **/.history | ||||
|  | ||||
| GeneratedFiles/ | ||||
| .vs/ | ||||
| .vscode/ | ||||
| x64/ | ||||
| x86/ | ||||
| [wW]in32/ | ||||
| @ -30,6 +40,9 @@ install/ | ||||
| *.log | ||||
| *.pid | ||||
|  | ||||
| # tests | ||||
| Testing/ | ||||
|  | ||||
| # auto-gen files | ||||
| src/app/resources.qrc | ||||
| src/app/qml.qrc | ||||
|  | ||||
							
								
								
									
										12
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							| @ -1,6 +1,6 @@ | ||||
| [submodule "3rdparty/qrencode-win32"] | ||||
| 	path = 3rdparty/qrencode-win32 | ||||
| 	url = https://github.com/BlueDragon747/qrencode-win32.git | ||||
| 	url = https://github.com/blizzard4591/qrencode-win32.git | ||||
| 	ignore = dirty | ||||
| [submodule "3rdparty/libqrencode"] | ||||
| 	url = https://github.com/fukuchi/libqrencode.git | ||||
| @ -21,9 +21,17 @@ | ||||
| 	ignore = dirty | ||||
| [submodule "3rdparty/md4c"] | ||||
| 	path = 3rdparty/md4c | ||||
| 	url = https://github.com/mity/md4c.git | ||||
| 	url = https://github.com/fsimonfc/md4c.git | ||||
| 	ignore = dirty | ||||
| [submodule "3rdparty/tidy-html5"] | ||||
| 	path = 3rdparty/tidy-html5 | ||||
| 	url = https://github.com/htacg/tidy-html5.git | ||||
| 	ignore = dirty | ||||
| [submodule "3rdparty/zxing-cpp"] | ||||
| 	path = 3rdparty/zxing-cpp | ||||
| 	url = https://github.com/nu-book/zxing-cpp.git | ||||
|         ignore = dirty | ||||
| [submodule "3rdparty/hunspell"] | ||||
| 	path = 3rdparty/hunspell | ||||
| 	url = https://gitlab.savoirfairelinux.com/jami/hunspell.git | ||||
| 	ignore = dirty | ||||
|  | ||||
| @ -3,6 +3,5 @@ host = https://www.transifex.com | ||||
|  | ||||
| [o:savoirfairelinux:p:jami:r:jami_client_qt] | ||||
| file_filter = translations/jami_client_qt_<lang>.ts | ||||
| source_file = translations/jami_client_qt.ts | ||||
| source_lang = en | ||||
| source_file = translations/jami_client_qt_en.ts | ||||
| type        = TS | ||||
|  | ||||
							
								
								
									
										49
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | ||||
| { | ||||
|     "version": "0.2.0", | ||||
|     "configurations": [ | ||||
|         { | ||||
|             "name": "Jami-Client-Debug", | ||||
|             "type": "cppdbg", | ||||
|             "request": "launch", | ||||
|             "program": "", | ||||
|             "linux":{ | ||||
|                 "MIMode": "gdb", | ||||
|                 "program": "${workspaceFolder}/build/jami", | ||||
|                 "args": [ | ||||
|                     "-d", | ||||
|                 ], | ||||
|             }, | ||||
|             "osx": { | ||||
|                 "MIMode": "lldb", | ||||
|                 "program": "${workspaceFolder}/build/Jami.app/Contents/MacOS/Jami", | ||||
|                 "environment": [ | ||||
|                     { | ||||
|                         "name": "NO_COLOR", | ||||
|                         "value": "true", | ||||
|                     } | ||||
|                 ], | ||||
|             }, | ||||
|             "cwd": "${workspaceFolder}", | ||||
|             "preLaunchTask": "cmake-build", | ||||
|             "externalConsole": false, // A macOS dev may want to set this to true. | ||||
|         }, | ||||
|         { | ||||
|             // Using this configuration will require manually reconfiguring the project using | ||||
|             // build.py --no-libwrap, otherwise the daemon executable will not be built and the | ||||
|             // client will not be built with ENABLE_LIBWRAP=False. | ||||
|             "name": "Jami-Daemon-Debug", | ||||
|             "type": "cppdbg", | ||||
|             "request": "launch", | ||||
|             "linux": { | ||||
|                 "MIMode": "gdb", | ||||
|                 "program": "${workspaceFolder}/daemon/bin/dbus/jamid", | ||||
|             }, | ||||
|             "program": "", | ||||
|             "args": [ | ||||
|                 "-cdp", | ||||
|             ], | ||||
|             "cwd": "${workspaceFolder}", | ||||
|             "preLaunchTask": "cmake-build", | ||||
|         } | ||||
|     ] | ||||
| } | ||||
							
								
								
									
										15
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| { | ||||
|     "C_Cpp.default.includePath": [ | ||||
|         "${default}", | ||||
|         "${workspaceFolder}/**", | ||||
|         "/usr/lib/libqt-jami/include/**", | ||||
|         "/usr/lib64/qt-jami/include/**", | ||||
|     ], | ||||
|     "C_Cpp.default.cppStandard": "c++17", | ||||
|     "C_Cpp.default.cStandard": "c11", | ||||
|     "cmake.configureOnOpen": true, | ||||
|     "editor.formatOnSave": true, | ||||
|     "editor.defaultFormatter": "xaver.clang-format", | ||||
|     "files.eol": "\n", | ||||
|     "cSpell.enabled": false, | ||||
| } | ||||
							
								
								
									
										93
									
								
								.vscode/tasks.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								.vscode/tasks.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,93 @@ | ||||
| { | ||||
|     "version": "2.0.0", | ||||
|     "tasks": [ | ||||
|         { | ||||
|             "label": "run-tests", | ||||
|             "type": "shell", | ||||
|             "command": "ctest", | ||||
|             "options": { | ||||
|                 "cwd": "${workspaceFolder}/build/tests", | ||||
|                 "env": { | ||||
|                     "HOME": "/tmp" | ||||
|                 } | ||||
|             }, | ||||
|             "args": [ | ||||
|                 "-V", | ||||
|                 "-R" | ||||
|             ], | ||||
|             "group": { | ||||
|                 "kind": "test", | ||||
|                 "isDefault": true | ||||
|             }, | ||||
|             "problemMatcher": [], | ||||
|             "detail": "Run the tests using CTest." | ||||
|         }, | ||||
|         { | ||||
|             "label": "cmake-configure", | ||||
|             "type": "shell", | ||||
|             "command": "cmake", | ||||
|             "args": [ | ||||
|                 "-S", ".", | ||||
|                 "-B", "build", | ||||
|                 "-DCMAKE_BUILD_TYPE=Debug", | ||||
|                 "-DCMAKE_PREFIX_PATH=\"/usr/lib64/qt-jami;/usr/lib/libqt-jami\"", | ||||
|             ], | ||||
|             "group": "build", | ||||
|             "problemMatcher": [], | ||||
|             "detail": "Generate the build system files with CMake." | ||||
|         }, | ||||
|         { | ||||
|             "label": "cmake-configure-tests", | ||||
|             "type": "shell", | ||||
|             "command": "cmake", | ||||
|             "args": [ | ||||
|                 "-S", ".", | ||||
|                 "-B", "build", | ||||
|                 "-DBUILD_TESTING=${input:buildTestingInput}" | ||||
|             ], | ||||
|             "group": "build", | ||||
|             "problemMatcher": [], | ||||
|             "detail": "Generate the build system files with CMake." | ||||
|         }, | ||||
|         { | ||||
|             "label": "cmake-build", | ||||
|             "type": "shell", | ||||
|             "command": "cmake", | ||||
|             "args": [ | ||||
|                 "--build", "build", | ||||
|                 "-j$(nproc)", | ||||
|             ], | ||||
|             "group": { | ||||
|                 "kind": "build", | ||||
|                 "isDefault": true | ||||
|             }, | ||||
|             "problemMatcher": [ | ||||
|                 "$gcc" | ||||
|             ], | ||||
|             "detail": "Compile the project using the generated build system.", | ||||
|             "dependsOn": [ | ||||
|                 "cmake-configure" | ||||
|             ] | ||||
|         }, | ||||
|         { | ||||
|             "label": "cmake-clean", | ||||
|             "type": "shell", | ||||
|             "command": "rm", | ||||
|             "args": [ | ||||
|                 "-rf", | ||||
|                 "build" | ||||
|             ], | ||||
|             "group": "build", | ||||
|             "problemMatcher": [], | ||||
|             "detail": "Clean the build directory." | ||||
|         } | ||||
|     ], | ||||
|     "inputs": [ | ||||
|         { | ||||
|             "id": "buildTestingInput", | ||||
|             "type": "pickString", | ||||
|             "description": "Do you want to enable testing?", | ||||
|             "options": ["True", "False"], | ||||
|         } | ||||
|     ] | ||||
| } | ||||
							
								
								
									
										1
									
								
								3rdparty/hunspell
									
									
									
									
										vendored
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								3rdparty/hunspell
									
									
									
									
										vendored
									
									
										Submodule
									
								
							 Submodule 3rdparty/hunspell added at 749cd84a0b
									
								
							
							
								
								
									
										2
									
								
								3rdparty/md4c
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								3rdparty/md4c
									
									
									
									
										vendored
									
									
								
							 Submodule 3rdparty/md4c updated: e9ff661ff8...635f296735
									
								
							
							
								
								
									
										2
									
								
								3rdparty/qrencode-win32
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								3rdparty/qrencode-win32
									
									
									
									
										vendored
									
									
								
							 Submodule 3rdparty/qrencode-win32 updated: d6495a2aa7...5ccf9bd445
									
								
							
							
								
								
									
										1
									
								
								3rdparty/zxing-cpp
									
									
									
									
										vendored
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								3rdparty/zxing-cpp
									
									
									
									
										vendored
									
									
										Submodule
									
								
							 Submodule 3rdparty/zxing-cpp added at a920817b6f
									
								
							
							
								
								
									
										495
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										495
									
								
								CMakeLists.txt
									
									
									
									
									
								
							| @ -1,11 +1,4 @@ | ||||
| # Copyright (C) 2020-2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Albert Babí <albert.babi@savoirfairelinux.com> | ||||
| # Author: Amin Bandali <amin.bandali@savoirfairelinux.com> | ||||
| # Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com> | ||||
| # Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> | ||||
| # Author: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com> | ||||
| # Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com> | ||||
| # Copyright (C) 2020-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
| @ -21,7 +14,7 @@ | ||||
| # along with this program; if not, write to the Free Software | ||||
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA. | ||||
|  | ||||
| cmake_minimum_required(VERSION 3.16) | ||||
| cmake_minimum_required(VERSION 3.19) | ||||
|  | ||||
| if(APPLE) | ||||
|   project(Jami) | ||||
| @ -29,11 +22,45 @@ else() | ||||
|   project(jami) | ||||
| endif() | ||||
|  | ||||
| option(WITH_DAEMON_SUBMODULE "Build with daemon submodule" OFF) | ||||
| option(ENABLE_TESTS "Build with tests" OFF) | ||||
| set(CMAKE_SCRIPTS_DIR ${PROJECT_SOURCE_DIR}/extras/build/cmake) | ||||
| include(${CMAKE_SCRIPTS_DIR}/extra_tools.cmake) | ||||
|  | ||||
| option(WITH_DAEMON_SUBMODULE "Build with daemon submodule" ON) | ||||
| option(JAMICORE_AS_SUBDIR "Build Jami-core as a subdir dependency" ON) | ||||
| option(WITH_WEBENGINE "Build with WebEngine" ON) | ||||
| if(WITH_WEBENGINE) | ||||
|   add_definitions(-DWITH_WEBENGINE) | ||||
| option(ENABLE_LIBWRAP "Enable libwrap (single process mode)" ON) | ||||
| if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Linux") | ||||
|     OR ENABLE_LIBWRAP | ||||
|     # because mocks use the same interface present in qtwrapper/ | ||||
|     OR ENABLE_TEST) | ||||
|   set(ENABLE_LIBWRAP true) | ||||
| endif() | ||||
| option(ENABLE_ASAN "Enable address sanitization" OFF) | ||||
| if(ENABLE_ASAN AND NOT MSVC) | ||||
|   message(STATUS "Address sanitization enabled for client") | ||||
|   # Add AddressSanitizer flags for both compiler and linker | ||||
|   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") | ||||
|   set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") | ||||
| endif() | ||||
|  | ||||
| # Enable this option when building for production. | ||||
| option(ENABLE_CRASHREPORTS "Enable crash reports" OFF) | ||||
|  | ||||
| # These values are exposed to QML and are better off being defined as values. | ||||
| define_macro_with_value(WITH_WEBENGINE) | ||||
| define_macro_with_value(APPSTORE) | ||||
| define_macro_with_value(ENABLE_CRASHREPORTS) | ||||
|  | ||||
| # jami-core | ||||
| if(NOT WITH_DAEMON_SUBMODULE) | ||||
|   set(DAEMON_DIR ${PROJECT_SOURCE_DIR}/../daemon) | ||||
| else() | ||||
|   set(DAEMON_DIR ${PROJECT_SOURCE_DIR}/daemon) | ||||
| endif() | ||||
|  | ||||
| if(JAMICORE_AS_SUBDIR) | ||||
|   add_subdirectory(${DAEMON_DIR} EXCLUDE_FROM_ALL) | ||||
|   set(LIBJAMI_LIB jami-core) | ||||
| endif() | ||||
|  | ||||
| # init some variables for includes, libs, etc. | ||||
| @ -41,26 +68,95 @@ set(CLIENT_INCLUDE_DIRS, "") | ||||
| set(CLIENT_LINK_DIRS, "") | ||||
| set(CLIENT_LIBS, "") | ||||
|  | ||||
| include(${PROJECT_SOURCE_DIR}/extras/build/cmake/contrib_tools.cmake) | ||||
| set(EXTRA_PATCHES_DIR ${PROJECT_SOURCE_DIR}/extras/patches) | ||||
|  | ||||
| list(APPEND QWINDOWKIT_OPTIONS | ||||
|   QWINDOWKIT_BUILD_WIDGETS OFF | ||||
|   QWINDOWKIT_INSTALL OFF | ||||
|   QWINDOWKIT_BUILD_STATIC ON | ||||
|   QWINDOWKIT_BUILD_QUICK ON | ||||
| ) | ||||
|  | ||||
| if(WIN32) | ||||
|   # Beta config | ||||
|   if(BETA) | ||||
|     message(STATUS "Beta config enabled") | ||||
|     add_definitions(-DBETA) | ||||
|   endif() | ||||
|   set(JAMI_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/x64/${CMAKE_BUILD_TYPE}) | ||||
| endif() | ||||
|  | ||||
| if(WIN32) | ||||
|   list(APPEND QWINDOWKIT_OPTIONS QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS OFF) | ||||
| endif() | ||||
|  | ||||
| # If qwindowkit can't find qmsetup via cmake's find_package function, it will install it and | ||||
| # then call find_package again. Unfortunately, even the second call to find_package sometimes | ||||
| # fails due to qmsetup having been installed in the wrong directory. The following patch | ||||
| # ensures that qmsetup is always installed in the directory where find_package looks for it. | ||||
| if(NOT WIN32) | ||||
|   list(APPEND QWINDOWKIT_PATCHES ${EXTRA_PATCHES_DIR}/0001-fix-qm_install_package-function.patch) | ||||
| endif() | ||||
|  | ||||
| # qwindowkit (frameless window) | ||||
| add_fetch_content( | ||||
|   TARGET qwindowkit | ||||
|   URL https://github.com/stdware/qwindowkit.git | ||||
|   BRANCH 758b00cb6c2d924be3a1ea137ec366dc33a5132d | ||||
|   PATCHES ${QWINDOWKIT_PATCHES} | ||||
|   OPTIONS ${QWINDOWKIT_OPTIONS} | ||||
| ) | ||||
| list(APPEND CLIENT_INCLUDE_DIRS ${QWindowKit_BINARY_DIR}/include) | ||||
| list(APPEND CLIENT_LIBS QWindowKit::Quick) | ||||
|  | ||||
| # If ENABLE_CRASHREPORTS is enabled, we will use crashpad_cmake for now. | ||||
| if(ENABLE_CRASHREPORTS) | ||||
|   set(ENABLE_CRASHPAD ON) | ||||
|   set(CRASH_REPORT_URL "http://localhost:8080/submit" CACHE STRING "URL for crash handler uploads") | ||||
| endif() | ||||
| add_definitions(-DCRASH_REPORT_URL="${CRASH_REPORT_URL}") | ||||
|  | ||||
| # Crash-report client: crashpad | ||||
| if(ENABLE_CRASHPAD) | ||||
|   message(STATUS "Crashpad enabled for client") | ||||
|   if(WIN32) | ||||
|     set(CMAKE_OBJECT_PATH_MAX 256) | ||||
|     add_definitions(-DNOMINMAX) | ||||
|   endif() | ||||
|   add_fetch_content( | ||||
|     TARGET crashpad_cmake | ||||
|     URL https://github.com/TheAssemblyArmada/crashpad-cmake.git | ||||
|     BRANCH 80573adcc845071401c73c99eaec7fd9847d45fb | ||||
|   ) | ||||
|   add_definitions(-DENABLE_CRASHPAD) | ||||
|   if (WIN32) | ||||
|     # This makes sure the console window doesn't show up when running the | ||||
|     # crashpad_handler executable. | ||||
|     set_target_properties(crashpad_handler PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS") | ||||
|     # Set the output directory for the crashpad_handler executable. On Windows, | ||||
|     # we use either the Release or Beta directory depending on the BETA option | ||||
|     # which is set above. | ||||
|     set_target_properties(crashpad_handler PROPERTIES | ||||
|         RUNTIME_OUTPUT_DIRECTORY_RELEASE "${JAMI_OUTPUT_DIRECTORY_RELEASE}") | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| set(CMAKE_CXX_STANDARD 17) | ||||
| set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||||
| set(CMAKE_CXX_FLAGS_DEBUG "-Og -ggdb") | ||||
| if(NOT MSVC) | ||||
|   set(CMAKE_CXX_FLAGS_DEBUG "-Og -ggdb") | ||||
| endif() | ||||
|  | ||||
| set(CMAKE_AUTOMOC ON) | ||||
| set(CMAKE_AUTORCC ON) | ||||
| set(CMAKE_AUTOUIC ON) | ||||
| set(CMAKE_INCLUDE_CURRENT_DIR ON) | ||||
|  | ||||
| # Main project directories: | ||||
|  | ||||
| # jami-daemon | ||||
| if(NOT WITH_DAEMON_SUBMODULE) | ||||
|   set(DAEMON_DIR ${PROJECT_SOURCE_DIR}/../daemon) | ||||
| else() | ||||
|   set(DAEMON_DIR ${PROJECT_SOURCE_DIR}/daemon) | ||||
| endif() | ||||
| # src | ||||
| set(LIBCLIENT_SRC_DIR ${PROJECT_SOURCE_DIR}/src/libclient) | ||||
| set(APP_SRC_DIR ${PROJECT_SOURCE_DIR}/src/app) | ||||
| set(VERSION_INFO_DIR ${PROJECT_SOURCE_DIR}/src/version_info) | ||||
| # doc | ||||
| set(DOC_DIR ${PROJECT_SOURCE_DIR}/doc) | ||||
| # extras | ||||
| @ -74,26 +170,18 @@ set(TESTS_DIR ${PROJECT_SOURCE_DIR}/tests) | ||||
| # Here we let find_package(<PackageName>...) try to find Qt 6, | ||||
| # If it is found, find_package will succeed, and the CMake variable | ||||
| # QT_VERSION_MAJOR will be defined 6. | ||||
| set(QT6_MINVER_MINOR 8) | ||||
| if(QT6_VER AND QT6_PATH) | ||||
|   find_package(QT NAMES Qt6 REQUIRED | ||||
|     PATHS ${QT6_PATH} NO_DEFAULT_PATH) | ||||
| else() | ||||
|   message(STATUS "Looking for Qt 6 in ${CMAKE_PREFIX_PATH}") | ||||
|   find_package(QT NAMES Qt6 REQUIRED) | ||||
| endif() | ||||
| if (${QT_VERSION_MAJOR} STRLESS 6) | ||||
|   if (${QT_VERSION_MINOR} STRLESS 2) | ||||
|     message(FATAL_ERROR "Qt 6.2 or higher is required.") | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| if(MSVC) | ||||
|   set(DEFAULT_BUILD_TYPE "Debug") | ||||
|   if(NOT CMAKE_BUILD_TYPE) | ||||
|     message(STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as none was specified.") | ||||
|     set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE | ||||
|         STRING "Choose the type of build." FORCE) | ||||
|   endif() | ||||
|   set(OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/x64/${CMAKE_BUILD_TYPE}") | ||||
| if (${QT_VERSION_MINOR} GREATER_EQUAL ${QT6_MINVER_MINOR}) | ||||
|   message(STATUS "Found a suitable Qt version ${QT_VERSION}") | ||||
| else() | ||||
|   message(FATAL_ERROR "Qt 6.8 or higher is required. Found ${QT_VERSION}") | ||||
| endif() | ||||
|  | ||||
| # libjamiclient | ||||
| @ -145,22 +233,41 @@ cloned this repository via git, perhaps you did not initialize its \ | ||||
| submodules afterwards.  You can do so by running \"git submodule \ | ||||
| update --init\" in the repository.") | ||||
| endif() | ||||
| set(CMAKE_MODULE_PATH | ||||
|   ${CMAKE_MODULE_PATH} "${EXTRAS_DIR}/build/cmake/modules") | ||||
| find_package(LibJami REQUIRED) | ||||
| if(LIBJAMI_FOUND) | ||||
|   include_directories(${LIBJAMI_INCLUDE_DIRS}) | ||||
| list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/extras/build/cmake/modules) | ||||
| if (NOT JAMICORE_AS_SUBDIR) | ||||
|   find_package(LibJami REQUIRED) | ||||
|   if(LIBJAMI_FOUND) | ||||
|     include_directories(${LIBJAMI_INCLUDE_DIRS}) | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| include(FindPython3) | ||||
| find_package(Python3 3.6 REQUIRED COMPONENTS Interpreter) | ||||
| set(PYTHON_EXEC ${Python3_EXECUTABLE}) | ||||
|  | ||||
| # Versioning and build ID generation | ||||
| set(VERSION_FILE ${CMAKE_CURRENT_BINARY_DIR}/version_info.cpp) | ||||
| # Touch the file to ensure it exists at configure time as | ||||
| # we add it to the target_sources below. | ||||
| file(TOUCH ${VERSION_FILE}) | ||||
| add_custom_target( | ||||
|   generate_version_info ALL | ||||
|   WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} | ||||
|   COMMAND ${CMAKE_COMMAND} | ||||
|   -DAPP_SOURCE_DIR=${CMAKE_SOURCE_DIR} | ||||
|   -DAPP_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} | ||||
|   -DCORE_SOURCE_DIR=${DAEMON_DIR} | ||||
|   -DCPP_INT_FILE=${VERSION_INFO_DIR}/version_info.cpp.in | ||||
|   -DBUILD_VERSION=${BUILD_VERSION} | ||||
|   -P ${CMAKE_SCRIPTS_DIR}/generate_version_info.cmake | ||||
| ) | ||||
| list(APPEND CLIENT_INCLUDE_DIRS ${VERSION_INFO_DIR}) | ||||
|  | ||||
| # Resource auto-gen | ||||
| # QML and related code files | ||||
| # Check files in the app's src directory and force a reconfigure if it | ||||
| # changes. | ||||
| # Only include webengine resources if specified. | ||||
| # Only include WebEngine resources if specified. | ||||
| if(WITH_WEBENGINE) | ||||
|   set(GEN_QRC_ARGS "--with-webengine") | ||||
| endif() | ||||
| @ -172,6 +279,7 @@ execute_process( | ||||
|   ${PYTHON_EXEC} ${SCRIPTS_DIR}/gen_qml_qrc.py ${GEN_QRC_ARGS} | ||||
|   WORKING_DIRECTORY ${APP_SRC_DIR}) | ||||
| set(QML_RESOURCES_QML ${APP_SRC_DIR}/qml.qrc) | ||||
|  | ||||
| # Image and misc. resources | ||||
| # check files in the resources directory and force a reconfigure if it | ||||
| # changes | ||||
| @ -183,10 +291,16 @@ execute_process( | ||||
|   WORKING_DIRECTORY ${APP_SRC_DIR}) | ||||
| set(QML_RESOURCES ${APP_SRC_DIR}/resources.qrc) | ||||
|  | ||||
| # Find modules (QtCreator) under the root source dir. | ||||
| list(APPEND QML_DIRS ${APP_SRC_DIR}) | ||||
| set(QML_IMPORT_PATH ${QML_DIRS} | ||||
|   CACHE STRING "Qt Creator extra qml import paths" FORCE) | ||||
|  | ||||
| # library compatibility (boost, libnotify, etc.) | ||||
| add_definitions(-DQT_NO_KEYWORDS) | ||||
|  | ||||
| set(COMMON_SOURCES | ||||
|   ${VERSION_FILE} | ||||
|   ${APP_SRC_DIR}/bannedlistmodel.cpp | ||||
|   ${APP_SRC_DIR}/accountlistmodel.cpp | ||||
|   ${APP_SRC_DIR}/networkmanager.cpp | ||||
| @ -206,6 +320,7 @@ set(COMMON_SOURCES | ||||
|   ${APP_SRC_DIR}/pluginadapter.cpp | ||||
|   ${APP_SRC_DIR}/deviceitemlistmodel.cpp | ||||
|   ${APP_SRC_DIR}/pluginlistmodel.cpp | ||||
|   ${APP_SRC_DIR}/pluginstorelistmodel.cpp | ||||
|   ${APP_SRC_DIR}/pluginhandlerlistmodel.cpp | ||||
|   ${APP_SRC_DIR}/preferenceitemlistmodel.cpp | ||||
|   ${APP_SRC_DIR}/mediacodeclistmodel.cpp | ||||
| @ -225,6 +340,8 @@ set(COMMON_SOURCES | ||||
|   ${APP_SRC_DIR}/conversationlistmodel.cpp | ||||
|   ${APP_SRC_DIR}/searchresultslistmodel.cpp | ||||
|   ${APP_SRC_DIR}/calloverlaymodel.cpp | ||||
|   ${APP_SRC_DIR}/spellcheckdictionarylistmodel.cpp | ||||
|   ${APP_SRC_DIR}/spellcheckadapter.cpp | ||||
|   ${APP_SRC_DIR}/filestosendlistmodel.cpp | ||||
|   ${APP_SRC_DIR}/wizardviewstepmodel.cpp | ||||
|   ${APP_SRC_DIR}/avatarregistry.cpp | ||||
| @ -238,16 +355,23 @@ set(COMMON_SOURCES | ||||
|   ${APP_SRC_DIR}/positioning.cpp | ||||
|   ${APP_SRC_DIR}/currentcall.cpp | ||||
|   ${APP_SRC_DIR}/messageparser.cpp | ||||
|   ${APP_SRC_DIR}/previewengine.cpp) | ||||
|   ${APP_SRC_DIR}/previewengine.cpp | ||||
|   ${APP_SRC_DIR}/filedownloader.cpp | ||||
|   ${APP_SRC_DIR}/pluginversionmanager.cpp | ||||
|   ${APP_SRC_DIR}/connectioninfolistmodel.cpp | ||||
|   ${APP_SRC_DIR}/pluginversionmanager.cpp | ||||
|   ${APP_SRC_DIR}/linkdevicemodel.cpp | ||||
|   ${APP_SRC_DIR}/qrcodescannermodel.cpp | ||||
|   ${APP_SRC_DIR}/spellchecker.cpp) | ||||
|  | ||||
| set(COMMON_HEADERS | ||||
|   ${APP_SRC_DIR}/global.h | ||||
|   ${APP_SRC_DIR}/avatarimageprovider.h | ||||
|   ${APP_SRC_DIR}/networkmanager.h | ||||
|   ${APP_SRC_DIR}/smartlistmodel.h | ||||
|   ${APP_SRC_DIR}/updatemanager.h | ||||
|   ${APP_SRC_DIR}/appversionmanager.h | ||||
|   ${APP_SRC_DIR}/utils.h | ||||
|   ${APP_SRC_DIR}/bannedlistmodel.h | ||||
|   ${APP_SRC_DIR}/version.h | ||||
|   ${APP_SRC_DIR}/accountlistmodel.h | ||||
|   ${APP_SRC_DIR}/instancemanager.h | ||||
|   ${APP_SRC_DIR}/connectivitymonitor.h | ||||
| @ -266,6 +390,7 @@ set(COMMON_HEADERS | ||||
|   ${APP_SRC_DIR}/pluginadapter.h | ||||
|   ${APP_SRC_DIR}/deviceitemlistmodel.h | ||||
|   ${APP_SRC_DIR}/pluginlistmodel.h | ||||
|   ${APP_SRC_DIR}/pluginstorelistmodel.h | ||||
|   ${APP_SRC_DIR}/pluginhandlerlistmodel.h | ||||
|   ${APP_SRC_DIR}/preferenceitemlistmodel.h | ||||
|   ${APP_SRC_DIR}/mediacodeclistmodel.h | ||||
| @ -288,6 +413,8 @@ set(COMMON_HEADERS | ||||
|   ${APP_SRC_DIR}/conversationlistmodel.h | ||||
|   ${APP_SRC_DIR}/searchresultslistmodel.h | ||||
|   ${APP_SRC_DIR}/calloverlaymodel.h | ||||
|   ${APP_SRC_DIR}/spellcheckdictionarylistmodel.h | ||||
|   ${APP_SRC_DIR}/spellcheckadapter.h | ||||
|   ${APP_SRC_DIR}/filestosendlistmodel.h | ||||
|   ${APP_SRC_DIR}/wizardviewstepmodel.h | ||||
|   ${APP_SRC_DIR}/avatarregistry.h | ||||
| @ -301,14 +428,35 @@ set(COMMON_HEADERS | ||||
|   ${APP_SRC_DIR}/positioning.h | ||||
|   ${APP_SRC_DIR}/currentcall.h | ||||
|   ${APP_SRC_DIR}/messageparser.h | ||||
|   ${APP_SRC_DIR}/htmlparser.h) | ||||
|   ${APP_SRC_DIR}/htmlparser.h | ||||
|   ${APP_SRC_DIR}/filedownloader.h | ||||
|   ${APP_SRC_DIR}/pluginversionmanager.h | ||||
|   ${APP_SRC_DIR}/connectioninfolistmodel.h | ||||
|   ${APP_SRC_DIR}/pttlistener.h | ||||
|   ${APP_SRC_DIR}/crashreportclient.h | ||||
|   ${APP_SRC_DIR}/crashreporter.h | ||||
|   ${APP_SRC_DIR}/linkdevicemodel.h | ||||
|   ${APP_SRC_DIR}/qrcodescannermodel.h | ||||
|   ${APP_SRC_DIR}/spellchecker.h) | ||||
|  | ||||
| set(CONTRIB_DARWIN_FOLDER "") | ||||
| if(APPLE) | ||||
|   list(LENGTH CMAKE_OSX_ARCHITECTURES ARCH_LEN) | ||||
|   if(ARCH_LEN EQUAL 1) | ||||
|     # single-arch -> use <arch>-apple-darwin<ver> | ||||
|     set(DARWIN_ARCH "${CMAKE_OSX_ARCHITECTURES}") | ||||
|     set(CONTRIB_DARWIN_FOLDER "${DARWIN_ARCH}-apple-darwin${CMAKE_SYSTEM_VERSION}") | ||||
|   else() # multi-arch -> use apple-darwin<ver> | ||||
|     set(CONTRIB_DARWIN_FOLDER "apple-darwin${CMAKE_SYSTEM_VERSION}") | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| # For libavutil/avframe. | ||||
| set(LIBJAMI_CONTRIB_DIR "${DAEMON_DIR}/contrib") | ||||
| find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h | ||||
|   PATHS | ||||
|   ${LIBJAMI_CONTRIB_DIR}/native/ffmpeg | ||||
|   ${LIBJAMI_CONTRIB_DIR}/apple-darwin/include/ | ||||
|   ${LIBJAMI_CONTRIB_DIR}/${CONTRIB_DARWIN_FOLDER}/include/ | ||||
|   ${LIBJAMI_CONTRIB_DIR}/build/ffmpeg/Build/win32/x64/include) | ||||
| include_directories(${AVUTIL_INCLUDE_DIR}) | ||||
|  | ||||
| @ -317,6 +465,36 @@ if(Vulkan_FOUND) | ||||
|   add_definitions(-DHAS_VULKAN) | ||||
|   include_directories(${Vulkan_INCLUDE_DIR}) | ||||
| endif() | ||||
| # Define PREFER_VULKAN to prefer Vulkan over the default API | ||||
| # on GNU/Linux and Windows. Metal is always preferred on macOS. | ||||
|  | ||||
| if(ENABLE_CRASHREPORTS) | ||||
|   set(CRASHREPORT_CLIENT_DIR ${APP_SRC_DIR}/crashreportclients) | ||||
|   if(ENABLE_CRASHPAD) | ||||
|     list(APPEND CLIENT_LIBS crashpad_client) | ||||
|     list(APPEND COMMON_SOURCES ${CRASHREPORT_CLIENT_DIR}/crashpad.cpp) | ||||
|     list(APPEND COMMON_HEADERS ${CRASHREPORT_CLIENT_DIR}/crashpad.h) | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| find_package(PkgConfig REQUIRED) | ||||
|  | ||||
| # hunspell | ||||
| pkg_search_module(hunspell IMPORTED_TARGET hunspell) | ||||
| if(hunspell_FOUND) | ||||
|   message(STATUS "hunspell found") | ||||
|   set(HUNSPELL_LIBRARIES PkgConfig::hunspell) | ||||
| else() | ||||
|   message(STATUS "hunspell not found - building hunspell") | ||||
|  | ||||
|   set(HUNSPELL_DIR ${PROJECT_SOURCE_DIR}/3rdparty/hunspell) | ||||
|  | ||||
|   # Build using the submodule and its CMakeLists.txt | ||||
|   add_subdirectory(${HUNSPELL_DIR} hunspell_build EXCLUDE_FROM_ALL) | ||||
|  | ||||
|   set(HUNSPELL_INCLUDE_DIR ${HUNSPELL_DIR}/src) | ||||
|   set(HUNSPELL_LIBRARIES hunspell::hunspell) | ||||
| endif() | ||||
|  | ||||
| if(MSVC) | ||||
|   set(WINDOWS_SYS_LIBS | ||||
| @ -333,14 +511,10 @@ if(MSVC) | ||||
|  | ||||
|   list(APPEND COMMON_SOURCES | ||||
|     ${APP_SRC_DIR}/connectivitymonitor.cpp | ||||
|     ${APP_SRC_DIR}/updatemanager.cpp) | ||||
|     ${APP_SRC_DIR}/appversionmanager.cpp) | ||||
|   # preprocessor defines | ||||
|   add_definitions(-DUNICODE -DQT_NO_DEBUG -DNDEBUG) | ||||
|  | ||||
|   # dependencies | ||||
|   set(QRENCODE_DIR | ||||
|     ${PROJECT_SOURCE_DIR}/3rdparty/qrencode-win32/qrencode-win32) | ||||
|  | ||||
|   # compiler options | ||||
|   add_compile_options( | ||||
|     /wd4068 /wd4099 /wd4189 /wd4267 /wd4577 /wd4467 /wd4715 /wd4828) | ||||
| @ -358,41 +532,32 @@ if(MSVC) | ||||
|     "/NODEFAULTLIB:LIBCMT") | ||||
|  | ||||
|   # client deps | ||||
|   set(QRENCODE_LIB | ||||
|     ${QRENCODE_DIR}/vc8/qrcodelib/x64/Release-Lib/qrcodelib.lib) | ||||
|   set(QRENCODE_DIR ${PROJECT_SOURCE_DIR}/3rdparty/qrencode-win32/qrencode-win32) | ||||
|   file(GLOB_RECURSE QRENCODE_LIB ${QRENCODE_DIR}/qrcodelib.lib) | ||||
|   file(GLOB_RECURSE QRENCODE_INCLUDE ${QRENCODE_DIR}/qrencode.h) | ||||
|   get_filename_component(QRENCODE_INCLUDE_DIR ${QRENCODE_INCLUDE} DIRECTORY) | ||||
|  | ||||
|   # daemon | ||||
|   set(JAMID_SRC_PATH ${DAEMON_DIR}/contrib/msvc/include) | ||||
|   set(JAMID_LIB ${DAEMON_DIR}/build/x64/ReleaseLib_win32/bin/jami.lib) | ||||
|   set(GNUTLS_LIB ${DAEMON_DIR}/contrib/msvc/lib/x64/libgnutls.lib) | ||||
|  | ||||
|   # Beta config | ||||
|   if(BETA) | ||||
|     message(STATUS "Beta config enabled") | ||||
|     add_definitions(-DBETA) | ||||
|     set(JAMI_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/x64/Beta) | ||||
|   else() | ||||
|     set(JAMI_OUTPUT_DIRECTORY_RELEASE | ||||
|       ${PROJECT_SOURCE_DIR}/x64/Release) | ||||
|   endif() | ||||
|  | ||||
|   include_directories( | ||||
|     ${JAMID_SRC_PATH} | ||||
|     ${LIBCLIENT_SRC_DIR} | ||||
|     ${QRENCODE_DIR}) | ||||
|     ${QRENCODE_INCLUDE_DIR}) | ||||
| elseif (NOT APPLE) | ||||
|   list(APPEND COMMON_SOURCES | ||||
|     ${APP_SRC_DIR}/xrectsel.c | ||||
|     ${APP_SRC_DIR}/connectivitymonitor.cpp | ||||
|     ${APP_SRC_DIR}/dbuserrorhandler.cpp | ||||
|     ${APP_SRC_DIR}/updatemanager.cpp) | ||||
|     ${APP_SRC_DIR}/appversionmanager.cpp | ||||
|     ${APP_SRC_DIR}/screencastportal.cpp) | ||||
|   list(APPEND COMMON_HEADERS | ||||
|     ${APP_SRC_DIR}/xrectsel.h | ||||
|     ${APP_SRC_DIR}/dbuserrorhandler.h) | ||||
|     ${APP_SRC_DIR}/dbuserrorhandler.h | ||||
|     ${APP_SRC_DIR}/screencastportal.h) | ||||
|   list(APPEND QT_MODULES DBus) | ||||
|  | ||||
|   find_package(PkgConfig REQUIRED) | ||||
|  | ||||
|   pkg_check_modules(GLIB REQUIRED glib-2.0) | ||||
|   if(GLIB_FOUND) | ||||
|     add_definitions(${GLIB_CFLAGS_OTHER}) | ||||
| @ -403,6 +568,11 @@ elseif (NOT APPLE) | ||||
|     add_definitions(${GIO_CFLAGS}) | ||||
|   endif() | ||||
|  | ||||
|   pkg_check_modules(GIOUNIX REQUIRED gio-unix-2.0) | ||||
|   if(GIOUNIX_FOUND) | ||||
|     add_definitions(${GIOUNIX_CFLAGS}) | ||||
|   endif() | ||||
|  | ||||
|   pkg_check_modules(LIBNM libnm) | ||||
|   if(LIBNM_FOUND) | ||||
|     add_definitions(-DUSE_LIBNM) | ||||
| @ -416,19 +586,12 @@ elseif (NOT APPLE) | ||||
|     add_definitions(${LIBGDKPIXBUF_CFLAGS}) | ||||
|   endif() | ||||
|  | ||||
|   list(PREPEND CMAKE_PREFIX_PATH | ||||
|     ${LIBJAMI_CONTRIB_DIR}/native/ffmpeg/libavutil) | ||||
|   pkg_check_modules(LIBAVUTIL libavutil>=55.75.100) | ||||
|   list(REMOVE_ITEM CMAKE_PREFIX_PATH | ||||
|     ${LIBJAMI_CONTRIB_DIR}/native/ffmpeg/libavutil) | ||||
|  | ||||
|   include_directories( | ||||
|     ${LIBCLIENT_SRC_DIR} | ||||
|     ${LIBNM_INCLUDE_DIRS} | ||||
|     ${LIBNOTIFY_INCLUDE_DIRS} | ||||
|     ${LIBGDKPIXBUF_INCLUDE_DIRS} | ||||
|     ${GLIB_INCLUDE_DIRS} | ||||
|     ${LIBAVUTIL_INCLUDE_DIRS}) | ||||
|     ${GLIB_INCLUDE_DIRS}) | ||||
|  | ||||
|   set(JAMI_DATA_PREFIX "${CMAKE_INSTALL_PREFIX}/share") | ||||
|  | ||||
| @ -437,7 +600,7 @@ elseif (NOT APPLE) | ||||
|   find_library(X11 X11) | ||||
| else() # APPLE | ||||
|   list(APPEND COMMON_SOURCES | ||||
|     ${APP_SRC_DIR}/os/macos/updatemanager.mm | ||||
|     ${APP_SRC_DIR}/os/macos/appversionmanager.mm | ||||
|     ${APP_SRC_DIR}/os/macos/connectivitymonitor.mm | ||||
|     ${APP_SRC_DIR}/os/macos/macutils.mm) | ||||
|   list(APPEND COMMON_HEADERS | ||||
| @ -470,6 +633,13 @@ else() # APPLE | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| message(STATUS "Adding HUNSPELL_INCLUDE_DIR" ${HUNSPELL_INCLUDE_DIR}) | ||||
| list(APPEND CLIENT_INCLUDE_DIRS ${HUNSPELL_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/include | ||||
| ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/hunspell/src) | ||||
|  | ||||
| message(STATUS "Adding HUNSPELL_LIBRARIES" ${HUNSPELL_INCLUDE_DIR}) | ||||
| list(APPEND CLIENT_LIBS ${HUNSPELL_LIBRARIES}) | ||||
|  | ||||
| # Qt find package | ||||
| if(QT6_VER AND QT6_PATH) | ||||
|   message(STATUS "Using custom Qt version") | ||||
| @ -483,6 +653,29 @@ else() | ||||
|     OPTIONAL_COMPONENTS LinguistTools) | ||||
| endif() | ||||
|  | ||||
| if (CMAKE_SYSTEM_NAME STREQUAL "Linux") | ||||
|     if (DEFINED ENV{XDG_SESSION_TYPE}) | ||||
|         if ($ENV{XDG_SESSION_TYPE} STREQUAL "x11") | ||||
|             set(PTT_PLATFORM "x11") | ||||
|             list(APPEND COMMON_HEADER ${APP_SRC_DIR}/platform/X11/xcbkeyboard.H) | ||||
|         # TODO: add Wayland support | ||||
|         endif () | ||||
|     endif () | ||||
| elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows") | ||||
|     set(PTT_PLATFORM "windows") | ||||
| elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") | ||||
|     set(PTT_PLATFORM "macos") | ||||
| endif () | ||||
|  | ||||
| if (NOT ${PTT_PLATFORM} STREQUAL "") | ||||
|     message(STATUS "Platform: ${PTT_PLATFORM}") | ||||
|     add_definitions(-DHAVE_GLOBAL_PTT) | ||||
|     list(APPEND COMMON_SOURCES ${APP_SRC_DIR}/platform/${PTT_PLATFORM}/pttlistener.cpp) | ||||
| else () | ||||
|     message(WARNING "Global push-to-talk not supported.") | ||||
|     list(APPEND COMMON_SOURCES ${APP_SRC_DIR}/platform/local/pttlistener.cpp) | ||||
| endif () | ||||
|  | ||||
| # common includes | ||||
| include_directories( | ||||
|   ${PROJECT_SOURCE_DIR} | ||||
| @ -491,6 +684,7 @@ include_directories( | ||||
| if(ENABLE_LIBWRAP) | ||||
|   list(APPEND COMMON_HEADERS | ||||
|     ${LIBCLIENT_SRC_DIR}/qtwrapper/instancemanager_wrap.h) | ||||
|   add_definitions(-DENABLE_LIBWRAP=true) | ||||
| endif() | ||||
|  | ||||
| # SFPM | ||||
| @ -499,19 +693,43 @@ add_subdirectory(3rdparty/SortFilterProxyModel) | ||||
| set(SFPM_OBJECTS $<TARGET_OBJECTS:SortFilterProxyModel>) | ||||
|  | ||||
| # md4c | ||||
| set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE) | ||||
| add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL) | ||||
| list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src) | ||||
| list(APPEND CLIENT_INCLUDE_DIRS ${MD4C_SOURCE_DIR}/src) | ||||
| list(APPEND CLIENT_LIBS md4c-html) | ||||
| find_package(md4c) | ||||
| if(md4c_FOUND) | ||||
|   message(STATUS "Using system-provided md4c-html") | ||||
|   list(APPEND CLIENT_LIBS md4c::md4c-html) | ||||
| else() | ||||
|   message("Using bundled md4c-html library") | ||||
|   set(BUILD_MD2HTML_EXECUTABLE OFF CACHE BOOL "Don't build md2html executable" FORCE) | ||||
|   set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE) | ||||
|   add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL) | ||||
|   list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src) | ||||
|   list(APPEND CLIENT_INCLUDE_DIRS ${MD4C_SOURCE_DIR}/src) | ||||
|   list(APPEND CLIENT_LIBS md4c-html) | ||||
| endif() | ||||
|  | ||||
| # tidy-html5 | ||||
| set(BUILD_SHARED_LIB OFF CACHE BOOL "Don't build shared tidy library" FORCE) | ||||
| set(SUPPORT_CONSOLE_APP OFF CACHE BOOL "Don't build tidy console app" FORCE) | ||||
| add_subdirectory(3rdparty/tidy-html5 EXCLUDE_FROM_ALL) | ||||
| list(APPEND CLIENT_LINK_DIRS ${tidy_BINARY_DIR}/Release) | ||||
| list(APPEND CLIENT_INCLUDE_DIRS ${tidy_SOURCE_DIR}/include) | ||||
| list(APPEND CLIENT_LIBS tidy-static) | ||||
| pkg_check_modules(tidy IMPORTED_TARGET tidy) | ||||
| if(tidy_FOUND) | ||||
|   message(STATUS "Using system-provided tidy") | ||||
|   list(APPEND CLIENT_LIBS PkgConfig::tidy) | ||||
| else() | ||||
|   message("Using bundled tidy library") | ||||
|   set(BUILD_SHARED_LIB OFF CACHE BOOL "Don't build shared tidy library" FORCE) | ||||
|   set(SUPPORT_CONSOLE_APP OFF CACHE BOOL "Don't build tidy console app" FORCE) | ||||
|   add_subdirectory(3rdparty/tidy-html5 EXCLUDE_FROM_ALL) | ||||
|   list(APPEND CLIENT_LINK_DIRS ${tidy_BINARY_DIR}/Release) | ||||
|   list(APPEND CLIENT_INCLUDE_DIRS ${tidy_SOURCE_DIR}/include) | ||||
|   list(APPEND CLIENT_LIBS tidy-static) | ||||
| endif() | ||||
|  | ||||
| # ZXing-cpp configuration | ||||
| set(BUILD_EXAMPLES OFF CACHE BOOL "") | ||||
| set(BUILD_BLACKBOX_TESTS OFF CACHE BOOL "") | ||||
| add_subdirectory(3rdparty/zxing-cpp EXCLUDE_FROM_ALL) | ||||
|  | ||||
| # Add ZXing-cpp to includes and libraries | ||||
| list(APPEND CLIENT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/zxing-cpp/core/src) | ||||
| list(APPEND CLIENT_LIBS ZXing) | ||||
|  | ||||
| # common executable sources | ||||
| qt_add_executable( | ||||
| @ -522,7 +740,13 @@ qt_add_executable( | ||||
|   ${COMMON_SOURCES} | ||||
|   ${QML_RESOURCES} | ||||
|   ${QML_RESOURCES_QML} | ||||
|   ${SFPM_OBJECTS}) | ||||
|   ${SFPM_OBJECTS} | ||||
|   src/app/spellcheckadapter.h src/app/spellcheckadapter.cpp) | ||||
|  | ||||
| #add_dependencies(${PROJECT_NAME} hunspell) | ||||
|  | ||||
| # Ensure the generated version file can be found. | ||||
| add_dependencies(${PROJECT_NAME} generate_version_info) | ||||
|  | ||||
| foreach(MODULE ${QT_MODULES}) | ||||
|   list(APPEND QT_LIBS "Qt::${MODULE}") | ||||
| @ -536,7 +760,7 @@ if(MSVC) | ||||
|     WIN32_EXECUTABLE TRUE) | ||||
|  | ||||
|   list(APPEND CLIENT_LIBS | ||||
|     ${JAMID_LIB} | ||||
|     ${LIBJAMI_LIB} | ||||
|     ${GNUTLS_LIB} | ||||
|     ${LIBCLIENT_NAME} | ||||
|     ${QT_LIBS} | ||||
| @ -583,7 +807,6 @@ elseif (NOT APPLE) | ||||
|     ${GLIB_LIBRARIES} | ||||
|     ${GIO_LIBRARIES}) | ||||
|  | ||||
|   # Installation rules | ||||
|   install( | ||||
|     TARGETS ${PROJECT_NAME} | ||||
|     RUNTIME DESTINATION bin) | ||||
| @ -591,13 +814,13 @@ elseif (NOT APPLE) | ||||
|   # Install .desktop in XDG desktop direcory so that it is recognized | ||||
|   # by the system. | ||||
|   install( | ||||
|     FILES ${DATA_DIR}/jami.desktop | ||||
|     FILES ${DATA_DIR}/net.jami.Jami.desktop | ||||
|     DESTINATION ${JAMI_DATA_PREFIX}/applications) | ||||
|  | ||||
|   # Install .desktop in the jami data directory, so that it can be | ||||
|   # copied to the autostart directory by the client. | ||||
|   install( | ||||
|     FILES ${DATA_DIR}/jami.desktop | ||||
|     FILES ${DATA_DIR}/net.jami.Jami.desktop | ||||
|     DESTINATION "${JAMI_DATA_PREFIX}/${PROJECT_NAME}" | ||||
|     PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) # 644 | ||||
|  | ||||
| @ -616,14 +839,19 @@ elseif (NOT APPLE) | ||||
|     PRIVATE | ||||
|     JAMI_INSTALL_PREFIX="${JAMI_DATA_PREFIX}") | ||||
|  | ||||
|   target_compile_definitions( | ||||
|     ${PROJECT_NAME} | ||||
|     PRIVATE | ||||
|     HUNSPELL_INSTALL_DIR="${HUNSPELL_DICT_DIR}") | ||||
|  | ||||
|   # Logos | ||||
|   install( | ||||
|     FILES resources/images/jami.svg | ||||
|     FILES resources/images/net.jami.Jami.svg | ||||
|     DESTINATION | ||||
|     ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps) | ||||
|  | ||||
|   install( | ||||
|     FILES resources/images/jami-48px.png | ||||
|     FILES resources/images/net.jami.Jami-48px.png | ||||
|     DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps | ||||
|     RENAME jami.png) | ||||
|  | ||||
| @ -632,9 +860,19 @@ elseif (NOT APPLE) | ||||
|     DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps | ||||
|     RENAME jami.xpm) | ||||
|  | ||||
|   # AppStream metadata | ||||
|   # | ||||
|   # MetaInfo file: | ||||
|   install( | ||||
|     FILES ${DATA_DIR}/jami.appdata.xml | ||||
|     FILES ${DATA_DIR}/net.jami.Jami.metainfo.xml | ||||
|     DESTINATION ${CMAKE_INSTALL_PREFIX}/share/metainfo) | ||||
|   # Catalog file: | ||||
|   if(NOT DEFINED APPSTREAM_CATALOG_DIR) | ||||
|     set(APPSTREAM_CATALOG_DIR /share/swcatalog/xml) | ||||
|   endif() | ||||
|   install( | ||||
|     FILES ${DATA_DIR}/jami.xml | ||||
|     DESTINATION ${CMAKE_INSTALL_PREFIX}${APPSTREAM_CATALOG_DIR}) | ||||
|  | ||||
|   # man page | ||||
|   install( | ||||
| @ -706,7 +944,7 @@ else() | ||||
|   target_sources(${PROJECT_NAME} PRIVATE ${resources}) | ||||
|   list(APPEND CLIENT_LIBS ${libs}) | ||||
|  | ||||
|   file(GLOB CONTRIB ${LIBJAMI_CONTRIB_DIR}/apple-darwin/lib/*.a) | ||||
|   file(GLOB CONTRIB ${LIBJAMI_CONTRIB_DIR}/${CONTRIB_DARWIN_FOLDER}/lib/*.a) | ||||
|   list(APPEND CLIENT_LIBS ${CONTRIB}) | ||||
|  | ||||
|   find_package(Iconv REQUIRED) | ||||
| @ -714,16 +952,24 @@ else() | ||||
|   list(APPEND CLIENT_LIBS | ||||
|     "-framework AVFoundation" | ||||
|     "-framework CoreAudio -framework CoreMedia -framework CoreVideo" | ||||
|     "-framework VideoToolbox -framework AudioUnit" | ||||
|     "-framework VideoToolbox -framework AudioUnit -framework Carbon" | ||||
|     "-framework Security" | ||||
|       compression | ||||
|       resolv | ||||
|     ) | ||||
|   ) | ||||
|  | ||||
|   set(APP_CONTAINER "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app/Contents") | ||||
|  | ||||
|   # ringtones. Copy the entire directory to the app bundle. | ||||
|   # daemon/ringtones -> Jami.app/Contents/Resources/ringtones | ||||
|   execute_process( | ||||
|     COMMAND ${CMAKE_COMMAND} -E copy_directory | ||||
|     ${DAEMON_DIR}/ringtones | ||||
|     ${APP_CONTAINER}/Resources/ringtones | ||||
|   ) | ||||
|  | ||||
|   # translations | ||||
|   if(Qt${QT_VERSION_MAJOR}LinguistTools_FOUND) | ||||
|     set(APP_CONTAINER | ||||
|       "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app/Contents") | ||||
|     file(GLOB TS_FILES ${PROJECT_SOURCE_DIR}/translations/*.ts) | ||||
|  | ||||
|     # Generate lproj folders. | ||||
| @ -751,26 +997,26 @@ else() | ||||
|           MACOSX_BUNDLE_SHORT_VERSION_STRING "${JAMI_VERSION}" | ||||
|           MACOSX_BUNDLE_BUNDLE_VERSION "${JAMI_BUILD}" | ||||
|           MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}") | ||||
|       if(APPSTORE) | ||||
|           message(STATUS "app store version") | ||||
|           set_target_properties(${PROJECT_NAME} PROPERTIES | ||||
|                XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/resources/entitlements/appstore/Jami.entitlements") | ||||
|       else() | ||||
|           set_target_properties(${PROJECT_NAME} PROPERTIES | ||||
|                 SPARKLE_URL "${SPARKLE_URL}" | ||||
|                 SPARKLE_PUBLIC_KEY "${SPARKLE_PUBLIC_KEY}" | ||||
|                 XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/resources/entitlements/Jami.entitlements" | ||||
|                 XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE) | ||||
|       endif() | ||||
|       if(DEPLOY) | ||||
|           add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD | ||||
|                              COMMAND ${CMAKE_COMMAND} -DQML_SRC_DIR=${SRC_DIR} | ||||
|                              -DMAC_DEPLOY_QT_PATH=${CMAKE_PREFIX_PATH}/bin | ||||
|                              -DEXE_NAME="${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app" | ||||
|                              -DSPARKLE_PATH=${SPARKLE_FRAMEWORK} | ||||
|                              -DENABLE_SPARKLE=${ENABLE_SPARKLE} | ||||
|                              -P ${EXTRAS_DIR}/build/cmake/macos_qt_deploy.cmake) | ||||
|       endif() | ||||
|   if(APPSTORE) | ||||
|     message(STATUS "app store version") | ||||
|     set_target_properties(${PROJECT_NAME} PROPERTIES | ||||
|           XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/resources/entitlements/appstore/Jami.entitlements") | ||||
|   else() | ||||
|     set_target_properties(${PROJECT_NAME} PROPERTIES | ||||
|           SPARKLE_URL "${SPARKLE_URL}" | ||||
|           SPARKLE_PUBLIC_KEY "${SPARKLE_PUBLIC_KEY}" | ||||
|           XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/resources/entitlements/Jami.entitlements" | ||||
|           XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE) | ||||
|   endif() | ||||
|   if(DEPLOY) | ||||
|     execute_process(COMMAND | ||||
|       "${CMAKE_PREFIX_PATH}/bin/macdeployqt" | ||||
|       "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app" | ||||
|       -qmldir=${QML_SRC_DIR}) | ||||
|     if(${ENABLE_SPARKLE} MATCHES true) | ||||
|       file(COPY ${SPARKLE_FRAMEWORK} DESTINATION ${EXE_NAME}/Contents/Frameworks/) | ||||
|     endif() | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| target_include_directories(${PROJECT_NAME} PRIVATE ${CLIENT_INCLUDE_DIRS}) | ||||
| @ -781,7 +1027,8 @@ qt_import_qml_plugins(${PROJECT_NAME}) | ||||
| qt_finalize_executable(${PROJECT_NAME}) | ||||
|  | ||||
| # tests | ||||
| if(ENABLE_TESTS) | ||||
| if(BUILD_TESTING) | ||||
|   message("Add Jami tests") | ||||
|   enable_testing() | ||||
|   add_subdirectory(${TESTS_DIR}) | ||||
| endif() | ||||
|  | ||||
							
								
								
									
										117
									
								
								INSTALL.md
									
									
									
									
									
								
							
							
						
						
									
										117
									
								
								INSTALL.md
									
									
									
									
									
								
							| @ -7,24 +7,55 @@ There are essentially two ways to build `client-qt`: | ||||
|  | ||||
| ## Disclaimer | ||||
|  | ||||
| Because the client-qt is multi-platforms and supporting macOS, we need a recent version of Qt to do rendering with Metal. So, Qt 6.2 is necessary. | ||||
| Because the client-qt is multi-platforms and supporting macOS, we need a recent version of Qt to do rendering with Metal. So, Qt 6.6 is necessary. | ||||
| This version is generally not packaged on a lot of platforms, and to control available plugins and such, we have our own Qt packaged (available on https://jami.net on the distributions we support). | ||||
| So, you will need to get Qt 6.2 first. For this, there is 3 methods: | ||||
| So, you will need to get Qt 6.6 first. For this, there is 3 methods: | ||||
|  | ||||
| ### Qt from https://jami.net (recommended) | ||||
| ### Qt from our repo (recommended) | ||||
|  | ||||
| If your distribution is supported, we provide a Qt package (`libqt-jami`) on our repo. Follow instructions https://jami.net/download-jami-linux/ (but instead installing `jami` install `libqt-jami`). | ||||
| The files will be installed in `/usr/lib/libqt-jami`. | ||||
| If your distribution is supported, we provide a Qt package (libqt-jami) on our repo. | ||||
| The files will be installed to `/usr/lib/libqt-jami` on Debian-like distributions. For RPM based distributions the files will be installed to `/usr/lib64/qt-jami`. | ||||
|  | ||||
| #### Install libqt-jami, Ubuntu based | ||||
|  | ||||
| To install libqt-jami on Ubuntu, execute these commands replacing `ubuntu_<VERSION>` by your distribution version. For example "ubuntu_22.04" | ||||
|  | ||||
| ```bash | ||||
| sudo apt install gnupg dirmngr ca-certificates curl --no-install-recommends | ||||
| curl -s https://dl.jami.net/public-key.gpg | sudo tee /usr/share/keyrings/jami-archive-keyring.gpg > /dev/null | ||||
| sudo sh -c "echo 'deb [signed-by=/usr/share/keyrings/jami-archive-keyring.gpg] https://dl.jami.net/nightly/ubuntu_<VERSION>/ jami main' > /etc/apt/sources.list.d/jami.list" | ||||
| sudo apt-get update && sudo apt-get install libqt-jami | ||||
| ``` | ||||
|  | ||||
| #### Install libqt-jami, Debian based | ||||
|  | ||||
| To install libqt-jami on Debian, execute these commands replacing `debian_<VERSION>` by your distribution version. For example "debian_11" | ||||
|  | ||||
| ```bash | ||||
| sudo apt install gnupg dirmngr ca-certificates curl --no-install-recommends | ||||
| curl -s https://dl.jami.net/public-key.gpg | sudo tee /usr/share/keyrings/jami-archive-keyring.gpg > /dev/null | ||||
| sudo sh -c "echo 'deb [signed-by=/usr/share/keyrings/jami-archive-keyring.gpg] https://dl.jami.net/nightly/debian_<VERSION>/ jami main' > /etc/apt/sources.list.d/jami.list" | ||||
| sudo apt-get update && sudo apt-get install jami | ||||
| ``` | ||||
|  | ||||
| #### Install jami-libqt, Fedora based | ||||
|  | ||||
| To install libqt-jami on Fedora, execute these commands replacing `fedora_<VERSION>` by your distribution version. For example "fedora_38" | ||||
|  | ||||
| ```bash | ||||
| sudo dnf config-manager --add-repo https://dl.jami.net/nightly/fedora_<VERSION>/jami-nightly.repo | ||||
| sudo dnf update && sudo dnf install jami-libqt | ||||
| ``` | ||||
|  | ||||
| ### Qt from your distribution | ||||
|  | ||||
| If Qt 6.2 is available, you can use the packages from your distribution: | ||||
| If Qt 6.6 is available, you can use the packages from your distribution: | ||||
|  | ||||
| It should be (For now qt5 only is packaged by distributions, so names can change). | ||||
|  | ||||
| #### Dependencies, Debian based | ||||
|  | ||||
| ``` | ||||
| ```bash | ||||
| sudo apt-get install cmake make doxygen g++ gettext libnotify-dev pandoc nasm libqrencode-dev \ | ||||
|                      libnotify-dev libnm-dev \ | ||||
|                      qt6-base-dev \ | ||||
| @ -41,7 +72,7 @@ sudo apt-get install cmake make doxygen g++ gettext libnotify-dev pandoc nasm li | ||||
|  | ||||
| #### Dependencies, Fedora based | ||||
|  | ||||
| ``` | ||||
| ```bash | ||||
| sudo dnf install qt6-qtsvg-devel qt6-qtwebengine-devel qt6-qtmultimedia-devel qt6-qtdeclarative-devel qt6-qtquickcontrols2-devel qt6-qtquickcontrols qrencode-devel NetworkManager-libnm-devel | ||||
| ``` | ||||
|  | ||||
| @ -62,6 +93,11 @@ for getting the latest development versions; otherwise, you can use | ||||
| `git submodule update --init` then checkout specific commits for each | ||||
| submodule). | ||||
|  | ||||
| If you're a developer you need to install clang-format separately before initializing with the command | ||||
| ```bash | ||||
| sudo apt install clang-format | ||||
| ``` | ||||
|  | ||||
| ```bash | ||||
| ./build.py --init [--qt=<path/to/qt> (this is required for qmlformatting to work)] | ||||
| ``` | ||||
| @ -71,20 +107,20 @@ Then you will need to install dependencies: | ||||
| - For GNU/Linux | ||||
|  | ||||
| ```bash | ||||
| ./build.py --dependencies # needs sudo | ||||
| sudo ./build.py --dependencies | ||||
| ``` | ||||
|  | ||||
| Then, you can build daemon and the client using: | ||||
|  | ||||
| ```bash | ||||
| ./build.py --install | ||||
| ./build.py --install [--qt=<path/to/qt> (this needs to be the same as in the previous ./build.py --init)] | ||||
| ``` | ||||
|  | ||||
| If you use a Qt version that is not system-wide installed, you need to | ||||
| specify its path using the `--qt` flag, e.g. | ||||
| `./build.py --install --qt=/home/<username>/Qt/6.2.1/gcc_64`. | ||||
| `./build.py --install --qt=/home/<username>/Qt/6.6.1/gcc_64`. | ||||
|  | ||||
| Now you will have the daemon in `daemon/bin/jamid` and the client in | ||||
| Now you will have the daemon in `daemon/bin/dbus/jamid` and the client in | ||||
| `build/jami`. You can now run Jami using: | ||||
|  | ||||
| ```bash | ||||
| @ -95,10 +131,15 @@ Notes: | ||||
|  | ||||
| - `--global-install` to install client-qt globally under /usr/local | ||||
| - `--prefix` to change the destination of the install. | ||||
| + For developers: | ||||
|     + `--asan` add address sanitizer on the binary | ||||
|     + `--debug` enable debug symbols | ||||
|     + `--testing` will build the tests for both the daemon and client | ||||
|     + `--no-libwrap` will build the DBUS version. | ||||
|  | ||||
| ## Build only the client | ||||
|  | ||||
| In order to use the Qt Client it is necessary to have the Qt version 6.2 or higher. If your system does not have it you can install it [from sources or download the binary installer](https://www.qt.io/download). | ||||
| In order to use the Qt Client it is necessary to have the Qt version 6.6 or higher. If your system does not have it you can install it [from sources or download the binary installer](https://www.qt.io/download). | ||||
|  | ||||
| ## Build only this repository | ||||
|  | ||||
| @ -148,18 +189,20 @@ Only 64-bit MSVC build can be compiled. | ||||
|  | ||||
| - Download [Qt (Open Source)](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5) | ||||
|  | ||||
| - Using the online installer, install the following Qt 6.2.3 components: | ||||
| - Using the online installer, install the following Qt 6.8.3 components: | ||||
|  | ||||
|   - Git 2.10.2 | ||||
|   - MSVC 2019 64-bit | ||||
|   - Qt 5 Compatibility Module | ||||
|   - MSVC 2022 64-bit | ||||
|   - Extension : | ||||
|     - Qt WebEngine | ||||
|   - Additional Libraries | ||||
|     - Qt Multimedia | ||||
|     - Qt Network Authorization | ||||
|     - Qt WebChannel | ||||
|     - Qt WebEngine | ||||
|     - Qt WebSockets | ||||
|     - Qt WebView | ||||
|     - Qt 5 Compatibility Module | ||||
|     - Qt Positioning | ||||
|  | ||||
| - Download [Visual Studio](https://visualstudio.microsoft.com/) (versions 2019 or 2022). _See the SDK notes below._ | ||||
|  | ||||
| @ -167,11 +210,11 @@ Only 64-bit MSVC build can be compiled. | ||||
|   | ------------ | ------------ | --------------------------------------------------- | ---------------- | | ||||
|   | Requirement: | 10.0.18362.0 | V142 (VisualStudio 2019) / V143 (VisualStudio 2022) | matching Toolset | | ||||
|  | ||||
| - Install Qt Vs Tools under extensions, and configure msvc2017*64 path under Qt Options. \_See the Qt notes below.* | ||||
| - Install Qt Vs Tools under extensions, and configure msvc2019\_64 path under Qt Options. *See the Qt notes below.* | ||||
|  | ||||
|   |                      | Qt Version | | ||||
|   | -------------------- | ---------- | | ||||
|   | Minimum requirement: | 6.2.3      | | ||||
|   | Minimum requirement: | 6.8.3      | | ||||
|  | ||||
| - Install [Python3](https://www.python.org/downloads/) for Windows | ||||
|  | ||||
| @ -197,9 +240,14 @@ Only 64-bit MSVC build can be compiled. | ||||
| - Using a new **Non-Elevated Command Prompt** | ||||
|  | ||||
| ```bash | ||||
|     python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.2.3/msvc2019_64) | ||||
|     python build.py --init --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.8.3/msvc2022_64) | ||||
| ``` | ||||
|  | ||||
| ```bash | ||||
|     python build.py --install --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.8.3/msvc2022_64) | ||||
| ``` | ||||
| > **CMake** Note: The build script does not specify what CMake generator should be used. This means CMake will search the system for the appropriate generator, which might not always select the right one if, for instance, Ninja is installed. To resolve that, the CMAKE_GENERATOR environment variable can be used, set to "Visual Studio 16 2019" or "Visual Studio 19 2022" depending on the installed Visual Studio version. | ||||
|  | ||||
| > **SDK** Note: | ||||
| > Jami can be build with more recent Windows SDK than the one specified in the table above. However, if your have another version than SDK 10.0.18362.0 installed, you need to identify it according to the example below. And you still need to have the required version in addition to the one you chose. | ||||
|  | ||||
| @ -240,19 +288,19 @@ Once the build has finished, you should then be able to use the Visual Studio So | ||||
|  | ||||
| ``` | ||||
|     python extras\scripts\build-windows.py --init | ||||
|     python extras\scripts\build-windows.py --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.2.3/msvc2019_64) | ||||
|     python extras\scripts\build-windows.py --qt <path-to-qt-bin-folder> (e.g. C:/Qt/6.6.2/msvc2019_64) | ||||
| ``` | ||||
|  | ||||
| ## Building On MacOS | ||||
|  | ||||
| **Set up** | ||||
|  | ||||
| - macOS minimum version 10.15 | ||||
| - macOS minimum version 12.0 | ||||
| - install python3 | ||||
| - download xcode | ||||
| - install Qt 6.2 | ||||
| - install Qt 6.8 | ||||
|  | ||||
| Qt 6.2 can be installed via brew | ||||
| Qt 6.8 can be installed via brew | ||||
|  | ||||
| ```bash | ||||
| brew install qt | ||||
| @ -302,9 +350,24 @@ Built client could be find in `build/Jami` | ||||
|  | ||||
| - These environment variables will be temporarily set when using build-windows.py to run tests. | ||||
|  | ||||
| ## Troubleshooting | ||||
|  | ||||
| Build errors may occur if daemon dependencies have been updated since the last build, as the script may not fully detect or rebuild them in the correct order. For the same reason, you may also occasionally encounter linker errors. | ||||
|  | ||||
| To resolve this, clean and restart the installation to ensure a fresh rebuild of all components (delete all temporary files generated by the build process): | ||||
|  | ||||
| ```bash | ||||
| ./build.py --clean | ||||
| ./build.py --install | ||||
| ``` | ||||
|  | ||||
| ## Debugging | ||||
|  | ||||
| Compile the client with with `-DCMAKE_BUILD_TYPE=Debug`. | ||||
| Compile the client with `-DCMAKE_BUILD_TYPE=Debug`. Then, if you want to enable logging when running `jami`, launch it with `-d` or `--debug`. | ||||
|  | ||||
| Then, if you want to enable logging when running `jami`, launch it | ||||
| with `-d` or `--debug`. | ||||
| To diagnose a crash, use GDB: | ||||
|  | ||||
| ```sh | ||||
| ./build.py --install --debug | ||||
| gdb -ex run --args ./jami --debug | ||||
| ``` | ||||
|  | ||||
							
								
								
									
										3
									
								
								JamiInstaller/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								JamiInstaller/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,3 +1,4 @@ | ||||
| /obj | ||||
| /bin | ||||
| Components.wxs | ||||
| AppComponents.wxs | ||||
| CrtComponents.wxs | ||||
|  | ||||
| @ -3,13 +3,6 @@ | ||||
|     <?define Name="Jami" ?> | ||||
|     <?define ExeName="Jami" ?> | ||||
|     <?define AppName="Jami" ?> | ||||
|  | ||||
|     <?if $(var.Configuration) = Release ?> | ||||
|     <?define ReleaseDir="..\x64\Release"?> | ||||
|     <?else?> | ||||
|     <?define ReleaseDir="..\x64\Beta"?> | ||||
|     <?endif ?> | ||||
|  | ||||
|     <?define Manufacturer="Savoir-Faire Linux"?> | ||||
|     <?define UcrtDir="C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x64"?> | ||||
|     <?define ReleaseDir="..\x64\Release"?> | ||||
| </Include> | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| <?xml version="1.0" encoding="utf-16"?> | ||||
| <Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> | ||||
| <Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|   xmlns:xsd="http://www.w3.org/2001/XMLSchema"> | ||||
|   <DeployedProjects /> | ||||
|   <DirectoryMappings /> | ||||
|   <FileMappings /> | ||||
|  | ||||
| @ -1,5 +1,8 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project ToolsVersion="4.0" DefaultTargets="Build" InitialTargets="EnsureWixToolsetInstalled" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project ToolsVersion="4.0" | ||||
|   DefaultTargets="Build" | ||||
|   InitialTargets="EnsureWixToolsetInstalled" | ||||
|   xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <PropertyGroup> | ||||
|     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||||
|     <Platform Condition=" '$(Platform)' == '' ">x64</Platform> | ||||
| @ -13,20 +16,10 @@ | ||||
|     <InstallerPlatform>x64</InstallerPlatform> | ||||
|     <DefineSolutionProperties>false</DefineSolutionProperties> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> | ||||
|     <OutputPath>bin\$(Configuration)\</OutputPath> | ||||
|     <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> | ||||
|     <DefineConstants>HarvestPath=..\x64\Release</DefineConstants> | ||||
|     <SuppressPdbOutput>True</SuppressPdbOutput> | ||||
|     <CompilerAdditionalOptions> | ||||
|     </CompilerAdditionalOptions> | ||||
|     <WixVariables> | ||||
|     </WixVariables> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Beta|x64' "> | ||||
|     <OutputPath>bin\$(Configuration)\</OutputPath> | ||||
|     <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> | ||||
|     <DefineConstants>HarvestPath=..\x64\Beta</DefineConstants> | ||||
|   <PropertyGroup> | ||||
|     <OutputPath>bin\Release\</OutputPath> | ||||
|     <IntermediateOutputPath>obj\Release\</IntermediateOutputPath> | ||||
|     <DefineConstants>AppHarvestPath=..\x64\Release;CrtHarvestPath=$(VC_CRT_Dir)</DefineConstants> | ||||
|     <SuppressPdbOutput>True</SuppressPdbOutput> | ||||
|     <CompilerAdditionalOptions> | ||||
|     </CompilerAdditionalOptions> | ||||
| @ -35,8 +28,8 @@ | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <Compile Include="Product.wxs" /> | ||||
|     <Compile Include="StandardComponents.wxs" /> | ||||
|     <Compile Include="Components.wxs" /> | ||||
|     <Compile Include="AppComponents.wxs" /> | ||||
|     <Compile Include="CrtComponents.wxs" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="Config.wxi" /> | ||||
| @ -58,13 +51,36 @@ | ||||
|   <ItemGroup> | ||||
|     <EmbeddedResource Include="Localization.wxl" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " /> | ||||
|   <Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " /> | ||||
|   <Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' "> | ||||
|   <Import Project="$(WixTargetsPath)" | ||||
|     Condition=" '$(WixTargetsPath)' != '' " /> | ||||
|   <Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" | ||||
|     Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " /> | ||||
|   <Target Name="EnsureWixToolsetInstalled" | ||||
|     Condition=" '$(WixTargetsImported)' != 'true' "> | ||||
|     <Error Text="The WiX Toolset v3.11 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" /> | ||||
|   </Target> | ||||
|   <Target Name="BeforeBuild"> | ||||
|     <HeatDirectory Directory="..\x64\$(Configuration)" PreprocessorVariable="var.HarvestPath" OutputFile="Components.wxs" ComponentGroupName="HeatGenerated" DirectoryRefId="APPLICATIONFOLDER" AutogenerateGuids="true" ToolPath="$(WixToolPath)" SuppressFragments="true" SuppressRegistry="true" SuppressRootDirectory="true" Transforms="HarvestFilter.xslt" /> | ||||
|     <HeatDirectory Directory="..\x64\Release" | ||||
|       PreprocessorVariable="var.AppHarvestPath" | ||||
|       OutputFile="AppComponents.wxs" | ||||
|       ComponentGroupName="AppHeatGenerated" | ||||
|       DirectoryRefId="APPLICATIONFOLDER" | ||||
|       AutogenerateGuids="true" | ||||
|       ToolPath="$(WixToolPath)" | ||||
|       SuppressFragments="true" | ||||
|       SuppressRegistry="true" | ||||
|       SuppressRootDirectory="true" | ||||
|       Transforms="HarvestFilter.xslt" /> | ||||
|     <HeatDirectory Directory="$(VC_CRT_Dir)" | ||||
|       PreprocessorVariable="var.CrtHarvestPath" | ||||
|       OutputFile="CrtComponents.wxs" | ||||
|       ComponentGroupName="CrtHeatGenerated" | ||||
|       DirectoryRefId="APPLICATIONFOLDER" | ||||
|       AutogenerateGuids="true" | ||||
|       ToolPath="$(WixToolPath)" | ||||
|       SuppressFragments="true" | ||||
|       SuppressRegistry="true" | ||||
|       SuppressRootDirectory="true" /> | ||||
|   </Target> | ||||
|   <Target Name="AfterBuild"> | ||||
|   </Target> | ||||
|  | ||||
| @ -2,6 +2,14 @@ | ||||
| <WixLocalization Culture="en-us" | ||||
|     xmlns="http://schemas.microsoft.com/wix/2006/localization"> | ||||
|     <String Id="AdvancedWelcomeEulaDlgDescriptionPerMachine">By installing this software you agree to the terms in the license agreement</String> | ||||
|     <UI Dialog="ExitDialog" Control="OptionalCheckBox" Width="10" Height="10" X="135" Y="110" /> | ||||
|     <UI Dialog="ExitDialog" Control="OptionalText" X="150" Y="110" /> | ||||
|     <UI Dialog="ExitDialog" | ||||
|         Control="OptionalCheckBox" | ||||
|         Width="10" | ||||
|         Height="10" | ||||
|         X="135" | ||||
|         Y="110" /> | ||||
|     <UI Dialog="ExitDialog" | ||||
|         Control="OptionalText" | ||||
|         X="150" | ||||
|         Y="110" /> | ||||
| </WixLocalization> | ||||
|  | ||||
| @ -1,134 +1,220 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <?include Config.wxi?> | ||||
| <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> | ||||
|   <Product Id="*" Name="$(var.Name)" Language="1033" Version="$(fun.AutoVersion(1.0))" Manufacturer="$(var.Manufacturer)" UpgradeCode="7c45b52b-0390-4fe8-947a-3f13e82dd346"> | ||||
|     <Package InstallerVersion="301" Compressed="yes" InstallScope="perMachine" /> | ||||
|   <Product Id="*" | ||||
|     Name="$(var.Name)" | ||||
|     Language="1033" | ||||
|     Version="$(fun.AutoVersion(1.0))" | ||||
|     Manufacturer="$(var.Manufacturer)" | ||||
|     UpgradeCode="7c45b52b-0390-4fe8-947a-3f13e82dd346"> | ||||
|     <Package InstallerVersion="301" | ||||
|       Compressed="yes" | ||||
|       InstallScope="perMachine" /> | ||||
|  | ||||
|     <MajorUpgrade Schedule="afterInstallInitialize" AllowDowngrades="yes"/> | ||||
|     <MediaTemplate EmbedCab="yes" CompressionLevel="high" MaximumUncompressedMediaSize="4" /> | ||||
|     <MajorUpgrade Schedule="afterInstallInitialize" | ||||
|       AllowDowngrades="yes"/> | ||||
|     <MediaTemplate EmbedCab="yes" | ||||
|       CompressionLevel="high" | ||||
|       MaximumUncompressedMediaSize="4" /> | ||||
|  | ||||
|     <!--Disables interaction of the package with the Restart Manager.--> | ||||
|     <Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" /> | ||||
|     <Property Id="MSIRESTARTMANAGERCONTROL" | ||||
|       Value="Disable" /> | ||||
|  | ||||
|     <!--Icon File should be in release folder(not wix project), otherwise cannot be read--> | ||||
|     <Icon Id="icon.ico" SourceFile="$(var.ReleaseDir)\jami.ico" /> | ||||
|     <Property Id="ARPPRODUCTICON" Value="icon.ico" /> | ||||
|     <Property Id="ARPNOMODIFY" Value="1" /> | ||||
|     <Icon Id="icon.ico" | ||||
|       SourceFile="$(var.ReleaseDir)\jami.ico" /> | ||||
|     <Property Id="ARPPRODUCTICON" | ||||
|       Value="icon.ico" /> | ||||
|     <Property Id="ARPNOMODIFY" | ||||
|       Value="1" /> | ||||
|  | ||||
|     <!-- It seems that QtWebEngineProcess.exe versioning requires us to force reinstall. --> | ||||
|     <Property Id="REINSTALLMODE" Value="dms" /> | ||||
|     <Property Id="REINSTALLMODE" | ||||
|       Value="dms" /> | ||||
|  | ||||
|     <Feature Id="ProductFeature" Title="Main" Level="1" Absent="disallow"> | ||||
|       <ComponentGroupRef Id="StandardComponents" Primary="yes" /> | ||||
|       <ComponentGroupRef Id="HeatGenerated" /> | ||||
|     <Feature Id="ProductFeature" | ||||
|       Title="Main" | ||||
|       Level="1" | ||||
|       Absent="disallow"> | ||||
|       <ComponentGroupRef Id="MainExecutable" | ||||
|         Primary="yes" /> | ||||
|       <ComponentGroupRef Id="AppHeatGenerated" /> | ||||
|       <ComponentGroupRef Id="CrtHeatGenerated" /> | ||||
|       <ComponentRef Id="ApplicationShortcutDesktop" /> | ||||
|       <ComponentRef Id="ApplicationShortcutStartMenu" /> | ||||
|       <ComponentRef Id="RegistryEntries" /> | ||||
|       <ComponentRef Id="URLProtocolRegistryEntries" /> | ||||
|     </Feature> | ||||
|  | ||||
|     <!--Visual C++ Redist merge module--> | ||||
|     <DirectoryRef Id="TARGETDIR"> | ||||
|       <Merge Id="VCRedist" SourceFile="$(env.VCRedistMergeModule)" DiskId="1" Language="0" /> | ||||
|     </DirectoryRef> | ||||
|     <Feature Id="VCRedist" Title="Visual C++ Runtime" AllowAdvertise="no" Display="hidden" Level="1"> | ||||
|       <MergeRef Id="VCRedist"/> | ||||
|     </Feature> | ||||
|  | ||||
|     <SetProperty After="FindRelatedProducts" Id="FirstInstall" Value="true"> | ||||
|     <SetProperty After="FindRelatedProducts" | ||||
|       Id="FirstInstall" | ||||
|       Value="true"> | ||||
|       NOT Installed AND NOT WIX_UPGRADE_DETECTED AND NOT WIX_DOWNGRADE_DETECTED | ||||
|     </SetProperty> | ||||
|     <SetProperty After="SetFirstInstall" Id="Upgrading" Value="true"> | ||||
|     <SetProperty After="SetFirstInstall" | ||||
|       Id="Upgrading" | ||||
|       Value="true"> | ||||
|       WIX_UPGRADE_DETECTED AND NOT (REMOVE="ALL") | ||||
|     </SetProperty> | ||||
|     <SetProperty After="RemoveExistingProducts" Id="RemovingForUpgrade" Sequence="execute" Value="true"> | ||||
|       (REMOVE="ALL") AND UPGRADINGPRODUCTCODE | ||||
|     <SetProperty After="RemoveExistingProducts" | ||||
|       Id="RemovingForUpgrade" | ||||
|       Sequence="execute" | ||||
|       Value="true"> (REMOVE="ALL") AND UPGRADINGPRODUCTCODE | ||||
|     </SetProperty> | ||||
|     <SetProperty After="SetUpgrading" Id="Uninstalling" Value="true"> | ||||
|     <SetProperty After="SetUpgrading" | ||||
|       Id="Uninstalling" | ||||
|       Value="true"> | ||||
|       Installed AND (REMOVE="ALL") AND NOT (WIX_UPGRADE_DETECTED OR UPGRADINGPRODUCTCODE) | ||||
|     </SetProperty> | ||||
|     <SetProperty After="SetUninstalling" Id="Maintenance" Value="true"> | ||||
|     <SetProperty After="SetUninstalling" | ||||
|       Id="Maintenance" | ||||
|       Value="true"> | ||||
|       Installed AND NOT Upgrading AND NOT Uninstalling AND NOT UPGRADINGPRODUCTCODE | ||||
|     </SetProperty> | ||||
|  | ||||
|     <!--SetDirectory of APPLICATIONFOLDER --> | ||||
|     <SetDirectory Id="APPLICATIONFOLDER" Value="[ProgramFiles64Folder][ApplicationFolderName]">APPLICATIONFOLDER=""</SetDirectory> | ||||
|     <SetProperty Id="ARPINSTALLLOCATION" Value="[APPLICATIONFOLDER]" After="CostFinalize" /> | ||||
|     <SetDirectory Id="APPLICATIONFOLDER" | ||||
|       Value="[ProgramFiles64Folder][ApplicationFolderName]">APPLICATIONFOLDER=""</SetDirectory> | ||||
|     <SetProperty Id="ARPINSTALLLOCATION" | ||||
|       Value="[APPLICATIONFOLDER]" | ||||
|       After="CostFinalize" /> | ||||
|  | ||||
|     <UIRef Id="CustomUI" /> | ||||
|     <WixVariable Id="WixUIInfoIcon" Value="icon.ico"/> | ||||
|     <WixVariable Id="WixUIBannerBmp" Value="top-banner.bmp" /> | ||||
|     <WixVariable Id="WixUIDialogBmp" Value="main-banner.bmp" /> | ||||
|     <WixVariable Id="WixUISupportPerUser" Value="0" /> | ||||
|     <WixVariable Id="WixUIInfoIcon" | ||||
|       Value="icon.ico"/> | ||||
|     <WixVariable Id="WixUIBannerBmp" | ||||
|       Value="top-banner.bmp" /> | ||||
|     <WixVariable Id="WixUIDialogBmp" | ||||
|       Value="main-banner.bmp" /> | ||||
|     <WixVariable Id="WixUISupportPerUser" | ||||
|       Value="0" /> | ||||
|  | ||||
|     <CustomAction Id="RemoveOldJamiFiles" | ||||
|                   Directory="APPLICATIONFOLDER" | ||||
|                   ExeCommand="cmd /c "del vc_redist.x64.exe; del uninstall.exe; del WinSparkle.dll;"" | ||||
|                   Execute="deferred" | ||||
|                   Return="ignore" | ||||
|                   HideTarget="no" | ||||
|                   Impersonate="no"/> | ||||
|       Directory="APPLICATIONFOLDER" | ||||
|       ExeCommand="cmd /c "del vc_redist.x64.exe; del uninstall.exe; del WinSparkle.dll;"" | ||||
|       Execute="deferred" | ||||
|       Return="ignore" | ||||
|       HideTarget="no" | ||||
|       Impersonate="no"/> | ||||
|  | ||||
|     <Property Id="QtExecCmdLine" | ||||
|               Value='"[APPLICATIONFOLDER]/$(var.ExeName).exe" --term'/> | ||||
|       Value='"[APPLICATIONFOLDER]/$(var.ExeName).exe" --term'/> | ||||
|     <CustomAction Id="TerminateAppProcess" | ||||
|                   BinaryKey="WixCA" | ||||
|                   DllEntry="CAQuietExec" | ||||
|                   Execute="immediate" | ||||
|                   Return="ignore"/> | ||||
|       BinaryKey="WixCA" | ||||
|       DllEntry="CAQuietExec" | ||||
|       Execute="immediate" | ||||
|       Return="ignore"/> | ||||
|   </Product> | ||||
|  | ||||
|   <Fragment Id="DirectoryStructure"> | ||||
|     <Directory Id="TARGETDIR" Name="SourceDir"> | ||||
|     <Directory Id="TARGETDIR" | ||||
|       Name="SourceDir"> | ||||
|       <Directory Id="ProgramFiles64Folder"> | ||||
|         <Directory Id="APPLICATIONFOLDER" Name="$(var.Name)" /> | ||||
|         <Directory Id="APPLICATIONFOLDER" | ||||
|           Name="$(var.Name)" /> | ||||
|       </Directory> | ||||
|       <Directory Id="DesktopFolder" Name="Desktop" /> | ||||
|       <Directory Id="DesktopFolder" | ||||
|         Name="Desktop" /> | ||||
|       <Directory Id="ProgramMenuFolder"> | ||||
|         <Directory Id="ApplicationProgramsFolder" /> | ||||
|       </Directory> | ||||
|       <Directory Id="WindowsFolder" Name="WINDOWS"/> | ||||
|       <Directory Id="WindowsFolder" | ||||
|         Name="WINDOWS"/> | ||||
|     </Directory> | ||||
|   </Fragment> | ||||
|  | ||||
|   <Fragment> | ||||
|     <ComponentGroup Id="MainExecutable" | ||||
|       Directory="APPLICATIONFOLDER"> | ||||
|       <Component Id="cmp9CFEE34E3A162AB05264E8B756EC1DEC" | ||||
|         Guid="*"> | ||||
|         <File Id="fileMain.exe" | ||||
|           KeyPath="yes" | ||||
|           Source="$(var.ReleaseDir)\$(var.ExeName).exe" /> | ||||
|       </Component> | ||||
|     </ComponentGroup> | ||||
|   </Fragment> | ||||
|  | ||||
|   <Fragment Id="Shortcuts"> | ||||
|     <DirectoryRef Id="DesktopFolder"> | ||||
|       <Component Id="ApplicationShortcutDesktop" Guid="*" Win64="yes"> | ||||
|         <Shortcut Id="ApplicationShortcutDesktop" Name="$(var.Name)" Description="Launch $(var.Name)" Target="[#fileMain.exe]" WorkingDirectory="INSTALLFOLDER" /> | ||||
|         <RemoveFolder Id="DesktopFolder" On="uninstall" /> | ||||
|         <RegistryValue Root="HKCU" Key="Software\jami.net\$(var.Name)" Name="desktop" Type="integer" Value="1" KeyPath="yes" /> | ||||
|       <Component Id="ApplicationShortcutDesktop" | ||||
|         Guid="*" | ||||
|         Win64="yes"> | ||||
|         <Shortcut Id="ApplicationShortcutDesktop" | ||||
|           Name="$(var.Name)" | ||||
|           Description="Launch $(var.Name)" | ||||
|           Target="[#fileMain.exe]" | ||||
|           WorkingDirectory="INSTALLFOLDER" /> | ||||
|         <RemoveFolder Id="DesktopFolder" | ||||
|           On="uninstall" /> | ||||
|         <RegistryValue Root="HKCU" | ||||
|           Key="Software\jami.net\$(var.Name)" | ||||
|           Name="desktop" | ||||
|           Type="integer" | ||||
|           Value="1" | ||||
|           KeyPath="yes" /> | ||||
|         <Condition>FirstInstall</Condition> | ||||
|       </Component> | ||||
|     </DirectoryRef> | ||||
|  | ||||
|     <DirectoryRef Id="ApplicationProgramsFolder"> | ||||
|       <Component Id="ApplicationShortcutStartMenu" Guid="*" Win64="yes"> | ||||
|         <Shortcut Id="ApplicationShortcutStartMenu" Name="$(var.Name)" Description="Launch $(var.Name)" Target="[#fileMain.exe]" WorkingDirectory="INSTALLFOLDER" /> | ||||
|         <RemoveFolder Id="StartMenuFolder" On="uninstall" /> | ||||
|         <RegistryValue Root="HKCU" Key="Software\jami.net\$(var.Name)" Name="startmenu" Type="integer" Value="1" KeyPath="yes" /> | ||||
|       <Component Id="ApplicationShortcutStartMenu" | ||||
|         Guid="*" | ||||
|         Win64="yes"> | ||||
|         <Shortcut Id="ApplicationShortcutStartMenu" | ||||
|           Name="$(var.Name)" | ||||
|           Description="Launch $(var.Name)" | ||||
|           Target="[#fileMain.exe]" | ||||
|           WorkingDirectory="INSTALLFOLDER" /> | ||||
|         <RemoveFolder Id="StartMenuFolder" | ||||
|           On="uninstall" /> | ||||
|         <RegistryValue Root="HKCU" | ||||
|           Key="Software\jami.net\$(var.Name)" | ||||
|           Name="startmenu" | ||||
|           Type="integer" | ||||
|           Value="1" | ||||
|           KeyPath="yes" /> | ||||
|       </Component> | ||||
|     </DirectoryRef> | ||||
|   </Fragment> | ||||
|  | ||||
|   <Fragment Id="OtherRegistryEntries"> | ||||
|     <DirectoryRef Id="TARGETDIR"> | ||||
|       <Component Id="RegistryEntries" Guid="*" Win64="yes"> | ||||
|         <RegistryValue Root="HKCU" Key="Software\jami.net\$(var.AppName)" Name="hasRun" Type="integer" Value="0" KeyPath="yes" /> | ||||
|       <Component Id="RegistryEntries" | ||||
|         Guid="*" | ||||
|         Win64="yes"> | ||||
|         <RegistryValue Root="HKCU" | ||||
|           Key="Software\jami.net\$(var.AppName)" | ||||
|           Name="hasRun" | ||||
|           Type="integer" | ||||
|           Value="0" | ||||
|           KeyPath="yes" /> | ||||
|       </Component> | ||||
|     </DirectoryRef> | ||||
|   </Fragment> | ||||
|  | ||||
|   <Fragment Id="URLProtocol"> | ||||
|     <DirectoryRef Id="TARGETDIR"> | ||||
|       <Component Id="URLProtocolRegistryEntries" Guid="*" Win64="yes"> | ||||
|         <RegistryKey Root="HKCR" Key="jami" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes"> | ||||
|           <RegistryValue Type="string" Name="URL Protocol" Value="" /> | ||||
|           <RegistryValue Type="string" Value="URL:jami"/> | ||||
|       <Component Id="URLProtocolRegistryEntries" | ||||
|         Guid="*" | ||||
|         Win64="yes"> | ||||
|         <RegistryKey Root="HKCR" | ||||
|           Key="jami" | ||||
|           ForceCreateOnInstall="yes" | ||||
|           ForceDeleteOnUninstall="yes"> | ||||
|           <RegistryValue Type="string" | ||||
|             Name="URL Protocol" | ||||
|             Value="" /> | ||||
|           <RegistryValue Type="string" | ||||
|             Value="URL:jami"/> | ||||
|           <RegistryKey Key="DefaultIcon"> | ||||
|             <RegistryValue Type="string" Value="[APPLICATIONFOLDER]$(var.ExeName).exe" /> | ||||
|             <RegistryValue Type="string" | ||||
|               Value="[APPLICATIONFOLDER]$(var.ExeName).exe" /> | ||||
|           </RegistryKey> | ||||
|           <RegistryKey Key="shell\open\command"> | ||||
|             <RegistryValue Type="string" Value='"[APPLICATIONFOLDER]$(var.ExeName).exe" "%1"' /> | ||||
|             <RegistryValue Type="string" | ||||
|               Value='"[APPLICATIONFOLDER]$(var.ExeName).exe" "%1"' /> | ||||
|           </RegistryKey> | ||||
|         </RegistryKey> | ||||
|       </Component> | ||||
| @ -137,47 +223,88 @@ | ||||
|  | ||||
|   <Fragment Id="UI"> | ||||
|     <UI Id="CustomUI"> | ||||
|       <Property Id="WixAppFolder" Value="WixPerMachineFolder" /> | ||||
|       <Property Id="WixAppFolder" | ||||
|         Value="WixPerMachineFolder" /> | ||||
|  | ||||
|       <!--APPLICATIONFOLDER required by WixUI_Advanced, ApplicationFolderName reset APPLICATIONFOLDER path--> | ||||
|       <Property Id="ApplicationFolderName" Value="$(var.Manufacturer)\$(var.AppName)" /> | ||||
|       <Property Id="ApplicationFolderName" | ||||
|         Value="$(var.Manufacturer)\$(var.AppName)" /> | ||||
|       <UIRef Id="WixUI_Advanced" /> | ||||
|  | ||||
|       <!--Remove User Exit Dialog--> | ||||
|       <Publish Dialog="AdvancedWelcomeEulaDlg" Control="Cancel" Property="AbortInstall" Value="1">1</Publish> | ||||
|       <Publish Dialog="InstallDirDlg" Control="Cancel" Property="AbortInstall" Value="1">1</Publish> | ||||
|       <Publish Dialog="FeaturesDlg" Control="Cancel" Property="AbortInstall" Value="1">1</Publish> | ||||
|       <Publish Dialog="MaintenanceWelcomeDlg" Control="Cancel" Property="AbortInstall" Value="1">1</Publish> | ||||
|       <Publish Dialog="MaintenanceTypeDlg" Control="Cancel" Property="AbortInstall" Value="1">1</Publish> | ||||
|       <Publish Dialog="AdvancedWelcomeEulaDlg" | ||||
|         Control="Cancel" | ||||
|         Property="AbortInstall" | ||||
|         Value="1">1</Publish> | ||||
|       <Publish Dialog="InstallDirDlg" | ||||
|         Control="Cancel" | ||||
|         Property="AbortInstall" | ||||
|         Value="1">1</Publish> | ||||
|       <Publish Dialog="FeaturesDlg" | ||||
|         Control="Cancel" | ||||
|         Property="AbortInstall" | ||||
|         Value="1">1</Publish> | ||||
|       <Publish Dialog="MaintenanceWelcomeDlg" | ||||
|         Control="Cancel" | ||||
|         Property="AbortInstall" | ||||
|         Value="1">1</Publish> | ||||
|       <Publish Dialog="MaintenanceTypeDlg" | ||||
|         Control="Cancel" | ||||
|         Property="AbortInstall" | ||||
|         Value="1">1</Publish> | ||||
|  | ||||
|       <!--Launch Program If Checkbox is clicked--> | ||||
|       <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish> | ||||
|       <Publish Dialog="ExitDialog" | ||||
|         Control="Finish" | ||||
|         Event="DoAction" | ||||
|         Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish> | ||||
|  | ||||
|       <InstallUISequence> | ||||
|         <Show Dialog="UserExit" OnExit="cancel">NOT AbortInstall = 1</Show> | ||||
|         <Custom Action="Overwrite_WixSetDefaultPerMachineFolder" After="WixSetDefaultPerMachineFolder" /> | ||||
|         <Show Dialog="UserExit" | ||||
|           OnExit="cancel">NOT AbortInstall = 1</Show> | ||||
|         <Custom Action="Overwrite_WixSetDefaultPerMachineFolder" | ||||
|           After="WixSetDefaultPerMachineFolder" /> | ||||
|       </InstallUISequence> | ||||
|     </UI> | ||||
|     <InstallExecuteSequence> | ||||
|       <Custom Action='TerminateAppProcess' Before='InstallValidate'/> | ||||
|       <Custom Action="RemoveOldJamiFiles" After="RemoveFiles" /> | ||||
|       <Custom Action="LaunchApplication_nonUI" After="InstallFinalize"> WIXNONUILAUNCH </Custom> | ||||
|       <Custom Action="Overwrite_WixSetDefaultPerMachineFolder" After="WixSetDefaultPerMachineFolder" /> | ||||
|       <Custom Action='TerminateAppProcess' | ||||
|         Before='InstallValidate'/> | ||||
|       <Custom Action="RemoveOldJamiFiles" | ||||
|         After="RemoveFiles" /> | ||||
|       <Custom Action="LaunchApplication_nonUI" | ||||
|         After="InstallFinalize"> WIXNONUILAUNCH </Custom> | ||||
|       <Custom Action="Overwrite_WixSetDefaultPerMachineFolder" | ||||
|         After="WixSetDefaultPerMachineFolder" /> | ||||
|     </InstallExecuteSequence> | ||||
|  | ||||
|     <!--License check box text, Launch check box text (auto check)--> | ||||
|     <Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="Launch $(var.Name)" /> | ||||
|     <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch $(var.Name)" /> | ||||
|     <Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" | ||||
|       Value="Launch $(var.Name)" /> | ||||
|     <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" | ||||
|       Value="Launch $(var.Name)" /> | ||||
|     <!--CheckBox Default Set to One--> | ||||
|     <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1"/> | ||||
|     <Property Id="LicenseAccepted" Value="1"/> | ||||
|     <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" | ||||
|       Value="1"/> | ||||
|     <Property Id="LicenseAccepted" | ||||
|       Value="1"/> | ||||
|  | ||||
|     <Property Id="WixShellExecTarget" Value="[#fileMain.exe]" /> | ||||
|     <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" /> | ||||
|     <CustomAction Id="LaunchApplication_nonUI" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes"/> | ||||
|     <CustomAction Id="Overwrite_WixSetDefaultPerMachineFolder" Property="WixPerMachineFolder" Value="[ProgramFiles64Folder][ApplicationFolderName]" Execute="immediate" /> | ||||
|     <Property Id="WixShellExecTarget" | ||||
|       Value="[#fileMain.exe]" /> | ||||
|     <CustomAction Id="LaunchApplication" | ||||
|       BinaryKey="WixCA" | ||||
|       DllEntry="WixShellExec" | ||||
|       Impersonate="yes" /> | ||||
|     <CustomAction Id="LaunchApplication_nonUI" | ||||
|       BinaryKey="WixCA" | ||||
|       DllEntry="WixShellExec" | ||||
|       Impersonate="yes"/> | ||||
|     <CustomAction Id="Overwrite_WixSetDefaultPerMachineFolder" | ||||
|       Property="WixPerMachineFolder" | ||||
|       Value="[ProgramFiles64Folder][ApplicationFolderName]" | ||||
|       Execute="immediate" /> | ||||
|     <!--License File--> | ||||
|     <WixVariable Id="WixUILicenseRtf" Value="$(var.ReleaseDir)\License.rtf"/> | ||||
|     <WixVariable Id="WixUILicenseRtf" | ||||
|       Value="$(var.ReleaseDir)\License.rtf"/> | ||||
|   </Fragment> | ||||
|  | ||||
| </Wix> | ||||
|  | ||||
| @ -1,86 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- | ||||
|     Generated with WiX's heat tool using the command: | ||||
|     heat.exe dir x64\Release -ag -cg ProductComponents -dr APPLICATIONFOLDER -srd -var var.ReleaseDir -out JamiInstaller\Components.wxs | ||||
|     Includes: | ||||
|         - the api-ms-win dlls missing parts of vc merge module for windows 7 support | ||||
|         - Jami.exe with a named Id so we can reference it in Product.wxs to launch after install | ||||
|  | ||||
|     We run heat in the prebuild step on x64\Release without Jami.exe (instead of an XSLT file), to harvest everything else. | ||||
| --> | ||||
| <?include Config.wxi?> | ||||
| <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> | ||||
|     <Fragment> | ||||
|         <ComponentGroup Id="StandardComponents"> | ||||
|             <Component Id="cmp9C61F84AF9761955FBF397AFAE21C11B" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil2089BEC9A7AB899CED5A5EE501789299" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-file-l1-2-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp03BB2697EE10869C4A329E3EA987EFAA" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil44C27F2C97596734BB3BEB7C21F7B71C" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-file-l2-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp6B6AA7AEA5A4D324A4EE7DAE1B1193E0" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil1D16BE23D323A1E37FC1FC7354A9305F" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-localization-l1-2-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmpB5454FB66442C9BFD2145AE30B32D7A9" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil031B78DF53F7A3AC109410907624FC3E" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-processthreads-l1-1-1.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp9F6D22CD9B1739E4F75F92F3A07E4CA1" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="filE9A3672FA504AA8E518DD72A02CD3E77" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-synch-l1-2-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp9451422B7074D46F019614C3DE73BD17" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil3C902CA2889BB8855D285C3FBABB334F" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-core-timezone-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp349250459EC2D8C328EED5138B073E7A" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil2466F3D9FBA095A007D0909040D4D688" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-conio-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmpCC880F2B054A87EF5FC68232652231BF" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil605A691486569535A1C3548F7DCE753C" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-convert-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmpD6CB40D5A5AFF2161B7B4B4F06F03301" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil09AE032A32E2E542A232F7941AC77320" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-environment-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmpC02538029646A27A9F786AD690EB3C8E" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil7DE9C3CADCA188356922B0CBD8E313E7" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-filesystem-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp8E50197B377636123F0F1F94FFB004E7" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil584F158D11B8A380C73F1EFE8BBA92B4" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-heap-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp7F729C94A363C73DC4D91B6F48E4F859" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil4BE19B924B98D56F3155B66496D574E5" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-locale-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp7C573E66B0904BA73880788F7057AF88" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="filE8495C446FA1237E92562498D20261AA" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-math-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp7A91CED53D8F6E5F20F2049B3B5CD143" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil06951EB208628753677745AF15CC12A5" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-multibyte-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp1CE713C705A95306A1D246AC3AB9DE25" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil8D102BB81768F998470C34797459E306" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-private-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp35840DFBF4D6AE827AFC4EF2A17BB3EB" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="filC6C457BD901F940DCB673D271728F9FE" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-process-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmpEBB86BDA48FE3B9E2043C1A80D26ACD5" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="filE1B2095225B01DEFA5DA9895B432FBCB" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-runtime-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp80C8534B553078EA8B86F100FF542776" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="filDAFE58019AD70832B8304DCEA534B5EE" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-stdio-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmpCFC348111B5343749A2273A62421C07C" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil1F1B38DB330CA413655F715578D4BE1A" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-string-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp7D5450E04EC419244107942A00DF7DDF" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="filEB03BCF3155C5BAE2C2EDBF036EB659D" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-time-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp5456679BDCC818B2E9476B416F71AAA5" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fil5B120DD384CABED37DFC2652C6462666" KeyPath="yes" Source="$(var.UcrtDir)\api-ms-win-crt-utility-l1-1-0.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmpF23755F862A15FFCBD109C85599B7F20" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="filD6887AD9110E4A8D49143C9A8F0B5843" KeyPath="yes" Source="$(var.UcrtDir)\ucrtbase.dll" /> | ||||
|             </Component> | ||||
|             <Component Id="cmp9CFEE34E3A162AB05264E8B756EC1DEC" Directory="APPLICATIONFOLDER" Guid="*"> | ||||
|                 <File Id="fileMain.exe" KeyPath="yes" Source="$(var.ReleaseDir)\$(var.ExeName).exe" /> | ||||
|             </Component> | ||||
|         </ComponentGroup> | ||||
|     </Fragment> | ||||
| </Wix> | ||||
| @ -38,7 +38,7 @@ cf [INSTALL.md](/INSTALL.md) | ||||
|  | ||||
| # License | ||||
|  | ||||
| Copyright (C) 2020-2023 Savoir-faire Linux Inc. | ||||
| Copyright (C) 2020-2025 Savoir-faire Linux Inc. | ||||
|  | ||||
| Jami 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. | ||||
|  | ||||
|  | ||||
							
								
								
									
										205
									
								
								build.py
									
									
									
									
									
								
							
							
						
						
									
										205
									
								
								build.py
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| #!/usr/bin/env python3 | ||||
| # build.py --- Convenience script for building and running Jami | ||||
|  | ||||
| # Copyright (C) 2016-2023 Savoir-faire Linux Inc. | ||||
| # Copyright (C) 2016-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
| @ -28,6 +28,7 @@ import shutil | ||||
| import subprocess | ||||
| import sys | ||||
| import time | ||||
| import re | ||||
|  | ||||
| OSX_DISTRIBUTION_NAME = "osx" | ||||
| WIN32_DISTRIBUTION_NAME = "win32" | ||||
| @ -44,7 +45,7 @@ APT_BASED_DISTROS = [ | ||||
| ] | ||||
|  | ||||
| DNF_BASED_DISTROS = [ | ||||
|     'fedora', 'rhel', | ||||
|     'fedora', 'rhel', 'almalinux', | ||||
| ] | ||||
|  | ||||
| PACMAN_BASED_DISTROS = [ | ||||
| @ -92,14 +93,14 @@ ZYPPER_INSTALL_SCRIPT = [ | ||||
| ZYPPER_DEPENDENCIES = [ | ||||
|     # build system | ||||
|     'autoconf', 'autoconf-archive', 'automake', 'cmake', 'make', 'patch', 'gcc-c++', | ||||
|     'libtool', 'which', 'pandoc', 'nasm', 'doxygen', 'graphviz', | ||||
|     'libtool', 'which', 'pandoc', 'nasm', 'doxygen', 'graphviz', 'systemd-devel', | ||||
|     # contrib dependencies | ||||
|     'curl', 'gzip', 'bzip2', | ||||
|     # daemon | ||||
|     'speexdsp-devel', 'speex-devel', 'libdbus-c++-devel', 'jsoncpp-devel', 'yaml-cpp-devel', | ||||
|     'yasm', 'libuuid-devel', 'libnettle-devel', 'libopus-devel', 'libexpat-devel', | ||||
|     'libgnutls-devel', 'msgpack-devel', 'libavcodec-devel', 'libavdevice-devel', 'pcre-devel', | ||||
|     'alsa-devel', 'libpulse-devel', 'libudev-devel', 'libva-devel', 'libvdpau-devel', | ||||
|     'libgnutls-devel', 'msgpack-c-devel', 'msgpack-cxx-devel', 'libavcodec-devel', 'libavdevice-devel', 'pcre-devel', | ||||
|     'alsa-devel', 'libpulse-devel', 'libudev-devel', 'libva-devel', 'libvdpau-devel', 'pipewire-devel', | ||||
|     'libopenssl-devel', 'libavutil-devel', | ||||
| ] | ||||
|  | ||||
| @ -107,9 +108,11 @@ ZYPPER_CLIENT_DEPENDENCIES = [ | ||||
|     # lrc | ||||
|     'qt6-core-devel', 'qt6-dbus-devel', 'qt6-linguist-devel', | ||||
|     # client-qt | ||||
|     'qt6-svg-devel', 'qt6-multimedia-devel', 'qt6-declarative-devel', | ||||
|     'qt6-quickcontrols2-devel', | ||||
|     'qrencode-devel', 'NetworkManager-devel' | ||||
|     'qt6-concurrent-devel', 'qt6-qt5compat-devel', 'qt6-qt5compat-imports', | ||||
|     'qt6-svg-devel', 'qt6-multimedia-devel', 'qt6-multimedia-imports', | ||||
|     'qt6-declarative-devel', 'qt6-qmlcompiler-private-devel', | ||||
|     'qt6-quickcontrols2-devel', 'qt6-shadertools-devel', | ||||
|     'qrencode-devel', 'NetworkManager-devel', 'hunspell-devel', 'libhunspell-devel' | ||||
| ] | ||||
|  | ||||
| ZYPPER_QT_WEBENGINE = [ | ||||
| @ -127,7 +130,7 @@ DNF_DEPENDENCIES = [ | ||||
|     'gcc-c++', 'which', 'alsa-lib-devel', 'systemd-devel', 'libuuid-devel', | ||||
|     'uuid-devel', 'gnutls-devel', 'nettle-devel', 'opus-devel', 'speexdsp-devel', | ||||
|     'yaml-cpp-devel', 'swig', 'jsoncpp-devel', | ||||
|     'patch', 'libva-devel', 'openssl-devel', 'libvdpau-devel', 'msgpack-devel', | ||||
|     'patch', 'libva-devel', 'openssl-devel', 'libvdpau-devel', 'pipewire-devel', 'msgpack-devel', | ||||
|     'sqlite-devel', 'openssl-static', 'pandoc', 'nasm', | ||||
|     'bzip2' | ||||
| ] | ||||
| @ -136,7 +139,7 @@ DNF_CLIENT_DEPENDENCIES = [ | ||||
|     'libnotify-devel', | ||||
|     'qt6-qtbase-devel', | ||||
|     'qt6-qtsvg-devel', 'qt6-qtmultimedia-devel', 'qt6-qtdeclarative-devel', | ||||
|     'qrencode-devel', 'NetworkManager-libnm-devel' | ||||
|     'qrencode-devel', 'NetworkManager-libnm-devel', 'hunspell-devel', 'libhunspell-devel' | ||||
| ] | ||||
|  | ||||
| DNF_QT_WEBENGINE = ['qt6-qtwebengine-devel'] | ||||
| @ -151,8 +154,8 @@ APT_DEPENDENCIES = [ | ||||
|     'libopus-dev', 'libpcre3-dev', 'libpulse-dev', 'libssl-dev', | ||||
|     'libspeex-dev', 'libspeexdsp-dev', 'libswscale-dev', 'libtool', | ||||
|     'libudev-dev', 'libyaml-cpp-dev', 'sip-tester', 'swig', | ||||
|     'uuid-dev', 'yasm', 'libjsoncpp-dev', 'libva-dev', 'libvdpau-dev', 'libmsgpack-dev', | ||||
|     'pandoc', 'nasm', 'dpkg-dev' | ||||
|     'uuid-dev', 'yasm', 'libjsoncpp-dev', 'libva-dev', 'libvdpau-dev', 'libpipewire-0.3-dev', 'libmsgpack-dev', | ||||
|     'pandoc', 'nasm', 'dpkg-dev', 'libsystemd-dev' | ||||
| ] | ||||
|  | ||||
| APT_CLIENT_DEPENDENCIES = [ | ||||
| @ -168,7 +171,7 @@ APT_CLIENT_DEPENDENCIES = [ | ||||
|     'qml6-module-qtquick-dialogs', 'qml6-module-qtquick-layouts', | ||||
|     'qml6-module-qtquick-shapes', 'qml6-module-qtquick-window', | ||||
|     'qml6-module-qtquick-templates', 'qml6-module-qt-labs-platform', | ||||
|     'libqrencode-dev', 'libnm-dev' | ||||
|     'libqrencode-dev', 'libnm-dev', 'hunspell', 'libhunspell-dev' | ||||
| ] | ||||
|  | ||||
| APT_QT_WEBENGINE = [ | ||||
| @ -181,7 +184,7 @@ PACMAN_DEPENDENCIES = [ | ||||
|     'gcc', 'ffmpeg', 'boost', 'cppunit', 'libdbus', 'dbus-c++', 'libe-book', 'expat', | ||||
|     'jack', 'opus', 'pcre', 'libpulse', 'speex', 'speexdsp', 'libtool', 'yaml-cpp', | ||||
|     'swig', 'yasm', 'make', 'patch', 'pkg-config', | ||||
|     'automake', 'libva', 'libvdpau', 'openssl', 'pandoc', 'nasm' | ||||
|     'automake', 'libva', 'libvdpau', 'openssl', 'pandoc', 'nasm', 'systemd-libs' | ||||
| ] | ||||
|  | ||||
| PACMAN_CLIENT_DEPENDENCIES = [ | ||||
| @ -191,7 +194,7 @@ PACMAN_CLIENT_DEPENDENCIES = [ | ||||
|     'qt6-declarative', 'qt6-5compat', 'qt6-multimedia', | ||||
|     'qt6-networkauth', 'qt6-shadertools', | ||||
|     'qt6-svg', 'qt6-tools', | ||||
|     'qrencode', 'libnm' | ||||
|     'qrencode', 'libnm', 'hunspell' | ||||
| ] | ||||
|  | ||||
| PACMAN_QT_WEBENGINE = ['qt6-webengine'] | ||||
| @ -243,8 +246,8 @@ def run_dependencies(args): | ||||
|  | ||||
|     elif args.distribution in DNF_BASED_DISTROS: | ||||
|         if args.assume_yes: | ||||
|             for i, _ in enumerate(DNF_INSTALL_SCRIPT): | ||||
|                 DNF_INSTALL_SCRIPT[i] += ASSUME_YES_FLAG | ||||
|             for i, _ in enumerate(RPM_INSTALL_SCRIPT): | ||||
|                 RPM_INSTALL_SCRIPT[i] += ASSUME_YES_FLAG | ||||
|         execute_script( | ||||
|             RPM_INSTALL_SCRIPT, | ||||
|             {"packages": ' '.join(map(shlex.quote, DNF_DEPENDENCIES))}) | ||||
| @ -296,7 +299,7 @@ def run_dependencies(args): | ||||
|         print("The win32 version does not install dependencies with this script.\nPlease continue with the --install instruction.") | ||||
|         sys.exit(1) | ||||
|     elif args.distribution == 'guix': | ||||
|         print(f"Building the profile defined in '{GUIX_MANIFEST}'...") | ||||
|         print(f"Building the profile defined in '{GUIX_MANIFEST}'…") | ||||
|         execute_script([f'guix shell --manifest={GUIX_MANIFEST} -- true']) | ||||
|  | ||||
|     else: | ||||
| @ -313,7 +316,7 @@ def run_init(args): | ||||
|     client_hooks_dir = '.git/hooks' | ||||
|     daemon_hooks_dir = '.git/modules/daemon/hooks' | ||||
|  | ||||
|     print("Installing commit-msg hooks...") | ||||
|     print("Installing commit-msg hooks…") | ||||
|     # Copy the commit-msg hook to all modules in the same way. | ||||
|     for hooks_dir in [client_hooks_dir, daemon_hooks_dir]: | ||||
|         if not os.path.exists(hooks_dir): | ||||
| @ -321,7 +324,7 @@ def run_init(args): | ||||
|         copy_file("./extras/scripts/commit-msg", | ||||
|                   os.path.join(hooks_dir, "commit-msg")) | ||||
|  | ||||
|     print("Installing pre-commit hooks...") | ||||
|     print("Installing pre-commit hooks…") | ||||
|     format_script = "./extras/scripts/format.py" | ||||
|     # Prepend with the python executable if on Windows (not WSL). | ||||
|     if sys.platform == 'win32': | ||||
| @ -329,7 +332,7 @@ def run_init(args): | ||||
|     # The client submodule has QML files, so we need to run qmlformat on it, | ||||
|     # and thus need to supply the Qt path. | ||||
|     execute_script([f'{format_script} --install {client_hooks_dir}' | ||||
|                     f' --qt {args.qt}' if args.qt else ''], | ||||
|                     f' --qt {args.qt}'], | ||||
|                    {"path": client_hooks_dir}) | ||||
|  | ||||
|     # The daemon submodule has no QML files, so we don't need to run | ||||
| @ -363,13 +366,27 @@ def cwd(path): | ||||
| def run_install(args): | ||||
|     # Platforms with special compilation scripts | ||||
|     if args.distribution == WIN32_DISTRIBUTION_NAME: | ||||
|         with cwd('daemon/compat/msvc'): | ||||
|             execute_script( | ||||
|                 ['python winmake.py -iv ' | ||||
|                  f'-s {args.sdk} -b daemon']) | ||||
|         # Build daemon if not using pywinmake | ||||
|         if not args.pywinmake: | ||||
|             with cwd('daemon/compat/msvc'): | ||||
|                 execute_script([f'python winmake.py -iv -s {args.sdk} -b daemon']) | ||||
|  | ||||
|         # Prepare the build-windows.py script call | ||||
|         build_windows = 'extras/scripts/build-windows.py' | ||||
|         execute_script([f'python {build_windows} --init']) | ||||
|         execute_script([f'python {build_windows} --qt={args.qt}']) | ||||
|         # Initialize build environment | ||||
|         execute_script([f'python {build_windows} --init --qt={args.qt}']) | ||||
|  | ||||
|         # Construct build command with options | ||||
|         build_cmd = [ | ||||
|             'python', | ||||
|             build_windows, | ||||
|             f'--qt={args.qt}' | ||||
|         ] | ||||
|  | ||||
|         if args.enable_crash_reports: | ||||
|             build_cmd.append('--enable-crash-reports') | ||||
|  | ||||
|         execute_script([' '.join(build_cmd)]) | ||||
|         return True | ||||
|  | ||||
|     # Unix-like platforms | ||||
| @ -386,12 +403,22 @@ def run_install(args): | ||||
|         install_args.append('-u') | ||||
|     if args.debug: | ||||
|         install_args.append('-d') | ||||
|     if args.testing: | ||||
|         install_args.append('-t') | ||||
|     if args.asan: | ||||
|         install_args.append('-A') | ||||
|     if args.no_libwrap: | ||||
|         install_args.append('-W') | ||||
|     if args.no_webengine: | ||||
|         install_args.append('-w') | ||||
|     if args.arch: | ||||
|         install_args += ('-a', args.arch) | ||||
|     if args.extra_cmake_flags: | ||||
|         install_args += ('-D', args.extra_cmake_flags) | ||||
|     if args.enable_crash_reports: | ||||
|         install_args.append('-C') | ||||
|     if args.ignore_system_libs: | ||||
|         install_args.append('-i') | ||||
|  | ||||
|     if args.distribution == OSX_DISTRIBUTION_NAME: | ||||
|         # The `universal_newlines` parameter has been renamed to `text` in | ||||
| @ -416,6 +443,11 @@ def run_install(args): | ||||
|  | ||||
|     command = ['extras/scripts/install.sh'] + install_args | ||||
|  | ||||
|     if 'TARBALLS' not in os.environ: | ||||
|         print('info: consider setting the TARBALLS environment variable ' | ||||
|               'to a stable writable location to avoid loosing ' | ||||
|               'cached tarballs') | ||||
|  | ||||
|     if args.distribution == 'guix': | ||||
|         if args.global_install: | ||||
|             print('error: global install is not supported when using Guix.') | ||||
| @ -425,10 +457,6 @@ def run_install(args): | ||||
|         if 'TARBALLS' in os.environ: | ||||
|             share_tarballs_args = ['--preserve=TARBALLS', | ||||
|                                    f'--share={os.environ["TARBALLS"]}'] | ||||
|         else: | ||||
|             print('info: consider setting the TARBALLS environment variable ' | ||||
|                   'to a stable writable location to avoid loosing ' | ||||
|                   'cached tarballs') | ||||
|         command = ['guix', 'shell', f'--manifest={GUIX_MANIFEST}', | ||||
|                    '--symlink=/usr/bin/env=bin/env', | ||||
|                    '--symlink=/etc/ssl/certs=etc/ssl/certs', | ||||
| @ -457,6 +485,93 @@ def run_clean(): | ||||
|                     'git submodule foreach git clean -xfd']) | ||||
|  | ||||
|  | ||||
| def clean_contribs(contribs): | ||||
|     """ | ||||
|     Helper to clean one or more of the libjami contribs. | ||||
|  | ||||
|     Takes a list of contrib names(space separated) to clean, or 'all' to clean all contribs. | ||||
|  | ||||
|     Contribs are assumed to be in the contrib_dir: daemon/contrib | ||||
|     Artifacts to remove include: | ||||
|     - build directory: <contrib_dir>/<native_dir>/<contrib_name> | ||||
|     - build stamp: <contrib_dir>/<native_dir>/.<contrib_name> | ||||
|     - tarball: <contrib_dir>/tarballs/<contrib_name>*.tar.* | ||||
|     - build artifacts (we don't care about the contents of share): | ||||
|         - <contrib_dir>/<abi_triplet>/bin/<contrib_name> | ||||
|         - <contrib_dir>/<abi_triplet>/lib/<contrib_name>* | ||||
|         - <contrib_dir>/<abi_triplet>/include/<contrib_name>* | ||||
|     """ | ||||
|  | ||||
|     # Not supported on Windows | ||||
|     if platform.system() == 'Windows': | ||||
|         print('Cleaning contribs is not supported on Windows. Exiting.') | ||||
|         sys.exit(1) | ||||
|  | ||||
|     # Assume we are using the submodule here. | ||||
|     contrib_dir = 'daemon/contrib' | ||||
|     sub_dirs = os.listdir(contrib_dir) | ||||
|  | ||||
|     # Let's find the abi triplet: | ||||
|     # The abi_triplet is 3 parts: <arch>-<vendor>-<sys> and should be the only directory | ||||
|     # named like that in the contrib directory. We can use a regex to find it. | ||||
|     triplet_pattern = re.compile(r'^[a-zA-Z0-9_]+-[a-zA-Z0-9_]+-[a-zA-Z0-9_]+$') | ||||
|     def is_triplet(s): | ||||
|         return bool(triplet_pattern.match(s)) | ||||
|     abi_triplet = '' | ||||
|     for sub_dir in sub_dirs: | ||||
|         if is_triplet(sub_dir): | ||||
|             abi_triplet = sub_dir | ||||
|             break | ||||
|  | ||||
|     # If we didn't find the abi triplet, we need to stop. | ||||
|     if abi_triplet == '': | ||||
|         print('Could not find the abi triplet for the contribs. Exiting.') | ||||
|         sys.exit(1) | ||||
|  | ||||
|     # Let's find the native build source directory (native-*) | ||||
|     native_dir = '' | ||||
|     for sub_dir in sub_dirs: | ||||
|         if sub_dir.startswith('native'): | ||||
|             native_dir = os.path.join(contrib_dir, sub_dir) | ||||
|             break | ||||
|  | ||||
|     # If we didn't find the native build source directory, we need to stop. | ||||
|     if native_dir == '': | ||||
|         print('Could not find the native build source directory. Exiting.') | ||||
|         sys.exit(1) | ||||
|  | ||||
|     # If contribs is 'all', construct the list of all contribs from the contrib native directory | ||||
|     # list of directories only | ||||
|     if contribs == ['all']: | ||||
|         contribs = [d for d in os.listdir(native_dir) if os.path.isdir(os.path.join(native_dir, d))] | ||||
|  | ||||
|     # Clean each contrib | ||||
|     for contrib in contribs: | ||||
|         print(f'Cleaning contrib: {contrib} for {abi_triplet} in {native_dir}') | ||||
|         build_dir = os.path.join(native_dir, contrib, '*') | ||||
|         build_stamp = os.path.join(native_dir, f'.{contrib}*') | ||||
|         tarball = os.path.join(contrib_dir, 'tarballs', f'{contrib}*.tar.*') | ||||
|         bins = os.path.join(contrib_dir, abi_triplet, 'bin', contrib) | ||||
|         libs = os.path.join(contrib_dir, abi_triplet, 'lib', f'lib{contrib}*') | ||||
|         includes = os.path.join(contrib_dir, abi_triplet, 'include', f'{contrib}*') | ||||
|  | ||||
|         # EXCEPTIONS: pjproject and ffmpeg | ||||
|         if contrib == 'pjproject': | ||||
|             libs =  f' {os.path.join(contrib_dir, abi_triplet, "lib", "libpj*")}' \ | ||||
|                     f' {os.path.join(contrib_dir, abi_triplet, "lib", "libsrtp*")}' | ||||
|             includes = os.path.join(contrib_dir, abi_triplet, 'include', 'pj*') | ||||
|         elif contrib == 'ffmpeg': | ||||
|             libs = f' {os.path.join(contrib_dir, abi_triplet, "lib", "libav*")}' \ | ||||
|                    f' {os.path.join(contrib_dir, abi_triplet, "lib", "libsw*")}' | ||||
|             includes = f' {os.path.join(contrib_dir, abi_triplet, "include", "libav*")}' \ | ||||
|                        f' {os.path.join(contrib_dir, abi_triplet, "include", "libsw*")}' | ||||
|  | ||||
|         # For a dry run: | ||||
|         #  execute_script([f'find {build_dir} {build_stamp} {tarball} {bins} {libs} {includes}'], fail=False) | ||||
|  | ||||
|         execute_script([f'rm -rf {build_dir} {build_stamp} {tarball} {bins} {libs} {includes}'], fail=False) | ||||
|  | ||||
|  | ||||
| def run_run(args): | ||||
|     run_env = os.environ | ||||
|  | ||||
| @ -507,7 +622,7 @@ def run_run(args): | ||||
|             client_process.wait() | ||||
|  | ||||
|     except KeyboardInterrupt: | ||||
|         print("\nCaught KeyboardInterrupt...") | ||||
|         print("\nCaught KeyboardInterrupt…") | ||||
|  | ||||
|     finally: | ||||
|         if args.debug: | ||||
| @ -517,7 +632,7 @@ def run_run(args): | ||||
|             try: | ||||
|                 # Only kill the processes if they are running, as they | ||||
|                 # could have been closed by the user. | ||||
|                 print("Killing processes...") | ||||
|                 print("Killing processes…") | ||||
|                 if args.no_libwrap: | ||||
|                     jamid_log.close() | ||||
|                     if jamid_process.poll() is None: | ||||
| @ -625,11 +740,16 @@ def parse_args(): | ||||
|     ap.add_argument('--global-install', default=False, action='store_true') | ||||
|     ap.add_argument('--debug', default=False, action='store_true', | ||||
|                     help='Build with debug support; run in GDB') | ||||
|     ap.add_argument('--asan', default=False, action='store_true', | ||||
|                     help='Build both daemon and client with ASAN') | ||||
|     ap.add_argument('--background', default=False, action='store_true') | ||||
|     ap.add_argument('--no-priv-install', dest='priv_install', | ||||
|                     default=True, action='store_false') | ||||
|     ap.add_argument('--qt', type=str, | ||||
|                     help='Use the Qt path supplied') | ||||
|     ap.add_argument('--testing', dest='testing', | ||||
|                     default=False, action='store_true', | ||||
|                     help='Enable testing for both client and daemon') | ||||
|     ap.add_argument('--no-libwrap', dest='no_libwrap', | ||||
|                     default=False, action='store_true', | ||||
|                     help='Disable libwrap. Also set --disable-shared option to daemon configure') | ||||
| @ -639,6 +759,21 @@ def parse_args(): | ||||
|                     default=False, action='store_true', | ||||
|                     help='Do not use Qt WebEngine.') | ||||
|     ap.add_argument('--arch') | ||||
|     ap.add_argument('--clean-contribs', nargs='+', | ||||
|                     help='Clean the specified contribs (space separated) or \ | ||||
|                           "all" to clean all contribs before building.') | ||||
|     ap.add_argument('--pywinmake', dest='pywinmake', | ||||
|                     default=False, action='store_true', | ||||
|                     help='Build Jami for Windows using pywinmake') | ||||
|     # Allow supplying extra congifure flags to the client cmake. | ||||
|     ap.add_argument('--extra-cmake-flags', type=str, | ||||
|                     help='Extra flags to pass to the client cmake') | ||||
|     ap.add_argument('--enable-crash-reports', | ||||
|                     action='store_true', default=False, | ||||
|                     help='Enable crash reporting') | ||||
|     ap.add_argument('--ignore_system_libs', dest='ignore_system_libs', | ||||
|                     default=False, action='store_true', | ||||
|                     help='Build contrib packages regardless of system detection') | ||||
|  | ||||
|     dist = choose_distribution() | ||||
|  | ||||
| @ -685,6 +820,10 @@ def choose_distribution(): | ||||
| def main(): | ||||
|     parsed_args = parse_args() | ||||
|  | ||||
|     # Clean contribs if specified first. | ||||
|     if parsed_args.clean_contribs: | ||||
|         clean_contribs(parsed_args.clean_contribs) | ||||
|  | ||||
|     if parsed_args.dependencies: | ||||
|         run_dependencies(parsed_args) | ||||
|  | ||||
|  | ||||
							
								
								
									
										2
									
								
								daemon
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								daemon
									
									
									
									
									
								
							 Submodule daemon updated: 99b19dde2c...c53658e211
									
								
							| @ -1,7 +1,7 @@ | ||||
| #  Taken from: | ||||
| #  https://cmake.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F | ||||
| # | ||||
| #  Copyright (C) 2021-2023 Savoir-faire Linux Inc. | ||||
| #  Copyright (C) 2021-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| #  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 | ||||
|  | ||||
							
								
								
									
										66
									
								
								extras/build/cmake/contrib_tools.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								extras/build/cmake/contrib_tools.cmake
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,66 @@ | ||||
| # Copyright (C) 2024-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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, write to the Free Software | ||||
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA. | ||||
|  | ||||
| include(FetchContent) | ||||
| include(CMakeParseArguments) | ||||
|  | ||||
| # Helper function to add external content with patches and options. | ||||
| # Parameters: | ||||
| #   TARGET: Name of the target to create | ||||
| #   URL: URL of the git repository | ||||
| #   BRANCH: Branch to checkout | ||||
| #   PATCHES: List of patch files to apply | ||||
| #   OPTIONS: List of options to set prior to calling FetchContent_MakeAvailable | ||||
| function(add_fetch_content) | ||||
|   # Parse function arguments | ||||
|   set(oneValueArgs TARGET URL BRANCH) | ||||
|   set(multiValueArgs PATCHES OPTIONS) | ||||
|   cmake_parse_arguments(PARSE_ARGV 0 AFCWP "" "${oneValueArgs}" "${multiValueArgs}") | ||||
|  | ||||
|   # Create a string for the patch command | ||||
|   set(patch_cmd "") | ||||
|   # If patches is not empty, start the command with "git apply" | ||||
|   if(NOT "${AFCWP_PATCHES}" STREQUAL "") | ||||
|     set(patch_cmd git apply) | ||||
|   endif() | ||||
|   foreach(patch_file IN LISTS AFCWP_PATCHES) | ||||
|     list(APPEND patch_cmd "${patch_file}") | ||||
|   endforeach() | ||||
|  | ||||
|   # Declare the external content | ||||
|   FetchContent_Declare( | ||||
|     ${AFCWP_TARGET} | ||||
|     GIT_REPOSITORY ${AFCWP_URL} | ||||
|     GIT_TAG ${AFCWP_BRANCH} | ||||
|     PATCH_COMMAND ${patch_cmd} | ||||
|     UPDATE_DISCONNECTED 1 | ||||
|   ) | ||||
|  | ||||
|   # Apply options | ||||
|   list(LENGTH AFCWP_OPTIONS options_length) | ||||
|   if(NOT ${options_length} EQUAL 0) | ||||
|     math(EXPR max_idx "${options_length} - 1") | ||||
|     foreach(idx RANGE 0 ${max_idx} 2) | ||||
|       list(GET AFCWP_OPTIONS ${idx} key) | ||||
|       math(EXPR value_idx "${idx} + 1") | ||||
|       list(GET AFCWP_OPTIONS ${value_idx} value) | ||||
|       set(${key} ${value} CACHE STRING "${key}" FORCE) | ||||
|     endforeach() | ||||
|   endif() | ||||
|  | ||||
|   # Make the content available | ||||
|   FetchContent_MakeAvailable(${AFCWP_TARGET}) | ||||
| endfunction() | ||||
							
								
								
									
										38
									
								
								extras/build/cmake/extra_tools.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								extras/build/cmake/extra_tools.cmake
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,38 @@ | ||||
| # Copyright (C) 2024-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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, write to the Free Software | ||||
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA. | ||||
|  | ||||
| # Function to define a macro with a specific value or default to 0 if not already set. | ||||
| # This is useful to if within the code we don't want to use #ifdef but rather use the | ||||
| # value of the macro. | ||||
| function(define_macro_with_value MACRO_NAME) | ||||
|   if(DEFINED ${MACRO_NAME}) | ||||
|     # Convert ON/OFF to 1/0 | ||||
|     if(${${MACRO_NAME}} STREQUAL "ON") | ||||
|       set(MACRO_VALUE "1") | ||||
|     elseif(${${MACRO_NAME}} STREQUAL "OFF") | ||||
|       set(MACRO_VALUE "0") | ||||
|     # If the macro is defined and its value is neither "ON" nor "OFF", | ||||
|     # set MACRO_VALUE to the macro's current value | ||||
|     else() | ||||
|       set(MACRO_VALUE "${${MACRO_NAME}}") | ||||
|     endif() | ||||
|   else() | ||||
|     set(MACRO_VALUE "0") | ||||
|   endif() | ||||
|  | ||||
|   # Add the macro definition to the compiler command line | ||||
|   add_definitions("-D${MACRO_NAME}=${MACRO_VALUE}") | ||||
| endfunction() | ||||
							
								
								
									
										35
									
								
								extras/build/cmake/generate_version_info.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								extras/build/cmake/generate_version_info.cmake
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | ||||
| find_package(Git QUIET REQUIRED) | ||||
|  | ||||
| message(STATUS "Generating version information...") | ||||
|  | ||||
| function(configure_version_string SOURCE_DIR VERSION_STRING_OUT) | ||||
|   # Get short git SHA | ||||
|   execute_process( | ||||
|     COMMAND "${GIT_EXECUTABLE}" rev-parse --short HEAD | ||||
|     WORKING_DIRECTORY "${SOURCE_DIR}" | ||||
|     OUTPUT_VARIABLE _GIT_SHA | ||||
|     OUTPUT_STRIP_TRAILING_WHITESPACE | ||||
|   ) | ||||
|  | ||||
|   # Output the VERSION_STRING_OUT to the caller | ||||
|   set(${VERSION_STRING_OUT} "${_GIT_SHA}" PARENT_SCOPE) | ||||
| endfunction() | ||||
|  | ||||
| # These need to be set to the parent scripts values for configure_file to work, | ||||
| # as it prepends CMAKE_CURRENT_SOURCE_DIR to the <input> and CMAKE_CURRENT_BINARY_DIR | ||||
| # to <output>. | ||||
| set(CMAKE_CURRENT_SOURCE_DIR ${APP_SOURCE_DIR}) | ||||
| set(CMAKE_CURRENT_BINARY_DIR ${APP_BINARY_DIR}) | ||||
|  | ||||
| # Generate the version string for the application and core | ||||
| configure_version_string(${APP_SOURCE_DIR} APP_VERSION_STRING) | ||||
| configure_version_string(${CORE_SOURCE_DIR} CORE_VERSION_STRING) | ||||
| set(BUILD_VERSION_STRING ${BUILD_VERSION}) | ||||
|  | ||||
| # Get output file names with the .in extension removed | ||||
| get_filename_component(VERSION_CPP_FILENAME ${CPP_INT_FILE} NAME_WE) | ||||
| set(VERSION_CPP_FILE "${CMAKE_CURRENT_BINARY_DIR}/${VERSION_CPP_FILENAME}.cpp") | ||||
|  | ||||
| message(STATUS "infiles: ${CPP_INT_FILE}") | ||||
| message(STATUS "outfiles: ${VERSION_CPP_FILE}") | ||||
| configure_file(${CPP_INT_FILE} ${VERSION_CPP_FILE}) | ||||
| @ -1,7 +0,0 @@ | ||||
| message("Qt deploying in dir " ${QML_SRC_DIR}) | ||||
| execute_process(COMMAND "${MAC_DEPLOY_QT_PATH}/macdeployqt" | ||||
|                             ${EXE_NAME} | ||||
|                             -qmldir=${QML_SRC_DIR}) | ||||
| if(${ENABLE_SPARKLE} MATCHES true) | ||||
|     file(COPY ${SPARKLE_PATH} DESTINATION ${EXE_NAME}/Contents/Frameworks/) | ||||
| endif() | ||||
| @ -1,8 +1,4 @@ | ||||
| # Copyright (C) 2015-2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com> | ||||
| # Author: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com> | ||||
| # Author: Amin Bandali <amin.bandali@savoirfairelinux.com> | ||||
| # Copyright (C) 2015-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
| @ -20,30 +16,19 @@ | ||||
|  | ||||
| # Once done, this find module will set: | ||||
| # | ||||
| #   LIBJAMI_INCLUDE_DIRS - libjami include directories | ||||
| #   LIBJAMI_INCLUDE_DIR - libjami include directory | ||||
| #   LIBJAMI_FOUND - whether it was able to find the include directories | ||||
| #   LIBJAMI_LIB - path to libjami or libring library | ||||
|  | ||||
| set(LIBJAMI_FOUND true) | ||||
|  | ||||
| if(WITH_DAEMON_SUBMODULE) | ||||
|   set(LIBJAMI_INCLUDE_DIRS ${DAEMON_DIR}/src/jami) | ||||
|   set(LIBJAMI_INCLUDE_DIR ${DAEMON_DIR}/src/jami) | ||||
| else() | ||||
|   if(EXISTS ${LIBJAMI_INCLUDE_DIR}/jami.h) | ||||
|     set(LIBJAMI_INCLUDE_DIRS ${LIBJAMI_INCLUDE_DIR}) | ||||
|   elseif(EXISTS ${LIBJAMI_BUILD_DIR}/jami/jami.h) | ||||
|     set(LIBJAMI_INCLUDE_DIRS ${LIBJAMI_BUILD_DIR}/jami) | ||||
|   elseif(EXISTS ${RING_INCLUDE_DIR}/jami.h) | ||||
|     set(LIBJAMI_INCLUDE_DIRS ${RING_INCLUDE_DIR}) | ||||
|   elseif(EXISTS ${RING_BUILD_DIR}/jami/jami.h) | ||||
|     set(LIBJAMI_INCLUDE_DIRS ${RING_BUILD_DIR}/jami) | ||||
|   elseif(EXISTS ${CMAKE_INSTALL_PREFIX}/include/jami/jami.h) | ||||
|     set(LIBJAMI_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include/jami) | ||||
|   elseif(EXISTS ${CMAKE_INSTALL_PREFIX}/daemon/include/jami/jami.h) | ||||
|     set(LIBJAMI_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/daemon/include/jami) | ||||
|   else() | ||||
|   find_path(LIBJAMI_INCLUDE_DIR jami.h PATH_SUFFIXES jami) | ||||
|   if(NOT LIBJAMI_INCLUDE_DIR) | ||||
|     message(STATUS "Jami daemon headers not found! | ||||
| Set -DLIBJAMI_BUILD_DIR or -DCMAKE_INSTALL_PREFIX") | ||||
| To build using the daemon git submodule, set -DWITH_DAEMON_SUBMODULE") | ||||
|     set(LIBJAMI_FOUND false) | ||||
|   endif() | ||||
| endif() | ||||
| @ -53,28 +38,35 @@ set(CMAKE_FIND_LIBRARY_SUFFIXES_orig ${CMAKE_FIND_LIBRARY_SUFFIXES}) | ||||
|  | ||||
| set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib;.so;.dll") | ||||
|  | ||||
| set(LIBJAMI_NAMES | ||||
|   jami-core | ||||
|   jami | ||||
| ) | ||||
|  | ||||
| if(WITH_DAEMON_SUBMODULE) | ||||
|   find_library(LIBJAMI_LIB NAMES jami ring | ||||
|   find_library(LIBJAMI_LIB NAMES ${LIBJAMI_NAMES} | ||||
|     PATHS ${DAEMON_DIR}/src/.libs | ||||
|     PATHS ${CMAKE_INSTALL_PREFIX}/lib | ||||
|     PATHS ${CMAKE_INSTALL_PREFIX}/daemon/lib | ||||
|     PATHS ${CMAKE_INSTALL_PREFIX}/libexec | ||||
|     PATHS ${CMAKE_INSTALL_PREFIX}/bin | ||||
|     PATHS ${CMAKE_INSTALL_PREFIX}/daemon/build/bin | ||||
|     NO_DEFAULT_PATH) | ||||
| else() | ||||
|   # Search only in these given PATHS. | ||||
|   find_library(LIBJAMI_LIB NAMES jami ring | ||||
|   find_library(LIBJAMI_LIB NAMES ${LIBJAMI_NAMES} | ||||
|     PATHS ${LIBJAMI_BUILD_DIR}/.libs | ||||
|     PATHS ${RING_BUILD_DIR}/.libs | ||||
|     PATHS ${CMAKE_INSTALL_PREFIX}/lib | ||||
|     PATHS ${CMAKE_INSTALL_PREFIX}/daemon/lib | ||||
|     PATHS ${CMAKE_INSTALL_PREFIX}/libexec | ||||
|     PATHS ${CMAKE_INSTALL_PREFIX}/bin | ||||
|     PATHS ${CMAKE_INSTALL_PREFIX}/daemon/build/bin | ||||
|     NO_DEFAULT_PATH) | ||||
|  | ||||
|   # Search elsewhere as well (e.g. system-wide). | ||||
|   if(NOT LIBJAMI_LIB) | ||||
|     find_library(LIBJAMI_LIB NAMES jami ring) | ||||
|     find_library(LIBJAMI_LIB NAMES ${LIBJAMI_NAMES}) | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| @ -83,27 +75,29 @@ if(NOT LIBJAMI_LIB) | ||||
|   set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.lib") | ||||
|  | ||||
|   if(WITH_DAEMON_SUBMODULE) | ||||
|     find_library(LIBJAMI_LIB NAMES jami ring | ||||
|     find_library(LIBJAMI_LIB NAMES ${LIBJAMI_NAMES} | ||||
|       PATHS ${DAEMON_DIR}/src/.libs | ||||
|       PATHS ${CMAKE_INSTALL_PREFIX} | ||||
|       PATHS ${CMAKE_INSTALL_PREFIX}/lib | ||||
|       PATHS ${CMAKE_INSTALL_PREFIX}/daemon/lib | ||||
|       PATHS ${CMAKE_INSTALL_PREFIX}/libexec | ||||
|       PATHS ${CMAKE_INSTALL_PREFIX}/daemon/build/lib | ||||
|       NO_DEFAULT_PATH) | ||||
|   else() | ||||
|     # Search only in these given PATHS. | ||||
|     find_library(LIBJAMI_LIB NAMES jami ring | ||||
|     find_library(LIBJAMI_LIB NAMES ${LIBJAMI_NAMES} | ||||
|       PATHS ${LIBJAMI_BUILD_DIR}/.libs | ||||
|       PATHS ${RING_BUILD_DIR}/.libs | ||||
|       PATHS ${CMAKE_INSTALL_PREFIX} | ||||
|       PATHS ${CMAKE_INSTALL_PREFIX}/lib | ||||
|       PATHS ${CMAKE_INSTALL_PREFIX}/daemon/lib | ||||
|       PATHS ${CMAKE_INSTALL_PREFIX}/libexec | ||||
|       PATHS ${CMAKE_INSTALL_PREFIX}/daemon/build/lib | ||||
|       NO_DEFAULT_PATH) | ||||
|  | ||||
|     # Search elsewhere as well (e.g. system-wide). | ||||
|     if(NOT LIBJAMI_LIB) | ||||
|       find_library(LIBJAMI_LIB NAMES jami ring) | ||||
|       find_library(LIBJAMI_LIB NAMES ${LIBJAMI_NAMES}) | ||||
|     endif() | ||||
|  | ||||
|     if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows") | ||||
| @ -115,5 +109,5 @@ endif() | ||||
| # Restore the original value of CMAKE_FIND_LIBRARY_SUFFIXES. | ||||
| set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_orig}) | ||||
|  | ||||
| message(STATUS "Jami daemon headers are in " ${LIBJAMI_INCLUDE_DIRS}) | ||||
| message(STATUS "Jami daemon headers are in " ${LIBJAMI_INCLUDE_DIR}) | ||||
| message(STATUS "Jami daemon library is at " ${LIBJAMI_LIB}) | ||||
|  | ||||
| @ -1,16 +1,29 @@ | ||||
| FROM ubuntu:20.04 | ||||
| FROM ubuntu:22.04 | ||||
|  | ||||
| ENV DEBIAN_FRONTEND noninteractive | ||||
| ENV QT_QUICK_BACKEND software | ||||
| ENV QT_QPA_PLATFORM offscreen | ||||
|  | ||||
| RUN apt-get clean | ||||
| RUN apt-get update && \ | ||||
|     apt-get install -y devscripts equivs | ||||
|     apt-get install -y --no-install-recommends ca-certificates && \ | ||||
|     rm -rf /var/lib/apt/lists/* | ||||
|  | ||||
| # Use only the custom Savoir-faire Linux Ubuntu mirror | ||||
| RUN rm -f /etc/apt/sources.list /etc/apt/sources.list.d/* && \ | ||||
|     echo "deb http://gpl.savoirfairelinux.net/pub/mirrors/ubuntu jammy main restricted universe multiverse" > /etc/apt/sources.list && \ | ||||
|     echo "deb http://gpl.savoirfairelinux.net/pub/mirrors/ubuntu jammy-updates main restricted universe multiverse" >> /etc/apt/sources.list && \ | ||||
|     echo "deb http://gpl.savoirfairelinux.net/pub/mirrors/ubuntu jammy-security main restricted universe multiverse" >> /etc/apt/sources.list | ||||
|  | ||||
| RUN apt-get update && \ | ||||
|     apt-get install -y \ | ||||
|         devscripts \ | ||||
|         equivs \ | ||||
|         gnupg \ | ||||
|         dirmngr \ | ||||
|         curl | ||||
|  | ||||
| RUN apt install gnupg dirmngr ca-certificates curl --no-install-recommends | ||||
| RUN curl -s https://dl.jami.net/public-key.gpg | tee /usr/share/keyrings/jami-archive-keyring.gpg > /dev/null | ||||
| RUN sh -c "echo 'deb [signed-by=/usr/share/keyrings/jami-archive-keyring.gpg] https://dl.jami.net/internal/ubuntu_20.04/ jami main' > /etc/apt/sources.list.d/jami.list" | ||||
| RUN sh -c "echo 'deb [signed-by=/usr/share/keyrings/jami-archive-keyring.gpg] https://dl.jami.net/internal/ubuntu_22.04/ jami main' > /etc/apt/sources.list.d/jami.list" | ||||
| RUN apt-get update && apt-get install libqt-jami -y | ||||
|  | ||||
| RUN apt-get install -y -o Acquire::Retries=10 \ | ||||
| @ -22,7 +35,7 @@ RUN apt-get install -y -o Acquire::Retries=10 \ | ||||
|         cmake \ | ||||
|         libtool \ | ||||
|         libdbus-1-dev \ | ||||
|         libdbus-c++-dev \ | ||||
|         libsystemd-dev \ | ||||
|         libargon2-0-dev \ | ||||
|         libcanberra-gtk3-dev \ | ||||
|         libclutter-gtk-1.0-dev \ | ||||
| @ -51,6 +64,7 @@ RUN apt-get install -y -o Acquire::Retries=10 \ | ||||
|         libswscale-dev \ | ||||
|         libavdevice-dev \ | ||||
|         libopus-dev \ | ||||
|         libpipewire-0.3-dev \ | ||||
|         libudev-dev \ | ||||
|         libgsm1-dev \ | ||||
|         libjsoncpp-dev \ | ||||
| @ -65,5 +79,12 @@ RUN apt-get install -y -o Acquire::Retries=10 \ | ||||
|         libvdpau-dev \ | ||||
|         libssl-dev | ||||
| RUN apt-get install -y pandoc \ | ||||
|         libcppunit-dev \ | ||||
|         googletest \ | ||||
|         libgtest-dev | ||||
|         libgtest-dev \ | ||||
|         wget && \ | ||||
|         rm -rf /var/lib/apt/lists/* | ||||
|  | ||||
| # Install a recent version of CMake | ||||
| ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh | ||||
| RUN /opt/install-cmake.sh | ||||
							
								
								
									
										4
									
								
								extras/ci/client-qt-gnulinux/Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								extras/ci/client-qt-gnulinux/Jenkinsfile
									
									
									
									
										vendored
									
									
								
							| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * Copyright (C) 2022-2023 Savoir-faire Linux Inc. | ||||
|  * Copyright (C) 2022-2025 Savoir-faire Linux Inc. | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU Affero General Public License as | ||||
| @ -113,7 +113,7 @@ pipeline { | ||||
|                                     cd ${dockerTopDir} | ||||
|                                     ./build.py --install --qt /usr/lib/libqt-jami/ | ||||
|                                     cd build | ||||
|                                     cmake .. -DENABLE_TESTS=True | ||||
|                                     cmake .. -DBUILD_TESTING=True | ||||
|                                     make -j${cpuCount} | ||||
|                                 """) | ||||
|                                 // Run tests | ||||
|  | ||||
							
								
								
									
										9
									
								
								extras/crash-reports/example-submission-servers/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								extras/crash-reports/example-submission-servers/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| # python virtual environment | ||||
| venv/ | ||||
| # python compiled files | ||||
| *.pyc | ||||
| # python cache | ||||
| __pycache__ | ||||
|  | ||||
| # example output | ||||
| crash_reports/ | ||||
							
								
								
									
										51
									
								
								extras/crash-reports/example-submission-servers/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								extras/crash-reports/example-submission-servers/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | ||||
| # Crash report submission server examples | ||||
|  | ||||
| ## Overview | ||||
|  | ||||
| This directory contains an example of a crash report submission server. This server is responsible for receiving crash reports from clients and storing them. The example is written in Python and uses the Flask web framework with Waitress as the WSGI server. It exposes one endpoint for submitting crash reports on the `/submit` path using the POST method on port `8080`. | ||||
|  | ||||
| It also contains an example of a crash report access server. This server is responsible for displaying the crash reports. It uses port `8081` and provides a simple HTML page that lists crash reports by page. | ||||
|  | ||||
| ## Running the examples | ||||
|  | ||||
| To run the examples, you need to have Python 3 installed. You can just use the virtual environment provided in this directory. To activate the virtual environment, run the following commands: | ||||
|  | ||||
| ``` | ||||
| python3 -m venv venv | ||||
| source venv/bin/activate | ||||
| python3 -m pip install -r requirements.txt | ||||
| ``` | ||||
|  | ||||
|  | ||||
| > ⚠️ On Windows, you need to use `venv\Scripts\activate` instead of `source venv/bin/activate`. | ||||
|  | ||||
| After activating the virtual environment, you can should be able to execute the example submission server. To run the example submission server that uses the Crashpad format, run the following command: | ||||
|  | ||||
| ``` | ||||
| python3 crashpad_submit_server.py | ||||
| ``` | ||||
|  | ||||
| To run a server that displays the crash reports, run the following command: | ||||
|  | ||||
| ``` | ||||
| python3 report_access_server.py | ||||
| ``` | ||||
|  | ||||
| > ⚠️ It is recommended to run the report access server in a way that is not publicly accessible. | ||||
|  | ||||
| Either server can be run on the same machine or on different machines, and each can be run using the `--debug` flag to enable debugging. | ||||
|  | ||||
| ## Metadata | ||||
|  | ||||
| The crash report submission servers expect the crash reports to contain a JSON object. The JSON object should contain the following basic metadata: | ||||
| ``` | ||||
| { | ||||
|     "build_id": "202410021437", | ||||
|     "client_sha": "77149ebd62", | ||||
|     "guid": "50c4218a-bcb9-48a9-8093-a06e6435cd61", | ||||
|     "jamicore_sha": "cbf8f0af6", | ||||
|     "platform": "Ubuntu 22.04.4 LTS_x86_64" | ||||
| } | ||||
| ``` | ||||
|  | ||||
| The `build_id` field is the build identifier of the client application. The `client_sha` field is the SHA-1 hash of the client application. The `guid` field is a unique identifier for the crash report. The `jamicore_sha` field is the SHA-1 hash of the Jami core library. The `platform` field is the platform on which the client application is running. | ||||
| @ -0,0 +1,60 @@ | ||||
| #!/usr/bin/env python3 | ||||
|  | ||||
| import os | ||||
| from flask import Flask, request, jsonify | ||||
| import json | ||||
| import argparse | ||||
|  | ||||
| app = Flask(__name__) | ||||
| BASE_PATH = 'crash_reports' | ||||
|  | ||||
| @app.route('/submit', methods=['POST']) | ||||
| def submit(): | ||||
|     try: | ||||
|         print("Received a crash report GUID: %s" % request.form.get('guid', 'No GUID provided')) | ||||
|         file_storage = request.files.get('upload_file_minidump') | ||||
|         dump_id = "" | ||||
|         if file_storage: | ||||
|             dump_id = file_storage.filename | ||||
|  | ||||
|             # Create a directory to store the crash reports if it doesn't exist | ||||
|             if not os.path.exists(BASE_PATH): | ||||
|                 os.makedirs(BASE_PATH) | ||||
|  | ||||
|             filepath = os.path.join(BASE_PATH, dump_id) | ||||
|  | ||||
|             # Attempt to write the file, fail gracefully if it already exists | ||||
|             if os.path.exists(filepath): | ||||
|                 print(f"File {filepath} already exists.") | ||||
|                 return 'File already exists', 409 | ||||
|             with open(filepath, 'wb') as f: | ||||
|                 f.write(file_storage.read()) | ||||
|             print(f"File saved successfully at {filepath}") | ||||
|  | ||||
|             # Now save the metadata in {request.form} as separate filename <UID>.info. | ||||
|             metadata_filepath = os.path.join(BASE_PATH, f"{dump_id}.info") | ||||
|             with open(metadata_filepath, 'w') as f: | ||||
|                 f.write(str(json.dumps(dict(request.form), indent=4))) | ||||
|         else: | ||||
|             print("No file found for the key 'upload_file_minidump'") | ||||
|             return 'No file found', 400 | ||||
|  | ||||
|         return 'Crash report received', 200 | ||||
|     except OSError as e: | ||||
|         print(f"Error creating directory or writing file: {e}") | ||||
|         return 'Internal Server Error', 500 | ||||
|     except Exception as e: | ||||
|         print(f"An unexpected error occurred: {e}") | ||||
|         return 'Internal Server Error', 500 | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     parser = argparse.ArgumentParser(description='Crash report submission server') | ||||
|     parser.add_argument('--debug', action='store_true', help='Run in debug mode') | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     if args.debug: | ||||
|         app.run(port=8080, debug=True) | ||||
|     else: | ||||
|         from waitress import serve | ||||
|         print("Starting production server on port 8080...") | ||||
|         serve(app, host='0.0.0.0', port=8080) | ||||
| @ -0,0 +1,252 @@ | ||||
| #!/usr/bin/env python3 | ||||
|  | ||||
| import os | ||||
| from flask import Flask, request, jsonify, render_template_string, send_file | ||||
| import json | ||||
| from datetime import datetime | ||||
| import argparse | ||||
|  | ||||
| app = Flask(__name__) | ||||
| BASE_PATH = 'crash_reports' | ||||
|  | ||||
| @app.route('/', methods=['GET']) | ||||
| def list_reports(): | ||||
|     try: | ||||
|         if not os.path.exists(BASE_PATH): | ||||
|             return jsonify({"error": "No reports directory found"}), 404 | ||||
|  | ||||
|         # Get page number from query parameters, default to 1 | ||||
|         page = int(request.args.get('page', 1)) | ||||
|         per_page = 10 | ||||
|  | ||||
|         reports = os.listdir(BASE_PATH) | ||||
|         if not reports: | ||||
|             return render_template_string(""" | ||||
|                 <h1>Crash Reports</h1> | ||||
|                 <p>No crash reports found.</p> | ||||
|             """) | ||||
|  | ||||
|         # Build report pairs with metadata | ||||
|         report_pairs = [] | ||||
|         for report in reports: | ||||
|             if not report.endswith('.info'): | ||||
|                 info_file = f"{report}.info" | ||||
|                 if info_file in reports: | ||||
|                     try: | ||||
|                         dump_path = os.path.join(BASE_PATH, report) | ||||
|                         timestamp = os.path.getctime(dump_path) | ||||
|                         upload_time = datetime.fromtimestamp(timestamp) | ||||
|  | ||||
|                         with open(os.path.join(BASE_PATH, info_file), 'r') as f: | ||||
|                             metadata = json.load(f) | ||||
|                             report_pairs.append({ | ||||
|                                 'dump_file': report, | ||||
|                                 'info_file': info_file, | ||||
|                                 'metadata': metadata, | ||||
|                                 'sort_key': f"{metadata.get('client_sha', '')}-{metadata.get('jamicore_sha', '')}", | ||||
|                                 'download_name': f"{metadata.get('client_sha', 'unknown')}-{metadata.get('jamicore_sha', 'unknown')}-{metadata.get('platform', 'unknown').replace(' ', '_')}", | ||||
|                                 'upload_time': upload_time | ||||
|                             }) | ||||
|                     except json.JSONDecodeError: | ||||
|                         print(f"Error parsing metadata file: {info_file}") | ||||
|                         continue | ||||
|  | ||||
|         # Sort reports by upload time (most recent first), then by SHA | ||||
|         report_pairs.sort(key=lambda x: (-x['upload_time'].timestamp(), x['sort_key'])) | ||||
|  | ||||
|         # Calculate pagination values | ||||
|         total_reports = len(report_pairs) | ||||
|         total_pages = (total_reports + per_page - 1) // per_page | ||||
|         page = min(max(1, page), total_pages or 1)  # Handle case when total_pages is 0 | ||||
|         start_idx = (page - 1) * per_page | ||||
|         end_idx = start_idx + per_page | ||||
|  | ||||
|         # Get current page's reports | ||||
|         current_page_reports = report_pairs[start_idx:end_idx] | ||||
|  | ||||
|         return render_template_string(""" | ||||
|             <!DOCTYPE html> | ||||
|             <html lang="en"> | ||||
|             <head> | ||||
|                 <meta charset="UTF-8"> | ||||
|                 <title>Crash Reports</title> | ||||
|                 <style> | ||||
|                     body { font-family: Arial, sans-serif; margin: 2em; } | ||||
|                     .header { | ||||
|                         margin-bottom: 2em; | ||||
|                     } | ||||
|                     .header h1 { | ||||
|                         margin-bottom: 0.5em; | ||||
|                     } | ||||
|                     .report-list { list-style: none; padding: 0; } | ||||
|                     .report-item { margin: 1em 0; padding: 1em; border: 1px solid #ddd; border-radius: 4px; } | ||||
|                     .download-link { | ||||
|                         display: inline-block; | ||||
|                         padding: 8px 16px; | ||||
|                         background-color: #0066cc; | ||||
|                         color: white; | ||||
|                         text-decoration: none; | ||||
|                         border-radius: 4px; | ||||
|                         margin: 8px 0; | ||||
|                     } | ||||
|                     .download-link:hover { background-color: #0052a3; } | ||||
|                     .metadata-table { | ||||
|                         border-collapse: collapse; | ||||
|                         width: 100%; | ||||
|                         margin: 8px 0; | ||||
|                     } | ||||
|                     .metadata-table td { | ||||
|                         padding: 4px 8px; | ||||
|                         border-bottom: 1px solid #ddd; | ||||
|                     } | ||||
|                     .metadata-table td:first-child { | ||||
|                         font-weight: bold; | ||||
|                         width: 150px; | ||||
|                     } | ||||
|                     .upload-time { | ||||
|                         color: #666; | ||||
|                         font-size: 0.9em; | ||||
|                         margin-bottom: 8px; | ||||
|                     } | ||||
|                     .pagination { | ||||
|                         margin: 1em 0; | ||||
|                         text-align: center; | ||||
|                     } | ||||
|                     .pagination a, .pagination span { | ||||
|                         display: inline-block; | ||||
|                         padding: 8px 16px; | ||||
|                         margin: 0 4px; | ||||
|                         border: 1px solid #ddd; | ||||
|                         border-radius: 4px; | ||||
|                         text-decoration: none; | ||||
|                         color: #0066cc; | ||||
|                     } | ||||
|                     .pagination .current { | ||||
|                         background-color: #0066cc; | ||||
|                         color: white; | ||||
|                         border-color: #0066cc; | ||||
|                     } | ||||
|                     .pagination a:hover { | ||||
|                         background-color: #f5f5f5; | ||||
|                     } | ||||
|                     .pagination-info { | ||||
|                         text-align: center; | ||||
|                         color: #666; | ||||
|                         margin-bottom: 10px; | ||||
|                     } | ||||
|                 </style> | ||||
|             </head> | ||||
|             <body> | ||||
|                 <div class="header"> | ||||
|                     <h1>Crash Reports</h1> | ||||
|                     <div class="pagination-info"> | ||||
|                         Showing {{ start_idx + 1 }}-{{ [end_idx, total_reports] | min }} of {{ total_reports }} reports | ||||
|                     </div> | ||||
|                     <div class="pagination"> | ||||
|                         {% if page > 1 %} | ||||
|                             <a href="{{ url_for('list_reports', page=1) }}">« First</a> | ||||
|                             <a href="{{ url_for('list_reports', page=page-1) }}">‹ Previous</a> | ||||
|                         {% endif %} | ||||
|  | ||||
|                         {% for p in range([1, page-2] | max, [total_pages + 1, page + 3] | min) %} | ||||
|                             {% if p == page %} | ||||
|                                 <span class="current">{{ p }}</span> | ||||
|                             {% else %} | ||||
|                                 <a href="{{ url_for('list_reports', page=p) }}">{{ p }}</a> | ||||
|                             {% endif %} | ||||
|                         {% endfor %} | ||||
|  | ||||
|                         {% if page < total_pages %} | ||||
|                             <a href="{{ url_for('list_reports', page=page+1) }}">Next ›</a> | ||||
|                             <a href="{{ url_for('list_reports', page=total_pages) }}">Last »</a> | ||||
|                         {% endif %} | ||||
|                     </div> | ||||
|                 </div> | ||||
|  | ||||
|                 <div class="report-list"> | ||||
|                 {% for report in reports %} | ||||
|                     <div class="report-item"> | ||||
|                         <h3>Report: {{ report['sort_key'] }}</h3> | ||||
|                         <div class="upload-time"> | ||||
|                             Uploaded: {{ report['upload_time'].strftime('%Y-%m-%d %H:%M:%S') }} | ||||
|                         </div> | ||||
|                         <table class="metadata-table"> | ||||
|                             <tr> | ||||
|                                 <td>Platform:</td> | ||||
|                                 <td>{{ report['metadata']['platform'] }}</td> | ||||
|                             </tr> | ||||
|                             <tr> | ||||
|                                 <td>Client SHA:</td> | ||||
|                                 <td>{{ report['metadata']['client_sha'] }}</td> | ||||
|                             </tr> | ||||
|                             <tr> | ||||
|                                 <td>Jami Core SHA:</td> | ||||
|                                 <td>{{ report['metadata']['jamicore_sha'] }}</td> | ||||
|                             </tr> | ||||
|                             <tr> | ||||
|                                 <td>Build ID:</td> | ||||
|                                 <td>{{ report['metadata']['build_id'] }}</td> | ||||
|                             </tr> | ||||
|                             <tr> | ||||
|                                 <td>GUID:</td> | ||||
|                                 <td>{{ report['metadata']['guid'] }}</td> | ||||
|                             </tr> | ||||
|                         </table> | ||||
|                         <a class="download-link" href="{{ url_for('download_report_bundle', dump_file=report['dump_file'], info_file=report['info_file'], download_name=report['download_name']) }}"> | ||||
|                             Download Report Bundle | ||||
|                         </a> | ||||
|                     </div> | ||||
|                 {% endfor %} | ||||
|                 </div> | ||||
|             </body> | ||||
|             </html> | ||||
|         """, reports=current_page_reports, page=page, total_pages=total_pages, | ||||
|              start_idx=start_idx, end_idx=end_idx, total_reports=total_reports) | ||||
|  | ||||
|     except Exception as e: | ||||
|         print(f"Error listing reports: {e}") | ||||
|         return 'Internal Server Error', 500 | ||||
|  | ||||
| @app.route('/download-bundle/<path:dump_file>/<path:info_file>/<path:download_name>') | ||||
| def download_report_bundle(dump_file, info_file, download_name): | ||||
|     try: | ||||
|         import zipfile | ||||
|         from io import BytesIO | ||||
|  | ||||
|         # Create a memory file for the zip | ||||
|         memory_file = BytesIO() | ||||
|  | ||||
|         # Create the zip file | ||||
|         with zipfile.ZipFile(memory_file, 'w', zipfile.ZIP_DEFLATED) as zf: | ||||
|             # Add the dump file | ||||
|             dump_path = os.path.join(BASE_PATH, dump_file) | ||||
|             zf.write(dump_path, f"{download_name}.dmp") | ||||
|  | ||||
|             # Add the info file | ||||
|             info_path = os.path.join(BASE_PATH, info_file) | ||||
|             zf.write(info_path, f"{download_name}.info") | ||||
|  | ||||
|         # Seek to the beginning of the memory file | ||||
|         memory_file.seek(0) | ||||
|  | ||||
|         return send_file( | ||||
|             memory_file, | ||||
|             mimetype='application/zip', | ||||
|             as_attachment=True, | ||||
|             download_name=f"{download_name}.zip" | ||||
|         ) | ||||
|     except Exception as e: | ||||
|         print(f"Error creating zip bundle: {e}") | ||||
|         return 'Internal Server Error', 500 | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     parser = argparse.ArgumentParser(description='Crash reports viewing server') | ||||
|     parser.add_argument('--debug', action='store_true', help='Run in debug mode') | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     if args.debug: | ||||
|         app.run(port=8081, debug=True) | ||||
|     else: | ||||
|         from waitress import serve | ||||
|         print("Starting production server on port 8081...") | ||||
|         serve(app, host='0.0.0.0', port=8081) | ||||
| @ -0,0 +1,6 @@ | ||||
| Flask==3.0.3 | ||||
| requests==2.24.0 | ||||
| markupsafe==2.1.1 | ||||
| itsdangerous==2.1.2 | ||||
| werkzeug==3.0.0 | ||||
| waitress==3.0.2 | ||||
| @ -1,131 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!-- Copyright (C) 2015-2023 Savoir-faire Linux Inc. --> | ||||
| <component type="desktop-application"> | ||||
|  <id>net.jami.Jami</id> | ||||
|  <metadata_license>CC-BY-SA-3.0</metadata_license> | ||||
|  <project_license>GPL-3.0+</project_license> | ||||
|  <name>Jami</name> | ||||
|  <summary>Privacy-oriented voice, video, chat, and conference platform</summary> | ||||
|  <summary xml:lang="hu">Adatvédelem-orientált hang-, video-, csevegés- és konferenciaplatform</summary> | ||||
|  <icon type="stock">jami</icon> | ||||
|  <description> | ||||
|     <p> | ||||
|       An end-to-end encrypted secure and distributed voice, video, and | ||||
|       chat communication platform that requires no central server and | ||||
|       leaves the power of privacy and freedom in the hands of users. | ||||
|     </p> | ||||
|     <p> | ||||
|       Jami supports the following key features: | ||||
|     </p> | ||||
|     <ul> | ||||
|       <li>One-to-one conversations</li> | ||||
|       <li>File sharing</li> | ||||
|       <li>Audio calls and conferences</li> | ||||
|       <li>Video calls and conferences</li> | ||||
|       <li>Screen sharing in video calls and conferences</li> | ||||
|       <li>Recording and sending audio messages</li> | ||||
|       <li>Recording and sending video messages</li> | ||||
|       <li>Functioning as a SIP phone software</li> | ||||
|     </ul> | ||||
|     <p> | ||||
|       Client applications for GNU/Linux, Windows, macOS, iOS, Android, | ||||
|       and Android TV are available, making Jami an interoperable and | ||||
|       cross-platform communication framework. | ||||
|     </p> | ||||
|  | ||||
|     <p xml:lang="hu"> | ||||
|       Végpontokig titkosított biztonságos és elosztott hang-, videó- | ||||
|       és csevegés-kommunikációs platform, amely nem igényel központi | ||||
|       kiszolgálót, és a felhasználók kezében hagyja a magánélet és a | ||||
|       szabadság hatalmát. | ||||
|     </p> | ||||
|     <p xml:lang="hu"> | ||||
|       A Jami a következő főbb funkciókat támogatja: | ||||
|     </p> | ||||
|     <ul> | ||||
|       <li xml:lang="hu">Személyes beszélgetések</li> | ||||
|       <li xml:lang="hu">Fájlmegosztás</li> | ||||
|       <li xml:lang="hu">Hanghívások és konferenciák</li> | ||||
|       <li xml:lang="hu">Videohívások és konferenciák</li> | ||||
|       <li xml:lang="hu">Képernyőmegosztás videohívásokban és | ||||
|         konferenciákon</li> | ||||
|       <li xml:lang="hu">Hangüzenetek rögzítése és küldése</li> | ||||
|       <li xml:lang="hu">Videoüzenetek rögzítése és küldése</li> | ||||
|       <li xml:lang="hu">SIP-telefonszoftverként működik</li> | ||||
|     </ul> | ||||
|     <p xml:lang="hu"> | ||||
|       Elérhetők a GNU/Linux, Windows, macOS, iOS, Android és Android TV | ||||
|       ügyfélalkalmazásai, így a Jami interoperábilis és többplatformos | ||||
|       kommunikációs keretrendszerré válik. | ||||
|     </p> | ||||
|  | ||||
|  </description> | ||||
|  | ||||
|  <url type="homepage">https://jami.net/</url> | ||||
|  <url type="bugtracker">https://git.jami.net/savoirfairelinux/jami-client-qt/issues</url> | ||||
|  <url type="faq">https://jami.net/help/</url> | ||||
|  <url type="help">https://docs.jami.net</url> | ||||
|  <url type="donation">https://www.paypal.com/donate/?hosted_button_id=MGUDJLQZ4TP5W</url> | ||||
|  <url type="translate">https://www.transifex.com/savoirfairelinux/jami</url> | ||||
|  | ||||
|  <!-- Maximum caption length is 60 characters --> | ||||
|  <!-- Officially GIF is not an allowed video format, but it appears to work nonetheless --> | ||||
|  <screenshots> | ||||
|   <screenshot type="default"> | ||||
|    <caption>Send Audio, Video and Chat messages</caption> | ||||
|    <caption xml:lang="hu">Hang-, video- és csevegőüzeneteket küldhet</caption> | ||||
|    <image type="source" width="1310" height="650">https://dl.jami.net/media-resources/screenshots/jami_linux_audiovideo.png</image> | ||||
|   </screenshot> | ||||
|   <screenshot> | ||||
|    <caption>Easily share desktop contents</caption> | ||||
|    <caption xml:lang="hu">Könnyen megoszthatja az asztali tartalmat</caption> | ||||
|    <image type="source" width="1016" height="659">https://dl.jami.net/media-resources/screenshots/jami_linux_screenshare.png</image> | ||||
|   </screenshot> | ||||
|   <screenshot> | ||||
|    <caption>Crystal clear audio calls between Jami users</caption> | ||||
|    <caption xml:lang="hu">Kristálytiszta hanghívások a Jami felhasználók között</caption> | ||||
|    <video container="webm" codec="vp9" width="600" height="400">https://dl.jami.net/media-resources/gifs_features/conversiongif_webm/audio-call_web.webm</video> | ||||
|   </screenshot> | ||||
|   <screenshot> | ||||
|    <caption>Conference calls with an unlimited participants</caption> | ||||
|    <caption xml:lang="hu">Konferenciahívások korlátlan számú résztvevővel</caption> | ||||
|    <video container="webm" codec="vp9" width="600" height="400">https://dl.jami.net/media-resources/gifs_features/conversiongif_webm/conference_web.webm</video> | ||||
|   </screenshot> | ||||
|   <screenshot> | ||||
|    <caption>Encrypted and secure text messaging, no servers</caption> | ||||
|    <caption xml:lang="hu">Titkosított és biztonságos csevegési üzenetküldés, kiszolgálók nélkül</caption> | ||||
|    <video container="webm" codec="vp9" width="600" height="400">https://dl.jami.net/media-resources/gifs_features/conversiongif_webm/chat_web.webm</video> | ||||
|   </screenshot> | ||||
|   <screenshot> | ||||
|    <caption>Send files of any size</caption> | ||||
|    <caption xml:lang="hu">Bármilyen méretű fájl küldése</caption> | ||||
|    <video container="webm" codec="vp9" width="600" height="400">https://dl.jami.net/media-resources/gifs_features/conversiongif_webm/files-share_web.webm</video> | ||||
|   </screenshot> | ||||
|  </screenshots> | ||||
|  | ||||
|  <launchable type="desktop-id">jami.desktop</launchable> | ||||
|  | ||||
|  <provides><binary>jami</binary></provides> | ||||
|  | ||||
|  <!-- https://specifications.freedesktop.org/menu-spec/latest/apa.html --> | ||||
|  <!-- https://specifications.freedesktop.org/menu-spec/latest/apas02.html --> | ||||
|  <categories> | ||||
|   <category>Chat</category> | ||||
|   <category>Communication</category> | ||||
|   <category>FileTransfer</category> | ||||
|   <category>InstantMessaging</category> | ||||
|   <category>Network</category> | ||||
|   <category>P2P</category> | ||||
|   <category>Productivity</category> | ||||
|  </categories> | ||||
|  | ||||
|  <translation type="gettext">jami-client-qt</translation> | ||||
|  | ||||
|  <content_rating type="oars-1.1"> | ||||
|   <content_attribute id="social-chat">intense</content_attribute> | ||||
|   <content_attribute id="social-audio">intense</content_attribute> | ||||
|  </content_rating> | ||||
|  | ||||
|  <requires><id>net.jami.daemon</id></requires> | ||||
|  | ||||
| </component> | ||||
| @ -1,14 +0,0 @@ | ||||
| [Desktop Entry] | ||||
| Name=Jami | ||||
| GenericName=Jami | ||||
| Comment=Privacy-oriented voice, video, chat, and conference platform | ||||
| Comment[hu]=Adatvédelem-orientált hang-, video-, csevegés- és konferenciaplatform | ||||
| Comment[ru]=Jami — приложение для защищённой связи с распределённой архитектурой | ||||
| Exec=jami %u | ||||
| Icon=jami | ||||
| StartupNotify=true | ||||
| Terminal=false | ||||
| Type=Application | ||||
| Categories=Network;Telephony; | ||||
| Keywords=Qt;chat;talk;im;message;voip; | ||||
| MimeType=x-scheme-handler/jami; | ||||
							
								
								
									
										153
									
								
								extras/data/jami.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								extras/data/jami.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,153 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <components version="0.14" origin="jami"> | ||||
|   <component type="desktop-application"> | ||||
|     <id>net.jami.Jami</id> | ||||
|     <pkgname>jami</pkgname> | ||||
|     <name>Jami</name> | ||||
|     <summary>Privacy-oriented voice, video, chat, and conference platform</summary> | ||||
|     <summary xml:lang="hu">Adatvédelem-orientált hang-, video-, csevegés- és konferenciaplatform</summary> | ||||
|     <project_license>GPL-3.0+</project_license> | ||||
|     <description> | ||||
|       <p>Jami, a GNU package, is software for universal and distributed peer-to-peer communication that respects the freedom and privacy of its users.</p> | ||||
|       <p>Jami is the simplest and easiest way to connect with people (and devices) with instant messaging, audio and video calls over the Internet and LAN/WAN intranets.</p> | ||||
|       <p>Jami is a free/libre, end-to-end encrypted, and private communication platform.</p> | ||||
|       <p>Jami – which used to be known as Ring – is also an open-source alternative (to Facebook Messenger, Signal, Skype, Teams, Telegram, TikTok, Viber, WhatsApp, Zoom) that prioritizes the privacy of its users.</p> | ||||
|       <p>Jami has a professional-looking design and is available for a wide range of platforms. Unlike the alternatives, calls using Jami are directly between users as it does not use servers to handle calls.</p> | ||||
|       <p>This gives the greatest privacy as the distributed nature of Jami means your calls are only between participants.</p> | ||||
|       <p>One-to-one and group conversations with Jami are enhanced with: instant messaging; audio and video calling; recording and sending audio and video messages; file transfers; screen sharing; and, location sharing.</p> | ||||
|       <p>Jami can also function as a SIP client.</p> | ||||
|       <p>Jami has multiple extensions available: Audio Filter; Auto Answer; Green Screen; Watermark; and, Whisper Transcript.</p> | ||||
|       <p>Jami can be easily deployed in organizations with the “Jami Account Management Server” (JAMS), allowing users to connect with their corporate credentials or create local accounts. JAMS allows you to manage your own Jami community while taking advantage of Jami’s distributed network architecture.</p> | ||||
|       <p>Jami is available for GNU/Linux, Windows, macOS, iOS, Android, and Android TV, making Jami an interoperable and cross-platform communication framework.</p> | ||||
|       <p>Manage multiple SIP accounts, Jami accounts and JAMS accounts with the Jami client installed on one or multiple devices.</p> | ||||
|       <p>Jami is free, unlimited, private, advertising free, compatible, fast, autonomous, and anonymous.</p> | ||||
|       <p>Learn more about:</p> | ||||
|       <ul> | ||||
|         <li>Jami: https://jami.net/</li> | ||||
|         <li>Jami extensions: https://jami.net/extensions/</li> | ||||
|         <li>“Jami Account Management Server” (JAMS): https://jami.biz/</li> | ||||
|         <li>Jami documentation: https://docs.jami.net/</li> | ||||
|       </ul> | ||||
|       <p>Follow us for more:</p> | ||||
|       <ul> | ||||
|         <li>Mastodon: https://mstdn.io/@Jami</li> | ||||
|         <li>X: https://x.com/jami_social</li> | ||||
|         <li>YouTube: https://www.youtube.com/@jami9311</li> | ||||
|       </ul> | ||||
|       <p>We’d love to hear from you! Join the Jami community:</p> | ||||
|       <ul> | ||||
|         <li>Contribute: https://jami.net/contribute/</li> | ||||
|         <li>Forum: https://forum.jami.net/</li> | ||||
|       </ul> | ||||
|       <p>Build with Jami on your IoT project: re-use the universal communications technology of Jami with its portable library on your system of choice.</p> | ||||
|       <p>Jami for Android TV is tested on NVIDIA SHIELD TV with Logitech cameras.</p> | ||||
|       <p>Jami is published under the GPL license, version 3 or higher.</p> | ||||
|       <p>Copyright © Savoir-faire Linux Inc.</p> | ||||
|     </description> | ||||
|     <description xml:lang="hu"> | ||||
|       <p>A Jami, egy GNU-csomag, egy univerzális és elosztott társ-társ kommunikációra szolgáló szoftver, amely tiszteletben tartja a felhasználók szabadságát és magánéletét.</p> | ||||
|       <p>A Jami a legegyszerűbb és legegyszerűbb módja annak, hogy azonnali üzenetküldéssel, hang- és videohívásokkal kapcsolódjon az emberekhez (és eszközökhöz) az interneten és a LAN/WAN intraneteken keresztül.</p> | ||||
|       <p>A Jami egy ingyenes, teljes körűen titkosított és privát kommunikációs platform.</p> | ||||
|       <p>A Jami – amelyet korábban Ring néven ismertek – egy nyílt forráskódú alternatíva is (a Facebook Messenger, a Signal, a Skype, a Teams, a Telegram, a TikTok, a Viber, a WhatsApp, a Zoom számára), amely előtérbe helyezi a felhasználók magánéletét.</p> | ||||
|       <p>A Jami professzionális megjelenésű, és platformok széles skálájához elérhető. Az alternatívákkal ellentétben a Jami-t használó hívások közvetlenül a felhasználók között zajlanak, mivel nem használ kiszolgálókat a hívások kezelésére.</p> | ||||
|       <p>Ez biztosítja a legnagyobb magánéletet, mivel a Jami elosztott jellege azt jelenti, hogy a hívások csak a résztvevők között zajlanak.</p> | ||||
|       <p>A Jamival folytatott személyes és csoportos beszélgetéseket a következők javítják: azonnali üzenetküldés; hang- és videohívások; hang- és videoüzenetek rögzítése és küldése; fájlátvitel; képernyőmegosztás; és helymegosztás.</p> | ||||
|       <p>A Jami SIP-ügyfélként is működhet.</p> | ||||
|       <p>A Jami-nek több bővítménye is elérhető: hangszűrő; automatikus válasz; zöld képernyő; vízjel; és, suttogó átirat.</p> | ||||
|       <p>A Jami könnyen telepíthető a szervezetekben a JAMS (Jami Account Management Server – Jami fiókkezelő kiszolgáló), amely lehetővé teszi a felhasználók számára, hogy csatlakozzanak vállalati hitelesítő adataikhoz, vagy helyi fiókokat hozzanak létre. A JAMS lehetővé teszi saját Jami közösségének kezelését, miközben kihasználja a Jami elosztott hálózati architektúráját.</p> | ||||
|       <p>A Jami elérhető GNU/Linux, Windows, macOS, iOS, Android és Android TV rendszereken, így a Jami egy interoperábilis és platformok közötti kommunikációs keretrendszer.</p> | ||||
|       <p>Kezeljen több SIP-fiókot, Jami-fiókot és JAMS-fiókot az egy vagy több eszközre telepített Jami-ügyféllel.</p> | ||||
|       <p>A Jami ingyenes, korlátlan, privát, reklámmentes, kompatibilis, gyors, autonóm és névtelen.</p> | ||||
|       <p>További tájékoztatás:</p> | ||||
|       <ul> | ||||
|         <li>Jami: https://jami.net/hu/</li> | ||||
|         <li>Jami-bővítmények: https://jami.net/hu/extensions/</li> | ||||
|         <li>JAMS (Jami Account Management Server – Jami fiókkezelő kiszolgáló): https://jami.biz/</li> | ||||
|         <li>Jami-dokumentáció: https://docs.jami.net/hu/</li> | ||||
|       </ul> | ||||
|       <p>Kövess minket a továbbiakért:</p> | ||||
|       <ul> | ||||
|         <li>Mastodon: https://mstdn.io/@Jami</li> | ||||
|         <li>X: https://x.com/jami_social</li> | ||||
|         <li>YouTube: https://www.youtube.com/@jami9311</li> | ||||
|       </ul> | ||||
|       <p>Szívesen hallanánk felőled! Csatlakozzon a Jami közösséghez:</p> | ||||
|       <ul> | ||||
|         <li>Közreműködés: https://jami.net/hu/contribute/</li> | ||||
|         <li>Fórum: https://forum.jami.net/</li> | ||||
|       </ul> | ||||
|       <p>Építsen a Jamival IoT-projektjére: használja újra a Jami univerzális kommunikációs technológiáját a hordozható könyvtárával a választott rendszerén.</p> | ||||
|       <p>A Jami for Android TV-t Logitech kamerákkal ellátott NVIDIA SHIELD TV-n tesztelték.</p> | ||||
|       <p>A Jami a GPL licenc 3-as vagy újabb verziója alatt jelent meg.</p> | ||||
|       <p>Szerzői jog © Savoir-faire Linux Inc.</p> | ||||
|     </description> | ||||
|     <requires> | ||||
|       <id>net.jami.daemon</id> | ||||
|     </requires> | ||||
|     <launchable type="desktop-id">net.jami.Jami.desktop</launchable> | ||||
|     <icon type="stock">net.jami.Jami</icon> | ||||
|     <url type="homepage">https://jami.net/</url> | ||||
|     <url type="bugtracker">https://git.jami.net/savoirfairelinux/jami-client-qt/issues</url> | ||||
|     <url type="faq">https://docs.jami.net/user/faq.html</url> | ||||
|     <url type="help">https://forum.jami.net/</url> | ||||
|     <url type="donation">https://jami.net/whydonate/</url> | ||||
|     <url type="translate">https://www.transifex.com/savoirfairelinux/jami</url> | ||||
|     <categories> | ||||
|       <category>Chat</category> | ||||
|       <category>FileTransfer</category> | ||||
|       <category>InstantMessaging</category> | ||||
|       <category>Network</category> | ||||
|       <category>P2P</category> | ||||
|       <category>Telephony</category> | ||||
|       <category>VideoConference</category> | ||||
|     </categories> | ||||
|     <provides> | ||||
|       <binary>jami</binary> | ||||
|       <mediatype>x-scheme-handler/jami</mediatype> | ||||
|     </provides> | ||||
|     <screenshots> | ||||
|       <screenshot type="default"> | ||||
|         <caption>Send chat messages and talk with audio and video</caption> | ||||
|         <caption xml:lang="hu">Csevegőüzenetek küldése, valamint hang- és videobeszélgetés</caption> | ||||
|         <image type="source" width="1310" height="650">https://dl.jami.net/media-resources/screenshots/jami_linux_audiovideo.png</image> | ||||
|       </screenshot> | ||||
|       <screenshot> | ||||
|         <caption>Screen sharing</caption> | ||||
|         <caption xml:lang="hu">Képernyőmegosztás</caption> | ||||
|         <image type="source" width="1016" height="659">https://dl.jami.net/media-resources/screenshots/jami_linux_screenshare.png</image> | ||||
|       </screenshot> | ||||
|       <screenshot> | ||||
|         <caption>Crystal clear audio calls between Jami users</caption> | ||||
|         <caption xml:lang="hu">Kristálytiszta hanghívások a Jami felhasználók között</caption> | ||||
|         <video codec="vp9" container="webm" width="600" height="400">https://dl.jami.net/media-resources/gifs_features/conversiongif_webm/audio-call_web.webm</video> | ||||
|       </screenshot> | ||||
|       <screenshot> | ||||
|         <caption>Conference calls with an unlimited number of participants</caption> | ||||
|         <caption xml:lang="hu">Konferenciahívások korlátlan számú résztvevővel</caption> | ||||
|         <video codec="vp9" container="webm" width="600" height="400">https://dl.jami.net/media-resources/gifs_features/conversiongif_webm/conference_web.webm</video> | ||||
|       </screenshot> | ||||
|       <screenshot> | ||||
|         <caption>Encrypted and secure text messaging without servers</caption> | ||||
|         <caption xml:lang="hu">Titkosított és biztonságos csevegési üzenetküldés, kiszolgálók nélkül</caption> | ||||
|         <video codec="vp9" container="webm" width="600" height="400">https://dl.jami.net/media-resources/gifs_features/conversiongif_webm/chat_web.webm</video> | ||||
|       </screenshot> | ||||
|       <screenshot> | ||||
|         <caption>Transfer files of any size</caption> | ||||
|         <caption xml:lang="hu">Bármilyen méretű fájl küldése</caption> | ||||
|         <video codec="vp9" container="webm" width="600" height="400">https://dl.jami.net/media-resources/gifs_features/conversiongif_webm/files-share_web.webm</video> | ||||
|       </screenshot> | ||||
|     </screenshots> | ||||
|     <keywords> | ||||
|       <keyword>Qt</keyword> | ||||
|       <keyword>chat</keyword> | ||||
|       <keyword>talk</keyword> | ||||
|       <keyword>im</keyword> | ||||
|       <keyword>message</keyword> | ||||
|       <keyword>voip</keyword> | ||||
|     </keywords> | ||||
|     <content_rating type="oars-1.1"> | ||||
|       <content_attribute id="social-chat">intense</content_attribute> | ||||
|       <content_attribute id="social-audio">intense</content_attribute> | ||||
|     </content_rating> | ||||
|   </component> | ||||
| </components> | ||||
							
								
								
									
										83
									
								
								extras/data/net.jami.Jami.desktop
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								extras/data/net.jami.Jami.desktop
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,83 @@ | ||||
| [Desktop Entry] | ||||
| Name=Jami | ||||
| GenericName=Jami | ||||
| Comment=Share, freely and privately | ||||
| Comment[ab]=Ацеиҩшара, хақәиҭла, хала | ||||
| Comment[af]=Deel, vrylik en privaat | ||||
| Comment[am]=በነጻ እና በግል ያካፍሉ። | ||||
| Comment[ar]=شارك بحرية وبشكل خاص | ||||
| Comment[az]=Sərbəst və gizli şəkildə paylaşın | ||||
| Comment[be]=Падзяліцеся свабодна і прыватна | ||||
| Comment[bg]=Споделяйте, свободно и частно | ||||
| Comment[bn]=শেয়ার করুন, অবাধে এবং গোপনে | ||||
| Comment[ca]=Comparteix, lliurement i de forma privada | ||||
| Comment[cs]=Sdílejte svobodně a soukromě | ||||
| Comment[da]=Del, frit og privat | ||||
| Comment[de]=Teilen, frei und privat | ||||
| Comment[el]=Κοινοποιήστε, ελεύθερα και ιδιωτικά | ||||
| Comment[eo]=Kunhavigu, libere kaj private | ||||
| Comment[es]=Comparte, libre y privadamente | ||||
| Comment[et]=Jaga, vabalt ja privaatselt | ||||
| Comment[fa]=به اشتراک بگذارید، آزادانه و خصوصی | ||||
| Comment[fi]=Jaa, vapaasti ja yksityisesti | ||||
| Comment[fil]=Ibahagi, libre at pribado | ||||
| Comment[fr]=Partagez, librement, gratuitement et en toute confidentialité | ||||
| Comment[gl]=Comparte, de xeito libre e privado | ||||
| Comment[he]=שתפו, באופן חופשי ופרטי | ||||
| Comment[hi]=स्वतंत्र रूप से और निजी तौर पर साझा करें | ||||
| Comment[hr]=Dijelite, slobodno i privatno | ||||
| Comment[hu]=Megosztás, szabadon és bizalmasan | ||||
| Comment[hy]=Տարածեք, ազատ և մասնավոր | ||||
| Comment[id]=Berbagi, secara bebas dan pribadi | ||||
| Comment[is]=Deildu, frjálslega og einslega | ||||
| Comment[it]=Condividere, liberamente e privatamente | ||||
| Comment[ja]=自由に、プライベートに共有 | ||||
| Comment[ka]=გააზიარეთ, თავისუფლად და პირადად | ||||
| Comment[km]=ចែករំលែកដោយសេរី និងឯកជន | ||||
| Comment[kn]=ಮುಕ್ತವಾಗಿ ಮತ್ತು ಖಾಸಗಿಯಾಗಿ ಹಂಚಿಕೊಳ್ಳಿ | ||||
| Comment[ko]=자유롭고 비공개적으로 공유하세요 | ||||
| Comment[ky]=Бөлүшүү, эркин жана купуя | ||||
| Comment[la]=Communicantes, libere et privatim | ||||
| Comment[lo]=ແບ່ງປັນ, ຢ່າງເສລີແລະເປັນສ່ວນຕົວ | ||||
| Comment[lt]=Dalintis, laisvai ir privačiai | ||||
| Comment[lv]=Kopīgojiet, brīvi un privāti | ||||
| Comment[mk]=Споделете, слободно и приватно | ||||
| Comment[ml]=സ്വതന്ത്രമായും സ്വകാര്യമായും പങ്കിടുക | ||||
| Comment[mn]=Чөлөөт, хувийн байдлаар хуваалцах | ||||
| Comment[mr]=सामायिक करा, मुक्तपणे आणि खाजगीरित्या | ||||
| Comment[ms]=Kongsi, secara bebas dan peribadi | ||||
| Comment[my]=လွတ်လပ်စွာ သီးသန့်မျှဝေပါ။ | ||||
| Comment[ne]=स्वतन्त्र र गोप्य रूपमा सेयर गर्नुहोस् | ||||
| Comment[nl]=Deel, vrij en privé | ||||
| Comment[no]=Del, fritt og privat | ||||
| Comment[pl]=Udostępniaj swobodnie i prywatnie | ||||
| Comment[pt_BR]=Compartilhe, livre e privadamente | ||||
| Comment[pt_PT]=Partilhe, livre e privadamente | ||||
| Comment[ro]=Distribuie, în mod liber și privat | ||||
| Comment[ru]=Делитесь, свободно и конфиденциально | ||||
| Comment[si]=නිදහසේ සහ පෞද්ගලිකව බෙදා ගන්න | ||||
| Comment[sk]=Zdieľajte, slobodne a súkromne | ||||
| Comment[sl]=Delite brezplačno in zasebno | ||||
| Comment[sq]=Shpërndaje, lirisht dhe privatisht | ||||
| Comment[sr]=Делите, слободно и приватно | ||||
| Comment[sv]=Dela, fritt och privat | ||||
| Comment[sw]=Shiriki, kwa uhuru na kwa faragha | ||||
| Comment[ta]=பகிரவும், சுதந்திரமாகவும் தனிப்பட்ட முறையிலும் | ||||
| Comment[te]=ఉచితంగా మరియు ప్రైవేట్గా షేర్ చేయండి | ||||
| Comment[th]=แบ่งปันได้อย่างอิสระและเป็นส่วนตัว | ||||
| Comment[tl]=Ibahagi, libre at pribado | ||||
| Comment[tr]=Özgürce ve özel olarak paylaşın | ||||
| Comment[uk]=Поділіться вільно та приватно | ||||
| Comment[vi]=Chia sẻ, tự do và riêng tư | ||||
| Comment[zh_CN]=自由且私密地分享 | ||||
| Comment[zh_HK]=自由且私密地分享 | ||||
| Comment[zh_TW]=自由且私密地分享 | ||||
| Comment[zu]=Yabelana, ngokukhululekile nangasese | ||||
| Exec=jami %u | ||||
| Icon=net.jami.Jami | ||||
| StartupNotify=true | ||||
| Terminal=false | ||||
| Type=Application | ||||
| Categories=Chat;FileTransfer;InstantMessaging;Network;P2P;Telephony;VideoConference; | ||||
| Keywords=Qt;chat;talk;im;message;voip; | ||||
| MimeType=x-scheme-handler/jami; | ||||
							
								
								
									
										1998
									
								
								extras/data/net.jami.Jami.metainfo.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1998
									
								
								extras/data/net.jami.Jami.metainfo.xml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										14
									
								
								extras/packaging/gnu-linux/Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								extras/packaging/gnu-linux/Jenkinsfile
									
									
									
									
										vendored
									
									
								
							| @ -1,6 +1,4 @@ | ||||
| // Copyright (C) 2021-2023 Savoir-faire Linux Inc. | ||||
| // | ||||
| // Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com> | ||||
| // Copyright (C) 2021-2025 Savoir-faire Linux Inc. | ||||
| // | ||||
| // 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 | ||||
| @ -35,7 +33,9 @@ | ||||
| def SUBMODULES = ['daemon', | ||||
|                   '3rdparty/SortFilterProxyModel', | ||||
|                   '3rdparty/md4c', | ||||
|                   '3rdparty/tidy-html5'] | ||||
|                   '3rdparty/tidy-html5', | ||||
|                   '3rdparty/zxing-cpp', | ||||
|                   '3rdparty/hunspell'] | ||||
| def TARGETS = [:] | ||||
| def REMOTE_HOST = env.SSH_HOST_DL_RING_CX | ||||
| def REMOTE_BASE_DIR = '/srv/repository/ring' | ||||
| @ -85,6 +85,10 @@ pipeline { | ||||
|  | ||||
|     environment { | ||||
|         TARBALLS = '/var/cache/jami' // set the cache directory | ||||
|         BUILD_VERSION = sh( | ||||
|                             returnStdout: true, | ||||
|                             script: 'date +"%Y%m%d%H%M"' | ||||
|                           ).trim() | ||||
|     } | ||||
|  | ||||
|     stages { | ||||
| @ -215,7 +219,7 @@ make -f ${PACKAGING_DIR}/Makefile portable-release-tarball .tarball-version | ||||
|         } | ||||
|         stage('Sign & deploy packages') { | ||||
|             agent { | ||||
|                 label 'ring-buildmachine-02.mtl.sfl' | ||||
|                 label 'jami-buildmachine-02.mtl.sfl' | ||||
|             } | ||||
|  | ||||
|             when { | ||||
|  | ||||
| @ -1,7 +1,5 @@ | ||||
| # -*- mode: makefile; -*- | ||||
| # Copyright (C) 2016-2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com> | ||||
| # Copyright (C) 2016-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
| @ -46,10 +44,10 @@ DEBIAN_DSC_FILENAME := jami_$(DEBIAN_VERSION).dsc | ||||
|  | ||||
| # Qt versions | ||||
| QT_MAJOR := 6 | ||||
| QT_MINOR := 4 | ||||
| QT_MINOR := 8 | ||||
| QT_PATCH := 3 | ||||
| QT_TARBALL_CHECKSUM := 29a7eebdbba0ea57978dea6083709c93593a60f0f3133a3de08b9571ee8eaab4 | ||||
| DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-1 | ||||
| QT_TARBALL_CHECKSUM := cdd3a69967208276bb01af7ace7dba0ba53e679f886a4cbe624225c60fb73f2c | ||||
| DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-0 | ||||
| DEBIAN_QT_DSC_FILENAME := libqt-jami_$(DEBIAN_QT_VERSION).dsc | ||||
| QT_JAMI_PREFIX := /usr/lib/libqt-jami | ||||
|  | ||||
| @ -129,7 +127,9 @@ $(RELEASE_TARBALL_FILENAME): tarballs.manifest | ||||
| 	    . \ | ||||
| 	    ./3rdparty/SortFilterProxyModel \ | ||||
| 	    ./3rdparty/md4c \ | ||||
| 	    ./3rdparty/tidy-html5; do \ | ||||
| 	    ./3rdparty/tidy-html5 \ | ||||
| 	    ./3rdparty/zxing-cpp \ | ||||
| 	    ./3rdparty/hunspell; do \ | ||||
| 	  (cd "$$m" && git archive --prefix "$$m/" HEAD \ | ||||
| 	    | tar xf - -C $(TMPDIR)/$(RELEASE_DIRNAME)); \ | ||||
| 	done | ||||
| @ -161,16 +161,17 @@ endif | ||||
| # | ||||
| DISTRIBUTIONS := \ | ||||
| 	debian_11 \ | ||||
| 	debian_12 \ | ||||
| 	debian_testing \ | ||||
| 	debian_unstable \ | ||||
| 	ubuntu_20.04 \ | ||||
| 	ubuntu_22.04 \ | ||||
| 	ubuntu_22.10 \ | ||||
| 	ubuntu_23.04 \ | ||||
| 	fedora_36 \ | ||||
| 	fedora_37 \ | ||||
| 	fedora_38 \ | ||||
| 	opensuse-leap_15.4 \ | ||||
| 	ubuntu_24.04 \ | ||||
| 	ubuntu_25.04 \ | ||||
| 	fedora_41 \ | ||||
| 	fedora_42 \ | ||||
| 	alma_9 \ | ||||
| 	alma_10 \ | ||||
| 	opensuse-leap_15.6 \ | ||||
| 	snap | ||||
|  | ||||
| IS_SHELL_INTERACTIVE := $(shell [ -t 0 ] && echo yes) | ||||
| @ -189,6 +190,7 @@ $(1)-docker-image-name := jami-packaging-$(1) | ||||
| $(1)-docker-image-file := .docker-image-$$($(1)-docker-image-name) | ||||
| $(1)-docker-run-command := docker run \ | ||||
|   --rm --privileged --security-opt apparmor=docker-default \ | ||||
|   -e BUILD_VERSION=${BUILD_VERSION} \ | ||||
|   -e RELEASE_VERSION="$(RELEASE_VERSION)" \ | ||||
|   -e RELEASE_DIRNAME="$(RELEASE_DIRNAME)" \ | ||||
|   -e RELEASE_TARBALL_FILENAME="$(RELEASE_TARBALL_FILENAME)" \ | ||||
| @ -247,10 +249,11 @@ GUIX_PACK_FORMATS = deb rpm | ||||
| define guix-pack-command | ||||
| guix pack -C xz -f $(1) -m $(CURDIR)/extras/packaging/gnu-linux/guix/guix-pack-manifest.scm -v3 \ | ||||
|   -S /usr/bin/jami=bin/jami \ | ||||
|   -S /usr/share/applications/jami.desktop=share/applications/jami.desktop \ | ||||
|   -S /usr/share/icons/hicolor/scalable/apps/jami.svg=share/icons/hicolor/scalable/apps/jami.svg \ | ||||
|   -S /usr/share/applications/net.jami.Jami.desktop=share/applications/net.jami.Jami.desktop \ | ||||
|   -S /usr/share/icons/hicolor/scalable/apps/net.jami.Jami.svg=share/icons/hicolor/scalable/apps/net.jami.Jami.svg \ | ||||
|   -S /usr/share/icons/hicolor/48x48/apps/jami.png=share/icons/hicolor/48x48/apps/jami.png \ | ||||
|   -S /usr/share/metainfo/jami.appdata.xml=share/metainfo/jami.appdata.xml \ | ||||
|   -S /usr/share/metainfo/net.jami.Jami.metainfo.xml=share/metainfo/net.jami.Jami.metainfo.xml \ | ||||
|   -S /usr/share/swcatalog/xml/jami.xml=share/swcatalog/xml/jami.xml \ | ||||
|   $(and $(findstring deb,$(1)), \ | ||||
|     --postinst-file=$(CURDIR)/extras/packaging/gnu-linux/guix/guix-pack-deb.postinst) | ||||
| endef | ||||
|  | ||||
| @ -1,106 +1,94 @@ | ||||
| FROM fedora:36 | ||||
| 
 | ||||
| RUN dnf clean all | ||||
| 
 | ||||
| FROM almalinux:10 | ||||
| RUN dnf clean all && dnf update -y | ||||
| RUN dnf install -y epel-release | ||||
| RUN dnf install -y 'dnf-command(config-manager)' | ||||
| RUN dnf config-manager --set-enabled crb | ||||
| RUN dnf config-manager --set-enabled appstream | ||||
| RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \ | ||||
|     dnf install -y mock | ||||
| 
 | ||||
| RUN dnf groupinstall -y "X Software Development" | ||||
| 
 | ||||
| RUN yum install -y xorg-x11-xauth | ||||
| RUN dnf install -y \ | ||||
|         git \ | ||||
|         rpm-build \ | ||||
|         tar \ | ||||
|         make \ | ||||
|         alsa-lib-devel \ | ||||
|         astyle \ | ||||
|         autoconf \ | ||||
|         automake \ | ||||
|         nasm \ | ||||
|         speexdsp-devel \ | ||||
|         pulseaudio-libs-devel \ | ||||
|         libcanberra-devel \ | ||||
|         libcurl-devel \ | ||||
|         libtool \ | ||||
|         mesa-libgbm-devel \ | ||||
|         mesa-dri-drivers \ | ||||
|         bison \ | ||||
|         check \ | ||||
|         chrpath \ | ||||
|         clang15-devel \ | ||||
|         cmake \ | ||||
|         cryptopp-devel \ | ||||
|         cups-devel \ | ||||
|         dbus-devel \ | ||||
|         expat-devel \ | ||||
|         pcre-devel \ | ||||
|         yaml-cpp-devel \ | ||||
|         dbus-c++-devel \ | ||||
|         dbus-devel \ | ||||
|         libXext-devel \ | ||||
|         libXfixes-devel \ | ||||
|         yasm \ | ||||
|         python2.7 \ | ||||
|         python3-html5lib \ | ||||
|         speex-devel \ | ||||
|         gsm-devel \ | ||||
|         chrpath \ | ||||
|         check \ | ||||
|         astyle \ | ||||
|         uuid-c++-devel \ | ||||
|         gettext-devel \ | ||||
|         gcc-c++ \ | ||||
|         which \ | ||||
|         alsa-lib-devel \ | ||||
|         systemd-devel \ | ||||
|         libuuid-devel \ | ||||
|         uuid-devel \ | ||||
|         gnutls-devel \ | ||||
|         nettle-devel \ | ||||
|         opus-devel \ | ||||
|         patch \ | ||||
|         jsoncpp-devel \ | ||||
|         libnatpmp-devel \ | ||||
|         webkitgtk4-devel \ | ||||
|         cryptopp-devel \ | ||||
|         libva-devel \ | ||||
|         libvdpau-devel \ | ||||
|         msgpack-devel \ | ||||
|         NetworkManager-libnm-devel \ | ||||
|         openssl-devel \ | ||||
|         clutter-devel \ | ||||
|         clutter-gtk-devel \ | ||||
|         libappindicator-gtk3-devel \ | ||||
|         libnotify-devel \ | ||||
|         libupnp-devel \ | ||||
|         qrencode-devel \ | ||||
|         libargon2-devel \ | ||||
|         libsndfile-devel \ | ||||
|         libdrm \ | ||||
|         gperf \ | ||||
|         bison \ | ||||
|         clang \ | ||||
|         clang-devel \ | ||||
|         llvm-devel \ | ||||
|         nodejs \ | ||||
|         flex \ | ||||
|         fmt-devel \ | ||||
|         gcc-c++ \ | ||||
|         gettext-devel \ | ||||
|         git \ | ||||
|         gnutls-devel \ | ||||
|         gperf \ | ||||
|         gsm-devel \ | ||||
|         gstreamer1 gstreamer1-devel \ | ||||
|         gstreamer1-plugins-bad-free-devel \ | ||||
|         gstreamer1-plugins-base-devel \ | ||||
|         gstreamer1-plugins-good \ | ||||
|         gstreamer1-plugins-bad-free-devel \ | ||||
|         nss-devel \ | ||||
|         jsoncpp-devel \ | ||||
|         libX11-devel \ | ||||
|         libXext-devel \ | ||||
|         libXfixes-devel \ | ||||
|         libXrender-devel \ | ||||
|         libappindicator-gtk3-devel \ | ||||
|         libargon2-devel \ | ||||
|         libcanberra-devel \ | ||||
|         libcurl-devel \ | ||||
|         libdrm \ | ||||
|         libnatpmp-devel \ | ||||
|         libnotify \ | ||||
|         libnotify-devel \ | ||||
|         libsndfile-devel \ | ||||
|         libstdc++-static \ | ||||
|         libtool \ | ||||
|         libupnp-devel \ | ||||
|         libuuid-devel \ | ||||
|         libva-devel \ | ||||
|         libvdpau-devel \ | ||||
|         libxcb* \ | ||||
|         libxkb* \ | ||||
|         libX11-devel \ | ||||
|         vulkan-devel \ | ||||
|         libXrender-devel \ | ||||
|         xcb-util-* \ | ||||
|         xz \ | ||||
|         xkeyboard-config \ | ||||
|         libnotify \ | ||||
|         wget \ | ||||
|         libstdc++-static \ | ||||
|         sqlite-devel \ | ||||
|         perl-generators \ | ||||
|         perl-English \ | ||||
|         libxshmfence-devel \ | ||||
|         llvm15-devel \ | ||||
|         make \ | ||||
|         mesa-dri-drivers \ | ||||
|         mesa-libgbm-devel \ | ||||
|         msgpack-devel \ | ||||
|         nasm \ | ||||
|         nettle-devel \ | ||||
|         NetworkManager-libnm-devel \ | ||||
|         ninja-build \ | ||||
|         clang \ | ||||
|         cmake \ | ||||
|         fmt-devel \ | ||||
|         cups-devel #Chromium for Qt | ||||
| 
 | ||||
|         nodejs \ | ||||
|         nss-devel \ | ||||
|         openssl-devel \ | ||||
|         opus-devel \ | ||||
|         pcre2-devel \ | ||||
|         perl-English \ | ||||
|         perl-generators \ | ||||
|         pipewire-devel \ | ||||
|         pulseaudio-libs-devel \ | ||||
|         python3-html5lib \ | ||||
|         qrencode-devel \ | ||||
|         speex-devel \ | ||||
|         speexdsp-devel \ | ||||
|         sqlite-devel \ | ||||
|         systemd-devel \ | ||||
|         uuid-devel \ | ||||
|         vulkan-devel \ | ||||
|         webkitgtk6.0-devel \ | ||||
|         wget \ | ||||
|         which \ | ||||
|         xcb-util-* \ | ||||
|         xkeyboard-config \ | ||||
|         yaml-cpp-devel \ | ||||
|         yasm | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh | ||||
| 
 | ||||
| CMD ["/opt/build-package-rpm.sh"] | ||||
| CMD ["/opt/build-package-rpm.sh"] | ||||
							
								
								
									
										105
									
								
								extras/packaging/gnu-linux/docker/Dockerfile_alma_9
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								extras/packaging/gnu-linux/docker/Dockerfile_alma_9
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,105 @@ | ||||
| FROM almalinux:9 | ||||
| RUN dnf clean all | ||||
| RUN dnf update -y | ||||
| RUN dnf install -y epel-release | ||||
| RUN dnf install -y 'dnf-command(config-manager)' | ||||
| RUN dnf config-manager --set-enabled crb | ||||
| RUN dnf config-manager --set-enabled appstream | ||||
| RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \ | ||||
|     dnf install -y mock | ||||
| RUN yum install -y wget && \ | ||||
|     wget https://repo.almalinux.org/almalinux/9/devel/x86_64/os/Packages/uuid-c++-devel-1.6.2-55.el9.x86_64.rpm && \ | ||||
|     yum localinstall -y uuid-c++-devel-1.6.2-55.el9.x86_64.rpm && \ | ||||
|     rm -f uuid-c++-devel-1.6.2-55.el9.x86_64.rpm | ||||
| RUN yum install -y xorg-x11-xauth | ||||
| RUN dnf install -y \ | ||||
|         git \ | ||||
|         rpm-build \ | ||||
|         tar \ | ||||
|         make \ | ||||
|         autoconf \ | ||||
|         automake \ | ||||
|         nasm \ | ||||
|         speexdsp-devel \ | ||||
|         pulseaudio-libs-devel \ | ||||
|         libcanberra-devel \ | ||||
|         libcurl-devel \ | ||||
|         libtool \ | ||||
|         mesa-libgbm-devel \ | ||||
|         mesa-dri-drivers \ | ||||
|         dbus-devel \ | ||||
|         expat-devel \ | ||||
|         pcre-devel \ | ||||
|         yaml-cpp-devel \ | ||||
|         libXext-devel \ | ||||
|         libXfixes-devel \ | ||||
|         yasm \ | ||||
|         speex-devel \ | ||||
|         gsm-devel \ | ||||
|         chrpath \ | ||||
|         check \ | ||||
|         astyle \ | ||||
|         gettext-devel \ | ||||
|         gcc-c++ \ | ||||
|         which \ | ||||
|         alsa-lib-devel \ | ||||
|         systemd-devel \ | ||||
|         libuuid-devel \ | ||||
|         uuid-devel \ | ||||
|         gnutls-devel \ | ||||
|         nettle-devel \ | ||||
|         opus-devel \ | ||||
|         patch \ | ||||
|         jsoncpp-devel \ | ||||
|         libnatpmp-devel \ | ||||
|         webkitgtk4-devel \ | ||||
|         cryptopp-devel \ | ||||
|         libva-devel \ | ||||
|         libvdpau-devel \ | ||||
|         msgpack-devel \ | ||||
|         NetworkManager-libnm-devel \ | ||||
|         openssl-devel \ | ||||
|         clutter-devel \ | ||||
|         clutter-gtk-devel \ | ||||
|         libappindicator-gtk3-devel \ | ||||
|         libnotify-devel \ | ||||
|         libupnp-devel \ | ||||
|         qrencode-devel \ | ||||
|         libargon2-devel \ | ||||
|         libsndfile-devel \ | ||||
|         libdrm \ | ||||
|         gperf \ | ||||
|         bison \ | ||||
|         clang16-devel \ | ||||
|         llvm16-devel \ | ||||
|         nodejs \ | ||||
|         flex \ | ||||
|         gstreamer1 gstreamer1-devel \ | ||||
|         gstreamer1-plugins-base-devel \ | ||||
|         gstreamer1-plugins-good \ | ||||
|         gstreamer1-plugins-bad-free-devel \ | ||||
|         nss-devel \ | ||||
|         libxcb* \ | ||||
|         libxkb* \ | ||||
|         libX11-devel \ | ||||
|         vulkan-devel \ | ||||
|         libXrender-devel \ | ||||
|         xcb-util-* \ | ||||
|         xz \ | ||||
|         xkeyboard-config \ | ||||
|         libnotify \ | ||||
|         wget \ | ||||
|         libstdc++-static \ | ||||
|         sqlite-devel \ | ||||
|         perl-generators \ | ||||
|         perl-English \ | ||||
|         libxshmfence-devel \ | ||||
|         ninja-build \ | ||||
|         cmake \ | ||||
|         fmt-devel \ | ||||
|         python3-html5lib \ | ||||
|         cups-devel \ | ||||
|         pipewire-devel | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh | ||||
| CMD ["/opt/build-package-rpm.sh"] | ||||
| @ -8,7 +8,12 @@ RUN apt-get update && \ | ||||
|         devscripts \ | ||||
|         equivs \ | ||||
|         python-is-python3 \ | ||||
|         wget | ||||
|         wget \ | ||||
|         curl | ||||
|  | ||||
| # nodejs | ||||
| RUN curl -sL https://deb.nodesource.com/setup_20.x | bash - | ||||
| RUN apt install nodejs -y | ||||
|  | ||||
| ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh | ||||
|  | ||||
| @ -18,9 +23,16 @@ RUN /opt/prebuild-package-debian.sh qt-deps | ||||
| COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control | ||||
| RUN /opt/prebuild-package-debian.sh jami-deps | ||||
|  | ||||
| # Install CMake 3.19 for Qt 6 | ||||
| # Install CMake 3.21 for Qt 6 | ||||
| ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh | ||||
| RUN /opt/install-cmake.sh | ||||
|  | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh | ||||
|  | ||||
| # Setting this variable so that FFmpeg gets built without pipewiregrab | ||||
| # (see daemon/contrib/bootstrap and daemon/contrib/src/ffmpeg/rules.mak) | ||||
| # We rely on PipeWire for screen sharing on Wayland, but the version available on Debian 11 is too old. | ||||
| ENV DISABLE_PIPEWIRE=true | ||||
|  | ||||
| CMD ["/opt/build-package-debian.sh"] | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| FROM ubuntu:23.04 | ||||
| FROM debian:bookworm | ||||
| 
 | ||||
| ENV DEBIAN_FRONTEND=noninteractive | ||||
| 
 | ||||
| @ -18,5 +18,6 @@ RUN /opt/prebuild-package-debian.sh qt-deps | ||||
| COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control | ||||
| RUN /opt/prebuild-package-debian.sh jami-deps | ||||
| 
 | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh | ||||
| CMD ["/opt/build-package-debian.sh"] | ||||
| @ -19,9 +19,8 @@ RUN /opt/prebuild-package-debian.sh qt-deps | ||||
| COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control | ||||
| RUN /opt/prebuild-package-debian.sh jami-deps | ||||
|  | ||||
| # Install CMake 3.19 for Qt 6 | ||||
| ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh | ||||
| RUN /opt/install-cmake.sh | ||||
| RUN apt-get remove -y libre2-dev libre2-11 | ||||
|  | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh | ||||
| CMD ["/opt/build-package-debian.sh"] | ||||
|  | ||||
| @ -9,7 +9,6 @@ RUN apt-get update && \ | ||||
|         equivs \ | ||||
|         python-is-python3 \ | ||||
|         libdbus-1-dev \ | ||||
|         libdbus-c++-dev \ | ||||
|         wget | ||||
|  | ||||
| ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh | ||||
| @ -20,9 +19,8 @@ RUN /opt/prebuild-package-debian.sh qt-deps | ||||
| COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control | ||||
| RUN /opt/prebuild-package-debian.sh jami-deps | ||||
|  | ||||
| # Install CMake 3.19 for Qt 6 | ||||
| ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh | ||||
| RUN /opt/install-cmake.sh | ||||
| RUN apt-get remove -y libre2-dev libre2-11 | ||||
|  | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh | ||||
| CMD ["/opt/build-package-debian.sh"] | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| FROM fedora:37 | ||||
| FROM fedora:41 | ||||
| 
 | ||||
| RUN dnf clean all | ||||
| RUN dnf update -y | ||||
| @ -6,7 +6,7 @@ RUN dnf update -y | ||||
| RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \ | ||||
|     dnf install -y mock | ||||
| 
 | ||||
| RUN dnf groupinstall -y "X Software Development" | ||||
| RUN dnf group install -y x-software-development | ||||
| 
 | ||||
| RUN dnf install -y \ | ||||
|         git \ | ||||
| @ -27,13 +27,9 @@ RUN dnf install -y \ | ||||
|         expat-devel \ | ||||
|         pcre-devel \ | ||||
|         yaml-cpp-devel \ | ||||
|         dbus-c++-devel \ | ||||
|         dbus-devel \ | ||||
|         libXext-devel \ | ||||
|         libXfixes-devel \ | ||||
|         yasm \ | ||||
|         python2.7 \ | ||||
|         python3-html5lib \ | ||||
|         speex-devel \ | ||||
|         gsm-devel \ | ||||
|         chrpath \ | ||||
| @ -71,9 +67,8 @@ RUN dnf install -y \ | ||||
|         libdrm \ | ||||
|         gperf \ | ||||
|         bison \ | ||||
|         clang \ | ||||
|         clang-devel \ | ||||
|         llvm-devel \ | ||||
|         clang18-devel \ | ||||
|         llvm18-devel \ | ||||
|         nodejs \ | ||||
|         flex \ | ||||
|         gstreamer1 gstreamer1-devel \ | ||||
| @ -97,11 +92,13 @@ RUN dnf install -y \ | ||||
|         perl-English \ | ||||
|         libxshmfence-devel \ | ||||
|         ninja-build \ | ||||
|         clang \ | ||||
|         cmake \ | ||||
|         fmt-devel \ | ||||
|         cups-devel #Chromium for Qt | ||||
|         python3-html5lib \ | ||||
|         cups-devel \ | ||||
|         pipewire-devel | ||||
| 
 | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh | ||||
| 
 | ||||
| CMD ["/opt/build-package-rpm.sh"] | ||||
| @ -1,4 +1,4 @@ | ||||
| FROM fedora:38 | ||||
| FROM fedora:42 | ||||
| 
 | ||||
| RUN dnf clean all | ||||
| RUN dnf update -y | ||||
| @ -6,12 +6,10 @@ RUN dnf update -y | ||||
| RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \ | ||||
|     dnf install -y mock | ||||
| 
 | ||||
| RUN dnf groupinstall -y "X Software Development" | ||||
| RUN dnf group install -y x-software-development | ||||
| 
 | ||||
| RUN dnf install -y \ | ||||
|         git \ | ||||
|         rpm-build \ | ||||
|         tar \ | ||||
|         make \ | ||||
|         autoconf \ | ||||
|         automake \ | ||||
| @ -22,17 +20,11 @@ RUN dnf install -y \ | ||||
|         libcurl-devel \ | ||||
|         libtool \ | ||||
|         mesa-libgbm-devel \ | ||||
|         mesa-dri-drivers \ | ||||
|         dbus-devel \ | ||||
|         expat-devel \ | ||||
|         pcre-devel \ | ||||
|         yaml-cpp-devel \ | ||||
|         dbus-c++-devel \ | ||||
|         dbus-devel \ | ||||
|         libXext-devel \ | ||||
|         libXfixes-devel \ | ||||
|         yasm \ | ||||
|         python2.7 \ | ||||
|         speex-devel \ | ||||
|         gsm-devel \ | ||||
|         chrpath \ | ||||
| @ -40,16 +32,15 @@ RUN dnf install -y \ | ||||
|         astyle \ | ||||
|         uuid-c++-devel \ | ||||
|         gettext-devel \ | ||||
|         gcc-c++ \ | ||||
|         gcc14 \ | ||||
|         gcc14-c++ \ | ||||
|         which \ | ||||
|         alsa-lib-devel \ | ||||
|         systemd-devel \ | ||||
|         libuuid-devel \ | ||||
|         uuid-devel \ | ||||
|         gnutls-devel \ | ||||
|         nettle-devel \ | ||||
|         opus-devel \ | ||||
|         patch \ | ||||
|         jsoncpp-devel \ | ||||
|         libnatpmp-devel \ | ||||
|         webkitgtk4-devel \ | ||||
| @ -67,28 +58,20 @@ RUN dnf install -y \ | ||||
|         qrencode-devel \ | ||||
|         libargon2-devel \ | ||||
|         libsndfile-devel \ | ||||
|         libdrm \ | ||||
|         gperf \ | ||||
|         bison \ | ||||
|         clang \ | ||||
|         clang-devel \ | ||||
|         llvm-devel \ | ||||
|         clang18-devel \ | ||||
|         llvm18-devel \ | ||||
|         nodejs \ | ||||
|         flex \ | ||||
|         gstreamer1 gstreamer1-devel \ | ||||
|         gstreamer1-plugins-base-devel \ | ||||
|         gstreamer1-plugins-good \ | ||||
|         gstreamer1-plugins-bad-free-devel \ | ||||
|         nss-devel \ | ||||
|         libxcb* \ | ||||
|         libxkb* \ | ||||
|         libX11-devel \ | ||||
|         vulkan-devel \ | ||||
|         libXrender-devel \ | ||||
|         xcb-util-* \ | ||||
|         xz \ | ||||
|         xkeyboard-config \ | ||||
|         libnotify \ | ||||
|         wget \ | ||||
|         libstdc++-static \ | ||||
|         sqlite-devel \ | ||||
| @ -96,12 +79,13 @@ RUN dnf install -y \ | ||||
|         perl-English \ | ||||
|         libxshmfence-devel \ | ||||
|         ninja-build \ | ||||
|         clang \ | ||||
|         cmake \ | ||||
|         fmt-devel \ | ||||
|         python3-html5lib \ | ||||
|         cups-devel | ||||
|         cups-devel \ | ||||
|         pipewire-devel | ||||
| 
 | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh | ||||
| 
 | ||||
| CMD ["/opt/build-package-rpm.sh"] | ||||
| @ -1,10 +1,9 @@ | ||||
| FROM opensuse/leap:15.4 | ||||
| FROM opensuse/leap:15.6 | ||||
| 
 | ||||
| RUN zypper refresh | ||||
| RUN zypper --gpg-auto-import-keys refresh | ||||
| 
 | ||||
| RUN zypper --non-interactive install -y \ | ||||
|         dnf \ | ||||
|         dnf-command\(builddep\) \ | ||||
|         rpmdevtools \ | ||||
|         Mesa-dri-devel Mesa-dri \ | ||||
|         git \ | ||||
| @ -23,18 +22,17 @@ RUN zypper --non-interactive install -y \ | ||||
|         libtool \ | ||||
|         pcre-devel \ | ||||
|         yaml-cpp-devel \ | ||||
|         libdbus-c++-devel \ | ||||
|         libXext-devel \ | ||||
|         libXfixes-devel \ | ||||
|         yasm \ | ||||
|         speex-devel \ | ||||
|         libgsm-devel \ | ||||
|         chrpath \ | ||||
|         check \ | ||||
|         check-devel \ | ||||
|         astyle \ | ||||
|         gettext-devel \ | ||||
|         gettext-tools \ | ||||
|         which \ | ||||
|         alsa-lib-devel \ | ||||
|         alsa-devel \ | ||||
|         systemd-devel \ | ||||
|         libuuid-devel \ | ||||
|         uuid-devel \ | ||||
| @ -45,31 +43,32 @@ RUN zypper --non-interactive install -y \ | ||||
|         libcryptopp-devel \ | ||||
|         libva-devel \ | ||||
|         libvdpau-devel \ | ||||
|         msgpack-devel \ | ||||
|         msgpack-c-devel \ | ||||
|         msgpack-cxx-devel \ | ||||
|         clutter-devel \ | ||||
|         openssl-devel \ | ||||
|         libopenssl-devel \ | ||||
|         clutter-gtk-devel \ | ||||
|         libnma-devel \ | ||||
|         libcryptopp-devel \ | ||||
|         libdbus-c++-devel \ | ||||
|         libexpat-devel \ | ||||
|         gnome-icon-theme-symbolic \ | ||||
|         libgsm-devel \ | ||||
|         gtk3-devel \ | ||||
|         libappindicator-devel \ | ||||
|         sqlite-devel \ | ||||
|         ffmpeg-4-libavutil-devel \ | ||||
|         sqlite3-devel \ | ||||
|         gtk3-devel\ | ||||
|         qrencode-devel \ | ||||
|         python3-python-dateutil \ | ||||
|         python3-html5lib \ | ||||
|         python311 \ | ||||
|         python311-python-dateutil \ | ||||
|         python311-html5lib \ | ||||
|         python311-six \ | ||||
|         python311-importlib-metadata \ | ||||
|         libsndfile-devel \ | ||||
|         libdrm \ | ||||
|         libdrm-devel \ | ||||
|         gperf \ | ||||
|         bison \ | ||||
|         flex \ | ||||
|         ffmpeg ffmpeg-devel \ | ||||
|         nodejs12 \ | ||||
|         nodejs20 \ | ||||
|         mozilla-nss-devel \ | ||||
|         python-xml \ | ||||
|         libxcb* \ | ||||
| @ -84,7 +83,7 @@ RUN zypper --non-interactive install -y \ | ||||
|         xorg-x11-devel \ | ||||
|         xz \ | ||||
|         xkeyboard-config \ | ||||
|         libnotify \ | ||||
|         libnotify-devel \ | ||||
|         argon2-devel \ | ||||
|         libxshmfence-devel \ | ||||
|         xproto-devel \ | ||||
| @ -98,11 +97,17 @@ RUN zypper --non-interactive install -y \ | ||||
|         gstreamer-plugins-bad-devel \ | ||||
|         gstreamer-plugins-base-devel \ | ||||
|         cmake \ | ||||
|         wget | ||||
|         wget \ | ||||
|         pipewire-devel | ||||
| 
 | ||||
| # openSUSE Leap 15.6 comes with Python 3.6 by default, | ||||
| # but we need at least 3.7 to compile Qt 6.8.3 | ||||
| RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.11 /usr/bin/python3 | ||||
| 
 | ||||
| RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 50 | ||||
| RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 50 | ||||
| 
 | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh | ||||
| 
 | ||||
| ENV CC=gcc | ||||
| @ -1,10 +1,12 @@ | ||||
| ARG RISK=edge | ||||
| ARG UBUNTU=focal | ||||
| # This file is based on the examples at the following links: | ||||
| #   https://snapcraft.io/docs/build-on-docker | ||||
| #   https://github.com/canonical/snapcraft/issues/5079#issuecomment-2414199613 | ||||
|  | ||||
| FROM ubuntu:$UBUNTU as builder | ||||
| ARG RISK | ||||
| ARG UBUNTU=jammy | ||||
|  | ||||
| FROM ubuntu:$UBUNTU AS builder | ||||
| ARG UBUNTU | ||||
| RUN echo "Building snapcraft:$RISK in ubuntu:$UBUNTU" | ||||
| RUN echo "Building snapcraft in ubuntu:$UBUNTU" | ||||
|  | ||||
| # Grab dependencies | ||||
| RUN apt-get update | ||||
| @ -14,62 +16,40 @@ RUN apt-get install --yes \ | ||||
|       jq \ | ||||
|       squashfs-tools | ||||
|  | ||||
| # Grab the core snap (for backwards compatibility) from the stable channel and | ||||
| # unpack it in the proper place. | ||||
| RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core' | jq '.download_url' -r) --output core.snap | ||||
| RUN mkdir -p /snap/core | ||||
| RUN unsquashfs -d /snap/core/current core.snap | ||||
|  | ||||
| # Grab the core22 snap (which snapcraft uses as a base) from the stable channel | ||||
| # and unpack it in the proper place. | ||||
| RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core22?channel='$RISK | jq '.download_url' -r) --output core22.snap | ||||
| # Download and unpack the core22 snap | ||||
| RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core22' | jq '.download_url' -r) --output core22.snap | ||||
| RUN mkdir -p /snap/core22 | ||||
| RUN unsquashfs -d /snap/core22/current core22.snap | ||||
|  | ||||
| # Grab the core20 snap (which snapcraft uses as a base) from the stable channel | ||||
| # and unpack it in the proper place. | ||||
| RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core20' | jq '.download_url' -r) --output core20.snap | ||||
| RUN mkdir -p /snap/core20 | ||||
| RUN unsquashfs -d /snap/core20/current core20.snap | ||||
| # Download and unpack the core24 snap | ||||
| RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core24' | jq '.download_url' -r) --output core24.snap | ||||
| RUN mkdir -p /snap/core24 | ||||
| RUN unsquashfs -d /snap/core24/current core24.snap | ||||
|  | ||||
| # Grab the core20 snap (which snapcraft uses as a base) from the stable channel | ||||
| # and unpack it in the proper place. | ||||
| RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/lxd' | jq '.download_url' -r) --output lxd.snap | ||||
| RUN mkdir -p /snap/lxd | ||||
| RUN unsquashfs -d /snap/lxd/current lxd.snap | ||||
|  | ||||
| # Grab the snapcraft snap from the $RISK channel and unpack it in the proper | ||||
| # place. | ||||
| RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/snapcraft?channel='$RISK | jq '.download_url' -r) --output snapcraft.snap | ||||
| # Download and unpack snapcraft | ||||
| RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/snapcraft' | jq '.download_url' -r) --output snapcraft.snap | ||||
| RUN mkdir -p /snap/snapcraft | ||||
| RUN unsquashfs -d /snap/snapcraft/current snapcraft.snap | ||||
|  | ||||
| # Fix Python3 installation: Make sure we use the interpreter from | ||||
| # the snapcraft snap: | ||||
| RUN unlink /snap/snapcraft/current/usr/bin/python3 | ||||
| RUN ln -s /snap/snapcraft/current/usr/bin/python3.* /snap/snapcraft/current/usr/bin/python3 | ||||
| RUN echo /snap/snapcraft/current/lib/python3.*/site-packages >> /snap/snapcraft/current/usr/lib/python3/dist-packages/site-packages.pth | ||||
|  | ||||
| # Create a snapcraft runner (TODO: move version detection to the core of | ||||
| # snapcraft). | ||||
| # Create a snapcraft runner | ||||
| RUN mkdir -p /snap/bin | ||||
| RUN echo "#!/bin/sh" > /snap/bin/snapcraft | ||||
| RUN snap_version="$(awk '/^version:/{print $2}' /snap/snapcraft/current/meta/snap.yaml | tr -d \')" && echo "export SNAP_VERSION=\"$snap_version\"" >> /snap/bin/snapcraft | ||||
| RUN echo 'exec "$SNAP/usr/bin/python3" "$SNAP/bin/snapcraft" "$@"' >> /snap/bin/snapcraft | ||||
| RUN echo 'exec "/snap/snapcraft/current/bin/python3" -m snapcraft "$@"' >> /snap/bin/snapcraft | ||||
| RUN chmod +x /snap/bin/snapcraft | ||||
|  | ||||
|  | ||||
| # Multi-stage build, only need the snaps from the builder. Copy them one at a | ||||
| # time so they can be cached. | ||||
| FROM ubuntu:$UBUNTU | ||||
| COPY --from=builder /snap/core /snap/core | ||||
|  | ||||
| COPY --from=builder /snap/core22 /snap/core22 | ||||
| COPY --from=builder /snap/core20 /snap/core20 | ||||
| COPY --from=builder /snap/lxd /snap/lxd | ||||
| COPY --from=builder /snap/core24 /snap/core24 | ||||
| COPY --from=builder /snap/snapcraft /snap/snapcraft | ||||
| COPY --from=builder /snap/bin/snapcraft /snap/bin/snapcraft | ||||
|  | ||||
| # Generate locale and install dependencies. | ||||
| RUN apt-get update && apt-get dist-upgrade --yes && apt-get install --yes snapd sudo apt-transport-https locales && locale-gen en_US.UTF-8 | ||||
| RUN apt-get update && apt-get dist-upgrade --yes && apt-get install --yes snapd sudo apt-transport-https locales wget && locale-gen en_US.UTF-8 | ||||
|  | ||||
| # Set the proper environment. | ||||
| ENV LANG="en_US.UTF-8" | ||||
| @ -79,6 +59,7 @@ ENV PATH="/snap/bin:/snap/snapcraft/current/usr/bin:/snap/snapcraft/current/libe | ||||
| ENV SNAP="/snap/snapcraft/current" | ||||
| ENV SNAP_NAME="snapcraft" | ||||
| ENV SNAP_ARCH="amd64" | ||||
| ENV SNAPCRAFT_BUILD_ENVIRONMENT=host | ||||
|  | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-snap.sh /opt/build-package-snap.sh | ||||
| CMD ["/opt/build-package-snap.sh"] | ||||
|  | ||||
| @ -8,7 +8,12 @@ RUN apt-get update && \ | ||||
|         devscripts \ | ||||
|         equivs \ | ||||
|         python-is-python3 \ | ||||
|         wget | ||||
|         wget \ | ||||
|         curl | ||||
|  | ||||
| # nodejs | ||||
| RUN curl -sL https://deb.nodesource.com/setup_20.x | bash - | ||||
| RUN apt install nodejs -y | ||||
|  | ||||
| ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh | ||||
|  | ||||
| @ -18,5 +23,6 @@ RUN /opt/prebuild-package-debian.sh qt-deps | ||||
| COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control | ||||
| RUN /opt/prebuild-package-debian.sh jami-deps | ||||
|  | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh | ||||
| CMD ["/opt/build-package-debian.sh"] | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| FROM ubuntu:20.04 | ||||
| FROM ubuntu:24.04 | ||||
| 
 | ||||
| ENV DEBIAN_FRONTEND=noninteractive | ||||
| 
 | ||||
| @ -8,12 +8,10 @@ RUN apt-get update && \ | ||||
|         devscripts \ | ||||
|         equivs \ | ||||
|         python-is-python3 \ | ||||
|         wget \ | ||||
|         curl | ||||
|         wget | ||||
| 
 | ||||
| # nodejs | ||||
| RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - | ||||
| RUN apt install nodejs -y | ||||
| ADD extras/packaging/gnu-linux/scripts/install-gcc-debian.sh /opt/install-gcc-debian.sh | ||||
| RUN /opt/install-gcc-debian.sh 13 | ||||
| 
 | ||||
| ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh | ||||
| 
 | ||||
| @ -23,9 +21,6 @@ RUN /opt/prebuild-package-debian.sh qt-deps | ||||
| COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control | ||||
| RUN /opt/prebuild-package-debian.sh jami-deps | ||||
| 
 | ||||
| # Install CMake 3.19 for Qt 6 | ||||
| ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh | ||||
| RUN /opt/install-cmake.sh | ||||
| 
 | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh | ||||
| CMD ["/opt/build-package-debian.sh"] | ||||
| @ -1,4 +1,4 @@ | ||||
| FROM ubuntu:22.10 | ||||
| FROM ubuntu:25.04 | ||||
| 
 | ||||
| ENV DEBIAN_FRONTEND=noninteractive | ||||
| 
 | ||||
| @ -18,5 +18,6 @@ RUN /opt/prebuild-package-debian.sh qt-deps | ||||
| COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control | ||||
| RUN /opt/prebuild-package-debian.sh jami-deps | ||||
| 
 | ||||
| ADD extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh /opt/install-ffmpeg-for-qt.sh | ||||
| ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh | ||||
| CMD ["/opt/build-package-debian.sh"] | ||||
| @ -1,7 +1,5 @@ | ||||
| #!/bin/sh | ||||
| # Copyright (C) 2021-2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com> | ||||
| # Copyright (C) 2021-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
|  | ||||
| @ -1,6 +1,4 @@ | ||||
| ;;; Copyright (C) 2021-2023 Savoir-faire Linux Inc. | ||||
| ;;; | ||||
| ;;; Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com> | ||||
| ;;; Copyright (C) 2021-2025 Savoir-faire Linux Inc. | ||||
| ;;; | ||||
| ;;; 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 | ||||
|  | ||||
| @ -24,7 +24,10 @@ | ||||
|  (list | ||||
|   ;; Minimal requirements of the daemon contrib build system. | ||||
|   "coreutils" | ||||
|   "gcc-toolchain" | ||||
|   ;; When using GCC 15, Jami fails to link with errors like: | ||||
|   ;; ld: CMakeFiles/jami.dir/src/app/main.cpp.o:(.rodata+0x0): | ||||
|   ;; multiple definition of `QtPrivate::IsFloatType_v<_Float16>' | ||||
|   "gcc-toolchain@14" | ||||
|   "git-minimal" | ||||
|   "grep" | ||||
|   "gzip" | ||||
| @ -42,18 +45,12 @@ | ||||
|   "alsa-lib" | ||||
|   "autoconf" | ||||
|   "automake" | ||||
|   "asio" | ||||
|   "bash" | ||||
|   "bzip2" | ||||
|   "cmake" | ||||
|   "dbus" | ||||
|   ;; Bundled because broken with GCC 7 upstream (unmaintained).  When | ||||
|   ;; attempting to use it, it would cause confusing errors such as | ||||
|   ;; "ld: ../src/.libs/libring.a(libupnpcontrol_la-upnp_context.o): in | ||||
|   ;; function `jami::upnp::UPnPContext::updateMappingList(bool)': | ||||
|   ;; upnp_context.cpp:(.text+0xa4be): undefined reference to | ||||
|   ;; `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, | ||||
|   ;; std::allocator<char> >::basic_ostringstream()' | ||||
|   ;;"dbus-c++"                          ;for dbusxx-xml2cpp | ||||
|   ;;"dhtnet"                            ;bundled because tightly coupled | ||||
|   "diffutils" | ||||
|   "doxygen" | ||||
|   "eudev"                               ;udev library | ||||
| @ -67,6 +64,7 @@ | ||||
|   "gsm" | ||||
|   "gtk-doc" | ||||
|   "http-parser" | ||||
|   "jack@0" | ||||
|   "jsoncpp" | ||||
|   "libarchive" | ||||
|   "libgit2" | ||||
| @ -84,16 +82,24 @@ | ||||
|   "patch" | ||||
|   "pcre" | ||||
|   "perl" | ||||
|   "pipewire" | ||||
|   ;;"pjproject"                         ;bundled because patched | ||||
|   "pulseaudio" | ||||
|   "sdbus-c++@1" | ||||
|   "speex" | ||||
|   "speexdsp" | ||||
|   "webrtc-audio-processing@0" | ||||
|   "which" | ||||
|   "yaml-cpp" | ||||
|   "yasm" | ||||
|  | ||||
|   ;; For the Qt client. | ||||
|   "glib" | ||||
|   "hunspell" | ||||
|   "libnotify" | ||||
|   "libxcb" | ||||
|   "libxkbcommon" | ||||
|   "md4c" | ||||
|   "network-manager"                     ;libnm | ||||
|   "qrencode" | ||||
|   "qtbase" | ||||
| @ -103,10 +109,13 @@ | ||||
|   "qtnetworkauth" | ||||
|   "qtpositioning" | ||||
|   "qtsvg" | ||||
|   "qwindowkit" | ||||
|   "qttools" | ||||
|   "qtwebchannel" | ||||
|   "qtwebengine" | ||||
|   "tidy-html" | ||||
|   "vulkan-headers" | ||||
|   "zxing-cpp" | ||||
|  | ||||
|   ;; For tests and debugging. | ||||
|   "file" | ||||
|  | ||||
| @ -53,6 +53,7 @@ Build-Depends: debhelper (>= 9), | ||||
|                libvulkan-dev [linux-any], | ||||
|                libx11-dev, | ||||
|                libx11-xcb-dev, | ||||
|                libsm-dev, | ||||
|                libxcb-glx0-dev, | ||||
|                libxcb-icccm4-dev, | ||||
|                libxcb-image0-dev, | ||||
| @ -91,6 +92,7 @@ Build-Depends: debhelper (>= 9), | ||||
|                libgl1-mesa-dri, | ||||
| # pkg-kde-tools (>= 0.15.17~), | ||||
|                python3:any, | ||||
|                python3-bs4, | ||||
|                python3-html5lib, | ||||
| # qtbase5-private-dev (>= 5.15.2+dfsg~), | ||||
|                xauth <!nocheck>, | ||||
| @ -259,7 +261,7 @@ Build-Depends: debhelper (>= 9), | ||||
|                gperf, | ||||
|                khronos-api, | ||||
| # libasound2-dev [linux-any], | ||||
|                libavcodec-dev (>= 7:3.4.8~), | ||||
|                libavcodec-dev (>= 7:3.4.8~) | libavcodec-extra-dev (>= 7:3.4.8~), | ||||
|                libavformat-dev (>= 7:3.4.8~), | ||||
|                libavutil-dev (>= 7:3.4.8~), | ||||
|                libcap-dev [linux-any], | ||||
| @ -298,10 +300,11 @@ Build-Depends: debhelper (>= 9), | ||||
| # libvpx-dev (>= 1.8), | ||||
|                libvpx-dev, | ||||
|                libwebp-dev, | ||||
| # libx11-xcb-dev, | ||||
|                libx11-xcb-dev, | ||||
|                libxcb-dri3-dev, | ||||
| # libxcomposite-dev, | ||||
|                libxcursor-dev, | ||||
|                libxcb-cursor-dev, | ||||
|                libxdamage-dev, | ||||
|                libxml2-dev, | ||||
|                libxnvctrl-dev, | ||||
| @ -312,7 +315,7 @@ Build-Depends: debhelper (>= 9), | ||||
|                libxtst-dev, | ||||
|                mesa-common-dev, | ||||
|                ninja-build, | ||||
|                nodejs (>= 10.19), | ||||
|                nodejs (>= 14.21), | ||||
| # pkg-config, | ||||
| # pkg-kde-tools, | ||||
|                protobuf-compiler, | ||||
|  | ||||
| @ -1,740 +0,0 @@ | ||||
|  qtwebengine/src/3rdparty/chromium/base/debug/profiler.h                                                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h                                                         | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/base/logging.h                                                                   | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc                                                      | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h                               | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h                          | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc                                | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h                                 | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h                                     | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h                        | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/extensions/common/constants.h                                                    | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h                             | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h                                     | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h                                                    | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h                                                     | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h                                                            | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/net/base/parse_number.h                                                          | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h                                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h                   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h                 | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h                                                   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h                        | 6 ++++-- | ||||
|  qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h              | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h                                   | 2 +- | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h                                   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h          | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h                   | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h  | 4 ++-- | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h     | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h                                      | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h                        | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h                                   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h                                    | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h                                    | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h                                 | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc                                  | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h                                  | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp                                      | 4 ++++ | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h                       | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h                                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h                          | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h                                   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h                                                | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h                                                   | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h                                                | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h                                                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h                                                             | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h                                         | 1 + | ||||
|  qtwebengine/src/core/browsing_data_remover_delegate_qt.h                                                           | 2 ++ | ||||
|  54 files changed, 71 insertions(+), 5 deletions(-) | ||||
|  | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h b/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h | ||||
| index 1229e06234..c7ed55e70f 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef BASE_DEBUG_PROFILER_H_ | ||||
|  #define BASE_DEBUG_PROFILER_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <stddef.h> | ||||
|   | ||||
|  #include <string> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h b/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h | ||||
| index 60c3c5c474..6c8021cfde 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h | ||||
| @@ -7,6 +7,7 @@ | ||||
|   | ||||
|  #include <stddef.h> | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <iosfwd> | ||||
|  #include <string> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/base/logging.h b/qtwebengine/src/3rdparty/chromium/base/logging.h | ||||
| index a3ff92f0fd..c272f796a9 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/base/logging.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/base/logging.h | ||||
| @@ -7,6 +7,8 @@ | ||||
|   | ||||
|  #include <stddef.h> | ||||
|   | ||||
| + | ||||
| +#include <cstdint> | ||||
|  #include <cassert> | ||||
|  #include <cstdint> | ||||
|  #include <sstream> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc b/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc | ||||
| index 96f8c3bd7c..c3f087b1a9 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc | ||||
| @@ -6,6 +6,8 @@ | ||||
|   | ||||
|  #include "ui/gfx/animation/keyframe/target_property.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace cc { | ||||
|   | ||||
|  static_assert(TargetProperty::LAST_TARGET_PROPERTY < | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h b/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h | ||||
| index 2aba73ebcb..2e028fddcf 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef COMPONENTS_VIZ_COMMON_SHARED_ELEMENT_RESOURCE_ID_H_ | ||||
|  #define COMPONENTS_VIZ_COMMON_SHARED_ELEMENT_RESOURCE_ID_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h b/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h | ||||
| index 3069c858d3..f4614b73c6 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_ | ||||
|  #define CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|  #include "base/callback_forward.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc | ||||
| index 80fd26f4f4..3f08972a7a 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc | ||||
| @@ -3,6 +3,7 @@ | ||||
|  // found in the LICENSE file. | ||||
|   | ||||
|  #include "device/base/synchronization/one_writer_seqlock.h" | ||||
| +#include <cstdint> | ||||
|   | ||||
|  #include "base/threading/platform_thread.h" | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h | ||||
| index 6a3eeda565..525301379c 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h | ||||
| @@ -6,6 +6,7 @@ | ||||
|  #define DEVICE_BASE_SYNCHRONIZATION_ONE_WRITER_SEQLOCK_H_ | ||||
|   | ||||
|  #include <atomic> | ||||
| +#include <cstdint> | ||||
|   | ||||
|  #include "base/atomicops.h" | ||||
|  #include "base/check.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h b/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h | ||||
| index 3cf2914e10..4b0552440c 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_ | ||||
|  #define DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <ostream> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h | ||||
| index c24205c402..ee67ecf189 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef EXTENSIONS_BROWSER_API_AUDIO_AUDIO_DEVICE_ID_CALCULATOR_H_ | ||||
|  #define EXTENSIONS_BROWSER_API_AUDIO_AUDIO_DEVICE_ID_CALCULATOR_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <map> | ||||
|  #include <string> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h b/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h | ||||
| index 9ac68e2be9..ef2761020d 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h | ||||
| @@ -10,6 +10,8 @@ | ||||
|  #include "build/chromeos_buildflags.h" | ||||
|  #include "extensions/common/extensions_export.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace extensions { | ||||
|   | ||||
|  // Scheme we serve extension content from. | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h b/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h | ||||
| index 4ba8de8460..6352b90196 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef EXTENSIONS_RENDERER_BINDINGS_API_INVOCATION_ERRORS_H_ | ||||
|  #define EXTENSIONS_RENDERER_BINDINGS_API_INVOCATION_ERRORS_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <set> | ||||
|  #include <string> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h | ||||
| index a9c7adb5b5..943bd4e470 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h | ||||
| @@ -7,6 +7,8 @@ | ||||
|   | ||||
|  #include <stdint.h> | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace gpu { | ||||
|  namespace webgpu { | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h | ||||
| index 027f1a5af3..70759b2ae4 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_ | ||||
|  #define GPU_CONFIG_GPU_FEATURE_INFO_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h | ||||
| index 3ea2191b50..0a1ae11202 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef GPU_CONFIG_GPU_PREFERENCES_H_ | ||||
|  #define GPU_CONFIG_GPU_PREFERENCES_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <stddef.h> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h | ||||
| index f72970c67a..d7f0b7d492 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h | ||||
| @@ -5,6 +5,8 @@ | ||||
|  #ifndef GPU_CONFIG_GPU_UTIL_H_ | ||||
|  #define GPU_CONFIG_GPU_UTIL_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  #include "build/build_config.h" | ||||
|  #include "gpu/config/gpu_feature_info.h" | ||||
|  #include "gpu/gpu_export.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h b/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h | ||||
| index 4e49ab7112..e99d2dd7aa 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h | ||||
| @@ -7,6 +7,7 @@ | ||||
|   | ||||
|  #include "base/strings/string_piece.h" | ||||
|  #include "net/base/net_export.h" | ||||
| +#include <cstdint> | ||||
|   | ||||
|  // This file contains utility functions for parsing numbers, in the context of | ||||
|  // network protocols. | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h b/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h | ||||
| index 2e9c319a3d..4d723d18f2 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h | ||||
| @@ -6,6 +6,7 @@ | ||||
|  #define NET_COOKIES_COOKIE_INCLUSION_STATUS_H_ | ||||
|   | ||||
|  #include <bitset> | ||||
| +#include <cstdint> | ||||
|  #include <ostream> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h | ||||
| index 6a300ed0c0..3e30f1cb02 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_ | ||||
|  #define QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <vector> | ||||
|   | ||||
|  #include "absl/strings/string_view.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h | ||||
| index 52f1501728..db4d310849 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_ | ||||
|  #define QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h b/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h | ||||
| index 138ca2efec..08f06e7b8c 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_ | ||||
|  #define PDF_DOCUMENT_ATTACHMENT_INFO_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|   | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h | ||||
| index b4fdb9a6d3..375d3ef327 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h | ||||
| @@ -38,6 +38,10 @@ namespace pp { | ||||
|  /// As a further optimization, we can add support for this later. | ||||
|  class ThreadSafeThreadTraits { | ||||
|   public: | ||||
| + | ||||
| +  typedef pp::Lock Lock; | ||||
| +  typedef pp::AutoLock AutoLock; | ||||
| + | ||||
|    class RefCount { | ||||
|     public: | ||||
|      /// Default constructor. In debug mode, this checks that the object is being | ||||
| @@ -67,8 +71,6 @@ class ThreadSafeThreadTraits { | ||||
|      int32_t ref_; | ||||
|    }; | ||||
|   | ||||
| -  typedef pp::Lock Lock; | ||||
| -  typedef pp::AutoLock AutoLock; | ||||
|  }; | ||||
|   | ||||
|  /// The non-thread-safe version of thread traits. Using this class as the | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h b/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h | ||||
| index 0aad3ac782..7f7a1057d7 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_ | ||||
|  #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <bitset> | ||||
|  #include <string> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h b/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h | ||||
| index c47536d63e..443f47afd0 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h | ||||
| @@ -18,6 +18,7 @@ | ||||
|   | ||||
|  #include <limits.h> | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <cstddef> | ||||
|  #include <cstring> | ||||
|  #include <ostream> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h | ||||
| index e13aa2221d..0ce848486d 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h | ||||
| @@ -7,7 +7,7 @@ | ||||
|  #define GLSLANG_SHADERLANG_H_ | ||||
|   | ||||
|  #include <stddef.h> | ||||
| - | ||||
| +#include <cstdint> | ||||
|  #include "KHR/khrplatform.h" | ||||
|   | ||||
|  #include <array> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h | ||||
| index 18175e15c7..28332857bc 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h | ||||
| @@ -14,6 +14,7 @@ | ||||
|  #include <array> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
| +#include <cstdint> | ||||
|   | ||||
|  // This type is defined here to simplify ANGLE's integration with glslang for SPIR-V. | ||||
|  using ShCompileOptions = uint64_t; | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h | ||||
| index c63049b174..82b27837b5 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h | ||||
| @@ -6,6 +6,7 @@ | ||||
|  #define THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_ORIGIN_TRIAL_PUBLIC_KEY_H_ | ||||
|   | ||||
|  #include <array> | ||||
| +#include <cstdint> | ||||
|   | ||||
|  namespace blink { | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h | ||||
| index 14c5548766..43c9a8d6a5 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h | ||||
| @@ -5,6 +5,8 @@ | ||||
|  #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DARK_MODE_TYPES_H_ | ||||
|  #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DARK_MODE_TYPES_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace blink { | ||||
|   | ||||
|  enum class DarkModeResult : uint8_t { | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h | ||||
| index 80b3150b67..6377196230 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h | ||||
| @@ -116,7 +116,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode | ||||
|   | ||||
|      // An identifier for a document transition shared element. `id.valid()` | ||||
|      // returns true if this has been set, and false otherwise. | ||||
| -    DocumentTransitionSharedElementId document_transition_shared_element_id; | ||||
| +    cc::DocumentTransitionSharedElementId document_transition_shared_element_id; | ||||
|   | ||||
|      // An identifier to tag shared element resources generated and cached in the | ||||
|      // Viz process. This generated resource can be used as content for other | ||||
| @@ -285,7 +285,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode | ||||
|      return state_.compositor_element_id; | ||||
|    } | ||||
|   | ||||
| -  const blink::DocumentTransitionSharedElementId& | ||||
| +  const cc::DocumentTransitionSharedElementId& | ||||
|    DocumentTransitionSharedElementId() const { | ||||
|      return state_.document_transition_shared_element_id; | ||||
|    } | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h b/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h | ||||
| index c7e4f2b378..f30ce91b36 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h | ||||
| @@ -34,6 +34,7 @@ | ||||
|  #include <sys/types.h> | ||||
|   | ||||
|  #include <string> | ||||
| +#include <cstdint> | ||||
|   | ||||
|  #include "client/linux/handler/microdump_extra_info.h" | ||||
|  #include "common/using_std_string.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h | ||||
| index 2d58d76cb6..139af564ea 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h | ||||
| @@ -18,6 +18,7 @@ | ||||
|  #include "dawn/common/TypedInteger.h" | ||||
|  #include "dawn/common/ityp_array.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <bitset> | ||||
|  #include <iostream> | ||||
|  #include <limits> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h | ||||
| index 374bd8302a..0884eb2a19 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #ifndef SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_ | ||||
|  #define SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h | ||||
| index fa5fc3a7e9..6cec934670 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #ifndef SRC_TINT_READER_SPIRV_NAMER_H_ | ||||
|  #define SRC_TINT_READER_SPIRV_NAMER_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <unordered_map> | ||||
|  #include <vector> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h | ||||
| index f378d57817..98d1336f9a 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #ifndef SRC_TINT_READER_WGSL_LEXER_H_ | ||||
|  #define SRC_TINT_READER_WGSL_LEXER_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|   | ||||
|  #include "src/tint/reader/wgsl/token.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h | ||||
| index 7b5b6754ed..62b1ca7e36 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #ifndef SRC_TINT_READER_WGSL_TOKEN_H_ | ||||
|  #define SRC_TINT_READER_WGSL_TOKEN_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <string_view> | ||||
|  #include <variant>  // NOLINT: cpplint doesn't recognise this | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc | ||||
| index 4be648b37a..cac7238ef2 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc | ||||
| @@ -14,6 +14,7 @@ | ||||
|   | ||||
|  #include "src/tint/writer/spirv/instruction.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <utility> | ||||
|   | ||||
|  namespace tint::writer::spirv { | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h | ||||
| index 46a5deb55b..4c3080ff25 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #ifndef SRC_TINT_WRITER_SPIRV_OPERAND_H_ | ||||
|  #define SRC_TINT_WRITER_SPIRV_OPERAND_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc | ||||
| index a3099e15db..2e6f0eea70 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc | ||||
| @@ -30,6 +30,7 @@ | ||||
|  #include <cstddef> | ||||
|  #include <cstdint> | ||||
|  #include <cstring> | ||||
| +#include <cstdio> | ||||
|  #include <new> | ||||
|  #include <utility> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h b/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h | ||||
| index d2731dac7a..46bc87ef92 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h | ||||
| @@ -5,6 +5,8 @@ | ||||
|  #ifndef CONSTANTS_ANNOTATION_FLAGS_H_ | ||||
|  #define CONSTANTS_ANNOTATION_FLAGS_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace pdfium { | ||||
|  namespace annotation_flags { | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h | ||||
| index 1b4c53815b..472042fabc 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h | ||||
| @@ -18,6 +18,7 @@ | ||||
|  #define INCLUDE_PERFETTO_EXT_BASE_UUID_H_ | ||||
|   | ||||
|  #include <array> | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|   | ||||
|  #include "perfetto/ext/base/optional.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h | ||||
| index c56f0344f9..cd7824929e 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h | ||||
| @@ -20,6 +20,8 @@ | ||||
|  #include "perfetto/ext/base/optional.h" | ||||
|  #include "perfetto/trace_processor/status.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace perfetto { | ||||
|   | ||||
|  namespace protos { | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp | ||||
| index 3164650728..512a26943d 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp | ||||
| @@ -10,6 +10,10 @@ | ||||
|   | ||||
|  #include <algorithm> // std::lower_bound | ||||
|   | ||||
| +#include <string.h> | ||||
| +#include <algorithm> | ||||
| +#include <iterator> | ||||
| + | ||||
|  static constexpr const char* gColorNames[] = { | ||||
|      "aliceblue", | ||||
|      "antiquewhite", | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h b/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h | ||||
| index b7c586b80e..19ccbb024a 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h | ||||
| @@ -146,6 +146,7 @@ available through VmaAllocatorCreateInfo::pRecordSettings. | ||||
|      #endif // #if VMA_VULKAN_VERSION >= 1001000 | ||||
|  #endif // #if defined(__ANDROID__) && VMA_STATIC_VULKAN_FUNCTIONS && VK_NO_PROTOTYPES | ||||
|   | ||||
| +#include <cstdio> | ||||
|  #ifndef VULKAN_H_ | ||||
|      #include <vulkan/vulkan.h> | ||||
|  #endif | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h | ||||
| index 5fd37b4613..ce70405dd2 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h | ||||
| @@ -11,6 +11,7 @@ | ||||
|  #ifndef CALL_RTP_DEMUXER_H_ | ||||
|  #define CALL_RTP_DEMUXER_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <map> | ||||
|  #include <string> | ||||
|  #include <utility> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h | ||||
| index b70ac4aa59..7ba5555647 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h | ||||
| @@ -13,6 +13,7 @@ | ||||
|   | ||||
|  #include <gio/gio.h> | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|   | ||||
|  namespace webrtc { | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h | ||||
| index ca249541d0..534214dbfa 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h | ||||
| @@ -12,6 +12,7 @@ | ||||
|  #ifndef RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_ | ||||
|  #define RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h b/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h | ||||
| index 708d6c98ac..898016d886 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h | ||||
| @@ -8,6 +8,7 @@ | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include "base/component_export.h" | ||||
|  #include "ui/base/ime/text_input_type.h" | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h b/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h | ||||
| index d97a696fd5..68b18d80cd 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef UI_EVENTS_GESTURE_EVENT_DETAILS_H_ | ||||
|  #define UI_EVENTS_GESTURE_EVENT_DETAILS_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string.h> | ||||
|   | ||||
|  #include "base/check_op.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h b/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h | ||||
| index 7ff15f0fc5..136cebc09e 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h | ||||
| @@ -5,6 +5,8 @@ | ||||
|  #ifndef UI_EVENTS_TYPES_SCROLL_TYPES_H_ | ||||
|  #define UI_EVENTS_TYPES_SCROLL_TYPES_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace ui { | ||||
|   | ||||
|  enum class ScrollGranularity : uint8_t { | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h b/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h | ||||
| index 1ad025fec1..adadf96190 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef UI_GFX_LINEAR_GRADIENT_H_ | ||||
|  #define UI_GFX_LINEAR_GRADIENT_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <array> | ||||
|  #include <string> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h | ||||
| index fdac44e31e..a752dba6a2 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef V8_BASE_LOGGING_H_ | ||||
|  #define V8_BASE_LOGGING_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <cstring> | ||||
|  #include <sstream> | ||||
|  #include <string> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| index 61644ffe05..6fbc037437 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef V8_BASE_MACROS_H_ | ||||
|  #define V8_BASE_MACROS_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <limits> | ||||
|  #include <type_traits> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h b/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h | ||||
| index c1d69c18f0..eb33c6816a 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ | ||||
|  #define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|   | ||||
|  // Conversion routines between UT8 and UTF16, used by string-16.{h,cc}. You may | ||||
| diff --git a/qtwebengine/src/core/browsing_data_remover_delegate_qt.h b/qtwebengine/src/core/browsing_data_remover_delegate_qt.h | ||||
| index 4e690ffb19..dfa884cd65 100644 | ||||
| --- a/qtwebengine/src/core/browsing_data_remover_delegate_qt.h | ||||
| +++ b/qtwebengine/src/core/browsing_data_remover_delegate_qt.h | ||||
| @@ -6,6 +6,8 @@ | ||||
|   | ||||
|  #include "content/public/browser/browsing_data_remover_delegate.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace QtWebEngineCore { | ||||
|   | ||||
|  class BrowsingDataRemoverDelegateQt : public content::BrowsingDataRemoverDelegate { | ||||
| @ -0,0 +1,39 @@ | ||||
| From 0d0856252b48895a8d6cad7bff66c904ccfc0725 Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?= | ||||
|  <francois-simon.fauteux-chapleau@savoirfairelinux.com> | ||||
| Date: Wed, 16 Jul 2025 13:49:54 -0400 | ||||
| Subject: [PATCH] qtwebengine: fix build error due to missing chromium | ||||
|  dependency | ||||
|  | ||||
| Error: | ||||
|  | ||||
|     In file included from ../../../3rdparty/chromium/ui/gl/gl_surface.h:30, | ||||
|                      from ../../../3rdparty/chromium/tools/v8_context_snapshot/qt_overrides.cc:13: | ||||
|     ../../../3rdparty/chromium/ui/gl/gl_implementation.h:18:10: fatal error: ui/gl/buildflags.h: No such file or directory | ||||
|        18 | #include "ui/gl/buildflags.h" | ||||
|           |          ^~~~~~~~~~~~~~~~~~~~ | ||||
|     compilation terminated. | ||||
|  | ||||
| Patch taken from: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/637889 | ||||
| --- | ||||
|  .../src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn   | 4 ++++ | ||||
|  1 file changed, 4 insertions(+) | ||||
|  | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn b/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn | ||||
| index 812445d934..97cd46140d 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn | ||||
| @@ -455,6 +455,10 @@ if (is_linux && !is_qtwebengine) { | ||||
|        output_name = "webenginedriver" | ||||
|        deps -= [ "//net/traffic_annotation:test_support" ] | ||||
|   | ||||
| +      if (is_linux || is_mac) { | ||||
| +        deps += [ "//ui/gl:buildflags" ] | ||||
| +      } | ||||
| + | ||||
|        if (is_linux) { | ||||
|          sources += [ | ||||
|            "//content/public/common/content_switches.cc", | ||||
| --  | ||||
| 2.34.1 | ||||
|  | ||||
| @ -0,0 +1,79 @@ | ||||
| From 24dd03e131cd3edc89907a699369562e61d8aa86 Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?= | ||||
|  <francois-simon.fauteux-chapleau@savoirfairelinux.com> | ||||
| Date: Mon, 21 Jul 2025 13:19:58 -0400 | ||||
| Subject: [PATCH] qtwebengine: fix ASSERT_TRIVIALLY_COPYABLE failure | ||||
|  | ||||
| Some compilers don't implement std::is_trivially_copyable correctly, | ||||
| which can cause chromium's build to fail with the following error: | ||||
|  | ||||
|     In file included from ../../../3rdparty/chromium/v8/src/base/bits.h:12, | ||||
|                      from ../../../3rdparty/chromium/v8/src/base/small-vector.h:12, | ||||
|                      from ../../../3rdparty/chromium/v8/src/compiler/turboshaft/graph.h:17, | ||||
|                      from ../../../3rdparty/chromium/v8/src/compiler/turboshaft/analyzer-iterator.h:9, | ||||
|                      from ./../../../3rdparty/chromium/v8/src/compiler/turboshaft/analyzer-iterator.cc:5, | ||||
|                      from gen/v8/v8_turboshaft_jumbo_1.cc:5: | ||||
|     ../../../3rdparty/chromium/v8/src/base/small-vector.h: In instantiation of 'class v8::base::SmallVector<std::pair<const v8::internal::compiler::turboshaft::PhiOp*, const v8::internal::compiler::turboshaft::OpIndex>, 16>': | ||||
|     ../../../3rdparty/chromium/v8/src/compiler/turboshaft/loop-unrolling-reducer.h:433:11:   required from here | ||||
|     ../../../3rdparty/chromium/v8/src/base/macros.h:206:55: error: static assertion failed: T should be trivially copyable | ||||
|       206 |   static_assert(::v8::base::is_trivially_copyable<T>::value, \ | ||||
|           |                                                       ^~~~~ | ||||
|     ../../../3rdparty/chromium/v8/src/base/small-vector.h:25:3: note: in expansion of macro 'ASSERT_TRIVIALLY_COPYABLE' | ||||
|        25 |   ASSERT_TRIVIALLY_COPYABLE(T); | ||||
|           |   ^~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|     ../../../3rdparty/chromium/v8/src/base/macros.h:206:55: note: 'v8::base::is_trivially_copyable<std::pair<const v8::internal::compiler::turboshaft::PhiOp*, const v8::internal::compiler::turboshaft::OpIndex> >::value' evaluates to false | ||||
|       206 |   static_assert(::v8::base::is_trivially_copyable<T>::value, \ | ||||
|           |                                                       ^~~~~ | ||||
|     ../../../3rdparty/chromium/v8/src/base/small-vector.h:25:3: note: in expansion of macro 'ASSERT_TRIVIALLY_COPYABLE' | ||||
|        25 |   ASSERT_TRIVIALLY_COPYABLE(T); | ||||
|           |   ^~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| References: | ||||
| https://chromium-review.googlesource.com/c/v8/v8/+/5679182 | ||||
| https://chromium-review.googlesource.com/c/v8/v8/+/5872655 | ||||
| https://github.com/rubyjs/libv8-node/pull/57 | ||||
| https://github.com/nodejs/node/issues/54576 | ||||
| --- | ||||
|  qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h       | 3 ++- | ||||
|  qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h | 4 ++-- | ||||
|  2 files changed, 4 insertions(+), 3 deletions(-) | ||||
|  | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| index 93a99ec136..88c6555189 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| @@ -173,7 +173,8 @@ namespace base { | ||||
|  // base::is_trivially_copyable will differ for these cases. | ||||
|  template <typename T> | ||||
|  struct is_trivially_copyable { | ||||
| -#if V8_CC_MSVC | ||||
| +#if V8_CC_MSVC || (__GNUC__ == 12 && __GNUC_MINOR__ <= 2) || \ | ||||
| +    (defined(__clang__) && __clang_major__ <= 17) | ||||
|    // Unfortunately, MSVC 2015 is broken in that std::is_trivially_copyable can | ||||
|    // be false even though it should be true according to the standard. | ||||
|    // (status at 2018-02-26, observed on the msvc waterfall bot). | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h | ||||
| index b1b5d64198..ce2e003fb9 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h | ||||
| @@ -22,7 +22,7 @@ template <typename T, size_t kSize, typename Allocator = std::allocator<T>> | ||||
|  class SmallVector { | ||||
|    // Currently only support trivially copyable and trivially destructible data | ||||
|    // types, as it uses memcpy to copy elements and never calls destructors. | ||||
| -  ASSERT_TRIVIALLY_COPYABLE(T); | ||||
| +  // ASSERT_TRIVIALLY_COPYABLE(T); | ||||
|    static_assert(std::is_trivially_destructible<T>::value); | ||||
|   | ||||
|   public: | ||||
| @@ -193,7 +193,7 @@ class SmallVector { | ||||
|   | ||||
|    void resize_no_init(size_t new_size) { | ||||
|      // Resizing without initialization is safe if T is trivially copyable. | ||||
| -    ASSERT_TRIVIALLY_COPYABLE(T); | ||||
| +    // ASSERT_TRIVIALLY_COPYABLE(T); | ||||
|      if (new_size > capacity()) Grow(new_size); | ||||
|      end_ = begin_ + new_size; | ||||
|    } | ||||
| --  | ||||
| 2.34.1 | ||||
|  | ||||
| @ -0,0 +1,49 @@ | ||||
| From 5c247c7a084661932969acf2f7103096b8b0d6b4 Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?= | ||||
|  <francois-simon.fauteux-chapleau@savoirfairelinux.com> | ||||
| Date: Tue, 22 Jul 2025 13:40:55 -0400 | ||||
| Subject: [PATCH] qtwebengine: fix zygote_communication_linux dependency | ||||
|  | ||||
| Commit 42e09c7bea of qtwebengine-chromium added | ||||
| content/public/browser/child_process_host.h to the list of header files | ||||
| included in zygote_communication_linux.cc, which can cause the build to | ||||
| fail with the following error: | ||||
|  | ||||
|     In file included from ../../../3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc:21: | ||||
|     ../../../3rdparty/chromium/content/public/browser/child_process_host.h:17:10: fatal error: content/common/buildflags.h: No such file or directory | ||||
|        17 | #include "content/common/buildflags.h" | ||||
|           |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| --- | ||||
|  .../content/common/zygote/zygote_communication_linux.cc  | 9 ++++++--- | ||||
|  1 file changed, 6 insertions(+), 3 deletions(-) | ||||
|  | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc b/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc | ||||
| index 5bd9a53568..ff883d59e4 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc | ||||
| @@ -18,7 +18,7 @@ | ||||
|  #include "base/posix/eintr_wrapper.h" | ||||
|  #include "base/posix/unix_domain_socket.h" | ||||
|  #include "content/common/zygote/zygote_commands_linux.h" | ||||
| -#include "content/public/browser/child_process_host.h" | ||||
| +#include "content/public/common/content_paths.h" | ||||
|  #include "content/public/common/content_switches.h" | ||||
|  #include "content/public/common/result_codes.h" | ||||
|  #include "sandbox/policy/switches.h" | ||||
| @@ -237,8 +237,11 @@ void ZygoteCommunication::Init( | ||||
|      base::OnceCallback<pid_t(base::CommandLine*, base::ScopedFD*)> launcher) { | ||||
|    CHECK(!init_); | ||||
|   | ||||
| -  base::FilePath chrome_path = content::ChildProcessHost::GetChildPath( | ||||
| -      content::ChildProcessHost::CHILD_NORMAL); | ||||
| +  base::FilePath chrome_path = base::CommandLine::ForCurrentProcess()->GetSwitchValuePath( | ||||
| +      switches::kBrowserSubprocessPath); | ||||
| +  if (chrome_path.empty()) { | ||||
| +    base::PathService::Get(CHILD_PROCESS_EXE, &chrome_path); | ||||
| +  } | ||||
|   | ||||
|    base::CommandLine cmd_line(chrome_path); | ||||
|    cmd_line.AppendSwitchASCII(switches::kProcessType, switches::kZygoteProcess); | ||||
| --  | ||||
| 2.34.1 | ||||
|  | ||||
| @ -1 +1,3 @@ | ||||
| 0001-fix-gcc13.patch | ||||
| 0001-qtwebengine-fix-build-error-due-to-missing-chromium-dependency.patch | ||||
| 0002-qtwebengine-fix-ASSERT_TRIVIALLY_COPYABLE-failure.patch | ||||
| 0003-qtwebengine-fix-zygote_communication_linux-dependency.patch | ||||
| @ -12,10 +12,14 @@ override_dh_auto_configure: | ||||
| 	  -confirm-license \ | ||||
| 	  -nomake examples \ | ||||
| 	  -nomake tests \ | ||||
| 	  -prefix "${QT_JAMI_PREFIX}" | ||||
| 	  -prefix "${QT_JAMI_PREFIX}" \ | ||||
| 	  -- -DFFMPEG_DIR=/opt/libqt-jami-ffmpeg -DQT_DEPLOY_FFMPEG=ON | ||||
|  | ||||
| override_dh_auto_build: | ||||
| 	cmake --build . --parallel | ||||
|  | ||||
| override_dh_auto_install: | ||||
| 	cmake --install . --prefix $(CURDIR)/debian/tmp/${QT_JAMI_PREFIX} | ||||
|  | ||||
| override_dh_shlibdeps: | ||||
| 	dh_shlibdeps -v -l$(CURDIR)/debian/libqt-jami/usr/lib/libqt-jami/lib | ||||
|  | ||||
| @ -16,13 +16,13 @@ Build-Depends: debhelper (>= 9), | ||||
|                libayatana-appindicator3-dev | libappindicator3-dev, | ||||
| # daemon | ||||
|                libdbus-1-dev, | ||||
|                libdbus-c++-dev, | ||||
|                libsystemd-dev, | ||||
|                libupnp-dev, | ||||
|                libgnutls28-dev, | ||||
|                libpulse-dev, | ||||
|                libasound2-dev, | ||||
|                libexpat1-dev, | ||||
|                libpcre3-dev, | ||||
|                libpcre3-dev | libpcre2-dev, | ||||
|                libyaml-cpp-dev, | ||||
|                libboost-dev, | ||||
|                libxext-dev, | ||||
| @ -30,7 +30,7 @@ Build-Depends: debhelper (>= 9), | ||||
|                libspeex-dev, | ||||
|                libspeexdsp-dev, | ||||
|                uuid-dev, | ||||
|                libavcodec-dev, | ||||
|                libavcodec-dev | libavcodec-extra-dev, | ||||
|                libavutil-dev, | ||||
|                libavformat-dev, | ||||
|                libswscale-dev, | ||||
| @ -45,6 +45,8 @@ Build-Depends: debhelper (>= 9), | ||||
|                libvdpau-dev, | ||||
|                libssl-dev, | ||||
|                libargon2-dev | libargon2-0-dev, | ||||
| # TODO: remove libpipewire-0.2-dev once we stop supporting Ubuntu 20.04 | ||||
|                libpipewire-0.3-dev | libpipewire-0.2-dev, | ||||
| # other | ||||
|                nasm, | ||||
|                yasm, | ||||
| @ -68,7 +70,7 @@ Depends: gnupg, | ||||
| Replaces: jami, | ||||
|           jami-libclient, | ||||
|           jami-daemon, | ||||
|           libqt-jami (>= 6.2.3), | ||||
|           libqt-jami (>= 6.6.1), | ||||
| Conflicts: jami, | ||||
|            jami-libclient, | ||||
|            jami-libclient-gnome, | ||||
| @ -84,7 +86,7 @@ Architecture: any | ||||
| Depends: ${shlibs:Depends}, | ||||
|          ${misc:Depends}, | ||||
|          jami-daemon (=${binary:Version}), | ||||
|          libqt-jami (>= 6.2.3) | ||||
|          libqt-jami (>= 6.6.1) | ||||
| Provides: jami-qt | ||||
| Replaces: jami-all, | ||||
|           jami-libclient (<= 20220516.0214.9b42ad3~dfsg1-1) | ||||
|  | ||||
| @ -3,7 +3,7 @@ Upstream-Name: jami | ||||
| Upstream-Contact: Amin Bandali <bandali@gnu.org> | ||||
| Source: https://dl.jami.net/release/tarballs/ | ||||
| Files: * | ||||
| Copyright: 2004-2023 Savoir-faire Linux Inc. | ||||
| Copyright: 2004-2025 Savoir-faire Linux Inc. | ||||
| License: GPL-3+ | ||||
| Comment: Upstream embeds everything that is needed to build Jami inside the release tarball. | ||||
|  Everything that is already in Debian has been removed. | ||||
| @ -50,7 +50,7 @@ Files: daemon/src/media/audio/opensl/audio_common.h | ||||
|        daemon/src/media/audio/opensl/audio_recorder.h | ||||
|        daemon/src/media/audio/opensl/buf_manager.h | ||||
| Copyright: 2015 The Android Open Source Project | ||||
|            2015-2023 Savoir-faire Linux Inc. | ||||
|            2015-2024 Savoir-faire Linux Inc. | ||||
| License: Apache-2.0 | ||||
|  | ||||
| Files: daemon/extras/tools/bootstrap | ||||
|  | ||||
| @ -93,14 +93,14 @@ if [ -f /etc/os-release ]; then | ||||
|     # Set-up Jami repository end tag | ||||
|     if [ "${VERSION_CODENAME}" = "bullseye" ] || [ "${ID}_${VERSION_ID}" = "debian_11" ]; then | ||||
|         ENDTAG="debian_11" | ||||
|     elif [ "${UBUNTU_CODENAME}" = "focal" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_20.04" ]; then | ||||
|         ENDTAG="ubuntu_20.04" | ||||
|     elif [ "${VERSION_CODENAME}" = "bookworm" ] || [ "${ID}_${VERSION_ID}" = "debian_12" ]; then | ||||
|         ENDTAG="debian_12" | ||||
|     elif [ "${UBUNTU_CODENAME}" = "jammy" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_22.04" ]; then | ||||
|         ENDTAG="ubuntu_22.04" | ||||
|     elif [ "${UBUNTU_CODENAME}" = "kinetic" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_22.10" ]; then | ||||
|         ENDTAG="ubuntu_22.10" | ||||
|     elif [ "${UBUNTU_CODENAME}" = "lunar" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_23.04" ]; then | ||||
|         ENDTAG="ubuntu_23.04" | ||||
|     elif [ "${UBUNTU_CODENAME}" = "noble" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_24.04" ]; then | ||||
|         ENDTAG="ubuntu_24.04" | ||||
|     elif [ "${UBUNTU_CODENAME}" = "plucky" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_25.04" ]; then | ||||
|         ENDTAG="ubuntu_25.04" | ||||
|     elif [ "${ID}" = "debian" ] && \ | ||||
|              [ "$(command -v lsb_release)" ] && \ | ||||
|              [ "$(lsb_release -rs)" = "testing" ]; then | ||||
|  | ||||
| @ -45,7 +45,7 @@ QT_JAMI_PREFIX := ${QT_JAMI_PREFIX} | ||||
| export PATH := $(QT_JAMI_PREFIX)/bin:${PATH} | ||||
| export LD_LIBRARY_PATH := $(QT_JAMI_PREFIX)/lib:${LD_LIBRARY_PATH} | ||||
| export PKG_CONFIG_PATH := $(QT_JAMI_PREFIX)/lib/pkgconfig:${PKG_CONFIG_PATH} | ||||
| export CMAKE_PREFIX_PATH := $(QT_JAMI_PREFIX)/lib/cmake:${CMAKE_PREFIX_PATH} | ||||
| export CMAKE_PREFIX_PATH := $(QT_JAMI_PREFIX):${CMAKE_PREFIX_PATH} | ||||
| export CFLAGS := $(CFLAGS) -fno-lto | ||||
| export CXXFLAGS := $(CXXFLAGS) -fno-lto | ||||
|  | ||||
| @ -74,7 +74,7 @@ override_dh_auto_build: | ||||
| 	  --disable-gsm \ | ||||
| 	  --disable-speexdsp \ | ||||
| 	  --disable-natpmp  \ | ||||
| 	  --enable-gnutls $(BUNDLED_PKGS) && \ | ||||
| 	  $(BUNDLED_PKGS) && \ | ||||
| 	make list && \ | ||||
| 	make -j$(NO_CPUS) V=1 | ||||
| 	cd daemon && \ | ||||
| @ -91,11 +91,13 @@ override_dh_auto_build: | ||||
| 	mkdir build && \ | ||||
| 	cd build && \ | ||||
| 	cmake \ | ||||
| 	  -DBUILD_VERSION=$(BUILD_VERSION) \ | ||||
| 	  -DCMAKE_INSTALL_PREFIX=/usr \ | ||||
| 	  -DLIBJAMI_BUILD_DIR=$(CURDIR)/daemon/src \ | ||||
| 	  -DENABLE_LIBWRAP=true \ | ||||
| 	  -DBUILD_TESTING=Off \ | ||||
| 	  $(CMAKE_OPTIONS) .. | ||||
| 	make -C build -j$(NO_CPUS) V=1 | ||||
| 	make -C build -j$(NO_CPUS) VERBOSE=1 | ||||
|  | ||||
| override_dh_auto_clean: | ||||
| 	# Daemon clean | ||||
|  | ||||
| @ -35,7 +35,7 @@ BuildRequires: opus-devel | ||||
| BuildRequires: pulseaudio-libs-devel | ||||
| %endif | ||||
| %if %{defined suse_version} | ||||
| BuildRequires: libdbus-c++-devel | ||||
| BuildRequires: systemd-devel | ||||
| BuildRequires: libexpat-devel | ||||
| BuildRequires: libopus-devel | ||||
| BuildRequires: libpulse-devel | ||||
| @ -49,7 +49,8 @@ BuildRequires: libXfixes-devel | ||||
| BuildRequires: libuuid-devel | ||||
| BuildRequires: libva-devel | ||||
| BuildRequires: libvdpau-devel | ||||
| BuildRequires: pcre-devel | ||||
| BuildRequires: (pcre-devel or pcre2-devel) | ||||
| BuildRequires: pipewire-devel | ||||
| BuildRequires: uuid-devel | ||||
| BuildRequires: yaml-cpp-devel | ||||
|  | ||||
| @ -81,7 +82,6 @@ cd %{_builddir}/jami-%{version}/daemon/contrib/native && \ | ||||
|     make list && \ | ||||
|     make fetch && \ | ||||
|     make %{_smp_mflags} V=1 && \ | ||||
|     make %{_smp_mflags} V=1 .ffmpeg | ||||
| # Configure the daemon. | ||||
| cd %{_builddir}/jami-%{version}/daemon && \ | ||||
|     ./autogen.sh && \ | ||||
|  | ||||
| @ -16,6 +16,9 @@ | ||||
| %define computed_job_count_ %(echo $(( %available_memory / %memory_required_per_core / %max_parallel_builds ))) | ||||
| %define computed_job_count %max %computed_job_count_ 1 | ||||
| %define job_count %min %cpu_count %computed_job_count | ||||
| # Exclude vendored Qt6 and FFmpeg libraries from dependency generator | ||||
| %define __provides_exclude_from ^%{_libdir}/qt-jami/.*$ | ||||
| %define __requires_exclude ^(libQt6.*|libavcodec.*|libavformat.*|libavutil.*|libswresample.*|libswscale.*)$ | ||||
|  | ||||
| Name:          %{name} | ||||
| Version:       %{version} | ||||
| @ -26,7 +29,9 @@ License:       GPLv3+ | ||||
| Vendor:        Savoir-faire Linux Inc. | ||||
| URL:           https://jami.net/ | ||||
| Source:        jami-libqt-%{version}.tar.xz | ||||
| Patch0:        0001-fix-gcc13.patch | ||||
| Patch0:        0001-qtwebengine-fix-build-error-due-to-missing-chromium-dependency.patch | ||||
| Patch1:        0002-qtwebengine-fix-ASSERT_TRIVIALLY_COPYABLE-failure.patch | ||||
| Patch2:        0003-qtwebengine-fix-zygote_communication_linux-dependency.patch | ||||
|  | ||||
| %global gst 0.10 | ||||
| %if 0%{?fedora} || 0%{?rhel} > 7 | ||||
| @ -47,6 +52,7 @@ BuildRequires: ffmpeg | ||||
| BuildRequires: python-xml | ||||
| BuildRequires: mozilla-nss-devel | ||||
| %else | ||||
| BuildRequires: python-six | ||||
| BuildRequires: pkgconfig(gstreamer-%{gst}) | ||||
| BuildRequires: pkgconfig(gstreamer-app-%{gst}) | ||||
| BuildRequires: pkgconfig(gstreamer-audio-%{gst}) | ||||
| @ -61,35 +67,21 @@ This package contains Qt libraries for Jami. | ||||
|  | ||||
| %prep | ||||
| %setup -n qt-everywhere-src-%{version} | ||||
| %patch0 -p1 | ||||
| %patch -P 0 -p1 | ||||
| %patch -P 1 -p1 | ||||
| %patch -P 2 -p1 | ||||
|  | ||||
| %build | ||||
| echo "Building Qt using %{job_count} parallel jobs" | ||||
| # Qt 6.2 (https://wiki.linuxfromscratch.org/blfs/ticket/14729) | ||||
| sed -i 's,default=False,default=True,g' qtwebengine/src/3rdparty/chromium/third_party/catapult/tracing/tracing_build/generate_about_tracing_contents.py | ||||
| # Gcc 13 | ||||
| sed -i 's,std::uint32_t,uint32_t,g' qt3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | ||||
| sed -i 's,std::uint32_t,uint32_t,g' qtquick3d/src/3rdparty/assimp/src/code/AssetLib/FBX/FBXBinaryTokenizer.cpp | ||||
| # https://bugs.gentoo.org/768261 (Qt 5.15) | ||||
| sed -i 's,#include "absl/base/internal/spinlock.h"1,#include "absl/base/internal/spinlock.h"1\n#include <limits>,g' qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc | ||||
| sed -i 's,#include <stdint.h>,#include <stdint.h>\n#include <limits>,g' qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h | ||||
| # else, break build for fedora 35 | ||||
| sed -i 's/static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);/static const size_t kSigStackSize = std::max(size_t(16384), size_t(SIGSTKSZ));/g' qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc | ||||
| # https://bugreports.qt.io/browse/QTBUG-93452 (Qt 5.15) | ||||
| sed -i 's,#  include <utility>,#  include <utility>\n#  include <limits>,g' qtbase/src/corelib/global/qglobal.h | ||||
| sed -i 's,#include <string.h>,#include <string.h>\n#include <limits>,g' qtbase/src/corelib/global/qendian.h | ||||
| cat qtbase/src/corelib/global/qendian.h | ||||
| sed -i 's,#include <string.h>,#include <string.h>\n#include <limits>,g' qtbase/src/corelib/global/qfloat16.h | ||||
| sed -i 's,#include <QtCore/qbytearray.h>,#include <QtCore/qbytearray.h>\n#include <limits>,g' qtbase/src/corelib/text/qbytearraymatcher.h | ||||
| cat qtwebengine/configure.cmake | ||||
|  | ||||
| # recent gcc version do not like lto from qt | ||||
| CXXFLAGS="${CXXFLAGS} -fno-lto" CFLAGS="${CFLAGS} -fno-lto" LDFLAGS="$(CFLAGS) ${LDFLAGS}" ./configure \ | ||||
|   -opensource \ | ||||
|   -confirm-license \ | ||||
|   -nomake examples \ | ||||
|   -nomake tests \ | ||||
|   -prefix "%{_libdir}/qt-jami" | ||||
| sed -i 's,bin/python,bin/env python3,g' qtbase/mkspecs/features/uikit/devices.py | ||||
|   -prefix "%{_libdir}/qt-jami" \ | ||||
|   -- -DFFMPEG_DIR=/opt/libqt-jami-ffmpeg -DQT_DEPLOY_FFMPEG=ON | ||||
| # Chromium is built using Ninja, which doesn't honor MAKEFLAGS. | ||||
| cmake --build . --parallel | ||||
|  | ||||
|  | ||||
| @ -1,6 +1,10 @@ | ||||
| %define name        jami | ||||
| %define version     RELEASE_VERSION | ||||
| %define release     0 | ||||
| %define appstream_catalog_dir /share/swcatalog/xml | ||||
|  | ||||
| # Exclude vendored Qt6 from dependency generator | ||||
| %define __requires_exclude ^libQt6.*$ | ||||
|  | ||||
| Name:          %{name} | ||||
| Version:       %{version} | ||||
| @ -66,10 +70,14 @@ cd %{_builddir}/jami-%{version} && \ | ||||
|           -DLIBJAMI_BUILD_DIR=%{_builddir}/jami-%{version}/daemon/src \ | ||||
|           -DCMAKE_INSTALL_PREFIX=%{_prefix} \ | ||||
|           -DCMAKE_INSTALL_LIBDIR=%{_libdir} \ | ||||
|           -DAPPSTREAM_CATALOG_DIR=%{appstream_catalog_dir} \ | ||||
|           -DWITH_DAEMON_SUBMODULE=true \ | ||||
|           -DCMAKE_BUILD_TYPE=Release \ | ||||
|           -DBUILD_VERSION=${BUILD_VERSION} \ | ||||
|           -DCMAKE_PREFIX_PATH=%{QT_JAMI_PREFIX} \ | ||||
|           -DBUILD_TESTING=Off \ | ||||
|           .. | ||||
| make -C %{_builddir}/jami-%{version}/build %{_smp_mflags} V=2 | ||||
| make -C %{_builddir}/jami-%{version}/build %{_smp_mflags} VERBOSE=1 | ||||
|  | ||||
| %install | ||||
| DESTDIR=%{buildroot} make -C %{_builddir}/jami-%{version}/build install V=2 | ||||
| @ -77,11 +85,12 @@ DESTDIR=%{buildroot} make -C %{_builddir}/jami-%{version}/build install V=2 | ||||
| %files | ||||
| %defattr(-,root,root,-) | ||||
| %{_bindir}/jami | ||||
| %{_datadir}/applications/jami.desktop | ||||
| %{_datadir}/jami/jami.desktop | ||||
| %{_datadir}/icons/hicolor/scalable/apps/jami.svg | ||||
| %{_datadir}/applications/net.jami.Jami.desktop | ||||
| %{_datadir}/jami/net.jami.Jami.desktop | ||||
| %{_datadir}/icons/hicolor/scalable/apps/net.jami.Jami.svg | ||||
| %{_datadir}/icons/hicolor/48x48/apps/jami.png | ||||
| %{_datadir}/pixmaps/jami.xpm | ||||
| %{_datadir}/metainfo/jami.appdata.xml | ||||
| %{_datadir}/metainfo/net.jami.Jami.metainfo.xml | ||||
| %{_prefix}%{appstream_catalog_dir}/jami.xml | ||||
| %{_datadir}/jami/translations/* | ||||
| %doc %{_mandir}/man1/jami* | ||||
|  | ||||
| @ -1,740 +0,0 @@ | ||||
|  qtwebengine/src/3rdparty/chromium/base/debug/profiler.h                                                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h                                                         | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/base/logging.h                                                                   | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc                                                      | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h                               | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h                          | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc                                | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h                                 | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h                                     | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h                        | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/extensions/common/constants.h                                                    | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h                             | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h                                     | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h                                                    | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h                                                     | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h                                                            | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/net/base/parse_number.h                                                          | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h                                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h                   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h                 | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h                                                   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h                        | 6 ++++-- | ||||
|  qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h              | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h                                   | 2 +- | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h                                   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h          | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h                   | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h  | 4 ++-- | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h     | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h                                      | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h                        | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h                                   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h                                    | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h                                    | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h                                 | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc                                  | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h                                  | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp                                      | 4 ++++ | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h                       | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h                                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h                          | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h                                   | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h                                                | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h                                                   | 2 ++ | ||||
|  qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h                                                | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h                                                            | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h                                                             | 1 + | ||||
|  qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h                                         | 1 + | ||||
|  qtwebengine/src/core/browsing_data_remover_delegate_qt.h                                                           | 2 ++ | ||||
|  54 files changed, 71 insertions(+), 5 deletions(-) | ||||
|  | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h b/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h | ||||
| index 1229e06234..c7ed55e70f 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/base/debug/profiler.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef BASE_DEBUG_PROFILER_H_ | ||||
|  #define BASE_DEBUG_PROFILER_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <stddef.h> | ||||
|   | ||||
|  #include <string> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h b/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h | ||||
| index 60c3c5c474..6c8021cfde 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/base/debug/stack_trace.h | ||||
| @@ -7,6 +7,7 @@ | ||||
|   | ||||
|  #include <stddef.h> | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <iosfwd> | ||||
|  #include <string> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/base/logging.h b/qtwebengine/src/3rdparty/chromium/base/logging.h | ||||
| index a3ff92f0fd..c272f796a9 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/base/logging.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/base/logging.h | ||||
| @@ -7,6 +7,8 @@ | ||||
|   | ||||
|  #include <stddef.h> | ||||
|   | ||||
| + | ||||
| +#include <cstdint> | ||||
|  #include <cassert> | ||||
|  #include <cstdint> | ||||
|  #include <sstream> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc b/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc | ||||
| index 96f8c3bd7c..c3f087b1a9 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/cc/trees/target_property.cc | ||||
| @@ -6,6 +6,8 @@ | ||||
|   | ||||
|  #include "ui/gfx/animation/keyframe/target_property.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace cc { | ||||
|   | ||||
|  static_assert(TargetProperty::LAST_TARGET_PROPERTY < | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h b/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h | ||||
| index 2aba73ebcb..2e028fddcf 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef COMPONENTS_VIZ_COMMON_SHARED_ELEMENT_RESOURCE_ID_H_ | ||||
|  #define COMPONENTS_VIZ_COMMON_SHARED_ELEMENT_RESOURCE_ID_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h b/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h | ||||
| index 3069c858d3..f4614b73c6 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_ | ||||
|  #define CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|  #include "base/callback_forward.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc | ||||
| index 80fd26f4f4..3f08972a7a 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc | ||||
| @@ -3,6 +3,7 @@ | ||||
|  // found in the LICENSE file. | ||||
|   | ||||
|  #include "device/base/synchronization/one_writer_seqlock.h" | ||||
| +#include <cstdint> | ||||
|   | ||||
|  #include "base/threading/platform_thread.h" | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h | ||||
| index 6a3eeda565..525301379c 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h | ||||
| @@ -6,6 +6,7 @@ | ||||
|  #define DEVICE_BASE_SYNCHRONIZATION_ONE_WRITER_SEQLOCK_H_ | ||||
|   | ||||
|  #include <atomic> | ||||
| +#include <cstdint> | ||||
|   | ||||
|  #include "base/atomicops.h" | ||||
|  #include "base/check.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h b/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h | ||||
| index 3cf2914e10..4b0552440c 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_ | ||||
|  #define DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <ostream> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h | ||||
| index c24205c402..ee67ecf189 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef EXTENSIONS_BROWSER_API_AUDIO_AUDIO_DEVICE_ID_CALCULATOR_H_ | ||||
|  #define EXTENSIONS_BROWSER_API_AUDIO_AUDIO_DEVICE_ID_CALCULATOR_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <map> | ||||
|  #include <string> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h b/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h | ||||
| index 9ac68e2be9..ef2761020d 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/extensions/common/constants.h | ||||
| @@ -10,6 +10,8 @@ | ||||
|  #include "build/chromeos_buildflags.h" | ||||
|  #include "extensions/common/extensions_export.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace extensions { | ||||
|   | ||||
|  // Scheme we serve extension content from. | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h b/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h | ||||
| index 4ba8de8460..6352b90196 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/extensions/renderer/bindings/api_invocation_errors.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef EXTENSIONS_RENDERER_BINDINGS_API_INVOCATION_ERRORS_H_ | ||||
|  #define EXTENSIONS_RENDERER_BINDINGS_API_INVOCATION_ERRORS_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <set> | ||||
|  #include <string> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h | ||||
| index a9c7adb5b5..943bd4e470 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h | ||||
| @@ -7,6 +7,8 @@ | ||||
|   | ||||
|  #include <stdint.h> | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace gpu { | ||||
|  namespace webgpu { | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h | ||||
| index 027f1a5af3..70759b2ae4 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_feature_info.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_ | ||||
|  #define GPU_CONFIG_GPU_FEATURE_INFO_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h | ||||
| index 3ea2191b50..0a1ae11202 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_preferences.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef GPU_CONFIG_GPU_PREFERENCES_H_ | ||||
|  #define GPU_CONFIG_GPU_PREFERENCES_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <stddef.h> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h | ||||
| index f72970c67a..d7f0b7d492 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/gpu/config/gpu_util.h | ||||
| @@ -5,6 +5,8 @@ | ||||
|  #ifndef GPU_CONFIG_GPU_UTIL_H_ | ||||
|  #define GPU_CONFIG_GPU_UTIL_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  #include "build/build_config.h" | ||||
|  #include "gpu/config/gpu_feature_info.h" | ||||
|  #include "gpu/gpu_export.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h b/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h | ||||
| index 4e49ab7112..e99d2dd7aa 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/net/base/parse_number.h | ||||
| @@ -7,6 +7,7 @@ | ||||
|   | ||||
|  #include "base/strings/string_piece.h" | ||||
|  #include "net/base/net_export.h" | ||||
| +#include <cstdint> | ||||
|   | ||||
|  // This file contains utility functions for parsing numbers, in the context of | ||||
|  // network protocols. | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h b/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h | ||||
| index 2e9c319a3d..4d723d18f2 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h | ||||
| @@ -6,6 +6,7 @@ | ||||
|  #define NET_COOKIES_COOKIE_INCLUSION_STATUS_H_ | ||||
|   | ||||
|  #include <bitset> | ||||
| +#include <cstdint> | ||||
|  #include <ostream> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h | ||||
| index 6a300ed0c0..3e30f1cb02 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_ | ||||
|  #define QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <vector> | ||||
|   | ||||
|  #include "absl/strings/string_view.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h | ||||
| index 52f1501728..db4d310849 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_ | ||||
|  #define QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h b/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h | ||||
| index 138ca2efec..08f06e7b8c 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/pdf/document_attachment_info.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_ | ||||
|  #define PDF_DOCUMENT_ATTACHMENT_INFO_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|   | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h | ||||
| index b4fdb9a6d3..375d3ef327 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h | ||||
| @@ -38,6 +38,10 @@ namespace pp { | ||||
|  /// As a further optimization, we can add support for this later. | ||||
|  class ThreadSafeThreadTraits { | ||||
|   public: | ||||
| + | ||||
| +  typedef pp::Lock Lock; | ||||
| +  typedef pp::AutoLock AutoLock; | ||||
| + | ||||
|    class RefCount { | ||||
|     public: | ||||
|      /// Default constructor. In debug mode, this checks that the object is being | ||||
| @@ -67,8 +71,6 @@ class ThreadSafeThreadTraits { | ||||
|      int32_t ref_; | ||||
|    }; | ||||
|   | ||||
| -  typedef pp::Lock Lock; | ||||
| -  typedef pp::AutoLock AutoLock; | ||||
|  }; | ||||
|   | ||||
|  /// The non-thread-safe version of thread traits. Using this class as the | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h b/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h | ||||
| index 0aad3ac782..7f7a1057d7 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_ | ||||
|  #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <bitset> | ||||
|  #include <string> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h b/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h | ||||
| index c47536d63e..443f47afd0 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h | ||||
| @@ -18,6 +18,7 @@ | ||||
|   | ||||
|  #include <limits.h> | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <cstddef> | ||||
|  #include <cstring> | ||||
|  #include <ostream> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h | ||||
| index e13aa2221d..0ce848486d 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderLang.h | ||||
| @@ -7,7 +7,7 @@ | ||||
|  #define GLSLANG_SHADERLANG_H_ | ||||
|   | ||||
|  #include <stddef.h> | ||||
| - | ||||
| +#include <cstdint> | ||||
|  #include "KHR/khrplatform.h" | ||||
|   | ||||
|  #include <array> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h | ||||
| index 18175e15c7..28332857bc 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h | ||||
| @@ -14,6 +14,7 @@ | ||||
|  #include <array> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
| +#include <cstdint> | ||||
|   | ||||
|  // This type is defined here to simplify ANGLE's integration with glslang for SPIR-V. | ||||
|  using ShCompileOptions = uint64_t; | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h | ||||
| index c63049b174..82b27837b5 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h | ||||
| @@ -6,6 +6,7 @@ | ||||
|  #define THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_ORIGIN_TRIAL_PUBLIC_KEY_H_ | ||||
|   | ||||
|  #include <array> | ||||
| +#include <cstdint> | ||||
|   | ||||
|  namespace blink { | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h | ||||
| index 14c5548766..43c9a8d6a5 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/dark_mode_types.h | ||||
| @@ -5,6 +5,8 @@ | ||||
|  #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DARK_MODE_TYPES_H_ | ||||
|  #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_DARK_MODE_TYPES_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace blink { | ||||
|   | ||||
|  enum class DarkModeResult : uint8_t { | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h | ||||
| index 80b3150b67..6377196230 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h | ||||
| @@ -116,7 +116,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode | ||||
|   | ||||
|      // An identifier for a document transition shared element. `id.valid()` | ||||
|      // returns true if this has been set, and false otherwise. | ||||
| -    DocumentTransitionSharedElementId document_transition_shared_element_id; | ||||
| +    cc::DocumentTransitionSharedElementId document_transition_shared_element_id; | ||||
|   | ||||
|      // An identifier to tag shared element resources generated and cached in the | ||||
|      // Viz process. This generated resource can be used as content for other | ||||
| @@ -285,7 +285,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode | ||||
|      return state_.compositor_element_id; | ||||
|    } | ||||
|   | ||||
| -  const blink::DocumentTransitionSharedElementId& | ||||
| +  const cc::DocumentTransitionSharedElementId& | ||||
|    DocumentTransitionSharedElementId() const { | ||||
|      return state_.document_transition_shared_element_id; | ||||
|    } | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h b/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h | ||||
| index c7e4f2b378..f30ce91b36 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h | ||||
| @@ -34,6 +34,7 @@ | ||||
|  #include <sys/types.h> | ||||
|   | ||||
|  #include <string> | ||||
| +#include <cstdint> | ||||
|   | ||||
|  #include "client/linux/handler/microdump_extra_info.h" | ||||
|  #include "common/using_std_string.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h | ||||
| index 2d58d76cb6..139af564ea 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h | ||||
| @@ -18,6 +18,7 @@ | ||||
|  #include "dawn/common/TypedInteger.h" | ||||
|  #include "dawn/common/ityp_array.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <bitset> | ||||
|  #include <iostream> | ||||
|  #include <limits> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h | ||||
| index 374bd8302a..0884eb2a19 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #ifndef SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_ | ||||
|  #define SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h | ||||
| index fa5fc3a7e9..6cec934670 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #ifndef SRC_TINT_READER_SPIRV_NAMER_H_ | ||||
|  #define SRC_TINT_READER_SPIRV_NAMER_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <unordered_map> | ||||
|  #include <vector> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h | ||||
| index f378d57817..98d1336f9a 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #ifndef SRC_TINT_READER_WGSL_LEXER_H_ | ||||
|  #define SRC_TINT_READER_WGSL_LEXER_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|   | ||||
|  #include "src/tint/reader/wgsl/token.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h | ||||
| index 7b5b6754ed..62b1ca7e36 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #ifndef SRC_TINT_READER_WGSL_TOKEN_H_ | ||||
|  #define SRC_TINT_READER_WGSL_TOKEN_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <string_view> | ||||
|  #include <variant>  // NOLINT: cpplint doesn't recognise this | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc | ||||
| index 4be648b37a..cac7238ef2 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/instruction.cc | ||||
| @@ -14,6 +14,7 @@ | ||||
|   | ||||
|  #include "src/tint/writer/spirv/instruction.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <utility> | ||||
|   | ||||
|  namespace tint::writer::spirv { | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h | ||||
| index 46a5deb55b..4c3080ff25 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #ifndef SRC_TINT_WRITER_SPIRV_OPERAND_H_ | ||||
|  #define SRC_TINT_WRITER_SPIRV_OPERAND_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc | ||||
| index a3099e15db..2e6f0eea70 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc | ||||
| @@ -30,6 +30,7 @@ | ||||
|  #include <cstddef> | ||||
|  #include <cstdint> | ||||
|  #include <cstring> | ||||
| +#include <cstdio> | ||||
|  #include <new> | ||||
|  #include <utility> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h b/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h | ||||
| index d2731dac7a..46bc87ef92 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h | ||||
| @@ -5,6 +5,8 @@ | ||||
|  #ifndef CONSTANTS_ANNOTATION_FLAGS_H_ | ||||
|  #define CONSTANTS_ANNOTATION_FLAGS_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace pdfium { | ||||
|  namespace annotation_flags { | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h | ||||
| index 1b4c53815b..472042fabc 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h | ||||
| @@ -18,6 +18,7 @@ | ||||
|  #define INCLUDE_PERFETTO_EXT_BASE_UUID_H_ | ||||
|   | ||||
|  #include <array> | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|   | ||||
|  #include "perfetto/ext/base/optional.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h | ||||
| index c56f0344f9..cd7824929e 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h | ||||
| @@ -20,6 +20,8 @@ | ||||
|  #include "perfetto/ext/base/optional.h" | ||||
|  #include "perfetto/trace_processor/status.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace perfetto { | ||||
|   | ||||
|  namespace protos { | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp | ||||
| index 3164650728..512a26943d 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp | ||||
| @@ -10,6 +10,10 @@ | ||||
|   | ||||
|  #include <algorithm> // std::lower_bound | ||||
|   | ||||
| +#include <string.h> | ||||
| +#include <algorithm> | ||||
| +#include <iterator> | ||||
| + | ||||
|  static constexpr const char* gColorNames[] = { | ||||
|      "aliceblue", | ||||
|      "antiquewhite", | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h b/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h | ||||
| index b7c586b80e..19ccbb024a 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h | ||||
| @@ -146,6 +146,7 @@ available through VmaAllocatorCreateInfo::pRecordSettings. | ||||
|      #endif // #if VMA_VULKAN_VERSION >= 1001000 | ||||
|  #endif // #if defined(__ANDROID__) && VMA_STATIC_VULKAN_FUNCTIONS && VK_NO_PROTOTYPES | ||||
|   | ||||
| +#include <cstdio> | ||||
|  #ifndef VULKAN_H_ | ||||
|      #include <vulkan/vulkan.h> | ||||
|  #endif | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h | ||||
| index 5fd37b4613..ce70405dd2 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h | ||||
| @@ -11,6 +11,7 @@ | ||||
|  #ifndef CALL_RTP_DEMUXER_H_ | ||||
|  #define CALL_RTP_DEMUXER_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <map> | ||||
|  #include <string> | ||||
|  #include <utility> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h | ||||
| index b70ac4aa59..7ba5555647 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h | ||||
| @@ -13,6 +13,7 @@ | ||||
|   | ||||
|  #include <gio/gio.h> | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|   | ||||
|  namespace webrtc { | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h | ||||
| index ca249541d0..534214dbfa 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h | ||||
| @@ -12,6 +12,7 @@ | ||||
|  #ifndef RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_ | ||||
|  #define RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h b/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h | ||||
| index 708d6c98ac..898016d886 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/ui/base/ime/linux/linux_input_method_context.h | ||||
| @@ -8,6 +8,7 @@ | ||||
|  #include <string> | ||||
|  #include <vector> | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include "base/component_export.h" | ||||
|  #include "ui/base/ime/text_input_type.h" | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h b/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h | ||||
| index d97a696fd5..68b18d80cd 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/ui/events/gesture_event_details.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef UI_EVENTS_GESTURE_EVENT_DETAILS_H_ | ||||
|  #define UI_EVENTS_GESTURE_EVENT_DETAILS_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string.h> | ||||
|   | ||||
|  #include "base/check_op.h" | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h b/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h | ||||
| index 7ff15f0fc5..136cebc09e 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/ui/events/types/scroll_types.h | ||||
| @@ -5,6 +5,8 @@ | ||||
|  #ifndef UI_EVENTS_TYPES_SCROLL_TYPES_H_ | ||||
|  #define UI_EVENTS_TYPES_SCROLL_TYPES_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace ui { | ||||
|   | ||||
|  enum class ScrollGranularity : uint8_t { | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h b/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h | ||||
| index 1ad025fec1..adadf96190 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef UI_GFX_LINEAR_GRADIENT_H_ | ||||
|  #define UI_GFX_LINEAR_GRADIENT_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <array> | ||||
|  #include <string> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h | ||||
| index fdac44e31e..a752dba6a2 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/logging.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef V8_BASE_LOGGING_H_ | ||||
|  #define V8_BASE_LOGGING_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <cstring> | ||||
|  #include <sstream> | ||||
|  #include <string> | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| index 61644ffe05..6fbc037437 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef V8_BASE_MACROS_H_ | ||||
|  #define V8_BASE_MACROS_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <limits> | ||||
|  #include <type_traits> | ||||
|   | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h b/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h | ||||
| index c1d69c18f0..eb33c6816a 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h | ||||
| @@ -5,6 +5,7 @@ | ||||
|  #ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ | ||||
|  #define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ | ||||
|   | ||||
| +#include <cstdint> | ||||
|  #include <string> | ||||
|   | ||||
|  // Conversion routines between UT8 and UTF16, used by string-16.{h,cc}. You may | ||||
| diff --git a/qtwebengine/src/core/browsing_data_remover_delegate_qt.h b/qtwebengine/src/core/browsing_data_remover_delegate_qt.h | ||||
| index 4e690ffb19..dfa884cd65 100644 | ||||
| --- a/qtwebengine/src/core/browsing_data_remover_delegate_qt.h | ||||
| +++ b/qtwebengine/src/core/browsing_data_remover_delegate_qt.h | ||||
| @@ -6,6 +6,8 @@ | ||||
|   | ||||
|  #include "content/public/browser/browsing_data_remover_delegate.h" | ||||
|   | ||||
| +#include <cstdint> | ||||
| + | ||||
|  namespace QtWebEngineCore { | ||||
|   | ||||
|  class BrowsingDataRemoverDelegateQt : public content::BrowsingDataRemoverDelegate { | ||||
| @ -0,0 +1,39 @@ | ||||
| From 0d0856252b48895a8d6cad7bff66c904ccfc0725 Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?= | ||||
|  <francois-simon.fauteux-chapleau@savoirfairelinux.com> | ||||
| Date: Wed, 16 Jul 2025 13:49:54 -0400 | ||||
| Subject: [PATCH] qtwebengine: fix build error due to missing chromium | ||||
|  dependency | ||||
|  | ||||
| Error: | ||||
|  | ||||
|     In file included from ../../../3rdparty/chromium/ui/gl/gl_surface.h:30, | ||||
|                      from ../../../3rdparty/chromium/tools/v8_context_snapshot/qt_overrides.cc:13: | ||||
|     ../../../3rdparty/chromium/ui/gl/gl_implementation.h:18:10: fatal error: ui/gl/buildflags.h: No such file or directory | ||||
|        18 | #include "ui/gl/buildflags.h" | ||||
|           |          ^~~~~~~~~~~~~~~~~~~~ | ||||
|     compilation terminated. | ||||
|  | ||||
| Patch taken from: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/637889 | ||||
| --- | ||||
|  .../src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn   | 4 ++++ | ||||
|  1 file changed, 4 insertions(+) | ||||
|  | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn b/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn | ||||
| index 812445d934..97cd46140d 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/chrome/test/chromedriver/BUILD.gn | ||||
| @@ -455,6 +455,10 @@ if (is_linux && !is_qtwebengine) { | ||||
|        output_name = "webenginedriver" | ||||
|        deps -= [ "//net/traffic_annotation:test_support" ] | ||||
|   | ||||
| +      if (is_linux || is_mac) { | ||||
| +        deps += [ "//ui/gl:buildflags" ] | ||||
| +      } | ||||
| + | ||||
|        if (is_linux) { | ||||
|          sources += [ | ||||
|            "//content/public/common/content_switches.cc", | ||||
| --  | ||||
| 2.34.1 | ||||
|  | ||||
| @ -0,0 +1,79 @@ | ||||
| From 24dd03e131cd3edc89907a699369562e61d8aa86 Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?= | ||||
|  <francois-simon.fauteux-chapleau@savoirfairelinux.com> | ||||
| Date: Mon, 21 Jul 2025 13:19:58 -0400 | ||||
| Subject: [PATCH] qtwebengine: fix ASSERT_TRIVIALLY_COPYABLE failure | ||||
|  | ||||
| Some compilers don't implement std::is_trivially_copyable correctly, | ||||
| which can cause chromium's build to fail with the following error: | ||||
|  | ||||
|     In file included from ../../../3rdparty/chromium/v8/src/base/bits.h:12, | ||||
|                      from ../../../3rdparty/chromium/v8/src/base/small-vector.h:12, | ||||
|                      from ../../../3rdparty/chromium/v8/src/compiler/turboshaft/graph.h:17, | ||||
|                      from ../../../3rdparty/chromium/v8/src/compiler/turboshaft/analyzer-iterator.h:9, | ||||
|                      from ./../../../3rdparty/chromium/v8/src/compiler/turboshaft/analyzer-iterator.cc:5, | ||||
|                      from gen/v8/v8_turboshaft_jumbo_1.cc:5: | ||||
|     ../../../3rdparty/chromium/v8/src/base/small-vector.h: In instantiation of 'class v8::base::SmallVector<std::pair<const v8::internal::compiler::turboshaft::PhiOp*, const v8::internal::compiler::turboshaft::OpIndex>, 16>': | ||||
|     ../../../3rdparty/chromium/v8/src/compiler/turboshaft/loop-unrolling-reducer.h:433:11:   required from here | ||||
|     ../../../3rdparty/chromium/v8/src/base/macros.h:206:55: error: static assertion failed: T should be trivially copyable | ||||
|       206 |   static_assert(::v8::base::is_trivially_copyable<T>::value, \ | ||||
|           |                                                       ^~~~~ | ||||
|     ../../../3rdparty/chromium/v8/src/base/small-vector.h:25:3: note: in expansion of macro 'ASSERT_TRIVIALLY_COPYABLE' | ||||
|        25 |   ASSERT_TRIVIALLY_COPYABLE(T); | ||||
|           |   ^~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|     ../../../3rdparty/chromium/v8/src/base/macros.h:206:55: note: 'v8::base::is_trivially_copyable<std::pair<const v8::internal::compiler::turboshaft::PhiOp*, const v8::internal::compiler::turboshaft::OpIndex> >::value' evaluates to false | ||||
|       206 |   static_assert(::v8::base::is_trivially_copyable<T>::value, \ | ||||
|           |                                                       ^~~~~ | ||||
|     ../../../3rdparty/chromium/v8/src/base/small-vector.h:25:3: note: in expansion of macro 'ASSERT_TRIVIALLY_COPYABLE' | ||||
|        25 |   ASSERT_TRIVIALLY_COPYABLE(T); | ||||
|           |   ^~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| References: | ||||
| https://chromium-review.googlesource.com/c/v8/v8/+/5679182 | ||||
| https://chromium-review.googlesource.com/c/v8/v8/+/5872655 | ||||
| https://github.com/rubyjs/libv8-node/pull/57 | ||||
| https://github.com/nodejs/node/issues/54576 | ||||
| --- | ||||
|  qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h       | 3 ++- | ||||
|  qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h | 4 ++-- | ||||
|  2 files changed, 4 insertions(+), 3 deletions(-) | ||||
|  | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| index 93a99ec136..88c6555189 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/macros.h | ||||
| @@ -173,7 +173,8 @@ namespace base { | ||||
|  // base::is_trivially_copyable will differ for these cases. | ||||
|  template <typename T> | ||||
|  struct is_trivially_copyable { | ||||
| -#if V8_CC_MSVC | ||||
| +#if V8_CC_MSVC || (__GNUC__ == 12 && __GNUC_MINOR__ <= 2) || \ | ||||
| +    (defined(__clang__) && __clang_major__ <= 17) | ||||
|    // Unfortunately, MSVC 2015 is broken in that std::is_trivially_copyable can | ||||
|    // be false even though it should be true according to the standard. | ||||
|    // (status at 2018-02-26, observed on the msvc waterfall bot). | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h b/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h | ||||
| index b1b5d64198..ce2e003fb9 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/v8/src/base/small-vector.h | ||||
| @@ -22,7 +22,7 @@ template <typename T, size_t kSize, typename Allocator = std::allocator<T>> | ||||
|  class SmallVector { | ||||
|    // Currently only support trivially copyable and trivially destructible data | ||||
|    // types, as it uses memcpy to copy elements and never calls destructors. | ||||
| -  ASSERT_TRIVIALLY_COPYABLE(T); | ||||
| +  // ASSERT_TRIVIALLY_COPYABLE(T); | ||||
|    static_assert(std::is_trivially_destructible<T>::value); | ||||
|   | ||||
|   public: | ||||
| @@ -193,7 +193,7 @@ class SmallVector { | ||||
|   | ||||
|    void resize_no_init(size_t new_size) { | ||||
|      // Resizing without initialization is safe if T is trivially copyable. | ||||
| -    ASSERT_TRIVIALLY_COPYABLE(T); | ||||
| +    // ASSERT_TRIVIALLY_COPYABLE(T); | ||||
|      if (new_size > capacity()) Grow(new_size); | ||||
|      end_ = begin_ + new_size; | ||||
|    } | ||||
| --  | ||||
| 2.34.1 | ||||
|  | ||||
| @ -0,0 +1,49 @@ | ||||
| From 5c247c7a084661932969acf2f7103096b8b0d6b4 Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?= | ||||
|  <francois-simon.fauteux-chapleau@savoirfairelinux.com> | ||||
| Date: Tue, 22 Jul 2025 13:40:55 -0400 | ||||
| Subject: [PATCH] qtwebengine: fix zygote_communication_linux dependency | ||||
|  | ||||
| Commit 42e09c7bea of qtwebengine-chromium added | ||||
| content/public/browser/child_process_host.h to the list of header files | ||||
| included in zygote_communication_linux.cc, which can cause the build to | ||||
| fail with the following error: | ||||
|  | ||||
|     In file included from ../../../3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc:21: | ||||
|     ../../../3rdparty/chromium/content/public/browser/child_process_host.h:17:10: fatal error: content/common/buildflags.h: No such file or directory | ||||
|        17 | #include "content/common/buildflags.h" | ||||
|           |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| --- | ||||
|  .../content/common/zygote/zygote_communication_linux.cc  | 9 ++++++--- | ||||
|  1 file changed, 6 insertions(+), 3 deletions(-) | ||||
|  | ||||
| diff --git a/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc b/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc | ||||
| index 5bd9a53568..ff883d59e4 100644 | ||||
| --- a/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc | ||||
| +++ b/qtwebengine/src/3rdparty/chromium/content/common/zygote/zygote_communication_linux.cc | ||||
| @@ -18,7 +18,7 @@ | ||||
|  #include "base/posix/eintr_wrapper.h" | ||||
|  #include "base/posix/unix_domain_socket.h" | ||||
|  #include "content/common/zygote/zygote_commands_linux.h" | ||||
| -#include "content/public/browser/child_process_host.h" | ||||
| +#include "content/public/common/content_paths.h" | ||||
|  #include "content/public/common/content_switches.h" | ||||
|  #include "content/public/common/result_codes.h" | ||||
|  #include "sandbox/policy/switches.h" | ||||
| @@ -237,8 +237,11 @@ void ZygoteCommunication::Init( | ||||
|      base::OnceCallback<pid_t(base::CommandLine*, base::ScopedFD*)> launcher) { | ||||
|    CHECK(!init_); | ||||
|   | ||||
| -  base::FilePath chrome_path = content::ChildProcessHost::GetChildPath( | ||||
| -      content::ChildProcessHost::CHILD_NORMAL); | ||||
| +  base::FilePath chrome_path = base::CommandLine::ForCurrentProcess()->GetSwitchValuePath( | ||||
| +      switches::kBrowserSubprocessPath); | ||||
| +  if (chrome_path.empty()) { | ||||
| +    base::PathService::Get(CHILD_PROCESS_EXE, &chrome_path); | ||||
| +  } | ||||
|   | ||||
|    base::CommandLine cmd_line(chrome_path); | ||||
|    cmd_line.AppendSwitchASCII(switches::kProcessType, switches::kZygoteProcess); | ||||
| --  | ||||
| 2.34.1 | ||||
|  | ||||
| @ -1,7 +1,4 @@ | ||||
| # Copyright (C) 2019-2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com> | ||||
| # Author: Amin Bandali <amin.bandali@savoirfairelinux.com> | ||||
| # Copyright (C) 2019-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
| @ -51,47 +48,63 @@ icon: common/icons/jami.svg | ||||
| license: GPL-3.0+ | ||||
| summary: 'Privacy-oriented voice, video, chat, and conference platform and SIP phone' | ||||
| description: | | ||||
|   Jami is free software for universal communication that respects the | ||||
|   freedom and privacy of its users. | ||||
|   Jami, a GNU package, is software for universal and distributed peer-to-peer communication that respects the freedom and privacy of its users. | ||||
|  | ||||
|   Jami is an end-to-end encrypted secure and distributed voice, video, | ||||
|   and chat communication platform.  Jami requires no central server | ||||
|   for these communications and leaves the power of privacy and freedom | ||||
|   in the hands of users. | ||||
|   Jami is the simplest and easiest way to connect with people (and devices) with instant messaging, audio and video calls over the Internet and LAN/WAN intranets. | ||||
|  | ||||
|   Jami provides the following key features to its users: | ||||
|   Jami is a free/libre, end-to-end encrypted, and private communication platform. | ||||
|  | ||||
|   * Synchronized and enriched one-to-one conversations | ||||
|   * Group conversations (Beta) | ||||
|   * Audio/video calls and conferences | ||||
|   * Screen sharing in video calls and conferences | ||||
|   * Unlimited peer-to-peer file sharing | ||||
|   * Recording and sending audio/video messages | ||||
|   * Jami plugins SDK for additional functionality (green screen, | ||||
|     watermark, audio filters, and more) | ||||
|   * Use Jami as your SIP phone with a variety of media codecs | ||||
|     and VoIP providers | ||||
|   Jami – which used to be known as Ring – is also an open-source alternative (to Facebook Messenger, Signal, Skype, Teams, Telegram, TikTok, Viber, WhatsApp, Zoom) that prioritizes the privacy of its users. | ||||
|  | ||||
|   Client applications for GNU/Linux, Windows, macOS, iOS, Android, | ||||
|   and Android TV are available, making Jami an interoperable and | ||||
|   cross-platform communication framework. | ||||
|   Jami has a professional-looking design and is available for a wide range of platforms. Unlike the alternatives, calls using Jami are directly between users as it does not use servers to handle calls. | ||||
|  | ||||
|   Seamlessly deploy Jami in your organization using | ||||
|   Jami Account Management Server (JAMS).   With JAMS, you can enable | ||||
|   your users to connect using their LDAP/ActiveDirectory credentials | ||||
|   or create local accounts, enabling you to manage your own | ||||
|   Jami community while taking advantage of Jami's distributed network | ||||
|   architecture.  For more information, please visit https://jami.biz. | ||||
|   This gives the greatest privacy as the distributed nature of Jami means your calls are only between participants. | ||||
|  | ||||
|   One-to-one and group conversations with Jami are enhanced with: instant messaging; audio and video calling; recording and sending audio and video messages; file transfers; screen sharing; and, location sharing. | ||||
|  | ||||
|   Jami can also function as a SIP client. | ||||
|  | ||||
|   Jami has multiple extensions available: Audio Filter; Auto Answer; Green Screen; Watermark; and, Whisper Transcript. | ||||
|  | ||||
|   Jami can be easily deployed in organizations with the “Jami Account Management Server” (JAMS), allowing users to connect with their corporate credentials or create local accounts. JAMS allows you to manage your own Jami community while taking advantage of Jami’s distributed network architecture. | ||||
|  | ||||
|   Jami is available for GNU/Linux, Windows, macOS, iOS, Android, and Android TV, making Jami an interoperable and cross-platform communication framework. | ||||
|  | ||||
|   Manage multiple SIP accounts, Jami accounts and JAMS accounts with the Jami client installed on one or multiple devices. | ||||
|  | ||||
|   Jami is free, unlimited, private, advertising free, compatible, fast, autonomous, and anonymous. | ||||
|  | ||||
|   Learn more about: | ||||
|   Jami: https://jami.net/ | ||||
|   Jami extensions: https://jami.net/extensions/ | ||||
|   “Jami Account Management Server” (JAMS): https://jami.biz/ | ||||
|   Jami documentation: https://docs.jami.net/ | ||||
|  | ||||
|   Follow us for more: | ||||
|   Mastodon: https://mstdn.io/@Jami | ||||
|   X: https://x.com/jami_social | ||||
|   YouTube: https://www.youtube.com/@jami9311 | ||||
|  | ||||
|   We’d love to hear from you! Join the Jami community: | ||||
|   Contribute: https://jami.net/contribute/ | ||||
|   Forum: https://forum.jami.net/ | ||||
|  | ||||
|   Build with Jami on your IoT project: re-use the universal communications technology of Jami with its portable library on your system of choice. | ||||
|  | ||||
|   Jami for Android TV is tested on NVIDIA SHIELD TV with Logitech cameras. | ||||
|  | ||||
|   Jami is published under the GPL license, version 3 or higher. | ||||
|   Copyright © Savoir-faire Linux Inc. | ||||
|  | ||||
| confinement: strict | ||||
| grade: stable | ||||
| base: core20 | ||||
| base: core22 | ||||
|  | ||||
| plugs: | ||||
|   gnome-3-38-2004: | ||||
|   gnome-42-2204: | ||||
|     interface: content | ||||
|     target: $SNAP/gnome-platform | ||||
|     default-provider: gnome-3-38-2004:gnome-3-38-2004 | ||||
|     default-provider: gnome-42-2204 | ||||
|   gtk-3-themes: | ||||
|     interface: content | ||||
|     target: $SNAP/data-dir/themes | ||||
| @ -116,8 +129,8 @@ slots: | ||||
|     name: cx.ring.Ring | ||||
|  | ||||
| layout: | ||||
|   /usr/lib/$SNAPCRAFT_ARCH_TRIPLET/alsa-lib: | ||||
|     bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/alsa-lib | ||||
|   /usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/alsa-lib: | ||||
|     bind: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/alsa-lib | ||||
|   /usr/share/alsa: | ||||
|     bind: $SNAP/usr/share/alsa | ||||
|   /usr/share/X11/xkb: | ||||
| @ -126,7 +139,7 @@ layout: | ||||
| environment: | ||||
|   XDG_CURRENT_DESKTOP: Unity | ||||
|   QT_BASE_DIR: "/usr/lib/libqt-jami" | ||||
|   LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP$QT_BASE_DIR/lib" | ||||
|   LD_LIBRARY_PATH: "${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$SNAP$QT_BASE_DIR/lib:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pulseaudio" | ||||
|  | ||||
| apps: | ||||
|   jami: | ||||
| @ -135,9 +148,13 @@ apps: | ||||
|     - bin/desktop-launch | ||||
|     - snap/command-chain/alsa-launch | ||||
|     - bin/jami-wrapper | ||||
|     autostart: jami.desktop | ||||
|     autostart: net.jami.Jami.desktop | ||||
|     common-id: net.jami.Jami | ||||
|     desktop: usr/share/applications/jami.desktop | ||||
|     desktop: usr/share/applications/net.jami.Jami.desktop | ||||
|     environment: | ||||
|       PIPEWIRE_CONFIG_NAME: "$SNAP/usr/share/pipewire/pipewire.conf" | ||||
|       PIPEWIRE_MODULE_DIR: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pipewire-0.3" | ||||
|       SPA_PLUGIN_DIR: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/spa-0.2" | ||||
|     slots: | ||||
|     - dbus-jami | ||||
|     - dbus-ring | ||||
| @ -168,7 +185,7 @@ package-repositories: | ||||
|     components: [main] | ||||
|     suites: [jami] | ||||
|     key-id: A295D773307D25A33AE72F2F64CD5FA175348F84 | ||||
|     url: https://dl.jami.net/nightly/ubuntu_20.04/ | ||||
|     url: https://dl.jami.net/internal/ubuntu_22.04/ | ||||
|  | ||||
| parts: | ||||
|   desktop-launch: | ||||
| @ -184,14 +201,14 @@ parts: | ||||
|     - devscripts | ||||
|     - equivs | ||||
|     override-pull: | | ||||
|       snapcraftctl pull | ||||
|       craftctl default | ||||
|       sed -i -E 's|\. \$SNAP/flavor-select|USE_gtk3=true|' gtk/launcher-specific | ||||
|       sed -i -E 's|\. \$SNAP/flavor-select|USE_qt5=true|' qt/launcher-specific | ||||
|       sed -i -E 's|(append_dir GTK_PATH \$RUNTIME/usr/lib/\$ARCH/gtk-2.0)|#\1|' qt/launcher-specific | ||||
|       sed -i -E 's|\$RUNTIME|$SNAP|g' qt/launcher-specific | ||||
|       sed -i -E 's|\$WITH_RUNTIME|no|g' qt/launcher-specific | ||||
|     override-build: | | ||||
|       snapcraftctl build | ||||
|       craftctl default | ||||
|       gcc -Wall -O2 -o bindtextdomain.so -fPIC -shared src/bindtextdomain.c -ldl | ||||
|  | ||||
|       echo "#!/bin/bash" > desktop-launch | ||||
| @ -207,10 +224,10 @@ parts: | ||||
|  | ||||
|       cat common/mark-and-exec >> desktop-launch | ||||
|  | ||||
|       install -D -m755 desktop-launch $SNAPCRAFT_PART_INSTALL/bin/desktop-launch | ||||
|       install -D -m644 bindtextdomain.so $SNAPCRAFT_PART_INSTALL/lib/bindtextdomain.so | ||||
|       install -D -m755 desktop-launch $CRAFT_PART_INSTALL/bin/desktop-launch | ||||
|       install -D -m644 bindtextdomain.so $CRAFT_PART_INSTALL/lib/bindtextdomain.so | ||||
|  | ||||
|       mkdir -pv $SNAPCRAFT_PART_INSTALL/gnome-platform | ||||
|       mkdir -pv $CRAFT_PART_INSTALL/gnome-platform | ||||
|  | ||||
|   scripts: | ||||
|     plugin: dump | ||||
| @ -238,7 +255,7 @@ parts: | ||||
|     after: [alsa-mixin] | ||||
|     source: . | ||||
|     plugin: nil | ||||
|     parse-info: [usr/share/metainfo/jami.appdata.xml] | ||||
|     parse-info: [usr/share/metainfo/net.jami.Jami.metainfo.xml] | ||||
|     stage: | ||||
|       - -usr/lib/x86_64-linux-gnu/liblber-2.4.so* | ||||
|       - -usr/lib/x86_64-linux-gnu/libldap_r-2.4.so* | ||||
| @ -247,42 +264,48 @@ parts: | ||||
|     build-environment: | ||||
|       - QT_BASE_DIR: "/usr/lib/libqt-jami" | ||||
|       - PATH: "$QT_BASE_DIR/bin:$PATH" | ||||
|       - LD_LIBRARY_PATH: "$QT_BASE_DIR/lib:$LD_LIBRARY_PATH" | ||||
|       - PKG_CONFIG_PATH: "$QT_BASE_DIR/lib/pkgconfig:$PKG_CONFIG_PATH" | ||||
|       - LD_LIBRARY_PATH: "$QT_BASE_DIR/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" | ||||
|       - PKG_CONFIG_PATH: "$QT_BASE_DIR/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" | ||||
|     override-pull: | | ||||
|       ls | ||||
|       snapcraftctl pull | ||||
|       craftctl default | ||||
|       sed -i -E 's|(tmpName) << (PACKAGE_NAME << "_shm_")|\1 << "snap.jami." << \2|' ./daemon/src/media/video/sinkclient.cpp | ||||
|       sed -i -E 's|^Icon=.*|Icon=${SNAP}/usr/share/icons/hicolor/scalable/apps/jami.svg|' extras/data/jami.desktop | ||||
|       sed -i -E 's|^Icon=.*|Icon=${SNAP}/usr/share/icons/hicolor/scalable/apps/net.jami.Jami.svg|' extras/data/net.jami.Jami.desktop | ||||
|     override-build: | | ||||
|       cd $SNAPCRAFT_PART_BUILD/daemon/contrib | ||||
|       $CRAFT_PART_BUILD/extras/packaging/gnu-linux/scripts/install-pipewire-from-source.sh | ||||
|  | ||||
|       cd $CRAFT_PART_BUILD/daemon/contrib | ||||
|       mkdir -p native | ||||
|       cd native | ||||
|       ../bootstrap | ||||
|       make .ffmpeg | ||||
|       make | ||||
|  | ||||
|       cd $SNAPCRAFT_PART_BUILD/daemon | ||||
|       cd $CRAFT_PART_BUILD/daemon | ||||
|       ./autogen.sh | ||||
|       ./configure --prefix=/usr --without-dbus | ||||
|       make -j$SNAPCRAFT_PARALLEL_BUILD_COUNT | ||||
|       DESTDIR=$SNAPCRAFT_PART_INSTALL make install | ||||
|       make -j$CRAFT_PARALLEL_BUILD_COUNT | ||||
|       DESTDIR=$CRAFT_PART_INSTALL make install | ||||
|  | ||||
|       cd $SNAPCRAFT_PART_BUILD/ | ||||
|       cd $CRAFT_PART_BUILD/ | ||||
|       mkdir build | ||||
|       cd build | ||||
|       cmake .. -DENABLE_LIBWRAP=true \ | ||||
|                -DLIBJAMI_BUILD_DIR=$SNAPCRAFT_PART_BUILD/daemon/src \ | ||||
|                -DLIBJAMI_BUILD_DIR=$CRAFT_PART_BUILD/daemon/src \ | ||||
|                -DCMAKE_INSTALL_PREFIX=/usr \ | ||||
|                -DCMAKE_BUILD_TYPE=Release | ||||
|       make -j$SNAPCRAFT_PARALLEL_BUILD_COUNT | ||||
|       DESTDIR=$SNAPCRAFT_PART_INSTALL make install | ||||
|                -DCMAKE_BUILD_TYPE=Release \ | ||||
|                -DCMAKE_PREFIX_PATH=$QT_BASE_DIR \ | ||||
|                -DBUILD_VERSION=BUILD_VERSION_PLACEHOLDER \ | ||||
|                -DBUILD_TESTING=Off | ||||
|       make -j$CRAFT_PARALLEL_BUILD_COUNT | ||||
|       DESTDIR=$CRAFT_PART_INSTALL make install | ||||
|     build-packages: | ||||
|     - autoconf | ||||
|     - autoconf-archive | ||||
|     - automake | ||||
|     - autopoint | ||||
|     - bzip2 | ||||
|     - cmake | ||||
|     - curl | ||||
|     - gcc | ||||
|     - g++ | ||||
| @ -308,8 +331,7 @@ parts: | ||||
|     - libexpat1-dev | ||||
|     - libjsoncpp-dev | ||||
|     - libnm-dev # connectivityChanged() | ||||
|     - libdbus-1-dev # dbus | ||||
|     - libdbus-c++-dev | ||||
|     - libsystemd-dev # sdbus-cpp | ||||
|     - libpulse-dev # pulse | ||||
|     - libudev-dev | ||||
|     - libopus-dev # Avoid to build opus from contrib | ||||
| @ -320,6 +342,13 @@ parts: | ||||
|     - libgnutls28-dev # TLS | ||||
|     - gnutls-bin | ||||
|     - libssl-dev | ||||
|     - git            # PipeWire build dependencies | ||||
|     - meson          # | ||||
|     - libasound2-dev # | ||||
|     - libdbus-1-dev  # These packages are needed by the | ||||
|     - libglib2.0-dev # install-pipewire-from-source.sh | ||||
|     - ninja-build    # script in order to build PipeWire | ||||
|     - pkg-config     # from source. | ||||
|     stage-packages: | ||||
|     - libgnutls30 | ||||
|     - libavutil56 | ||||
| @ -327,7 +356,7 @@ parts: | ||||
|     - libegl1 | ||||
|     - libgbm1 | ||||
|     - libgudev-1.0-0 | ||||
|     - libjsoncpp1 | ||||
|     - libjsoncpp25 | ||||
|     - libllvm12 | ||||
|     - libminizip1 | ||||
|     - libnm0 | ||||
| @ -360,6 +389,6 @@ parts: | ||||
|     - -usr/lib/libqt-jami/bin/ | ||||
|     - -usr/lib/libqt-jami/docs/ | ||||
|     - -usr/lib/libqt-jami/examples/ | ||||
|     - -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libLLVM-*.so* | ||||
|     - -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libclang-*.so* | ||||
|     - -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libflite*.so* | ||||
|     - -usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libLLVM-*.so* | ||||
|     - -usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libclang-*.so* | ||||
|     - -usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libflite*.so* | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| #!/usr/bin/env bash | ||||
| # | ||||
| # Copyright (C) 2016-2023 Savoir-faire Linux Inc. | ||||
| # Copyright (C) 2016-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com> | ||||
| # Author: Amin Bandali <amin.bandali@savoirfairelinux.com> | ||||
| @ -47,6 +47,9 @@ if [ ! -f "${qt_deb_path}" ] || [ "${FORCE_REBUILD_QT}" = "true" ]; then | ||||
|         flock 9                 # block until the lock file is gone | ||||
|         test -f "${qt_deb_path}" && exit 0 # check again | ||||
|  | ||||
|         # Build and install the correct version of FFmpeg. | ||||
|         /opt/install-ffmpeg-for-qt.sh | ||||
|  | ||||
|         # Build Qt. | ||||
|         mkdir /opt/libqt-jami-build | ||||
|         cd /opt/libqt-jami-build | ||||
|  | ||||
| @ -1,9 +1,6 @@ | ||||
| #!/usr/bin/env bash | ||||
| # | ||||
| # Copyright (C) 2016-2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com> | ||||
| # Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com> | ||||
| # Copyright (C) 2016-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
| @ -35,18 +32,17 @@ rpmdev-setuptree | ||||
|  | ||||
| # Copy the source tarball. | ||||
| cp --reflink=auto "/src/$RELEASE_TARBALL_FILENAME" /root/rpmbuild/SOURCES | ||||
|  | ||||
| cp patches/*.patch /root/rpmbuild/SOURCES/ | ||||
|  | ||||
| QT_JAMI_PREFIX="/usr/lib64/qt-jami" | ||||
| PATH="${QT_JAMI_PREFIX}/bin:${PATH}" | ||||
| LD_LIBRARY_PATH="${QT_JAMI_PREFIX}/lib:${LD_LIBRARY_PATH}" | ||||
| PKG_CONFIG_PATH="${QT_JAMI_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}" | ||||
| CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}/lib/cmake:${CMAKE_PREFIX_PATH}" | ||||
| CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}:${CMAKE_PREFIX_PATH}" | ||||
| QT_MAJOR=6 | ||||
| QT_MINOR=4 | ||||
| QT_MINOR=8 | ||||
| QT_PATCH=3 | ||||
| QT_RELEASE_PATCH=1 | ||||
| QT_RELEASE_PATCH=0 | ||||
|  | ||||
| QT_MAJOR_MINOR=${QT_MAJOR}.${QT_MINOR} | ||||
| QT_MAJOR_MINOR_PATCH=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH} | ||||
| @ -54,7 +50,7 @@ QT_MAJOR_MINOR_PATCH=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH} | ||||
| QT_TARBALL_URL=https://download.qt.io/archive/qt/$QT_MAJOR_MINOR/\ | ||||
| $QT_MAJOR_MINOR_PATCH/single/qt-everywhere-src-$QT_MAJOR_MINOR_PATCH.tar.xz | ||||
|  | ||||
| QT_TARBALL_SHA256="29a7eebdbba0ea57978dea6083709c93593a60f0f3133a3de08b9571ee8eaab4" | ||||
| QT_TARBALL_SHA256="cdd3a69967208276bb01af7ace7dba0ba53e679f886a4cbe624225c60fb73f2c" | ||||
| QT_TARBALL_FILE_NAME=$(basename "$QT_TARBALL_URL") | ||||
| CACHED_QT_TARBALL=$TARBALLS/$QT_TARBALL_FILE_NAME | ||||
|  | ||||
| @ -71,6 +67,10 @@ if [ ! -f "${RPM_PATH}" ]; then | ||||
|         flock 9             # block until the lock is available | ||||
|         test -f "$RPM_PATH" && exit 0 # check again | ||||
|  | ||||
|         # Build and install the correct version of FFmpeg. | ||||
|         /opt/install-ffmpeg-for-qt.sh | ||||
|  | ||||
|         # Build Qt. | ||||
|         mkdir /opt/qt-jami-build | ||||
|         cd /opt/qt-jami-build | ||||
|         tar xf "/src/$RELEASE_TARBALL_FILENAME" \ | ||||
| @ -105,18 +105,14 @@ if [ ! -f "${RPM_PATH}" ]; then | ||||
|         # Cache the built Qt RPM package. | ||||
|         if [[ "${DISTRIBUTION:0:4}" == "rhel" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el8.x86_64.rpm "${RPM_PATH}" | ||||
|         elif [[ "${DISTRIBUTION}" == "fedora_33" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc33.x86_64.rpm "${RPM_PATH}" | ||||
|         elif [[ "${DISTRIBUTION}" == "fedora_34" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc34.x86_64.rpm "${RPM_PATH}" | ||||
|         elif [[ "${DISTRIBUTION}" == "fedora_35" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc35.x86_64.rpm "${RPM_PATH}" | ||||
|         elif [[ "${DISTRIBUTION}" == "fedora_36" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc36.x86_64.rpm "${RPM_PATH}" | ||||
|         elif [[ "${DISTRIBUTION}" == "fedora_37" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc37.x86_64.rpm "${RPM_PATH}" | ||||
|         elif [[ "${DISTRIBUTION}" == "fedora_38" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc38.x86_64.rpm "${RPM_PATH}" | ||||
|         elif [[ "${DISTRIBUTION}" == "fedora_41" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc41.x86_64.rpm "${RPM_PATH}" | ||||
|         elif [[ "${DISTRIBUTION}" == "fedora_42" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc42.x86_64.rpm "${RPM_PATH}" | ||||
|         elif [[ "${DISTRIBUTION}" == "alma_9" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el9.x86_64.rpm "${RPM_PATH}" | ||||
|         elif [[ "${DISTRIBUTION}" == "alma_10" ]]; then | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el10.x86_64.rpm "${RPM_PATH}" | ||||
|         else | ||||
|             cp /root/rpmbuild/RPMS/x86_64/jami-libqt-*.rpm "${RPM_PATH}" | ||||
|         fi | ||||
| @ -140,7 +136,10 @@ rpmbuild --define "debug_package %{nil}" -ba jami-libclient.spec | ||||
| rpmbuild --define "debug_package %{nil}" -ba jami-qt.spec | ||||
|  | ||||
| # Build the Qt client. | ||||
| rpmbuild --define "debug_package %{nil}" -ba jami.spec | ||||
| rpmbuild --define "debug_package %{nil}" \ | ||||
|          --define "BUILD_VERSION ${BUILD_VERSION}" \ | ||||
|          --define "QT_JAMI_PREFIX ${QT_JAMI_PREFIX}" \ | ||||
|          -ba jami.spec | ||||
|  | ||||
| # Move the built packages to the output directory. | ||||
| mv /root/rpmbuild/RPMS/*/* /opt/output | ||||
|  | ||||
| @ -1,8 +1,6 @@ | ||||
| #!/usr/bin/env bash | ||||
| # | ||||
| # Copyright (C) 2020-2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Amin Bandali <amin.bandali@savoirfairelinux.com> | ||||
| # Copyright (C) 2020-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
| @ -31,6 +29,9 @@ cp -r extras/packaging/gnu-linux/rules/snap/${SNAP_PKG_NAME}/snapcraft.yaml . | ||||
| # set the version and tarball filename | ||||
| sed -i "s/RELEASE_VERSION/${RELEASE_VERSION}/g" snapcraft.yaml | ||||
|  | ||||
| # set the build version of the app | ||||
| sed -i "s/BUILD_VERSION_PLACEHOLDER/${BUILD_VERSION}/g" snapcraft.yaml | ||||
|  | ||||
| snapcraft # requires snapcraft >= 4.8 | ||||
|  | ||||
| # move the built snap to output | ||||
|  | ||||
| @ -1,9 +1,6 @@ | ||||
| #!/usr/bin/env bash | ||||
| # | ||||
| # Copyright (C) 2016-2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com> | ||||
| # Author: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> | ||||
| # Copyright (C) 2016-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
| @ -83,9 +80,6 @@ EOF | ||||
|     find ./extras/packaging/gnu-linux/packages -type f -name '*.ddeb' -print0 | xargs -0 -I{} mv {} {}.deb | ||||
|  | ||||
|     for package in ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*/*.deb; do | ||||
|         echo "## signing: ${package} ##" | ||||
|         dpkg-sig -k ${KEYID} --sign builder ${package} | ||||
|  | ||||
|         echo "## including ${package} ##" | ||||
|         package_name=$(dpkg -I ${package} | grep -m 1 Package: | awk '{print $2}') | ||||
|         package_arch=$(dpkg -I ${package} | grep -m 1 Architecture: | awk '{print $2}') | ||||
| @ -272,7 +266,7 @@ function package() | ||||
| { | ||||
|     if [[ $DISTRIBUTION =~ debian|ubuntu|raspbian|guix-deb-pack ]]; then | ||||
|         package_deb | ||||
|     elif [[ $DISTRIBUTION =~ fedora|rhel|opensuse|guix-rpm-pack ]]; then | ||||
|     elif [[ $DISTRIBUTION =~ alma|fedora|rhel|opensuse|guix-rpm-pack ]]; then | ||||
|         package_rpm | ||||
|     elif [[ $DISTRIBUTION =~ snap ]]; then | ||||
|         package_snap | ||||
|  | ||||
| @ -7,9 +7,9 @@ then | ||||
|     apt-get remove cmake cmake-data -y | ||||
| fi | ||||
|  | ||||
| wget https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-Linux-x86_64.sh \ | ||||
| wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.sh\ | ||||
|       -q -O /tmp/cmake-install.sh | ||||
| echo "aa5a0e0dd5594b7fd7c107a001a2bfb5f83d9b5d89cf4acabf423c5d977863ad  /tmp/cmake-install.sh" | sha256sum --check  | ||||
| echo "63cb3406f5320edc94504212fe75e8625751ec21e8d5dab76d8ed67ed780066e  /tmp/cmake-install.sh" | sha256sum --check | ||||
| chmod u+x /tmp/cmake-install.sh | ||||
| /tmp/cmake-install.sh --skip-license --prefix=/usr/local/ | ||||
| rm /tmp/cmake-install.sh | ||||
							
								
								
									
										28
									
								
								extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										28
									
								
								extras/packaging/gnu-linux/scripts/install-ffmpeg-for-qt.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,28 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| # Building Qt Multimedia requires the FFmpeg headers and libraries to be installed: | ||||
| #     https://doc.qt.io/qt-6.8/qtmultimedia-building-from-source.html | ||||
| # For Qt 6.8.3, the recommended FFmpeg version is 7.1: | ||||
| #     https://doc.qt.io/qt-6.8/qtmultimedia-index.html#target-platform-and-backend-notes | ||||
| # This script is based on the instructions at: | ||||
| #     https://doc.qt.io/qt-6.8/qtmultimedia-building-ffmpeg-linux.html | ||||
|  | ||||
| set -e | ||||
|  | ||||
| INSTALL_DIR=/opt/libqt-jami-ffmpeg | ||||
|  | ||||
| cd /tmp | ||||
| git clone --branch n11.1.5.2 https://github.com/FFmpeg/nv-codec-headers.git nv-codec-headers | ||||
| cd nv-codec-headers | ||||
| make -j install | ||||
|  | ||||
| cd /tmp | ||||
| git clone --branch n7.1.1 https://git.ffmpeg.org/ffmpeg.git ffmpeg | ||||
| cd ffmpeg | ||||
| mkdir build | ||||
| cd build | ||||
| ../configure --prefix=${INSTALL_DIR} --disable-doc --enable-network --enable-shared | ||||
| make -j install | ||||
|  | ||||
| cd /tmp | ||||
| rm -rf nv-codec-headers ffmpeg | ||||
							
								
								
									
										11
									
								
								extras/packaging/gnu-linux/scripts/install-gcc-debian.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								extras/packaging/gnu-linux/scripts/install-gcc-debian.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| VERSION=$1 | ||||
|  | ||||
| apt-get install -y -o Acquire::Retries=10 \ | ||||
|     gcc-$VERSION \ | ||||
|     g++-$VERSION | ||||
|  | ||||
| rm /usr/bin/gcc /usr/bin/g++ | ||||
| ln -s /usr/bin/gcc-$VERSION /usr/bin/gcc | ||||
| ln -s /usr/bin/g++-$VERSION /usr/bin/g++ | ||||
							
								
								
									
										30
									
								
								extras/packaging/gnu-linux/scripts/install-pipewire-from-source.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								extras/packaging/gnu-linux/scripts/install-pipewire-from-source.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,30 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| # The purpose of this script is to build PipeWire from source in a snap based on core22 / Ubuntu 22.04 | ||||
| # It must be called in the "override-build" section of the relevant part in snapcraft.yaml | ||||
|  | ||||
| set -e | ||||
|  | ||||
| OLD_WD=$(pwd) | ||||
| cd /tmp | ||||
|  | ||||
| # Build PipeWire 1.0.5 and install it in the /usr directory of the build environment | ||||
| wget -q https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/1.0.5/pipewire-1.0.5.tar.gz | ||||
| echo "c5a5de26d684a1a84060ad7b6131654fb2835e03fccad85059be92f8e3ffe993  pipewire-1.0.5.tar.gz" | sha256sum --check | ||||
| tar xzf pipewire-1.0.5.tar.gz | ||||
| cd pipewire-1.0.5 | ||||
| meson setup builddir -Dsession-managers=media-session -Dalsa=disabled -Dprefix=/usr | ||||
| meson compile -C builddir | ||||
| meson install -C builddir | ||||
|  | ||||
| # The files installed by the previous command are only for the "Build" step of the snap | ||||
| # creation process (https://snapcraft.io/docs/how-snapcraft-builds). In order to ensure | ||||
| # that PipeWire is installed in the final snap archive, we also need to copy all the | ||||
| # required files under the $CRAFT_PART_INSTALL directory. | ||||
| meson configure builddir -Dprefix=$CRAFT_PART_INSTALL/usr/ | ||||
| meson install -C builddir | ||||
|  | ||||
| # Cleanup | ||||
| cd /tmp | ||||
| rm -rf pipewire-1.0.5  pipewire-1.0.5.tar.gz | ||||
| cd $OLD_WD | ||||
| @ -1,8 +1,6 @@ | ||||
| #!/usr/bin/env bash | ||||
| # | ||||
| # Copyright (C) 2021-2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Amin Bandali <amin.bandali@savoirfairelinux.com> | ||||
| # Copyright (C) 2021-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
|  | ||||
| @ -1,8 +1,6 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # Copyright (C) 2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # Author: Amin Bandali <amin.bandali@savoirfairelinux.com> | ||||
| # Copyright (C) 2024-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
|  | ||||
| @ -34,7 +34,7 @@ cat << EOFILE > ${REPO_FOLDER}/${SPARKLE_FILE} | ||||
|             <pubDate>$DATE_RFC2822</pubDate> | ||||
|             <sparkle:version>${BUILD}</sparkle:version> | ||||
|             <sparkle:shortVersionString>${VERSION}</sparkle:shortVersionString> | ||||
|             <sparkle:minimumSystemVersion>10.15.0</sparkle:minimumSystemVersion> | ||||
|             <sparkle:minimumSystemVersion>12.0</sparkle:minimumSystemVersion> | ||||
|             <enclosure url="${REPO_URL}/$(basename ${PACKAGE})" type="application/octet-stream" $(./sign_update ${PACKAGE}) /> | ||||
|         </item> | ||||
| $(echo -e "${ITEMS}") | ||||
|  | ||||
							
								
								
									
										32
									
								
								extras/patches/0001-fix-qm_install_package-function.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								extras/patches/0001-fix-qm_install_package-function.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | ||||
| From 56830725e641705e0113a068ee58df7029202439 Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?= | ||||
|  <francois-simon.fauteux-chapleau@savoirfairelinux.com> | ||||
| Date: Wed, 2 Apr 2025 20:54:02 -0400 | ||||
| Subject: [PATCH] fix qm_install_package function | ||||
|  | ||||
| --- | ||||
|  cmake/modules/private/InstallPackage.cmake | 3 ++- | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
|  | ||||
| diff --git a/qmsetup/cmake/modules/private/InstallPackage.cmake b/qmsetup/cmake/modules/private/InstallPackage.cmake | ||||
| index 70174bc..f067de5 100644 | ||||
| --- a/qmsetup/cmake/modules/private/InstallPackage.cmake | ||||
| +++ b/qmsetup/cmake/modules/private/InstallPackage.cmake | ||||
| @@ -101,6 +101,7 @@ function(qm_install_package _name) | ||||
|          execute_process( | ||||
|              COMMAND ${CMAKE_COMMAND} -S ${_src_dir} -B ${_build_dir} | ||||
|              ${_extra_args} ${_build_type} | ||||
| +            "-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}" | ||||
|              "-DCMAKE_INSTALL_PREFIX=${_install_dir}" ${FUNC_CONFIGURE_ARGS} | ||||
|              OUTPUT_FILE ${_log_file} | ||||
|              ERROR_FILE ${_log_file} | ||||
| @@ -150,4 +151,4 @@ function(qm_install_package _name) | ||||
|      if(FUNC_RESULT_PATH) | ||||
|          set(${FUNC_RESULT_PATH} ${_install_cmake_dir} PARENT_SCOPE) | ||||
|      endif() | ||||
| -endfunction() | ||||
| \ No newline at end of file | ||||
| +endfunction() | ||||
| --  | ||||
| 2.34.1 | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| #!/usr/bin/env python3 | ||||
| # -*- coding: utf-8 -*- | ||||
| """ | ||||
| Build, test, and package the project. | ||||
|  | ||||
| @ -8,14 +9,15 @@ and package the project for Windows. | ||||
| usage: build.py [-q] [-h] [-a ARCH] [-c CONFIG] [-t] [-i] [-v] {pack} ... | ||||
|  | ||||
| optional arguments: | ||||
|   -q, --qt PATH         Sets the Qt installation path | ||||
|   -a ARCH, --arch ARCH  Sets the build architecture | ||||
|   -q, --qt PATH             Sets the Qt installation path | ||||
|   -a ARCH, --arch ARCH      Sets the build architecture | ||||
|   -c CONFIG, --config CONFIG | ||||
|                         Sets the build configuration type | ||||
|   -t, --tests           Build and run tests | ||||
|   -i, --init            Initialize submodules | ||||
|   -v, --version         Show the version number and exit | ||||
|   -s, --skip-build      Only do packaging or run tests, skip building | ||||
|                             Sets the build configuration type | ||||
|   -t, --tests               Build and run tests | ||||
|   -i, --init                Initialize submodules | ||||
|   -v, --version             Show the version number and exit | ||||
|   -s, --skip-build          Only do packaging or run tests, skip building | ||||
|   --enable-crash-reports    Enable crash reports | ||||
|  | ||||
| positional arguments: | ||||
|   {pack} | ||||
| @ -27,7 +29,7 @@ mutually exclusive required arguments: | ||||
|   -z, --zip         Build portable archive | ||||
|  | ||||
| examples: | ||||
| 1.  build.py --qt=C:/Qt/6.2.3/msvc2019_64  # Build the app using a specific Qt | ||||
| 1.  build.py --qt=C:/Qt/6.6.2/msvc2019_64  # Build the app using a specific Qt | ||||
| 2.  build.py --init pack --msi             # Build the app and an MSI installer | ||||
| 3.  build.py --init --tests                # Build the app and run tests | ||||
|     build.py pack --zip --skip-build       # Generate a 7z archive of the app | ||||
| @ -64,6 +66,20 @@ this_dir = os.path.dirname(os.path.realpath(__file__)) | ||||
| repo_root_dir = os.path.abspath(os.path.join(this_dir, os.pardir, os.pardir)) | ||||
| build_dir = os.path.join(repo_root_dir, "build") | ||||
|  | ||||
| def get_latest_toolset_version(): | ||||
|     """Get the latest toolset version.""" | ||||
|     # Get the visual studio version. Use only the major version number. | ||||
|     # Then: toolset = 2022 ? "v143" : 2019 ? "v142" : 2017 ? "v141" : "v140" | ||||
|     vs_ver = get_vs_prop("installationVersion") | ||||
|     if vs_ver is None: | ||||
|         return None | ||||
|     vs_ver = int(vs_ver.split(".")[0]) | ||||
|     if vs_ver == 17: | ||||
|         return "v143" | ||||
|     elif vs_ver == 16: | ||||
|         return "v142" | ||||
|     else: | ||||
|         return "v141" | ||||
|  | ||||
| def find_latest_qt_path(): | ||||
|     """Find the latest Qt installation path.""" | ||||
| @ -189,40 +205,33 @@ def init_submodules(): | ||||
|     """Initialize any git submodules in the project.""" | ||||
|     print("Initializing submodules...") | ||||
|  | ||||
|     if execute_cmd(["git", "submodule", "update", "--init"], False): | ||||
|     # Init the client submodules for Windows other than the daemon. | ||||
|     submodules = [ | ||||
|         "3rdparty/qrencode-win32", | ||||
|         "3rdparty/SortFilterProxyModel", | ||||
|         "3rdparty/md4c", | ||||
|         "3rdparty/tidy-html5", | ||||
|         "3rdparty/zxing-cpp", | ||||
|         "3rdparty/hunspell", | ||||
|     ] | ||||
|     if execute_cmd(["git", "submodule", "update", "--init" ] + submodules, | ||||
|                    False): | ||||
|         print("Submodule initialization error.") | ||||
|     else: | ||||
|         if execute_cmd(["git", "submodule", "update", "--recursive"], False): | ||||
|             print("Submodule recursive checkout error.") | ||||
|         else: | ||||
|             print("Submodule recursive checkout finished.") | ||||
|         sys.exit(1) | ||||
|  | ||||
|  | ||||
| def build_deps(): | ||||
|     """Build the dependencies for the project.""" | ||||
|     print('Patching and building qrencode') | ||||
|     apply_cmd = [ | ||||
|         'git', | ||||
|         'apply', | ||||
|         '--reject', | ||||
|         '--ignore-whitespace', | ||||
|         '--whitespace=fix' | ||||
|     ] | ||||
|     print('Building qrencode') | ||||
|     qrencode_dir = os.path.join(repo_root_dir, '3rdparty', 'qrencode-win32') | ||||
|     patch_file = os.path.join(repo_root_dir, 'qrencode-win32.patch') | ||||
|     apply_cmd.append(patch_file) | ||||
|     if execute_cmd(apply_cmd, False, None, qrencode_dir): | ||||
|         print("Couldn't patch qrencode-win32.") | ||||
|  | ||||
|     vs_env_vars = {} | ||||
|     vs_env_vars.update(get_vs_env()) | ||||
|  | ||||
|     msbuild_args = get_ms_build_args("x64", "Release-Lib") | ||||
|  | ||||
|     toolset = get_latest_toolset_version() | ||||
|     print(f'Using toolset {toolset}') | ||||
|     msbuild_args = get_ms_build_args("x64", "Release-Lib", toolset) | ||||
|     proj_path = os.path.join( | ||||
|         qrencode_dir, "qrencode-win32", "vc8", "qrcodelib", "qrcodelib.vcxproj" | ||||
|         qrencode_dir, "qrencode-win32", "vc15", "qrcodelib", "qrcodelib.vcxproj" | ||||
|     ) | ||||
|  | ||||
|     build_project(msbuild_args, proj_path, vs_env_vars) | ||||
|  | ||||
|  | ||||
| @ -254,7 +263,7 @@ def cmake_build(config_str, env_vars, cmake_build_dir): | ||||
|     return True | ||||
|  | ||||
|  | ||||
| def build(config_str, qt_dir, tests): | ||||
| def build(config_str, qt_dir, tests, build_version, enable_crash_reports, crash_report_url=None): | ||||
|     """Use cmake to build the project.""" | ||||
|     print("Building with Qt at " + qt_dir) | ||||
|  | ||||
| @ -263,23 +272,31 @@ def build(config_str, qt_dir, tests): | ||||
|  | ||||
|     # Get the daemon bin/include directories. | ||||
|     daemon_dir = os.path.join(repo_root_dir, "daemon") | ||||
|     daemon_bin_dir = os.path.join( | ||||
|         daemon_dir, "build", "x64", "ReleaseLib_win32", "bin") | ||||
|     daemon_bin_dir = os.path.join(daemon_dir, "build", "lib") | ||||
|  | ||||
|     # We need to update the minimum SDK version to be able to | ||||
|     # build with system theme support | ||||
|     cmake_options = [ | ||||
|         "-DWITH_DAEMON_SUBMODULE=ON", | ||||
|         "-DJAMICORE_AS_SUBDIR=ON", | ||||
|         "-DCMAKE_PREFIX_PATH=" + qt_dir, | ||||
|         "-DCMAKE_MSVCIDE_RUN_PATH=" + qt_dir + "\\bin", | ||||
|         "-DCMAKE_INSTALL_PREFIX=" + daemon_bin_dir, | ||||
|         "-DLIBJAMI_INCLUDE_DIR=" + daemon_dir + "\\src\\jami", | ||||
|         "-DCMAKE_INSTALL_PREFIX=" + os.getcwd(), | ||||
|         "-DCMAKE_SYSTEM_VERSION=" + WIN_SDK_VERSION, | ||||
|         "-DCMAKE_BUILD_TYPE=" + "Release", | ||||
|         "-DENABLE_TESTS=" + str(tests).lower(), | ||||
|         "-DBUILD_TESTING=" + str(tests).lower(), | ||||
|         "-DBETA=" + str((0, 1)[config_str == "Beta"]), | ||||
|     ] | ||||
|  | ||||
|     if enable_crash_reports: | ||||
|         cmake_options.append("-DENABLE_CRASHREPORTS=ON") | ||||
|         if crash_report_url: | ||||
|             cmake_options.append(f"-DCRASH_REPORT_URL={crash_report_url}") | ||||
|     else: | ||||
|         cmake_options.append("-DENABLE_CRASHREPORTS=OFF") | ||||
|  | ||||
|     if build_version: | ||||
|         cmake_options.append("-DBUILD_VERSION=" + build_version) | ||||
|  | ||||
|     # Make sure the build directory exists. | ||||
|     if not os.path.exists(build_dir): | ||||
|         os.makedirs(build_dir) | ||||
| @ -310,8 +327,8 @@ def deploy_runtimes(qt_dir): | ||||
|         shutil.copy(os.path.join(rel_path, src), runtime_dir) | ||||
|  | ||||
|     print("Copying libjami dependencies") | ||||
|     install_file("contrib/build/openssl/libcrypto-1_1-x64.dll", daemon_dir) | ||||
|     install_file("contrib/build/openssl/libssl-1_1-x64.dll", daemon_dir) | ||||
|     install_file("contrib/build/openssl/libcrypto-3-x64.dll", daemon_dir) | ||||
|     install_file("contrib/build/openssl/libssl-3-x64.dll", daemon_dir) | ||||
|     # Ringtone files (ul,ogg,wav,opus files in the daemon ringtone dir). | ||||
|  | ||||
|     print("Copying ringtones") | ||||
| @ -337,11 +354,15 @@ def deploy_runtimes(qt_dir): | ||||
|     install_file("resources/images/jami.ico", repo_root_dir) | ||||
|  | ||||
|     # windeployqt | ||||
|     print("Running windeployqt (this may take a while)...") | ||||
|     win_deploy_qt = os.path.join(qt_dir, "bin", "windeployqt.exe") | ||||
|     print(f"Running windeployqt ({win_deploy_qt}) (this may take a while)...") | ||||
|     qml_src_dir = os.path.join(repo_root_dir, "src", "app") | ||||
|     os.environ["VCINSTALLDIR"] = os.path.join( | ||||
|         get_vs_prop("installationPath"), "VC") | ||||
|     installation_dir = get_vs_prop("installationPath") | ||||
|     if not installation_dir: | ||||
|         print("Visual Studio not found. Please install Visual Studio 2017 or " | ||||
|               "later.") | ||||
|         sys.exit(1) | ||||
|     os.environ["VCINSTALLDIR"] = os.path.join(installation_dir, "VC") | ||||
|     executable = os.path.join(runtime_dir, "Jami.exe") | ||||
|     execute_cmd([win_deploy_qt, "--verbose", "1", "--no-compiler-runtime", | ||||
|                  "--qmldir", qml_src_dir, "--release", executable], | ||||
| @ -371,11 +392,19 @@ def run_tests(config_str, qt_dir): | ||||
|         qt_dir, 'bin', 'QtWebEngineProcess.exe') | ||||
|     os.environ["QML2_IMPORT_PATH"] = os.path.join(qt_dir, "qml") | ||||
|  | ||||
|     cmd = ["ctest", "-V", "-C", config_str] | ||||
|     # On Windows, when running on a jenkins slave, the QML tests don't output | ||||
|     # anything to stdout/stderr. Workaround by outputting to a file and then | ||||
|     # printing the contents of the file. | ||||
|     if os.environ.get("JENKINS_URL"): | ||||
|         cmd += ["--output-log", "test.log", "--quiet"] | ||||
|     tests_dir = os.path.join(build_dir, "tests") | ||||
|     if execute_cmd(["ctest", "-V", "-C", config_str], | ||||
|                    False, None, tests_dir): | ||||
|         print("Tests failed.") | ||||
|         sys.exit(1) | ||||
|     exit_code = execute_cmd(cmd, False, None, tests_dir) | ||||
|     # Print the contents of the log file. | ||||
|     if os.environ.get("JENKINS_URL"): | ||||
|         with open(os.path.join(tests_dir, "test.log"), "r") as file: | ||||
|             print(file.read()) | ||||
|     sys.exit(exit_code) | ||||
|  | ||||
|  | ||||
| def generate_msi(version): | ||||
| @ -444,6 +473,8 @@ def parse_args(): | ||||
|                         help='Sets the Qt root path') | ||||
|     parser.add_argument( | ||||
|         "-a", "--arch", default="x64", help="Sets the build architecture") | ||||
|     parser.add_argument( | ||||
|         "--build-version", help="Sets the build version string used for defining app build version") | ||||
|     parser.add_argument( | ||||
|         "-t", "--tests", action="store_true", help="Build and run tests") | ||||
|     parser.add_argument( | ||||
| @ -455,17 +486,24 @@ def parse_args(): | ||||
|     parser.add_argument( | ||||
|         "-i", "--init", action="store_true", help="Initialize submodules") | ||||
|     parser.add_argument( | ||||
|         '-sd', | ||||
|         '--skip-deploy', | ||||
|         action='store_true', | ||||
|         default=False, | ||||
|         help='Force skip deployment of runtime files needed for packaging') | ||||
|     parser.add_argument( | ||||
|         "-sb", | ||||
|         "--skip-build", | ||||
|         action="store_true", | ||||
|         default=False, | ||||
|         help="Only do packaging or run tests, skip build step") | ||||
|     parser.add_argument( | ||||
|         '--enable-crash-reports', | ||||
|         action='store_true', | ||||
|         default=False, | ||||
|         help='Enable crash reporting') | ||||
|     parser.add_argument( | ||||
|         '--crash-report-url', | ||||
|         help='Override the crash report submission URL', | ||||
|         default=None) | ||||
|  | ||||
|     pack_arg_parser = subparsers.add_parser("pack") | ||||
|     pack_group = pack_arg_parser.add_mutually_exclusive_group(required=True) | ||||
| @ -483,7 +521,11 @@ def main(): | ||||
|         print("These scripts will only run on a 64-bit system for now.") | ||||
|         sys.exit(1) | ||||
|     if sys.platform == "win32": | ||||
|         vs_version = get_vs_prop("installationVersion").split(".")[0] | ||||
|         vs_version = get_vs_prop("installationVersion") | ||||
|         if vs_version is None: | ||||
|             print("Visual Studio version not found.") | ||||
|             sys.exit(1) | ||||
|         vs_version = vs_version.split(".")[0] | ||||
|         if vs_version is None or int(vs_version) < 15: | ||||
|             print("Visual Studio 2017 or later is required.") | ||||
|             sys.exit(1) | ||||
| @ -514,7 +556,10 @@ def main(): | ||||
|  | ||||
|     def do_build(do_tests): | ||||
|         if not parsed_args.skip_build: | ||||
|             build(config_str, parsed_args.qt, do_tests) | ||||
|             build(config_str, parsed_args.qt, do_tests, | ||||
|                   parsed_args.build_version, | ||||
|                   parsed_args.enable_crash_reports, | ||||
|                   parsed_args.crash_report_url) | ||||
|         if not parsed_args.skip_deploy: | ||||
|             deploy_runtimes(parsed_args.qt) | ||||
|  | ||||
|  | ||||
| @ -52,7 +52,7 @@ for ARCH in "${ARCHS[@]}"; do | ||||
|     # force to build every contrib | ||||
|     for dir in "$DAEMON"/contrib/src/*/; do | ||||
|       PKG=$(basename -- "$dir") | ||||
|       if [ "$PKG" != "dbus-cpp" ] && [ "$PKG" != "natpmp" ] && | ||||
|       if [ "$PKG" != "sdbus-cpp" ] && [ "$PKG" != "freetype" ] && | ||||
|         [ "$PKG" != "portaudio" ] && [ "$PKG" != "pthreads" ] && | ||||
|         [ "$PKG" != "lttng-ust" ] && [ "$PKG" != "openssl" ] && | ||||
|         [ "$PKG" != "media-sdk" ] && [ "$PKG" != "jack" ] && | ||||
| @ -99,6 +99,12 @@ for ARCH in "${ARCHS[@]}"; do | ||||
|   echo "$ARCH" | ||||
|   cd "$DAEMON" | ||||
|   HOST="${ARCH}-apple-darwin" | ||||
|   SDKROOT=$(xcrun --sdk macosx --show-sdk-path) | ||||
|  | ||||
|   CC="xcrun -sdk macosx clang" | ||||
|   CXX="xcrun -sdk macosx clang++" | ||||
|   CFLAGS="-arch $ARCH -isysroot $SDKROOT" | ||||
|   CXXFLAGS="-std=c++17 $CFLAGS" | ||||
|   CONFIGURE_FLAGS=" --without-dbus --host=${HOST} -with-contrib=$DAEMON/contrib/${ARCH}-apple-darwin${OS_VER} --prefix=${INSTALL}/daemon/$ARCH" | ||||
|  | ||||
|   if [ "${debug}" = "true" ]; then | ||||
| @ -113,7 +119,11 @@ for ARCH in "${ARCHS[@]}"; do | ||||
|   mkdir -p "build-macos-${ARCH}" | ||||
|   cd "build-macos-${ARCH}" | ||||
|  | ||||
|   "$DAEMON"/configure $CONFIGURE_FLAGS ARCH="$ARCH" || exit 1 | ||||
|   "$DAEMON"/configure $CONFIGURE_FLAGS ARCH="$ARCH" \ | ||||
|     CC="$CC $CFLAGS" \ | ||||
|     CXX="$CXX $CXXFLAGS" \ | ||||
|     CFLAGS="$CFLAGS" \ | ||||
|     CXXFLAGS="$CXXFLAGS" || exit 1 | ||||
|  | ||||
|   echo "$CONFIGURE_FLAGS" | ||||
|  | ||||
|  | ||||
| @ -1,61 +1,89 @@ | ||||
| #!/usr/bin/env bash | ||||
| set -e | ||||
|  | ||||
| # Flags: | ||||
|  | ||||
| # -a: architecture to build. Accepted values arm64, x86_64, unified | ||||
| # Usage: | ||||
| # ./build_qrencode.sh -a <architecture> | ||||
| # Accepted architectures: arm64, x86_64, unified | ||||
| # If no architecture is specified, the script builds for the host architecture. | ||||
|  | ||||
| # Initialize variables | ||||
| arch='' | ||||
| while getopts "a:" OPT; do | ||||
|   case "$OPT" in | ||||
|   a) | ||||
|     arch="${OPTARG}" | ||||
|     ;; | ||||
|   \?) | ||||
|     exit 1 | ||||
|     ;; | ||||
|     a) | ||||
|       arch="${OPTARG}" | ||||
|       ;; | ||||
|     \?) | ||||
|       echo "Invalid option: -$OPTARG" >&2 | ||||
|       echo "Usage: $0 [-a architecture]" | ||||
|       echo "Accepted architectures: arm64, x86_64, unified" | ||||
|       exit 1 | ||||
|       ;; | ||||
|   esac | ||||
| done | ||||
|  | ||||
| # Determine architectures to build | ||||
| if [[ "$arch" == 'unified' ]]; then | ||||
|   ARCHS=("arm64" "x86_64") | ||||
| elif [[ "$arch" == '' ]]; then | ||||
|   ARCHS=("arm64") | ||||
|   # Detect host architecture | ||||
|   HOST_ARCH=$(uname -m) | ||||
|   case "$HOST_ARCH" in | ||||
|     x86_64|arm64) | ||||
|       ARCHS=("$HOST_ARCH") | ||||
|       ;; | ||||
|     *) | ||||
|       echo "Unsupported host architecture: $HOST_ARCH" | ||||
|       echo "Supported architectures are: arm64, x86_64, unified" | ||||
|       exit 1 | ||||
|       ;; | ||||
|   esac | ||||
| else | ||||
|   ARCHS=("$arch") | ||||
|   # Validate specified architecture | ||||
|   case "$arch" in | ||||
|     x86_64|arm64) | ||||
|       ARCHS=("$arch") | ||||
|       ;; | ||||
|     *) | ||||
|       echo "Invalid architecture specified: $arch" | ||||
|       echo "Accepted architectures are: arm64, x86_64, unified" | ||||
|       exit 1 | ||||
|       ;; | ||||
|   esac | ||||
| fi | ||||
|  | ||||
| TOP="$(pwd)" | ||||
| QRENCODEDIR="${TOP}/3rdparty/libqrencode" | ||||
| if [ -z "$NPROC" ]; then | ||||
|   NPROC=$(sysctl -n hw.ncpu || echo -n 1) | ||||
| fi | ||||
| BUILDDIR="${QRENCODEDIR}/build-libqrencode" | ||||
| LIBDIR="${QRENCODEDIR}/lib" | ||||
| INCLUDEDIR="${QRENCODEDIR}/include" | ||||
|  | ||||
| for ARCH in "${ARCHS[@]}"; do | ||||
|   cd "$QRENCODEDIR" || exit 1 | ||||
|   BUILDDIR="$ARCH-libqrencode" | ||||
|   mkdir "$BUILDDIR" | ||||
|   make clean | ||||
|   ./autogen.sh | ||||
|   ./configure --host="$ARCH" --without-png --prefix="${QRENCODEDIR}/${BUILDDIR}" CFLAGS=" -arch $ARCH $CFLAGS" | ||||
|   make -j"$NPROC" | ||||
|   make install | ||||
| done | ||||
| mkdir -p "$QRENCODEDIR"/lib | ||||
| mkdir -p "$QRENCODEDIR"/include | ||||
| # Clean up build directory | ||||
| echo "Preparing clean build directory" | ||||
| rm -rf "$BUILDDIR" | ||||
| mkdir -p "$BUILDDIR" | ||||
|  | ||||
| if ((${#ARCHS[@]} == "2")); then | ||||
|   echo "Making fat lib for ${ARCHS[0]} and ${ARCHS[1]}" | ||||
|   LIBFILES="$QRENCODEDIR/${ARCHS[0]}-libqrencode/lib/*.a" | ||||
|   for f in $LIBFILES; do | ||||
|     libFile=${f##*/} | ||||
|     echo "$libFile" | ||||
|     lipo -create "$QRENCODEDIR/${ARCHS[0]}-libqrencode/lib/$libFile" \ | ||||
|       "$QRENCODEDIR/${ARCHS[1]}-libqrencode/lib/$libFile" \ | ||||
|       -output "${QRENCODEDIR}/lib/$libFile" | ||||
|   done | ||||
| else | ||||
|   echo "No need for fat lib" | ||||
|   rsync -ar --delete "$QRENCODEDIR/${ARCHS[0]}-libqrencode/lib/"*.a "${QRENCODEDIR}/lib/" | ||||
| fi | ||||
| # Clean output directories | ||||
| rm -rf "$LIBDIR" "$INCLUDEDIR" | ||||
| mkdir -p "$LIBDIR" | ||||
| mkdir -p "$INCLUDEDIR" | ||||
|  | ||||
| rsync -ar --delete "$QRENCODEDIR/${ARCHS[0]}-libqrencode/include/"* "${QRENCODEDIR}/include/" | ||||
| # Convert architectures to semicolon-separated format for cmake | ||||
| ARCHS_SEMICOLON_SEPARATED=$(IFS=";"; echo "${ARCHS[*]}") | ||||
|  | ||||
| echo "Configuring CMake for architectures: ${ARCHS[*]}" | ||||
| cd "$BUILDDIR" | ||||
| cmake "$QRENCODEDIR" \ | ||||
|   -DCMAKE_OSX_ARCHITECTURES="$ARCHS_SEMICOLON_SEPARATED" \ | ||||
|   -DCMAKE_INSTALL_PREFIX="$QRENCODEDIR" \ | ||||
|   -DWITHOUT_PNG=ON \ | ||||
|   -DBUILD_SHARED_LIBS=OFF \ | ||||
|   -G "Xcode" | ||||
|  | ||||
| echo "Building libqrencode for architectures: ${ARCHS[*]}" | ||||
| cmake --build . --config Release | ||||
|  | ||||
| echo "Installing libqrencode to $LIBDIR and $INCLUDEDIR" | ||||
| cmake --install . --config Release | ||||
|  | ||||
| echo "Build and installation completed successfully, with outputs in $LIBDIR and $INCLUDEDIR." | ||||
|  | ||||
| @ -22,7 +22,7 @@ import shutil | ||||
| from platform import uname | ||||
|  | ||||
| CFVERSION = "9" | ||||
| CLANGFORMAT = "" | ||||
| CLANGFORMAT = None | ||||
|  | ||||
| QMLFORMAT = None | ||||
|  | ||||
| @ -138,27 +138,29 @@ def main(): | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     if args.type in ["cpp", "both"]: | ||||
|         if not command_exists("clang-format-" + CFVERSION): | ||||
|             if not command_exists("clang-format"): | ||||
|                 print("Required version of clang-format not found") | ||||
|                 sys.exit(1) | ||||
|             else: | ||||
|                 CLANGFORMAT = "clang-format" | ||||
|         else: | ||||
|         if command_exists("clang-format-" + CFVERSION): | ||||
|             CLANGFORMAT = "clang-format-" + CFVERSION | ||||
|         elif command_exists("clang-format"): | ||||
|             CLANGFORMAT = "clang-format" | ||||
|  | ||||
|     if CLANGFORMAT is not None: | ||||
|         print("Using source formatter: " + CLANGFORMAT) | ||||
|     else: | ||||
|         print("clang-format not found, unable to format source files") | ||||
|  | ||||
|     if args.qt is not None and args.type in ["qml", "both"]: | ||||
|         global QMLFORMAT  # pylint: disable=global-statement | ||||
|         QMLFORMAT = find_qmlformat(args.qt) | ||||
|  | ||||
|     if QMLFORMAT is not None: | ||||
|         print("Using qmlformatter: " + QMLFORMAT) | ||||
|     else: | ||||
|         print("No qmlformat found, can't format QML files") | ||||
|         if QMLFORMAT is not None: | ||||
|             print("Using qmlformatter: " + QMLFORMAT) | ||||
|         else: | ||||
|             print("qmlformat not found, unable to format QML files") | ||||
|  | ||||
|     if args.install: | ||||
|         install_hook(args.install, args.qt) | ||||
|         if CLANGFORMAT is not None or QMLFORMAT is not None: | ||||
|             install_hook(args.install, args.qt) | ||||
|         else: | ||||
|             print("No formatters found, skipping hook install") | ||||
|         sys.exit(0) | ||||
|  | ||||
|     src_files = get_files([".cpp", ".cxx", ".cc", ".h", ".hpp"], | ||||
| @ -169,10 +171,10 @@ def main(): | ||||
|         exit_if_no_files() | ||||
|     else: | ||||
|         if src_files and args.type in ["cpp", "both"] and CLANGFORMAT: | ||||
|             print("Formatting source files...") | ||||
|             print("Formatting source files…") | ||||
|             clang_format_files(src_files) | ||||
|         if qml_files and args.type in ["qml", "both"] and QMLFORMAT: | ||||
|             print("Formatting QML files...") | ||||
|             print("Formatting QML files…") | ||||
|             qml_format_files(qml_files) | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,91 +1,92 @@ | ||||
| #!/usr/bin/env python3 | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| # Copyright (C) 2022-2023 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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, write to the Free Software | ||||
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 | ||||
| # USA. | ||||
|  | ||||
| """ | ||||
| Generate qrc file for qml and related code files recursively within the source | ||||
| directory. | ||||
| """ | ||||
|  | ||||
| import os | ||||
|  | ||||
| # These paths should be relative to the working directory of the | ||||
| # script as set in the project CMakeLists, which should in turn be | ||||
| # where the resources.qrc will be located (currently 'src/app'). | ||||
| app_src_dir = os.path.join('..', '..', 'src', 'app') | ||||
| resfile = os.path.join('qml.qrc') | ||||
|  | ||||
|  | ||||
| def path_contains_dir(filepath, dir_str): | ||||
|     """ Return True if the given filepath contains the given directory. """ | ||||
|     # Split the filepath into its components | ||||
|     path_components = os.path.normpath(filepath).split(os.sep) | ||||
|     # Return True if the given directory is in the path | ||||
|     return dir_str in path_components | ||||
|  | ||||
|  | ||||
| def posix_path(path): | ||||
|     """ | ||||
|     Force the use of POSIX path separators for the resource prefixes | ||||
|     and paths (useful only if versioning the qml.qrc file). | ||||
|     """ | ||||
|     return path.replace(os.sep, '/') | ||||
|  | ||||
|  | ||||
| def gen_qml_qrc(with_webengine): | ||||
|     """ Generate the qml.qrc file. """ | ||||
|     print("Generating qml.qrc file ...") | ||||
|     with open(resfile, 'w', encoding='utf-8') as qrc: | ||||
|         qrc.write('<RCC>\n') | ||||
|         for root, _, files in os.walk(app_src_dir): | ||||
|             # Skip the nowebengine directory if we can use webengine | ||||
|             if with_webengine and path_contains_dir(root, 'nowebengine'): | ||||
|                 continue | ||||
|             # Skip the webengine directory if we can't use webengine | ||||
|             if not with_webengine and path_contains_dir(root, 'webengine'): | ||||
|                 continue | ||||
|             filtered = [k for k in files if k.endswith('.qml') or | ||||
|                         k.endswith('.js') or k.endswith('.html') or | ||||
|                         k.endswith('.css') or k.endswith('.conf')] | ||||
|             # if there are no files of interest in this directory, skip it | ||||
|             if not filtered: | ||||
|                 continue | ||||
|             # For now, get the relative resource prefix for this directory, | ||||
|             # remove the leading slash, and add it as a comment to the line. | ||||
|             # Ideally, we should use the actual resource prefix instead of /, | ||||
|             # but this will require some refactoring of the QML code. | ||||
|             prefix = root.split(app_src_dir)[-1][1:] | ||||
|             qrc.write( | ||||
|                 f'\t<qresource prefix="/"> <!--{posix_path(prefix)}-->\n') | ||||
|             for file in filtered: | ||||
|                 relpath = os.path.relpath( | ||||
|                     os.path.join(root, file), app_src_dir) | ||||
|                 qrc.write(f'\t\t<file>{posix_path(relpath)}</file>\n') | ||||
|             qrc.write('\t</qresource>\n') | ||||
|         qrc.write('</RCC>') | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     # We can't use webengine if we're building for macOS app store | ||||
|     import argparse | ||||
|     parser = argparse.ArgumentParser() | ||||
|     parser.add_argument('--with-webengine', action='store_true', | ||||
|                         default=False, help='Include webengine resources') | ||||
|     args = parser.parse_args() | ||||
|     gen_qml_qrc(args.with_webengine) | ||||
| #!/usr/bin/env python3 | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| # Copyright (C) 2022-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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, write to the Free Software | ||||
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 | ||||
| # USA. | ||||
|  | ||||
| """ | ||||
| Generate qrc file for qml and related code files recursively within the source | ||||
| directory. | ||||
| """ | ||||
|  | ||||
| import os | ||||
|  | ||||
| # These paths should be relative to the working directory of the | ||||
| # script as set in the project CMakeLists, which should in turn be | ||||
| # where the resources.qrc will be located (currently 'src/app'). | ||||
| app_src_dir = os.path.join('..', '..', 'src', 'app') | ||||
| resfile = os.path.join('qml.qrc') | ||||
|  | ||||
|  | ||||
| def path_contains_dir(filepath, dir_str): | ||||
|     """ Return True if the given filepath contains the given directory. """ | ||||
|     # Split the filepath into its components | ||||
|     path_components = os.path.normpath(filepath).split(os.sep) | ||||
|     # Return True if the given directory is in the path | ||||
|     return dir_str in path_components | ||||
|  | ||||
|  | ||||
| def posix_path(path): | ||||
|     """ | ||||
|     Force the use of POSIX path separators for the resource prefixes | ||||
|     and paths (useful only if versioning the qml.qrc file). | ||||
|     """ | ||||
|     return path.replace(os.sep, '/') | ||||
|  | ||||
|  | ||||
| def gen_qml_qrc(with_webengine): | ||||
|     """ Generate the qml.qrc file. """ | ||||
|     print("Generating qml.qrc file…") | ||||
|     with open(resfile, 'w', encoding='utf-8') as qrc: | ||||
|         qrc.write('<RCC>\n') | ||||
|         for root, _, files in os.walk(app_src_dir): | ||||
|             # Skip the nowebengine directory if we can use WebEngine | ||||
|             if with_webengine and path_contains_dir(root, 'nowebengine'): | ||||
|                 continue | ||||
|             # Skip the webengine directory if WebEngine is unable to be used | ||||
|             if not with_webengine and path_contains_dir(root, 'webengine'): | ||||
|                 continue | ||||
|             filtered = [k for k in files if k.endswith('.qml') or | ||||
|                         k.endswith('.js') or k.endswith('.html') or | ||||
|                         k.endswith('.css') or k.endswith('.conf') or | ||||
|                         k == 'qmldir'] | ||||
|             # if there are no files of interest in this directory, skip it | ||||
|             if not filtered: | ||||
|                 continue | ||||
|             # For now, get the relative resource prefix for this directory, | ||||
|             # remove the leading slash, and add it as a comment to the line. | ||||
|             # Ideally, we should use the actual resource prefix instead of /, | ||||
|             # but this will require some refactoring of the QML code. | ||||
|             prefix = root.split(app_src_dir)[-1][1:] | ||||
|             qrc.write( | ||||
|                 f'\t<qresource prefix="/"> <!--{posix_path(prefix)}-->\n') | ||||
|             for file in filtered: | ||||
|                 relpath = os.path.relpath( | ||||
|                     os.path.join(root, file), app_src_dir) | ||||
|                 qrc.write(f'\t\t<file>{posix_path(relpath)}</file>\n') | ||||
|             qrc.write('\t</qresource>\n') | ||||
|         qrc.write('</RCC>') | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     # WebEngine is unable to be used if building for macOS App Store | ||||
|     import argparse | ||||
|     parser = argparse.ArgumentParser() | ||||
|     parser.add_argument('--with-webengine', action='store_true', | ||||
|                         default=False, help='Include WebEngine resources') | ||||
|     args = parser.parse_args() | ||||
|     gen_qml_qrc(args.with_webengine) | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| #!/usr/bin/env python3 | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| # Copyright (C) 2021-2023 Savoir-faire Linux Inc. | ||||
| # Copyright (C) 2021-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
| @ -32,7 +32,7 @@ import re | ||||
| # script as set in the project CMakeLists, which should in turn be | ||||
| # where the resources.qrc will be located (currently 'src/app'). | ||||
| resdir = os.path.join('..', '..', 'resources') | ||||
| qmlfile = os.path.join('constant', 'JamiResources.qml') | ||||
| qmlfile = os.path.join('net/jami/Constants', 'JamiResources.qml') | ||||
| resfile = os.path.join('resources.qrc') | ||||
|  | ||||
| print("Generating resource.qrc file ...") | ||||
| @ -64,7 +64,7 @@ def gen_resources_qrc(with_webengine): | ||||
|         qrc.write('<RCC>\n') | ||||
|         qml.write('pragma Singleton\nimport QtQuick\nQtObject {\n') | ||||
|         for root, _, files in os.walk(resdir): | ||||
|             # Skip the webengine directory if we can't use webengine | ||||
|             # Skip the WebEngine directory if WebEngine is unable to used | ||||
|             if not with_webengine and path_contains_dir(root, 'webengine'): | ||||
|                 continue | ||||
|             prefix = root.rsplit(os.sep, 1)[-1] | ||||
| @ -90,10 +90,10 @@ def gen_resources_qrc(with_webengine): | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     # We can't use webengine if we're building for macOS app store | ||||
|     # WebEngine is unable to be used if building for macOS App Store | ||||
|     import argparse | ||||
|     parser = argparse.ArgumentParser() | ||||
|     parser.add_argument('--with-webengine', action='store_true', | ||||
|                         default=False, help='Include webengine resources') | ||||
|                         default=False, help='Include WebEngine resources') | ||||
|     args = parser.parse_args() | ||||
|     gen_resources_qrc(args.with_webengine) | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| # Copyright (C) 2019-2023 Savoir-faire Linux Inc. | ||||
| # Copyright (C) 2019-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| #!/usr/bin/env bash | ||||
| # install.sh --- build and install Jami daemon and client | ||||
|  | ||||
| # Copyright (C) 2016-2023 Savoir-faire Linux Inc. | ||||
| # Copyright (C) 2016-2025 Savoir-faire Linux Inc. | ||||
| # | ||||
| # 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 | ||||
| @ -29,11 +29,15 @@ export OSTYPE | ||||
|   # -W: disable libwrap and shared library | ||||
|   # -w: do not use Qt WebEngine | ||||
|   # -a: arch to build | ||||
|   # -A: enable AddressSanitizer | ||||
|   # -D: extra CMake flags for the client | ||||
|   # -C: enable crash reporting | ||||
|   # -i: ignore system libraries and build everything regardless of system detection | ||||
|  | ||||
| set -ex | ||||
|  | ||||
| # Qt_MIN_VER required for client-qt | ||||
| QT_MIN_VER="6.2" | ||||
| QT_MIN_VER="6.4" | ||||
|  | ||||
| debug= | ||||
| global=false | ||||
| @ -43,9 +47,14 @@ proc='1' | ||||
| priv_install=true | ||||
| enable_libwrap=true | ||||
| enable_webengine=true | ||||
| asan= | ||||
| extra_cmake_flags='' | ||||
| arch='' | ||||
| enable_testing=false | ||||
| enable_crashreports=false | ||||
| ignore_system_libs=false | ||||
|  | ||||
| while getopts gsc:dQ:P:p:uWwa: OPT; do | ||||
| while getopts gsc:dQ:P:p:uWwa:AtD:Ci OPT; do | ||||
|   case "$OPT" in | ||||
|     g) | ||||
|       global='true' | ||||
| @ -77,6 +86,21 @@ while getopts gsc:dQ:P:p:uWwa: OPT; do | ||||
|     a) | ||||
|       arch="${OPTARG}" | ||||
|     ;; | ||||
|     A) | ||||
|       asan='true' | ||||
|     ;; | ||||
|     t) | ||||
|       enable_testing='true' | ||||
|     ;; | ||||
|     D) | ||||
|       extra_cmake_flags="${OPTARG}" | ||||
|     ;; | ||||
|     C) | ||||
|       enable_crashreports='true' | ||||
|     ;; | ||||
|     i) | ||||
|       ignore_system_libs='true' | ||||
|     ;; | ||||
|     \?) | ||||
|       exit 1 | ||||
|     ;; | ||||
| @ -105,73 +129,81 @@ else | ||||
|     BUILD_DIR="build" | ||||
| fi | ||||
|  | ||||
| # jamid | ||||
| DAEMON="${TOP}/daemon" | ||||
| if [[ "$OSTYPE" == "darwin"* ]]; then | ||||
|     sh "${TOP}"/extras/scripts/build_daemon_macos.sh -a "$arch" -d "$debug" | ||||
| else | ||||
|     cd "$DAEMON" | ||||
|  | ||||
|     # Build the contribs. | ||||
|     mkdir -p contrib/native | ||||
|     ( | ||||
|         cd contrib/native | ||||
|         ../bootstrap ${prefix:+"--prefix=$prefix"} | ||||
|         make -j"${proc}" | ||||
|     ) | ||||
|  | ||||
|     if [[ "${enable_libwrap}" != "true" ]]; then | ||||
|       # Disable shared if requested | ||||
|       if [[ "$OSTYPE" != "darwin"* ]]; then | ||||
|         CONFIGURE_FLAGS+=" --disable-shared" | ||||
|       fi | ||||
|     fi | ||||
|  | ||||
|     BUILD_TYPE="Release" | ||||
|     if [ "${debug}" = "true" ]; then | ||||
|       BUILD_TYPE="Debug" | ||||
|       CONFIGURE_FLAGS+=" --enable-debug" | ||||
|     fi | ||||
|  | ||||
|     # Build the daemon itself. | ||||
|     test -f configure || ./autogen.sh | ||||
|  | ||||
|     if [ "${global}" = "true" ]; then | ||||
|         ./configure ${CONFIGURE_FLAGS} ${prefix:+"--prefix=$prefix"} | ||||
|     else | ||||
|         ./configure ${CONFIGURE_FLAGS} --prefix="${INSTALL_DIR}" | ||||
|     fi | ||||
|     make -j"${proc}" V=1 | ||||
|     make_install "${global}" "${priv_install}" | ||||
|  | ||||
|     # Verify system's version if no path provided. | ||||
|     if [ -z "$qtpath" ]; then | ||||
|         sys_qtver="" | ||||
|         if command -v qmake6 &> /dev/null; then | ||||
|             sys_qtver=$(qmake6 -v) | ||||
|         elif command -v qmake-qt6 &> /dev/null; then | ||||
|             sys_qtver=$(qmake-qt6 -v) # Fedora | ||||
|         elif command -v qmake &> /dev/null; then | ||||
|             sys_qtver=$(qmake -v) | ||||
|         else | ||||
|             echo "No valid Qt found"; exit 1; | ||||
|         fi | ||||
|  | ||||
|         sys_qtver=${sys_qtver#*Qt version} | ||||
|         sys_qtver=${sys_qtver%\ in\ *} | ||||
|  | ||||
|         installed_qtver=$(echo "$sys_qtver" | cut -d'.' -f 2) | ||||
|         required_qtver=$(echo $QT_MIN_VER | cut -d'.' -f 2) | ||||
|  | ||||
|         if [[ $installed_qtver -ge $required_qtver ]] ; then | ||||
|             # Set qtpath to empty in order to use system's Qt. | ||||
|             qtpath="" | ||||
|         else | ||||
|             echo "No valid Qt found"; exit 1; | ||||
|         fi | ||||
|     #detect arch for macos | ||||
|     CMAKE_OSX_ARCHITECTURES="arm64" | ||||
|     if [[ "$arch" == 'unified' ]]; then | ||||
|         CMAKE_OSX_ARCHITECTURES="x86_64;arm64" | ||||
|     elif [[ "$arch" != '' ]]; then | ||||
|         CMAKE_OSX_ARCHITECTURES="$arch" | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| # jamid | ||||
| DAEMON="${TOP}/daemon" | ||||
| cd "$DAEMON" | ||||
|  | ||||
| mkdir -p "${BUILD_DIR}" | ||||
| cd "${BUILD_DIR}" | ||||
| daemon_cmake_flags=(-DCMAKE_BUILD_TYPE="${BUILD_TYPE}") | ||||
| if [ "${asan}" = "true" ]; then | ||||
|     daemon_cmake_flags+=(-DENABLE_ASAN=On) | ||||
| fi | ||||
| if [ "${ignore_system_libs}" = "true" ]; then | ||||
|     daemon_cmake_flags+=(-DIGNORE_SYSTEM_LIBS=On) | ||||
| fi | ||||
| if [ "${enable_libwrap}" = "false" ]; then | ||||
|     daemon_cmake_flags+=(-DJAMI_DBUS=On) | ||||
| else | ||||
|     daemon_cmake_flags+=(-DJAMI_DBUS=Off) | ||||
| fi | ||||
| if [ "${enable_testing}" = "true" ]; then | ||||
|     daemon_cmake_flags+=(-DBUILD_TESTING=On) | ||||
| else | ||||
|     daemon_cmake_flags+=(-DBUILD_TESTING=Off) | ||||
| fi | ||||
| if [ "${global}" = "true" ]; then | ||||
|     daemon_cmake_flags+=(${prefix:+"-DCMAKE_INSTALL_PREFIX=$prefix"}) | ||||
| else | ||||
|     daemon_cmake_flags+=(-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}") | ||||
| fi | ||||
|  | ||||
| if [[ "$OSTYPE" == "darwin"* ]]; then | ||||
|     daemon_cmake_flags+=(-DCMAKE_OSX_ARCHITECTURES="${CMAKE_OSX_ARCHITECTURES}") | ||||
| fi | ||||
|  | ||||
| cmake .. "${daemon_cmake_flags[@]}" | ||||
| make -j"${proc}" V=1 | ||||
| make_install "${global}" "${priv_install}" | ||||
|  | ||||
| # Verify system's version if no path provided. | ||||
| if [ -z "$qtpath" ]; then | ||||
|     sys_qtver="" | ||||
|     if command -v qmake6 &> /dev/null; then | ||||
|         sys_qtver=$(qmake6 -v) | ||||
|     elif command -v qmake-qt6 &> /dev/null; then | ||||
|         sys_qtver=$(qmake-qt6 -v) # Fedora | ||||
|     elif command -v qmake &> /dev/null; then | ||||
|         sys_qtver=$(qmake -v) | ||||
|     else | ||||
|         echo "No valid Qt found"; exit 1; | ||||
|     fi | ||||
|  | ||||
|     sys_qtver=${sys_qtver#*Qt version} | ||||
|     sys_qtver=${sys_qtver%\ in\ *} | ||||
|  | ||||
|     installed_qtver=$(echo "$sys_qtver" | cut -d'.' -f 2) | ||||
|     required_qtver=$(echo $QT_MIN_VER | cut -d'.' -f 2) | ||||
|  | ||||
|     if [[ $installed_qtver -ge $required_qtver ]] ; then | ||||
|         # Set qtpath to empty in order to use system's Qt. | ||||
|         qtpath="" | ||||
|     else | ||||
|         echo "No valid Qt found"; exit 1; | ||||
|     fi | ||||
| fi | ||||
| # fi | ||||
|  | ||||
| # client | ||||
| cd "${TOP}" | ||||
| mkdir -p "${BUILD_DIR}" | ||||
| @ -181,14 +213,28 @@ client_cmake_flags=(-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" | ||||
|                     -DCMAKE_PREFIX_PATH="${qtpath}" | ||||
|                     -DENABLE_LIBWRAP="${enable_libwrap}" | ||||
|                     -DWITH_WEBENGINE="${enable_webengine}") | ||||
|  | ||||
| if [ "${asan}" = "true" ]; then | ||||
|     client_cmake_flags+=(-DENABLE_ASAN=true) | ||||
| fi | ||||
|  | ||||
| if [ "${enable_testing}" = "true" ]; then | ||||
|     client_cmake_flags+=(-DBUILD_TESTING=On) | ||||
| else | ||||
|     client_cmake_flags+=(-DBUILD_TESTING=Off) | ||||
| fi | ||||
|  | ||||
| if [ "${ignore_system_libs}" = "true" ]; then | ||||
|     client_cmake_flags+=(-DIGNORE_SYSTEM_LIBS=On) | ||||
| fi | ||||
|  | ||||
| if [ "${enable_crashreports}" = "true" ]; then | ||||
|     client_cmake_flags+=(-DENABLE_CRASHREPORTS=ON) | ||||
| else | ||||
|     client_cmake_flags+=(-DENABLE_CRASHREPORTS=OFF) | ||||
| fi | ||||
|  | ||||
| if [[ "$OSTYPE" == "darwin"* ]]; then | ||||
|     #detect arch for macos | ||||
|     CMAKE_OSX_ARCHITECTURES="arm64" | ||||
|     if [[ "$arch" == 'unified' ]]; then | ||||
|         CMAKE_OSX_ARCHITECTURES="x86_64;arm64" | ||||
|     elif [[ "$arch" != '' ]]; then | ||||
|         CMAKE_OSX_ARCHITECTURES="$arch" | ||||
|     fi | ||||
|     client_cmake_flags+=(-DCMAKE_OSX_ARCHITECTURES="${CMAKE_OSX_ARCHITECTURES}") | ||||
|     # build qrencode | ||||
|     ( | ||||
| @ -205,6 +251,11 @@ else | ||||
|                          -DWITH_DAEMON_SUBMODULE=true) | ||||
| fi | ||||
|  | ||||
| # Add extra flags for the client | ||||
| if [ -n "${extra_cmake_flags}" ]; then | ||||
|     client_cmake_flags+=(${extra_cmake_flags}) | ||||
| fi | ||||
|  | ||||
| echo "info: Configuring $client client with flags: ${client_cmake_flags[*]}" | ||||
| cmake .. "${client_cmake_flags[@]}" | ||||
| make -j"${proc}" V=1 | ||||
|  | ||||
| @ -20,6 +20,8 @@ rm -rf Jami.app/Contents/Frameworks/QtWebEngineQuickDelegatesQml.framework | ||||
| rm -rf Jami.app/Contents/Frameworks/QtWebEngineQuick.framework | ||||
| rm -rf Jami.app/Contents/Frameworks/QtWebEngineCore.framework | ||||
| rm -rf Jami.app/Contents/Frameworks/QtWebChannel.framework | ||||
| echo "remove web dSYM files" | ||||
| find Jami.app/Contents/Resources/qml -type d -name "*.dSYM" -exec rm -r {} \; | ||||
| codesign --force --sign "${APP_CERTIFICATE}" --entitlements ../resources/entitlements/appstore/Jami.entitlements Jami.app | ||||
| codesign --verify Jami.app | ||||
| echo "create .pkg" | ||||
|  | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	