arm mac support
Nice to meet you, everyone.
I succeed to build kicad on arm mac, but some functions are still not working.
It is difficult for me to solve all problems by myself, so can you help me?
How to build
on arm mac
git clone -b support_m1_mac git@gitlab.com:tnishinaga/kicad.git
git clone -b support_m1_mac git@gitlab.com:tnishinaga/kicad-mac-builder.git
wget http://docs.kicad-pcb.org/kicad-doc-HEAD.tar.gz
cd kicad-mac-builder
./ci/src/bootstrap.sh
./build.py \
--target_arch arm64 \
--kicad-source-dir ../kicad \
--docs-tarball-url file://$(pwd)/../kicad-doc-HEAD.tar.gz
on intel mac
git clone -b support_m1_mac git@gitlab.com:tnishinaga/kicad.git
git clone -b support_m1_mac git@gitlab.com:tnishinaga/kicad-mac-builder.git
wget http://docs.kicad-pcb.org/kicad-doc-HEAD.tar.gz
cd kicad-mac-builder
./ci/src/bootstrap.sh
./build.py \
--kicad-source-dir ../kicad \
--docs-tarball-url file://$(pwd)/../kicad-doc-HEAD.tar.gz
Working(on arm mac)
- kicad.app
- create new project
- open schematics
- eeschema.app
- Place symbol
- Place power port
- Place wire
- Annotate schematic symbols
- Assign PCB footprints to schematics symbols
- Generate netlist
- pcbnew.app
- Update PCB from schematic
- Route tracks
- Add graphic lines
- 3D Viewer
Changes
- Update python to 3.9
- based on adamwolf/py3test branch
- Replace wxpython to Phoenix
- Update ngspice to 33
- Add homebrew prefix path for arm mac
- Add re-sign script to pass BigSur's library validation
Known issues
- Could not build on Intel mac(macos 10.15.7)
- The pcbnew.app crashes when pressing "Plot" button.
1. Could not build on Intel mac(macos 10.15.7)
description
verify-cli-python.sh
raise an error when building on intel mac.
Steps to reproduce
Build kicad on intel mac by reference to "How to build on intel mac" section.
error message
[ 58%] Checking bin/python3
/Users/tnishinaga/projects/kicad_arm_mac/kicad-mac-builder/kicad-mac-builder/bin/verify-cli-python.sh /Users/tnishinaga/projects/ki
+ '[' '!' -e /Users/tnishinaga/projects/kicad_arm_mac/kicad-mac-builder/build/kicad-dest/kicad.app/Contents/Frameworks/Python.frame
+ otool -L /Users/tnishinaga/projects/kicad_arm_mac/kicad-mac-builder/build/kicad-dest/kicad.app/Contents/Frameworks/Python.framewo
+ grep @executable_path/../../Contents/MacOS/Python.framework/Versions/3.9/Python
+ '[' 1 -ne 1 ']'
+ DYLD_PRINT_LIBRARIES=1
+ DYLD_PRINT_LIBRARIES_POST_LAUNCH=1
+ /Users/tnishinaga/projects/kicad_arm_mac/kicad-mac-builder/build/kicad-dest/kicad.app/Contents/Frameworks/Python.framework/Versio
+ grep /System/Library/Frameworks/Python.framework
dyld: loaded: <3131A7D7-1185-3A06-85A3-D90C6EF6BF2F> /System/Library/Frameworks/Python.framework/Versions/2.7/Python
+ '[' 0 -ne 1 ']'
+ echo '/Users/tnishinaga/projects/kicad_arm_mac/kicad-mac-builder/build/kicad-dest/kicad.app/Contents/Frameworks/Python.framework/
/Users/tnishinaga/projects/kicad_arm_mac/kicad-mac-builder/build/kicad-dest/kicad.app/Contents/Frameworks/Python.framework/Versions
+ exit 1
make[2]: *** [kicad/src/kicad-stamp/kicad-verify-cli-python] Error 1
make[1]: *** [CMakeFiles/kicad.dir/all] Error 2
make: *** [all] Error 2
The reason for the error is that python3.9
has been replaced by python2.7
.
But, I don't understand why python2.7
is installed.
./build/kicad-dest/kicad.app/Contents/Frameworks/Python.framework/Versions/3.9/bin/python3.9 --version
Python 2.7.16
2. The pcbnew.app crashes when pressing "Plot" button.
description
The pcbnew.app crashes when pressing "Plot" button.
Step to reproduce
- build kicad on arm mac
- open
build/kicad-dest/kicad.app
- Press
Edit PCB
button - Press
Plot
button
backtrace
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x0000000101dcdf44 libwx_osx_cocoau-3.1.dylib`wxCheckListBox::IsChecked(unsigned int) const + 48
libwx_osx_cocoau-3.1.dylib`wxCheckListBox::IsChecked:
-> 0x101dcdf44 <+48>: ldr w8, [x8, w19, uxtw #2]
0x101dcdf48 <+52>: cmp w8, #0x0 ; =0x0
0x101dcdf4c <+56>: cset w0, ne
0x101dcdf50 <+60>: b 0x101dcdfa8 ; <+148>
Target 0: (kicad) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
* frame #0: 0x0000000101dcdf44 libwx_osx_cocoau-3.1.dylib`wxCheckListBox::IsChecked(unsigned int) const + 48
frame #1: 0x0000000101dce0d8 libwx_osx_cocoau-3.1.dylib`wxCheckListBox::GetValueCallback(unsigned int, wxListWidgetColumn*, wxListWidgetCellValue&) + 56
frame #2: 0x0000000101e59570 libwx_osx_cocoau-3.1.dylib`-[wxNSTableDataSource tableView:objectValueForTableColumn:row:] + 140
frame #3: 0x0000000191c66bdc AppKit`-[NSTableView _dataSourceValueForColumn:row:] + 192
frame #4: 0x0000000191d955b0 AppKit`-[NSTableView preparedCellAtColumn:row:] + 452
frame #5: 0x0000000101e5a088 libwx_osx_cocoau-3.1.dylib`wxListWidgetCocoaImpl::ListInsert(unsigned int) + 76
frame #6: 0x0000000101dd343c libwx_osx_cocoau-3.1.dylib`wxListBox::DoInsertItems(wxArrayStringsAdapter const&, unsigned int, void**, wxClientDataType) + 512
frame #7: 0x0000000158072598 _pcbnew.kiface`wxItemContainer::AppendItems(this=0x0000000103b18820, items=0x00000002801073d8, clientData=0x0000000000000000, type=wxClientData_None) at ctrlsub.h:117:16
frame #8: 0x00000001580724f0 _pcbnew.kiface`wxItemContainer::AppendItems(this=0x0000000103b18820, items=0x00000002801073d8) at ctrlsub.h:122:16
frame #9: 0x00000001580f189c _pcbnew.kiface`wxItemContainer::Append(this=0x0000000103b18820, item=0x00000002801076f8) at ctrlsub.h:200:18
frame #10: 0x00000001582c7b5c _pcbnew.kiface`DIALOG_PLOT::init_Dialog(this=0x000000012b00c000) at dialog_plot.cpp:134:47
frame #11: 0x00000001582c7160 _pcbnew.kiface`DIALOG_PLOT::DIALOG_PLOT(this=0x000000012b00c000, aParent=0x00000001032ca400) at dialog_plot.cpp:57:5
frame #12: 0x00000001582c82a4 _pcbnew.kiface`DIALOG_PLOT::DIALOG_PLOT(this=0x000000012b00c000, aParent=0x00000001032ca400) at dialog_plot.cpp:52:1
frame #13: 0x000000015879a354 _pcbnew.kiface`PCB_EDIT_FRAME::ToPlotter(this=0x00000001032ca400, aID=6113) at pcb_edit_frame.cpp:1304:15
frame #14: 0x00000001588d8310 _pcbnew.kiface`BOARD_EDITOR_CONTROL::Plot(this=0x000000014f4378e0, aEvent=0x000000016fdfe7e0) at board_editor_control.cpp:293:14
frame #15: 0x00000001588fa9ac _pcbnew.kiface`decltype(__f=0x0000000103912498, __a0=0x00000001039124a8, __args=0x000000016fdfe7e0)).*fp(std::__1::forward<TOOL_EVENT const&>(fp1))) std::__1::__invoke<int (BOARD_EDITOR_CONTROL::*&)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*&, TOOL_EVENT const&, void>(int (BOARD_EDITOR_CONTROL::*&)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*&, TOOL_EVENT const&) at type_traits:3486:1
frame #16: 0x00000001588fa8d4 _pcbnew.kiface`std::__1::__bind_return<int (BOARD_EDITOR_CONTROL::*)(TOOL_EVENT const&), std::__1::tuple<BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> >, std::__1::tuple<TOOL_EVENT const&>, __is_valid_bind_return<int (BOARD_EDITOR_CONTROL::*)(TOOL_EVENT const&), std::__1::tuple<BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> >, std::__1::tuple<TOOL_EVENT const&> >::value>::type std::__1::__apply_functor<int (__f=0x0000000103912498, __bound_args=size=2, (null)=__tuple_indices<0, 1> @ 0x0000000280107e2f, __args=size=1)(TOOL_EVENT const&), std::__1::tuple<BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> >, 0ul, 1ul, std::__1::tuple<TOOL_EVENT const&> >(int (BOARD_EDITOR_CONTROL::*&)(TOOL_EVENT const&), std::__1::tuple<BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> >&, std::__1::__tuple_indices<0ul, 1ul>, std::__1::tuple<TOOL_EVENT const&>&&) at functional:2845:12
frame #17: 0x00000001588fa864 _pcbnew.kiface`std::__1::__bind_return<int (BOARD_EDITOR_CONTROL::*)(TOOL_EVENT const&), std::__1::tuple<BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> >, std::__1::tuple<TOOL_EVENT const&>, __is_valid_bind_return<int (BOARD_EDITOR_CONTROL::*)(TOOL_EVENT const&), std::__1::tuple<BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> >, std::__1::tuple<TOOL_EVENT const&> >::value>::type std::__1::__bind<int (this=0x0000000103912498, __args=0x000000016fdfe7e0)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> const&>::operator()<TOOL_EVENT const&>(TOOL_EVENT const&) at functional:2878:20
frame #18: 0x00000001588fa7e8 _pcbnew.kiface`decltype(__f=0x0000000103912498, __args=0x000000016fdfe7e0)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> const&>&>(fp)(std::__1::forward<TOOL_EVENT const&>(fp0))) std::__1::__invoke<std::__1::__bind<int (BOARD_EDITOR_CONTROL::*&)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> const&>&, TOOL_EVENT const&>(std::__1::__bind<int (BOARD_EDITOR_CONTROL::*&)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> const&>&, TOOL_EVENT const&) at type_traits:3545:1
frame #19: 0x00000001588fa778 _pcbnew.kiface`int std::__1::__invoke_void_return_wrapper<int>::__call<std::__1::__bind<int (__args=0x0000000103912498, __args=0x000000016fdfe7e0)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> const&>&, TOOL_EVENT const&>(std::__1::__bind<int (BOARD_EDITOR_CONTROL::*&)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> const&>&, TOOL_EVENT const&) at __functional_base:317:16
frame #20: 0x00000001588fa72c _pcbnew.kiface`std::__1::__function::__alloc_func<std::__1::__bind<int (BOARD_EDITOR_CONTROL::*&)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> const&>, std::__1::allocator<std::__1::__bind<int (BOARD_EDITOR_CONTROL::*&)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> const&> >, int (TOOL_EVENT const&)>::operator(this=0x0000000103912498, __arg=0x000000016fdfe7e0)(TOOL_EVENT const&) at functional:1546:16
frame #21: 0x00000001588f9378 _pcbnew.kiface`std::__1::__function::__func<std::__1::__bind<int (BOARD_EDITOR_CONTROL::*&)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> const&>, std::__1::allocator<std::__1::__bind<int (BOARD_EDITOR_CONTROL::*&)(TOOL_EVENT const&), BOARD_EDITOR_CONTROL*, std::__1::placeholders::__ph<1> const&> >, int (TOOL_EVENT const&)>::operator(this=0x0000000103912490, __arg=0x000000016fdfe7e0)(TOOL_EVENT const&) at functional:1720:12
frame #22: 0x0000000159c0b9a8 _pcbnew.kiface`std::__1::__function::__value_func<int (TOOL_EVENT const&)>::operator(this=0x00000001039123f0, __args=0x000000016fdfe7e0)(TOOL_EVENT const&) const at functional:1873:16
frame #23: 0x0000000159c0b944 _pcbnew.kiface`std::__1::function<int (TOOL_EVENT const&)>::operator(this= Function = BOARD_EDITOR_CONTROL::Plot(TOOL_EVENT const&) , __arg=0x000000016fdfe7e0)(TOOL_EVENT const&) const at functional:2548:12
frame #24: 0x0000000159c0b848 _pcbnew.kiface`COROUTINE<int, TOOL_EVENT const&>::callerStub(aData=6171909016) at coroutine.h:351:25
frame #25: 0x0000000159de71e8 _pcbnew.kiface`make_fcontext + 24