Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f403e61b66 | ||
|
|
86fb879a0e | ||
|
|
ab5632d5eb | ||
|
|
eee23aa642 | ||
|
|
bb25e85834 | ||
|
|
375e2e0d13 | ||
|
|
9450065850 | ||
|
|
98ce8a298a | ||
|
|
7286d13d19 | ||
|
|
530cc19f58 | ||
|
|
bfa26be7f0 | ||
|
|
ca4db8871e | ||
|
|
146da066b0 | ||
|
|
12dc2c418d | ||
|
|
1c5cb63aff | ||
|
|
794bd50ed1 | ||
|
|
26b3bc3f74 | ||
|
|
64e6570f00 | ||
|
|
783b7516a7 | ||
|
|
abd0748a77 | ||
|
|
fb51ef569e | ||
|
|
b54cf2edca | ||
|
|
55e50144f3 | ||
|
|
a2f4628590 | ||
|
|
ce14696165 | ||
|
|
29c3c0cf7f | ||
|
|
3e2a1c4eca | ||
|
|
17ce84dd0a | ||
|
|
5839e7cda8 | ||
|
|
ebf5e871e0 | ||
|
|
5370bb4515 | ||
|
|
be386e77f2 | ||
|
|
a026f339c3 | ||
|
|
552a1bfaa6 | ||
|
|
6089dcd09a | ||
|
|
64964f82cf | ||
|
|
3a38f6b147 | ||
|
|
1dca4313f7 | ||
|
|
f664b71565 | ||
|
|
b12690703f | ||
|
|
8a96e8a673 | ||
|
|
31b0791ab9 | ||
|
|
4486f4d3ab | ||
|
|
719b6e8c37 | ||
|
|
18bc7a6eaf | ||
|
|
9e2127b2a5 | ||
|
|
2793747d3c | ||
|
|
749ba4a25c | ||
|
|
e4823e9099 | ||
|
|
91c5ff4a90 | ||
|
|
25fcdab9db | ||
|
|
14a5d05b80 | ||
|
|
183c83f0d2 | ||
|
|
df31fe7dc4 | ||
|
|
1126ee77ec | ||
|
|
6c723a7e43 | ||
|
|
71a8c0f317 | ||
|
|
b76bb58378 | ||
|
|
5284a1c66b | ||
|
|
b5f9fffadd | ||
|
|
892fb83907 | ||
|
|
7648bd9646 | ||
|
|
c86a3d64fc | ||
|
|
c2ad97d0ab | ||
|
|
7573fac29f | ||
|
|
9b4317fb25 | ||
|
|
275d13d40f | ||
|
|
08c4deba5a | ||
|
|
3413a42af4 | ||
|
|
7b9504bdfb | ||
|
|
18cad32bd4 | ||
|
|
38b90f7b00 | ||
|
|
6addd207af | ||
|
|
98817a718f | ||
|
|
9898e114f1 | ||
|
|
67242862c4 | ||
|
|
2b7e3ce64e | ||
|
|
49b139bb75 | ||
|
|
b11a0d50e6 | ||
|
|
33e9b74388 | ||
|
|
cc282b3585 | ||
|
|
92f9ad48a8 | ||
|
|
1bb510cdd4 | ||
|
|
fa267805c9 | ||
|
|
556278dbc5 | ||
|
|
365ec0ba9f | ||
|
|
4587cf73c2 | ||
|
|
65aba21c14 | ||
|
|
0bf6e81faa | ||
|
|
f4d6290b50 | ||
|
|
ca8dc42d14 | ||
|
|
a4e746c5a4 | ||
|
|
1c796720be | ||
|
|
483eeeca39 | ||
|
|
f27527a614 | ||
|
|
609904cfb3 | ||
|
|
82e912ffad | ||
|
|
6c4049f29a | ||
|
|
9466278be2 | ||
|
|
e4029cca04 | ||
|
|
bcb2f833cd | ||
|
|
a0a15fa643 | ||
|
|
c28509ac28 | ||
|
|
542be2b2d4 | ||
|
|
9a77d4dc1a | ||
|
|
558d25fabc | ||
|
|
be7bb81a19 | ||
|
|
228d4bb321 | ||
|
|
656e239e55 | ||
|
|
300de05a20 | ||
|
|
3f817494f8 | ||
|
|
b097cec45e | ||
|
|
a707d818f5 | ||
|
|
1c70a43b91 | ||
|
|
c7c199210d | ||
|
|
3e7cdcdf90 | ||
|
|
1fc06b8d57 | ||
|
|
43f1953aa7 | ||
|
|
4616a74029 | ||
|
|
952197f130 | ||
|
|
68588fbb44 | ||
|
|
c1d04747a1 | ||
|
|
f8611416ec | ||
|
|
2e55b1f660 | ||
|
|
f3462e36a4 | ||
|
|
43d97b0e6f | ||
|
|
458036ad6b | ||
|
|
1ee9cddceb | ||
|
|
ed3c692b1f | ||
|
|
b0475566ca | ||
|
|
3489f94ca7 | ||
|
|
553be14000 | ||
|
|
a25e808e06 | ||
|
|
bf183bdcff | ||
|
|
95a5b1e459 | ||
|
|
9e69e13468 | ||
|
|
ae4924995a | ||
|
|
55b5080c77 | ||
|
|
593d86d3f2 | ||
|
|
8e132eab08 | ||
|
|
324e3e74be | ||
|
|
7dca844cbe | ||
|
|
8029d9e65e | ||
|
|
cea41cb4a9 | ||
|
|
5eb1c57320 | ||
|
|
5462aeab11 | ||
|
|
a850852847 | ||
|
|
291ee5366c | ||
|
|
a1b48d2c64 | ||
|
|
913e92a96e | ||
|
|
b82e6dbdb8 | ||
|
|
6ded547a0d | ||
|
|
a7d40e238e | ||
|
|
ed1bd74301 | ||
|
|
1bd0a0edf5 | ||
|
|
7fac72cac5 | ||
|
|
d0310b669e | ||
|
|
62e6848dc8 | ||
|
|
1bc1ef7f17 | ||
|
|
ffb829e80c | ||
|
|
796a8a013a | ||
|
|
535739c0c7 | ||
|
|
72f0e87367 | ||
|
|
f278490540 | ||
|
|
76b0e3e9f7 | ||
|
|
98e86a8160 | ||
|
|
9e5487d5ad | ||
|
|
8c2e965f6e | ||
|
|
f8f00b4ecf | ||
|
|
4da4a05611 | ||
|
|
9ae9ccff16 | ||
|
|
eaa90ee8eb | ||
|
|
31bbdd6a12 | ||
|
|
974d395a48 | ||
|
|
a67f6e4f9c | ||
|
|
ed0c4037ad | ||
|
|
b562ab7681 | ||
|
|
3e35dc95e5 | ||
|
|
ddf5b33219 | ||
|
|
1c9badec9c | ||
|
|
8f3bdf1cf3 | ||
|
|
3b9e8e47ec | ||
|
|
b85831fb5f | ||
|
|
fd0ed81f7f | ||
|
|
b5c299c5ad | ||
|
|
5a253f9053 | ||
|
|
11d5613866 | ||
|
|
3984544bdb | ||
|
|
e226b2fa75 | ||
|
|
e8b192be3e | ||
|
|
8368eed645 | ||
|
|
28b637c99c | ||
|
|
53a5410337 | ||
|
|
8222bf6420 | ||
|
|
0998d349ca | ||
|
|
f3bde7b5f1 | ||
|
|
8fcf527632 | ||
|
|
4eb17afe4e | ||
|
|
d2577e32e6 | ||
|
|
e582ffca38 | ||
|
|
59649ca42c | ||
|
|
e2ac6187dc | ||
|
|
df9aaf19c2 | ||
|
|
275c671576 | ||
|
|
86bbc3a9e8 | ||
|
|
b3d49c61a5 | ||
|
|
7f947f146c | ||
|
|
e6bd085c15 | ||
|
|
52d0241a17 | ||
|
|
b53de0c31d | ||
|
|
19491d79a5 | ||
|
|
dd6ae193ff | ||
|
|
fbbbc36221 | ||
|
|
7f3e8596e3 | ||
|
|
103b08c9c5 | ||
|
|
99a7ada58a | ||
|
|
6415294782 | ||
|
|
79e6480513 | ||
|
|
cc5a7ea334 | ||
|
|
4b56962c1b | ||
|
|
0668a52c6b | ||
|
|
89e2f09b84 | ||
|
|
0fd9ee06bd | ||
|
|
3f73516f8c | ||
|
|
e3b1ef0b80 | ||
|
|
ae18b9a0ac | ||
|
|
b0af385ea0 | ||
|
|
0122cf9aac | ||
|
|
085a4f4abf | ||
|
|
ad0bcba99e | ||
|
|
7a05edc42a | ||
|
|
d2f93d6fad | ||
|
|
1466e414ec | ||
|
|
8f61944386 | ||
|
|
63df19ee1c | ||
|
|
93adf6884f | ||
|
|
36574b25b6 | ||
|
|
26506a9727 | ||
|
|
caeea7940a | ||
|
|
5b688cf949 | ||
|
|
7dd313f5fc | ||
|
|
1f70385a4e | ||
|
|
8129df42da | ||
|
|
082b968bbc | ||
|
|
2907a79dd7 | ||
|
|
46af290b85 | ||
|
|
26a758a0d6 | ||
|
|
9d006d0ec5 | ||
|
|
7a0bfecfc5 | ||
|
|
604937cf66 | ||
|
|
4f74609ecf | ||
|
|
3672013ddc | ||
|
|
9ad7476a34 | ||
|
|
23a12efd29 | ||
|
|
518b13c779 | ||
|
|
d9c20de31f | ||
|
|
d6400bbcae | ||
|
|
68a5027d15 | ||
|
|
48ec4085d2 | ||
|
|
e494b1520d | ||
|
|
aac0da4cbc | ||
|
|
48737e6a02 | ||
|
|
1122e06f48 | ||
|
|
e3dfe03a2a | ||
|
|
6a406f466d | ||
|
|
aa679e06b2 | ||
|
|
d2621282dc | ||
|
|
5ce2773658 | ||
|
|
43e127de31 | ||
|
|
87d08de3a0 | ||
|
|
536593bf8a | ||
|
|
eb2c554601 | ||
|
|
318d712c4f | ||
|
|
32d904058a | ||
|
|
56cf64ad22 | ||
|
|
dd7eb54e90 | ||
|
|
89fa85d650 | ||
|
|
099fea15ae | ||
|
|
74fd5dfe96 | ||
|
|
287a6628ed | ||
|
|
510dd5c047 | ||
|
|
f715373218 | ||
|
|
5820b9521e | ||
|
|
6fc6ec1cda | ||
|
|
a0893fe43b | ||
|
|
46ba0310fa | ||
|
|
ed0dc62b69 | ||
|
|
fb0bc65ced | ||
|
|
f57558fdb2 | ||
|
|
f93cfe8c4c | ||
|
|
7a22cff28c | ||
|
|
043025d1eb | ||
|
|
4cf8c2f300 | ||
|
|
937877e841 | ||
|
|
dd27e08a98 | ||
|
|
1fbf298d30 | ||
|
|
505a3ac960 | ||
|
|
310450cfa7 | ||
|
|
5f619ae40a | ||
|
|
28a4359020 | ||
|
|
f177d54f21 | ||
|
|
851c15b2d6 | ||
|
|
c0e30c93e5 | ||
|
|
645517d22d | ||
|
|
3983e2c13c | ||
|
|
f29db1a9cd | ||
|
|
c723b4584c | ||
|
|
b75c09d7c0 | ||
|
|
225c3e8f7e | ||
|
|
7edcca9b07 | ||
|
|
9174db2024 | ||
|
|
69e2ec806b | ||
|
|
04ce8b2c71 | ||
|
|
2bfb7c20c8 | ||
|
|
fb2178e5d3 | ||
|
|
4e2c4b0498 | ||
|
|
13d2f9131d | ||
|
|
64cdd509b0 | ||
|
|
bd15d2d0f7 | ||
|
|
64f5253bd3 | ||
|
|
9d0f3ce90b | ||
|
|
703faf3b15 | ||
|
|
5d8c79da38 | ||
|
|
522ddad72b | ||
|
|
11c4877859 | ||
|
|
2469032f15 | ||
|
|
bd9dc97b4f | ||
|
|
d6893f9d8a | ||
|
|
4f34bc0f0e | ||
|
|
a91e4d8a7f | ||
|
|
161c9b0fc7 | ||
|
|
0013a3b047 | ||
|
|
1889c256e1 | ||
|
|
9113932066 | ||
|
|
d3eaac8609 | ||
|
|
e6edf40048 | ||
|
|
dd38fed6e0 | ||
|
|
5ac656c638 | ||
|
|
6855ac1d5e | ||
|
|
29175d7ec4 | ||
|
|
92858e40bf | ||
|
|
e8b81db977 | ||
|
|
7420673a0f | ||
|
|
357a9179b1 | ||
|
|
2cefa9afca | ||
|
|
e1168f8de0 | ||
|
|
290cf8271b | ||
|
|
916182f80f | ||
|
|
2db9242f5c | ||
|
|
3c08e618bd | ||
|
|
c58fda0a70 | ||
|
|
b4c25bdc0a | ||
|
|
36a2c073bd | ||
|
|
776bec0d82 | ||
|
|
ab2dc60097 | ||
|
|
aee6bac5ef | ||
|
|
58b4c45d0c | ||
|
|
a6ce78a8c0 | ||
|
|
2ebf203412 | ||
|
|
45a03dd663 | ||
|
|
fcf720a5d8 | ||
|
|
cb1cdd1b23 | ||
|
|
0d92059155 | ||
|
|
80ab596992 | ||
|
|
b5f0190799 | ||
|
|
3d5a2046c4 | ||
|
|
341c3aded6 | ||
|
|
dd4dc19add | ||
|
|
1ab257d512 | ||
|
|
2ec8051303 | ||
|
|
ec30e6ace7 | ||
|
|
ced296939f | ||
|
|
1802f8a3f8 | ||
|
|
8b10315e2a | ||
|
|
e0fa4a6cb2 | ||
|
|
1366dd1fcd | ||
|
|
0850db2a9b | ||
|
|
a881e4e3f8 | ||
|
|
192a446131 | ||
|
|
b30c590866 | ||
|
|
6dd3ca31be | ||
|
|
c2e875d54b | ||
|
|
979f806161 | ||
|
|
3102a8d24b | ||
|
|
21d57b1f10 | ||
|
|
c873218c32 | ||
|
|
4c05287677 | ||
|
|
6713bc068b | ||
|
|
46d26cd029 | ||
|
|
88db5ec4d5 | ||
|
|
102d6e7a9a | ||
|
|
7add777b21 | ||
|
|
2db518c9c6 | ||
|
|
b91f6f0f5c | ||
|
|
115657a465 | ||
|
|
8e28e0a32b | ||
|
|
830ac1cc91 | ||
|
|
5206dafb35 | ||
|
|
c7a16a4bd5 | ||
|
|
707ff450b5 | ||
|
|
6a63279396 | ||
|
|
d3b3d07f2e | ||
|
|
a1fd9ea3ce | ||
|
|
db9d684524 | ||
|
|
15c621b1d8 | ||
|
|
cdf1c7a2a6 | ||
|
|
d265ed9729 | ||
|
|
18b3cc2683 | ||
|
|
c064eb0795 | ||
|
|
c2268c82ee | ||
|
|
caebdcfa91 | ||
|
|
6012f49919 | ||
|
|
d2f4a62bf3 | ||
|
|
9d25973a77 | ||
|
|
34fbe756e8 | ||
|
|
daad16ea93 | ||
|
|
6620f9263d | ||
|
|
9e40995ab0 | ||
|
|
ecdd95d15a | ||
|
|
d6b22f1f4c | ||
|
|
7ce7808093 | ||
|
|
2395075b7c | ||
|
|
bc24e3643f | ||
|
|
6d3f13076f | ||
|
|
905be1d894 | ||
|
|
a278e8b1e6 | ||
|
|
f0490a54b7 | ||
|
|
5ed1e1e5b6 | ||
|
|
df05efd7d9 | ||
|
|
7c12ade161 | ||
|
|
cb268075c2 | ||
|
|
9f5e8962b5 | ||
|
|
6525f25a22 | ||
|
|
aa15d2a7e2 | ||
|
|
1ca9912987 | ||
|
|
d43518cb3c | ||
|
|
cf64e2c97c | ||
|
|
3e00fe2b0f | ||
|
|
2ae5c0ec4f | ||
|
|
697f4aec95 | ||
|
|
023a1f222f | ||
|
|
a21e6448ce | ||
|
|
eb1b17b636 | ||
|
|
38cd3327f3 | ||
|
|
8ab358ccec | ||
|
|
641f7bbe9d | ||
|
|
a23fad0ba8 | ||
|
|
18277543b6 | ||
|
|
bfa0b87791 | ||
|
|
8c20f0c0d2 | ||
|
|
ee1ea47e88 | ||
|
|
82c4a4a03e | ||
|
|
21efe6f902 | ||
|
|
5c60dcd501 | ||
|
|
85e89c869a | ||
|
|
1485ff338f | ||
|
|
ac4b5ab7fa | ||
|
|
eb971a0320 | ||
|
|
92d9c41da7 | ||
|
|
ba91e3fc1f | ||
|
|
726ecd79e6 | ||
|
|
d22e276586 | ||
|
|
3d0319dba7 | ||
|
|
4a0efc0e86 | ||
|
|
445abf1e31 | ||
|
|
7f58552f60 | ||
|
|
2549085872 | ||
|
|
9e67a0b0e7 | ||
|
|
a1a232a1f1 | ||
|
|
c932213abd | ||
|
|
a0c19252df | ||
|
|
67c978b7a4 | ||
|
|
f4750f0096 | ||
|
|
676fec8694 | ||
|
|
60a0b66414 | ||
|
|
1050c9857a | ||
|
|
b21b03495d | ||
|
|
4632a7faba | ||
|
|
ccb39bea1a | ||
|
|
bda62cb1f1 | ||
|
|
09b76b306c | ||
|
|
e10f1274dc | ||
|
|
9468c16233 | ||
|
|
65fb0f901c | ||
|
|
1347c89d61 | ||
|
|
b1cbcc7ef6 | ||
|
|
22c3a2649b | ||
|
|
2bb0b25688 | ||
|
|
2aefc6361e | ||
|
|
83cb01b8cd | ||
|
|
d42b712ee4 | ||
|
|
fec458dd6a | ||
|
|
9b8902dfb8 | ||
|
|
4a8037fc6a | ||
|
|
d927a517aa | ||
|
|
96939ba985 | ||
|
|
414b074bad | ||
|
|
7b1cac6914 | ||
|
|
4aaacfd5b0 | ||
|
|
52187306ce | ||
|
|
0e799b16b0 | ||
|
|
569d05df4e | ||
|
|
eac5fe5157 | ||
|
|
5337514c63 | ||
|
|
d1bdb178e2 | ||
|
|
9f445dc052 | ||
|
|
d58c33dec0 | ||
|
|
0f56c25893 | ||
|
|
762784d2b5 | ||
|
|
6d6cd19b37 | ||
|
|
c0451cd454 | ||
|
|
0620fafb6c | ||
|
|
a9a1a975a6 | ||
|
|
8a06a836f4 | ||
|
|
dba5761ad0 | ||
|
|
8ec1d4c9eb | ||
|
|
46e9924ebb | ||
|
|
12a7ce54d9 | ||
|
|
9d08776824 | ||
|
|
073d90c4a6 | ||
|
|
7d4ddc3910 | ||
|
|
1294c089a8 | ||
|
|
b64896f558 | ||
|
|
e73e2d2502 | ||
|
|
9338bdcb3a | ||
|
|
d68e6bd892 | ||
|
|
057a2b2312 | ||
|
|
46d186a49f | ||
|
|
7164c677de | ||
|
|
6ad46e1860 | ||
|
|
a662d866af | ||
|
|
a0940fd145 | ||
|
|
f61448eea2 | ||
|
|
943495de31 | ||
|
|
059f1e38cc | ||
|
|
370094274c | ||
|
|
04d6d4e2cc | ||
|
|
cf31d0187b | ||
|
|
f1963401d6 | ||
|
|
94bd1f1680 | ||
|
|
908e156113 | ||
|
|
5fe7813f9f | ||
|
|
d61b8eb1b3 | ||
|
|
0fc2afb829 | ||
|
|
cc2e3ece7a | ||
|
|
5656f756e6 | ||
|
|
9bdf900b25 | ||
|
|
0ec60a6f85 | ||
|
|
70e24ba059 | ||
|
|
ad80217593 | ||
|
|
7dd00a1494 | ||
|
|
109051e1d5 | ||
|
|
86afec860f | ||
|
|
393741fd9d | ||
|
|
e8a4b46ba1 | ||
|
|
97be3d8179 | ||
|
|
505956d1fa | ||
|
|
f7ef86dced | ||
|
|
3138f36e05 | ||
|
|
fe264aafa7 | ||
|
|
88aebb64f9 | ||
|
|
6d1f67f3be | ||
|
|
50a423b142 | ||
|
|
b716800474 | ||
|
|
b695329d2d | ||
|
|
fbee63085c | ||
|
|
99d1068f70 | ||
|
|
18748846ef | ||
|
|
b80784f5a1 | ||
|
|
76eb3e9b67 | ||
|
|
0f6abcc7fa | ||
|
|
ed106e3577 | ||
|
|
3c9aed4d6f | ||
|
|
9daa7c7a7c | ||
|
|
b7dad25d3e | ||
|
|
64a26b560b | ||
|
|
d5bfc726c0 | ||
|
|
0dcb448f2e | ||
|
|
ccafde604e | ||
|
|
ef58d277ca | ||
|
|
6642860d51 | ||
|
|
aec64aa582 | ||
|
|
6de1d3f7de | ||
|
|
90849fe29b | ||
|
|
17129b259b | ||
|
|
dfb74904ed | ||
|
|
2b5c90e379 | ||
|
|
2e29f3fd6d | ||
|
|
637c80c38b | ||
|
|
c76732e3e7 | ||
|
|
870bcbd932 | ||
|
|
b0464500ca | ||
|
|
5e91ed2bb1 | ||
|
|
6e5dbf7beb | ||
|
|
553eeb034d | ||
|
|
858294f36e | ||
|
|
4c616f32eb | ||
|
|
b29bc6868c | ||
|
|
07f72252d7 | ||
|
|
f289dfb762 | ||
|
|
8d4f3c07c7 | ||
|
|
7e30a99937 | ||
|
|
3d516101a4 | ||
|
|
b0b60da84a | ||
|
|
05abb9e430 | ||
|
|
dc4571a3c8 | ||
|
|
7361470b64 | ||
|
|
f282b26883 | ||
|
|
4692b21bcf | ||
|
|
36a3d4e53b | ||
|
|
8bdfa18efb | ||
|
|
52d031f2d0 | ||
|
|
d8ad0b8faf | ||
|
|
c6deb9393c | ||
|
|
d35433d0b8 | ||
|
|
0ce4f49e08 | ||
|
|
dc1e32a632 | ||
|
|
c0a2f1f24d | ||
|
|
0dd1cb3fc1 | ||
|
|
eec2cfd5dd | ||
|
|
d6cab7b421 | ||
|
|
8254e9f030 | ||
|
|
7493649893 | ||
|
|
738c421edf | ||
|
|
c41da41efe | ||
|
|
ed0a596286 | ||
|
|
31a929388b | ||
|
|
0424f7d962 | ||
|
|
8654d6cf43 | ||
|
|
25553b11ed | ||
|
|
74b3495542 | ||
|
|
ee29e64039 | ||
|
|
3a4641889c | ||
|
|
d9c84edf9a | ||
|
|
a930c6617b | ||
|
|
6c5883bce0 | ||
|
|
414e336852 | ||
|
|
d226ffbd1f | ||
|
|
65bc196eba | ||
|
|
12530cd973 | ||
|
|
a0fcb38e68 | ||
|
|
a05acb4f99 | ||
|
|
21cb1a0166 | ||
|
|
41521a9b98 | ||
|
|
781b766ac4 | ||
|
|
df11f28593 | ||
|
|
030741bba5 | ||
|
|
41be5479af | ||
|
|
9c93e93cb4 | ||
|
|
b427a87724 | ||
|
|
077589e08b | ||
|
|
4de6b93ba8 | ||
|
|
014ce31589 | ||
|
|
d9574f3caa | ||
|
|
6a9af07f7a | ||
|
|
e238ecf182 | ||
|
|
c8646f99c0 | ||
|
|
31f255b541 | ||
|
|
fecf3915c5 | ||
|
|
8a550b569f | ||
|
|
1a34f61b24 | ||
|
|
775e61c248 | ||
|
|
aa7ced4ef1 | ||
|
|
d9f6baac72 | ||
|
|
8fe687eb55 | ||
|
|
6c693d158e | ||
|
|
6b3e1f1e65 | ||
|
|
8fe344c268 | ||
|
|
c7afa30d0c | ||
|
|
14f21921bb | ||
|
|
29ae6dfbf6 | ||
|
|
a6c03a6b75 | ||
|
|
068b812245 | ||
|
|
a84a62def8 | ||
|
|
7f0847b95d | ||
|
|
073e310a5a | ||
|
|
d9e95d13e6 | ||
|
|
f4607885e1 | ||
|
|
03f4109ac4 | ||
|
|
bd0aaf7665 | ||
|
|
134c1802e7 | ||
|
|
33deacacee | ||
|
|
d6bc3ccc8b | ||
|
|
e1f990190e | ||
|
|
f77aa3284f | ||
|
|
8ceeb39268 | ||
|
|
4f71dae598 | ||
|
|
4da327088c | ||
|
|
e26a9a25d5 | ||
|
|
99e4c3350f | ||
|
|
99a72e529b | ||
|
|
824e3866d8 | ||
|
|
ce89ae3c1d | ||
|
|
4036f2a0f2 | ||
|
|
37f55ccc25 | ||
|
|
358c5d0a0f | ||
|
|
a09ada18ee | ||
|
|
88a1e03314 | ||
|
|
75b6341a84 | ||
|
|
e538a4f710 | ||
|
|
af00296ffe | ||
|
|
dd7d3c6e23 | ||
|
|
e576a886d0 | ||
|
|
f0d077fed8 | ||
|
|
37e39ca089 | ||
|
|
7c2b218076 | ||
|
|
002fdb33fc | ||
|
|
13b65c9a6a | ||
|
|
e6118a06e8 | ||
|
|
63ac71190b | ||
|
|
37542ae706 | ||
|
|
89d4d835ba | ||
|
|
9f0ea70945 | ||
|
|
86e4a88201 | ||
|
|
c002881f66 | ||
|
|
f17d4530a3 | ||
|
|
94a76cc9e0 | ||
|
|
4c0b229b14 | ||
|
|
17d0d5e0a2 | ||
|
|
f97d29243d | ||
|
|
94864104e4 | ||
|
|
6988ce96d7 | ||
|
|
98492e7718 | ||
|
|
becb453e7d | ||
|
|
35644fdd35 | ||
|
|
5ab056759b | ||
|
|
e1aeaba942 | ||
|
|
e256fc32d9 | ||
|
|
a7ba446703 | ||
|
|
26d0a3e5cb | ||
|
|
7f571fa7d8 | ||
|
|
cb600549c3 | ||
|
|
e1cb6d92c5 | ||
|
|
8812a7db69 | ||
|
|
96361656e4 | ||
|
|
83785da1bc | ||
|
|
4fe69e825e | ||
|
|
6105fc861d | ||
|
|
f156696339 | ||
|
|
b6c8707a4d | ||
|
|
3031c5055a | ||
|
|
44c0d76541 | ||
|
|
0b101d9efd | ||
|
|
b69995b34d | ||
|
|
ef6c9fbd6d | ||
|
|
e43f58d11f | ||
|
|
a684b48fb3 | ||
|
|
7cc30e3216 | ||
|
|
6586be5158 | ||
|
|
1bd14895c3 | ||
|
|
82155cd859 | ||
|
|
0ed3cd248b | ||
|
|
43451fd3f0 | ||
|
|
6340c70d7a | ||
|
|
8e40c8630d | ||
|
|
b9a036e5cb | ||
|
|
e330407d44 | ||
|
|
aa127fe0bd | ||
|
|
16f1e87bb7 | ||
|
|
4db0a6524d | ||
|
|
c9d04684ce | ||
|
|
5262405f06 | ||
|
|
6a90f7c2e1 | ||
|
|
6d766176c1 | ||
|
|
eaf4781f5f | ||
|
|
787c11efda | ||
|
|
fd07e0c868 | ||
|
|
9bad590e9e | ||
|
|
29c236c33d | ||
|
|
a44f17a2fc | ||
|
|
915b09255c | ||
|
|
1964e824c8 | ||
|
|
3e10e2c978 | ||
|
|
e9f16a29cf | ||
|
|
019932c323 | ||
|
|
2ae279a382 | ||
|
|
bf88ff1076 | ||
|
|
3db961cb0f | ||
|
|
02f90aca0b | ||
|
|
c9500a5122 | ||
|
|
26cdda090e | ||
|
|
520b03cb0a | ||
|
|
93e83dddae | ||
|
|
917d08c61e | ||
|
|
49c614160d | ||
|
|
b6173c9d7b | ||
|
|
b0a0a7c50a | ||
|
|
1f0728b7d1 | ||
|
|
59757dbf55 | ||
|
|
641701ca16 | ||
|
|
4f5c3987f1 | ||
|
|
d24a43b1cc | ||
|
|
64a8be3c4f | ||
|
|
0d77bc305e | ||
|
|
96b0d85189 | ||
|
|
3b1c8abd2f | ||
|
|
210bbfdbe1 | ||
|
|
0da23b837d | ||
|
|
989aa462f7 | ||
|
|
75a3e92098 | ||
|
|
02f9de5bdb | ||
|
|
c418a9c9ca | ||
|
|
f167d77b61 | ||
|
|
6594481992 | ||
|
|
4faf14b45f | ||
|
|
198063f046 | ||
|
|
f5d46bf9f1 | ||
|
|
fde8e4054a | ||
|
|
b4b54d6b94 | ||
|
|
23e218f1b5 | ||
|
|
33cb649f26 | ||
|
|
30b4b5b349 | ||
|
|
430e9ae994 | ||
|
|
af56b92af4 | ||
|
|
e2bfac9e42 | ||
|
|
4ab3bbeb82 | ||
|
|
8c3bba65e5 | ||
|
|
d59816054f | ||
|
|
9dccd20bb3 | ||
|
|
45f2e35a99 | ||
|
|
8b99a33e6e | ||
|
|
a54efeddfa | ||
|
|
ed279cac31 | ||
|
|
be4b8284c5 | ||
|
|
093d7af748 | ||
|
|
76d04205ef | ||
|
|
4080511d9d | ||
|
|
195e9663da | ||
|
|
82c2d50885 | ||
|
|
2979424db5 | ||
|
|
d4ee869281 | ||
|
|
df0f6690fd | ||
|
|
c0532f6d13 | ||
|
|
4d53d0eb01 | ||
|
|
c9de5f00c6 | ||
|
|
7668d9af08 | ||
|
|
66f5a40cd9 | ||
|
|
a887019337 | ||
|
|
b617a5d89d | ||
|
|
b0877f63b5 | ||
|
|
56af090e54 | ||
|
|
fa74a42b34 | ||
|
|
c0595e62ee | ||
|
|
f5afc51879 | ||
|
|
01c7636c75 | ||
|
|
964f746d76 | ||
|
|
febbd729ec | ||
|
|
737f8375fb | ||
|
|
fc5287bd9f | ||
|
|
8c4dff057f | ||
|
|
37f76142fb | ||
|
|
cc5c3776ca | ||
|
|
ea3eabc3c7 | ||
|
|
f495af7a76 | ||
|
|
4b9bfb2e4a | ||
|
|
15c518f0f1 | ||
|
|
a6841bb1e1 | ||
|
|
584a200bf0 | ||
|
|
60304e5a46 | ||
|
|
f1a18749f6 | ||
|
|
e29ea15554 | ||
|
|
ded71be73f | ||
|
|
1f5ccd1c3b | ||
|
|
8cb239abcb | ||
|
|
8e8f89aa8f | ||
|
|
53f418b9a2 | ||
|
|
9bda583d5b | ||
|
|
11bf5fc679 | ||
|
|
43d37e3b4c | ||
|
|
3247223595 | ||
|
|
4a87b1387a | ||
|
|
cb26ca0e46 | ||
|
|
f15db03ec3 | ||
|
|
619c4e1180 | ||
|
|
f44627c205 | ||
|
|
1b2cd8404a | ||
|
|
4a2e587123 | ||
|
|
6e2cf8ced2 | ||
|
|
1a9d365c42 | ||
|
|
f8e443bda7 | ||
|
|
1bdb7d33fc | ||
|
|
75ac259632 | ||
|
|
0bd26222d8 | ||
|
|
f8e1973bc2 | ||
|
|
6c7fe644e5 | ||
|
|
f901eeeb4a | ||
|
|
b9c7a9e887 | ||
|
|
5093e6db5e | ||
|
|
f7cc79fab1 | ||
|
|
9110703aaa | ||
|
|
0a67b2ecb9 | ||
|
|
d476343b99 | ||
|
|
ac2bd5e6ee | ||
|
|
246a475600 | ||
|
|
ae2aadeede | ||
|
|
d95e8db4ee | ||
|
|
cccc6e5676 | ||
|
|
c4facc04d3 | ||
|
|
d98e86d3df | ||
|
|
623ff4f91f | ||
|
|
4fa1bdba5a | ||
|
|
4ed2d74d9c | ||
|
|
700e01708b | ||
|
|
1a39dedc62 | ||
|
|
a03b8b4f76 | ||
|
|
ae462ed099 | ||
|
|
5316a28e6c | ||
|
|
bb845817d6 | ||
|
|
425cc2a966 | ||
|
|
dc47c8f898 | ||
|
|
de878b3198 | ||
|
|
00ce130286 | ||
|
|
3ff4dfd02d | ||
|
|
397a1b9616 | ||
|
|
6a5d98cf19 | ||
|
|
f22134dabd | ||
|
|
b7d7bda93a | ||
|
|
3d4d40fa02 | ||
|
|
42cd2a2276 | ||
|
|
7b568cfce2 | ||
|
|
00ebc58795 | ||
|
|
79e04d5e23 | ||
|
|
636ab29669 | ||
|
|
fb87920bbb | ||
|
|
8a03c42bd4 | ||
|
|
5b00ad0336 | ||
|
|
314990447c | ||
|
|
664d9a2144 | ||
|
|
c1c682402a | ||
|
|
7282e15ee2 | ||
|
|
b48121335c | ||
|
|
ea0c077180 | ||
|
|
c11bed3819 | ||
|
|
022cf3d93c | ||
|
|
2522c8c9e2 | ||
|
|
475a717cd6 | ||
|
|
4c192393b0 | ||
|
|
9961a6c101 | ||
|
|
c3c3e802ca | ||
|
|
1ebf7948c6 | ||
|
|
f98136cd99 | ||
|
|
8180403f97 | ||
|
|
62d55cabd9 | ||
|
|
091d2cd0d2 | ||
|
|
69fba93152 | ||
|
|
570ee58f53 | ||
|
|
e10b58e4ca | ||
|
|
080ccdda5b | ||
|
|
a7d8b9de8c | ||
|
|
30c7effa50 | ||
|
|
f85efb2797 | ||
|
|
f8e0b54836 | ||
|
|
131a944e24 | ||
|
|
ab5d954337 | ||
|
|
4bec7df33b | ||
|
|
fbc3e2d0e7 | ||
|
|
4f9d2de8cd | ||
|
|
18b7483cc4 | ||
|
|
c25034a86d | ||
|
|
7408b8c8d9 | ||
|
|
06022dfd7e | ||
|
|
30e9673375 | ||
|
|
2182dc3cc5 | ||
|
|
1f6a0a87f6 | ||
|
|
6d7ff9444a | ||
|
|
4125360dfb | ||
|
|
a804485a4c | ||
|
|
02642628b0 | ||
|
|
5b438e13cc | ||
|
|
687fe617cc | ||
|
|
03391a07e0 | ||
|
|
e987fe9d37 | ||
|
|
d7b1e2cd9c | ||
|
|
2790689d26 | ||
|
|
7c271d21ae | ||
|
|
75e2167165 | ||
|
|
94170757e8 | ||
|
|
9bdb5ea5e0 | ||
|
|
c3e11bd390 | ||
|
|
d056a94f0c | ||
|
|
f16498a8a7 | ||
|
|
e5638b520d | ||
|
|
6e4923d762 | ||
|
|
1e4fd552ac | ||
|
|
55c6fa0d93 | ||
|
|
7489c372e5 | ||
|
|
893ef4701d | ||
|
|
41ee58e79a | ||
|
|
bf2c001c87 | ||
|
|
245a6e6f57 | ||
|
|
6c662ae672 | ||
|
|
8249e66419 | ||
|
|
6032692de0 | ||
|
|
c580c9d4b3 | ||
|
|
8e974b80ca | ||
|
|
faf8062830 | ||
|
|
56e00d74ad | ||
|
|
051e5038b5 | ||
|
|
c54017eac5 | ||
|
|
73dc130908 | ||
|
|
82aa2d1819 | ||
|
|
1bef98fdfa | ||
|
|
faa6236580 | ||
|
|
a1b0139c9b |
No files matched your search
@@ -1,8 +1,6 @@
|
||||
*.autosave
|
||||
*.db
|
||||
*.diff
|
||||
*.o
|
||||
*.patch
|
||||
*.psp
|
||||
*.pyc
|
||||
*.pyo
|
||||
@@ -11,14 +9,18 @@
|
||||
.DS_Store
|
||||
.idea
|
||||
.vscode
|
||||
/*.diff
|
||||
/*.patch
|
||||
/dist
|
||||
/debian-build
|
||||
/docker-build
|
||||
/mac-build
|
||||
/pip-build
|
||||
/redhat-build
|
||||
/src-build
|
||||
/win-build
|
||||
_build
|
||||
build-*
|
||||
/build-*
|
||||
pgadmin4.log
|
||||
pkg/win32/installer.iss
|
||||
pkg/mac/codesign.conf
|
||||
@@ -36,8 +38,10 @@ runtime/pgAdmin4_resource.rc
|
||||
runtime/release/
|
||||
runtime/ui_BrowserWindow.h
|
||||
web/config_local.py
|
||||
web/pgadmin/misc/themes/pgadmin.themes.json
|
||||
web/geckodriver.log
|
||||
web/regression/test_config.json
|
||||
web/regression/.coveragerc
|
||||
node_modules/
|
||||
web/pgAdmin/static/js/generated
|
||||
web/pgadmin/static/js/generated
|
||||
@@ -45,3 +49,10 @@ web/yarn-error.log
|
||||
/web/cacert.pem
|
||||
auditjs.html
|
||||
auditpy.txt
|
||||
/venv/
|
||||
.scannerwork/
|
||||
web/coverage/
|
||||
web/.coverage
|
||||
web/regression/.coverage
|
||||
web/regression/covhtml/
|
||||
web/regression/htmlcov/
|
||||
@@ -12,7 +12,7 @@
|
||||
# and clean up the web/ source code
|
||||
#########################################################################
|
||||
|
||||
FROM node:8-alpine AS app-builder
|
||||
FROM node:12-alpine3.11 AS app-builder
|
||||
|
||||
RUN apk add --no-cache \
|
||||
autoconf \
|
||||
@@ -45,7 +45,10 @@ RUN npm install && \
|
||||
npm audit fix && \
|
||||
rm -f yarn.lock && \
|
||||
yarn import && \
|
||||
yarn audit && \
|
||||
# Commented the below line to avoid vulnerability in lodash package.
|
||||
# Refer https://www.npmjs.com/advisories/1523.
|
||||
# Once fixed we will uncomment it.
|
||||
# yarn audit && \
|
||||
rm -f package-lock.json && \
|
||||
yarn run bundle && \
|
||||
rm -rf node_modules \
|
||||
@@ -61,7 +64,7 @@ RUN npm install && \
|
||||
# Now, create a documentation build container for the Sphinx docs
|
||||
#########################################################################
|
||||
|
||||
FROM python:3.7-alpine3.10 as docs-builder
|
||||
FROM python:3.8-alpine3.11 as docs-builder
|
||||
|
||||
# Install only dependencies absolutely required for documentation building
|
||||
RUN apk add --no-cache \
|
||||
@@ -71,7 +74,7 @@ RUN apk add --no-cache \
|
||||
libffi-dev && \
|
||||
pip install --no-cache-dir \
|
||||
sphinx \
|
||||
flask_security \
|
||||
flask_security_too \
|
||||
flask_paranoid \
|
||||
python-dateutil \
|
||||
flask_sqlalchemy \
|
||||
@@ -93,20 +96,15 @@ RUN LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 make -C /pgadmin4/docs/en_US -f Makefile
|
||||
# Create additional builders to get all of the PostgreSQL utilities
|
||||
#########################################################################
|
||||
|
||||
FROM postgres:9.4-alpine as pg94-builder
|
||||
FROM postgres:9.5-alpine as pg95-builder
|
||||
FROM postgres:9.6-alpine as pg96-builder
|
||||
FROM postgres:10-alpine as pg10-builder
|
||||
FROM postgres:11-alpine as pg11-builder
|
||||
FROM postgres:12-alpine as pg12-builder
|
||||
|
||||
FROM alpine:3.10 as tool-builder
|
||||
FROM alpine:3.11 as tool-builder
|
||||
|
||||
# Copy the PG binaries
|
||||
COPY --from=pg94-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-9.4/
|
||||
COPY --from=pg94-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-9.4/
|
||||
COPY --from=pg94-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-9.4/
|
||||
COPY --from=pg94-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-9.4/
|
||||
|
||||
COPY --from=pg95-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-9.5/
|
||||
COPY --from=pg95-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-9.5/
|
||||
COPY --from=pg95-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-9.5/
|
||||
@@ -127,11 +125,16 @@ COPY --from=pg11-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-11/
|
||||
COPY --from=pg11-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-11/
|
||||
COPY --from=pg11-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-11/
|
||||
|
||||
COPY --from=pg12-builder /usr/local/bin/pg_dump /usr/local/pgsql/pgsql-12/
|
||||
COPY --from=pg12-builder /usr/local/bin/pg_dumpall /usr/local/pgsql/pgsql-12/
|
||||
COPY --from=pg12-builder /usr/local/bin/pg_restore /usr/local/pgsql/pgsql-12/
|
||||
COPY --from=pg12-builder /usr/local/bin/psql /usr/local/pgsql/pgsql-12/
|
||||
|
||||
#########################################################################
|
||||
# Assemble everything into the final container.
|
||||
#########################################################################
|
||||
|
||||
FROM python:3.7-alpine3.10
|
||||
FROM python:3.8-alpine3.11
|
||||
|
||||
COPY --from=tool-builder /usr/local/pgsql /usr/local/
|
||||
|
||||
@@ -143,6 +146,10 @@ COPY --from=app-builder /pgadmin4/web /pgadmin4
|
||||
COPY --from=docs-builder /pgadmin4/docs/en_US/_build/html/ /pgadmin4/docs
|
||||
COPY requirements.txt /pgadmin4/requirements.txt
|
||||
|
||||
# License files
|
||||
COPY LICENSE /pgadmin4/LICENSE
|
||||
COPY DEPENDENCIES /pgadmin4/DEPENDENCIES
|
||||
|
||||
# Install build-dependencies, build & install C extensions and purge deps in
|
||||
# one RUN step
|
||||
RUN apk add --no-cache --virtual \
|
||||
@@ -154,19 +161,39 @@ RUN apk add --no-cache --virtual \
|
||||
apk add \
|
||||
postfix \
|
||||
postgresql-client \
|
||||
postgresql-libs && \
|
||||
postgresql-libs \
|
||||
shadow \
|
||||
sudo \
|
||||
libcap && \
|
||||
pip install --upgrade pip && \
|
||||
pip install --no-cache-dir -r requirements.txt && \
|
||||
pip install --no-cache-dir gunicorn && \
|
||||
apk del --no-cache build-deps
|
||||
pip install --no-cache-dir gunicorn==19.9.0 && \
|
||||
apk del --no-cache build-deps && \
|
||||
echo "pgadmin ALL = NOPASSWD: /usr/sbin/postfix start" > /etc/sudoers.d/postfix
|
||||
|
||||
# We need the v12 libpq, which is only in the 'edge' build of Alpine at present
|
||||
COPY --from=pg12-builder /usr/local/lib/libpq.so.5.12 /usr/lib/
|
||||
RUN ln -sf /usr/lib/libpq.so.5.12 /usr/lib/libpq.so.5
|
||||
|
||||
# Copy the runner script
|
||||
COPY pkg/docker/run_pgadmin.py /pgadmin4
|
||||
COPY pkg/docker/gunicorn_config.py /pgadmin4
|
||||
COPY pkg/docker/entrypoint.sh /entrypoint.sh
|
||||
|
||||
# Precompile and optimize python code to save time and space on startup
|
||||
RUN python -O -m compileall -x node_modules /pgadmin4
|
||||
|
||||
RUN groupadd -g 5050 pgadmin && \
|
||||
useradd -r -u 5050 -g pgadmin pgadmin && \
|
||||
mkdir -p /var/lib/pgadmin && \
|
||||
chown pgadmin:pgadmin /var/lib/pgadmin && \
|
||||
mkdir -p /var/log/pgadmin && \
|
||||
chown pgadmin:pgadmin /var/log/pgadmin && \
|
||||
touch /pgadmin4/config_distro.py && \
|
||||
chown pgadmin:pgadmin /pgadmin4/config_distro.py && \
|
||||
setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/python3.8
|
||||
USER pgadmin
|
||||
|
||||
# Finish up
|
||||
VOLUME /var/lib/pgadmin
|
||||
EXPOSE 80 443
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
pgAdmin 4
|
||||
|
||||
Copyright (C) 2013 - 2019, The pgAdmin Development Team
|
||||
Copyright (C) 2013 - 2020, The pgAdmin Development Team
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose, without fee, and without a written agreement is
|
||||
|
||||
@@ -2,23 +2,26 @@
|
||||
SETLOCAL
|
||||
|
||||
SET WD=%CD%
|
||||
SET "PGBUILDPATH=%WD%\win-build"
|
||||
SET "BUILDROOT=%WD%\win-build"
|
||||
SET "DISTROOT=%WD%\dist"
|
||||
|
||||
SET CMDOPTION=""
|
||||
IF "%1" == "clean" SET CMDOPTION="VALID"
|
||||
IF "%1" == "x86" SET CMDOPTION="VALID"
|
||||
SET CMDOPTIONS=""
|
||||
IF "%1" == "clean" SET CMDOPTIONS="VALID"
|
||||
IF "%1" == "" SET CMDOPTIONS="VALID"
|
||||
|
||||
IF NOT %CMDOPTION%=="VALID" (
|
||||
IF NOT %CMDOPTIONS%=="VALID" (
|
||||
GOTO USAGE
|
||||
)
|
||||
|
||||
SET ARCHITECTURE=%1
|
||||
|
||||
IF "%ARCHITECTURE%"=="clean" (
|
||||
IF "%1" == "clean" (
|
||||
CALL :CLEAN
|
||||
EXIT /B %ERRORLEVEL%
|
||||
)
|
||||
|
||||
set "ARCHITECTURE=x64"
|
||||
if "%Platform%" == "X86" (
|
||||
set "ARCHITECTURE=x86"
|
||||
)
|
||||
|
||||
REM Main build sequence
|
||||
CALL :SET_ENVIRONMENT
|
||||
@@ -37,7 +40,7 @@ REM Main build sequence Ends
|
||||
|
||||
:CLEAN
|
||||
ECHO Removing build directory...
|
||||
IF EXIST "%PGBUILDPATH%" RD "%PGBUILDPATH%" /S /Q > nul || EXIT /B 1
|
||||
IF EXIST "%BUILDROOT%" RD "%BUILDROOT%" /S /Q > nul || EXIT /B 1
|
||||
|
||||
ECHO Removing temp build directory...
|
||||
IF EXIST "%WD%\pkg\win32\Output" rd "%WD%\pkg\win32\Output" /S /Q > nul || EXIT /B 1
|
||||
@@ -50,40 +53,32 @@ REM Main build sequence Ends
|
||||
|
||||
:SET_ENVIRONMENT
|
||||
ECHO Configuring the environment...
|
||||
IF "%PYTHON_HOME%" == "" SET "PYTHON_HOME=C:\Python27"
|
||||
IF "%PYTHON_DLL%" == "" SET "PYTHON_DLL=C:\Windows\SysWOW64\python27.dll"
|
||||
IF "%QTDIR%" == "" SET "QTDIR=C:\Qt\5.9.1\mingw53_32"
|
||||
IF "%MAKE%" == "" SET "MAKE=mingw32-make.exe"
|
||||
IF "%PGDIR%" == "" SET "PGDIR=C:\Program Files (x86)\PostgreSQL\10"
|
||||
IF "%INNOTOOL%" == "" SET "INNOTOOL=C:\Program Files (x86)\Inno Setup 5"
|
||||
IF "%VCREDIST%" == "" SET "VCREDIST=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\1033\vcredist_x86.exe"
|
||||
IF "%SIGNTOOL%" == "" SET "SIGNTOOL=C:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe"
|
||||
IF "%PGADMIN_PYTHON_DIR%" == "" SET "PGADMIN_PYTHON_DIR=C:\Python38"
|
||||
IF "%PGADMIN_QT_DIR%" == "" SET "PGADMIN_QT_DIR=C:\Qt\5.14.2\msvc2017_64"
|
||||
IF "%PGADMIN_POSTGRES_DIR%" == "" SET "PGADMIN_POSTGRES_DIR=C:\Program Files (x86)\PostgreSQL\12"
|
||||
IF "%PGADMIN_INNOTOOL_DIR%" == "" SET "PGADMIN_INNOTOOL_DIR=C:\Program Files (x86)\Inno Setup 6"
|
||||
IF "%PGADMIN_VCREDIST_DIR%" == "" SET "PGADMIN_VCREDIST_DIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Redist\MSVC\14.16.27012"
|
||||
IF "%PGADMIN_SIGNTOOL_DIR%" == "" SET "PGADMIN_SIGNTOOL_DIR=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64"
|
||||
|
||||
REM Set VCREDISTNAME (the filename)
|
||||
for /f "delims=" %%i in ("%VCREDIST%") do set "VCREDISTNAME=%%~nxi"
|
||||
REM Set REDIST_NAME (the filename)
|
||||
set "VCREDIST_FILE=vcredist_%ARCHITECTURE%.exe"
|
||||
|
||||
REM Set additional variables we need
|
||||
SET "QMAKE=%QTDIR%\bin\qmake.exe"
|
||||
FOR /F "tokens=4,5 delims=. " %%a IN ('%QMAKE% -v ^| findstr /B /C:"Using Qt version "') DO SET QT_VERSION=%%a.%%b
|
||||
|
||||
SET "VIRTUALENV=venv"
|
||||
SET "TARGET_DIR=%WD%\dist"
|
||||
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\config.py') DO SET APP_MAJOR=%%a
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_REVISION =" %WD%\web\config.py') DO SET APP_MINOR=%%a
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_SUFFIX =" %WD%\web\config.py') DO SET APP_VERSION_SUFFIX=%%a
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\config.py') DO SET APP_MAJOR=%%a
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_REVISION =" %WD%\web\config.py') DO SET APP_MINOR=%%a
|
||||
FOR /F "tokens=3" %%a IN ('findstr /C:"APP_SUFFIX =" %WD%\web\config.py') DO SET APP_VERSION_SUFFIX=%%a
|
||||
REM remove single quote from the string
|
||||
SET APP_VERSION_SUFFIX=%APP_VERSION_SUFFIX:'=%
|
||||
SET APP_NAME=""
|
||||
FOR /F "tokens=2* DELims='" %%a IN ('findstr /C:"APP_NAME =" web\config.py') DO SET APP_NAME=%%a
|
||||
FOR /f "tokens=1 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "print('%APP_NAME%'.lower().replace(' ', ''))"') DO SET APP_SHORTNAME=%%G
|
||||
FOR /F "tokens=2* DELims='" %%a IN ('findstr /C:"APP_NAME =" web\config.py') DO SET APP_NAME=%%a
|
||||
FOR /f "tokens=1 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "print('%APP_NAME%'.lower().replace(' ', ''))"') DO SET APP_SHORTNAME=%%G
|
||||
SET APP_VERSION=%APP_MAJOR%.%APP_MINOR%
|
||||
SET INSTALLERNAME=%APP_SHORTNAME%-%APP_MAJOR%.%APP_MINOR%-%APP_VERSION_SUFFIX%-%ARCHITECTURE%.exe
|
||||
IF "%APP_VERSION_SUFFIX%" == "" SET INSTALLERNAME=%APP_SHORTNAME%-%APP_MAJOR%.%APP_MINOR%-%ARCHITECTURE%.exe
|
||||
|
||||
REM get Python version for the runtime build ex. 2.7.1 will be 27
|
||||
FOR /f "tokens=1 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MAJOR=%%G
|
||||
FOR /f "tokens=2 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MINOR=%%G
|
||||
FOR /f "tokens=1 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MAJOR=%%G
|
||||
FOR /f "tokens=2 DELims=." %%G IN ('%PGADMIN_PYTHON_DIR%/python.exe -c "import sys; print(sys.version.split(' ')[0])"') DO SET PYTHON_MINOR=%%G
|
||||
SET "PYTHON_VERSION=%PYTHON_MAJOR%%PYTHON_MINOR%"
|
||||
|
||||
EXIT /B 0
|
||||
@@ -91,32 +86,24 @@ REM Main build sequence Ends
|
||||
|
||||
:VALIDATE_ENVIRONMENT
|
||||
ECHO ****************************************************************
|
||||
ECHO S U M M A R Y
|
||||
ECHO * Build summary
|
||||
ECHO ****************************************************************
|
||||
ECHO Build path: %PGBUILDPATH%
|
||||
ECHO Output directory: %TARGET_DIR%
|
||||
ECHO Build path: %BUILDROOT%
|
||||
ECHO Output directory: %DISTROOT%
|
||||
ECHO Installer name: %INSTALLERNAME%
|
||||
ECHO.
|
||||
ECHO Python home: %PYTHON_HOME%
|
||||
ECHO Python DLL: %PYTHON_DLL%
|
||||
ECHO Python version: %PYTHON_VERSION%
|
||||
ECHO Python major version: %PYTHON_MAJOR%
|
||||
ECHO Python minor version: %PYTHON_MINOR%
|
||||
ECHO Python directory: %PGADMIN_PYTHON_DIR%
|
||||
ECHO Python DLL: %PGADMIN_PYTHON_DIR%\Python%PYTHON_VERSION%.dll
|
||||
ECHO Python version: %PYTHON_MAJOR%.%PYTHON_MINOR%
|
||||
ECHO.
|
||||
ECHO Qt home: %QTDIR%
|
||||
ECHO qmake executable: %QMAKE%
|
||||
ECHO Qt version: %QT_VERSION%
|
||||
ECHO Qt directory: %PGADMIN_QT_DIR%
|
||||
ECHO PostgreSQL directory: %PGADMIN_POSTGRES_DIR%
|
||||
ECHO.
|
||||
ECHO PostgreSQL home: %PGDIR%
|
||||
ECHO VC++ redist directory: %PGADMIN_VCREDIST_DIR%
|
||||
ECHO VC++ redist file: %VCREDIST_FILE%
|
||||
ECHO InnoTool directory: %PGADMIN_INNOTOOL_DIR%
|
||||
ECHO signtool directory: %PGADMIN_SIGNTOOL_DIR%
|
||||
ECHO.
|
||||
ECHO VC++ redistributable: %VCREDIST%
|
||||
ECHO VC++ redistributable file: %VCREDISTNAME%
|
||||
ECHO.
|
||||
ECHO innotool executable: %INNOTOOL%
|
||||
ECHO signtool executable: %SIGNTOOL%
|
||||
ECHO.
|
||||
ECHO App major version: %APP_MAJOR%
|
||||
ECHO App minor version: %APP_MINOR%
|
||||
ECHO App version: %APP_VERSION%
|
||||
ECHO App version suffix: %APP_VERSION_SUFFIX%
|
||||
ECHO App short name: %APP_SHORTNAME%
|
||||
@@ -124,88 +111,87 @@ REM Main build sequence Ends
|
||||
ECHO ****************************************************************
|
||||
|
||||
ECHO Checking the environment...
|
||||
IF NOT EXIST "%INNOTOOL%" (
|
||||
ECHO !INNOTOOL! does not exist
|
||||
ECHO Please install Innotool and set the INNOTOOL environment variable.
|
||||
IF NOT EXIST "%PGADMIN_INNOTOOL_DIR%" (
|
||||
ECHO !PGADMIN_INNOTOOL_DIR! does not exist
|
||||
ECHO Please install InnoTool and set the PGADMIN_INNOTOOL_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%VCREDIST%" (
|
||||
ECHO !VCREDIST! does not exist
|
||||
ECHO Please install Microsoft Visual studio and set the VCREDIST environment variable.
|
||||
IF NOT EXIST "%PGADMIN_VCREDIST_DIR%" (
|
||||
ECHO !PGADMIN_VCREDIST_DIR! does not exist
|
||||
ECHO Please install Microsoft Visual studio and set the PGADMIN_VCREDIST_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%QTDIR%" (
|
||||
ECHO !QTDIR! does not exist.
|
||||
ECHO Please install Qt and set the QTDIR environment variable.
|
||||
IF NOT EXIST "%PGADMIN_QT_DIR%" (
|
||||
ECHO !PGADMIN_QT_DIR! does not exist.
|
||||
ECHO Please install Qt and set the PGADMIN_QT_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%QMAKE%" (
|
||||
IF NOT EXIST "%PGADMIN_QT_DIR%\bin\qmake.exe" (
|
||||
ECHO !QMAKE! does not exist.
|
||||
ECHO Please install Qt and set the QTDIR environment variable.
|
||||
ECHO Please install Qt and set the PGADMIN_QT_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%PYTHON_HOME%" (
|
||||
ECHO !PYTHON_HOME! does not exist.
|
||||
ECHO Please install Python and set the PYTHON_HOME environment variable.
|
||||
IF NOT EXIST "%PGADMIN_PYTHON_DIR%" (
|
||||
ECHO !PGADMIN_PYTHON_DIR! does not exist.
|
||||
ECHO Please install Python and set the PGADMIN_PYTHON_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%PYTHON_DLL%" (
|
||||
ECHO !PYTHON_DLL! does not exist.
|
||||
ECHO Please install Python and set the PYTHON_DLL environment variable.
|
||||
IF NOT EXIST "%PGADMIN_PYTHON_DIR%\Python%PYTHON_VERSION%.dll" (
|
||||
ECHO !PGADMIN_PYTHON_DIR!\Python!PYTHON_VERSION!.dll does not exist.
|
||||
ECHO Please check your Python installation is complete.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%PGDIR%" (
|
||||
ECHO !PGDIR! does not exist.
|
||||
ECHO Please install PostgreSQL and set the PGDIR environment variable.
|
||||
IF NOT EXIST "%PGADMIN_POSTGRES_DIR%" (
|
||||
ECHO !PGADMIN_POSTGRES_DIR! does not exist.
|
||||
ECHO Please install PostgreSQL and set the PGADMIN_POSTGRES_DIR environment variable.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
IF NOT EXIST "%PYTHON_HOME%\Scripts\virtualenv.exe" (
|
||||
ECHO !PYTHON_HOME!\Scripts\virtualenv.exe does not exist.
|
||||
IF NOT EXIST "%PGADMIN_PYTHON_DIR%\Scripts\virtualenv.exe" (
|
||||
ECHO !PGADMIN_PYTHON_DIR!\Scripts\virtualenv.exe does not exist.
|
||||
ECHO Please install the virtualenv package in Python.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
SET "PATH=%PGDIR%\bin;%PATH%"
|
||||
SET "PATH=%PGADMIN_POSTGRES_DIR%\bin;%PATH%"
|
||||
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:CREATE_VIRTUAL_ENV
|
||||
ECHO Creating virtual environment...
|
||||
IF NOT EXIST "%PGBUILDPATH%" MKDIR "%PGBUILDPATH%"
|
||||
IF NOT EXIST "%BUILDROOT%" MKDIR "%BUILDROOT%"
|
||||
|
||||
CD "%PGBUILDPATH%"
|
||||
"%PYTHON_HOME%\Scripts\virtualenv.exe" "%VIRTUALENV%"
|
||||
CD "%BUILDROOT%"
|
||||
|
||||
XCOPY /S /I /E /H /Y "%PYTHON_HOME%\DLLs" "%PGBUILDPATH%\%VIRTUALENV%\DLLs" > nul || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%PYTHON_HOME%\Lib" "%PGBUILDPATH%\%VIRTUALENV%\Lib" > nul || EXIT /B 1
|
||||
REM Note that we must use virtualenv.exe here, as the venv module doesn't allow python.exe to relocate.
|
||||
"%PGADMIN_PYTHON_DIR%\Scripts\virtualenv.exe" venv
|
||||
|
||||
ECHO Activating virtual environment - %PGBUILDPATH%\%VIRTUALENV%...
|
||||
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\activate" || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%PGADMIN_PYTHON_DIR%\DLLs" "%BUILDROOT%\venv\DLLs" > nul || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%PGADMIN_PYTHON_DIR%\Lib" "%BUILDROOT%\venv\Lib" > nul || EXIT /B 1
|
||||
|
||||
ECHO Activating virtual environment - %BUILDROOT%\venv...
|
||||
CALL "%BUILDROOT%\venv\Scripts\activate" || EXIT /B 1
|
||||
|
||||
ECHO Installing dependencies...
|
||||
CALL pip install -r "%WD%\requirements.txt" || EXIT /B 1
|
||||
CALL pip install sphinx || EXIT /B 1
|
||||
|
||||
REM If we're using VC++, and this is Python 3.6+, we need to remove the hack
|
||||
REM above or it will break qmake. Sigh.
|
||||
IF "%MAKE%" == "nmake" (
|
||||
IF %PYTHON_VERSION% GEQ 36 SET CL=
|
||||
)
|
||||
REM If this is Python 3.6+, we need to remove the hack above or it will break qmake. Sigh.
|
||||
IF %PYTHON_VERSION% GEQ 36 SET CL=
|
||||
|
||||
CD %WD%
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:CREATE_RUNTIME_ENV
|
||||
MKDIR "%PGBUILDPATH%\runtime"
|
||||
MKDIR "%BUILDROOT%\runtime"
|
||||
|
||||
CD "%WD%\web"
|
||||
|
||||
@@ -219,33 +205,37 @@ REM Main build sequence Ends
|
||||
RD /Q /S "%WD%\web\pgadmin\static\js\generated\.cache" 1> nul 2>&1
|
||||
|
||||
ECHO Copying web directory...
|
||||
XCOPY /S /I /E /H /Y "%WD%\web" "%PGBUILDPATH%\web" > nul || EXIT /B 1
|
||||
XCOPY /S /I /E /H /Y "%WD%\web" "%BUILDROOT%\web" > nul || EXIT /B 1
|
||||
|
||||
ECHO Cleaning up unnecessary .pyc and .pyo files...
|
||||
FOR /R "%PGBUILDPATH%\web" %%f in (*.pyc *.pyo) do DEL /q "%%f" 1> nul 2>&1
|
||||
FOR /R "%BUILDROOT%\web" %%f in (*.pyc *.pyo) do DEL /q "%%f" 1> nul 2>&1
|
||||
ECHO Removing tests, Python caches and node modules...
|
||||
FOR /R "%PGBUILDPATH%\web" %%f in (tests feature_tests __pycache__ node_modules) do RD /Q /S "%%f" 1> nul 2>&1
|
||||
FOR /R "%BUILDROOT%\web" %%f in (tests feature_tests __pycache__ node_modules) do RD /Q /S "%%f" 1> nul 2>&1
|
||||
ECHO Removing the test framework...
|
||||
RD /Q /S "%PGBUILDPATH%\web\regression" 1> nul 2>&1
|
||||
RD /Q /S "%BUILDROOT%\web\regression" 1> nul 2>&1
|
||||
ECHO Removing tools...
|
||||
RD /Q /S "%PGBUILDPATH%\web\tools" 1> nul 2>&1
|
||||
RD /Q /S "%BUILDROOT%\web\tools" 1> nul 2>&1
|
||||
ECHO Removing any existing configurations...
|
||||
DEL /q "%PGBUILDPATH%\web\pgadmin4.db" 1> nul 2>&1
|
||||
DEL /q "%PGBUILDPATH%\web\config_local.py" 1> nul 2>&1
|
||||
|
||||
DEL /q "%BUILDROOT%\web\pgadmin4.db" 1> nul 2>&1
|
||||
DEL /q "%BUILDROOT%\web\config_local.py" 1> nul 2>&1
|
||||
|
||||
ECHO Staging license files...
|
||||
COPY "%WD%\LICENSE" "%BUILDROOT%\" > nul || EXIT /B 1
|
||||
COPY "%WD%\DEPENDENCIES" "%BUILDROOT%\" > nul || EXIT /B 1
|
||||
|
||||
ECHO Creating config_distro.py
|
||||
ECHO SERVER_MODE = False > "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO HELP_PATH = '../../../docs/en_US/html/' >> "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO DEFAULT_BINARY_PATHS = { >> "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO 'pg': '$DIR/../runtime', >> "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO 'ppas': '' >> "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO } >> "%PGBUILDPATH%\web\config_distro.py"
|
||||
ECHO SERVER_MODE = False > "%BUILDROOT%\web\config_distro.py"
|
||||
ECHO HELP_PATH = '../../../docs/en_US/html/' >> "%BUILDROOT%\web\config_distro.py"
|
||||
ECHO DEFAULT_BINARY_PATHS = { >> "%BUILDROOT%\web\config_distro.py"
|
||||
ECHO 'pg': '$DIR/../runtime', >> "%BUILDROOT%\web\config_distro.py"
|
||||
ECHO 'ppas': '' >> "%BUILDROOT%\web\config_distro.py"
|
||||
ECHO } >> "%BUILDROOT%\web\config_distro.py"
|
||||
|
||||
ECHO Building docs...
|
||||
MKDIR "%PGBUILDPATH%\docs\en_US\html"
|
||||
MKDIR "%BUILDROOT%\docs\en_US\html"
|
||||
CD "%WD%\docs\en_US"
|
||||
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\python.exe" build_code_snippet.py || EXIT /B 1
|
||||
CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\sphinx-build.exe" "%WD%\docs\en_US" "%PGBUILDPATH%\docs\en_US\html" || EXIT /B 1
|
||||
CALL "%BUILDROOT%\venv\Scripts\python.exe" build_code_snippet.py || EXIT /B 1
|
||||
CALL "%BUILDROOT%\venv\Scripts\sphinx-build.exe" "%WD%\docs\en_US" "%BUILDROOT%\docs\en_US\html" || EXIT /B 1
|
||||
|
||||
ECHO Removing Sphinx
|
||||
CALL pip uninstall -y sphinx Pygments alabaster colorama docutils imagesize requests snowballstemmer
|
||||
@@ -254,53 +244,50 @@ REM Main build sequence Ends
|
||||
CD "%WD%\runtime"
|
||||
|
||||
ECHO Running qmake...
|
||||
CALL "%QMAKE%" || EXIT /B 1
|
||||
CALL set "PGADMIN_PYTHON_DIR=%PGADMIN_PYTHON_DIR%" && "%PGADMIN_QT_DIR%\bin\qmake.exe" || EXIT /B 1
|
||||
|
||||
ECHO Cleaning the build directory...
|
||||
CALL %MAKE% clean || EXIT /B 1
|
||||
CALL nmake clean || EXIT /B 1
|
||||
|
||||
ECHO Running make...
|
||||
CALL %MAKE% || EXIT /B 1
|
||||
CALL nmake || EXIT /B 1
|
||||
|
||||
ECHO Staging pgAdmin4.exe...
|
||||
COPY "%WD%\runtime\release\pgAdmin4.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%WD%\runtime\release\pgAdmin4.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
|
||||
ECHO Staging Qt components...
|
||||
COPY "%QTDIR%\bin\Qt5Core.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%QTDIR%\bin\Qt5Gui.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%QTDIR%\bin\Qt5Widgets.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%QTDIR%\bin\Qt5Network.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%QTDIR%\bin\libgcc_s_dw2-1.dll" COPY "%QTDIR%\bin\libgcc_s_dw2-1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%QTDIR%\bin\libstdc++-6.dll" COPY "%QTDIR%\bin\libstdc++-6.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%QTDIR%\bin\libwinpthread-1.dll" COPY "%QTDIR%\bin\libwinpthread-1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
MKDIR "%PGBUILDPATH%\runtime\platforms" > nul || EXIT /B 1
|
||||
COPY "%QTDIR%\plugins\platforms\qwindows.dll" "%PGBUILDPATH%\runtime\platforms" > nul || EXIT /B 1
|
||||
ECHO [Paths] > "%PGBUILDPATH%\runtime\qt.conf"
|
||||
ECHO Plugins=plugins >> "%PGBUILDPATH%\runtime\qt.conf"
|
||||
COPY "%PGADMIN_QT_DIR%\bin\Qt5Core.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_QT_DIR%\bin\Qt5Gui.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_QT_DIR%\bin\Qt5Widgets.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_QT_DIR%\bin\Qt5Network.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_QT_DIR%\bin\Qt5Svg.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
MKDIR "%BUILDROOT%\runtime\platforms" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_QT_DIR%\plugins\platforms\qwindows.dll" "%BUILDROOT%\runtime\platforms" > nul || EXIT /B 1
|
||||
MKDIR "%BUILDROOT%\runtime\imageformats" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_QT_DIR%\plugins\imageformats\qsvg.dll" "%BUILDROOT%\runtime\imageformats" > nul || EXIT /B 1
|
||||
ECHO [Paths] > "%BUILDROOT%\runtime\qt.conf"
|
||||
ECHO Plugins=plugins >> "%BUILDROOT%\runtime\qt.conf"
|
||||
|
||||
ECHO Staging PostgreSQL components...
|
||||
COPY "%PGDIR%\bin\libpq.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGDIR%\bin\libcrypto-1_1.dll" (
|
||||
REM OpenSSL 1.1.1
|
||||
COPY "%PGDIR%\bin\libcrypto-1_1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGDIR%\bin\libssl-1_1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libpq.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
IF "%ARCHITECTURE%" == "x64" (
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libcrypto-1_1-x64.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libssl-1_1-x64.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
) ELSE (
|
||||
REM OpenSSL 1.0.2
|
||||
COPY "%PGDIR%\bin\ssleay32.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGDIR%\bin\libeay32.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libcrypto-1_1.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\libssl-1_1.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
)
|
||||
IF EXIST "%PGDIR%\bin\libintl-*.dll" COPY "%PGDIR%\bin\libintl-*.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGDIR%\bin\libiconv-*.dll" COPY "%PGDIR%\bin\libiconv-*.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGDIR%\bin\zlib.dll" COPY "%PGDIR%\bin\zlib.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGDIR%\bin\zlib1.dll" COPY "%PGDIR%\bin\zlib1.dll" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGDIR%\bin\pg_dump.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGDIR%\bin\pg_dumpall.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1L%
|
||||
COPY "%PGDIR%\bin\pg_restore.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGDIR%\bin\psql.exe" "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\libintl-*.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\libintl-*.dll" "%BUILDROOT%\runtime" > nul
|
||||
IF EXIST "%PGADMIN_POSTGRES_DIR%\bin\libiconv-*.dll" COPY "%PGADMIN_POSTGRES_DIR%\bin\libiconv-*.dll" "%BUILDROOT%\runtime" > nul
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\zlib.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_dump.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_dumpall.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1L%
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\pg_restore.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY "%PGADMIN_POSTGRES_DIR%\bin\psql.exe" "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
|
||||
ECHO Staging VC++ runtime...
|
||||
MKDIR "%PGBUILDPATH%\installer" || EXIT /B 1
|
||||
COPY "%VCREDIST%" "%PGBUILDPATH%\installer" > nul || EXIT /B 1
|
||||
MKDIR "%BUILDROOT%\installer" || EXIT /B 1
|
||||
COPY "%PGADMIN_VCREDIST_DIR%\%VCREDIST_FILE%" "%BUILDROOT%\installer" > nul || EXIT /B 1
|
||||
|
||||
CD %WD%
|
||||
EXIT /B 0
|
||||
@@ -308,51 +295,51 @@ REM Main build sequence Ends
|
||||
|
||||
:CREATE_PYTHON_ENV
|
||||
ECHO Staging Python...
|
||||
COPY %PYTHON_DLL% "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY %PYTHON_HOME%\python.exe "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY %PYTHON_HOME%\pythonw.exe "%PGBUILDPATH%\runtime" > nul || EXIT /B 1
|
||||
COPY %PGADMIN_PYTHON_DIR%\python%PYTHON_VERSION%.dll "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY %PGADMIN_PYTHON_DIR%\python.exe "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
COPY %PGADMIN_PYTHON_DIR%\pythonw.exe "%BUILDROOT%\runtime" > nul || EXIT /B 1
|
||||
|
||||
ECHO Cleaning up unnecessary .pyc and .pyo files...
|
||||
FOR /R "%PGBUILDPATH%\%VIRTUALENV%" %%f in (*.pyc *.pyo) do DEL /q "%%f" 1> nul 2>&1
|
||||
FOR /R "%BUILDROOT%\venv" %%f in (*.pyc *.pyo) do DEL /q "%%f" 1> nul 2>&1
|
||||
ECHO Removing tests...
|
||||
FOR /R "%PGBUILDPATH%\%VIRTUALENV%\Lib" %%f in (test tests) do RD /Q /S "%%f" 1> nul 2>&1
|
||||
FOR /R "%BUILDROOT%\venv\Lib" %%f in (test tests) do RD /Q /S "%%f" 1> nul 2>&1
|
||||
ECHO Removing TCL...
|
||||
RD /Q /S "%PGBUILDPATH%\%VIRTUALENV%\tcl" 1> nul 2>&1
|
||||
RD /Q /S "%BUILDROOT%\venv\tcl" 1> nul 2>&1
|
||||
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:CREATE_INSTALLER
|
||||
ECHO Preparing for creation of windows installer...
|
||||
IF NOT EXIST "%TARGET_DIR%" MKDIR "%TARGET_DIR%"
|
||||
IF NOT EXIST "%DISTROOT%" MKDIR "%DISTROOT%"
|
||||
|
||||
ECHO Copying icon file...
|
||||
COPY "%WD%\pkg\win32\Resources\pgAdmin4.ico" "%PGBUILDPATH%" > nul || EXIT /B 1
|
||||
COPY "%WD%\pkg\win32\Resources\pgAdmin4.ico" "%BUILDROOT%" > nul || EXIT /B 1
|
||||
|
||||
CD "%WD%\pkg\win32"
|
||||
|
||||
ECHO Processing installer configuration script...
|
||||
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in" "-o" "%WD%\pkg\win32\installer.iss.in_stage1" "-s" MYAPP_NAME -r """%APP_NAME%"""
|
||||
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage1" "-o" "%WD%\pkg\win32\installer.iss.in_stage2" "-s" MYAPP_FULLVERSION -r """%APP_VERSION%"""
|
||||
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss.in_stage3" "-s" MYAPP_VERSION -r """v%APP_MAJOR%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in" "-o" "%WD%\pkg\win32\installer.iss.in_stage1" "-s" MYAPP_NAME -r """%APP_NAME%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage1" "-o" "%WD%\pkg\win32\installer.iss.in_stage2" "-s" MYAPP_FULLVERSION -r """%APP_VERSION%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage2" "-o" "%WD%\pkg\win32\installer.iss.in_stage3" "-s" MYAPP_VERSION -r """v%APP_MAJOR%"""
|
||||
|
||||
SET ARCMODE=
|
||||
IF "%ARCHITECTURE%"=="amd64" (
|
||||
IF "%ARCHITECTURE%" == "x64" (
|
||||
set ARCMODE="x64"
|
||||
)
|
||||
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage3" "-o" "%WD%\pkg\win32\installer.iss.in_stage4" "-s" MYAPP_ARCHITECTURESMODE -r """%ARCMODE%"""
|
||||
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage4" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_VCDIST -r """%VCREDISTNAME%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage3" "-o" "%WD%\pkg\win32\installer.iss.in_stage4" "-s" MYAPP_ARCHITECTURESMODE -r """%ARCMODE%"""
|
||||
CALL "%PGADMIN_PYTHON_DIR%\python" "%WD%\pkg\win32\replace.py" "-i" "%WD%\pkg\win32\installer.iss.in_stage4" "-o" "%WD%\pkg\win32\installer.iss" "-s" MYAPP_VCDIST -r """%PGADMIN_VCREDIST_DIRNAME%\%VCREDIST_FILE%"""
|
||||
|
||||
ECHO Cleaning up...
|
||||
DEL /s "%WD%\pkg\win32\installer.iss.in_stage*" > nul
|
||||
|
||||
ECHO Creating windows installer using INNO tool...
|
||||
CALL "%INNOTOOL%\ISCC.exe" /q "%WD%\pkg\win32\installer.iss" || EXIT /B 1
|
||||
CALL "%PGADMIN_INNOTOOL_DIR%\ISCC.exe" /q "%WD%\pkg\win32\installer.iss" || EXIT /B 1
|
||||
|
||||
ECHO Renaming installer...
|
||||
MOVE "%WD%\pkg\win32\Output\Setup.exe" "%TARGET_DIR%\%INSTALLERNAME%" > nul || EXIT /B 1
|
||||
MOVE "%WD%\pkg\win32\Output\Setup.exe" "%DISTROOT%\%INSTALLERNAME%" > nul || EXIT /B 1
|
||||
|
||||
ECHO Location - %TARGET_DIR%\%INSTALLERNAME%
|
||||
ECHO Location - %DISTROOT%\%INSTALLERNAME%
|
||||
ECHO Installer generated successfully.
|
||||
|
||||
CD %WD%
|
||||
@@ -361,7 +348,7 @@ REM Main build sequence Ends
|
||||
|
||||
:SIGN_INSTALLER
|
||||
ECHO Attempting to sign the installer...
|
||||
CALL "%SIGNTOOL%" sign /t http://timestamp.verisign.com/scripts/timstamp.dll "%TARGET_DIR%\%INSTALLERNAME%"
|
||||
CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" sign /t http://timestamp.verisign.com/scripts/timstamp.dll "%DISTROOT%\%INSTALLERNAME%"
|
||||
IF %ERRORLEVEL% NEQ 0 (
|
||||
ECHO.
|
||||
ECHO ************************************************************
|
||||
@@ -375,15 +362,15 @@ REM Main build sequence Ends
|
||||
|
||||
:CLEANUP_ENV
|
||||
ECHO Cleaning the build environment...
|
||||
RD "%PGBUILDPATH%\%VIRTUALENV%\Include" /S /Q 1> nul 2>&1
|
||||
DEL /s "%PGBUILDPATH%\%VIRTUALENV%\pip-selfcheck.json" 1> nul 2>&1
|
||||
RD "%BUILDROOT%\venv\Include" /S /Q 1> nul 2>&1
|
||||
DEL /s "%BUILDROOT%\venv\pip-selfcheck.json" 1> nul 2>&1
|
||||
|
||||
EXIT /B 0
|
||||
|
||||
|
||||
:USAGE
|
||||
ECHO Invalid command line options.
|
||||
ECHO Usage: "Make.bat <x86 | clean>"
|
||||
ECHO Usage: "Make.bat [clean]"
|
||||
ECHO.
|
||||
|
||||
EXIT /B 1
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
APP_NAME := $(shell grep ^APP_NAME web/config.py | awk -F"=" '{print $$NF}' | tr -d '[:space:]' | tr -d "'" | awk '{print tolower($$0)}')
|
||||
APP_RELEASE := $(shell grep ^APP_RELEASE web/config.py | awk -F"=" '{print $$NF}' | tr -d '[:space:]')
|
||||
APP_REVISION := $(shell grep ^APP_REVISION web/config.py | awk -F"=" '{print $$NF}' | tr -d '[:space:]')
|
||||
|
||||
#########################################################################
|
||||
# High-level targets
|
||||
#########################################################################
|
||||
@@ -24,7 +28,10 @@ install-node:
|
||||
cd web && npm audit fix
|
||||
rm -f web/yarn.lock
|
||||
cd web && yarn import
|
||||
cd web && yarn audit
|
||||
# Commented the below line to avoid vulnerability in lodash package.
|
||||
# Refer https://www.npmjs.com/advisories/1523.
|
||||
# Once fixed we will uncomment it.
|
||||
# cd web && yarn audit
|
||||
rm -f package-lock.json
|
||||
rm -f web/package-lock.json
|
||||
|
||||
@@ -44,7 +51,12 @@ check-audit:
|
||||
cd web && yarn run audit
|
||||
|
||||
check-auditjs:
|
||||
cd web && yarn run auditjs
|
||||
# Commented the below line to avoid vulnerability in decompress package and
|
||||
# audit only dependencies folder. Refer https://www.npmjs.com/advisories/1217.
|
||||
# Pull request is already been send https://github.com/kevva/decompress/pull/73,
|
||||
# once fixed we will uncomment it.
|
||||
# cd web && yarn run auditjs
|
||||
cd web && yarn run auditjs --groups dependencies
|
||||
|
||||
check-auditjs-html:
|
||||
cd web && yarn run auditjs-html
|
||||
@@ -70,6 +82,9 @@ check-feature: install-node bundle
|
||||
check-js: install-node linter
|
||||
cd web && yarn run karma start --single-run
|
||||
|
||||
check-js-coverage:
|
||||
cd web && yarn run test:karma-coverage
|
||||
|
||||
runtime-debug:
|
||||
cd runtime && qmake CONFIG+=debug && make
|
||||
|
||||
@@ -77,7 +92,7 @@ runtime:
|
||||
cd runtime && qmake CONFIG+=release && make
|
||||
|
||||
# Include all clean sub-targets in clean
|
||||
clean: clean-appbundle clean-dist clean-docs clean-node clean-pip clean-src clean-runtime
|
||||
clean: clean-appbundle clean-debian clean-dist clean-docs clean-node clean-pip clean-redhat clean-src clean-runtime
|
||||
rm -rf web/pgadmin/static/js/generated/*
|
||||
rm -rf web/pgadmin/static/js/generated/.cache
|
||||
rm -rf web/pgadmin/static/css/generated/*
|
||||
@@ -90,6 +105,9 @@ clean-runtime:
|
||||
clean-appbundle:
|
||||
rm -rf mac-build/
|
||||
|
||||
clean-debian:
|
||||
rm -rf debian-build/
|
||||
|
||||
clean-dist:
|
||||
rm -rf dist/
|
||||
|
||||
@@ -102,11 +120,18 @@ clean-node:
|
||||
clean-pip:
|
||||
rm -rf pip-build/
|
||||
|
||||
clean-redhat:
|
||||
rm -rf redhat-build/
|
||||
|
||||
clean-src:
|
||||
rm -rf src-build/
|
||||
|
||||
debian:
|
||||
./pkg/debian/build.sh
|
||||
|
||||
docker:
|
||||
docker build `python -c 'import web.config as c; print("-t {0} -t {0}:latest -t {0}:{1} -t {0}:{1}.{2}".format(c.APP_NAME.replace(" ", "").lower(), c.APP_RELEASE, c.APP_REVISION))'` .
|
||||
echo $(APP_NAME)
|
||||
docker build -t ${APP_NAME} -t $(APP_NAME):latest -t $(APP_NAME):$(APP_RELEASE) -t $(APP_NAME):$(APP_RELEASE).$(APP_REVISION) .
|
||||
|
||||
docs:
|
||||
LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 $(MAKE) -C docs/en_US -f Makefile.sphinx html
|
||||
@@ -133,5 +158,8 @@ msg-update:
|
||||
pip: docs
|
||||
./pkg/pip/build.sh
|
||||
|
||||
redhat:
|
||||
./pkg/redhat/build.sh
|
||||
|
||||
src:
|
||||
./pkg/src/build.sh
|
||||
@@ -1,4 +1,4 @@
|
||||
pgAdmin 4
|
||||
pgAdmin 4
|
||||
=========
|
||||
|
||||
pgAdmin 4 is a rewrite of the popular pgAdmin3 management tool for the
|
||||
@@ -26,42 +26,46 @@ Building the Runtime
|
||||
|
||||
To build the runtime, the following packages must be installed:
|
||||
|
||||
- QT 4.6 or above (Use the VC++ build on Windows, not MinGW).
|
||||
- Python 2.7 or 3.4+
|
||||
- QT 5 (Use the VC++ build on Windows, not MinGW).
|
||||
- Python 3.4+
|
||||
|
||||
Assuming both qmake and python-config are in the path:
|
||||
An environment variable named PGADMIN_PYTHON_DIR must be set to the directory
|
||||
in which Python has been installed, for example:
|
||||
|
||||
$ cd $PGADMIN4_SRC/runtime
|
||||
$ qmake
|
||||
Project MESSAGE: Building for QT5+...
|
||||
Project MESSAGE: Building for Linux/Mac...
|
||||
Project MESSAGE: Using /usr/bin/python-config
|
||||
Project MESSAGE: Python2 detected.
|
||||
$ make
|
||||
...
|
||||
- /usr
|
||||
- /usr/local/python-3.8
|
||||
- C:\Python38
|
||||
|
||||
To build the runtime in debug mode, use the option below with qmake
|
||||
Assuming both qmake is in the path:
|
||||
|
||||
dpage@hal:~/git/pgadmin4$ cd runtime
|
||||
dpage@hal:~/git/pgadmin4/runtime$ export PGADMIN_PYTHON_DIR=/opt/local
|
||||
dpage@hal:~/git/pgadmin4/runtime$ qmake
|
||||
Project MESSAGE: ==================================
|
||||
Project MESSAGE: Configuring the pgAdmin 4 runtime.
|
||||
Project MESSAGE: ==================================
|
||||
Project MESSAGE: Qt version: 5
|
||||
Project MESSAGE: Platform: macOS
|
||||
Project MESSAGE: Python executable: /opt/local/bin/python3
|
||||
Project MESSAGE: Python version: 3.8 (38)
|
||||
Project MESSAGE: Python config: /opt/local/bin/python3-config
|
||||
Project MESSAGE: CXXFLAGS: -pipe -stdlib=libc++ -I/opt/local/Library/Frameworks/Python.framework/Versions/3.8/include/python3.8 -I/opt/local/Library/Frameworks/Python.framework/Versions/3.8/include/python3.8
|
||||
Project MESSAGE: LDFLAGS: -stdlib=libc++ -L/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/config-3.8-darwin -ldl -framework CoreFoundation
|
||||
Project MESSAGE: LIBS: -lpython3.8 -ldl -framework CoreFoundation
|
||||
dpage@hal:~/git/pgadmin4/runtime$ make
|
||||
...
|
||||
|
||||
To build the runtime in debug mode, use the option below with qmake:
|
||||
$ qmake CONFIG+=debug
|
||||
|
||||
To build the runtime in release mode, use the option below with qmake
|
||||
To build the runtime in release mode, use the option below with qmake:
|
||||
$ qmake CONFIG+=release
|
||||
|
||||
By default, the runtime application will be built in release mode.
|
||||
|
||||
On Linux, an executable called 'pgAdmin4' will be built, and on Mac OS X, an
|
||||
app bundle called pgAdmin4.app will be created.
|
||||
|
||||
To build the runtime on a Windows system, export PYTHON_HOME and PYTHON_VERSION
|
||||
variables in the System environment. Specify the PYTHON_VERSION with the major
|
||||
and minor number. Do not specify micro level version.
|
||||
|
||||
For example, given a Python version of A.B.C; A - Major number, B - Minor
|
||||
number, C - Micro level (Bug fix releases).
|
||||
|
||||
If Python version is 2.7.12 than specify PYTHON_VERSION=27
|
||||
|
||||
e.g. PYTHON_HOME=C:\Python27\
|
||||
PYTHON_VERSION=27
|
||||
On Linux, an executable called 'pgAdmin4' will be built, on Windows,
|
||||
'pgAdmin4.exe', and on Mac OS X, an app bundle called pgAdmin4.app will be
|
||||
created.
|
||||
|
||||
You can also use Qt Creator to build, develop and debug the runtime. Simply
|
||||
open the $PGADMIN4_SRC/runtime/pgAdmin4.pro project file in Qt Creator and
|
||||
@@ -88,10 +92,10 @@ Configuring the Python Environment
|
||||
----------------------------------
|
||||
|
||||
In order to run the Python code, a suitable runtime environment is required.
|
||||
Python versions - Python 2.7 or 3.4+ are currently supported. It is
|
||||
recommended that a Python Virtual Environment is setup for this purpose,
|
||||
rather than using the system Python environment. On Linux and Mac systems, the
|
||||
process is fairly simple - adapt as required for your distribution:
|
||||
Python version 3.4 and later are currently supported. It is recommended that a
|
||||
Python Virtual Environment is setup for this purpose, rather than using the
|
||||
system Python environment. On Linux and Mac systems, the process is fairly
|
||||
simple - adapt as required for your distribution:
|
||||
|
||||
1) Install the virtualenv packages into the system Python environment
|
||||
|
||||
@@ -181,16 +185,7 @@ server or desktop mode, and access it from a web browser using the URL shown in
|
||||
the terminal once pgAdmin has started up.
|
||||
|
||||
Setup of an environment on Windows is somewhat more complicated unfortunately,
|
||||
largely due to the lack of a native compiler toolset. Thankfully, Microsoft
|
||||
supply a free compiler specifically for Python 2.7 users. Download and install
|
||||
it from:
|
||||
|
||||
https://www.microsoft.com/en-gb/download/details.aspx?id=44266
|
||||
|
||||
A blog detailing the setup of Virtual Environments on Windows can be found
|
||||
here:
|
||||
|
||||
http://www.tylerbutler.com/2012/05/how-to-install-python-pip-and-virtualenv-on-windows-with-powershell/
|
||||
please see pkg/win32/README.txt for complete details.
|
||||
|
||||
Once a virtual environment has been created and enabled, setup can continue
|
||||
from step 4 above.
|
||||
@@ -219,6 +214,23 @@ can be used:
|
||||
C:\$PGADMIN4_SRC\web> yarn install
|
||||
C:\$PGADMIN4_SRC\web> yarn run bundle
|
||||
|
||||
Creating pgAdmin themes
|
||||
-----------------------
|
||||
|
||||
To create a pgAdmin theme, you need to create a directory under
|
||||
web/pgadmin/static/scss/resources.
|
||||
Copy the sample file _theme.variables.scss.sample to the new directory and
|
||||
rename it to _theme.variables.scss. Change the desired hexadecimal values of
|
||||
the colors and bundle pgAdmin. You can also add a preview image in the theme
|
||||
directory with the name as <dir name>_preview.png. It is recommended that the
|
||||
preview image should not be larger in size as it may take time to load on slow
|
||||
networks. Run the yarn run bundle and you're good to go. No other changes are
|
||||
required, pgAdmin bundle will read the directory and create other required
|
||||
entries to make them available in preferences.
|
||||
|
||||
The name of the theme is derived from the directory name. Underscores (_) and
|
||||
hyphens (-) will be replaced with spaces and the result will be camel cased.
|
||||
|
||||
Configuring the Runtime
|
||||
-----------------------
|
||||
|
||||
@@ -235,7 +247,7 @@ icon and select the Configuration option to open the configuration dialogue.
|
||||
On a Linux/Mac system, the Python Path will typically consist of a single path
|
||||
to the virtual environment's site-packages directory, e.g.
|
||||
|
||||
/Users/<USERNAME>/.virtualenvs/pgadmin4/lib/python2.7/site-packages
|
||||
/Users/<USERNAME>/.virtualenvs/pgadmin4/lib/python3.8/site-packages
|
||||
|
||||
On Windows, multiple paths are likely to be required, e.g.
|
||||
|
||||
@@ -277,49 +289,9 @@ run:
|
||||
|
||||
(pgadmin4) $ make pip
|
||||
|
||||
On a Mac, build an application bundle in a disk image (DMG file) with:
|
||||
To build the macOS AppBundle, please see pkg/mac/README.
|
||||
|
||||
(pgadmin4) $ make appbundle
|
||||
|
||||
Configure the framework.conf to match the QT and Python versions the app is
|
||||
being built with:
|
||||
|
||||
$ cp $PGADMIN4_SRC/pkg/mac/framework.conf.in $PGADMIN4_SRC/pkg/mac/framework.conf
|
||||
$ vi $PGADMIN4_SRC/pkg/mac/framework.conf
|
||||
|
||||
If you have an Apple code signing certificate, both the app bundle and disk
|
||||
image can be automatically signed by configuring signing:
|
||||
|
||||
$ cp $PGADMIN4_SRC/pkg/mac/codesign.conf.in $PGADMIN4_SRC/pkg/mac/codesign.conf
|
||||
$ vi $PGADMIN4_SRC/pkg/mac/codesign.conf
|
||||
|
||||
Edit the file as appropriate, ensuring the various version numbers are correct
|
||||
and that the appropriate developer ID is specified.
|
||||
|
||||
On Windows, the InnoSetup tool is required to create an installer. Download the
|
||||
Unicode version from:
|
||||
|
||||
http://www.jrsoftware.org/isdl.php
|
||||
|
||||
A number of environment variables may need to be set to enable the build script
|
||||
to function. The defaults will usually work on a typical 64 bit system with
|
||||
Qt 5.5.1, Python 2.7 and Visual Studio 2013. The examples below are for a
|
||||
similar 32 bit system:
|
||||
|
||||
INNOTOOL=C:\Program Files\Inno Setup 5
|
||||
PGDIR=C:\Program Files\PostgreSQL\10
|
||||
PYTHON_DLL=C:\Windows\System32\Python27.dll
|
||||
PYTHON_HOME=C:\Python27
|
||||
PYTHON_VERSION=27
|
||||
QTDIR=C:\Qt\5.9\msvc2013
|
||||
VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC
|
||||
|
||||
To build the installer:
|
||||
|
||||
C:\$PGADMIN4_SRC> make x86
|
||||
|
||||
If you have a code signing certificate, this will automatically be used if
|
||||
found in the Windows Certificate Store to sign the installer.
|
||||
To build the Windows installer, please see pkg/win32/README.txt.
|
||||
|
||||
Support
|
||||
-------
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
`Backup Dialog`:index:
|
||||
**********************
|
||||
|
||||
Using the *pg_dump* utility, *pgAdmin* provides an easy way to create a backup
|
||||
*pgAdmin* uses the *pg_dump* utility to provide an easy way to create a backup
|
||||
in a plain-text or archived format. You can then use a client application (like
|
||||
*psql* or the *Query Tool*) to restore a plain-text backup file, or use the
|
||||
Postgres *pg_restore* utility to restore an archived backup. The *pg_dump*
|
||||
@@ -205,14 +205,15 @@ command:
|
||||
|
||||
Use the **Stop Process** button to stop the Backup process.
|
||||
|
||||
If the backup is successful, a popup window will confirm success. Click *Click
|
||||
here for details* on the popup window to launch the *Process Watcher*. The
|
||||
*Process Watcher* logs all the activity associated with the backup and provides
|
||||
additional information for troubleshooting.
|
||||
If the backup is successful, a popup window will confirm success. Click *More details* on the popup window to launch the *Process Watcher*. The *Process Watcher* logs all the activity associated with the backup and provides additional information for troubleshooting.
|
||||
|
||||
.. image:: images/backup_process_watcher.png
|
||||
:alt: Backup process watcher
|
||||
:align: center
|
||||
|
||||
If the backup is unsuccessful, you can review the error messages returned by the
|
||||
backup command on the *Process Watcher*.
|
||||
backup command on the *Process Watcher*.
|
||||
|
||||
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the backup file on the client machine .
|
||||
|
||||
.. |sm_icon| image:: images/sm_icon.png
|
||||
@@ -50,4 +50,8 @@ additional information for troubleshooting.
|
||||
:align: center
|
||||
|
||||
If the backup is unsuccessful, review the error message returned by the
|
||||
*Process Watcher* to resolve any issue.
|
||||
*Process Watcher* to resolve any issue.
|
||||
|
||||
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the backup file on the client machine .
|
||||
|
||||
.. |sm_icon| image:: images/sm_icon.png
|
||||
@@ -135,4 +135,8 @@ additional information for troubleshooting.
|
||||
:align: center
|
||||
|
||||
If the backup is unsuccessful, review the error message returned by the
|
||||
*Process Watcher* to resolve any issue.
|
||||
*Process Watcher* to resolve any issue.
|
||||
|
||||
.. note:: If you are running *pgAdmin* in *Server Mode* you can click on the |sm_icon| icon in the process watcher window to open the file location in the Storage Manager. You can use the :ref:`Storage Manager <storage_manager>` to download the backup file on the client machine .
|
||||
|
||||
.. |sm_icon| image:: images/sm_icon.png
|
||||
@@ -1,11 +1,7 @@
|
||||
import os
|
||||
import sys
|
||||
import inspect
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
import builtins
|
||||
else:
|
||||
import __builtin__ as builtins
|
||||
import builtins
|
||||
|
||||
# Ensure the global server mode is set.
|
||||
builtins.SERVER_MODE = None
|
||||
@@ -63,7 +59,7 @@ def print_code(outstream, name, module, info=None):
|
||||
print_code(
|
||||
target, "PgAdminModule", PgAdminModule,
|
||||
"""
|
||||
PgAdminModule is inherted from Flask.Blueprint module.
|
||||
PgAdminModule is inherited from Flask.Blueprint module.
|
||||
This module defines a set of methods, properties and attributes,
|
||||
that every module should implement.
|
||||
""")
|
||||
|
||||
@@ -29,9 +29,10 @@ Configuration
|
||||
|
||||
The core application configuration is found in **config.py**. This file includes
|
||||
all configurable settings for the application, along with descriptions of their
|
||||
use. It is essential that various settings are configured prior to deployent on
|
||||
a web server; these can be overriden in **config_local.py** to avoid modifying
|
||||
the main configuration file.
|
||||
use. It is essential that various settings are configured prior to deployment on
|
||||
a web server; these can be overridden in **config_local.py** or
|
||||
**config_system.py** (see the :ref:`config.py <config_py>` documentation) to
|
||||
avoid modifying the main configuration file.
|
||||
|
||||
User Settings
|
||||
=============
|
||||
@@ -108,7 +109,7 @@ PgAdminModule class. This is responsible for providing hook points to integrate
|
||||
the module into the rest of the application - for example, a hook might tell
|
||||
the caller what CSS files need to be included on the rendered page, or what menu
|
||||
options to include and what they should do. Hook points need not exist if they
|
||||
are not required. It is the responsiblity of the caller to ensure they are
|
||||
are not required. It is the responsibility of the caller to ensure they are
|
||||
present before attempting to utilise them.
|
||||
|
||||
Hooks currently implemented are:
|
||||
@@ -210,6 +211,6 @@ bootstrap for UI look and feel, Backbone for data manipulation of a node,
|
||||
Backform for generating properties/create dialog for selected node. We have
|
||||
divided each module in small chunks as much as possible. Not all javascript
|
||||
modules are required to be loaded (i.e. loading a javascript module for
|
||||
database will make sense only when a server node is loaded competely.) Please
|
||||
database will make sense only when a server node is loaded completely.) Please
|
||||
look at the the javascript files node.js, browser.js, menu.js, panel.js, etc for
|
||||
better understanding of the code.
|
||||
@@ -16,7 +16,7 @@ review process for any patches submitted for inclusion in pgAdmin.
|
||||
bulk updates every year). The start date should always be 2013, and the end year
|
||||
the current year, e.g.
|
||||
|
||||
Copyright (C) 2013 - 2019, The pgAdmin Development Team
|
||||
Copyright (C) 2013 - 2020, The pgAdmin Development Team
|
||||
|
||||
* Ensure there's a blank line immediately following any copyright headers.
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@ with the required file header is shown below::
|
||||
#
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2019, The pgAdmin Development Team
|
||||
# Copyright (C) 2013 - 2020, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
@@ -34,7 +34,7 @@ are disabled if inapplicable.)
|
||||
column. For more information on the data types that are supported by
|
||||
PostgreSQL, refer to Chapter 8 of the Postgres core documentation. This field
|
||||
is required.
|
||||
* Use the *Length* and *Precision* fields to specify the maximum number of
|
||||
* Use the *Length/Precision* and *Scale* fields to specify the maximum number of
|
||||
significant digits in a numeric value, or the maximum number of characters in
|
||||
a text value.
|
||||
* Use the drop-down listbox next to *Collation* to apply a collation setting to
|
||||
|
||||
@@ -24,6 +24,13 @@ Use the fields in the *General* tab to identify the compound trigger:
|
||||
The name will be displayed in the *pgAdmin* tree control.
|
||||
* Store notes about the compound trigger in the *Comment* field.
|
||||
|
||||
.. image:: images/compound_trigger_general_enabled.png
|
||||
:alt: Trigger enabled in dialog tab
|
||||
:align: center
|
||||
|
||||
* *Trigger enabled* field is available in compound trigger dialog once the trigger is created.
|
||||
You can select one of the four options available.
|
||||
|
||||
Click the *Events* tab to continue.
|
||||
|
||||
.. image:: images/compound_trigger_events.png
|
||||
|
||||
@@ -14,11 +14,7 @@
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
import builtins
|
||||
else:
|
||||
import __builtin__ as builtins
|
||||
import builtins
|
||||
|
||||
# Ensure the global server mode is set.
|
||||
builtins.SERVER_MODE = None
|
||||
@@ -212,8 +208,8 @@ htmlhelp_basename = 'pgadmin4'
|
||||
# (source start file, target name, title, author, documentclass
|
||||
# [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'pgadmin4.tex', u'pgAdmin 4 Documentation',
|
||||
u'The pgAdmin Development Team', 'manual'),
|
||||
('index', 'pgadmin4.tex', 'pgAdmin 4 Documentation',
|
||||
'The pgAdmin Development Team', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
@@ -251,6 +247,6 @@ latex_elements = {
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'pgadmin4', u'pgAdmin 4 Documentation',
|
||||
[u'The pgAdmin Development Team'], 1)
|
||||
('index', 'pgadmin4', 'pgAdmin 4 Documentation',
|
||||
['The pgAdmin Development Team'], 1)
|
||||
]
|
||||
@@ -23,10 +23,21 @@ are as follows:
|
||||
and may be created by users in the same directory as ``config.py`` if
|
||||
needed.
|
||||
|
||||
.. note:: If the SERVER_MODE setting is changed in ``config_distro.py`` or ``config_local.py``,
|
||||
you will most likely need to re-set the LOG_FILE, SQLITE_PATH, SESSION_DB_PATH
|
||||
and STORAGE_DIR values as well as they will have been set based on the default
|
||||
configuration or overridden by the runtime.
|
||||
* ``config_system.py``: This file is read after ``config_local.py`` and is
|
||||
intended for system administrators to include settings that are configured
|
||||
system-wide from a secure location that users cannot normally modify and that
|
||||
is outside of the pgAdmin installation. The location for this file varies
|
||||
based on the platform, and only needs to be created if desired:
|
||||
|
||||
* Linux: ``/etc/pgadmin/config_system.py``
|
||||
* macOS: ``/Library/Preferences/pgadmin/config_system.py``
|
||||
* Windows: ``%CommonProgramFiles%\pgadmin\config_system.py``
|
||||
|
||||
.. note:: If the SERVER_MODE setting is changed in ``config_distro.py``,
|
||||
``config_local.py``, or ``config_system.py`` you will most likely need to
|
||||
re-set the LOG_FILE, SQLITE_PATH, SESSION_DB_PATH and STORAGE_DIR values
|
||||
as well as they will have been set based on the default configuration or
|
||||
overridden by the runtime.
|
||||
|
||||
The default ``config.py`` file is shown below for reference:
|
||||
|
||||
|
||||
@@ -17,11 +17,11 @@ maintenance functions to be executed. Multiple versions are included in the
|
||||
following directories to allow use with different versions of the database
|
||||
server:
|
||||
|
||||
* PostgreSQL 9.4: */usr/local/pgsql-9.4*
|
||||
* PostgreSQL 9.5: */usr/local/pgsql-9.5*
|
||||
* PostgreSQL 9.6: */usr/local/pgsql-9.6*
|
||||
* PostgreSQL 10: */usr/local/pgsql-10*
|
||||
* PostgreSQL 11: */usr/local/pgsql-11*
|
||||
* PostgreSQL 12: */usr/local/pgsql-12*
|
||||
|
||||
The most recent version of the utilities is used by default; this may be
|
||||
changed in the :ref:`preferences`.
|
||||
@@ -51,7 +51,7 @@ connections.
|
||||
|
||||
When TLS is enabled, a certificate and key must be provided. Typically these
|
||||
should be stored on the host file system and mounted from the container. The
|
||||
expected paths are /certs/server.crt and /certs/server.key
|
||||
expected paths are /certs/server.cert and /certs/server.key
|
||||
|
||||
**PGADMIN_LISTEN_ADDRESS**
|
||||
|
||||
@@ -59,7 +59,7 @@ expected paths are /certs/server.crt and /certs/server.key
|
||||
|
||||
Specify the local address that the servers listens on. The default should work
|
||||
for most users - in IPv4-only environments, this may need to be set to
|
||||
127.0.0.1.
|
||||
0.0.0.0.
|
||||
|
||||
**PGADMIN_LISTEN_PORT**
|
||||
|
||||
@@ -75,6 +75,13 @@ than using the default.
|
||||
Override the default file path for the server definition list. See the
|
||||
/pgadmin4/servers.json mapped file below for more information.
|
||||
|
||||
**GUNICORN_ACCESS_LOGFILE**
|
||||
|
||||
*Default: -* (stdout)
|
||||
|
||||
Specify an output file in which to store the Gunicorn access logs, instead of
|
||||
sending them to stdout.
|
||||
|
||||
**GUNICORN_THREADS**
|
||||
|
||||
*Default: 25*
|
||||
@@ -103,7 +110,27 @@ Mapped Files and Directories
|
||||
|
||||
The following files or directories can be mapped from the container onto the
|
||||
host machine to allow configuration to be customised and shared between
|
||||
instances:
|
||||
instances.
|
||||
|
||||
.. warning:: Warning: pgAdmin runs as the *pgadmin* user (UID: 5050) in the
|
||||
*pgadmin* group (GID: 5050) in the container. You must ensure that all files
|
||||
are readable, and where necessary (e.g. the working/session directory)
|
||||
writeable for this user on the host machine. For example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo chown -R 5050:5050 <host_directory>
|
||||
|
||||
On some filesystems that do not support extended attributes, it may not be
|
||||
possible to run pgAdmin without specifying a value for *PGADMIN_LISTEN_PORT*
|
||||
that is greater than 1024. In such cases, specify an alternate port when
|
||||
launching the container by adding the environment variable, for example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
-e 'PGADMIN_LISTEN_PORT=5050'
|
||||
|
||||
Don't forget to adjust any host-container port mapping accordingly.
|
||||
|
||||
**/var/lib/pgadmin**
|
||||
|
||||
@@ -173,7 +200,7 @@ Run a TLS secured container using a shared config/storage directory in
|
||||
-v /private/var/lib/pgadmin:/var/lib/pgadmin \
|
||||
-v /path/to/certificate.cert:/certs/server.cert \
|
||||
-v /path/to/certificate.key:/certs/server.key \
|
||||
-v /tmp/servers.json:/servers.json \
|
||||
-v /tmp/servers.json:/pgadmin4/servers.json \
|
||||
-e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \
|
||||
-e 'PGADMIN_DEFAULT_PASSWORD=SuperSecret' \
|
||||
-e 'PGADMIN_ENABLE_TLS=True' \
|
||||
@@ -197,6 +224,36 @@ for example:
|
||||
-e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" \
|
||||
-d dpage/pgadmin4
|
||||
|
||||
pgAdmin X-Forwarded-* Configuration
|
||||
-----------------------------------
|
||||
|
||||
pgAdmin needs to understand how many proxies set each header so it knows what
|
||||
values to trust. The configuration parameters for the X-Forwarded-* options
|
||||
which are used for this purpose are shown below, along with their default
|
||||
values.
|
||||
|
||||
pgAdmin is configured by default to be able to run behind a reverse proxy even
|
||||
on a non-standard port and these config options don't normally need to be
|
||||
changed. If you're running an unusual configuration (such as multiple reverse
|
||||
proxies) you can adjust the configuration to suit.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# Number of values to trust for X-Forwarded-For
|
||||
PROXY_X_FOR_COUNT = 1
|
||||
|
||||
# Number of values to trust for X-Forwarded-Proto.
|
||||
PROXY_X_PROTO_COUNT = 0
|
||||
|
||||
# Number of values to trust for X-Forwarded-Host.
|
||||
PROXY_X_HOST_COUNT = 0
|
||||
|
||||
# Number of values to trust for X-Forwarded-Port.
|
||||
PROXY_X_PORT_COUNT = 1
|
||||
|
||||
# Number of values to trust for X-Forwarded-Prefix.
|
||||
PROXY_X_PREFIX_COUNT = 0
|
||||
|
||||
HTTP via Nginx
|
||||
--------------
|
||||
|
||||
@@ -261,7 +318,7 @@ adjusted as appropriate to the specific deployment:
|
||||
listen 443;
|
||||
server_name _;
|
||||
|
||||
ssl_certificate /etc/nginx/server.crt;
|
||||
ssl_certificate /etc/nginx/server.cert;
|
||||
ssl_certificate_key /etc/nginx/server.key;
|
||||
|
||||
ssl on;
|
||||
@@ -341,4 +398,4 @@ the container is launched like this:
|
||||
The *SCRIPT_NAME* environment variable has been set to tell the container it is
|
||||
being hosted under a subdirectory (in the same way as the *X-Script-Name* header
|
||||
is used with Nginx), and a label has been added to tell Traefik to route
|
||||
requests under the subdirectory to this container.
|
||||
requests under the subdirectory to this container.
|
||||
@@ -61,8 +61,7 @@ Use the *Privileges* panel to assign privileges to a role. Click the *Add* icon
|
||||
* Select the name of the role from the drop-down listbox in the *Grantee* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privilege to the specified user.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantor* field.
|
||||
The default grantor is the owner of the database.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
|
||||
Click add to set additional privileges; to discard a privilege, click the trash
|
||||
icon to the left of the row and confirm deletion in the *Delete Row* popup.
|
||||
@@ -98,6 +97,19 @@ Follow these steps to add additional parameter value definitions; to discard a
|
||||
parameter, click the trash icon to the left of the row and confirm deletion in
|
||||
the *Delete Row* popup.
|
||||
|
||||
Click the *Advanced* tab to continue.
|
||||
|
||||
.. image:: images/database_advanced.png
|
||||
:alt: Database dialog advanced tab
|
||||
:align: center
|
||||
|
||||
Use the *Advanced* tab to set advanced parameters for the database.
|
||||
|
||||
* Use *Schema restriction* field to provide a SQL restriction that will be used
|
||||
against the pg_namespace table to limit the schemas that you see.
|
||||
For example, you might enter: *public* so that only *public* are shown in
|
||||
the pgAdmin browser.Separate entries with a comma or tab as you type.
|
||||
|
||||
Click the *SQL* tab to continue.
|
||||
|
||||
Your entries in the *Database* dialog generate a SQL command (see an example
|
||||
@@ -121,4 +133,3 @@ allows unlimited connections, and is available to all authenticated users.
|
||||
* Click the *Save* button to save work.
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
* Click the *Reset* button to restore configuration parameters.
|
||||
|
||||
@@ -16,9 +16,9 @@ superuser privileges to use the debugger.
|
||||
|
||||
Before using the debugger, you must modify the *postgresql.conf* file, adding
|
||||
the server-side debugger components to the the value of the
|
||||
*shared_preload_libraries* parameter:
|
||||
*shared_preload_libraries* parameter, for example:
|
||||
|
||||
shared_preload_libraries = '$libdir/*other_libraries*/plugin_debugger'
|
||||
shared_preload_libraries = '$libdir/plugin_debugger'
|
||||
|
||||
After modifying the *shared_preload_libraries* parameter, restart the server to
|
||||
apply the changes.
|
||||
@@ -81,6 +81,8 @@ Use the fields on the *Debugger* dialog to provide a value for each parameter:
|
||||
|
||||
Provide values required by the program, and click the *Debug* button to start
|
||||
stepping through the program.
|
||||
The values of the arguments provided here are saved. The values will be pre-filled
|
||||
next time the dialog opens. To clear the values, use the *Clear All* button.
|
||||
|
||||
.. image:: images/debug_step_in.png
|
||||
:alt: Debugger step-in demo
|
||||
|
||||
@@ -71,6 +71,12 @@ The configuration settings:
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
| ConnectionTimeout | Integer | The number of seconds to wait for application server startup. |
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
| FixedPort | Boolean | Use a fixed network port number rather than a random one. |
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
| OpenTabAtStartup | Boolean | Open a browser tab at startup. |
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
| PortNumber | Integer | The port number to use, if using a fixed port. |
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
| PythonPath | String | The Python module search path |
|
||||
+--------------------------+--------------------+---------------------------------------------------------------+
|
||||
|
||||
@@ -14,3 +14,4 @@ PL/SQL code.
|
||||
debugger
|
||||
query_tool
|
||||
editgrid
|
||||
schema_diff
|
||||
@@ -138,3 +138,8 @@ To delete a row from the grid, click the trash icon.
|
||||
* Click the *Help* button (?) to access online help.
|
||||
* Click the *Ok* button to save work.
|
||||
* Click the *Close* button to discard current changes and close the dialog.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
viewdata_filter
|
||||
@@ -0,0 +1,105 @@
|
||||
.. _enabling_ldap_authentication:
|
||||
|
||||
**************************************************
|
||||
`Enabling LDAP Authentication for pgAdmin`:index:
|
||||
**************************************************
|
||||
|
||||
To enable LDAP authentication for pgAdmin, you must configure the LDAP
|
||||
settings in the *config_local.py* or *config_system.py* file (see the
|
||||
:ref:`config.py <config_py>` documentation) on the system where pgAdmin is
|
||||
installed in Server mode. You can copy these settings from *config.py* file
|
||||
and modify the values for the following parameters:
|
||||
|
||||
There are 3 ways to configure LDAP:
|
||||
|
||||
* Bind as pgAdmin user
|
||||
|
||||
* Anonymous bind
|
||||
|
||||
* Dedicated user bind
|
||||
|
||||
|
||||
.. csv-table::
|
||||
:header: "**Parameter**", "**Description**"
|
||||
:class: longtable
|
||||
:widths: 35, 55
|
||||
|
||||
"AUTHENTICATION_SOURCES","The default value for this parameter is *internal*.
|
||||
To enable LDAP authentication, you must include *ldap* in the list of values
|
||||
for this parameter. you can modify the value as follows:
|
||||
|
||||
* [‘ldap’]: pgAdmin will use only LDAP authentication.
|
||||
|
||||
* [‘ldap’, ‘internal’]: pgAdmin will first try to authenticate the user through
|
||||
LDAP. If that authentication fails, then internal user entries of pgAdmin
|
||||
will be used for authentication.
|
||||
|
||||
* [‘internal’, ‘ldap’]: pgAdmin will first try to authenticate the user
|
||||
through internal user entries. If that authentication fails, then LDAP
|
||||
authentication will be used."
|
||||
"LDAP_AUTO_CREATE_USER", "Specifies if you want to automatically create a pgAdmin
|
||||
user corresponding to the LDAP user credentials. Please note that LDAP password
|
||||
is not stored in the pgAdmin database."
|
||||
"LDAP_CONNECTION_TIMEOUT","Specifies the connection timeout (in seconds) for LDAP
|
||||
authentication."
|
||||
"LDAP_SERVER_URI", "An LDAP URI is a combination of connection protocol
|
||||
(ldap or ldaps), IP address/hostname and port of the directory server that you
|
||||
want to connect to. For example, 'ldap://172.16.209.35:389' is a valid
|
||||
LDAP_SERVER_URI where ldap is the connection protocol, 172.16.209.35 is the IP
|
||||
address and 389 is the port. Port 636 is used for the ldaps communication protocol."
|
||||
"LDAP_USERNAME_ATTRIBUTE","Specifies the LDAP attribute that contains the
|
||||
usernames. For LDAP authentication, you need to enter the value of that
|
||||
particular attribute as username. For example, if you set the value of
|
||||
LDAP_USERNAME_ATTRIBUTE as ‘cn’ and you have defined 'cn=admin' in your LDAP server
|
||||
entries, you should be able to authenticate by entering ‘admin’ in the
|
||||
*Email Address / Username* field and its corresponding password in the *Password*
|
||||
field."
|
||||
"LDAP_SEARCH_BASE_DN","Specifies the distinguished name (DN) for the top-most user
|
||||
directory that you want to search. You can use this parameter for limiting the search
|
||||
request to a specific group of users. For example, if you want to search only within
|
||||
the Organizational Unit named sales, you can define the value for LDAP_SEARCH_BASE_DN
|
||||
parameter as following:
|
||||
LDAP_SEARCH_BASE_DN = ‘ou=sales,dc=example,dc=com'
|
||||
|
||||
This is an optional parameter only while binding as pgAdmin user.
|
||||
If you do not specify any value for LDAP_SEARCH_BASE_DN, then the value for
|
||||
LDAP_BASE_DN will be considered for the same."
|
||||
"LDAP_SEARCH_FILTER","Defines the criteria to retrieve matching entries in an
|
||||
LDAP search request. For example, LDAP_SEARCH_FILTER = '(objectclass=HR)’ setting
|
||||
searches only for users having HR as their objectClass attribute."
|
||||
"LDAP_SEARCH_SCOPE","Indicates the set of entries at or below the Base DN that
|
||||
maybe considered as potential matches for a search request. You can specify the
|
||||
scope of a search as either a *base*, *level*, or *subtree* search. A *base* search
|
||||
limits the search to the base object. A *level* search is restricted to the immediate
|
||||
children of a base object, but excludes the base object itself. A *subtree* search
|
||||
includes all child objects as well as the base object."
|
||||
"LDAP_USE_STARTTLS","Specifies if you want to use Transport Layer Security (TLS)
|
||||
for secure communication between LDAP clients and LDAP servers. If you specify
|
||||
the connection protocol in *LDAP_SERVER_URI* as *ldaps*, this parameter is ignored."
|
||||
"LDAP_CA_CERT_FILE","Specifies the path to the trusted CA certificate file. This
|
||||
parameter is applicable only if you are using *ldaps* as connection protocol and
|
||||
you have set *LDAP_USE_STARTTLS* parameter to *True*."
|
||||
"LDAP_CERT_FILE","Specifies the path to the server certificate file. This parameter
|
||||
is applicable only if you are using *ldaps* as connection protocol and you have
|
||||
set *LDAP_USE_STARTTLS* parameter to *True*."
|
||||
"LDAP_KEY_FILE","Specifies the path to the server private key file. This parameter
|
||||
is applicable only if you are using *ldaps* as connection protocol and you have
|
||||
set *LDAP_USE_STARTTLS* parameter to *True*."
|
||||
"**Bind as pgAdmin user**"
|
||||
"LDAP_BASE_DN","Specifies the base DN from where a server will start the search
|
||||
for users. For example, an LDAP search for any user will be performed by the server
|
||||
starting at the base DN (dc=example,dc=com). When the base DN matches, the full
|
||||
DN (cn=admin,dc=example,dc=com) is used to bind with the supplied password."
|
||||
"**Anonymous bind**"
|
||||
"LDAP_ANONYMOUS_BIND","Set this parameter to *True* for anonymous binding.
|
||||
After the connection is made, the pgadmin login user will be further authenticated
|
||||
by the username and password provided at the login screen."
|
||||
"**Dedicated user bind**"
|
||||
"LDAP_BIND_USER", "The account of the user to log in for simple bind.
|
||||
Set this parameter to allow the connection to bind using a dedicated user.
|
||||
After the connection is made, the pgadmin login user will be further
|
||||
authenticated by the username and password provided at the login screen.
|
||||
at the login screen."
|
||||
"LDAP_BIND_PASSWORD", "Password for simple bind.
|
||||
Specify the value if you have set the LDAP_BIND_USER parameter."
|
||||
|
||||
@@ -35,15 +35,15 @@ Click the *Definition* tab to continue.
|
||||
|
||||
Use the fields in the *Definition* tab to define the event trigger:
|
||||
|
||||
* Select a radio button in the *Enabled Status* field to specify a status for
|
||||
the trigger: *Enable* *Disable*, *Replica* *Always*.
|
||||
* Select a value from the drop down of *Trigger Enabled* field to specify a status
|
||||
for the trigger: *Enable* *Disable*, *Replica* *Always*.
|
||||
* Use the drop-down listbox next to *Trigger function* to specify an existing
|
||||
function. A trigger function takes an empty argument list, and returns a
|
||||
value of type event_trigger.
|
||||
* Select a radio button in the *Events* field to specify when the event trigger
|
||||
will fire: *DDL COMMAND START*, *DDL COMMAND END*, or *SQL DROP*.
|
||||
* Use the *When* field to write a condition for the event trigger that must be
|
||||
satisfied before the event trigger can execute.
|
||||
* Select a value from the drop down of *Events* field to specify when the event
|
||||
trigger will fire: *DDL COMMAND START*, *DDL COMMAND END*, or *SQL DROP*.
|
||||
* Use the *When TAG in* field to enter filter values for TAG for which the trigger
|
||||
will be executed. The values must be in single quotes separated by comma.
|
||||
|
||||
Click the *Security Labels* tab to continue.
|
||||
|
||||
|
||||
@@ -75,9 +75,7 @@ to assign a set of privileges.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantee* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privileges to the specified user.
|
||||
* Select the name of the role granting the privileges from the drop-down listbox
|
||||
in the *Grantor* field. The default grantor is the owner of the foreign data
|
||||
wrapper.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
|
||||
Click add to assign additional privileges; to discard a privilege, click the
|
||||
trash icon to the left of the row and confirm deletion in the *Delete Row*
|
||||
@@ -108,5 +106,3 @@ pre-existing validator and handler functions, *dblink_fdw_validator* and
|
||||
* Click the *Save* button to save work.
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
* Click the *Reset* button to restore configuration parameters.
|
||||
|
||||
|
||||
@@ -65,9 +65,7 @@ Click *Add* before you assign a set of privileges.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantee* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privileges to the specified user.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantor* field.
|
||||
The default grantor is the owner of the foreign server. This is a required
|
||||
field.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
|
||||
Click *Add* to assign a new set of privileges; to discard a privilege, click the
|
||||
trash icon to the left of the row and confirm deletion in the *Delete Row*
|
||||
|
||||
@@ -120,9 +120,7 @@ Use the *Privileges* panel to assign privileges to a role. Click the *Add* icon
|
||||
drop-down listbox in the *Grantee* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privilege to the specified user.
|
||||
* Select the name of the role that owns the foreign table from the drop-down
|
||||
listbox in the *Grantor* field. The default grantor is the owner of the
|
||||
database.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
|
||||
Click the *Add* icon (+) to assign additional privileges; to discard a
|
||||
privilege, click the trash icon to the left of the row and confirm deletion in
|
||||
@@ -166,5 +164,3 @@ columns and two options.
|
||||
* Click the *Save* button to save work.
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
* Click the *Reset* button to restore configuration parameters.
|
||||
|
||||
|
||||
@@ -140,8 +140,7 @@ role.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantee* field.
|
||||
* Click inside the *Privileges* field. Check the boxes to the left of one or
|
||||
more privileges to grant the selected privilege to the specified user.
|
||||
* Select the name of the role from the drop-down listbox in the *Grantor* field.
|
||||
The default grantor is the owner of the database.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
|
||||
Click the *Add* icon (+) to assign additional privileges; to discard a
|
||||
privilege, click the trash icon to the left of the row and confirm deletion in
|
||||
@@ -184,6 +183,3 @@ function have three columns (p_ename, p_sal and p_comm).
|
||||
* Click the *Save* button to save work.
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
* Click the *Reset* button to restore configuration parameters.
|
||||
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ Mode is pre-configured for security.
|
||||
login
|
||||
user_management
|
||||
change_user_password
|
||||
enabling_ldap_authentication
|
||||
|
||||
|
||||
.. note:: Pre-compiled and configured installation packages are available for
|
||||
@@ -64,6 +65,8 @@ display. To open the *Preferences* dialog, select *Preferences* from the *File*
|
||||
for the dialog. You can access additional Postgres help by navigating through
|
||||
the *Help* menu, and selecting the name of the resource that you wish to open.
|
||||
|
||||
You can search for objects in the database using the :ref:`Search objects <search_objects>`
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
@@ -74,6 +77,7 @@ the *Help* menu, and selecting the name of the resource that you wish to open.
|
||||
tree_control
|
||||
preferences
|
||||
keyboard_shortcuts
|
||||
search_objects
|
||||
|
||||
Before using pgAdmin to manage objects that reside on a server, you must define a
|
||||
connection to the server; for more information please see *Connecting to a Server*
|
||||
|
||||
@@ -55,8 +55,7 @@ the object.
|
||||
more privileges to grant the selected privileges to the specified user. If
|
||||
privileges have previously been granted on a database object, unchecking a
|
||||
privilege for a group or user will result in revoking that privilege.
|
||||
* If enabled, select the name of the role from the drop-down listbox in the
|
||||
*Grantor* field. The default grantor is the owner of the database.
|
||||
* The current user, who is the default grantor for granting the privilege, is displayed in the *Grantor* field.
|
||||
* Click the *Add* icon (+) to assign a set of privileges to another role; to
|
||||
discard a privilege, click the trash icon to the left of the row and confirm
|
||||
deletion in the *Delete Row* dialog.
|
||||
@@ -89,4 +88,4 @@ privileges *WITH GRANT OPTION* on the *sales_meetings* and the
|
||||
* Click the *Back* button to select or deselect additional database objects,
|
||||
roles and privileges.
|
||||
* Click the *Cancel* button to exit without saving work.
|
||||
* Click the *Finish* button to save selections and exit the wizard.
|
||||
* Click the *Finish* button to save selections and exit the wizard.
|
||||
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 449 KiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 495 KiB After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 175 KiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 237 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 184 KiB After Width: | Height: | Size: 217 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 257 KiB |
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 208 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 196 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 238 KiB |
|
After Width: | Height: | Size: 225 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 175 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 163 KiB |
|
After Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 127 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 95 KiB |