• 0 Posts
  • 14 Comments
Joined 1 year ago
cake
Cake day: June 26th, 2023

help-circle


  • Heres an example, ebuilds are named package-version.ebuild and that version in the filename is used to define variables (such as $P here which is the name-version) to make new versions as simple as copying the ebuild with the new version in the filename.

    use_enable is used to generate the --enable-(option) or --disable-(option) as set by the user.

    For more info, see the devmanual. They’re nice relatively straightforward bash like PKGBUILDs, but with the repetitious stuff taken out.

    # Copyright 1999-2022 Gentoo Authors
    # Distributed under the terms of the GNU General Public License v2
    
    EAPI=8
    
    DESCRIPTION="GNU charset conversion library for libc which doesn't implement it"
    HOMEPAGE="https://www.gnu.org/software/libiconv/"
    SRC_URI="ftp://ftp.gnu.org/pub/gnu/libiconv/${P}.tar.gz"
    
    LICENSE="LGPL-2+ GPL-3+"
    SLOT="0"
    KEYWORDS="~amd64 ~ppc ~sparc ~x86"
    IUSE="nls"
    
    RDEPEND="!sys-libs/glibc"
    DEPEND="${RDEPEND}"
    
    src_configure() {
    	econf $(use_enable nls)
    }
    






  • phoenix591@lemmy.phoenix591.comtoLinux@lemmy.mlAppimages, snaps and flatpaks
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    edit-2
    11 months ago

    package myself; I chose Gentoo (and previously Arch) in part because its reasonably easy to package things there.

    Most build systems are covered by eclasses ( libraries) that handle the repetitive minutia every package that build system needs.

    Here’s the tuba ebuild for example (from GURU, the Gentoo equivalent of the AUR), 90% of it is just listing the dependencies and telling it to use a few eclasses to handle everything else.

    Oh, and here’s the lemmy back end ebuild, the giant wall of crates is automatically generated/updated from a tool that reads the cargo files. (needed because Gentoo doesn’t allow internet access during the build for normal packages so crates are downloaded ahead of time)