summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
authorVladimir Panteleev2017-12-12 00:48:50 +0000
committerVladimir Panteleev2017-12-12 01:00:00 +0000
commit9308f0f38f968f994026d909243cce4d406e0977 (patch)
treed34712f4f9808630098b9f27f756c76fa2a8a3c8 /PKGBUILD
parent2abad9d36683158a906e70b45324131a05ddd5fd (diff)
downloadaur-9308f0f38f968f994026d909243cce4d406e0977.tar.gz
Update against community ldc package
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD203
1 files changed, 127 insertions, 76 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 1ea9c075fd47..0d6b98650a51 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,106 +1,157 @@
-# Maintainer: zfo <zfoofz1@gmail.com>
+# 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-git')
-_gitname=ldc
-_pkgname=ldc-git
+
+_pkgname=ldc
+pkgname=("${_pkgname}-git" 'liblphobos-git')
groups=('dlang' 'dlang-ldc')
-pkgver=v1.0.0.beta1.167.gd9b012b
+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')
-depends=('libconfig' 'curl')
-backup=("etc/ldc2-git.conf")
-provides=("d-compiler d-runtime" "d-stdlib")
-conflicts=('liblphobos-git')
-#provides=('ldc')
-makedepends=('git' 'cmake' 'llvm' 'sed' 'dmd')
-source=("git://github.com/ldc-developers/ldc.git"
- "git://github.com/ldc-developers/druntime.git"
- "git://github.com/ldc-developers/phobos.git"
- "git://github.com/ldc-developers/dmd-testsuite.git"
- "ldc2.conf"
- )
+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'
- '3e3b275f8c04d427b67c989cee591bff96f6701b118f29bb928fc9e3794b1dd7')
+ '7f7eea41e730175ea52993f82bef5bdea6d6fc628344cda9488c04bf4b430024')
pkgver() {
- cd "${srcdir}/${_gitname}"
- git describe --tags HEAD | sed 's/-/./g'
+ 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() {
- mkdir -p $srcdir/tmp_install_dir
- cd $srcdir/ldc
-
- 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
-
- # only touch file if necessary
- if grep -q 'ldc2[.]conf' driver/configfile.cpp ; then
- # patch the config file to be /etc/ldc2-git.conf
- sed 's/ldc2[.]conf/ldc2-git.conf/' -i driver/configfile.cpp
- fi
-
- # compilation with ldc links phobos and runtime as shared libraries
+ 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!
- sed 's/"ldmd2" "dmd"/"dmd"/' -i cmake/Modules/FindDCompiler.cmake
-
- # patch ldc to properly link to ldc-git (needed for ldmd)
- sed 's/LDC_EXE ldc2/LDC_EXE ldc-git/' -i CMakeLists.txt
- sed 's/LDMD_EXE ldmd2/LDMD_EXE ldmd-git/' -i CMakeLists.txt
- # it's faster just to rename the config files
- mv ldc2_phobos.conf.in ldc-git_phobos.conf.in
- mv ldc2_install.conf.in ldc-git_install.conf.in
-
- mkdir -p build && cd build
-
- # this is the git version - static linking by default
- # don't use ArchLinux LDFLAGS (#1494)
- LDFLAGS="-static-libstdc++ -Wl,-rpath,\$ORIGIN" cmake \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_BUILD_TYPE=Release \
- -DINCLUDE_INSTALL_DIR=/usr/include/dlang/ldc-git \
- -DBUILD_SHARED_LIBS=OFF \
+ 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[@]}"
- #-DCMAKE_SKIP_RPATH=ON \
- make -j $(nproc)
- make install DESTDIR=$srcdir/tmp_install_dir
+ make
}
-package() {
- cd $srcdir/tmp_install_dir
+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")
- # binaries
- install -D -m755 ./usr/bin/ldmd-git $pkgdir/usr/bin/ldmd-git
- install -D -m755 ./usr/bin/ldc-git $pkgdir/usr/bin/ldc-git
+ depends=('liblphobos-git' 'llvm-libs')
+ backup=('etc/ldc2-git.conf')
+ provides=("d-compiler=${dmd_fe_ver}")
- # supplementaries
- install -D -m644 $srcdir/ldc/bash_completion.d/ldc2 $pkgdir/usr/share/bash-completion/completions/ldc-git
+ cd "${srcdir}/${_pkgname}/build"
+ make install DESTDIR="${pkgdir}"
- # licenses
- install -D -m644 $srcdir/ldc/LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+ # rename binaries
+ for f in profdata prune-cache; do
+ mv "${pkgdir}/usr/bin/ldc-$f" \
+ "${pkgdir}/usr/bin/ldc-git-$f"
+ done
- # default configuration files
- install -D -m644 $srcdir/ldc2.conf $pkgdir/etc/ldc2-git.conf
+ # rename bash-completion
+ mv "${pkgdir}/usr/share/bash-completion/completions/ldc2" \
+ "${pkgdir}/usr/share/bash-completion/completions/ldc2-git"
- # libraries
- install -D -m644 ./usr/lib/libphobos2-ldc.a $pkgdir/usr/lib/liblphobos2-git.a
- install -D -m644 ./usr/lib/libdruntime-ldc.a $pkgdir/usr/lib/libldruntime-git.a
- install -D -m644 ./usr/lib/libphobos2-ldc-debug.a $pkgdir/usr/lib/liblphobos2-debug-git.a
- install -D -m644 ./usr/lib/libdruntime-ldc-debug.a $pkgdir/usr/lib/libldruntime-debug-git.a
+ # 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"
+}
- # imports
- mkdir -p $pkgdir/usr/include/dlang
- cp -r ./usr/include/dlang/ldc-git $pkgdir/usr/include/dlang/ldc-git
+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"
}