Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kD5A6-0006MI-As for pljava-dev@arkaria.postgresql.org; Tue, 01 Sep 2020 12:13:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kD5A4-0005eM-57 for pljava-dev@arkaria.postgresql.org; Tue, 01 Sep 2020 12:13:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kD5A3-0005eF-Lw for pljava-dev@lists.postgresql.org; Tue, 01 Sep 2020 12:13:16 +0000 Received: from anastigmatix.net ([68.171.219.55]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kD59w-00050q-LY for pljava-dev@lists.postgresql.org; Tue, 01 Sep 2020 12:13:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=anastigmatix.net; s=default; h=Content-Transfer-Encoding:Content-Type: In-Reply-To:MIME-Version:Date:Message-ID:From:References:To:Subject:Sender: Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=k0vByTciFVzpu0OasbXgJvl0pnFAn8WScumpaK2GT1g=; b=CQccLSIihIHAx2FF2eIcXeI3+i wHdsA/lF62T3yq3In7Zj8T/nrZWPT4b9elYfICW8E94XiRYnQKvocKF9v2RikI+ByyfE8hax/4tCp pZhVFWbLFVz6ctSjECFznWzeiwTmXVBuYON61aiCfTsXl9gkXdptJFqxdwAbeqzb4GcSnOOvVtAof zTrN7pi4gyr83QqYXNB3ywn0duKn6FkTraI96yiD1G3mcW3OF6cJHpFkPEKuaHpOTBaRxBYYVecyP Fk5uaRDr3MZ56LcEkgTfTOrirpofKIHXZVpAlMKrPtmpdQPrazBd3ToZ31yJ6R7PeAc8sQPeOAjIe AruYv+PA==; Received: from [184.19.31.139] (port=40829) by bay.acenet.us with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1kD59s-008Wrp-Rb; Tue, 01 Sep 2020 08:13:05 -0400 Subject: Re: Renovating the PL/Java build process To: Kartik Ohri , pljava-dev@lists.postgresql.org References: From: Chapman Flack X-Enigmail-Draft-Status: N1110 Message-ID: <5F4E3ACF.30701@anastigmatix.net> Date: Tue, 1 Sep 2020 08:13:03 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-OutGoing-Spam-Status: No, score=-95.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - bay.acenet.us X-AntiAbuse: Original Domain - lists.postgresql.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - anastigmatix.net X-Get-Message-Sender-Via: bay.acenet.us: authenticated_id: chap@anastigmatix.net X-Authenticated-Sender: bay.acenet.us: chap@anastigmatix.net X-Source: X-Source-Args: X-Source-Dir: X-From-Rewrite: unmodified, already matched List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 08/31/20 04:12, Kartik Ohri wrote: > It is the time of the summer when GSoC participants look back on the work > done in the past few months and so here are we. The original project idea > and the project proposal had three major components. Each of these has been > discussed in detail below. > > 1) Continuous Integration > 2) PL/Java API Artifact > 3) Replacing nar-maven-plugin A hearty thank you to Kartik, whose work has provided a renovated build process that removes many sources of pain in the old one, and should also, I think, be much more approachable for any newcomer trying to see how the native code is being built. The plugins formerly used were configured 'declaratively', which can be elegant in simple cases, but once the question becomes "what do I 'declare' to trick this plugin into doing what it wasn't made for?", the simple approach here becomes easier to follow. The new process also picks up the same compiler options that were used building PostgreSQL, addressing our issue #152, and allows the -Dpljava.libjvmlocation option to be given at build time even in Windows (our issue #190) to build a package that will not need that setting configured at install time when the packaged location for Java is known. Another thank you to Thomas, who has enabled the main tada/pljava repo for the Travis-CI and AppVeyor services Kartik used, so that new pull requests on the master branch (leading toward the 1.6 release) are automatically checked. None of this work applies to the currently-released, 1.5.x branch, but the benefits will appear when the first 1.6 release happens. That is also when item #2, a pljava-api artifact deployed to Maven Central, should be expected. There is one unintended consequence of the current work. It now relies on the compiling information reported by pg_config as used to build PostgreSQL (as requested in issue #152), but that information is not recorded if PostgreSQL was built with MSVC on Windows. Therefore, when building with MSVC, we use hardcoded options, as before. A consequence is that building PL/Java with MinGW-w64 against a PostgreSQL instance built with MSVC is not now possible, because our MinGW build process relies on pg_config information that the MSVC build did not record. I would probably never have dared to try building PL/Java with MinGW when PostgreSQL was built with MSVC, but it happened by accident for a while as we worked on CI this summer, and it did in fact work. So, perhaps, someone may be relying on it. If so, it will be simple to add back into the new process; it would just be another set of rules for Windows-MinGW-PGMSVC, and would have to hardcode the compiling options as the MSVC rules do. Again, thank you to Kartik. It has been a pleasure collaborating on this work. Regards, -Chap