summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 02ab5efe1a7f78100447b208b92df37168655ad0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Maintainer: spider-mario <spidermario@free.fr>
# Contributor: Taras Shpot <mrshpot@gmail.com>
pkgname=('rust-git' 'rust-doc-git')
pkgver=1.0.0.beta.2833.gb850046
epoch=3
pkgrel=1
pkgdesc="A safe, concurrent, practical language from Mozilla."
arch=('i686' 'x86_64')
url="http://www.rust-lang.org/"
license=('MIT' 'Apache')
makedepends=('git' 'gcc' 'curl'
             'libffi' 'python2')
optdepends=('haskell-pandoc: to build the documentation'
            'emacs: to build the emacs mode')
source=("git+https://github.com/rust-lang/rust.git"
        "git+https://github.com/rust-lang/compiler-rt.git"
        "git+https://github.com/rust-lang/jemalloc.git"
        "git+https://github.com/rust-lang/libc.git"
        "git+https://github.com/rust-lang/llvm.git"
        "git+https://github.com/rust-lang/hoedown.git"
        "git+https://github.com/rust-lang/rust-installer.git"

        "git+https://github.com/rust-lang/rust.vim.git"
        "git+https://github.com/rust-lang/rust-mode.git"
        "git+https://github.com/rust-lang/gedit-config.git"
        "git+https://github.com/rust-lang/nano-config.git"
        "git+https://github.com/rust-lang/zsh-config.git")
_noclone=(compiler-rt jemalloc libc llvm hoedown rust-installer)
sha512sums=('SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            'SKIP')

pkgver() {
	cd rust
	git describe | sed -e 's/^release-//' -e 'y/-/./'
}

prepare() {
	rm -rf -- "${_noclone[@]}"

	cd rust
	_srcdest="$SRCDEST" perl -pi -- /dev/stdin .gitmodules <<'END'
		if (m{(?<assignment> \s* url \s* = \s*) .* / (?<submodule> [^/]*?)(?:\.git)?$}x) {
			my $local = "$ENV{_srcdest}/$+{submodule}";
			$_ = "$+{assignment}$local\n" if -d $local;
		}
END
}

build() {
	cd rust

	# src/rust/src/compiler-rt/make/platform/clang_linux.mk only exports LANG
	# when parsing the output of gcc -v. Let us set LC_ALL as well.
	export LANG=C LC_ALL=C

	./configure --prefix=/usr --disable-rpath
	make all
}

package_rust-git() {
	depends=('shared-mime-info')
	optdepends=('rust-doc-git: language and API documentation')
	provides=('rust')
	conflicts=('rust')
	options=('staticlibs')
	install=rust.install

	cd rust

	make DESTDIR="$pkgdir" install
	rm -fr "$pkgdir"/usr/share/doc/rust/html

	rm -f "$pkgdir"/usr/lib/rustlib/{components,manifest-rustc,manifest-rust-docs,rust-installer-version,install.log,uninstall.sh}

	install --directory "$pkgdir"/usr/share/licenses/rust-git/
	install -m644 COPYRIGHT LICENSE-* "$pkgdir"/usr/share/licenses/rust-git/

	install --directory "$pkgdir"/usr/share/vim/vimfiles/
	cp -a "$srcdir"/rust.vim/*/ "$pkgdir"/usr/share/vim/vimfiles/

	cp -a "$srcdir"/gedit-config/share "$pkgdir"/usr/

	install --directory "$pkgdir"/usr/share/zsh/functions/Completion/Zsh/
	cp -a "$srcdir"/zsh-config/_* "$pkgdir"/usr/share/zsh/functions/Completion/Zsh/

	install --directory "$pkgdir"/usr/share/nano/
	cp -a "$srcdir"/nano-config/*.nanorc "$pkgdir"/usr/share/nano/

	cd "$srcdir"/rust-mode
	emacs --eval '(byte-recompile-directory "." 0)' --quick --batch 2> /dev/null || true
	install --directory "$pkgdir"/usr/share/emacs/site-lisp/
	cp -a rust-mode.* "$pkgdir"/usr/share/emacs/site-lisp/

	# already present in gtksourceview3
	rm "$pkgdir"/usr/share/gtksourceview-3.0/language-specs/rust.lang
}

package_rust-doc-git() {
	pkgdesc="A safe, concurrent, practical language from Mozilla. (Language and API documentation)"
	arch=('any')
	options+=('!strip' '!emptydirs')
	optdepends=('rust-git: to compile and run the programs you can write using this documentation')
	provides=('rust-doc')
	conflicts=('rust-doc')

	cd rust

	_docdir="$pkgdir"/usr/share/doc/rust
	install --directory "$_docdir"
	cp -r doc/* "$_docdir"/ || true

	chmod -R 644 "$_docdir"
	find "$_docdir" -type d -exec chmod 755 {} +
	for ext in aux out log toc; do
		rm -f "$_docdir"/*."$ext"
	done

	install --directory "$pkgdir"/usr/share/licenses/rust-doc-git/
	install -m644 COPYRIGHT LICENSE-* "$pkgdir"/usr/share/licenses/rust-doc-git/
}