On 2020/04/01 11:28, Tracey Emery wrote:
> Hello,
>
> The following diff adds python scripting support to kicad. It contains a
> couple of new patches and an update to an old one.
>
> Builds and runs fine on amd64.
>
> OK?
>
> --
>
> Tracey Emery
>
> Index: cad/kicad/Makefile
> ===================================================================
> RCS file: /cvs/ports/cad/kicad/Makefile,v
> retrieving revision 1.39
> diff -u -p -r1.39 Makefile
> --- cad/kicad/Makefile 28 Dec 2019 15:53:54 -0000 1.39
> +++ cad/kicad/Makefile 1 Apr 2020 17:24:52 -0000
> @@ -4,6 +4,7 @@ V = 5.1.5
> COMMENT = schematic and PCB editing software
> DISTNAME = kicad-${V}
> EPOCH = 0
> +REVISION = 0
>
> SHARED_LIBS += kicad_3dsg 0.0 # 2.0
>
> @@ -22,10 +23,10 @@ WANTLIB += TKSTEP TKSTEP209 TKSTEPAttr T
> WANTLIB += TKTopAlgo TKV3d TKXCAF TKXDEIGES TKXDESTEP TKXSBase
> WANTLIB += TKernel X11 Xext boost_atomic-mt boost_chrono-mt boost_context-mt
> WANTLIB += boost_date_time-mt boost_system-mt boost_thread-mt
> -WANTLIB += c cairo crypto curl freetype m ngspice pixman-1 ssl
> -WANTLIB += wx_baseu-3.0 wx_baseu_net-3.0 wx_baseu_xml-3.0 wx_gtk3u_adv-3.0
> -WANTLIB += wx_gtk3u_aui-3.0 wx_gtk3u_core-3.0 wx_gtk3u_gl-3.0
> -WANTLIB += wx_gtk3u_html-3.0 wx_gtk3u_stc-3.0
> +WANTLIB += c cairo crypto curl freetype m ngspice pixman-1 python3.7m
This should use ${MODPY_WANTLIB}.
> +WANTLIB += ssl wx_baseu-3.0 wx_baseu_net-3.0 wx_baseu_xml-3.0
> +WANTLIB += wx_gtk3u_adv-3.0 wx_gtk3u_aui-3.0 wx_gtk3u_core-3.0
> +WANTLIB += wx_gtk3u_gl-3.0 wx_gtk3u_html-3.0 wx_gtk3u_stc-3.0
>
> MASTER_SITES = https://launchpad.net/kicad/5.0/${V}/+download/
>
> @@ -33,6 +34,8 @@ EXTRACT_SUFX = .tar.xz
>
> COMPILER = base-clang ports-gcc
>
> +MODPY_VERSION = ${MODPY_DEFAULT_VERSION_3}
> +
> MODULES = devel/cmake \
> lang/python
>
> @@ -66,7 +69,8 @@ CONFIGURE_ARGS += -DCMAKE_BUILD_TYPE=Rel
> -DwxWidgets_LIBRARIES="${LOCALBASE}/lib" \
> -DwxWidgets_INCLUDE_DIRS="${LOCALBASE}/include/wx-3.0" \
> -DOCE_DIR="${LOCALBASE}/include/oce" \
> - -DKICAD_SCRIPTING=OFF
> + -DKICAD_SCRIPTING_PYTHON3=ON \
> + -DKICAD_SCRIPTING_WXPYTHON=OFF
>
> NO_TEST = Yes
>
> @@ -74,6 +78,10 @@ post-install:
> ${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py \
> ${PREFIX}/share/kicad/demos/python_scripts_examples/
> ${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py \
> + ${PREFIX}/lib/python3.7/site-packages/
And whatever the variable is for this, check python.port.mk.
> + ${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py \
> ${PREFIX}/share/kicad/plugins/
> + ${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py \
> + ${PREFIX}/share/kicad/scripting/plugins/
>
> .include <bsd.port.mk>
> Index: cad/kicad/patches/patch-demos_python_scripts_examples_gen_gerber_and_drill_files_board_py
> ===================================================================
> RCS file: cad/kicad/patches/patch-demos_python_scripts_examples_gen_gerber_and_drill_files_board_py
> diff -N cad/kicad/patches/patch-demos_python_scripts_examples_gen_gerber_and_drill_files_board_py
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ cad/kicad/patches/patch-demos_python_scripts_examples_gen_gerber_and_drill_files_board_py 1 Apr 2020 17:24:52 -0000
> @@ -0,0 +1,53 @@
> +$OpenBSD$
> +
> +Index: demos/python_scripts_examples/gen_gerber_and_drill_files_board.py
> +--- demos/python_scripts_examples/gen_gerber_and_drill_files_board.py.orig
> ++++ demos/python_scripts_examples/gen_gerber_and_drill_files_board.py
> +@@ -92,11 +92,11 @@ for layer_info in plot_plan:
> +
> + pctl.SetLayer(layer_info[1])
> + pctl.OpenPlotfile(layer_info[0], PLOT_FORMAT_GERBER, layer_info[2])
> +- print 'plot %s' % pctl.GetPlotFileName()
> ++ print('plot %s' % pctl.GetPlotFileName());
> + if gen_job_file == True:
> + jobfile_writer.AddGbrFile( layer_info[1], os.path.basename(pctl.GetPlotFileName()) );
> + if pctl.PlotLayer() == False:
> +- print "plot error"
> ++ print("plot error");
> +
> + #generate internal copper layers, if any
> + lyrcnt = board.GetCopperLayerCount();
> +@@ -106,9 +106,9 @@ for innerlyr in range ( 1, lyrcnt-1 ):
> + pctl.SetLayer(innerlyr)
> + lyrname = 'inner%s' % innerlyr
> + pctl.OpenPlotfile(lyrname, PLOT_FORMAT_GERBER, "inner")
> +- print 'plot %s' % pctl.GetPlotFileName()
> ++ print('plot %s' % pctl.GetPlotFileName());
> + if pctl.PlotLayer() == False:
> +- print "plot error"
> ++ print("plot error");
> +
> +
> + # At the end you have to close the last plot, otherwise you don't know when
> +@@ -133,18 +133,18 @@ drlwriter.SetFormat( metricFmt )
> +
> + genDrl = True
> + genMap = True
> +-print 'create drill and map files in %s' % pctl.GetPlotDirName()
> ++print('create drill and map files in %s' % pctl.GetPlotDirName());
> + drlwriter.CreateDrillandMapFilesSet( pctl.GetPlotDirName(), genDrl, genMap );
> +
> + # One can create a text file to report drill statistics
> + rptfn = pctl.GetPlotDirName() + 'drill_report.rpt'
> +-print 'report: %s' % rptfn
> ++print('report: %s' % rptfn);
> + drlwriter.GenDrillReportFile( rptfn );
> +
> + if gen_job_file == True:
> + #job_fn=os.path.splitext(pctl.GetPlotFileName())[0] + '.gbrjob'
> + job_fn=os.path.dirname(pctl.GetPlotFileName()) + '/' + os.path.basename(filename)
> + job_fn=os.path.splitext(job_fn)[0] + '.gbrjob'
> +- print 'create job file %s' % job_fn
> ++ print('create job file %s' % job_fn);
> + jobfile_writer.CreateJobFile( job_fn )
> +
> Index: cad/kicad/patches/patch-demos_python_scripts_examples_plot_board_py
> ===================================================================
> RCS file: cad/kicad/patches/patch-demos_python_scripts_examples_plot_board_py
> diff -N cad/kicad/patches/patch-demos_python_scripts_examples_plot_board_py
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ cad/kicad/patches/patch-demos_python_scripts_examples_plot_board_py 1 Apr 2020 17:24:52 -0000
> @@ -0,0 +1,14 @@
> +$OpenBSD$
> +
> +Index: demos/python_scripts_examples/plot_board.py
> +--- demos/python_scripts_examples/plot_board.py.orig
> ++++ demos/python_scripts_examples/plot_board.py
> +@@ -72,7 +72,7 @@ plot_plan = [
> + for layer_info in plot_plan:
> + pctl.SetLayer(layer_info[1])
> + pctl.OpenPlotfile(layer_info[0], PLOT_FORMAT_GERBER, layer_info[2])
> +- print layer_info[0]
> ++ print(layer_info[0]);
> + pctl.PlotLayer()
> +
> + # Our fabricators want two additional gerbers:
> Index: cad/kicad/patches/patch-pcbnew_CMakeLists_txt
> ===================================================================
> RCS file: /cvs/ports/cad/kicad/patches/patch-pcbnew_CMakeLists_txt,v
> retrieving revision 1.2
> diff -u -p -r1.2 patch-pcbnew_CMakeLists_txt
> --- cad/kicad/patches/patch-pcbnew_CMakeLists_txt 8 Nov 2019 14:43:53 -0000 1.2
> +++ cad/kicad/patches/patch-pcbnew_CMakeLists_txt 1 Apr 2020 17:24:52 -0000
> @@ -12,3 +12,45 @@ Index: pcbnew/CMakeLists.txt
> endif()
>
>
> +@@ -808,11 +808,7 @@ if( KICAD_SCRIPTING_MODULES )
> + add_dependencies( ScriptingModulesPcbnewSoCopy ScriptingWxpythonCopy )
> + set( PYMOD_EXT "so" )
> + else() # only linux remains among supported platforms
> +- add_library( pcbnew_python MODULE $<TARGET_OBJECTS:pcbnew_kiface_objects> )
> +- target_link_libraries( pcbnew_python ${PCBNEW_KIFACE_LIBRARIES} )
> +- set_target_properties( pcbnew_python PROPERTIES OUTPUT_NAME pcbnew PREFIX "_" SUFFIX ".so" )
> +- install( TARGETS pcbnew_python DESTINATION ${PYTHON_DEST} COMPONENT binary )
> +-
> ++ install( FILES ${CMAKE_CURRENT_BINARY_DIR}/libpcbnew.a DESTINATION ${PYTHON_DEST} COMPONENT binary RENAME "_pcbnew.so" )
> + set( PYMOD_EXT "so" )
> + endif()
> +
> +@@ -827,18 +823,16 @@ if( KICAD_SCRIPTING_MODULES )
> + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_pcbnew.${PYMOD_EXT}
> + )
> + else()
> +-
> +-
> +- # For phase 1, copy _pcbnew.kiface to the python module.
> +- add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_pcbnew.${PYMOD_EXT}
> +- DEPENDS pcbnew_kiface
> +- COMMAND ${CMAKE_COMMAND} -E copy _pcbnew.kiface _pcbnew.${PYMOD_EXT}
> +- COMMENT "Creating python's pcbnew native module _pcbnew.${PYMOD_EXT} for command line use."
> +- )
> +- add_custom_target(
> +- pcbnew_python_module ALL
> +- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_pcbnew.${PYMOD_EXT}
> +- )
> ++ # For phase 1, copy _pcbnew.kiface to the python module.
> ++ add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_pcbnew.${PYMOD_EXT}
> ++ DEPENDS pcbnew_kiface
> ++ COMMAND ${CMAKE_COMMAND} -E copy libpcbnew.a _pcbnew.${PYMOD_EXT}
> ++ COMMENT "Creating python's pcbnew native module _pcbnew.${PYMOD_EXT} for command line use."
> ++ )
> ++ add_custom_target(
> ++ pcbnew_python_module ALL
> ++ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/_pcbnew.${PYMOD_EXT}
> ++ )
> + endif()
> +
> + endif()
> Index: cad/kicad/pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/cad/kicad/pkg/PLIST,v
> retrieving revision 1.2
> diff -u -p -r1.2 PLIST
> --- cad/kicad/pkg/PLIST 10 Dec 2019 23:09:48 -0000 1.2
> +++ cad/kicad/pkg/PLIST 1 Apr 2020 17:24:52 -0000
> @@ -27,6 +27,10 @@ lib/kicad/plugins/3d/
> @so lib/kicad/plugins/3d/libs3d_plugin_oce.so
> @so lib/kicad/plugins/3d/libs3d_plugin_vrml.so
> @lib lib/libkicad_3dsg.so.${LIBkicad_3dsg_VERSION}
> +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}/
> +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}pcbnew.${MODPY_PYC_MAGIC_TAG}pyc
> +@so lib/python${MODPY_VERSION}/site-packages/_pcbnew.so
> +lib/python${MODPY_VERSION}/site-packages/pcbnew.py
> share/appdata/
> share/appdata/kicad.appdata.xml
> share/applications/bitmap2component.desktop
> @@ -224,16 +228,17 @@ share/kicad/demos/pic_programmer/pic_pro
> share/kicad/demos/pic_programmer/pic_sockets.sch
> share/kicad/demos/pic_programmer/sym-lib-table
> share/kicad/demos/python_scripts_examples/
> +${MODPY_COMMENT}share/kicad/demos/python_scripts_examples/${MODPY_PYCACHE}/
> +share/kicad/demos/python_scripts_examples/${MODPY_PYCACHE}action_menu_add_automatic_border.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/demos/python_scripts_examples/${MODPY_PYCACHE}action_menu_text_by_date.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/demos/python_scripts_examples/${MODPY_PYCACHE}action_plugin_test_undoredo.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/demos/python_scripts_examples/${MODPY_PYCACHE}gen_gerber_and_drill_files_board.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/demos/python_scripts_examples/${MODPY_PYCACHE}plot_board.${MODPY_PYC_MAGIC_TAG}pyc
> share/kicad/demos/python_scripts_examples/action_menu_add_automatic_border.py
> -share/kicad/demos/python_scripts_examples/action_menu_add_automatic_border.pyc
> share/kicad/demos/python_scripts_examples/action_menu_text_by_date.py
> -share/kicad/demos/python_scripts_examples/action_menu_text_by_date.pyc
> share/kicad/demos/python_scripts_examples/action_plugin_test_undoredo.py
> -share/kicad/demos/python_scripts_examples/action_plugin_test_undoredo.pyc
> share/kicad/demos/python_scripts_examples/gen_gerber_and_drill_files_board.py
> -share/kicad/demos/python_scripts_examples/gen_gerber_and_drill_files_board.pyc
> share/kicad/demos/python_scripts_examples/plot_board.py
> -share/kicad/demos/python_scripts_examples/plot_board.pyc
> share/kicad/demos/simulation/
> share/kicad/demos/simulation/laser_driver/
> share/kicad/demos/simulation/laser_driver/ad8009.lib
> @@ -316,27 +321,61 @@ share/kicad/demos/video/video.pro
> share/kicad/demos/video/video.sch
> share/kicad/plugins/
> share/kicad/plugins/README-bom.txt
> +${MODPY_COMMENT}share/kicad/plugins/${MODPY_PYCACHE}/
> +share/kicad/plugins/${MODPY_PYCACHE}bom_csv_grouped_by_value.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/plugins/${MODPY_PYCACHE}bom_csv_grouped_by_value_with_fp.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/plugins/${MODPY_PYCACHE}bom_csv_sorted_by_ref.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/plugins/${MODPY_PYCACHE}bom_html_grouped_by_value.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/plugins/${MODPY_PYCACHE}bom_html_with_advanced_grouping.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/plugins/${MODPY_PYCACHE}bom_sorted_by_ref.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/plugins/${MODPY_PYCACHE}kicad_netlist_reader.${MODPY_PYC_MAGIC_TAG}pyc
> share/kicad/plugins/bom2csv.xsl
> share/kicad/plugins/bom2grouped_csv.xsl
> share/kicad/plugins/bom_csv_grouped_by_value.py
> -share/kicad/plugins/bom_csv_grouped_by_value.pyc
> share/kicad/plugins/bom_csv_grouped_by_value_with_fp.py
> -share/kicad/plugins/bom_csv_grouped_by_value_with_fp.pyc
> share/kicad/plugins/bom_csv_sorted_by_ref.py
> -share/kicad/plugins/bom_csv_sorted_by_ref.pyc
> share/kicad/plugins/bom_html_grouped_by_value.py
> -share/kicad/plugins/bom_html_grouped_by_value.pyc
> share/kicad/plugins/bom_html_with_advanced_grouping.py
> -share/kicad/plugins/bom_html_with_advanced_grouping.pyc
> share/kicad/plugins/bom_sorted_by_ref.py
> -share/kicad/plugins/bom_sorted_by_ref.pyc
> share/kicad/plugins/bom_with_title_block_2_csv.xsl
> share/kicad/plugins/kicad_netlist_reader.py
> -share/kicad/plugins/kicad_netlist_reader.pyc
> share/kicad/plugins/netlist_form_OrcadPcb2.xsl
> share/kicad/plugins/netlist_form_cadstar-RINF.xsl
> share/kicad/plugins/netlist_form_cadstar.xsl
> share/kicad/plugins/netlist_form_pads-pcb.asc.xsl
> +share/kicad/scripting/
> +share/kicad/scripting/plugins/
> +share/kicad/scripting/plugins/FPC_wizard.py
> +share/kicad/scripting/plugins/FootprintWizardBase.py
> +share/kicad/scripting/plugins/PadArray.py
> +share/kicad/scripting/plugins/__init__.py
> +${MODPY_COMMENT}share/kicad/scripting/plugins/${MODPY_PYCACHE}/
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}FPC_wizard.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}FootprintWizardBase.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}PadArray.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}bga_wizard.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}circular_pad_array_wizard.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}kicad_qrcode.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}microMatch_connectors.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}qfn_wizard.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}qfp_wizard.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}qrcode_footprint_wizard.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}sdip_wizard.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}touch_slider_wizard.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}uss39_barcode.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/${MODPY_PYCACHE}zip_wizard.${MODPY_PYC_MAGIC_TAG}pyc
> +share/kicad/scripting/plugins/bga_wizard.py
> +share/kicad/scripting/plugins/circular_pad_array_wizard.py
> +share/kicad/scripting/plugins/kicad_qrcode.py
> +share/kicad/scripting/plugins/microMatch_connectors.py
> +share/kicad/scripting/plugins/qfn_wizard.py
> +share/kicad/scripting/plugins/qfp_wizard.py
> +share/kicad/scripting/plugins/qrcode_footprint_wizard.py
> +share/kicad/scripting/plugins/sdip_wizard.py
> +share/kicad/scripting/plugins/touch_slider_wizard.py
> +share/kicad/scripting/plugins/uss39_barcode.py
> +share/kicad/scripting/plugins/zip_wizard.py
> share/kicad/template/kicad.pro
> share/mime/packages/kicad-gerbers.xml
> share/mime/packages/kicad-kicad.xml
>
No comments:
Post a Comment