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 1oq18c-0001Kd-3K for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Nov 2022 23:57:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oq18a-0002rT-VP for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Nov 2022 23:57:44 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oq18a-0002rJ-Ka for pgsql-hackers@lists.postgresql.org; Tue, 01 Nov 2022 23:57:44 +0000 Received: from mail-vs1-xe33.google.com ([2607:f8b0:4864:20::e33]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oq18Y-00021c-3q for pgsql-hackers@postgresql.org; Tue, 01 Nov 2022 23:57:43 +0000 Received: by mail-vs1-xe33.google.com with SMTP id q127so15548922vsa.7 for ; Tue, 01 Nov 2022 16:57:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=eLpEKGdDXj4jsJfBOeLznfjFFfGvrchzwDTUsIUitRI=; b=mqfe2dbFi10hn9oh3/of9f6jt2M6CQAyqwGx2KmApNXmQknOAkZI729O2csdkzGULz 9xAIIBkmoO0Ol4fbhExdCJPj59UY4AHPfw4I4WcLsGFp8UPmsRYSUHvxeHgpQ0y2R99t gJC1IdNhWgVh0Rk3acmYYwGHN4ldK+Hgzwsv24Wfsx2g7OAJPTTM5NMYe4FfiYr3Rqso m5kSSLLc0OxImeXEwzNeSThW2EVJ7aReCKbtzeUN7CR8AhZPzkdAO5BgfvJihrhEUkqp wf87ylgVB8GdXD5gdg29VrZZAyV9s0O/RAUgKbNzGNQzdwwxFslaOqycuxHmEYrRdpRJ q0LA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=eLpEKGdDXj4jsJfBOeLznfjFFfGvrchzwDTUsIUitRI=; b=szNkCcG0XCkscM3y9D2VyYVkg/keeSeWlLS8TRZCzlkF87uNFeudHfrFnT+LqjnqYw xqQfX+fyej6F+Aiv4kmU+YPnXE9fXT0vSJP6Wn+dWRta54SNbYt/w24oMpJoYQ5TDumH Nxo1bkXOaCSBgIYbaRWbOSpULZH5Jx7MdUe1lR24TFHIUs2iHAYNlmwpQT3yyYaP8MBd MXgYeMc4o85AXccVOLV+f5mOiqy+9AB0Jdrm9KBx+G4T2Mm/NOv9B84JtiyyMfxT6MJM VHjGkdmLM3JWma8XNwx+fq6sxzo1rIzjDutWAuJST+Rl7TXSIYYpYd+Uw5Goi3aq1LzH QmZQ== X-Gm-Message-State: ACrzQf25sXWzSUk2tWeS4YqTrxJB2MH+qnL/GWQ2seninPcbaH6lWSMI DIpbEiITu+oUZdx46aqKc7NW6QUcKWicZuWHDQY= X-Google-Smtp-Source: AMsMyM73XQKNGVPbUVyFr8Q6vcqGDbV7eYBt8nmr9WN9chHaA6Zp5Usqx6FCJKmKP1oksgf5wlozxXPWCyfDiNNwIxA= X-Received: by 2002:a67:a407:0:b0:3ac:bae9:2861 with SMTP id n7-20020a67a407000000b003acbae92861mr6716048vse.14.1667347061048; Tue, 01 Nov 2022 16:57:41 -0700 (PDT) MIME-Version: 1.0 References: <398aabd1-ad95-ba2d-d70a-dd5d90bf6e07@enterprisedb.com> <9f93a7b9-d144-9e48-40ef-36f7593e425e@enterprisedb.com> In-Reply-To: From: Thomas Munro Date: Wed, 2 Nov 2022 12:57:03 +1300 Message-ID: Subject: Re: Collation version tracking for macOS To: Peter Eisentraut Cc: Jeremy Schneider , Peter Geoghegan , "Finnerty, Jim" , "Nasby, Jim" , Tom Lane , pgsql-hackers Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Wed, Nov 2, 2022 at 1:42 AM Thomas Munro wrote: > On Tue, Nov 1, 2022 at 11:33 PM Peter Eisentraut > wrote: > > What I'm wondering is where those ICU installations are going to come > > from. In order for this project to be viable, we would need to convince > > some combination of ICU maintainers, OS packagers, and PGDG packagers to > > provide and maintain five year's worth of ICU packages (yearly releases > > AFAICT). Is that something we are willing to get into? > > I hacked on this on a Debian machine that has a couple of these > installed and they work fine, but now I realise that might have to do > with the major upgrade history of the machine. So yeah... probably. > :-/ Not being involved in packaging I have no idea how plausible such > a backports (erm, forwardports?) repo would be, and I have even less > idea for other distros. After sleeping on it, I don't really agree that the project is not viable even if it requires hoop-jumping to set up right now. It's a chicken-and-egg problem, and the first step is to make it possible to do it at all, thereby creating the demand for convenient packages. I think we have several topics here: 1. Technical problems relating to dlopen'ing. Does it work? Is the default dlopen() secure enough? Is it building sensible library names, even on the freaky-library OSes (Windows, macOS, AIX)? Is it enough to have that GUC for non-default path, should it be a search path, should it share the existing dynamic_library_path? Are the indirect function calls fast enough? Is the way it handles API stability sound? Can we drop some unfinished complexity by dropping pre-53 ICU? Does it use too much memory? 2. User experience problems relating to upgrade paths and user interface. Is it enough to start with the basic DB2-style approach that I've prototyped here? How should we refer to library versions? Is your search-for-the-collversion idea better? My gut feeling is that the early version should be about giving people options, and not trying to be too clever/automatic with questionable semantics, and later improvements could follow, for example if we have another go at the per-object version tracking. 3. Library availability. This is a problem for downstream communities to solve. For example, the people who build Windows installers might want to start bundling the ICU versions from their earlier releases, the people involved with each Linux/BSD distro would hopefully figure out a good way to publish the packages from older OS releases in one repo, and the people running managed systems probably do their own packaging anyway, they'll figure it out. I realise that you are involved in packaging and I am not, so we probably have different perspectives: I get to say "and here, magic happens!" :-) FWIW at least 57, 63 and 67 (corresponding to deb9, 10, 11) from http://ftp.debian.org/debian/pool/main/i/icu/ can be installed with dpkg -i on my Debian 11 machine. 52 (deb8) too, probably, but it has dependencies I didn't look into. 71 and 72 are newer than the -dev version (what we link against), so I didn't try installing but the patch as posted wouldn't let me open them: the idea here is to allow only older stuff to be dlopen'd, so if a breaking API change comes down the pipe we'll be able to deal with it. Not being a packaging guy, I don't how how stupid it would be to build a package repo that literally just exposes these via an index and that's all, or whether it's better to rebuild the ICU versions from source against modern C/C++ runtimes etc.