Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
8bfcb00a
Commit
8bfcb00a
authored
Apr 06, 2014
by
Dick Hollenbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kicad-install.sh uses https protocol.
parent
c0ed2266
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
333 deletions
+12
-333
kicad-install-no_launchpad_account.sh
scripts/kicad-install-no_launchpad_account.sh
+0
-327
kicad-install.sh
scripts/kicad-install.sh
+12
-6
No files found.
scripts/kicad-install-no_launchpad_account.sh
deleted
100644 → 0
View file @
c0ed2266
#!/bin/bash -e
# Install KiCad from source onto either:
# -> a Ubuntu/Debian/Mint or
# -> a Red Hat
# compatible linux system.
#
# The "install_prerequisites" step is the only "distro dependent" one. That step could be modified
# for other linux distros.
#
# There are 3 package groups in a KiCad install:
# 1) Compiled source code in the form of executable programs.
# 2) User manuals and other documentation typically as *.pdf files.
# 3) a) Schematic parts, b) layout footprints, and c) 3D models for footprints.
#
# To achieve 1) source is checked out from its repo and compiled by this script then executables
# are installed using CMake.
# To achieve 2) documentation is checked out from its repo and installed using CMake.
# TO achieve 3a) and 3c) they are checked out from their repos and installed using CMake.
# To achieve 3b) a global fp-lib-table is put into your home directory which points to
# http://github.com/KiCad. No actual footprints are installed locally, internet access is used
# during program operation to fetch footprints from github as if it was a remote drive in the cloud.
# If you want to install those same KiCad footprints locally, you may run a separate script
# named library-repos-install.sh found in this same directory. That script requires that "git" be on
# your system whereas this script does not. The footprints require some means to download them and
# bzr-git seems not up to the task. wget or curl would also work.
# Since bash is invoked with -e by the first line of this script, all the steps in this script
# must succeed otherwise bash will abort at the first non-zero error code. Therefore any script
# functions must be crafted to anticipate numerous conditions, such that no command fails unless it
# is a serious situation.
# Set where the 3 source trees will go, use a full path
WORKING_TREES
=
~/kicad_sources
# CMake Options
OPTS
=
"
$OPTS
-DCMAKE_BUILD_TYPE=Release"
OPTS
=
"
$OPTS
-DBUILD_GITHUB_PLUGIN=ON"
# Python scripting, uncomment to enable
#OPTS="$OPTS -DKICAD_SCRIPTING=ON -DKICAD_SCRIPTING_MODULES=ON -DKICAD_SCRIPTING_WXPYTHON=ON"
#a connection to https://code.launchpad.net does not request a launchpad account
#but, obviously, you cannot commit anything
REPOS
=
https://code.launchpad.net
LEGACY_LIB_REPO
=
$REPOS
/~dickelbeck/kicad/library-read-only
SRCS_REPO
=
$REPOS
/~kicad-product-committers/kicad/product
DOCS_REPO
=
$REPOS
/~kicad-developers/kicad/doc
usage
()
{
echo
""
echo
" usage:"
echo
""
echo
"./kicad-install.sh <cmd>"
echo
" where <cmd> is one of:"
echo
" --install-or-update (does full installation or update.)"
echo
" --remove-sources (removes source trees for another attempt.)"
echo
" --uninstall-libraries (removes KiCad supplied libraries.)"
echo
" --uninstall-kicad (uninstalls all of KiCad but leaves source trees.)"
echo
""
echo
"example:"
echo
' $ ./kicad-install.sh --install-or-update'
}
install_prerequisites
()
{
# Find a package manager, PM
PM
=
$(
command
-v
yum
||
command
-v
apt-get
)
# assume all these Debian, Mint, Ubuntu systems have same prerequisites
if
[
"
$(
expr
match
"
$PM
"
'.*\(apt-get\)'
)
"
==
"apt-get"
]
;
then
#echo "debian compatible system"
sudo
apt-get
install
\
bzr
\
bzrtools
\
build-essential
\
cmake
\
cmake-curses-gui
\
debhelper
\
doxygen
\
grep
\
libbz2-dev
\
libcairo2-dev
\
libglew-dev
\
libssl-dev
\
libwxgtk2.8-dev
\
python-wxgtk2.8
# assume all yum systems have same prerequisites
elif
[
"
$(
expr
match
"
$PM
"
'.*\(yum\)'
)
"
==
"yum"
]
;
then
#echo "red hat compatible system"
# Note: if you find this list not to be accurate, please submit a patch:
sudo
yum groupinstall
"Development Tools"
sudo
yum
install
\
bzr
\
bzrtools
\
bzip2-libs
\
bzip2-devel
\
cmake
\
cmake-gui
\
doxygen
\
cairo-devel
\
glew-devel
\
grep
\
openssl-devel
\
wxGTK-devel
\
wxPython
else
echo
echo
"Incompatible System. Neither 'yum' nor 'apt-get' found. Not possible to continue."
echo
exit
1
fi
# ensure bzr name and email are set. No message since bzr prints an excellent diagnostic.
bzr
whoami
||
exit
2
}
rm_build_dir
()
{
local dir
=
"
$1
"
echo
"removing directory
$dir
"
if
[
-e
"
$dir
/install_manifest.txt"
]
;
then
# this file is often created as root, so remove as root
sudo rm
"
$dir
/install_manifest.txt"
2> /dev/null
fi
if
[
-d
"
$dir
"
]
;
then
rm
-rf
"
$dir
"
fi
}
cmake_uninstall
()
{
# assume caller set the CWD, and is only telling us about it in $1
local dir
=
"
$1
"
cwd
=
`
pwd
`
if
[
"
$cwd
"
!=
"
$dir
"
]
;
then
echo
"missing dir
$dir
"
elif
[
!
-e
install_manifest.txt
]
;
then
echo
echo
"Missing file
$dir
/install_manifest.txt."
else
echo
"uninstalling from
$dir
"
sudo
make uninstall
sudo rm
install_manifest.txt
fi
}
# Function set_env_var
# sets an environment variable globally.
set_env_var
()
{
local
var
=
$1
local
val
=
$2
if
[
-d
/etc/profile.d
]
;
then
if
[
!
-e
/etc/profile.d/kicad.sh
]
||
!
grep
"
$var
"
/etc/profile.d/kicad.sh
>>
/dev/null
;
then
echo
echo
"Adding environment variable
$var
to file /etc/profile.d/kicad.sh"
echo
"Please logout and back in after this script completes for environment"
echo
"variable to get set into environment."
sudo
sh
-c
"echo export
$var
=
$val
>> /etc/profile.d/kicad.sh"
fi
elif
[
-e
/etc/environment
]
;
then
if
!
grep
"
$var
"
/etc/environment
>>
/dev/null
;
then
echo
echo
"Adding environment variable
$var
to file /etc/environment"
echo
"Please reboot after this script completes for environment variable to get set into environment."
sudo
sh
-c
"echo
$var
=
$val
>> /etc/environment"
fi
fi
}
install_or_update
()
{
echo
"step 1) installing pre-requisites"
install_prerequisites
echo
"step 2) make
$WORKING_TREES
if it does not exist"
if
[
!
-d
"
$WORKING_TREES
"
]
;
then
sudo mkdir
-p
"
$WORKING_TREES
"
echo
" mark
$WORKING_TREES
as owned by me"
sudo chown
-R
`
whoami
`
"
$WORKING_TREES
"
fi
cd
$WORKING_TREES
echo
"step 3) checking out the source code from launchpad repo..."
if
[
!
-d
"
$WORKING_TREES
/kicad.bzr"
]
;
then
bzr checkout
$SRCS_REPO
kicad.bzr
echo
" source repo to local working tree."
else
cd
kicad.bzr
bzr up
echo
" local source working tree updated."
cd
../
fi
if
[
!
-d
"
$WORKING_TREES
/kicad-lib.bzr"
]
;
then
bzr checkout
$LEGACY_LIB_REPO
kicad-lib.bzr
echo
' kicad-lib checked out.'
else
cd
kicad-lib.bzr
bzr up
echo
' kicad-lib repo updated.'
cd
../
fi
echo
"step 5) checking out the documentation from launchpad repo..."
if
[
!
-d
"
$WORKING_TREES
/kicad-doc.bzr"
]
;
then
bzr checkout
$DOCS_REPO
kicad-doc.bzr
echo
" docs checked out."
else
cd
kicad-doc.bzr
bzr up
echo
" docs working tree updated."
cd
../
fi
echo
"step 6) compiling source code..."
cd
kicad.bzr
if
[
!
-d
"build"
]
;
then
mkdir
build
&&
cd
build
cmake
$OPTS
../
else
cd
build
# Although a "make clean" is sometimes needed, more often than not it slows down the update
# more than it is worth. Do it manually if you need to in this directory.
# make clean
fi
make
-j4
echo
" kicad compiled."
echo
"step 7) installing KiCad program files..."
sudo
make
install
echo
" kicad program files installed."
echo
"step 8) installing libraries..."
cd
../../kicad-lib.bzr
rm_build_dir build
mkdir
build
&&
cd
build
cmake ../
sudo
make
install
echo
" kicad-lib.bzr installed."
echo
"step 9) as non-root, install user configuration files..."
# install ~/fp-lib-table
make install_github_fp-lib-table
echo
" kicad user-configuration files installed."
echo
"step 10) installing documentation..."
cd
../../kicad-doc.bzr
rm_build_dir build
mkdir
build
&&
cd
build
cmake ../
sudo
make
install
echo
" kicad-doc.bzr installed."
echo
"step 11) check for environment variables..."
if
[
-z
"
${
KIGITHUB
}
"
]
;
then
set_env_var KIGITHUB https://github.com/KiCad
fi
echo
echo
'All KiCad "--install-or-update" steps completed, you are up to date.'
echo
}
if
[
$#
-eq
1
-a
"
$1
"
==
"--remove-sources"
]
;
then
echo
"deleting
$WORKING_TREES
"
rm_build_dir
"
$WORKING_TREES
/kicad.bzr/build"
rm_build_dir
"
$WORKING_TREES
/kicad-lib.bzr/build"
rm_build_dir
"
$WORKING_TREES
/kicad-doc.bzr/build"
rm
-rf
"
$WORKING_TREES
"
exit
fi
if
[
$#
-eq
1
-a
"
$1
"
==
"--install-or-update"
]
;
then
install_or_update
exit
fi
if
[
$#
-eq
1
-a
"
$1
"
==
"--uninstall-libraries"
]
;
then
cd
"
$WORKING_TREES
/kicad-lib.bzr/build"
cmake_uninstall
"
$WORKING_TREES
/kicad-lib.bzr/build"
exit
fi
if
[
$#
-eq
1
-a
"
$1
"
==
"--uninstall-kicad"
]
;
then
cd
"
$WORKING_TREES
/kicad.bzr/build"
cmake_uninstall
"
$WORKING_TREES
/kicad.bzr/build"
cd
"
$WORKING_TREES
/kicad-lib.bzr/build"
cmake_uninstall
"
$WORKING_TREES
/kicad-lib.bzr/build"
# this may fail since "uninstall" support is a recent feature of this repo:
cd
"
$WORKING_TREES
/kicad-doc.bzr/build"
cmake_uninstall
"
$WORKING_TREES
/kicad-doc.bzr/build"
exit
fi
usage
scripts/kicad-install.sh
100755 → 100644
View file @
8bfcb00a
...
...
@@ -35,13 +35,19 @@
WORKING_TREES
=
~/kicad_sources
# CMake Options
OPTS
=
"
$OPTS
-DCMAKE_BUILD_TYPE=Release"
OPTS
=
"
$OPTS
-DBUILD_GITHUB_PLUGIN=ON"
#OPTS="$OPTS -DBUILD_GITHUB_PLUGIN=OFF"
# Python scripting, uncomment to enable
#OPTS="$OPTS -DKICAD_SCRIPTING=ON -DKICAD_SCRIPTING_MODULES=ON -DKICAD_SCRIPTING_WXPYTHON=ON"
LIB_REPO
=
~dickelbeck/kicad/library-read-only
# Use https under bazaar to retrieve repos because this does not require a
# launchpad.net account. Whereas lp:<something> requires a launchpad account.
# https results in read only access.
REPOS
=
https://code.launchpad.net
LEGACY_LIB_REPO
=
$REPOS
/~dickelbeck/kicad/library-read-only
SRCS_REPO
=
$REPOS
/~kicad-product-committers/kicad/product
DOCS_REPO
=
$REPOS
/~kicad-developers/kicad/doc
usage
()
...
...
@@ -196,7 +202,7 @@ install_or_update()
echo
"step 3) checking out the source code from launchpad repo..."
if
[
!
-d
"
$WORKING_TREES
/kicad.bzr"
]
;
then
bzr checkout
lp:kicad
kicad.bzr
bzr checkout
$SRCS_REPO
kicad.bzr
echo
" source repo to local working tree."
else
cd
kicad.bzr
...
...
@@ -206,7 +212,7 @@ install_or_update()
fi
if
[
!
-d
"
$WORKING_TREES
/kicad-lib.bzr"
]
;
then
bzr checkout
"lp:
$LIB_REPO
"
kicad-lib.bzr
bzr checkout
$LEGACY_LIB_REPO
kicad-lib.bzr
echo
' kicad-lib checked out.'
else
cd
kicad-lib.bzr
...
...
@@ -217,7 +223,7 @@ install_or_update()
echo
"step 5) checking out the documentation from launchpad repo..."
if
[
!
-d
"
$WORKING_TREES
/kicad-doc.bzr"
]
;
then
bzr checkout
lp:~kicad-developers/kicad/doc
kicad-doc.bzr
bzr checkout
$DOCS_REPO
kicad-doc.bzr
echo
" docs checked out."
else
cd
kicad-doc.bzr
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment