Update GitLab CI script
Changes SHA detection to find the start of the MR and makes check_coding return non-zero when formatting changes needed
This commit is contained in:
parent
581dc81358
commit
f0c386f5dd
|
@ -1,5 +1,13 @@
|
|||
before_script:
|
||||
- apt-get update -qq -y && apt-get install -y -qq clang-format git
|
||||
# We must manually add the KiCad remote to ensure it is named sensibly
|
||||
- git remote add product https://gitlab.com/kicad/code/kicad.git
|
||||
- git fetch -n product
|
||||
- git fetch -n origin
|
||||
# Get the SHAs of the commits
|
||||
- "TARGET_HEAD_SHA=$(git rev-parse product/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME})"
|
||||
- "SOURCE_HEAD_SHA=$(git rev-parse origin/${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME})"
|
||||
- "MERGE_BASE_SHA=$(git merge-base ${TARGET_HEAD_SHA} ${SOURCE_HEAD_SHA})"
|
||||
|
||||
# The variable CI_COMMIT_BEFORE_SHA is not available in normal merge requests
|
||||
# so we must build the commit hash ourselves, see:
|
||||
|
@ -7,9 +15,7 @@ before_script:
|
|||
test_formatting:
|
||||
stage: test
|
||||
script:
|
||||
- git fetch -n origin
|
||||
- "TARGET_SHA=$(git rev-parse origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME)"
|
||||
- echo "Testing formatting from commit $TARGET_SHA"
|
||||
- ./tools/check_coding.sh --diff --commit $TARGET_SHA
|
||||
- echo "Testing formatting from commit ${MERGE_BASE_SHA}"
|
||||
- ./tools/check_coding.sh --diff --ci --commit ${MERGE_BASE_SHA}
|
||||
only:
|
||||
- merge_requests
|
||||
|
|
198
INSTALL.txt
198
INSTALL.txt
|
@ -3,184 +3,166 @@ KiCad installation
|
|||
|
||||
The parts of KiCad
|
||||
------------------
|
||||
KiCad consists of 3 packages:
|
||||
|
||||
kicad - KiCad programs and core files.
|
||||
kicad-doc - Documentation and interactive help (optional package).
|
||||
kicad-library - KiCad schematic, pcb & 3D-model libraries (optional package).
|
||||
KiCad consists of 3 components:
|
||||
|
||||
kicad - KiCad programs and core files.
|
||||
kicad-doc - Documentation and interactive help (optional package).
|
||||
kicad-library - KiCad schematic, pcb & 3D-model libraries (optional package).
|
||||
|
||||
This repository contains the source code for the main KiCad programs. The documentation
|
||||
and library sources are available at https://gitlab.com/kicad
|
||||
|
||||
|
||||
Installation from binary packages
|
||||
---------------------------------
|
||||
|
||||
KiCad binary packages exist for Linux and Windows (XP, 2000).
|
||||
Compiled KiCad binaries exist for Windows (7, 8.1, 10), Mac OS (10.12+) and several
|
||||
Linux distributions (Fedora, Debian, Ubuntu, Arch). These are available from the
|
||||
main KiCad website: https://kicad-pcb.org/download/
|
||||
|
||||
Data files (schematic, boards, libraries) are compatible with all platforms.
|
||||
|
||||
*.zip - KiCad packages for Windows.
|
||||
*.tbz2 - KiCad for Linux.
|
||||
Data files (schematic, boards, libraries) are compatible with all platforms.
|
||||
|
||||
|
||||
Installation from binary packages for Windows
|
||||
---------------------------------------------
|
||||
|
||||
The KiCad binary archive can be installed anywhere on the system that as long as the user
|
||||
has write privileges.
|
||||
|
||||
You can create a shortcut to '${prefix}\bin\kicad.exe' where ${prefix} is the install path.
|
||||
KiCad can be installed anywhere on the system as long as the user has write privileges.
|
||||
Pre-made installers are available on the KiCad website: https://kicad-pcb.org/download/windows/
|
||||
|
||||
|
||||
Installation from binary packages for Linux
|
||||
-------------------------------------------
|
||||
|
||||
KiCad can be installed in '/usr' or '/usr/local'. You must have "root" access for installation.
|
||||
|
||||
cd /
|
||||
tar -xjf kicad-{version}.tbz2
|
||||
tar -xjf kicad-doc-{version}.tbz2
|
||||
tar -xjf kicad-library-{version}.tbz2
|
||||
|
||||
The main program is '/usr/bin/kicad'.
|
||||
KiCad comes packaged on many Linux platforms including Debian, Fedora, Ubuntu and Arch,
|
||||
and is available in their respective package repositories. More information can be found on
|
||||
the platform's page at https://kicad-pcb.org/download/
|
||||
|
||||
|
||||
Linux and Windows KiCad install tree
|
||||
Linux install tree
|
||||
-------------------------------------
|
||||
|
||||
${prefix}/bin - Binaries (executable files).
|
||||
${prefix}/share/doc/kicad/ - Various documentation.
|
||||
${prefix}/share/doc/kicad/help - Interactive help.
|
||||
${prefix}/share/kicad/demos - Sample schematics and printed boards.
|
||||
${prefix}/share/kicad/internat - Dictionaries for interface localization.
|
||||
${prefix}/share/kicad/library - Interface localization files.
|
||||
${prefix}/share/kicad/modules - Module libraries for printed boards.
|
||||
${prefix}/share/kicad/modules/packages3d - 3D component models (.wrl and .step format).
|
||||
The default locations KiCad uses to install its components on Linux are:
|
||||
|
||||
KiCad searches for the libraries, templates, 3D models, etc. bin/../share.
|
||||
${prefix}/bin - Binaries (executable files).
|
||||
${prefix}/lib/kicad - Shared libraries
|
||||
${prefix}/share/doc/kicad/ - Various documentation.
|
||||
${prefix}/share/doc/kicad/help - Interactive help.
|
||||
${prefix}/share/kicad/demos - Sample schematics and printed boards.
|
||||
${prefix}/share/kicad/template - Template projects and sheets.
|
||||
${prefix}/share/kicad/library - Symbol libraries.
|
||||
${prefix}/share/kicad/modules - Module libraries for printed boards.
|
||||
${prefix}/share/kicad/modules/packages3d - 3D component models (.wrl and .step format).
|
||||
|
||||
Warning:
|
||||
Do not change the KiCad tree, or the location of binary files. Otherwise
|
||||
KiCad may not be able to find some or all of its required files.
|
||||
KiCad searches for the libraries, templates, 3D models, etc. bin/../share.
|
||||
|
||||
Warning:
|
||||
Do not change the KiCad tree, or the location of binary files. Otherwise
|
||||
KiCad may not be able to find some or all of its required files.
|
||||
|
||||
|
||||
Mac OS X KiCad tree
|
||||
-------------------
|
||||
|
||||
System wide files
|
||||
System wide files
|
||||
|
||||
/Library/Application Support/kicad/demos
|
||||
/Library/Application Support/kicad/internat
|
||||
/Library/Application Support/kicad/library
|
||||
/Library/Application Support/kicad/modules
|
||||
/Library/Application Support/kicad/modules/packages3d
|
||||
/Library/Application Support/kicad/demos
|
||||
/Library/Application Support/kicad/internat
|
||||
/Library/Application Support/kicad/library
|
||||
/Library/Application Support/kicad/modules
|
||||
/Library/Application Support/kicad/modules/packages3d
|
||||
|
||||
User files can be the same as the system wide files but only inside the users home directory.
|
||||
User files can be the same as the system wide files but only inside the users home directory.
|
||||
|
||||
$HOME/Library/Application Support/kicad
|
||||
$HOME/Library/Application Support/kicad
|
||||
|
||||
Warning:
|
||||
These paths are hardcoded into KiCad, if you put them somewhere else KiCad will not find
|
||||
them when a new project is created.
|
||||
|
||||
Warning:
|
||||
These paths are hardcoded into KiCad, if you put them somewhere else KiCad will not find
|
||||
them when a new project is created.
|
||||
|
||||
Installation from source code
|
||||
-----------------------------
|
||||
|
||||
Currently the only supported compilers are GCC on linux and windows and clang on OS X.
|
||||
Currently the only supported compilers are GCC on linux and windows and clang on OS X.
|
||||
|
||||
Some dependencies must be satisfied for the correct installation of KiCad:
|
||||
Some dependencies must be satisfied for the correct installation of KiCad:
|
||||
|
||||
wxWidgets >= 3.0.0 http://www.wxwidgets.org/
|
||||
wxWidgets >= 3.0.0 http://www.wxwidgets.org/
|
||||
|
||||
CMake >= 2.8.4 http://www.cmake.org/
|
||||
CMake >= 3.0.2 http://www.cmake.org/
|
||||
|
||||
Boost C++ Libraries: >= 1.54 http://www.boost.org/
|
||||
files used by kicad are autmatically downloaded and patched if needed
|
||||
from boost site.
|
||||
Boost C++ Libraries: >= 1.59 http://www.boost.org/
|
||||
|
||||
OpenGL >= 2.1
|
||||
Linux: Mesa 3D Graphics Library http://www.mesa3d.org/
|
||||
Windows: built-in
|
||||
OpenGL >= 2.1
|
||||
Linux: Mesa 3D Graphics Library http://www.mesa3d.org/
|
||||
Windows: built-in
|
||||
|
||||
Zlib Compression Library http://www.zlib.net/
|
||||
Zlib Compression Library http://www.zlib.net/
|
||||
|
||||
cairo http://cairographics.org/
|
||||
cairo >= 1.12 http://cairographics.org/
|
||||
|
||||
GLEW http://glew.sourceforge.net/
|
||||
GLEW http://glew.sourceforge.net/
|
||||
|
||||
libcurl http://curl.haxx.se/
|
||||
libcurl http://curl.haxx.se/
|
||||
|
||||
OpenMP (optional) http://openmp.org/
|
||||
OpenMP (optional) http://openmp.org/
|
||||
|
||||
GLM >= 9.5.4 http://glm.g-truc.net/
|
||||
GLM >= 9.5.4 http://glm.g-truc.net/
|
||||
|
||||
pkg-config http://pkgconfig.freedesktop.org/
|
||||
pkg-config http://pkgconfig.freedesktop.org/
|
||||
|
||||
Doxygen (optional) http://www.doxygen.nl
|
||||
Doxygen (optional) http://www.doxygen.nl
|
||||
|
||||
python >= 2.6 (optional) http://python.org/
|
||||
python >= 2.6 (optional) http://python.org/
|
||||
|
||||
wxPython (optional) http://www.wxpython.org/
|
||||
wxPython (optional) http://www.wxpython.org/
|
||||
|
||||
SWIG >= 3.0 (optional) http://swig.org/
|
||||
SWIG >= 3.0 (optional) http://swig.org/
|
||||
|
||||
libngspice (optional) http://ngspice.sourceforge.net/
|
||||
libngspice (optional) http://ngspice.sourceforge.net/
|
||||
|
||||
OCE >= 0.16 (optional) https://github.com/tpaviot/oce
|
||||
One of:
|
||||
OCE >= 0.16 (optional) https://github.com/tpaviot/oce
|
||||
|
||||
In source-tree-build are mostly unwanted, so make a subdir called "build" and
|
||||
change to it.
|
||||
OCC >= 6.8.0 (optiona) https://www.opencascade.com/content/latest-release
|
||||
|
||||
Call cmake with the path to KiCad. E.g., when your build-folder is "build"
|
||||
within source-tree, type "cmake ../".
|
||||
|
||||
Now your system get checked if it is able compiling KiCad and cmake generates
|
||||
the Makefiles.
|
||||
|
||||
After calling cmake just type "make" and build begins.
|
||||
|
||||
It is easy to build only a specific binary such as pcbnew alone:
|
||||
make pcbnew
|
||||
|
||||
After "make" type "make install" and install begins.
|
||||
|
||||
You may install to a temporary-root with
|
||||
make install DESTDIR=<temproot>
|
||||
|
||||
If you want to uninstall KiCad again type "make uninstall" from within the
|
||||
build directory.
|
||||
Complete documentation for building from source can be found in the developer
|
||||
documentation located in Documentation/development/compiling.md
|
||||
|
||||
|
||||
Important parameters to cmake
|
||||
-----------------------------
|
||||
|
||||
See Documentation/development/compiling.md for a list of all CMake options
|
||||
available when compiling KiCad.
|
||||
See Documentation/development/compiling.md for a list of all CMake options
|
||||
available when compiling KiCad.
|
||||
|
||||
-DCMAKE_BUILD_TYPE=<buildtype>
|
||||
<buildtype> may current one of "Debug" and "Release".
|
||||
-DCMAKE_BUILD_TYPE=<buildtype>
|
||||
<buildtype> may current one of "Debug" and "Release".
|
||||
|
||||
-DCMAKE_INSTALL_PREFIX=<prefix>
|
||||
Default to "/usr/local".
|
||||
-DCMAKE_INSTALL_PREFIX=<prefix>
|
||||
Default to "/usr/local".
|
||||
|
||||
-DwxWidgets_ROOT_DIR=<wxInstallDir>
|
||||
Required for Windows platform.
|
||||
-DwxWidgets_ROOT_DIR=<wxInstallDir>
|
||||
Required for Windows platform.
|
||||
|
||||
-DwxWidgets_USE_DEBUG=ON
|
||||
Can be used only with -DCMAKE_BUILD_TYPE=Debug
|
||||
-DwxWidgets_USE_DEBUG=ON
|
||||
Can be used only with -DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
-DCMAKE_CXX_FLAGS=<some extra flags>
|
||||
Extra flags for the c++ compiler for your system required.
|
||||
-DCMAKE_CXX_FLAGS=<some extra flags>
|
||||
Extra flags for the c++ compiler for your system required.
|
||||
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
When more output is wanted use this cmake parameter or call "make VERBOSE=1".
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
When more output is wanted use this cmake parameter or call "make VERBOSE=1".
|
||||
|
||||
|
||||
Extra CFLAGS and linker flags
|
||||
-----------------------------
|
||||
|
||||
If you require extra flags for compiler and linker you may give them via
|
||||
environment variables
|
||||
"CXXFLAGS" (c++ compiler)
|
||||
"LDFLAGS" (for linker)
|
||||
"CFLAGS" (for c-compiler, not needed in kdesvn build)
|
||||
If you require extra flags for compiler and linker you may give them via
|
||||
environment variables
|
||||
"CXXFLAGS" (c++ compiler)
|
||||
"LDFLAGS" (for linker)
|
||||
"CFLAGS" (for c-compiler, not needed in kdesvn build)
|
||||
|
||||
eg., it may usefull on 64bit systems "-m64" to CXXFLAGS and LDFLAGS.
|
||||
eg., it may usefull on 64bit systems "-m64" to CXXFLAGS and LDFLAGS.
|
||||
|
|
|
@ -33,6 +33,7 @@ usage='usage: check_coding.sh [<options>] [--]
|
|||
--cached Re-format changes currently staged for commit (default)
|
||||
--amend Re-format changes made in the previous commit
|
||||
--commit <commit-rev> Re-format changes made since commit-rev
|
||||
--ci Run in CI mode to return non-zero when there are formatting errors
|
||||
'
|
||||
|
||||
help="$usage"'
|
||||
|
@ -48,6 +49,7 @@ die() {
|
|||
}
|
||||
|
||||
# Parse command-line arguments.
|
||||
ci=false
|
||||
diff=false
|
||||
mode='cached'
|
||||
|
||||
|
@ -58,8 +60,9 @@ while test "$#" != 0; do
|
|||
--cached) mode='cached' ;;
|
||||
--commit) mode='commit'
|
||||
format_ref_commit="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
--ci) ci=true ;;
|
||||
--) shift ; break ;;
|
||||
-*) die "$usage" ;;
|
||||
*) break ;;
|
||||
|
@ -104,14 +107,47 @@ else
|
|||
format_command="git clang-format ${format_commit}"
|
||||
fi
|
||||
|
||||
${git_list_files} |
|
||||
|
||||
# Filter sources with the formatting attribute set
|
||||
git check-attr ${format_attribute} --stdin |
|
||||
if [ "${ci}" = true ]; then
|
||||
# In CI mode we want to set the return value based on modifications (1 = modifications
|
||||
# needed, 0 = no modifications). We must capture the output to do this (since git clang-format
|
||||
# will always return 0). By capturing the output, we break the terminal coloring, so we hide
|
||||
# this inside a special CI mode.
|
||||
|
||||
# output only the file names
|
||||
grep ": set$" |
|
||||
cut -d: -f1 |
|
||||
format_results="$( \
|
||||
${git_list_files} |
|
||||
|
||||
# Apply the formatting command
|
||||
xargs ${format_command}
|
||||
# Filter sources with the formatting attribute set
|
||||
git check-attr ${format_attribute} --stdin |
|
||||
|
||||
# output only the file names
|
||||
grep ": set$" |
|
||||
cut -d: -f1 |
|
||||
|
||||
# Apply the formatting command
|
||||
xargs ${format_command}
|
||||
)"
|
||||
|
||||
echo "$format_results"
|
||||
|
||||
# Read the results to see if modifications have been requested
|
||||
if [[ $format_results == "no modified files to format" ]] \
|
||||
|| [[ $format_results == "clang-format did not modify any files" ]];
|
||||
then
|
||||
true
|
||||
else
|
||||
false
|
||||
fi
|
||||
else
|
||||
${git_list_files} |
|
||||
|
||||
# Filter sources with the formatting attribute set
|
||||
git check-attr ${format_attribute} --stdin |
|
||||
|
||||
# output only the file names
|
||||
grep ": set$" |
|
||||
cut -d: -f1 |
|
||||
|
||||
# Apply the formatting command
|
||||
xargs ${format_command}
|
||||
fi
|
||||
|
|
Loading…
Reference in New Issue