Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) by nld3-dev1.alpinelinux.org (Postfix) with ESMTPS id C1DA0782BAC for <~alpine/devel@lists.alpinelinux.org>; Sat, 12 Dec 2020 11:12:04 +0000 (UTC) Received: by mail-qk1-f179.google.com with SMTP id 1so11129623qka.0 for <~alpine/devel@lists.alpinelinux.org>; Sat, 12 Dec 2020 03:12:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=J0ZYK+ficMGhxeP1RPM9Cf++Z7ZOi/Yts7JItDEdcPY=; b=hoFNuftNtoebgr4U/z4F0sEr1UhI8obPQtUzEKBiJyXObZE7v4iX2JZX2i/izWLsbn TLkc+JZd9z9+1kI2iEwBW9U6HqdG5zhYkI/Pd6j6TrC7ZDLYUWYRoahF7TgQNqRsYgLQ V8bS3eKM8uz6/TIIPblIPu2padTVhEvX+nKTNpGTHNskbfnopG0GH/YHymvmL/wpnA1Y EBMoj5LJJVVtEeT9l13cEmKV1GQGczo34ppp09dPqSV/YEsxykxs1nFqCF1+D2YA0ZHA oaiZmbEOc3Yq6oNafIgle2Z8c6yBo5rTMw83nAgMLeWnPoDW4czWangd0ilD4cb8lrWQ ztwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=J0ZYK+ficMGhxeP1RPM9Cf++Z7ZOi/Yts7JItDEdcPY=; b=fRSpHGrxvFVW6wYY6HlffbYD6pWizAPZRuSeRaQTftzGJQWdqi80shqva8dkozaVRx ELqCRJlkmwArRJ0PsQnewok2a8MFzv4AYI2fPk8BJptH2L5jyXCC5nHgcUthxwTNEYvR l80hsuvUcNZs+gGqcdOjRywV5RF/Y1ljLwvriGzhkWSS7Ebv/6whrXlwNdleFRWfqsUa J9p2bH+z184kTCHXB5XTx7xyd3AXI82r1lNYG/qIyR3pjHIE8czkmD9btwPraW/A91u5 ig0Pri/sei1/ogYTI1OE/+syvWsyj1WQvu6jBdAGAoVvsS7O9INy1oAcvQVFDe4JF/xz Cw9g== X-Gm-Message-State: AOAM5318ljx/ZNvsHta54+eOWNlzLEBIFHoB0lZexEmOx9KySQlN07+Y h4AKVT0Uv8vi0Myz2o3gw+z+DFiJKyw= X-Google-Smtp-Source: ABdhPJwGt+Met0liFziw1ZX3TRx0JqjMA0VHfOD253n4Gr/xjkOV3B9kUwTGLuJ8FuG9DYiMVQuOww== X-Received: by 2002:a37:a651:: with SMTP id p78mr21034143qke.293.1607771522652; Sat, 12 Dec 2020 03:12:02 -0800 (PST) Received: from [192.168.15.26] ([152.249.98.121]) by smtp.gmail.com with ESMTPSA id z125sm10175363qke.18.2020.12.12.03.12.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 12 Dec 2020 03:12:02 -0800 (PST) Subject: Re: Implement versioned names for major libraries to ease upgrade process To: Ariadne Conill , ~alpine/devel@lists.alpinelinux.org References: <86c7a81e-1640-7f82-9e13-dfdbe1aad07b@gmail.com> <6228113.OPkDe4bAzH@nanabozho> From: maxice8 Message-ID: Date: Sat, 12 Dec 2020 08:12:00 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 MIME-Version: 1.0 In-Reply-To: <6228113.OPkDe4bAzH@nanabozho> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Hello On 12/12/20 7:36 AM, Ariadne Conill wrote: > > On Saturday, December 12, 2020 2:36:16 AM MST maxice8 wrote: >> Hello, >> >> Distros like Debian and Void Linux have packages for major version of >> libraries include the major version in their pkgname (example: >> libboost1.75). > > We already do this with some libraries. I think it would be good to make it > standard practice. > Can be as long as there aren't multiple versions laying around, the express purpose is to ease the burden of upgrading major libraries with lots of consumers like boost. >> >> I'd like to implement that for Alpine Linux. >> >> ## Benefits to Alpine >> >> Ease the upgrade process of major libraries with lots of consumers (like >> boost that has 127-ish consumers) by allowing 2 or more versions of a >> library to be installed in parallel. >> >> Consumers will no longer need to be rebuilt all at once as users can >> have multiple versions of the library installed and will be slowly >> switched over to the new version as consumers are rebuilt to use the new >> soname. >> >> This is already done for llvm which breaks API and ABI every MAJOR >> release so we keep llvmN and llvmN+1 and remove llvmN once all packages >> are switched over to use llvmN+1. >> >> ## Drawbacks >> >> More APKBUILDs will need to be maintained until the whole process is done. >> >> If we depend on foo-dev with foo-dev being claimed by the latest version >> of foo, it becomes possible for some packages to be missed during the >> upgrade process and never processed until the older foo is removed. >> >> Otherwise if we decide on depending on fooX-dev directly then it >> increases work on upgrading packages but guarantees no package will be >> missed in the way mentioned above. > > One solution here would be for fooX-dev to also provide foo-dev=X. This will > cause abuild to pull in the newest package if possible. > That is the way of the paragraph above, if we decide on foo-dev we can miss a package, if we pick fooX-dev then we will never miss a package because we just have to move all fooX-dev to fooY-dev. Another problem is the dependency ordering if we don't queue the builds carefully some packages won't be rebuilt properly (talking from experience on Void Linux). >> People might start manually installing fooX instead of installing foo >> and just getting the latest version and then their system **could >> possibly** break during an upgrade. > > It should be fine, as the dependencies are against so:libfoo.so.X and not > actually against fooX. > It is more about the possibility of something funky happening when upgrading with deleted packages, I have no clue if there is any actual problem but I'm staying on the safe side. Regards, Leo