summaryrefslogtreecommitdiff
blob: 48fde27267b2afdae57fc4fd7b00570f58c0c71e (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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-electronics/kicad/kicad-20120119_p3256.ebuild,v 1.5 2012/07/13 19:19:13 calchan Exp $

# rafaelmartins: Please try to keep the live ebuild synchronized with
# the latest snapshot ebuild. e.g.:
# cp kicad-YYYYMMDD_pXXXX.ebuild kicad-99999999.ebuild

EAPI="3"

WX_GTK_VER="2.8"

inherit cmake-utils wxwidgets fdo-mime gnome2-utils bzr

DESCRIPTION="Electronic Schematic and PCB design tools."
HOMEPAGE="http://kicad.sourceforge.net"

SRC_URI=""

LICENSE="GPL-2"
SLOT="0"

KEYWORDS=""
if [[ "${PV}" != "99999999" ]]; then
	KEYWORDS="amd64 ~ppc ~ppc64 x86"
fi

IUSE="dev-doc debug doc examples minimal python"

CDEPEND="x11-libs/wxGTK:2.8[X,opengl]"
DEPEND="${CDEPEND}
	>=dev-util/cmake-2.6.0
	>=dev-libs/boost-1.40[python?]
	app-arch/xz-utils
	dev-doc? ( app-doc/doxygen )"
RDEPEND="${CDEPEND}
	sys-libs/zlib
	sci-electronics/electronics-menu"

src_unpack() {
	if [[ "${PV}" != "99999999" ]]; then
		EBZR_REVISION="${PV#*_p}"
	fi
	EBZR_REPO_URI="lp:~kicad-testing-committers/kicad/testing" bzr_fetch

	if [[ "${PV}" = "99999999" ]]; then
		EBZR_REVISION=""
	else
		local date="${PV%_p*}"
		EBZR_REVISION="before:${date:0:4}-${date:4:2}-${date:6:2},23:59:59"
	fi

	# FIXME: we need to send patches for bzr.eclass, to avoid the weird
	# declarations of ${P} below.

	if ! use minimal; then
		EBZR_REPO_URI="lp:~kicad-lib-committers/kicad/library" \
			EBZR_PROJECT="kicad-library" \
			P="${P}/kicad-library" \
			EBZR_CACHE_DIR="kicad-library" \
			bzr_fetch
	fi

	if use doc; then
		EBZR_REPO_URI="lp:~kicad-developers/kicad/doc" \
			EBZR_PROJECT="kicad-doc" \
			P="${P}/kicad-doc" \
			EBZR_CACHE_DIR="kicad-doc" \
			bzr_fetch
	fi
}

src_prepare() {
	sed -i \
		-e '/add_subdirectory(template)/ a \
			add_subdirectory(kicad-doc)\
			add_subdirectory(kicad-library)' \
		-e 's/create_svn_version_header()/#create_svn_version_header()/' \
		-e 's/ -O2 / /' \
		CMakeLists.txt || die 'sed failed'

	sed -i \
		-e 's/Scientific;Development/Engineering;Electronics/' \
		resources/linux/mime/applications/*.desktop || die 'sed failed'

	# Use native boost
	sed -i -e '/Boost/s/^#check_find_package/check_find_package/' \
		-e '/Boost/s/^#find_package/find_package/' CMakeLists.txt || die "sed failed"

	# Add important doc files
	sed -i -e 's/INSTALL.txt/AUTHORS.txt CHANGELOG.txt README.txt TODO.txt/' CMakeLists.txt || die "sed failed"

	# Fix desktop files
	rm resources/linux/mime/applications/eeschema.desktop
	sed -i -e 's/Development;//' resources/linux/mime/applications/kicad.desktop || die "sed failed"

	# Handle optional minimal install
	if use minimal ; then
		sed -i -e '/add_subdirectory(template)/d' \
			-e '/add_subdirectory(kicad-library)/d' CMakeLists.txt || die "sed failed"
	fi

	# Add documentation and fix necessary code if requested
	if use doc ; then
		sed -i -e "s/subdirs.Add( wxT( \"kicad\" ) );/subdirs.Add( wxT( \"${PF}\" ) );/" \
			-e '/subdirs.Add( _T( "help" ) );/d' common/edaappl.cpp || die "sed failed"
	else
		sed -i -e '/add_subdirectory(kicad-doc)/d' CMakeLists.txt || die "sed failed"
	fi

	# Install examples in the right place if requested
	if use examples ; then
		sed -i -e 's:${KICAD_DATA}/demos:${KICAD_DOCS}/examples:' CMakeLists.txt || die "sed failed"
	else
		sed -i -e '/add_subdirectory(demos)/d' CMakeLists.txt || die "sed failed"
	fi

	# build fix from upstream:
	# https://lists.launchpad.net/kicad-developers/msg07907.html
	sed -e '/#include "detail\/transform_detail.hpp"/a \
#include "detail/polygon_sort_adaptor.hpp"' -i include/boost/polygon/polygon.hpp || die "sed failed"
}

src_configure() {
	need-wxwidgets unicode

	mycmakeargs="${mycmakeargs}
		-DKICAD_MINIZIP=OFF
		-DKICAD_CYRILLIC=ON
		-DwxUSE_UNICODE=ON
		-DKICAD_GOST=OFF
		-DKICAD_AUIMANAGER=OFF
		-DKICAD_AUITOOLBAR=OFF
		-DKICAD_DOCS=/usr/share/doc/${PF}
		-DKICAD_HELP=/usr/share/doc/${PF}
		$(cmake-utils_use python KICAD_PYTHON)"

	if [[ "${PV}" = "99999999" ]]; then
		mycmakeargs="${mycmakeargs} -DKICAD_TESTING_VERSION=ON"
	else
		mycmakeargs="${mycmakeargs} -DKICAD_STABLE_VERSION=ON"
	fi

	cmake-utils_src_configure
}

src_compile() {
	cmake-utils_src_compile
	use dev-doc && doxygen Doxyfile
}

src_install() {
	cmake-utils_src_install
	if use dev-doc ; then
		insinto /usr/share/doc/${PF}
		doins uncrustify.cfg
		cd Documentation
		doins -r GUI_Translation_HOWTO.pdf guidelines/UIpolicies.txt doxygen/doxygen
	fi
}

pkg_preinst() {
	gnome2_icon_savelist
}

pkg_postinst() {
	fdo-mime_desktop_database_update
	fdo-mime_mime_database_update
	gnome2_icon_cache_update

	if use minimal ; then
		ewarn "If the schematic and/or board editors complain about missing libraries when you"
		ewarn "open old projects, you will have to take one or more of the following actions :"
		ewarn "- Install the missing libraries manually."
		ewarn "- Remove the libraries from the 'Libs and Dir' preferences."
		ewarn "- Fix the libraries' locations in the 'Libs and Dir' preferences."
		ewarn "- Emerge kicad without the 'minimal' USE flag."
		elog
	fi
	elog "You may want to emerge media-gfx/wings if you want to create 3D models of components."
}

pkg_postrm() {
	fdo-mime_desktop_database_update
	fdo-mime_mime_database_update
	gnome2_icon_cache_update
}