blob: dfaae912cc91dfff9640dd11180990b0cef04a25 (
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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=6
PYTHON_COMPAT=( python2_7 )
WX_GTK_VER="3.0"
inherit cmake-utils eutils flag-o-matic gnome2-utils python-single-r1 wxwidgets vcs-snapshot versionator xdg
DESCRIPTION="Electronic Schematic and PCB design tools."
HOMEPAGE="http://www.kicad-pcb.org"
LIBCONTEXT_COMMIT="3d92a1a50f4749b5a92131a957c9615473be85b4"
SERIES=$(get_version_component_range 1-2)
SRC_URI="https://launchpad.net/${PN}/${SERIES}/${PV}/+download/${P}.tar.xz
!minimal? (
http://downloads.kicad-pcb.org/libraries/${PN}-footprints-${PV}.tar.gz
http://downloads.kicad-pcb.org/libraries/kicad-library-${PV}.tar.gz
)
i18n? ( https://github.com/KiCad/${PN}-i18n/archive/${PV}.tar.gz -> ${P}-i18n.tar.gz )
https://github.com/twlostow/libcontext/archive/${LIBCONTEXT_COMMIT}.tar.gz -> ${PN}-libcontext.tar.gz"
LICENSE="GPL-2+ GPL-3+ Boost-1.0"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="debug doc examples github i18n libressl minimal +python"
LANGS="bg ca cs de el es fi fr hu it ja ko nl pl pt ru sk sl sv zh_CN"
for lang in ${LANGS} ; do
IUSE="${IUSE} linguas_${lang}"
done
unset lang
unset LANGS
REQUIRED_USE="
python? ( ${PYTHON_REQUIRED_USE} )"
COMMON_DEPEND="x11-libs/wxGTK:${WX_GTK_VER}[X,opengl]
python? (
dev-python/wxpython:${WX_GTK_VER}[opengl,${PYTHON_USEDEP}]
${PYTHON_DEPS}
)
>=dev-libs/boost-1.56[nls,threads,python?,${PYTHON_USEDEP}]
github? (
libressl? ( dev-libs/libressl:0= )
!libressl? ( dev-libs/openssl:0= )
)
media-libs/glew:0=
media-libs/freeglut
media-libs/mesa
sys-libs/zlib
x11-libs/cairo"
DEPEND="${COMMON_DEPEND}
doc? ( app-doc/doxygen )
i18n? ( virtual/libintl )
python? ( dev-lang/swig:0 )"
RDEPEND="${COMMON_DEPEND}
sci-electronics/electronics-menu"
pkg_setup() {
python-single-r1_pkg_setup
setup-wxwidgets
}
src_prepare() {
xdg_src_prepare
# Add separated out libcontext files and patch source to use them
mkdir -p "${S}/common/system/" || die
mkdir -p "${S}/include/system/" || die
cp "${WORKDIR}/${PN}-libcontext/libcontext.cpp" "${S}/common/system/libcontext.cpp" || die
cp "${WORKDIR}/${PN}-libcontext/libcontext.h" "${S}/include/system/libcontext.h" || die
# Path source to use new "built in" libcontext. Also patch libcontext.cpp to have correct include file.
# Path must be applied after new libcontext files have been copied to the kicad source directory.
eapply "${FILESDIR}/${PN}-4.0.4-boost-context.patch"
# remove all the non unix file endings
while IFS="" read -d $'\0' -r f; do
edos2unix "${f}"
done < <(find "${S}" -type f -name "*.desktop" -print0)
# Remove cvpcb desktop file while it does nothing
rm "${WORKDIR}/${P}/resources/linux/mime/applications/cvpcb.desktop" || die
# Handle optional minimal install.
if use minimal; then
# remove templates as they are not needed to run binaries
sed -e '/add_subdirectory( template )/d' -i CMakeLists.txt || die
else
# create a link to the parts library in the main project folder
ln -s "${WORKDIR}/kicad-library-${PV}" "${S}/${PN}-library" || die
# create a link to the footprints library and add cmake build rule for it
ln -s "${WORKDIR}/${PN}-footprints-${PV}" "${S}/${PN}-footprints" || die
cp "${FILESDIR}/${PN}-footprints-cmakelists.txt" "${WORKDIR}/${PN}-footprints-${PV}/CMakeLists.txt" || die
# add the libraries directory to cmake as a subproject to build
sed "/add_subdirectory( bitmaps_png )/a add_subdirectory( ${PN}-library )" -i CMakeLists.txt || die
# add the footprints directory to cmake as a subproject to build
sed "/add_subdirectory( ${PN}-library )/a add_subdirectory( ${PN}-footprints )" -i CMakeLists.txt || die
# remove duplicate uninstall directions for the library module
sed '/make uninstall/,/# /d' -i ${PN}-library/CMakeLists.txt || die
fi
# Add internationalization for the GUI
if use i18n; then
# create a link to the translations library in the main project folder
ln -s "${WORKDIR}/${P}-i18n" "${S}/${PN}-i18n" || die
# Remove unused languages. Project generates only languages specified in the
# file in LINGUAS in the subproject folder. By default all languages are added
# so we sed out the unused ones based on the user linguas_* settings.
local lang
for lang in ${LANGS}; do
if ! use linguas_${lang}; then
sed "/${lang}/d" -i ${PN}-i18n/LINGUAS || die
fi
done
# cmakelists does not respect our build dir variables, so make it point to the right location
sed "s|\${CMAKE_BINARY_DIR}|${WORKDIR}/${P}_build|g" -i ${PN}-i18n/CMakeLists.txt || die
# we also make from the master project so the source dir is understood incorretly, replace that too
sed "s|\${CMAKE_SOURCE_DIR}/\${LANG}|\${CMAKE_SOURCE_DIR}/${PN}-i18n/\${LANG}|g" -i ${PN}-i18n/CMakeLists.txt || die
# add the translations directory to cmake as a subproject to build
sed "/add_subdirectory( bitmaps_png )/a add_subdirectory( ${PN}-i18n )" -i CMakeLists.txt || die
# remove duplicate uninstall directions for the translation module
sed '/make uninstall/,$d' -i ${PN}-i18n/CMakeLists.txt || die
fi
# Install examples in the right place if requested
if use examples; then
# install demos into the examples folder too
sed -e 's:${KICAD_DATA}/demos:${KICAD_DOCS}/examples:' -i CMakeLists.txt || die
else
# remove additional demos/examples as its not strictly required to run the binaries
sed -e '/add_subdirectory( demos )/d' -i CMakeLists.txt || die
fi
# Add important missing doc files
sed -e 's/INSTALL.txt/AUTHORS.txt CHANGELOG.txt README.txt TODO.txt/' -i CMakeLists.txt || die
}
src_configure() {
local mycmakeargs=(
-DPYTHON_DEST="$(python_get_sitedir)"
-DPYTHON_EXECUTABLE="${PYTHON}"
-DPYTHON_INCLUDE_DIR="$(python_get_includedir)"
-DPYTHON_LIBRARY="$(python_get_library_path)"
-DKICAD_DOCS="/usr/share/doc/${PF}"
-DKICAD_HELP="/usr/share/doc/${PF}/help"
-DKICAD_REPO_NAME="stable"
-DKICAD_BUILD_VERSION="${PV}"
-DwxUSE_UNICODE=ON
-DKICAD_SKIP_BOOST=ON
-DBUILD_GITHUB_PLUGIN="$(usex github)"
-DKICAD_SCRIPTING="$(usex python)"
-DKICAD_SCRIPTING_MODULES="$(usex python)"
-DKICAD_SCRIPTING_WXPYTHON="$(usex python)"
-DKICAD_I18N_UNIX_STRICT_PATH="$(usex i18n)"
)
if use debug; then
append-cxxflags "-DDEBUG"
append-cflags "-DDEBUG"
fi
cmake-utils_src_configure
}
src_compile() {
cmake-utils_src_compile
if use doc; then
doxygen Doxyfile || die
fi
}
src_install() {
cmake-utils_src_install
use python && python_optimize
if use doc ; then
dodoc uncrustify.cfg
cd Documentation || die
dodoc -r GUI_Translation_HOWTO.pdf guidelines/UIpolicies.txt doxygen/.
fi
}
pkg_preinst() {
xdg_pkg_preinst
gnome2_icon_savelist
}
pkg_postinst() {
xdg_pkg_postinst
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 ${PN} without the 'minimal' USE flag."
fi
elog ""
elog "You may want to emerge media-gfx/wings if you want to create 3D models of components."
elog "For help and extended documentation emerge app-doc/kicad-doc."
}
pkg_postrm() {
xdg_pkg_postrm
gnome2_icon_cache_update
}
|