aboutsummaryrefslogtreecommitdiff
# Contributor: Wojtek Kosior <kwojtus@protonmail.com>

# Loosely based on Hyperbola's glibc package

pkgname=glibc-source
pkgver=2.25
_debrel=3
pkgrel=1
pkgdesc="Source of the GNU C Library"
arch=('any')
url="https://www.gnu.org/software/libc"
license=('GPL-2' 'LGPL-2.1')
depends=('quilt')
source=(https://ftp.gnu.org/gnu/glibc/glibc-$pkgver.tar.bz2{,.sig}
	#https://deb.debian.org/debian/pool/main/g/glibc/glibc_$pkgver-$_debrel.debian.tar.xz # got removed from there
	https://launchpad.net/debian/+archive/primary/+sourcefiles/glibc/${pkgver}-${_debrel}/glibc_${pkgver}-${_debrel}.debian.tar.xz)
validpgpkeys=('BC7C7372637EC10C57D7AA6579C43DFBF1CF2187') # Siddhesh Poyarekar <siddhesh@gotplt.org>
sha512sums=('bb6c1b2deaf9c117ef5c19efdef587c5c9d4da9380066eaa85917b20cf1cb4df1406f612bb7f9482410275676916613d05a52a573eb14758eeea152e64fcdbe2'
            'SKIP'
            '7815c2adfa3751d8c95f09158ee486021f24d7c943d0c4388009cc3519c997b4a9ec1600b6c525372ae7a1e01787fb4c8faf90e1e525aa4aa2c099796c577ff9')

noextract=(glibc-$pkgver.tar.bz2)

# Many patches fail to apply and there're also unneeded files (e.g. README)
_undesired_patch_files=(debian/patches/all/local-remove-manual.diff
			debian/patches/any/local-bindresvport_blacklist.diff
			debian/patches/any/local-bits-sigstack.diff
			debian/patches/any/local-bootstrap-headers.diff
			debian/patches/any/local-disable-libnss-db.diff
			debian/patches/any/local-dynamic-resolvconf.diff
			debian/patches/any/local-ld-multiarch.diff
			debian/patches/any/local-ldconfig-fsync.diff
			debian/patches/any/local-ldconfig-ignore-ld.so.diff
			debian/patches/any/local-ldconfig-multiarch.diff
			debian/patches/any/local-ldconfig.diff
			debian/patches/any/local-ldso-disable-hwcap.diff
			debian/patches/any/local-libgcc-compat-abilists.diff
			debian/patches/any/local-libgcc-compat-main.diff
			debian/patches/any/local-libgcc-compat-ports.diff
			debian/patches/any/local-libpic.diff
			debian/patches/any/local-nss-upgrade.diff
			debian/patches/any/local-rtlddir-cross.diff
			debian/patches/any/local-tcsetaddr.diff
			debian/patches/any/submitted-bits-fcntl_h-at.diff
			debian/patches/any/submitted-intl-tstgettext.diff
			debian/patches/any/submitted-ldconfig-c-collation.diff
			debian/patches/any/unsubmitted-ldso-machine-mismatch.diff
			debian/patches/README
			debian/patches/series.hurd-i386
			debian/patches/series.kfreebsd-i386
			debian/patches/series.kfreebsd-amd64)

prepare() {
    cd "${srcdir}"
    
    rm -v ${_undesired_patch_files[@]}
    # some hurd and kfreebsd changes cause problems, remove whole directories
    rm -rv debian/patches/{hurd-i386,kfreebsd}/
    
    # Patches and 'series' file will go to /usr/src/glibc/debian_patches.
    # We're not interested in rest of the stuff in debian/.
    
    # here we create script to be used for unpacking glibc sources we'll install

    echo "\
#!/bin/sh

mkdir -p \"\$1\" && cd \"\$1\"

bsdtar -xf /usr/src/glibc/glibc-${pkgver}.tar.bz2

export QUILT_PATCHES=/usr/src/glibc/debian_patches
export QUILT_REFRESH_ARGS='-p ab --no-timestamps --no-index'	
export QUILT_DIFF_ARGS='--no-timestamps'

cd glibc-${pkgver}

quilt push -av
rm -r .pc/" > prepare-glibc-source
}

package() {
    install -m755 -d "${pkgdir}/usr/src/glibc/debian_patches"

    # install patches
    # I should have probably used install instead of cp, but don't know how to do that concisely. Don't want to bother reading find manual, either.
    cp -R "${srcdir}/debian/patches/"* "${pkgdir}/usr/src/glibc/debian_patches/"
    
    # install tarballs
    install -m644 "${srcdir}/glibc-$pkgver.tar.bz2" "${pkgdir}/usr/src/glibc"

    # install our script
    install -m755 -d "${pkgdir}/usr/bin"
    install -m755 "${srcdir}/prepare-glibc-source" "${pkgdir}/usr/bin"
}