agora inbox for [email protected]
help / color / mirror / Atom feed[PATCH v6 1/4] Make a message on process termination more dscriptive
41+ messages / 8 participants
[nested] [flat]
* [PATCH v7 1/2] Make a message on process termination more dscriptive
@ 2021-12-24 03:52 Kyotaro Horiguchi <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Kyotaro Horiguchi @ 2021-12-24 03:52 UTC (permalink / raw)
The message at process termination due to slot limit doesn't provide
the reason. In the major scenario the message is followed by another
message about slot invalidatation, which shows the detail for the
termination. However the second message is missing if the slot is
temporary one.
Augment the first message with the reason same as the second message.
Backpatch through to 13 where the message was introduced.
Reported-by: Alex Enachioaie <[email protected]>
Author: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Bharath Rupireddy <[email protected]>
Discussion: https://www.postgresql.org/message-id/17327-89d0efa8b9ae6271%40postgresql.org
Backpatch-through: 13
---
src/backend/replication/slot.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 8fec1cb4a5..8326c019cf 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -1293,8 +1293,9 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
if (last_signaled_pid != active_pid)
{
ereport(LOG,
- (errmsg("terminating process %d to release replication slot \"%s\"",
- active_pid, NameStr(slotname))));
+ (errmsg("terminating process %d to release replication slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size",
+ active_pid, NameStr(slotname),
+ LSN_FORMAT_ARGS(restart_lsn))));
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
--
2.31.1
----Next_Part(Thu_Sep__8_13_40_20_2022_816)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="v7-0002-Add-detailed-information-to-slot-invalidation-mes.patch"
^ permalink raw reply [nested|flat] 41+ messages in thread
* [PATCH v8] Make a message on process termination more dscriptive
@ 2021-12-24 03:52 Kyotaro Horiguchi <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Kyotaro Horiguchi @ 2021-12-24 03:52 UTC (permalink / raw)
Add the details to the process termination message so that the error
details are shown in case of process terminations due to temporary
slots. Addition to that the messages are changed to tell how much the
current LSN exceeded the limit instead of just saying "exceeding the
limit".
In passing, shorten the main messages then move their details to
DETAILS line so that the messages follow our policy.
Reported-by: Alex Enachioaie <[email protected]>
Author: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Bharath Rupireddy <[email protected]>
Reviewed-by: Masahiko Sawada <[email protected]>
Reviewed-by: "Drouvot, Bertrand" <[email protected]>
Reviewed-by: Tom Lane <[email protected]>
Discussion: https://www.postgresql.org/message-id/17327-89d0efa8b9ae6271%40postgresql.org
---
src/backend/replication/slot.c | 17 ++++++++++++-----
src/test/recovery/t/019_replslot_limit.pl | 11 ++++-------
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 0bd0031188..e622e6ddda 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -1293,8 +1293,12 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
if (last_signaled_pid != active_pid)
{
ereport(LOG,
- (errmsg("terminating process %d to release replication slot \"%s\"",
- active_pid, NameStr(slotname))));
+ errmsg("terminating process %d to release replication slot \"%s\"",
+ active_pid, NameStr(slotname)),
+ errdetail("The slot's restart_lsn %X/%X exceeds the limit by %llu bytes.",
+ LSN_FORMAT_ARGS(restart_lsn),
+ (unsigned long long)(oldestLSN - restart_lsn)),
+ errhint("You might need to increase max_slot_wal_keep_size."));
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
@@ -1331,9 +1335,12 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
ReplicationSlotRelease();
ereport(LOG,
- (errmsg("invalidating slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size",
- NameStr(slotname),
- LSN_FORMAT_ARGS(restart_lsn))));
+ errmsg("invalidating replication slot \"%s\"",
+ NameStr(slotname)),
+ errdetail("The slot's restart_lsn %X/%X exceeds the limit by %llu bytes.",
+ LSN_FORMAT_ARGS(restart_lsn),
+ (unsigned long long)(oldestLSN - restart_lsn)),
+ errhint("You might need to increase max_slot_wal_keep_size."));
/* done with this slot for now */
break;
diff --git a/src/test/recovery/t/019_replslot_limit.pl b/src/test/recovery/t/019_replslot_limit.pl
index ce8d36b4c6..b917f74bb6 100644
--- a/src/test/recovery/t/019_replslot_limit.pl
+++ b/src/test/recovery/t/019_replslot_limit.pl
@@ -184,10 +184,8 @@ $node_primary->safe_psql('postgres', "CHECKPOINT;");
my $invalidated = 0;
for (my $i = 0; $i < 10000; $i++)
{
- if (find_in_log(
- $node_primary,
- "invalidating slot \"rep1\" because its restart_lsn [0-9A-F/]+ exceeds max_slot_wal_keep_size",
- $logstart))
+ if (find_in_log($node_primary,
+ 'invalidating replication slot "rep1"', $logstart))
{
$invalidated = 1;
last;
@@ -405,9 +403,8 @@ $node_primary3->poll_query_until('postgres',
$max_attempts = $PostgreSQL::Test::Utils::timeout_default;
while ($max_attempts-- >= 0)
{
- if (find_in_log(
- $node_primary3,
- 'invalidating slot "rep3" because its restart_lsn', $logstart))
+ if (find_in_log($node_primary3,
+ 'invalidating replication slot "rep3"', $logstart))
{
ok(1, "slot invalidation logged");
last;
--
2.31.1
----Next_Part(Thu_Sep_29_14_27_53_2022_222)----
^ permalink raw reply [nested|flat] 41+ messages in thread
* [PATCH v6 1/4] Make a message on process termination more dscriptive
@ 2021-12-24 03:52 Kyotaro Horiguchi <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Kyotaro Horiguchi @ 2021-12-24 03:52 UTC (permalink / raw)
The message at process termination due to slot limit doesn't provide
the reason. In the major scenario the message is followed by another
message about slot invalidatation, which shows the detail for the
termination. However the second message is missing if the slot is
temporary one.
Augment the first message with the reason same as the second message.
Backpatch through to 13 where the message was introduced.
Reported-by: Alex Enachioaie <[email protected]>
Author: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Bharath Rupireddy <[email protected]>
Discussion: https://www.postgresql.org/message-id/17327-89d0efa8b9ae6271%40postgresql.org
Backpatch-through: 13
---
src/backend/replication/slot.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 8fec1cb4a5..8326c019cf 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -1293,8 +1293,9 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
if (last_signaled_pid != active_pid)
{
ereport(LOG,
- (errmsg("terminating process %d to release replication slot \"%s\"",
- active_pid, NameStr(slotname))));
+ (errmsg("terminating process %d to release replication slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size",
+ active_pid, NameStr(slotname),
+ LSN_FORMAT_ARGS(restart_lsn))));
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
--
2.31.1
----Next_Part(Tue_Sep__6_14_53_36_2022_094)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="v6-0002-Add-detailed-information-to-slot-invalidation-mes.patch"
^ permalink raw reply [nested|flat] 41+ messages in thread
* [PATCH v4 1/2] Make a message on process termination more dscriptive
@ 2021-12-24 03:52 Kyotaro Horiguchi <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Kyotaro Horiguchi @ 2021-12-24 03:52 UTC (permalink / raw)
The message at process termination due to slot limit doesn't provide
the reason. In the major scenario the message is followed by another
message about slot invalidatation, which shows the detail for the
termination. However the second message is missing if the slot is
temporary one.
Augment the first message with the reason same as the second message.
Backpatch through to 13 where the message was introduced.
Reported-by: Alex Enachioaie <[email protected]>
Author: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Bharath Rupireddy <[email protected]>
Discussion: https://www.postgresql.org/message-id/17327-89d0efa8b9ae6271%40postgresql.org
Backpatch-through: 13
---
src/backend/replication/slot.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index caa6b29756..92f19bcb35 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -1300,8 +1300,9 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
if (last_signaled_pid != active_pid)
{
ereport(LOG,
- (errmsg("terminating process %d to release replication slot \"%s\"",
- active_pid, NameStr(slotname))));
+ (errmsg("terminating process %d to release replication slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size",
+ active_pid, NameStr(slotname),
+ LSN_FORMAT_ARGS(restart_lsn))));
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
--
2.27.0
----Next_Part(Wed_Mar__2_15_37_19_2022_143)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="v4-0002-Add-detailed-information-to-slot-invalidation-mes.patch"
^ permalink raw reply [nested|flat] 41+ messages in thread
* [PATCH v6 1/4] Make a message on process termination more dscriptive
@ 2021-12-24 03:52 Kyotaro Horiguchi <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Kyotaro Horiguchi @ 2021-12-24 03:52 UTC (permalink / raw)
The message at process termination due to slot limit doesn't provide
the reason. In the major scenario the message is followed by another
message about slot invalidatation, which shows the detail for the
termination. However the second message is missing if the slot is
temporary one.
Augment the first message with the reason same as the second message.
Backpatch through to 13 where the message was introduced.
Reported-by: Alex Enachioaie <[email protected]>
Author: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Bharath Rupireddy <[email protected]>
Discussion: https://www.postgresql.org/message-id/17327-89d0efa8b9ae6271%40postgresql.org
Backpatch-through: 13
---
src/backend/replication/slot.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 8fec1cb4a5..8326c019cf 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -1293,8 +1293,9 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
if (last_signaled_pid != active_pid)
{
ereport(LOG,
- (errmsg("terminating process %d to release replication slot \"%s\"",
- active_pid, NameStr(slotname))));
+ (errmsg("terminating process %d to release replication slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size",
+ active_pid, NameStr(slotname),
+ LSN_FORMAT_ARGS(restart_lsn))));
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
--
2.31.1
----Next_Part(Tue_Sep__6_14_53_36_2022_094)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="v6-0002-Add-detailed-information-to-slot-invalidation-mes.patch"
^ permalink raw reply [nested|flat] 41+ messages in thread
* [PATCH v7 1/2] Make a message on process termination more dscriptive
@ 2021-12-24 03:52 Kyotaro Horiguchi <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Kyotaro Horiguchi @ 2021-12-24 03:52 UTC (permalink / raw)
The message at process termination due to slot limit doesn't provide
the reason. In the major scenario the message is followed by another
message about slot invalidatation, which shows the detail for the
termination. However the second message is missing if the slot is
temporary one.
Augment the first message with the reason same as the second message.
Backpatch through to 13 where the message was introduced.
Reported-by: Alex Enachioaie <[email protected]>
Author: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Bharath Rupireddy <[email protected]>
Discussion: https://www.postgresql.org/message-id/17327-89d0efa8b9ae6271%40postgresql.org
Backpatch-through: 13
---
src/backend/replication/slot.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 8fec1cb4a5..8326c019cf 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -1293,8 +1293,9 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
if (last_signaled_pid != active_pid)
{
ereport(LOG,
- (errmsg("terminating process %d to release replication slot \"%s\"",
- active_pid, NameStr(slotname))));
+ (errmsg("terminating process %d to release replication slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size",
+ active_pid, NameStr(slotname),
+ LSN_FORMAT_ARGS(restart_lsn))));
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
--
2.31.1
----Next_Part(Thu_Sep__8_13_40_20_2022_816)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="v7-0002-Add-detailed-information-to-slot-invalidation-mes.patch"
^ permalink raw reply [nested|flat] 41+ messages in thread
* [PATCH v3 1/2] Make a message on process termination more dscriptive
@ 2021-12-24 03:52 Kyotaro Horiguchi <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Kyotaro Horiguchi @ 2021-12-24 03:52 UTC (permalink / raw)
The message at process termination due to slot limit doesn't provide
the reason. In the major scenario the message is followed by another
message about slot invalidatation, which shows the detail for the
termination. However the second message is missing if the slot is
temporary one.
Augment the first message with the reason same as the second message.
Backpatch through to 13 where the message was introduced.
Reported-by: Alex Enachioaie <[email protected]>
Author: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Bharath Rupireddy <[email protected]>
Discussion: https://www.postgresql.org/message-id/17327-89d0efa8b9ae6271%40postgresql.org
Backpatch-through: 13
---
src/backend/replication/slot.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 90ba9b417d..0ceac3a54d 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -1253,8 +1253,9 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
if (last_signaled_pid != active_pid)
{
ereport(LOG,
- (errmsg("terminating process %d to release replication slot \"%s\"",
- active_pid, NameStr(slotname))));
+ (errmsg("terminating process %d to release replication slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size",
+ active_pid, NameStr(slotname),
+ LSN_FORMAT_ARGS(restart_lsn))));
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
--
2.27.0
----Next_Part(Fri_Dec_24_13_42_14_2021_940)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="v3-0001-Make-a-message-on-process-termination-more-dscrip_13.patch"
^ permalink raw reply [nested|flat] 41+ messages in thread
* [PATCH v5 1/2] Make a message on process termination more dscriptive
@ 2021-12-24 03:52 Kyotaro Horiguchi <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Kyotaro Horiguchi @ 2021-12-24 03:52 UTC (permalink / raw)
The message at process termination due to slot limit doesn't provide
the reason. In the major scenario the message is followed by another
message about slot invalidatation, which shows the detail for the
termination. However the second message is missing if the slot is
temporary one.
Augment the first message with the reason same as the second message.
Backpatch through to 13 where the message was introduced.
Reported-by: Alex Enachioaie <[email protected]>
Author: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Bharath Rupireddy <[email protected]>
Discussion: https://www.postgresql.org/message-id/17327-89d0efa8b9ae6271%40postgresql.org
Backpatch-through: 13
---
src/backend/replication/slot.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index caa6b29756..92f19bcb35 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -1300,8 +1300,9 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
if (last_signaled_pid != active_pid)
{
ereport(LOG,
- (errmsg("terminating process %d to release replication slot \"%s\"",
- active_pid, NameStr(slotname))));
+ (errmsg("terminating process %d to release replication slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size",
+ active_pid, NameStr(slotname),
+ LSN_FORMAT_ARGS(restart_lsn))));
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
--
2.27.0
----Next_Part(Wed_Mar__2_17_55_20_2022_637)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="v5-0002-Add-detailed-information-to-slot-invalidation-mes.patch"
^ permalink raw reply [nested|flat] 41+ messages in thread
* [PATCH v3] Make a message on process termination more dscriptive
@ 2021-12-24 04:23 Kyotaro Horiguchi <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Kyotaro Horiguchi @ 2021-12-24 04:23 UTC (permalink / raw)
The message at process termination due to slot limit doesn't provide
the reason. In the major scenario the message is followed by another
message about slot invalidatation, which shows the detail for the
termination. However the second message is missing if the slot is
temporary one.
Augment the first message with the reason same as the second message.
Backpatch through to 13 where the message was introduced.
Reported-by: Alex Enachioaie <[email protected]>
Author: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Bharath Rupireddy <[email protected]>
Discussion: https://www.postgresql.org/message-id/17327-89d0efa8b9ae6271%40postgresql.org
Backpatch-through: 13
---
src/backend/replication/slot.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 02047ea920..15b8934ae2 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -1228,8 +1228,10 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
if (last_signaled_pid != active_pid)
{
ereport(LOG,
- (errmsg("terminating process %d to release replication slot \"%s\"",
- active_pid, NameStr(slotname))));
+ (errmsg("terminating process %d to release replication slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size",
+ active_pid, NameStr(slotname),
+ (uint32) (restart_lsn >> 32),
+ (uint32) restart_lsn)));
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
--
2.27.0
----Next_Part(Fri_Dec_24_13_42_14_2021_940)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="v3-0002-Add-detailed-information-to-slot-invalidation-mes.patch"
^ permalink raw reply [nested|flat] 41+ messages in thread
* [PATCH v4] Make a message on process termination more dscriptive
@ 2021-12-24 04:23 Kyotaro Horiguchi <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Kyotaro Horiguchi @ 2021-12-24 04:23 UTC (permalink / raw)
The message at process termination due to slot limit doesn't provide
the reason. In the major scenario the message is followed by another
message about slot invalidatation, which shows the detail for the
termination. However the second message is missing if the slot is
temporary one.
Augment the first message with the reason same as the second message.
Backpatch through to 13 where the message was introduced.
Reported-by: Alex Enachioaie <[email protected]>
Author: Kyotaro Horiguchi <[email protected]>
Reviewed-by: Ashutosh Bapat <[email protected]>
Reviewed-by: Bharath Rupireddy <[email protected]>
Discussion: https://www.postgresql.org/message-id/17327-89d0efa8b9ae6271%40postgresql.org
Backpatch-through: 13
---
src/backend/replication/slot.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 02047ea920..15b8934ae2 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -1228,8 +1228,10 @@ InvalidatePossiblyObsoleteSlot(ReplicationSlot *s, XLogRecPtr oldestLSN,
if (last_signaled_pid != active_pid)
{
ereport(LOG,
- (errmsg("terminating process %d to release replication slot \"%s\"",
- active_pid, NameStr(slotname))));
+ (errmsg("terminating process %d to release replication slot \"%s\" because its restart_lsn %X/%X exceeds max_slot_wal_keep_size",
+ active_pid, NameStr(slotname),
+ (uint32) (restart_lsn >> 32),
+ (uint32) restart_lsn)));
(void) kill(active_pid, SIGTERM);
last_signaled_pid = active_pid;
--
2.27.0
----Next_Part(Wed_Mar__2_15_37_19_2022_143)----
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
@ 2022-03-31 00:26 Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Andres Freund @ 2022-03-31 00:26 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; +Cc: pgsql-hackers
Hi,
On 2022-03-22 19:00:42 +0300, Melih Mutlu wrote:
> Rebased it.
> I also removed the temp installation task and
> used NoDefaultCurrentDirectoryInExePath env variable instead.
Hm. But you're still using a separate build directory, from what I can see?
The NoDefaultCurrentDirectoryInExePath thing should only have an effect when
not using a separate build directory, no?
Does it work to not use the separate build dir? Without it we don't need the
the "preparing build tree" step, and that's quite slow on mingw:
https://cirrus-ci.com/task/4713509253545984?logs=configure#L392
[00:23:44.371] preparing build tree... done
[00:24:25.429] configure: creating ./config.status
Chatting about this patch with Thomas I started to wonder about other reasons
for the slow speed of configure. I briefly experimented locally, and it looks
like using 'dash' as the shell makes configure run a good bit quicker.
> ---
> .cirrus.yml | 79 +++++++++++++++++++++++++++++++++++++++++++----------
> 1 file changed, 65 insertions(+), 14 deletions(-)
>
> diff --git a/.cirrus.yml b/.cirrus.yml
> index e5335fede7..1ed40347cf 100644
> --- a/.cirrus.yml
> +++ b/.cirrus.yml
> @@ -23,7 +23,6 @@ env:
> CHECKFLAGS: -Otarget
> PROVE_FLAGS: --timer
> PGCTLTIMEOUT: 120 # avoids spurious failures during parallel tests
> - TEMP_CONFIG: ${CIRRUS_WORKING_DIR}/src/tools/ci/pg_ci_base.conf
> PG_TEST_EXTRA: kerberos ldap ssl
This removes TEMP_CONFIG from all other tasks. You added it back to the VS
windows task, but not the others? I assume that was accidental?
> + env:
> + CCACHE_DIR: C:/msys64/ccache
> + BUILD_DIR: "%CIRRUS_WORKING_DIR%/build"
I think this should use TEMP_CONFIG too. Is the problem that you need to
change the path?
> + ccache_cache:
> + folder: ${CCACHE_DIR}
> +
> + mingw_info_script:
> + - C:\msys64\usr\bin\bash.exe -lc "where gcc"
> + - C:\msys64\usr\bin\bash.exe -lc "gcc --version"
> + - C:\msys64\usr\bin\bash.exe -lc "where perl"
> + - C:\msys64\usr\bin\bash.exe -lc "perl --version"
> +
> + configure_script:
> + - C:\msys64\usr\bin\bash.exe -lc "mkdir %BUILD_DIR% &&
> + cd %BUILD_DIR% &&
> + %CIRRUS_WORKING_DIR%/configure
Could you try using dash to invoke configure here, and whether it makes configure faster?
> + --host=x86_64-w64-mingw32
> + --enable-cassert
> + --enable-tap-tests
> + --with-icu
> + --with-libxml
> + --with-libxslt
> + --with-lz4
> + --enable-debug
> + CC='ccache gcc'
> + CXX='ccache g++'"
I think this task should specify CFLAGS="-Og", CXXFLAGS="-Og" similar to other
tasks. We end up with -O2 otherwise, which makes the build measurably slower.
> + tests_script:
> + - set "NoDefaultCurrentDirectoryInExePath=0"
A comment about why NoDefaultCurrentDirectoryInExePath=0 is used would be
good.
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
@ 2022-07-28 14:11 ` Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Melih Mutlu @ 2022-07-28 14:11 UTC (permalink / raw)
To: pgsql-hackers; +Cc: Andres Freund <[email protected]>; Justin Pryzby <[email protected]>; Andrew Dunstan <[email protected]>
Hi hackers,
I'm sharing the rebased version of this patch, if you're still interested.
I would appreciate any feedback or concerns.
Best,
Melih
Andrew Dunstan <[email protected]>, 9 Nis 2022 Cmt, 19:34 tarihinde ÅŸunu
yazdı:
>
> On 4/8/22 21:02, Andres Freund wrote:
> > Hi,
> >
> > On 2022-04-08 19:27:58 -0500, Justin Pryzby wrote:
> >> On Thu, Apr 07, 2022 at 10:10:21AM -0700, Andres Freund wrote:
> >>> On 2022-04-06 11:03:37 -0400, Andrew Dunstan wrote:
> >>>> On 3/30/22 20:26, Andres Freund wrote:
> >>>>> Could you try using dash to invoke configure here, and whether it
> makes configure faster?
> >>>> I got weird failures re libxml/parser.h when I tried with dash. See
> >>>> <https://cirrus-ci.com/task/5963254039052288; (It would be nice if we
> >>>> could see config.log on failure.)
> >>> Since dash won't help us to get the build time down sufficiently, and
> the
> >>> tests don't pass without a separate build tree, I looked at what makes
> >>> config/prep_buildtree so slow.
> >>>
> >>> It's largely just bad code. The slowest part are spawning one expr and
> mkdir
> >>> -p for each directory. One 'cmp' for each makefile doesn't help either.
> >>>
> >>> The expr can be replaced with
> >>> subdir=${item#$sourcetree}
> >>> that's afaics posix syntax ([1]), not bash.
> >>>
> >>> Spawning one mkdir for each directory can be replaced by a single mkdir
> >>> invocation with all the directories. On my linux workstation that gets
> the
> >>> time for the first loop down from 1005ms to 38ms, really.
> >> Even better?
> >>
> >> (cd "$sourcetree" && find . -print |grep -E '/Makefile$|/GNUmakefile$'
> |grep -v "$sourcetree/doc/src/sgml/images/" |xargs tar c) |
> >> (cd "$buildtree" && tar x)
> > Don't think we depend on tar for building, at the moment. But yes, it'd
> be
> > faster... Tar is certainly a smaller dependency than perl, not sure if
> there's
> > any relevant platform without it?
> >
> >
>
>
> Couple of things here.
>
>
> 1. The second grep should lose "$sourcetree" I think.
>
> 2. Isn't this going to be a change in behaviour in that it will copy
> rather than symlinking the Makefiles? That is in fact the default
> behaviour of msys2's 'ln -s', as I pointed out upthread, but I don't
> think it's what we really want, especially in the general case. If you
> modify the Makefile and you're using a vpath you want to see the change
> reflected in your vpath.
>
>
> cheers
>
>
> andrew
>
> --
> Andrew Dunstan
> EDB: https://www.enterprisedb.com
>
>
Attachments:
[application/octet-stream] v3-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch (3.9K, ../../CAGPVpCTW1u8DGdwgSBsDyziE_7Tk7UwgOQ2tVR650F544sybDQ@mail.gmail.com/3-v3-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch)
download | inline diff:
From ce4e6984a044dd6b6d8d9f610b553ad2c378473b Mon Sep 17 00:00:00 2001
From: Melih Mutlu <[email protected]>
Date: Mon, 21 Feb 2022 14:46:05 +0300
Subject: [PATCH] Added Windows with MinGW environment in Cirrus CI
---
.cirrus.yml | 78 ++++++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 65 insertions(+), 13 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
index f23d6cae55..1a06cdcaad 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -338,13 +338,29 @@ task:
cores_script: src/tools/ci/cores_backtrace.sh macos "${HOME}/cores"
+WINDOWS_ENVIRONMENT_BASE: &WINDOWS_ENVIRONMENT_BASE
+ env:
+ # Half the allowed per-user CPU cores
+ CPUS: 4
+ # The default working dir is in a directory msbuild complains about
+ CIRRUS_WORKING_DIR: "c:/cirrus"
+
+ # Avoids port conflicts between concurrent tap test runs
+ PG_TEST_USE_UNIX_SOCKETS: 1
+
+ only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows.*'
+
+ sysinfo_script: |
+ chcp
+ systeminfo
+ powershell -Command get-psdrive -psprovider filesystem
+ set
+
task:
+ << : *WINDOWS_ENVIRONMENT_BASE
name: Windows - Server 2019, VS 2019
env:
- # Half the allowed per-user CPU cores
- CPUS: 4
-
# Our windows infrastructure doesn't have test concurrency above the level
# of a single vcregress test target. Due to that, it's useful to run prove
# with multiple jobs. For the other tasks it isn't, because two sources
@@ -354,15 +370,11 @@ task:
# likely can be improved upon further.
PROVE_FLAGS: -j10 --timer
- # The default cirrus working dir is in a directory msbuild complains about
- CIRRUS_WORKING_DIR: "c:/cirrus"
# Avoid re-installing over and over
NO_TEMP_INSTALL: 1
# git's tar doesn't deal with drive letters, see
# https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
TAR: "c:/windows/system32/tar.exe"
- # Avoids port conflicts between concurrent tap test runs
- PG_TEST_USE_UNIX_SOCKETS: 1
PG_REGRESS_SOCK_DIR: "c:/cirrus/"
# -m enables parallelism
# verbosity:minimal + Summary reduce verbosity, while keeping a summary of
@@ -393,12 +405,6 @@ task:
cpu: $CPUS
memory: 4G
- sysinfo_script: |
- chcp
- systeminfo
- powershell -Command get-psdrive -psprovider filesystem
- set
-
setup_additional_packages_script: |
REM choco install -y --no-progress ...
@@ -456,6 +462,52 @@ task:
path: "crashlog-*.txt"
type: text/plain
+task:
+ << : *WINDOWS_ENVIRONMENT_BASE
+ name: Windows - Server 2019, MinGW64
+ windows_container:
+ image: $CONTAINER_REPO/windows_ci_mingw64:latest
+ cpu: $CPUS
+ memory: 4G
+ env:
+ CCACHE_DIR: C:/msys64/ccache
+ BUILD_DIR: "%CIRRUS_WORKING_DIR%/build"
+
+ ccache_cache:
+ folder: ${CCACHE_DIR}
+
+ mingw_info_script:
+ - C:\msys64\usr\bin\dash.exe -lc "where gcc"
+ - C:\msys64\usr\bin\dash.exe -lc "gcc --version"
+ - C:\msys64\usr\bin\dash.exe -lc "where perl"
+ - C:\msys64\usr\bin\dash.exe -lc "perl --version"
+
+ configure_script:
+ - C:\msys64\usr\bin\dash.exe -lc "mkdir %BUILD_DIR% &&
+ cd %BUILD_DIR% &&
+ %CIRRUS_WORKING_DIR%/configure
+ --enable-cassert
+ --enable-tap-tests
+ --with-icu
+ --with-libxml
+ --with-libxslt
+ --with-lz4
+ --enable-debug
+ CC='ccache gcc'
+ CXX='ccache g++'
+ CFLAGS='-Og -ggdb -pipe'
+ CXXFLAGS='-Og -ggdb'"
+
+ build_script:
+ C:\msys64\usr\bin\dash.exe -lc "cd %BUILD_DIR% && make -s world-bin -j${CPUS}"
+
+ upload_caches: ccache
+
+ tests_script:
+ - set "NoDefaultCurrentDirectoryInExePath=0"
+ - C:\msys64\usr\bin\dash.exe -lc "cd %BUILD_DIR% && make -s ${CHECK} ${CHECKFLAGS} -j${CPUS} TMPDIR=%BUILD_DIR%/tmp_install"
+
+ on_failure: *on_failure
task:
name: CompilerWarnings
--
2.25.1
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
@ 2022-07-28 22:44 ` Justin Pryzby <[email protected]>
2022-08-04 02:04 ` Re: Mingw task for Cirrus CI Thomas Munro <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
0 siblings, 2 replies; 41+ messages in thread
From: Justin Pryzby @ 2022-07-28 22:44 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; +Cc: pgsql-hackers; Andres Freund <[email protected]>; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
I think the "only_if" should allow separately running one but not both of the
windows instances, like:
+ only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw64'
I'm not sure, but maybe this task should only run "by request", and omit the
first condition:
+ only_if: $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw64'
I think it should include something like
+ setup_additional_packages_script: |
+ REM C:\msys64\usr\bin\pacman.exe -S --noconfirm ...
Let's see what others think about those.
Do you know if this handles logging of crash dumps ?
With tweaks to prep_buildtree, and with ./configure --cache-file, that step
goes down to ~36sec (unless configure needs to be re-run).
I also looked into using busybox to avoid running separate processes for each
"ln", but I think 36sec is good enough.
At one point, I tried setting "CIRRUS_SHELL: bash" to avoid writing "bash -c"
over and over, but never got it working.
--
Justin
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
@ 2022-08-04 02:04 ` Thomas Munro <[email protected]>
2022-08-04 08:38 ` Re: Mingw task for Cirrus CI Thomas Munro <[email protected]>
1 sibling, 1 reply; 41+ messages in thread
From: Thomas Munro @ 2022-08-04 02:04 UTC (permalink / raw)
To: Justin Pryzby <[email protected]>; +Cc: Melih Mutlu <[email protected]>; pgsql-hackers; Andres Freund <[email protected]>; Andrew Dunstan <[email protected]>
I noticed that this says:
[01:01:45.657] sqlda.pgc: In function 'dump_sqlda':
[01:01:45.657] sqlda.pgc:45:33: warning: format '%d' expects argument
of type 'int', but argument 3 has type 'long long int' [-Wformat=]
[01:01:45.657] 45 | "name sqlda descriptor: '%s' value %I64d\n",
[01:01:45.657] | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[01:01:45.657] ......
[01:01:45.657] 49 | sqlda->sqlvar[i].sqlname.data, *(long long int
*)sqlda->sqlvar[i].sqldata);
[01:01:45.657] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[01:01:45.657] | |
[01:01:45.657] | long long int
... but fairywren doesn't. Why would they disagree on recognising %I64d?
The other warning I'm seeing is present on both, so it's not really
relevant to this thread, just mentioning it... seems kinda like a
worlds-colliding-problem without an elegant fix (POSIX says you have
to declare it yourself exactly like that, but Windows says linkage
ain't going to work the way you want unless you sprinkle the right
linkage dust on it...), so maybe we just want to put #if
!defined(something something mings) around it and to MinGW's header's
declaration...
[00:48:08.925] c:/cirrus/src/backend/postmaster/postmaster.c: In
function 'PostmasterMain':
[00:48:08.925] c:/cirrus/src/backend/postmaster/postmaster.c:973:31:
warning: '__p__environ' redeclared without dllimport attribute:
previous dllimport ignored [-Wattributes]
[00:48:08.925] 973 | extern char **environ;
[00:48:08.925] | ^~~~~~~
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-04 02:04 ` Re: Mingw task for Cirrus CI Thomas Munro <[email protected]>
@ 2022-08-04 08:38 ` Thomas Munro <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Thomas Munro @ 2022-08-04 08:38 UTC (permalink / raw)
To: Justin Pryzby <[email protected]>; +Cc: Melih Mutlu <[email protected]>; pgsql-hackers; Andres Freund <[email protected]>; Andrew Dunstan <[email protected]>
On Thu, Aug 4, 2022 at 2:04 PM Thomas Munro <[email protected]> wrote:
> I noticed that this says:
>
> [01:01:45.657] sqlda.pgc: In function 'dump_sqlda':
> [01:01:45.657] sqlda.pgc:45:33: warning: format '%d' expects argument
> of type 'int', but argument 3 has type 'long long int' [-Wformat=]
> [01:01:45.657] 45 | "name sqlda descriptor: '%s' value %I64d\n",
> [01:01:45.657] | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> [01:01:45.657] ......
> [01:01:45.657] 49 | sqlda->sqlvar[i].sqlname.data, *(long long int
> *)sqlda->sqlvar[i].sqldata);
> [01:01:45.657] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> [01:01:45.657] | |
> [01:01:45.657] | long long int
>
> ... but fairywren doesn't. Why would they disagree on recognising %I64d?
Oops, I was looking in the wrong place. fairywren does also shows the warning:
https://buildfarm.postgresql.org/cgi-bin/show_stage_log.pl?nm=fairywren&dt=2022-08-02%2022%3A05%...
Something to fix, but not directly relevant to this patch. Sorry for the noise.
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
@ 2022-08-19 02:33 ` Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
1 sibling, 1 reply; 41+ messages in thread
From: Justin Pryzby @ 2022-08-19 02:33 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; +Cc: pgsql-hackers; Andres Freund <[email protected]>; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Inline notes about changes since the last version.
On Thu, Jul 28, 2022 at 05:44:28PM -0500, Justin Pryzby wrote:
> I think the "only_if" should allow separately running one but not both of the
> windows instances, like:
>
> + only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw64'
>
> I'm not sure, but maybe this task should only run "by request", and omit the
> first condition:
>
> + only_if: $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw64'
The patch shouldn't say this during development, or else cfbot doesn't run it..
Oops.
> I think it should include something like
>
> + setup_additional_packages_script: |
> + REM C:\msys64\usr\bin\pacman.exe -S --noconfirm ...
>
> Let's see what others think about those.
>
> Do you know if this handles logging of crash dumps ?
It does now, although I hardcoded "postgres.exe" ...
> + setup_additional_packages_script: |
> + REM C:\msys64\usr\bin\pacman.exe -S --noconfirm busybox
This should include choco, too.
> - CXXFLAGS='-Og -ggdb'"
> + CXXFLAGS='-Og -ggdb' && break;
> + rm -v ${CCACHE_DIR}/configure.cache;
> + done
I noticed that this doesn't seem to do the right thing with the exit status -
configure can fail without cirrusci noticing, and then the build fails at the
next step.
> for item in `find "$sourcetree" -name Makefile -print -o -name GNUmakefile -print | grep -v "$sourcetree/doc/src/sgml/images/"`; do
> - filename=`expr "$item" : "$sourcetree\(.*\)"`
> - if test ! -f "${item}.in"; then
> - if cmp "$item" "$buildtree/$filename" >/dev/null 2>&1; then : ; else
> - ln -fs "$item" "$buildtree/$filename" || exit 1
> - fi
> - fi
> + filename=${item#$sourcetree}
> + [ -e "$buildtree/$filename" ] && continue
I fixed this to check for ".in" files as intended.
It'd be a lot better if the image didn't take so long to start. :(
--
Justin
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
@ 2022-09-02 21:52 ` Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Melih Mutlu @ 2022-09-02 21:52 UTC (permalink / raw)
To: Justin Pryzby <[email protected]>; +Cc: pgsql-hackers; Andres Freund <[email protected]>; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Justin Pryzby <[email protected]>, 19 AÄŸu 2022 Cum, 05:34 tarihinde ÅŸunu
yazdı:
> Inline notes about changes since the last version.
>
> On Thu, Jul 28, 2022 at 05:44:28PM -0500, Justin Pryzby wrote:
> > I think the "only_if" should allow separately running one but not both
> of the
> > windows instances, like:
> >
> > + only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' ||
> $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw64'
> >
> > I'm not sure, but maybe this task should only run "by request", and omit
> the
> > first condition:
> >
> > + only_if: $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw64'
>
> The patch shouldn't say this during development, or else cfbot doesn't run
> it..
> Oops.
>
Actually, making MinGW task optional for now might make sense. Due to
windows resource limits on Cirrus CI and slow builds on Windows, adding
this task as non-optional may not be an efficient decision
I think that continuing with this patch by changing MinGW to optional for
now, instead of waiting for more resource on Cirrus or faster builds on
Windows, could be better. I don't see any harm.
+ only_if: $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-include:[^\n]*mingw.* ||
> $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw.*'
Added this line to allow run only mingw task or run all tasks including
mingw.
What do you all think about this change? Does it make sense?
Thanks for your contributions/reviews Justin!
> I think it should include something like
> >
> > + setup_additional_packages_script: |
> > + REM C:\msys64\usr\bin\pacman.exe -S --noconfirm ...
> >
> > Let's see what others think about those.
> >
> > Do you know if this handles logging of crash dumps ?
>
> It does now, although I hardcoded "postgres.exe" ...
>
merged this with my patch
> + setup_additional_packages_script: |
> > + REM C:\msys64\usr\bin\pacman.exe -S --noconfirm busybox
>
> This should include choco, too.
Added pacman.exe line. Do we really need choco here? I don't think mingw
would require any package via choco.
Also is ending pacman.exe line with busybox intentional? I just added that
line with "..." at the end instead of any package name.
>
>
> - CXXFLAGS='-Og -ggdb'"
> > + CXXFLAGS='-Og -ggdb' && break;
> > + rm -v ${CCACHE_DIR}/configure.cache;
> > + done
>
> I noticed that this doesn't seem to do the right thing with the exit
> status -
> configure can fail without cirrusci noticing, and then the build fails at
> the
> next step.
merged.
>
>
> for item in `find "$sourcetree" -name Makefile -print -o -name
> GNUmakefile -print | grep -v "$sourcetree/doc/src/sgml/images/"`; do
> > - filename=`expr "$item" : "$sourcetree\(.*\)"`
> > - if test ! -f "${item}.in"; then
> > - if cmp "$item" "$buildtree/$filename" >/dev/null 2>&1; then : ;
> else
> > - ln -fs "$item" "$buildtree/$filename" || exit 1
> > - fi
> > - fi
> > + filename=${item#$sourcetree}
> > + [ -e "$buildtree/$filename" ] && continue
>
> I fixed this to check for ".in" files as intended.
>
> It'd be a lot better if the image didn't take so long to start. :(
>
One question would be that should this patch include "prep_buildtree"? It
doesn't seem to me like it's directly related to adding MinGW into CI but
more like an improvement for builds on Windows.
Maybe we can make it a seperate patch if it's necessary.
What do you think?
TAR: "c:/windows/system32/tar.exe"
>
Sharing a new version of the patch. It also moves the above line so that it
will apply to mingw task too. Otherwise mingw task was failing.
Thanks,
Melih
Attachments:
[application/octet-stream] v4-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch (6.1K, ../../CAGPVpCRDCXAFRwFOfExo1-WXKDS_-w=e6tRQ1LUKQBoZ6OWwYA@mail.gmail.com/3-v4-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch)
download | inline diff:
From 7a8377decffb919f2e82bdc09be32343e8c5b4c1 Mon Sep 17 00:00:00 2001
From: Melih Mutlu <[email protected]>
Date: Fri, 2 Sep 2022 23:10:02 +0300
Subject: [PATCH] Added Windows with MinGW environment in Cirrus CI
CI task on Windows Server with MinGW has been added as optional.
---
.cirrus.yml | 103 ++++++++++++++++++++++++++------
src/tools/ci/cores_backtrace.sh | 17 +++++-
2 files changed, 100 insertions(+), 20 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
index 81eb8a9996..f0883308d3 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -34,6 +34,7 @@ on_failure: &on_failure
- "**/*.log"
- "**/*.diffs"
- "**/regress_log_*"
+ - "**/*.stackdump"
type: text/plain
task:
@@ -338,13 +339,33 @@ task:
cores_script: src/tools/ci/cores_backtrace.sh macos "${HOME}/cores"
+WINDOWS_ENVIRONMENT_BASE: &WINDOWS_ENVIRONMENT_BASE
+ env:
+ # Half the allowed per-user CPU cores
+ CPUS: 4
+ # The default working dir is in a directory msbuild complains about
+ CIRRUS_WORKING_DIR: "c:/cirrus"
+
+ # Avoids port conflicts between concurrent tap test runs
+ PG_TEST_USE_UNIX_SOCKETS: 1
+
+ # git's tar doesn't deal with drive letters, see
+ # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
+ TAR: "c:/windows/system32/tar.exe"
+
+ sysinfo_script: |
+ chcp
+ systeminfo
+ powershell -Command get-psdrive -psprovider filesystem
+ set
+
task:
+ << : *WINDOWS_ENVIRONMENT_BASE
name: Windows - Server 2019, VS 2019
- env:
- # Half the allowed per-user CPU cores
- CPUS: 4
+ only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows.*'
+ env:
# Our windows infrastructure doesn't have test concurrency above the level
# of a single vcregress test target. Due to that, it's useful to run prove
# with multiple jobs. For the other tasks it isn't, because two sources
@@ -354,15 +375,9 @@ task:
# likely can be improved upon further.
PROVE_FLAGS: -j10 --timer
- # The default cirrus working dir is in a directory msbuild complains about
- CIRRUS_WORKING_DIR: "c:/cirrus"
# Avoid re-installing over and over
NO_TEMP_INSTALL: 1
- # git's tar doesn't deal with drive letters, see
- # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
- TAR: "c:/windows/system32/tar.exe"
- # Avoids port conflicts between concurrent tap test runs
- PG_TEST_USE_UNIX_SOCKETS: 1
+
PG_REGRESS_SOCK_DIR: "c:/cirrus/"
# -m enables parallelism
# verbosity:minimal + Summary reduce verbosity, while keeping a summary of
@@ -386,19 +401,11 @@ task:
# currently have a tool for that...
CIRRUS_ESCAPING_PROCESSES: 1
- only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows.*'
-
windows_container:
image: $CONTAINER_REPO/windows_ci_vs_2019:latest
cpu: $CPUS
memory: 4G
- sysinfo_script: |
- chcp
- systeminfo
- powershell -Command get-psdrive -psprovider filesystem
- set
-
setup_additional_packages_script: |
REM choco install -y --no-progress ...
@@ -456,6 +463,66 @@ task:
path: "crashlog-*.txt"
type: text/plain
+task:
+ << : *WINDOWS_ENVIRONMENT_BASE
+ name: Windows - Server 2019, MinGW64
+
+ only_if: $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-include:[^\n]*mingw.* || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw.*'
+
+ windows_container:
+ image: $CONTAINER_REPO/windows_ci_mingw64:latest
+ cpu: $CPUS
+ memory: 4G
+ env:
+ CCACHE_DIR: C:/msys64/ccache
+ BUILD_DIR: "%CIRRUS_WORKING_DIR%/build"
+
+ ccache_cache:
+ folder: ${CCACHE_DIR}
+
+ setup_additional_packages_script: |
+ REM C:\msys64\usr\bin\pacman.exe -S --noconfirm ...
+
+ mingw_info_script:
+ - C:\msys64\usr\bin\dash.exe -lc "where gcc"
+ - C:\msys64\usr\bin\dash.exe -lc "gcc --version"
+ - C:\msys64\usr\bin\dash.exe -lc "where perl"
+ - C:\msys64\usr\bin\dash.exe -lc "perl --version"
+
+ configure_script:
+ # Try to configure with the cache file, and retry without if it fails, in case the flags changed.
+ - C:\msys64\usr\bin\dash.exe -lc "mkdir %BUILD_DIR% &&
+ cd %BUILD_DIR% && for i in 1 2; do
+ %CIRRUS_WORKING_DIR%/configure
+ --cache-file=${CCACHE_DIR}/configure.cache
+ --enable-cassert
+ --enable-debug
+ --enable-tap-tests
+ --with-icu
+ --with-libxml
+ --with-libxslt
+ --with-lz4
+ CC='ccache gcc'
+ CXX='ccache g++'
+ CFLAGS='-Og -ggdb -pipe'
+ CXXFLAGS='-Og -ggdb' && break;
+ rm -v ${CCACHE_DIR}/configure.cache;
+ done
+ "
+
+ build_script:
+ C:\msys64\usr\bin\dash.exe -lc "cd %BUILD_DIR% && make -s world-bin -j${CPUS}"
+
+ upload_caches: ccache
+
+ tests_script:
+ - set "NoDefaultCurrentDirectoryInExePath=0"
+ - C:\msys64\usr\bin\dash.exe -lc "cd %BUILD_DIR% && make -s ${CHECK} ${CHECKFLAGS} -j${CPUS} TMPDIR=%BUILD_DIR%/tmp_install"
+
+ on_failure:
+ <<: *on_failure
+ cores_script:
+ - C:\tools\cygwin\bin\dash.exe --login -c "cd '%cd%' && src/tools/ci/cores_backtrace.sh msys ."
task:
name: CompilerWarnings
diff --git a/src/tools/ci/cores_backtrace.sh b/src/tools/ci/cores_backtrace.sh
index 28d3cecfc6..93e90f284e 100755
--- a/src/tools/ci/cores_backtrace.sh
+++ b/src/tools/ci/cores_backtrace.sh
@@ -10,11 +10,24 @@ directory=$2
case $os in
freebsd|linux|macos)
- ;;
+ ;;
+
+ msys)
+ # XXX Evidently I don't know how to write two arguments here without pathname expansion later, other than eval.
+ #findargs='-name "*.stackdump"'
+ for corefile in $(find "$directory" -type f -name "*.stackdump") ; do
+ binary=`basename "$corefile" .stackdump`
+ echo;echo;
+ echo "dumping ${corefile} for ${binary}"
+ awk '/^0/{print $2}' $corefile |addr2line -f -i -e ./src/backend/postgres.exe
+ done
+ exit 0
+ ;;
+
*)
echo "unsupported operating system ${os}"
exit 1
- ;;
+ ;;
esac
first=1
--
2.25.1
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
@ 2022-09-05 11:50 ` Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-21 13:18 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
0 siblings, 2 replies; 41+ messages in thread
From: Justin Pryzby @ 2022-09-05 11:50 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; +Cc: pgsql-hackers; Andres Freund <[email protected]>; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
On Sat, Sep 03, 2022 at 12:52:54AM +0300, Melih Mutlu wrote:
> Justin Pryzby <[email protected]>, 19 Ağu 2022 Cum, 05:34 tarihinde şunu yazdı:
>
> > Inline notes about changes since the last version.
> >
> > On Thu, Jul 28, 2022 at 05:44:28PM -0500, Justin Pryzby wrote:
> > > I think the "only_if" should allow separately running one but not both
> > of the
> > > windows instances, like:
> > >
> > > + only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw64'
> > >
> > > I'm not sure, but maybe this task should only run "by request", and omit the
> > > first condition:
> > >
> > > + only_if: $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw64'
> >
> > The patch shouldn't say this during development, or else cfbot doesn't run it..
> > Oops.
>
> Actually, making MinGW task optional for now might make sense. Due to
> windows resource limits on Cirrus CI and slow builds on Windows, adding
> this task as non-optional may not be an efficient decision
> I think that continuing with this patch by changing MinGW to optional for
> now, instead of waiting for more resource on Cirrus or faster builds on
> Windows, could be better. I don't see any harm.
I agree that maybe it should be optional if merged to postgres.
But cfbot should run the Mingw task for this patch's own commitfest
entry. But right now (because cfbot doesn't include the original commit
message/s), it doesn't get run :(
> + only_if: $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-include:[^\n]*mingw.* ||
> $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*mingw.*'
>
> Added this line to allow run only mingw task or run all tasks including
> mingw.
>
> What do you all think about this change? Does it make sense?
You're allowing to write "ci-os-include: mingw" to "opt-in" to the task,
without opting-out of all the other tasks (and without enumerating all
the tasks by writing "ci-os-only: mingw,windows,macos,freebsd,linux".
That makes sense, and the logic looks right. But that still has to be
commented during development to be run by cfbot.
Also, the first half was missing a closing quote.
https://cirrus-ci.com/build/5874178241855488
> > + setup_additional_packages_script: |
> > > + REM C:\msys64\usr\bin\pacman.exe -S --noconfirm busybox
> >
> > This should include choco, too.
>
> Added pacman.exe line. Do we really need choco here? I don't think mingw
> would require any package via choco.
I guess choco isn't needed.
> Also is ending pacman.exe line with busybox intentional? I just added that
> line with "..." at the end instead of any package name.
Yeah, the busybox part was unintentional.
> > > for item in `find "$sourcetree" -name Makefile -print -o -name GNUmakefile -print | grep -v "$sourcetree/doc/src/sgml/images/"`; do
> > > - filename=`expr "$item" : "$sourcetree\(.*\)"`
> > > - if test ! -f "${item}.in"; then
> > > - if cmp "$item" "$buildtree/$filename" >/dev/null 2>&1; then : ; else
> > > - ln -fs "$item" "$buildtree/$filename" || exit 1
> > > - fi
> > > - fi
> > > + filename=${item#$sourcetree}
> > > + [ -e "$buildtree/$filename" ] && continue
> >
> > I fixed this to check for ".in" files as intended.
> >
> > It'd be a lot better if the image didn't take so long to start. :(
>
> One question would be that should this patch include "prep_buildtree"? It
> doesn't seem to me like it's directly related to adding MinGW into CI but
> more like an improvement for builds on Windows.
> Maybe we can make it a seperate patch if it's necessary.
I don't know what direction that idea is going, but it makes working
with this patch a bit easier when configure is less slow. Fine with me
to split it into a separate patch :)
> Sharing a new version of the patch. It also moves the above line so that it
> will apply to mingw task too. Otherwise mingw task was failing.
I saw that but hadn't tracked it down yet. Do you know if the tar
failures were from a TAP test added since you first posted the mingw
patch, or ??
Also: your original patch said --host=x86_64-w64-mingw32, but the task
is called MinGW64. The most recent patches don't use --host at all, and
were building for a 32 bit environment, even though the OS image says
MSYSTEM=UCRT64.
Also: right now src/test and src/interfaces/*/test aren't being built
during the build phase, which means that they're 1) not compiled in
parallel; and 2) not cached. This isn't specific to MinGW. Other than
compiling those dirs specifically, one option is to put
"always: upload_caches: ccache" after "test_world_script" (in that case,
if the CI instance is rescheduled during tests, the compilation won't be
pushed to cache). Actually, it seems better to compile stuff during
"build" or else any compilation warnings should up in the middle of
"check-world.."
Also: I'm having second thoughts about the loop around ./configure. It
could happen that a cached configure would succeed, but then the build
would later fail, and it wouldn't fix itself. I think a slow configure
is okay for an "opt-in" task.
Also: my backtrace call was using a path to cygwin rather than msys.
This seemed to work before, but doesn't seem to be working now...
--
Justin
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
@ 2022-09-05 23:52 ` Andres Freund <[email protected]>
2022-09-10 20:19 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
1 sibling, 2 replies; 41+ messages in thread
From: Andres Freund @ 2022-09-05 23:52 UTC (permalink / raw)
To: Justin Pryzby <[email protected]>; +Cc: Melih Mutlu <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi,
On 2022-09-05 06:50:55 -0500, Justin Pryzby wrote:
> I saw that but hadn't tracked it down yet. Do you know if the tar
> failures were from a TAP test added since you first posted the mingw
> patch, or ??
I think it's that msys now includes tar by default, but not sure.
> Also: your original patch said --host=x86_64-w64-mingw32, but the task
> is called MinGW64. The most recent patches don't use --host at all, and
> were building for a 32 bit environment, even though the OS image says
> MSYSTEM=UCRT64.
I don't think you should need to use --host, that indicates cross compiling,
which we shouldn't do. I don't think the patch without --host targets 32bit -
the last time CI ran the patch, it built a 64bit PG:
https://cirrus-ci.com/task/5489471041830912?logs=configure#L231
[13:47:54.539] checking size of void *... (cached) 8
[13:47:54.557] checking size of size_t... (cached) 8
and the underlying commit didn't specify --host.
> Also: right now src/test and src/interfaces/*/test aren't being built
> during the build phase, which means that they're 1) not compiled in
> parallel; and 2) not cached. This isn't specific to MinGW. Other than
> compiling those dirs specifically, one option is to put
> "always: upload_caches: ccache" after "test_world_script" (in that case,
> if the CI instance is rescheduled during tests, the compilation won't be
> pushed to cache). Actually, it seems better to compile stuff during
> "build" or else any compilation warnings should up in the middle of
> "check-world.."
I'd tackle that independently of this commit.
> Also: I'm having second thoughts about the loop around ./configure. It
> could happen that a cached configure would succeed, but then the build
> would later fail, and it wouldn't fix itself. I think a slow configure
> is okay for an "opt-in" task.
Agreed.
I think we can convert this to meson soon, and that seems a *lot* faster at
configure than autoconf on mingw. Not even close to as fast as on a modern-ish
linux, but not that painful.
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
@ 2022-09-10 20:19 ` Justin Pryzby <[email protected]>
1 sibling, 0 replies; 41+ messages in thread
From: Justin Pryzby @ 2022-09-10 20:19 UTC (permalink / raw)
To: Andres Freund <[email protected]>; +Cc: Melih Mutlu <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
On Mon, Sep 05, 2022 at 04:52:17PM -0700, Andres Freund wrote:
> I don't think you should need to use --host, that indicates cross compiling,
This made me consider the idea of cross-compiling for windows under a
new linux task, and then running tests under Windows with a dependent
task. I suppose that use -Og, in addition to CompilerWarnings, which
uses -O2.
cirrusci caches are (or can be) shared between tasks. I got this mostly
working, with a few kludges to compile and install stuff under src/test.
This may be yet another idea that's obsoleted by meson. WDYT?
--
Justin
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
@ 2022-09-22 17:03 ` Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
1 sibling, 1 reply; 41+ messages in thread
From: Andres Freund @ 2022-09-22 17:03 UTC (permalink / raw)
To: Justin Pryzby <[email protected]>; +Cc: Melih Mutlu <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi Melih,
On 2022-09-05 16:52:17 -0700, Andres Freund wrote:
> I think we can convert this to meson soon, and that seems a *lot* faster at
> configure than autoconf on mingw. Not even close to as fast as on a modern-ish
> linux, but not that painful.
Now that meson has been merged, could you try to adjust this patch so it
builds with meson?
Regards,
Andres
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
@ 2022-10-07 17:00 ` Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Melih Mutlu @ 2022-10-07 17:00 UTC (permalink / raw)
To: Andres Freund <[email protected]>; Justin Pryzby <[email protected]>; +Cc: pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi hackers.
Andres Freund <[email protected]>, 22 Eyl 2022 Per, 20:03 tarihinde ÅŸunu
yazdı:
> Now that meson has been merged, could you try to adjust this patch so it
> builds with meson?
>
Attached patch is the adjusted version to build with meson.
Add a commented-out trigger-type: manual and note in the commit message that
> the committer needs to adjust that piece.
>
Done.
> Also: your original patch said --host=x86_64-w64-mingw32, but the task
> > is called MinGW64. The most recent patches don't use --host at all, and
> > were building for a 32 bit environment, even though the OS image says
> > MSYSTEM=UCRT64.
> I don't think you should need to use --host, that indicates cross
> compiling,
> which we shouldn't do. I don't think the patch without --host targets
> 32bit -
> the last time CI ran the patch, it built a 64bit PG:
Also removed this with meson changes. Can confirm that it builds 64bit.
Justin Pryzby <[email protected]>, 5 Eyl 2022 Pzt, 14:50 tarihinde ÅŸunu
yazdı:
> I don't know what direction that idea is going, but it makes working
> with this patch a bit easier when configure is less slow. Fine with me
> to split it into a separate patch :)
If it's okay, then I would suggest not including that piece into this patch
since I don't know what direction this is going either.
The patch has been changed quite a bit due to meson integration.
I would appreciate any feedback.
Best,
Melih
Attachments:
[application/octet-stream] v6-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch (6.2K, ../../CAGPVpCQLTq5QS-sDqTPfOstRpj2FUyqTQWx52F73LBs6d4WOJA@mail.gmail.com/3-v6-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch)
download | inline diff:
From 7e9784adaa7819a63d57a8e38814c58b430c1ada Mon Sep 17 00:00:00 2001
From: Melih Mutlu <[email protected]>
Date: Fri, 2 Sep 2022 23:10:02 +0300
Subject: [PATCH] Added Windows with MinGW environment in Cirrus CI
CI task on Windows Server with MinGW has been added as optional.
Note that trigger_type line for MinGW task has to be uncommented before
merge
---
.cirrus.yml | 97 +++++++++++++++++++++++++--------
src/tools/ci/cores_backtrace.sh | 17 +++++-
2 files changed, 90 insertions(+), 24 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
index 9f2282471a..7e6ebdf7b7 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -35,6 +35,7 @@ on_failure_ac: &on_failure_ac
- "**/*.log"
- "**/*.diffs"
- "**/regress_log_*"
+ - "**/*.stackdump"
type: text/plain
on_failure_meson: &on_failure_meson
@@ -393,24 +394,37 @@ task:
cores_script: src/tools/ci/cores_backtrace.sh macos "${HOME}/cores"
+WINDOWS_ENVIRONMENT_BASE: &WINDOWS_ENVIRONMENT_BASE
+ env:
+ # Half the allowed per-user CPU cores
+ CPUS: 4
+ TEST_JOBS: 4 # wild guess, data based value welcome
+
+ # The default working dir is in a directory msbuild complains about
+ CIRRUS_WORKING_DIR: "c:/cirrus"
+
+ PG_REGRESS_SOCK_DIR: "c:/cirrus/"
+
+ # Avoids port conflicts between concurrent tap test runs
+ PG_TEST_USE_UNIX_SOCKETS: 1
+
+ # git's tar doesn't deal with drive letters, see
+ # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
+ TAR: "c:/windows/system32/tar.exe"
+
+ sysinfo_script: |
+ chcp
+ systeminfo
+ powershell -Command get-psdrive -psprovider filesystem
+ set
+
task:
name: Windows - Server 2019, VS 2019 - Meson & ninja
+ << : *WINDOWS_ENVIRONMENT_BASE
env:
- # Half the allowed per-user CPU cores
- CPUS: 4
- TEST_JOBS: 8 # wild guess, data based value welcome
-
- # The default cirrus working dir is in a directory msbuild complains about
- CIRRUS_WORKING_DIR: "c:/cirrus"
# Avoid re-installing over and over
NO_TEMP_INSTALL: 1
- # git's tar doesn't deal with drive letters, see
- # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
- TAR: "c:/windows/system32/tar.exe"
- # Avoids port conflicts between concurrent tap test runs
- PG_TEST_USE_UNIX_SOCKETS: 1
- PG_REGRESS_SOCK_DIR: "c:/cirrus/"
# startcreate_script starts a postgres instance that we don't want to get
# killed at the end of that script (it's stopped in stop_script). Can't
@@ -435,34 +449,73 @@ task:
cpu: $CPUS
memory: 4G
- sysinfo_script: |
- chcp
- systeminfo
- powershell -Command get-psdrive -psprovider filesystem
- set
-
setup_additional_packages_script: |
REM choco install -y --no-progress ...
-
# Use /DEBUG:FASTLINK to avoid high memory usage during linking
configure_script: |
vcvarsall x64
- meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Db_pch=true -Dssl=openssl -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build
+ meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Db_pch=true -Dssl=openssl -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build
build_script: |
vcvarsall x64
ninja -C build
-
check_world_script: |
vcvarsall x64
meson test %MTEST_ARGS% --num-processes %TEST_JOBS%
-
on_failure:
<<: *on_failure_meson
crashlog_artifacts:
path: "crashlog-*.txt"
type: text/plain
+task:
+ << : *WINDOWS_ENVIRONMENT_BASE
+ name: Windows - Server 2019, MinGW64 - Meson
+
+ # This task needs to be triggered manually on Cirrus CI.
+ # Otherwise it will not run and be shown as paused
+ # XXX: Below line needs to be uncommented before merge. It's commented for now so that cfbot can run it
+ #trigger_type: manual
+
+ windows_container:
+ image: $CONTAINER_REPO/windows_ci_mingw64:latest
+ cpu: $CPUS
+ memory: 4G
+
+ env:
+ CCACHE_DIR: C:/msys64/ccache
+ BUILD_DIR: "%CIRRUS_WORKING_DIR%/build"
+ PYTHONHOME: C:/msys64/ucrt64
+
+ ccache_cache:
+ folder: ${CCACHE_DIR}
+
+ setup_additional_packages_script: |
+ REM C:\msys64\usr\bin\pacman.exe -S --noconfirm ...
+
+ mingw_info_script:
+ - C:\msys64\usr\bin\dash.exe -lc "where gcc"
+ - C:\msys64\usr\bin\dash.exe -lc "gcc --version"
+ - C:\msys64\usr\bin\dash.exe -lc "where perl"
+ - C:\msys64\usr\bin\dash.exe -lc "perl --version"
+
+ configure_script:
+ - C:\msys64\usr\bin\dash.exe -lc "cd %CIRRUS_WORKING_DIR% &&
+ meson setup --buildtype debug -Dcassert=true -Db_pch=true -DTAR=%TAR% build"
+
+ build_script:
+ - C:\msys64\usr\bin\dash.exe -lc "cd %CIRRUS_WORKING_DIR% && ninja -C %BUILD_DIR%"
+
+ upload_caches: ccache
+
+ test_world_script:
+ - C:\msys64\usr\bin\dash.exe -lc "cd %CIRRUS_WORKING_DIR% && meson test --print-errorlogs --num-processes %TEST_JOBS% -C %BUILD_DIR%"
+
+ on_failure:
+ <<: *on_failure_meson
+ cores_script:
+ - C:\msys64\usr\bin\dash.exe -lc "cd %BUILD_DIR% src/tools/ci/cores_backtrace.sh msys %BUILD_DIR%/tmp_install"
+
task:
name: CompilerWarnings
diff --git a/src/tools/ci/cores_backtrace.sh b/src/tools/ci/cores_backtrace.sh
index 28d3cecfc6..93e90f284e 100755
--- a/src/tools/ci/cores_backtrace.sh
+++ b/src/tools/ci/cores_backtrace.sh
@@ -10,11 +10,24 @@ directory=$2
case $os in
freebsd|linux|macos)
- ;;
+ ;;
+
+ msys)
+ # XXX Evidently I don't know how to write two arguments here without pathname expansion later, other than eval.
+ #findargs='-name "*.stackdump"'
+ for corefile in $(find "$directory" -type f -name "*.stackdump") ; do
+ binary=`basename "$corefile" .stackdump`
+ echo;echo;
+ echo "dumping ${corefile} for ${binary}"
+ awk '/^0/{print $2}' $corefile |addr2line -f -i -e ./src/backend/postgres.exe
+ done
+ exit 0
+ ;;
+
*)
echo "unsupported operating system ${os}"
exit 1
- ;;
+ ;;
esac
first=1
--
2.25.1
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
@ 2022-10-11 18:23 ` Andres Freund <[email protected]>
2022-10-11 18:46 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Andres Freund @ 2022-10-11 18:23 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; +Cc: Justin Pryzby <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi,
On 2022-10-07 20:00:56 +0300, Melih Mutlu wrote:
> Attached patch is the adjusted version to build with meson.
Thanks!
> diff --git a/.cirrus.yml b/.cirrus.yml
> index 9f2282471a..7e6ebdf7b7 100644
> --- a/.cirrus.yml
> +++ b/.cirrus.yml
> @@ -35,6 +35,7 @@ on_failure_ac: &on_failure_ac
> - "**/*.log"
> - "**/*.diffs"
> - "**/regress_log_*"
> + - "**/*.stackdump"
> type: text/plain
I think it might be easier to just set MSYS=winjitdebug
https://www.msys2.org/wiki/JIT-Debugging/#native-windows-processes-started-from-msys2
and then rely on the existing windows crash reporting stuff.
> setup_additional_packages_script: |
> REM choco install -y --no-progress ...
> -
> # Use /DEBUG:FASTLINK to avoid high memory usage during linking
> configure_script: |
You removed a bunch of newlines here and nearby - I assume that wasn't
intentional?
> + mingw_info_script:
> + - C:\msys64\usr\bin\dash.exe -lc "where gcc"
> + - C:\msys64\usr\bin\dash.exe -lc "gcc --version"
> + - C:\msys64\usr\bin\dash.exe -lc "where perl"
> + - C:\msys64\usr\bin\dash.exe -lc "perl --version"
> +
> + configure_script:
> + - C:\msys64\usr\bin\dash.exe -lc "cd %CIRRUS_WORKING_DIR% &&
> + meson setup --buildtype debug -Dcassert=true -Db_pch=true -DTAR=%TAR% build"
There's no need to use dash anymore, the amount of shell script run is
minimal.
> + build_script:
> + - C:\msys64\usr\bin\dash.exe -lc "cd %CIRRUS_WORKING_DIR% && ninja -C %BUILD_DIR%"
> + upload_caches: ccache
> +
> + test_world_script:
> + - C:\msys64\usr\bin\dash.exe -lc "cd %CIRRUS_WORKING_DIR% && meson test --print-errorlogs --num-processes %TEST_JOBS% -C %BUILD_DIR%"
> +
I think the "cd"s here are superfluous given the ninja -C %BUILD_DIR% etc.
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
@ 2022-10-11 18:46 ` Andres Freund <[email protected]>
2022-10-18 09:49 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Andres Freund @ 2022-10-11 18:46 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; +Cc: Justin Pryzby <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi,
On 2022-10-11 11:23:36 -0700, Andres Freund wrote:
> > + build_script:
> > + - C:\msys64\usr\bin\dash.exe -lc "cd %CIRRUS_WORKING_DIR% && ninja -C %BUILD_DIR%"
> > + upload_caches: ccache
Only remembered that just after sending my email: When using b_pch=true (which
saves a lot of time on mingw) ccache won't cache much (IIRC just the pch files
themselves) unless you do something like
export CCACHE_SLOPPINESS=pch_defines,time_macros
$ ccache -z -C
Clearing... 100.0% [==============================================================================]
$ ninja clean && ccache -z && CCACHE_SLOPPINESS= time ninja src/bin/pg_test_fsync/pg_test_fsync.exe && ccache -s
[2/2] Cleaning
Cleaning... 200 files.
Statistics zeroed
[124/124] Linking target src/bin/pg_test_fsync/pg_test_fsync.exe
0.00user 0.01system 0:07.60elapsed 0%CPU (0avgtext+0avgdata 4936maxresident)k
0inputs+0outputs (1314major+0minor)pagefaults 0swaps
Summary:
Hits: 0 / 1 (0.00 %)
Direct: 0 / 1 (0.00 %)
Preprocessed: 0 / 1 (0.00 %)
Misses: 1
Direct: 1
Preprocessed: 1
Uncacheable: 110
As you can see, most of the files are determined to be unachable. The build
took 7.6s.
$ ninja clean && ccache -z && CCACHE_SLOPPINESS=pch_defines,time_macros time ninja src/bin/pg_test_fsync/pg_test_fsync.exe && ccache -s
[2/2] Cleaning
Cleaning... 200 files.
Statistics zeroed
[124/124] Linking target src/bin/pg_test_fsync/pg_test_fsync.exe
0.00user 0.01system 0:09.91elapsed 0%CPU (0avgtext+0avgdata 4936maxresident)k
0inputs+0outputs (1313major+0minor)pagefaults 0swaps
Summary:
Hits: 0 / 111 (0.00 %)
Direct: 0 / 111 (0.00 %)
Preprocessed: 0 / 111 (0.00 %)
Misses: 111
Direct: 111
Preprocessed: 111
Primary storage:
Hits: 0 / 216 (0.00 %)
Misses: 216
Cache size (GB): 0.05 / 5.00 (0.98 %)
Files are cachable, but are cache misses (because we cleaned the cache
above). The build took 9.91s.
$ ninja clean && ccache -z && CCACHE_SLOPPINESS=pch_defines,time_macros time ninja src/bin/pg_test_fsync/pg_test_fsync.exe && ccache -s
[2/2] Cleaning
Cleaning... 200 files.
Statistics zeroed
[124/124] Linking target src/bin/pg_test_fsync/pg_test_fsync.exe
0.00user 0.01system 0:02.40elapsed 0%CPU (0avgtext+0avgdata 4936maxresident)k
0inputs+0outputs (1314major+0minor)pagefaults 0swaps
Summary:
Hits: 111 / 111 (100.0 %)
Direct: 111 / 111 (100.0 %)
Preprocessed: 0 / 0
Misses: 0
Direct: 0
Preprocessed: 0
Primary storage:
Hits: 222 / 222 (100.0 %)
Misses: 0
Cache size (GB): 0.05 / 5.00 (0.98 %)
Files are cachable, and hit the cache. The build takes 2.4s.
Using ccache's depend mode reduce the cache-miss case to 7.51s and the cache
hit case to 1.75s. So we should likely export CCACHE_DEPEND=1 as well.
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-11 18:46 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
@ 2022-10-18 09:49 ` Melih Mutlu <[email protected]>
2022-10-18 12:37 ` Re: Mingw task for Cirrus CI Nazir Bilal Yavuz <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Melih Mutlu @ 2022-10-18 09:49 UTC (permalink / raw)
To: Andres Freund <[email protected]>; +Cc: Justin Pryzby <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi Andres,
Andres Freund <[email protected]>, 11 Eki 2022 Sal, 21:23 tarihinde ÅŸunu
yazdı:
> I think it might be easier to just set MSYS=winjitdebug
>
> https://www.msys2.org/wiki/JIT-Debugging/#native-windows-processes-started-from-msys2
> and then rely on the existing windows crash reporting stuff.
>
Done.
> You removed a bunch of newlines here and nearby - I assume that wasn't
> intentional?
>
Yes, that was my mistake. Thanks for pointing it out. Fixed.
> There's no need to use dash anymore, the amount of shell script run is
> minimal.
>
Switched back to bash.
> I think the "cd"s here are superfluous given the ninja -C %BUILD_DIR% etc.
>
You're right. Those were needed when it was building with autoconf. Not
anymore. Removed.
Only remembered that just after sending my email: When using b_pch=true
> (which
> saves a lot of time on mingw) ccache won't cache much (IIRC just the pch
> files
> themselves) unless you do something like
> export CCACHE_SLOPPINESS=pch_defines,time_macros
>
Added CCACHE_SLOPPINESS and CCACHE_SLOPPINESS variables.
You can find the updated patch attached.
Best,
Melih
Attachments:
[application/octet-stream] v7-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch (5.9K, ../../CAGPVpCQffKjLGrVtQbckA_VrvFj0Hsiu5gobyGFvcozViPC+kw@mail.gmail.com/3-v7-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch)
download | inline diff:
From 00928e9a8df84fc878c1643ca029bf0dce3cd529 Mon Sep 17 00:00:00 2001
From: Melih Mutlu <[email protected]>
Date: Fri, 2 Sep 2022 23:10:02 +0300
Subject: [PATCH] Added Windows with MinGW environment in Cirrus CI
CI task on Windows Server with MinGW has been added as optional.
Note that trigger_type line for MinGW task has to be uncommented before
merge
---
.cirrus.yml | 96 ++++++++++++++++++++++++++-------
src/tools/ci/cores_backtrace.sh | 17 +++++-
2 files changed, 92 insertions(+), 21 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
index 9f2282471a..eae6803970 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -393,24 +393,37 @@ task:
cores_script: src/tools/ci/cores_backtrace.sh macos "${HOME}/cores"
+WINDOWS_ENVIRONMENT_BASE: &WINDOWS_ENVIRONMENT_BASE
+ env:
+ # Half the allowed per-user CPU cores
+ CPUS: 4
+ TEST_JOBS: 4 # wild guess, data based value welcome
+
+ # The default working dir is in a directory msbuild complains about
+ CIRRUS_WORKING_DIR: "c:/cirrus"
+
+ PG_REGRESS_SOCK_DIR: "c:/cirrus/"
+
+ # Avoids port conflicts between concurrent tap test runs
+ PG_TEST_USE_UNIX_SOCKETS: 1
+
+ # git's tar doesn't deal with drive letters, see
+ # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
+ TAR: "c:/windows/system32/tar.exe"
+
+ sysinfo_script: |
+ chcp
+ systeminfo
+ powershell -Command get-psdrive -psprovider filesystem
+ set
+
task:
name: Windows - Server 2019, VS 2019 - Meson & ninja
+ << : *WINDOWS_ENVIRONMENT_BASE
env:
- # Half the allowed per-user CPU cores
- CPUS: 4
- TEST_JOBS: 8 # wild guess, data based value welcome
-
- # The default cirrus working dir is in a directory msbuild complains about
- CIRRUS_WORKING_DIR: "c:/cirrus"
# Avoid re-installing over and over
NO_TEMP_INSTALL: 1
- # git's tar doesn't deal with drive letters, see
- # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
- TAR: "c:/windows/system32/tar.exe"
- # Avoids port conflicts between concurrent tap test runs
- PG_TEST_USE_UNIX_SOCKETS: 1
- PG_REGRESS_SOCK_DIR: "c:/cirrus/"
# startcreate_script starts a postgres instance that we don't want to get
# killed at the end of that script (it's stopped in stop_script). Can't
@@ -435,19 +448,13 @@ task:
cpu: $CPUS
memory: 4G
- sysinfo_script: |
- chcp
- systeminfo
- powershell -Command get-psdrive -psprovider filesystem
- set
-
setup_additional_packages_script: |
REM choco install -y --no-progress ...
# Use /DEBUG:FASTLINK to avoid high memory usage during linking
configure_script: |
vcvarsall x64
- meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Db_pch=true -Dssl=openssl -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build
+ meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Db_pch=true -Dssl=openssl -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build
build_script: |
vcvarsall x64
@@ -463,6 +470,57 @@ task:
path: "crashlog-*.txt"
type: text/plain
+task:
+ << : *WINDOWS_ENVIRONMENT_BASE
+ name: Windows - Server 2019, MinGW64 - Meson
+
+ # This task needs to be triggered manually on Cirrus CI.
+ # Otherwise it will not run and be shown as paused
+ # XXX: Below line needs to be uncommented before merge. It's commented for now so that cfbot can run it
+ #trigger_type: manual
+
+ windows_container:
+ image: $CONTAINER_REPO/windows_ci_mingw64:latest
+ cpu: $CPUS
+ memory: 4G
+
+ env:
+ CCACHE_DIR: C:/msys64/ccache
+ BUILD_DIR: "%CIRRUS_WORKING_DIR%/build"
+ PYTHONHOME: C:/msys64/ucrt64
+ MSYS: winjitdebug
+ CCACHE_SLOPPINESS: pch_defines,time_macros
+ CCACHE_DEPEND: 1
+
+ ccache_cache:
+ folder: ${CCACHE_DIR}
+
+ setup_additional_packages_script: |
+ REM C:\msys64\usr\bin\pacman.exe -S --noconfirm ...
+
+ mingw_info_script:
+ - C:\msys64\usr\bin\bash.exe -lc "where gcc"
+ - C:\msys64\usr\bin\bash.exe -lc "gcc --version"
+ - C:\msys64\usr\bin\bash.exe -lc "where perl"
+ - C:\msys64\usr\bin\bash.exe -lc "perl --version"
+
+ configure_script:
+ - C:\msys64\usr\bin\bash.exe -lc "cd %CIRRUS_WORKING_DIR% &&
+ meson setup --buildtype debug -Dcassert=true -Db_pch=true -DTAR=%TAR% build"
+
+ build_script:
+ - C:\msys64\usr\bin\bash.exe -lc "cd %CIRRUS_WORKING_DIR% && ninja -C %BUILD_DIR%"
+
+ upload_caches: ccache
+
+ test_world_script:
+ - C:\msys64\usr\bin\bash.exe -lc "meson test --print-errorlogs --num-processes %TEST_JOBS% -C %BUILD_DIR%"
+
+ on_failure:
+ <<: *on_failure_meson
+ cores_script:
+ - C:\msys64\usr\bin\bash.exe -lc "cd %BUILD_DIR% src/tools/ci/cores_backtrace.sh msys %BUILD_DIR%/tmp_install"
+
task:
name: CompilerWarnings
diff --git a/src/tools/ci/cores_backtrace.sh b/src/tools/ci/cores_backtrace.sh
index 28d3cecfc6..93e90f284e 100755
--- a/src/tools/ci/cores_backtrace.sh
+++ b/src/tools/ci/cores_backtrace.sh
@@ -10,11 +10,24 @@ directory=$2
case $os in
freebsd|linux|macos)
- ;;
+ ;;
+
+ msys)
+ # XXX Evidently I don't know how to write two arguments here without pathname expansion later, other than eval.
+ #findargs='-name "*.stackdump"'
+ for corefile in $(find "$directory" -type f -name "*.stackdump") ; do
+ binary=`basename "$corefile" .stackdump`
+ echo;echo;
+ echo "dumping ${corefile} for ${binary}"
+ awk '/^0/{print $2}' $corefile |addr2line -f -i -e ./src/backend/postgres.exe
+ done
+ exit 0
+ ;;
+
*)
echo "unsupported operating system ${os}"
exit 1
- ;;
+ ;;
esac
first=1
--
2.25.1
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-11 18:46 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-18 09:49 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
@ 2022-10-18 12:37 ` Nazir Bilal Yavuz <[email protected]>
2022-10-18 21:23 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Nazir Bilal Yavuz @ 2022-10-18 12:37 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; Andres Freund <[email protected]>; +Cc: Justin Pryzby <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi,
Thanks for the patch!
On 10/18/22 12:49, Melih Mutlu wrote:
>
>
> You can find the updated patch attached.
>
Does it makes sense to set these at 'Windows - Server 2019, MinGW64 -
Meson' task:
env:
   ...
   CHERE_INVOKING: 1
   BASH_EXE: C:\msys64\usr\bin\bash.exe
'CHERE_INVOKING: 1' will cause bash.exe to start from current working
directory(%CIRRUS_WORKING_DIR%).
In this way, there is no need for
'cd %CIRRUS_WORKING_DIR%' when using bash.exe,
also no need for 'BUILD_DIR' environment variable.
i.e:
configure_script: |
   %BASH_EXE% -lc "meson setup --buildtype debug -Dcassert=true
-Db_pch=true -DTAR=%TAR% build"
will work.
Regards,
Nazir Bilal Yavuz
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-11 18:46 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-18 09:49 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-18 12:37 ` Re: Mingw task for Cirrus CI Nazir Bilal Yavuz <[email protected]>
@ 2022-10-18 21:23 ` Melih Mutlu <[email protected]>
2022-10-19 03:19 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Melih Mutlu @ 2022-10-18 21:23 UTC (permalink / raw)
To: Nazir Bilal Yavuz <[email protected]>; +Cc: Andres Freund <[email protected]>; Justin Pryzby <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi Bilal,
Nazir Bilal Yavuz <[email protected]>, 18 Eki 2022 Sal, 15:37 tarihinde
şunu yazdı:
> env:
> ...
> CHERE_INVOKING: 1
> BASH_EXE: C:\msys64\usr\bin\bash.exe
>
> 'CHERE_INVOKING: 1' will cause bash.exe to start from current working
> directory(%CIRRUS_WORKING_DIR%).
>
> In this way, there is no need for
> 'cd %CIRRUS_WORKING_DIR%' when using bash.exe,
> also no need for 'BUILD_DIR' environment variable.
>
Right, setting CHERE_INVOKING and removing all cd's work and look better.
Thanks for the suggestion.
Here's the updated patch.
Best,
Melih
Attachments:
[application/octet-stream] v8-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch (5.8K, ../../CAGPVpCT0EyMsOuRLyCBV8Y9ta-wi9PXxVQ7Uw4uQKSOAVcvUpA@mail.gmail.com/3-v8-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch)
download | inline diff:
From fa1492dc3f0516aa4e2f6c271ca769d0823527b9 Mon Sep 17 00:00:00 2001
From: Melih Mutlu <[email protected]>
Date: Fri, 2 Sep 2022 23:10:02 +0300
Subject: [PATCH] Added Windows with MinGW environment in Cirrus CI
CI task on Windows Server with MinGW has been added as optional.
Note that trigger_type line for MinGW task has to be uncommented before
merge
---
.cirrus.yml | 98 ++++++++++++++++++++++++++-------
src/tools/ci/cores_backtrace.sh | 17 +++++-
2 files changed, 94 insertions(+), 21 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
index 9f2282471a..07b4c5e268 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -393,24 +393,37 @@ task:
cores_script: src/tools/ci/cores_backtrace.sh macos "${HOME}/cores"
+WINDOWS_ENVIRONMENT_BASE: &WINDOWS_ENVIRONMENT_BASE
+ env:
+ # Half the allowed per-user CPU cores
+ CPUS: 4
+ TEST_JOBS: 4 # wild guess, data based value welcome
+
+ # The default working dir is in a directory msbuild complains about
+ CIRRUS_WORKING_DIR: "c:/cirrus"
+
+ PG_REGRESS_SOCK_DIR: "c:/cirrus/"
+
+ # Avoids port conflicts between concurrent tap test runs
+ PG_TEST_USE_UNIX_SOCKETS: 1
+
+ # git's tar doesn't deal with drive letters, see
+ # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
+ TAR: "c:/windows/system32/tar.exe"
+
+ sysinfo_script: |
+ chcp
+ systeminfo
+ powershell -Command get-psdrive -psprovider filesystem
+ set
+
task:
name: Windows - Server 2019, VS 2019 - Meson & ninja
+ << : *WINDOWS_ENVIRONMENT_BASE
env:
- # Half the allowed per-user CPU cores
- CPUS: 4
- TEST_JOBS: 8 # wild guess, data based value welcome
-
- # The default cirrus working dir is in a directory msbuild complains about
- CIRRUS_WORKING_DIR: "c:/cirrus"
# Avoid re-installing over and over
NO_TEMP_INSTALL: 1
- # git's tar doesn't deal with drive letters, see
- # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
- TAR: "c:/windows/system32/tar.exe"
- # Avoids port conflicts between concurrent tap test runs
- PG_TEST_USE_UNIX_SOCKETS: 1
- PG_REGRESS_SOCK_DIR: "c:/cirrus/"
# startcreate_script starts a postgres instance that we don't want to get
# killed at the end of that script (it's stopped in stop_script). Can't
@@ -435,19 +448,13 @@ task:
cpu: $CPUS
memory: 4G
- sysinfo_script: |
- chcp
- systeminfo
- powershell -Command get-psdrive -psprovider filesystem
- set
-
setup_additional_packages_script: |
REM choco install -y --no-progress ...
# Use /DEBUG:FASTLINK to avoid high memory usage during linking
configure_script: |
vcvarsall x64
- meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Db_pch=true -Dssl=openssl -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build
+ meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Db_pch=true -Dssl=openssl -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build
build_script: |
vcvarsall x64
@@ -463,6 +470,59 @@ task:
path: "crashlog-*.txt"
type: text/plain
+task:
+ << : *WINDOWS_ENVIRONMENT_BASE
+ name: Windows - Server 2019, MinGW64 - Meson
+
+ # This task needs to be triggered manually on Cirrus CI.
+ # Otherwise it will not run and be shown as paused
+ # XXX: Below line needs to be uncommented before merge. It's commented for now so that cfbot can run it
+ #trigger_type: manual
+
+ windows_container:
+ image: $CONTAINER_REPO/windows_ci_mingw64:latest
+ cpu: $CPUS
+ memory: 4G
+
+ env:
+ CCACHE_DIR: C:/msys64/ccache
+ BUILD_DIR: "%CIRRUS_WORKING_DIR%/build"
+ PYTHONHOME: C:/msys64/ucrt64
+ MSYS: winjitdebug
+ CCACHE_SLOPPINESS: pch_defines,time_macros
+ CCACHE_DEPEND: 1
+ # Start bash in current working directory
+ CHERE_INVOKING: 1
+ BASH_EXE: C:\msys64\usr\bin\bash.exe
+
+ ccache_cache:
+ folder: ${CCACHE_DIR}
+
+ setup_additional_packages_script: |
+ REM C:\msys64\usr\bin\pacman.exe -S --noconfirm ...
+
+ mingw_info_script: |
+ %BASH_EXE% -lc "where gcc"
+ %BASH_EXE% -lc "gcc --version"
+ %BASH_EXE% -lc "where perl"
+ %BASH_EXE% -lc "perl --version"
+
+ configure_script: |
+ %BASH_EXE% -lc "meson setup --buildtype debug -Dcassert=true -Db_pch=true -DTAR=%TAR% build"
+
+ build_script: |
+ %BASH_EXE% -lc "cd %CIRRUS_WORKING_DIR% && ninja -C build"
+
+ upload_caches: ccache
+
+ test_world_script: |
+ %BASH_EXE% -lc "meson test --print-errorlogs --num-processes %TEST_JOBS% -C build"
+
+ on_failure:
+ <<: *on_failure_meson
+ cores_script: |
+ %BASH_EXE% -lc "cd build src/tools/ci/cores_backtrace.sh msys build/tmp_install"
+
task:
name: CompilerWarnings
diff --git a/src/tools/ci/cores_backtrace.sh b/src/tools/ci/cores_backtrace.sh
index 28d3cecfc6..93e90f284e 100755
--- a/src/tools/ci/cores_backtrace.sh
+++ b/src/tools/ci/cores_backtrace.sh
@@ -10,11 +10,24 @@ directory=$2
case $os in
freebsd|linux|macos)
- ;;
+ ;;
+
+ msys)
+ # XXX Evidently I don't know how to write two arguments here without pathname expansion later, other than eval.
+ #findargs='-name "*.stackdump"'
+ for corefile in $(find "$directory" -type f -name "*.stackdump") ; do
+ binary=`basename "$corefile" .stackdump`
+ echo;echo;
+ echo "dumping ${corefile} for ${binary}"
+ awk '/^0/{print $2}' $corefile |addr2line -f -i -e ./src/backend/postgres.exe
+ done
+ exit 0
+ ;;
+
*)
echo "unsupported operating system ${os}"
exit 1
- ;;
+ ;;
esac
first=1
--
2.25.1
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-11 18:46 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-18 09:49 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-18 12:37 ` Re: Mingw task for Cirrus CI Nazir Bilal Yavuz <[email protected]>
2022-10-18 21:23 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
@ 2022-10-19 03:19 ` Andres Freund <[email protected]>
2022-10-19 14:59 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Andres Freund @ 2022-10-19 03:19 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; +Cc: Nazir Bilal Yavuz <[email protected]>; Justin Pryzby <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi,
On 2022-10-19 00:23:46 +0300, Melih Mutlu wrote:
> Right, setting CHERE_INVOKING and removing all cd's work and look better.
> Thanks for the suggestion.
Agreed, good idea.
> +
> + env:
> + CCACHE_DIR: C:/msys64/ccache
It's a bit odd to separate the CCACHE_* variables from each other
(e.g. BUILD_DIR is inbetween them)...
> + BUILD_DIR: "%CIRRUS_WORKING_DIR%/build"
> + PYTHONHOME: C:/msys64/ucrt64
Perhaps add a comment explaining that otherwise plpython tests fail?
> + MSYS: winjitdebug
With this src/tools/ci/cores_backtrace.sh shouldn't need to be modified
anymore afaict?
> + CCACHE_SLOPPINESS: pch_defines,time_macros
> + CCACHE_DEPEND: 1
I experimented a bit and it looks like ccache doesn't yet quite work in CI,
but only because the ccache needs to be larger. Looks like we need about
~400MB.
A fully cached build is ~2min
> + configure_script: |
> + %BASH_EXE% -lc "meson setup --buildtype debug -Dcassert=true -Db_pch=true -DTAR=%TAR% build"
With these buildflags the tests take about 23min37s. Using -Og I saw 18min26s,
with -O1 18m57s and with -O2 18m38s. There's obviously a fair bit of variance,
but it looks like we should use -Og. I think we considered that making compile
times too bad before, but it seems kinda ok now, with 11min. -O2 is 13min,
without providing further benefits.
I'd replace --buildtype debug with -Ddebug=true -Doptimization=g.
> + build_script: |
> + %BASH_EXE% -lc "cd %CIRRUS_WORKING_DIR% && ninja -C build"
>
Why do we still need this cd?
> + upload_caches: ccache
> +
> + test_world_script: |
> + %BASH_EXE% -lc "meson test --print-errorlogs --num-processes %TEST_JOBS% -C build"
Seems like this could use %MTEST_ARGS%?
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-11 18:46 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-18 09:49 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-18 12:37 ` Re: Mingw task for Cirrus CI Nazir Bilal Yavuz <[email protected]>
2022-10-18 21:23 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-19 03:19 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
@ 2022-10-19 14:59 ` Melih Mutlu <[email protected]>
2022-10-19 16:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Melih Mutlu @ 2022-10-19 14:59 UTC (permalink / raw)
To: Andres Freund <[email protected]>; +Cc: Nazir Bilal Yavuz <[email protected]>; Justin Pryzby <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi,
Andres Freund <[email protected]>, 19 Eki 2022 Çar, 06:19 tarihinde şunu
yazdı:
> It's a bit odd to separate the CCACHE_* variables from each other
> (e.g. BUILD_DIR is inbetween them)...
>
> Perhaps add a comment explaining that otherwise plpython tests fail?
>
With this src/tools/ci/cores_backtrace.sh shouldn't need to be modified
> anymore afaict?
>
> I'd replace --buildtype debug with -Ddebug=true -Doptimization=g.
>
Seems like this could use %MTEST_ARGS%?
All the things you mentioned above are done.
> > + CCACHE_SLOPPINESS: pch_defines,time_macros
> > + CCACHE_DEPEND: 1
>
> I experimented a bit and it looks like ccache doesn't yet quite work in CI,
> but only because the ccache needs to be larger. Looks like we need about
> ~400MB.
>
> A fully cached build is ~2min
>
Then I should increase CCACHE_MAXSIZE, right? Made it 500MB for MinGW.
Sharing the updated version of the patch.
Thanks,
Melih
Attachments:
[application/octet-stream] v9-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch (4.9K, ../../CAGPVpCRLj23LCftUsJVQ1equ0FTbhu8sjL7sckVXS6Wcy5OA1Q@mail.gmail.com/3-v9-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch)
download | inline diff:
From e1ec309f78964d0f9fdceb3f1e55c436792f09fd Mon Sep 17 00:00:00 2001
From: Melih Mutlu <[email protected]>
Date: Fri, 2 Sep 2022 23:10:02 +0300
Subject: [PATCH] Added Windows with MinGW environment in Cirrus CI
CI task on Windows Server with MinGW has been added as optional.
Note that trigger_type line for MinGW task has to be uncommented before
merge
---
.cirrus.yml | 99 +++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 80 insertions(+), 19 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
index 9f2282471a..c549675fe7 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -393,24 +393,37 @@ task:
cores_script: src/tools/ci/cores_backtrace.sh macos "${HOME}/cores"
+WINDOWS_ENVIRONMENT_BASE: &WINDOWS_ENVIRONMENT_BASE
+ env:
+ # Half the allowed per-user CPU cores
+ CPUS: 4
+ TEST_JOBS: 4 # wild guess, data based value welcome
+
+ # The default working dir is in a directory msbuild complains about
+ CIRRUS_WORKING_DIR: "c:/cirrus"
+
+ PG_REGRESS_SOCK_DIR: "c:/cirrus/"
+
+ # Avoids port conflicts between concurrent tap test runs
+ PG_TEST_USE_UNIX_SOCKETS: 1
+
+ # git's tar doesn't deal with drive letters, see
+ # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
+ TAR: "c:/windows/system32/tar.exe"
+
+ sysinfo_script: |
+ chcp
+ systeminfo
+ powershell -Command get-psdrive -psprovider filesystem
+ set
+
task:
name: Windows - Server 2019, VS 2019 - Meson & ninja
+ << : *WINDOWS_ENVIRONMENT_BASE
env:
- # Half the allowed per-user CPU cores
- CPUS: 4
- TEST_JOBS: 8 # wild guess, data based value welcome
-
- # The default cirrus working dir is in a directory msbuild complains about
- CIRRUS_WORKING_DIR: "c:/cirrus"
# Avoid re-installing over and over
NO_TEMP_INSTALL: 1
- # git's tar doesn't deal with drive letters, see
- # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
- TAR: "c:/windows/system32/tar.exe"
- # Avoids port conflicts between concurrent tap test runs
- PG_TEST_USE_UNIX_SOCKETS: 1
- PG_REGRESS_SOCK_DIR: "c:/cirrus/"
# startcreate_script starts a postgres instance that we don't want to get
# killed at the end of that script (it's stopped in stop_script). Can't
@@ -435,19 +448,13 @@ task:
cpu: $CPUS
memory: 4G
- sysinfo_script: |
- chcp
- systeminfo
- powershell -Command get-psdrive -psprovider filesystem
- set
-
setup_additional_packages_script: |
REM choco install -y --no-progress ...
# Use /DEBUG:FASTLINK to avoid high memory usage during linking
configure_script: |
vcvarsall x64
- meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Db_pch=true -Dssl=openssl -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build
+ meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Db_pch=true -Dssl=openssl -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build
build_script: |
vcvarsall x64
@@ -463,6 +470,60 @@ task:
path: "crashlog-*.txt"
type: text/plain
+task:
+ << : *WINDOWS_ENVIRONMENT_BASE
+ name: Windows - Server 2019, MinGW64 - Meson
+
+ # This task needs to be triggered manually on Cirrus CI.
+ # Otherwise it will not run and be shown as paused
+ # XXX: Below line needs to be uncommented before merge. It's commented for now so that cfbot can run it
+ #trigger_type: manual
+
+ windows_container:
+ image: $CONTAINER_REPO/windows_ci_mingw64:latest
+ cpu: $CPUS
+ memory: 4G
+
+ env:
+ CCACHE_DIR: C:/msys64/ccache
+ CCACHE_MAXSIZE: "500M"
+ CCACHE_SLOPPINESS: pch_defines,time_macros
+ CCACHE_DEPEND: 1
+ # Need this for plpython tests to pass
+ PYTHONHOME: C:/msys64/ucrt64
+ MSYS: winjitdebug
+ # Start bash in current working directory
+ CHERE_INVOKING: 1
+ BASH_EXE: C:\msys64\usr\bin\bash.exe
+
+ ccache_cache:
+ folder: ${CCACHE_DIR}
+
+ setup_additional_packages_script: |
+ REM C:\msys64\usr\bin\pacman.exe -S --noconfirm ...
+
+ mingw_info_script: |
+ %BASH_EXE% -lc "where gcc"
+ %BASH_EXE% -lc "gcc --version"
+ %BASH_EXE% -lc "where perl"
+ %BASH_EXE% -lc "perl --version"
+
+ configure_script: |
+ %BASH_EXE% -lc "meson setup -Ddebug=true -Doptimization=g -Dcassert=true -Db_pch=true -DTAR=%TAR% build"
+
+ build_script: |
+ %BASH_EXE% -lc "ninja -C build"
+
+ upload_caches: ccache
+
+ test_world_script: |
+ %BASH_EXE% -lc "meson test %MTEST_ARGS% --num-processes %TEST_JOBS%"
+
+ on_failure:
+ <<: *on_failure_meson
+ cores_script: |
+ %BASH_EXE% -lc "cd build src/tools/ci/cores_backtrace.sh msys build/tmp_install"
+
task:
name: CompilerWarnings
--
2.25.1
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-11 18:46 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-18 09:49 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-18 12:37 ` Re: Mingw task for Cirrus CI Nazir Bilal Yavuz <[email protected]>
2022-10-18 21:23 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-19 03:19 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-19 14:59 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
@ 2022-10-19 16:23 ` Andres Freund <[email protected]>
2022-10-24 11:13 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Andres Freund @ 2022-10-19 16:23 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; +Cc: Nazir Bilal Yavuz <[email protected]>; Justin Pryzby <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi,
On 2022-10-19 17:59:22 +0300, Melih Mutlu wrote:
> All the things you mentioned above are done.
> Then I should increase CCACHE_MAXSIZE, right? Made it 500MB for MinGW.
Yes.
> +
> + on_failure:
> + <<: *on_failure_meson
> + cores_script: |
> + %BASH_EXE% -lc "cd build src/tools/ci/cores_backtrace.sh msys build/tmp_install"
> +
This is wrong - it should just archive the same files that the current windows
task does.
Other than that, I think this is basically ready?
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-11 18:46 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-18 09:49 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-18 12:37 ` Re: Mingw task for Cirrus CI Nazir Bilal Yavuz <[email protected]>
2022-10-18 21:23 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-19 03:19 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-19 14:59 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-19 16:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
@ 2022-10-24 11:13 ` Melih Mutlu <[email protected]>
2022-11-18 00:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Melih Mutlu @ 2022-10-24 11:13 UTC (permalink / raw)
To: Andres Freund <[email protected]>; +Cc: Nazir Bilal Yavuz <[email protected]>; Justin Pryzby <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi,
> > +
> > + on_failure:
> > + <<: *on_failure_meson
> > + cores_script: |
> > + %BASH_EXE% -lc "cd build src/tools/ci/cores_backtrace.sh msys
> build/tmp_install"
> > +
>
> This is wrong - it should just archive the same files that the current
> windows
> task does.
>
Changed it with the on_failure from the other windows task.
> Other than that, I think this is basically ready?
>
If you say so, then I think it's ready.
Best,
Melih
Attachments:
[application/octet-stream] v10-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch (4.8K, ../../CAGPVpCQo_E2qFbazHY5ZNZtHLGf+MN9d_EcbOyd_ownyncYXDQ@mail.gmail.com/3-v10-0001-Added-Windows-with-MinGW-environment-in-Cirrus-CI.patch)
download | inline diff:
From e56687002f2d46f717d0c9dedf0def0541a605d8 Mon Sep 17 00:00:00 2001
From: Melih Mutlu <[email protected]>
Date: Fri, 2 Sep 2022 23:10:02 +0300
Subject: [PATCH] Added Windows with MinGW environment in Cirrus CI
CI task on Windows Server with MinGW has been added as optional.
Note that trigger_type line for MinGW task has to be uncommented before
merge
---
.cirrus.yml | 100 ++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 81 insertions(+), 19 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
index 9f2282471a..b3bea5ceac 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -393,24 +393,37 @@ task:
cores_script: src/tools/ci/cores_backtrace.sh macos "${HOME}/cores"
+WINDOWS_ENVIRONMENT_BASE: &WINDOWS_ENVIRONMENT_BASE
+ env:
+ # Half the allowed per-user CPU cores
+ CPUS: 4
+ TEST_JOBS: 4 # wild guess, data based value welcome
+
+ # The default working dir is in a directory msbuild complains about
+ CIRRUS_WORKING_DIR: "c:/cirrus"
+
+ PG_REGRESS_SOCK_DIR: "c:/cirrus/"
+
+ # Avoids port conflicts between concurrent tap test runs
+ PG_TEST_USE_UNIX_SOCKETS: 1
+
+ # git's tar doesn't deal with drive letters, see
+ # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
+ TAR: "c:/windows/system32/tar.exe"
+
+ sysinfo_script: |
+ chcp
+ systeminfo
+ powershell -Command get-psdrive -psprovider filesystem
+ set
+
task:
name: Windows - Server 2019, VS 2019 - Meson & ninja
+ << : *WINDOWS_ENVIRONMENT_BASE
env:
- # Half the allowed per-user CPU cores
- CPUS: 4
- TEST_JOBS: 8 # wild guess, data based value welcome
-
- # The default cirrus working dir is in a directory msbuild complains about
- CIRRUS_WORKING_DIR: "c:/cirrus"
# Avoid re-installing over and over
NO_TEMP_INSTALL: 1
- # git's tar doesn't deal with drive letters, see
- # https://postgr.es/m/b6782dc3-a7b0-ed56-175f-f8f54cb08d67%40dunslane.net
- TAR: "c:/windows/system32/tar.exe"
- # Avoids port conflicts between concurrent tap test runs
- PG_TEST_USE_UNIX_SOCKETS: 1
- PG_REGRESS_SOCK_DIR: "c:/cirrus/"
# startcreate_script starts a postgres instance that we don't want to get
# killed at the end of that script (it's stopped in stop_script). Can't
@@ -435,19 +448,13 @@ task:
cpu: $CPUS
memory: 4G
- sysinfo_script: |
- chcp
- systeminfo
- powershell -Command get-psdrive -psprovider filesystem
- set
-
setup_additional_packages_script: |
REM choco install -y --no-progress ...
# Use /DEBUG:FASTLINK to avoid high memory usage during linking
configure_script: |
vcvarsall x64
- meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Db_pch=true -Dssl=openssl -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=c:/windows/system32/tar.exe -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build
+ meson setup --backend ninja --buildtype debug -Dc_link_args=/DEBUG:FASTLINK -Dcassert=true -Db_pch=true -Dssl=openssl -Dextra_lib_dirs=c:\openssl\1.1\lib -Dextra_include_dirs=c:\openssl\1.1\include -DTAR=%TAR% -DPG_TEST_EXTRA="%PG_TEST_EXTRA%" build
build_script: |
vcvarsall x64
@@ -463,6 +470,61 @@ task:
path: "crashlog-*.txt"
type: text/plain
+task:
+ << : *WINDOWS_ENVIRONMENT_BASE
+ name: Windows - Server 2019, MinGW64 - Meson
+
+ # This task needs to be triggered manually on Cirrus CI.
+ # Otherwise it will not run and be shown as paused
+ # XXX: Below line needs to be uncommented before merge. It's commented for now so that cfbot can run it
+ #trigger_type: manual
+
+ windows_container:
+ image: $CONTAINER_REPO/windows_ci_mingw64:latest
+ cpu: $CPUS
+ memory: 4G
+
+ env:
+ CCACHE_DIR: C:/msys64/ccache
+ CCACHE_MAXSIZE: "500M"
+ CCACHE_SLOPPINESS: pch_defines,time_macros
+ CCACHE_DEPEND: 1
+ # Need this for plpython tests to pass
+ PYTHONHOME: C:/msys64/ucrt64
+ MSYS: winjitdebug
+ # Start bash in current working directory
+ CHERE_INVOKING: 1
+ BASH_EXE: C:\msys64\usr\bin\bash.exe
+
+ ccache_cache:
+ folder: ${CCACHE_DIR}
+
+ setup_additional_packages_script: |
+ REM C:\msys64\usr\bin\pacman.exe -S --noconfirm ...
+
+ mingw_info_script: |
+ %BASH_EXE% -lc "where gcc"
+ %BASH_EXE% -lc "gcc --version"
+ %BASH_EXE% -lc "where perl"
+ %BASH_EXE% -lc "perl --version"
+
+ configure_script: |
+ %BASH_EXE% -lc "meson setup -Ddebug=true -Doptimization=g -Dcassert=true -Db_pch=true -DTAR=%TAR% build"
+
+ build_script: |
+ %BASH_EXE% -lc "ninja -C build"
+
+ upload_caches: ccache
+
+ test_world_script: |
+ %BASH_EXE% -lc "meson test %MTEST_ARGS% --num-processes %TEST_JOBS%"
+
+ on_failure:
+ <<: *on_failure_meson
+ crashlog_artifacts:
+ path: "crashlog-*.txt"
+ type: text/plain
+
task:
name: CompilerWarnings
--
2.25.1
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-11 18:46 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-18 09:49 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-18 12:37 ` Re: Mingw task for Cirrus CI Nazir Bilal Yavuz <[email protected]>
2022-10-18 21:23 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-19 03:19 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-19 14:59 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-19 16:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-24 11:13 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
@ 2022-11-18 00:23 ` Andres Freund <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Andres Freund @ 2022-11-18 00:23 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; +Cc: Nazir Bilal Yavuz <[email protected]>; Justin Pryzby <[email protected]>; pgsql-hackers; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>
Hi,
On 2022-10-24 14:13:06 +0300, Melih Mutlu wrote:
> If you say so, then I think it's ready.
I pushed it with a few changes:
- I added an only_if, otherwise the task shows up (without running) even if
you use ci-os-only: linux
- I added -Dnls=disabled - It seemed to add about 1.5min to the cached build
- Inlined the -l into BASH_EXE and renamed it to BASH
- The indentation of WINDOWS_ENVIRONMENT_BASE was irregular, leading to a
larger diff. Some other similar cleanups.
- I added 'mingw' as a ci-os-only choice. Perhaps not the
be-all-end-all. Perhaps we should use windows-{msvc,mingw,cygwin}? Or add
ci-task-only?
I suspect we can make at least -Dssl=openssl work. Perhaps one of the uuid
implementation is available in msys as well?
Currently we end up with:
External libraries
bonjour : NO
bsd_auth : NO
gss : NO
icu : YES 72.1
ldap : YES
libxml : YES 2.10.3
libxslt : YES 1.1.37
llvm : NO
lz4 : YES 1.9.4
nls : NO
pam : NO
plperl : YES
plpython : YES 3.10
pltcl : YES
readline : YES
selinux : NO
ssl : NO
systemd : NO
uuid : NO
zlib : YES 1.2.13
zstd : YES 1.5.2
gss should also work if the is available in the msys repo.
Bonjour is apple only, bsd_auth bsd specific, selinux and systemd linux
specific and pam unixoid specific.
It could also be interesting to see if llvm works, but that might be more
work.
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
@ 2022-09-21 13:18 ` Melih Mutlu <[email protected]>
2022-09-21 14:04 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
1 sibling, 1 reply; 41+ messages in thread
From: Melih Mutlu @ 2022-09-21 13:18 UTC (permalink / raw)
To: Justin Pryzby <[email protected]>; Andres Freund <[email protected]>; +Cc: Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>; pgsql-hackers
Hi hackers,
Justin Pryzby <[email protected]>, 5 Eyl 2022 Pzt, 14:50 tarihinde ÅŸunu
yazdı:
> But cfbot should run the Mingw task for this patch's own commitfest
> entry. But right now (because cfbot doesn't include the original commit
> message/s), it doesn't get run :(
>
I've been thinking about how to make the mingw task run only for this patch
on cfbot and not for others. TBH, I couldn't come up with a nice way to
achieve this.
Does anyone have any suggestions on this?
Andres Freund <[email protected]>, 6 Eyl 2022 Sal, 02:52 tarihinde ÅŸunu
yazdı:
> Hi,
>
> On 2022-09-05 06:50:55 -0500, Justin Pryzby wrote:
> > I saw that but hadn't tracked it down yet. Do you know if the tar
> > failures were from a TAP test added since you first posted the mingw
> > patch, or ??
>
> I think it's that msys now includes tar by default, but not sure.
Seems like msys2 comes with GNU tar now. Previously it was bsd tar under
"/c/Windows/System32/tar.exe " which now we force it to use.
Thanks,
Melih
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: Mingw task for Cirrus CI
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-21 13:18 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
@ 2022-09-21 14:04 ` Andres Freund <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Andres Freund @ 2022-09-21 14:04 UTC (permalink / raw)
To: Melih Mutlu <[email protected]>; +Cc: Justin Pryzby <[email protected]>; Andrew Dunstan <[email protected]>; Thomas Munro <[email protected]>; pgsql-hackers
Hi,
On 2022-09-21 16:18:43 +0300, Melih Mutlu wrote:
> I've been thinking about how to make the mingw task run only for this patch
> on cfbot and not for others. TBH, I couldn't come up with a nice way to
> achieve this.
>
> Does anyone have any suggestions on this?
Add a commented-out trigger-type: manual and note in the commit message that
the committer needs to adjust that piece.
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: what should install-world do when docs are not available?
@ 2023-03-29 16:39 Peter Eisentraut <[email protected]>
2023-03-29 22:41 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Peter Eisentraut @ 2023-03-29 16:39 UTC (permalink / raw)
To: Andres Freund <[email protected]>; +Cc: pgsql-hackers; Justin Pryzby <[email protected]>
On 29.03.23 18:25, Andres Freund wrote:
> On 2023-03-29 18:15:02 +0200, Peter Eisentraut wrote:
>> On 25.03.23 21:14, Andres Freund wrote:
>>> I wonder if, for meson, the best behaviour would be to make 'docs' a feature
>>> set to auto. If docs set to enabled, and the necessary tools are not
>>> available, fail at that time, instead of doing so while building.
>>
>> Makes sense to me.
>>
>>> If that's what we decide to do, perhaps "docs" should be split further? The
>>> dependencies for pdf generation are a lot more heavyweight.
>>
>> I think "docs" should be html and man, because that's what gets installed.
>>
>> pdf and other things can just be an ad hoc build target and doesn't need
>> install support.
>
> I just meant for feature detection.
Ah yes, then things like fop should either be a separate feature or just
do something light weight, like failing the target if fop isn't there.
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: what should install-world do when docs are not available?
2023-03-29 16:39 Re: what should install-world do when docs are not available? Peter Eisentraut <[email protected]>
@ 2023-03-29 22:41 ` Andres Freund <[email protected]>
2023-03-29 22:51 ` Re: what should install-world do when docs are not available? Justin Pryzby <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Andres Freund @ 2023-03-29 22:41 UTC (permalink / raw)
To: Peter Eisentraut <[email protected]>; +Cc: pgsql-hackers; Justin Pryzby <[email protected]>
Hi,
On 2023-03-29 18:39:27 +0200, Peter Eisentraut wrote:
> On 29.03.23 18:25, Andres Freund wrote:
> > On 2023-03-29 18:15:02 +0200, Peter Eisentraut wrote:
> > > On 25.03.23 21:14, Andres Freund wrote:
> > > > I wonder if, for meson, the best behaviour would be to make 'docs' a feature
> > > > set to auto. If docs set to enabled, and the necessary tools are not
> > > > available, fail at that time, instead of doing so while building.
> > >
> > > Makes sense to me.
> > >
> > > > If that's what we decide to do, perhaps "docs" should be split further? The
> > > > dependencies for pdf generation are a lot more heavyweight.
> > >
> > > I think "docs" should be html and man, because that's what gets installed.
> > >
> > > pdf and other things can just be an ad hoc build target and doesn't need
> > > install support.
> >
> > I just meant for feature detection.
>
> Ah yes, then things like fop should either be a separate feature or just do
> something light weight, like failing the target if fop isn't there.
Attached is an implementation of this approach. This includes some lightly
polished patches from [1] and a new patch to remove htmlhelp.
Greetings,
Andres Freund
[1] https://postgr.es/m/3fc3bb9b-f7f8-d442-35c1-ec82280c564a%40enterprisedb.com
Attachments:
[text/x-diff] v4-0001-doc-Remove-support-for-htmlhelp-format.patch (4.4K, ../../[email protected]/2-v4-0001-doc-Remove-support-for-htmlhelp-format.patch)
download | inline diff:
From 2ea3b10f37f85aa71edd38253fe2364be8242aa7 Mon Sep 17 00:00:00 2001
From: Andres Freund <[email protected]>
Date: Wed, 29 Mar 2023 12:25:26 -0700
Subject: [PATCH v4 1/6] doc: Remove support for 'htmlhelp' format
We had partial support for generating documentation suitable for .chm
files. However, we only had wired up generating the input files using
docbook-xsl, not generating an actual .chm file. Nor did we document how to do
so. Additionally, it was very slow to generate htmlhelp, as we never applied
the docbook-xsl stylesheet performance improvements to htmlhelp.
It doesn't look like there's any interest in the htmlhelp output, so remove
it, instead of spending cycles to finish the support.
Discussion: https://postgr.es/m/[email protected]
---
doc/src/sgml/Makefile | 10 --------
doc/src/sgml/meson.build | 11 --------
doc/src/sgml/stylesheet-hh.xsl | 47 ----------------------------------
3 files changed, 68 deletions(-)
delete mode 100644 doc/src/sgml/stylesheet-hh.xsl
diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile
index b96c7cbf223..3c4aa6bebe3 100644
--- a/doc/src/sgml/Makefile
+++ b/doc/src/sgml/Makefile
@@ -148,14 +148,6 @@ html-stamp: stylesheet.xsl postgres-full.xml $(ALL_IMAGES)
cp $(srcdir)/stylesheet.css html/
touch $@
-htmlhelp: htmlhelp-stamp
-
-htmlhelp-stamp: stylesheet-hh.xsl postgres-full.xml $(ALL_IMAGES)
- $(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(wordlist 1,2,$^)
- cp $(ALL_IMAGES) htmlhelp/
- cp $(srcdir)/stylesheet.css htmlhelp/
- touch $@
-
# single-page HTML
postgres.html: stylesheet-html-nochunk.xsl postgres-full.xml $(ALL_IMAGES)
$(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) -o $@ $(wordlist 1,2,$^)
@@ -307,8 +299,6 @@ clean:
# generated SGML files
rm -f $(GENERATED_SGML)
rm -f postgres-full.xml
-# HTML Help
- rm -rf htmlhelp/ htmlhelp-stamp
# EPUB
rm -f postgres.epub
# Texinfo
diff --git a/doc/src/sgml/meson.build b/doc/src/sgml/meson.build
index 157b8589e55..52237dc5ac9 100644
--- a/doc/src/sgml/meson.build
+++ b/doc/src/sgml/meson.build
@@ -135,17 +135,6 @@ if xsltproc_bin.found()
installdocs += install_doc_html
- htmlhelp = custom_target('htmlhelp',
- input: ['stylesheet-hh.xsl', postgres_full_xml],
- output: 'htmlhelp',
- depfile: 'htmlhelp.d',
- depends: doc_generated,
- command: [xsltproc, '--path', '@OUTDIR@', '-o', '@OUTDIR@/', xsltproc_flags, '@INPUT@'],
- build_by_default: false,
- )
- alldocs += htmlhelp
-
-
# single-page HTML
postgres_html = custom_target('postgres.html',
input: ['stylesheet-html-nochunk.xsl', postgres_full_xml],
diff --git a/doc/src/sgml/stylesheet-hh.xsl b/doc/src/sgml/stylesheet-hh.xsl
deleted file mode 100644
index 6f4b706dac6..00000000000
--- a/doc/src/sgml/stylesheet-hh.xsl
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version='1.0'?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version='1.0'>
-
-<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/htmlhelp/htmlhelp.xsl"/>
-<xsl:include href="stylesheet-common.xsl" />
-
-<!-- Parameters -->
-<xsl:param name="htmlhelp.use.hhk" select="'1'"/>
-
-<xsl:param name="base.dir" select="'htmlhelp/'"></xsl:param>
-<xsl:param name="html.stylesheet" select="'stylesheet.css'"></xsl:param>
-<xsl:param name="use.id.as.filename" select="'1'"></xsl:param>
-<xsl:param name="manifest.in.base.dir" select="1"/>
-<xsl:param name="make.valid.html" select="1"></xsl:param>
-<xsl:param name="generate.id.attributes" select="1"></xsl:param>
-<xsl:param name="generate.legalnotice.link" select="1"></xsl:param>
-<xsl:param name="link.mailto.url">[email protected]</xsl:param>
-<xsl:param name="chunker.output.indent" select="'yes'"/>
-<xsl:param name="chunk.quietly" select="1"></xsl:param>
-
-
-<!-- Change display of some elements -->
-
-<xsl:template match="command">
- <xsl:call-template name="inline.monoseq"/>
-</xsl:template>
-
-<!--
- Format multiple terms in varlistentry vertically, instead
- of comma-separated.
- -->
-
-<xsl:template match="varlistentry/term[position()!=last()]">
- <span class="term">
- <xsl:call-template name="anchor"/>
- <xsl:apply-templates/>
- </span><br/>
-</xsl:template>
-
-
-<!-- strip directory name from image filerefs -->
-<xsl:template match="imagedata/@fileref">
- <xsl:value-of select="substring-after(., '/')"/>
-</xsl:template>
-
-</xsl:stylesheet>
--
2.38.0
[text/x-diff] v4-0002-meson-docs-Preparatory-cleanups.patch (4.5K, ../../[email protected]/3-v4-0002-meson-docs-Preparatory-cleanups.patch)
download | inline diff:
From 011e9e08d97e93888928751b0e4b31f9e6ff7206 Mon Sep 17 00:00:00 2001
From: Andres Freund <[email protected]>
Date: Wed, 29 Mar 2023 14:51:38 -0700
Subject: [PATCH v4 2/6] meson: docs: Preparatory cleanups
---
doc/src/sgml/meson.build | 40 +++++++++++++++++++++++-----------------
1 file changed, 23 insertions(+), 17 deletions(-)
diff --git a/doc/src/sgml/meson.build b/doc/src/sgml/meson.build
index 52237dc5ac9..66c0061e96b 100644
--- a/doc/src/sgml/meson.build
+++ b/doc/src/sgml/meson.build
@@ -97,26 +97,32 @@ docs += postgres_full_xml
alldocs += postgres_full_xml
-#
-# Full documentation as html, text
-#
if xsltproc_bin.found()
xsltproc_flags = [
'--nonet',
'--stringparam', 'pg.version', pg_version,
- '--param', 'website.stylesheet', '1'
+ '--path', '@OUTDIR@',
]
xsltproc = xmltools_wrapper + [
'--tool', xsltproc_bin, '--',
]
+endif
+
+
+#
+# Full documentation as html, text
+#
+if xsltproc_bin.found()
+ xsltproc_html_flags = xsltproc_flags + [
+ '--param', 'website.stylesheet', '1'
+ ]
html = custom_target('html',
input: ['stylesheet.xsl', postgres_full_xml],
output: 'html',
depfile: 'html.d',
- depends: doc_generated,
- command: [xsltproc, '-o', '@OUTDIR@/', xsltproc_flags, '@INPUT@'],
+ command: [xsltproc, '-o', '@OUTDIR@/', xsltproc_html_flags, '@INPUT@'],
build_by_default: false,
)
alldocs += html
@@ -140,8 +146,7 @@ if xsltproc_bin.found()
input: ['stylesheet-html-nochunk.xsl', postgres_full_xml],
output: 'postgres.html',
depfile: 'postgres.html.d',
- depends: doc_generated,
- command: [xsltproc, '--path', '@OUTDIR@', '-o', '@OUTPUT@', xsltproc_flags, '@INPUT@'],
+ command: [xsltproc, '-o', '@OUTPUT@', xsltproc_html_flags, '@INPUT@'],
build_by_default: false,
)
alldocs += postgres_html
@@ -151,7 +156,6 @@ if xsltproc_bin.found()
postgres_txt = custom_target('postgres.txt',
input: [postgres_html],
output: 'postgres.txt',
- depends: doc_generated,
command: [pandoc, '-t', 'plain', '-o', '@OUTPUT@', '@INPUT@'],
build_by_default: false,
)
@@ -164,19 +168,21 @@ endif
# INSTALL in html, text
#
if xsltproc_bin.found()
+ # Depend on postgres_full_xml, so validity errors are raised in one place,
+ # and so dependencies don't need to be re-specified.
install_xml = custom_target('INSTALL.xml',
input: ['standalone-profile.xsl', 'standalone-install.xml'],
output: 'INSTALL.xml',
depfile: 'INSTALL.xml.d',
- depends: doc_generated + [postgres_full_xml],
- command: [xsltproc, '--path', '@OUTDIR@', '-o', '@OUTPUT@', xsltproc_flags, '--xinclude', '@INPUT@'],
+ depends: postgres_full_xml,
+ command: [xsltproc, '-o', '@OUTPUT@', xsltproc_flags, '--xinclude', '@INPUT@'],
build_by_default: false,
)
install_html = custom_target('INSTALL.html',
input: ['stylesheet-text.xsl', install_xml],
output: 'INSTALL.html',
depfile: 'INSTALL.html.d',
- command: [xsltproc, '--path', '@OUTDIR@', '-o', '@OUTPUT@', xsltproc_flags, '@INPUT@'],
+ command: [xsltproc, '-o', '@OUTPUT@', xsltproc_html_flags, '@INPUT@'],
build_by_default: false,
)
alldocs += install_html
@@ -204,8 +210,7 @@ if xsltproc_bin.found()
input: ['stylesheet-man.xsl', postgres_full_xml],
output: ['man1', 'man3', 'man7'],
depfile: 'man.d',
- depends: doc_generated,
- command: [xsltproc, '--path', '@OUTDIR@', '-o', '@OUTDIR@/', xsltproc_flags, '@INPUT@'],
+ command: [xsltproc, '-o', '@OUTDIR@/', xsltproc_html_flags, '@INPUT@'],
build_by_default: false,
)
alldocs += man
@@ -229,7 +234,9 @@ endif
# Full documentation as PDF
#
if fop.found() and xsltproc_bin.found()
- xsltproc_fo_flags = xsltproc_flags + ['--stringparam', 'img.src.path', meson.current_source_dir() + '/']
+ xsltproc_fo_flags = xsltproc_flags + [
+ '--stringparam', 'img.src.path', meson.current_source_dir() + '/'
+ ]
foreach format, detail: {'A4': 'A4', 'US': 'USletter'}
postgres_x_fo_f = 'postgres-@[email protected]'.format(format)
@@ -239,9 +246,8 @@ if fop.found() and xsltproc_bin.found()
postgres_x_fo = custom_target(postgres_x_fo_f,
input: ['stylesheet-fo.xsl', postgres_full_xml],
output: postgres_x_fo_f,
- depends: doc_generated,
depfile: postgres_x_fo_dep,
- command: [xsltproc, '--path', '@OUTDIR@/', xsltproc_fo_flags,
+ command: [xsltproc, xsltproc_fo_flags,
'--stringparam', 'paper.type', detail,
'-o', '@OUTPUT@', '@INPUT@'],
build_by_default: false,
--
2.38.0
[text/x-diff] v4-0003-meson-add-docs-docs_pdf-options.patch (7.1K, ../../[email protected]/4-v4-0003-meson-add-docs-docs_pdf-options.patch)
download | inline diff:
From c0f61809faa86228b958f8b7e12d0d98faae3c4c Mon Sep 17 00:00:00 2001
From: Andres Freund <[email protected]>
Date: Wed, 29 Mar 2023 15:33:49 -0700
Subject: [PATCH v4 3/6] meson: add docs, docs_pdf options
---
meson.build | 37 ++++++++++++++++++++++++++++++++++
meson_options.txt | 9 +++++++++
doc/src/sgml/installation.sgml | 33 ++++++++++++++++++++++++++++++
doc/src/sgml/meson.build | 21 ++++++-------------
4 files changed, 85 insertions(+), 15 deletions(-)
diff --git a/meson.build b/meson.build
index 61e94be8641..1f2ec448684 100644
--- a/meson.build
+++ b/meson.build
@@ -341,6 +341,8 @@ program_zstd = find_program(get_option('ZSTD'), native: true, required: false)
dtrace = find_program(get_option('DTRACE'), native: true, required: get_option('dtrace'))
missing = find_program('config/missing', native: true)
cp = find_program('cp', required: false, native: true)
+xmllint_bin = find_program(get_option('XMLLINT'), native: true, required: false)
+xsltproc_bin = find_program(get_option('XSLTPROC'), native: true, required: false)
bison_flags = []
if bison.found()
@@ -567,6 +569,39 @@ endif
+###############################################################
+# Option: docs in HTML and man page format
+###############################################################
+
+docs_opt = get_option('docs')
+docs_dep = not_found_dep
+if not docs_opt.disabled()
+ if xmllint_bin.found() and xsltproc_bin.found()
+ docs_dep = declare_dependency()
+ elif docs_opt.enabled()
+ error('missing required tools for docs in HTML / man page format')
+ endif
+endif
+
+
+
+###############################################################
+# Option: docs in PDF format
+###############################################################
+
+docs_pdf_opt = get_option('docs_pdf')
+docs_pdf_dep = not_found_dep
+if not docs_pdf_opt.disabled()
+ fop = find_program(get_option('FOP'), native: true, required: docs_pdf_opt)
+ if xmllint_bin.found() and xsltproc_bin.found() and fop.found()
+ docs_pdf_dep = declare_dependency()
+ elif docs_pdf_opt.enabled()
+ error('missing required tools for docs in PDF format')
+ endif
+endif
+
+
+
###############################################################
# Library: GSSAPI
###############################################################
@@ -3322,6 +3357,8 @@ if meson.version().version_compare('>=0.57')
{
'bonjour': bonjour,
'bsd_auth': bsd_auth,
+ 'docs': docs_dep,
+ 'docs_pdf': docs_pdf_dep,
'gss': gssapi,
'icu': icu,
'ldap': ldap,
diff --git a/meson_options.txt b/meson_options.txt
index 4402dd4299d..c203dcce6fe 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -79,6 +79,12 @@ option('bonjour', type : 'feature', value: 'auto',
option('bsd_auth', type : 'feature', value: 'auto',
description: 'build with BSD Authentication support')
+option('docs', type : 'feature', value: 'auto',
+ description: 'documentation in HTML and man page format')
+
+option('docs_pdf', type : 'feature', value: 'auto',
+ description: 'documentation in PDF format')
+
option('dtrace', type : 'feature', value: 'disabled',
description: 'DTrace support')
@@ -159,6 +165,9 @@ option('DTRACE', type : 'string', value: 'dtrace',
option('FLEX', type : 'array', value: ['flex', 'win_flex'],
description: 'path to flex binary')
+option('FOP', type : 'string', value: 'fop',
+ description: 'path to fop binary')
+
option('GZIP', type : 'string', value: 'gzip',
description: 'path to gzip binary')
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index 70ab5b77d86..8b87a274fcb 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -2893,6 +2893,39 @@ ninja install
</variablelist>
</sect3>
+ <sect3 id="meson-options-docs">
+ <title>Documentation</title>
+
+ <para>
+ See <xref linkend="docguide-toolsets"/> for the tools needed for building
+ the documentation.
+ </para>
+
+ <variablelist>
+
+ <varlistentry id="configure-docs-meson">
+ <term><option>-Ddocs={ auto | enabled | disabled }</option></term>
+ <listitem>
+ <para>
+ Enables the building of documentation in <acronym>HTML</acronym> and
+ <acronym>man</acronym> format. It defaults to auto.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="configure-docs-pdf-meson">
+ <term><option>-Ddocs_pdf={ auto | enabled | disabled }</option></term>
+ <listitem>
+ <para>
+ Enables the building of documentation in <acronym>PDF</acronym>
+ format. It defaults to auto.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </sect3>
+
<sect3 id="meson-options-misc">
<title>Miscellaneous</title>
diff --git a/doc/src/sgml/meson.build b/doc/src/sgml/meson.build
index 66c0061e96b..7719adfc73b 100644
--- a/doc/src/sgml/meson.build
+++ b/doc/src/sgml/meson.build
@@ -5,9 +5,6 @@ installdocs = []
alldocs = []
doc_generated = []
-xmllint_bin = find_program(get_option('XMLLINT'), native: true, required: false)
-
-
version_sgml = configure_file(
input: 'version.sgml.in',
output: 'version.sgml',
@@ -68,8 +65,6 @@ if not xmllint_bin.found()
endif
pandoc = find_program('pandoc', native: true, required: false)
-xsltproc_bin = find_program(get_option('XSLTPROC'), native: true, required: false)
-fop = find_program('fop', native: true, required: false)
xmltools_wrapper = [
python, files('xmltools_dep_wrapper'),
@@ -113,7 +108,7 @@ endif
#
# Full documentation as html, text
#
-if xsltproc_bin.found()
+if docs_dep.found()
xsltproc_html_flags = xsltproc_flags + [
'--param', 'website.stylesheet', '1'
]
@@ -204,7 +199,7 @@ endif
#
# Man pages
#
-if xsltproc_bin.found()
+if docs_dep.found()
# FIXME: implement / consider sqlmansectnum logic
man = custom_target('man',
input: ['stylesheet-man.xsl', postgres_full_xml],
@@ -233,7 +228,7 @@ endif
#
# Full documentation as PDF
#
-if fop.found() and xsltproc_bin.found()
+if docs_pdf_dep.found()
xsltproc_fo_flags = xsltproc_flags + [
'--stringparam', 'img.src.path', meson.current_source_dir() + '/'
]
@@ -291,7 +286,7 @@ db2x_xsltproc = find_program('db2x_xsltproc', native: true, required: false)
db2x_texixml = find_program('db2x_texixml', native: true, required: false)
makeinfo = find_program('makeinfo', native: true, required: false)
-if db2x_texixml.found() and db2x_xsltproc.found() and makeinfo.found()
+if xsltproc_bin.found() and db2x_texixml.found() and db2x_xsltproc.found() and makeinfo.found()
postgres_texixml = custom_target('postgres.texixml',
output: 'postgres.texixml',
command: [db2x_xsltproc, '-s', 'texi',
@@ -315,15 +310,11 @@ if db2x_texixml.found() and db2x_xsltproc.found() and makeinfo.found()
endif
-if docs.length() == 0
- run_target('docs', command: [missing, 'xsltproc'])
-else
+if docs_dep.found()
alias_target('docs', docs)
alias_target('install-docs', installdocs)
endif
-if alldocs.length() == 0
- run_target('alldocs', command: [missing, 'xsltproc'])
-else
+if alldocs.length() != 0
alias_target('alldocs', alldocs)
endif
--
2.38.0
[text/x-diff] v4-0004-docs-html-copy-images-to-output-as-part-of-xslt-b.patch (2.4K, ../../[email protected]/5-v4-0004-docs-html-copy-images-to-output-as-part-of-xslt-b.patch)
download | inline diff:
From cad43f9fcc130a8f3c5f6f80601a470536cd7449 Mon Sep 17 00:00:00 2001
From: Andres Freund <[email protected]>
Date: Wed, 15 Mar 2023 16:45:14 -0700
Subject: [PATCH v4 4/6] docs: html: copy images to output as part of xslt
build
---
doc/src/sgml/Makefile | 1 -
doc/src/sgml/stylesheet-common.xsl | 22 ++++++++++++++++++++++
doc/src/sgml/stylesheet.xsl | 6 ++++++
3 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile
index 3c4aa6bebe3..11ecdaf717e 100644
--- a/doc/src/sgml/Makefile
+++ b/doc/src/sgml/Makefile
@@ -144,7 +144,6 @@ html: html-stamp
html-stamp: stylesheet.xsl postgres-full.xml $(ALL_IMAGES)
$(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $(wordlist 1,2,$^)
- cp $(ALL_IMAGES) html/
cp $(srcdir)/stylesheet.css html/
touch $@
diff --git a/doc/src/sgml/stylesheet-common.xsl b/doc/src/sgml/stylesheet-common.xsl
index 761484c7fef..d2928f86eb7 100644
--- a/doc/src/sgml/stylesheet-common.xsl
+++ b/doc/src/sgml/stylesheet-common.xsl
@@ -101,4 +101,26 @@
<xsl:apply-templates select="." mode="xref"/>
</xsl:template>
+
+<!--
+ Support for copying images to the output directory, so the output is self
+ contained.
+-->
+<xsl:template name="write-image">
+ <xsl:variable name="input_filename">
+ <xsl:value-of select="imagedata/@fileref"/>
+ </xsl:variable>
+
+ <!-- references images directly, without images/ -->
+ <xsl:variable name="output_filename">
+ <xsl:value-of select="concat($chunk.base.dir, substring-after($input_filename, '/'))"/>
+ </xsl:variable>
+
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$output_filename"/>
+ <xsl:with-param name="content" select="document($input_filename)"/>
+ </xsl:call-template>
+</xsl:template>
+
+
</xsl:stylesheet>
diff --git a/doc/src/sgml/stylesheet.xsl b/doc/src/sgml/stylesheet.xsl
index b6141303abd..c492dc38e54 100644
--- a/doc/src/sgml/stylesheet.xsl
+++ b/doc/src/sgml/stylesheet.xsl
@@ -29,6 +29,12 @@
</xsl:param>
+<!-- copy images to the output directory, so the output is self contained -->
+<xsl:template match="imageobject">
+ <xsl:call-template name="write-image"/>
+ <xsl:apply-templates select="imagedata"/>
+</xsl:template>
+
<!-- strip directory name from image filerefs -->
<xsl:template match="imagedata/@fileref">
<xsl:value-of select="substring-after(., '/')"/>
--
2.38.0
[text/x-diff] v4-0005-docs-load-stylesheet-via-custom.css.source.patch (4.2K, ../../[email protected]/6-v4-0005-docs-load-stylesheet-via-custom.css.source.patch)
download | inline diff:
From f463fec1b519938ed77276c5a5eeaf3e1f940f0d Mon Sep 17 00:00:00 2001
From: Andres Freund <[email protected]>
Date: Wed, 29 Mar 2023 15:34:21 -0700
Subject: [PATCH v4 5/6] docs: load stylesheet via custom.css.source
---
doc/src/sgml/Makefile | 3 +--
doc/src/sgml/meson.build | 2 +-
doc/src/sgml/stylesheet-html-common.xsl | 8 ++++++++
doc/src/sgml/stylesheet-html-nochunk.xsl | 3 +++
doc/src/sgml/stylesheet.css.xml | 8 ++++++++
doc/src/sgml/stylesheet.xsl | 11 -----------
6 files changed, 21 insertions(+), 14 deletions(-)
create mode 100644 doc/src/sgml/stylesheet.css.xml
diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile
index 11ecdaf717e..71cbef230f3 100644
--- a/doc/src/sgml/Makefile
+++ b/doc/src/sgml/Makefile
@@ -39,7 +39,7 @@ ifndef FOP
FOP = $(missing) fop
endif
-XMLINCLUDE = --path .
+XMLINCLUDE = --path . --path $(srcdir)
ifdef XMLLINT
XMLLINT := $(XMLLINT) --nonet
@@ -144,7 +144,6 @@ html: html-stamp
html-stamp: stylesheet.xsl postgres-full.xml $(ALL_IMAGES)
$(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $(wordlist 1,2,$^)
- cp $(srcdir)/stylesheet.css html/
touch $@
# single-page HTML
diff --git a/doc/src/sgml/meson.build b/doc/src/sgml/meson.build
index 7719adfc73b..19531ebbcc7 100644
--- a/doc/src/sgml/meson.build
+++ b/doc/src/sgml/meson.build
@@ -96,7 +96,7 @@ if xsltproc_bin.found()
xsltproc_flags = [
'--nonet',
'--stringparam', 'pg.version', pg_version,
- '--path', '@OUTDIR@',
+ '--path', '@OUTDIR@', '--path', '@CURRENT_SOURCE_DIR@',
]
xsltproc = xmltools_wrapper + [
diff --git a/doc/src/sgml/stylesheet-html-common.xsl b/doc/src/sgml/stylesheet-html-common.xsl
index 9df2782ce4f..bb6429ef7cf 100644
--- a/doc/src/sgml/stylesheet-html-common.xsl
+++ b/doc/src/sgml/stylesheet-html-common.xsl
@@ -18,6 +18,14 @@
<xsl:param name="make.graphic.viewport" select="0"/>
<xsl:param name="link.mailto.url">[email protected]</xsl:param>
<xsl:param name="toc.max.depth">2</xsl:param>
+<xsl:param name="website.stylesheet" select="0"/>
+<xsl:param name="custom.css.source">
+ <xsl:if test="$website.stylesheet = 0">stylesheet.css.xml</xsl:if>
+</xsl:param>
+<xsl:param name="html.stylesheet">
+ <xsl:if test="not($website.stylesheet = 0)">https://www.postgresql.org/media/css/docs-complete.css</xsl:if>
+</xsl:param>
+
<!--
The below allows the stylesheets provided by the website to be applied fully
diff --git a/doc/src/sgml/stylesheet-html-nochunk.xsl b/doc/src/sgml/stylesheet-html-nochunk.xsl
index 8167127b93a..5a0bb4ea08f 100644
--- a/doc/src/sgml/stylesheet-html-nochunk.xsl
+++ b/doc/src/sgml/stylesheet-html-nochunk.xsl
@@ -7,6 +7,9 @@
<xsl:include href="stylesheet-html-common.xsl" />
<xsl:include href="stylesheet-speedup-xhtml.xsl" />
+<!-- except when referencing the online stylesheet, embed stylesheet -->
+<xsl:param name="generate.css.header" select="$website.stylesheet = 0"/>
+
<!-- embed SVG images into output file -->
<xsl:template match="imagedata[@format='SVG']">
<xsl:variable name="filename">
diff --git a/doc/src/sgml/stylesheet.css.xml b/doc/src/sgml/stylesheet.css.xml
new file mode 100644
index 00000000000..a21fcca576f
--- /dev/null
+++ b/doc/src/sgml/stylesheet.css.xml
@@ -0,0 +1,8 @@
+<!--
+ wrapper around stylesheet.css.xml to allow it to be loaded via docbook-xsl's
+ generate.css.header parameter.
+-->
+<!DOCTYPE style [
+<!ENTITY css SYSTEM "stylesheet.css">
+]>
+<style>&css;</style>
diff --git a/doc/src/sgml/stylesheet.xsl b/doc/src/sgml/stylesheet.xsl
index c492dc38e54..363cc93e6b0 100644
--- a/doc/src/sgml/stylesheet.xsl
+++ b/doc/src/sgml/stylesheet.xsl
@@ -17,17 +17,6 @@
<xsl:param name="chunk.quietly" select="1"></xsl:param>
<xsl:param name="admon.style"></xsl:param> <!-- handled by CSS stylesheet -->
-<xsl:param name="website.stylesheet" select="0"/>
-
-<xsl:param name="html.stylesheet">
- <xsl:choose>
- <xsl:when test="$website.stylesheet = 0">stylesheet.css</xsl:when>
- <xsl:otherwise>
- https://www.postgresql.org/media/css/docs-complete.css
- </xsl:otherwise>
- </xsl:choose>
-</xsl:param>
-
<!-- copy images to the output directory, so the output is self contained -->
<xsl:template match="imageobject">
--
2.38.0
[text/x-diff] v4-0006-meson-docs-Allow-configuring-simple-website-style.patch (2.4K, ../../[email protected]/7-v4-0006-meson-docs-Allow-configuring-simple-website-style.patch)
download | inline diff:
From 049af2a9375ad6c0f91bff21bef70b84f84cf523 Mon Sep 17 00:00:00 2001
From: Andres Freund <[email protected]>
Date: Wed, 29 Mar 2023 15:24:30 -0700
Subject: [PATCH v4 6/6] meson: docs: Allow configuring simple/website style
Discussion: https://postgr.es/m/
---
meson_options.txt | 3 +++
doc/src/sgml/installation.sgml | 13 +++++++++++++
doc/src/sgml/meson.build | 7 ++++---
3 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/meson_options.txt b/meson_options.txt
index c203dcce6fe..5b44a8829d3 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -85,6 +85,9 @@ option('docs', type : 'feature', value: 'auto',
option('docs_pdf', type : 'feature', value: 'auto',
description: 'documentation in PDF format')
+option('docs_html_style', type : 'combo', choices: ['simple', 'website'],
+ description: 'CSS stylesheet for HTML documentation')
+
option('dtrace', type : 'feature', value: 'disabled',
description: 'DTrace support')
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index 8b87a274fcb..29d4d3b74df 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -2923,6 +2923,19 @@ ninja install
</listitem>
</varlistentry>
+ <varlistentry id="configure-docs-html-style">
+ <term><option>-Ddocs_html_style={ simple | website }</option></term>
+ <listitem>
+ <para>
+ Influences which <acronym>CSS</acronym> stylesheet is used. If
+ <literal>website</literal>, instead of the default
+ <literal>simple</literal>, is used, HTML documentation will use the
+ stylesheet used on <ulink
+ url="https://www.postgresql.org/docs/current/">postgresql.org</ulink>.
+ </para>
+ </listitem>
+ </varlistentry>
+
</variablelist>
</sect3>
diff --git a/doc/src/sgml/meson.build b/doc/src/sgml/meson.build
index 19531ebbcc7..e9506acc5bb 100644
--- a/doc/src/sgml/meson.build
+++ b/doc/src/sgml/meson.build
@@ -109,9 +109,10 @@ endif
# Full documentation as html, text
#
if docs_dep.found()
- xsltproc_html_flags = xsltproc_flags + [
- '--param', 'website.stylesheet', '1'
- ]
+ xsltproc_html_flags = xsltproc_flags
+ if get_option('docs_html_style') == 'website'
+ xsltproc_html_flags += ['--param', 'website.stylesheet', '1']
+ endif
html = custom_target('html',
input: ['stylesheet.xsl', postgres_full_xml],
--
2.38.0
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: what should install-world do when docs are not available?
2023-03-29 16:39 Re: what should install-world do when docs are not available? Peter Eisentraut <[email protected]>
2023-03-29 22:41 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
@ 2023-03-29 22:51 ` Justin Pryzby <[email protected]>
2023-04-05 04:46 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Justin Pryzby @ 2023-03-29 22:51 UTC (permalink / raw)
To: Andres Freund <[email protected]>; +Cc: Peter Eisentraut <[email protected]>; pgsql-hackers
> + Enables the building of documentation in <acronym>HTML</acronym> and
> + <acronym>man</acronym> format. It defaults to auto.
> +
> + Enables the building of documentation in <acronym>PDF</acronym>
> + format. It defaults to auto.
These sound awkward. Recommend:
Enables building the documentation in <acronym>PDF</acronym>
format. It defaults to auto.
> + <varlistentry id="configure-docs-html-style">
> + <term><option>-Ddocs_html_style={ simple | website }</option></term>
> + <listitem>
> + <para>
> + Influences which <acronym>CSS</acronym> stylesheet is used. If
> + <literal>website</literal>, instead of the default
> + <literal>simple</literal>, is used, HTML documentation will use the
> + stylesheet used on <ulink
> + url="https://www.postgresql.org/docs/current/">postgresql.org</ulink;.
s/Influences/Controls/
I think the default should be given separately from the description of
the other option.
Controls which <acronym>CSS</acronym> stylesheet is used.
The default is <literal>simple</literal>.
If set to <literal>website</literal>, the HTML documentation will use the
same stylesheet used on <ulink
url="https://www.postgresql.org/docs/current/">postgresql.org</ulink;.
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: what should install-world do when docs are not available?
2023-03-29 16:39 Re: what should install-world do when docs are not available? Peter Eisentraut <[email protected]>
2023-03-29 22:41 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
2023-03-29 22:51 ` Re: what should install-world do when docs are not available? Justin Pryzby <[email protected]>
@ 2023-04-05 04:46 ` Andres Freund <[email protected]>
2023-04-05 04:57 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Andres Freund @ 2023-04-05 04:46 UTC (permalink / raw)
To: Justin Pryzby <[email protected]>; +Cc: Peter Eisentraut <[email protected]>; pgsql-hackers
Hi,
On 2023-03-29 17:51:01 -0500, Justin Pryzby wrote:
> > + Enables the building of documentation in <acronym>HTML</acronym> and
> > + <acronym>man</acronym> format. It defaults to auto.
> > +
> > + Enables the building of documentation in <acronym>PDF</acronym>
> > + format. It defaults to auto.
>
> These sound awkward. Recommend:
>
> Enables building the documentation in <acronym>PDF</acronym>
> format. It defaults to auto.
>
> > + <varlistentry id="configure-docs-html-style">
> > + <term><option>-Ddocs_html_style={ simple | website }</option></term>
> > + <listitem>
> > + <para>
> > + Influences which <acronym>CSS</acronym> stylesheet is used. If
> > + <literal>website</literal>, instead of the default
> > + <literal>simple</literal>, is used, HTML documentation will use the
> > + stylesheet used on <ulink
> > + url="https://www.postgresql.org/docs/current/">postgresql.org</ulink;.
>
> s/Influences/Controls/
>
> I think the default should be given separately from the description of
> the other option.
>
> Controls which <acronym>CSS</acronym> stylesheet is used.
> The default is <literal>simple</literal>.
> If set to <literal>website</literal>, the HTML documentation will use the
> same stylesheet used on <ulink
> url="https://www.postgresql.org/docs/current/">postgresql.org</ulink;.
Your alternatives are indeed better. Except that "the same" seems a bit
misleading to me, sounding like it could just be a copy. I changed to "will
reference the stylesheet for ...".
Pushed the changes.
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: what should install-world do when docs are not available?
2023-03-29 16:39 Re: what should install-world do when docs are not available? Peter Eisentraut <[email protected]>
2023-03-29 22:41 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
2023-03-29 22:51 ` Re: what should install-world do when docs are not available? Justin Pryzby <[email protected]>
2023-04-05 04:46 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
@ 2023-04-05 04:57 ` Andres Freund <[email protected]>
2023-04-06 18:52 ` Re: what should install-world do when docs are not available? Andrew Dunstan <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Andres Freund @ 2023-04-05 04:57 UTC (permalink / raw)
To: Justin Pryzby <[email protected]>; Andrew Dunstan <[email protected]>; +Cc: Peter Eisentraut <[email protected]>; pgsql-hackers
Hi,
On 2023-04-04 21:46:11 -0700, Andres Freund wrote:
> Pushed the changes.
This failed on crake - afaict because the meson buildfarm code disables all
features. Because 'docs' is a feature now, the BF code building
doc/src/sgml/html fails.
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: what should install-world do when docs are not available?
2023-03-29 16:39 Re: what should install-world do when docs are not available? Peter Eisentraut <[email protected]>
2023-03-29 22:41 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
2023-03-29 22:51 ` Re: what should install-world do when docs are not available? Justin Pryzby <[email protected]>
2023-04-05 04:46 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
2023-04-05 04:57 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
@ 2023-04-06 18:52 ` Andrew Dunstan <[email protected]>
2023-04-07 00:50 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
0 siblings, 1 reply; 41+ messages in thread
From: Andrew Dunstan @ 2023-04-06 18:52 UTC (permalink / raw)
To: Andres Freund <[email protected]>; Justin Pryzby <[email protected]>; +Cc: Peter Eisentraut <[email protected]>; pgsql-hackers
On 2023-04-05 We 00:57, Andres Freund wrote:
> Hi,
>
> On 2023-04-04 21:46:11 -0700, Andres Freund wrote:
>> Pushed the changes.
> This failed on crake - afaict because the meson buildfarm code disables all
> features. Because 'docs' is a feature now, the BF code building
> doc/src/sgml/html fails.
I changed it so that if the config mandates building docs we add
-Ddocs=enabled and if it mandates building a pdf we also add
-Ddocs_pdf=enabled. See
<https://github.com/PGBuildFarm/client-code/commit/b18a129f91352f77e67084a758462b92ac1abaf7;
It's a slight pity that you have to pick this at setup time, but I guess
the upside is that we don't spend time looking for stuff we're not
actually going to use.
cheers
andrew
--
Andrew Dunstan
EDB:https://www.enterprisedb.com
^ permalink raw reply [nested|flat] 41+ messages in thread
* Re: what should install-world do when docs are not available?
2023-03-29 16:39 Re: what should install-world do when docs are not available? Peter Eisentraut <[email protected]>
2023-03-29 22:41 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
2023-03-29 22:51 ` Re: what should install-world do when docs are not available? Justin Pryzby <[email protected]>
2023-04-05 04:46 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
2023-04-05 04:57 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
2023-04-06 18:52 ` Re: what should install-world do when docs are not available? Andrew Dunstan <[email protected]>
@ 2023-04-07 00:50 ` Andres Freund <[email protected]>
0 siblings, 0 replies; 41+ messages in thread
From: Andres Freund @ 2023-04-07 00:50 UTC (permalink / raw)
To: Andrew Dunstan <[email protected]>; +Cc: Justin Pryzby <[email protected]>; Peter Eisentraut <[email protected]>; pgsql-hackers
Hi,
On 2023-04-06 14:52:51 -0400, Andrew Dunstan wrote:
> On 2023-04-05 We 00:57, Andres Freund wrote:
> > Hi,
> >
> > On 2023-04-04 21:46:11 -0700, Andres Freund wrote:
> > > Pushed the changes.
> > This failed on crake - afaict because the meson buildfarm code disables all
> > features. Because 'docs' is a feature now, the BF code building
> > doc/src/sgml/html fails.
>
>
> I changed it so that if the config mandates building docs we add
> -Ddocs=enabled and if it mandates building a pdf we also add
> -Ddocs_pdf=enabled. See
Sounds good, thanks!
> <https://github.com/PGBuildFarm/client-code/commit/b18a129f91352f77e67084a758462b92ac1abaf7;
>
> It's a slight pity that you have to pick this at setup time,
FWIW, you can change options with meson configure -Ddocs=enabled (or whatnot),
in an existing buildtree. It'll rerun configure (with caching). For options
like docs, it won't lead to rebuilding binaries.
> but I guess the upside is that we don't spend time looking for stuff we're
> not actually going to use.
And that you'll learn that tools are missing before you get through most of
the build...
Greetings,
Andres Freund
^ permalink raw reply [nested|flat] 41+ messages in thread
end of thread, other threads:[~2023-04-07 00:50 UTC | newest]
Thread overview: 41+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2021-12-24 03:52 [PATCH v7 1/2] Make a message on process termination more dscriptive Kyotaro Horiguchi <[email protected]>
2021-12-24 03:52 [PATCH v8] Make a message on process termination more dscriptive Kyotaro Horiguchi <[email protected]>
2021-12-24 03:52 [PATCH v6 1/4] Make a message on process termination more dscriptive Kyotaro Horiguchi <[email protected]>
2021-12-24 03:52 [PATCH v4 1/2] Make a message on process termination more dscriptive Kyotaro Horiguchi <[email protected]>
2021-12-24 03:52 [PATCH v6 1/4] Make a message on process termination more dscriptive Kyotaro Horiguchi <[email protected]>
2021-12-24 03:52 [PATCH v7 1/2] Make a message on process termination more dscriptive Kyotaro Horiguchi <[email protected]>
2021-12-24 03:52 [PATCH v3 1/2] Make a message on process termination more dscriptive Kyotaro Horiguchi <[email protected]>
2021-12-24 03:52 [PATCH v5 1/2] Make a message on process termination more dscriptive Kyotaro Horiguchi <[email protected]>
2021-12-24 04:23 [PATCH v3] Make a message on process termination more dscriptive Kyotaro Horiguchi <[email protected]>
2021-12-24 04:23 [PATCH v4] Make a message on process termination more dscriptive Kyotaro Horiguchi <[email protected]>
2022-03-31 00:26 Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-07-28 14:11 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-07-28 22:44 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-08-04 02:04 ` Re: Mingw task for Cirrus CI Thomas Munro <[email protected]>
2022-08-04 08:38 ` Re: Mingw task for Cirrus CI Thomas Munro <[email protected]>
2022-08-19 02:33 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-02 21:52 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-05 11:50 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-05 23:52 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-10 20:19 ` Re: Mingw task for Cirrus CI Justin Pryzby <[email protected]>
2022-09-22 17:03 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-07 17:00 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-11 18:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-11 18:46 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-18 09:49 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-18 12:37 ` Re: Mingw task for Cirrus CI Nazir Bilal Yavuz <[email protected]>
2022-10-18 21:23 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-19 03:19 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-19 14:59 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-10-19 16:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-10-24 11:13 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-11-18 00:23 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2022-09-21 13:18 ` Re: Mingw task for Cirrus CI Melih Mutlu <[email protected]>
2022-09-21 14:04 ` Re: Mingw task for Cirrus CI Andres Freund <[email protected]>
2023-03-29 16:39 Re: what should install-world do when docs are not available? Peter Eisentraut <[email protected]>
2023-03-29 22:41 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
2023-03-29 22:51 ` Re: what should install-world do when docs are not available? Justin Pryzby <[email protected]>
2023-04-05 04:46 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
2023-04-05 04:57 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
2023-04-06 18:52 ` Re: what should install-world do when docs are not available? Andrew Dunstan <[email protected]>
2023-04-07 00:50 ` Re: what should install-world do when docs are not available? Andres Freund <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox