Skip to content

Instantly share code, notes, and snippets.

@CyberShadow CyberShadow/.SRCINFO
Created Dec 12, 2017

Embed
What would you like to do?
ldc-git AUR package (fixed PKGBUILD)
/*.pkg.tar.xz
/pkg/
/src/
/ldc/
/dmd-testsuite/
/druntime/
/phobos/
# Generated by mksrcinfo v8
# Tue Dec 12 00:48:37 UTC 2017
pkgbase = ldc-git
pkgdesc = A D Compiler based on the LLVM Compiler Infrastructure including D runtime and libphobos2
pkgver = v1.7.0.beta1.2.g3a6d93b8
pkgrel = 1
epoch = 1
url = https://github.com/ldc-developers/ldc
arch = i686
arch = x86_64
groups = dlang
groups = dlang-ldc
license = BSD
makedepends = git
makedepends = cmake
makedepends = llvm
makedepends = dmd
source = git+https://github.com/ldc-developers/ldc.git
source = git+https://github.com/ldc-developers/druntime.git
source = git+https://github.com/ldc-developers/phobos.git
source = git+https://github.com/ldc-developers/dmd-testsuite.git
source = ldc2.conf
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
sha256sums = 7f7eea41e730175ea52993f82bef5bdea6d6fc628344cda9488c04bf4b430024
pkgname = ldc-git
depends = liblphobos-git
depends = llvm-libs
provides = d-compiler=
backup = etc/ldc2-git.conf
pkgname = liblphobos-git
depends = curl
provides = d-runtime
provides = d-stdlib
// See comments in driver/config.d in ldc source tree for grammar description of
// this config file.
// The default group is required
default:
{
// default switches injected before all explicit command-line switches
switches = [
"-I/usr/include/dlang/ldc-git/ldc",
"-I/usr/include/dlang/ldc-git",
"-L--no-warn-search-mismatch",
"-defaultlib=phobos2-ldc-git,druntime-ldc-git",
"-debuglib=phobos2-ldc-git-debug,druntime-ldc-git-debug"
];
// default switches appended after all explicit command-line switches
post-switches = [
"-L-L/usr/lib",
];
};
# Maintainer: Vladimir Panteleev <arch-pkg at thecybershadow.net>
# Contributor: zfo <zfoofz1@gmail.com>
# Contributor: Mihails Strasuns <public@dicebot.lv>
# Contributor: Sven-Hendrik Haase <sh@lutzhaase.com>
_pkgname=ldc
pkgname=("${_pkgname}-git" 'liblphobos-git')
groups=('dlang' 'dlang-ldc')
pkgver=v1.7.0.beta1.2.g3a6d93b8
epoch=1
pkgrel=1
pkgdesc="A D Compiler based on the LLVM Compiler Infrastructure including D runtime and libphobos2"
arch=('i686' 'x86_64')
url="https://github.com/ldc-developers/ldc"
license=('BSD')
makedepends=('git' 'cmake' 'llvm' 'dmd')
source=("git+https://github.com/ldc-developers/ldc.git"
"git+https://github.com/ldc-developers/druntime.git"
"git+https://github.com/ldc-developers/phobos.git"
"git+https://github.com/ldc-developers/dmd-testsuite.git"
"ldc2.conf")
sha256sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
'7f7eea41e730175ea52993f82bef5bdea6d6fc628344cda9488c04bf4b430024')
pkgver() {
cd "${srcdir}/${_pkgname}"
git describe --tags HEAD | sed 's/-/./g'
}
prepare() {
cd "${srcdir}/${_pkgname}"
git submodule init
git config submodule.druntime.url "${srcdir}/druntime"
git config submodule.phobos.url "${srcdir}/phobos"
git config submodule.tests/d2/dmd-testsuite.url "${srcdir}/dmd-testsuite"
git submodule update
# patch the config file to be /etc/ldc2-git.conf
sed 's/ldc2[.]conf/ldc2-git.conf/' -i driver/configfile.cpp
# patch ldc to properly link to ldc-git (needed for ldmd)
sed 's/LDC_EXE ldc2/LDC_EXE ldc2-git/' -i CMakeLists.txt
sed 's/LDMD_EXE ldmd2/LDMD_EXE ldmd2-git/' -i CMakeLists.txt
# patch bash-completion
sed 's/\(ldc2\?\)\b/\1-git/g' -i bash_completion.d/ldc2
# it's faster just to rename the config files
mv ldc2_phobos.conf.in ldc2-git_phobos.conf.in
mv ldc2_install.conf.in ldc2-git_install.conf.in
}
build() {
cd "${srcdir}/${_pkgname}"
mkdir -p build && cd build
# workaround for wrong ld flag format generated by cmake:
# export LDFLAGS="-L-O1 -L--sort-common -L--as-needed -L-z -Lrelro"
local args=(
env
# Use host DMD
# This 1) ensures we use the main dmd package, and not something in the user's $PATH;
# and 2) compilation with ldc links Phobos/Druntime as shared libraries;
# dmd does static linking to the rescue!
DMD=/usr/bin/dmd
cmake
-DCMAKE_INSTALL_PREFIX=/usr
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_SKIP_RPATH=ON
-DINCLUDE_INSTALL_DIR=/usr/include/dlang/ldc-git
# This is the git version - use static linking by default
# -DBUILD_SHARED_LIBS=ON
# -DLDC_WITH_LLD=OFF
-DBUILD_SHARED_LIBS=OFF
..
)
"${args[@]}"
make
}
package_ldc-git() {
local dmd_fe_ver
dmd_fe_ver=$(sed -n 's/^.*dmd_version = "v\(.*\)";$/\1/p' \
"${srcdir}/${_pkgname}/build/driver/ldc-version.cpp")
depends=('liblphobos-git' 'llvm-libs')
backup=('etc/ldc2-git.conf')
provides=("d-compiler=${dmd_fe_ver}")
cd "${srcdir}/${_pkgname}/build"
make install DESTDIR="${pkgdir}"
# rename binaries
for f in profdata prune-cache; do
mv "${pkgdir}/usr/bin/ldc-$f" \
"${pkgdir}/usr/bin/ldc-git-$f"
done
# rename bash-completion
mv "${pkgdir}/usr/share/bash-completion/completions/ldc2" \
"${pkgdir}/usr/share/bash-completion/completions/ldc2-git"
# remove liblphobos files
rm -rf "${pkgdir}/usr/include"
rm -rf "${pkgdir}/usr/lib"
# remove misc
rm -rf "${pkgdir}/usr/bin/ldc-build-runtime"
# symlinks
ln -s ldc2-git "${pkgdir}/usr/share/bash-completion/completions/ldc-git"
ln -s ldc2-git "${pkgdir}/usr/bin/ldc-git"
ln -s ldmd2-git "${pkgdir}/usr/bin/ldmd-git"
# licenses
install -D -m644 "${srcdir}/ldc/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
# default configuration files
install -D -m644 "${srcdir}/ldc2.conf" "${pkgdir}/etc/ldc2-git.conf"
}
package_liblphobos-git() {
provides=('d-runtime' 'd-stdlib')
depends=('curl')
cd "${srcdir}/ldc/build"
make install DESTDIR="${pkgdir}"
# remove ldc files
rm -rf "${pkgdir}/usr/bin/"
rm -rf "${pkgdir}/etc/"
rm -rf "${pkgdir}/usr/share/bash-completion/"
# rename libraries
for f in libphobos2-ldc libdruntime-ldc libphobos2-ldc-debug libdruntime-ldc-debug \
libldc-jit libldc-jit-rt libldc-profile-rt; do
for ext in a so; do
test -e "${pkgdir}/usr/lib/$f.$ext" && \
mv "${pkgdir}/usr/lib/$f.$ext" "${pkgdir}/usr/lib/$f-git.$ext"
done
done
# licenses
install -D -m644 "${srcdir}/ldc/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.