Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENH: Transition project configuration to pyproject.toml #162

Merged

Conversation

jhlegarreta
Copy link
Member

@jhlegarreta jhlegarreta commented Jun 22, 2024

  • ENH: Transition project configuration to `pyproject.toml
  • COMP: Update CI configuration for ITK 5.4

@jhlegarreta
Copy link
Member Author

Depends on PR #161.

@jhlegarreta
Copy link
Member Author

The long_description is not added: https://github.com/InsightSoftwareConsortium/ITKTubeTK/blob/master/setup.py#L16

Can we use the README.md file instead of duplicating its contents in another file?

Copy link
Member

@aylward aylward left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was just about to start the conversion - thank you!!!!

@aylward
Copy link
Member

aylward commented Jun 22, 2024

The long_description is not added: https://github.com/InsightSoftwareConsortium/ITKTubeTK/blob/master/setup.py#L16

Can we use the README.md file instead of duplicating its contents in another file?

Great idea!

@aylward
Copy link
Member

aylward commented Jun 22, 2024

The windows build failure has been an issue for awhile. It is building the shared lib, but trying to use the static lib when linking executable test drivers. I haven't had time to track it down - it builds fine on windows systems - just not dashboard machines :(

@jhlegarreta
Copy link
Member Author

jhlegarreta commented Jun 22, 2024

The windows build failure has been an issue for awhile. It is building the shared lib, but trying to use the static lib when linking executable test drivers. I haven't had time to track it down - it builds fine on windows systems - just not dashboard machines :(

Yes, I've seen that.

Not sure where this comes from, though:
https://github.com/InsightSoftwareConsortium/ITKTubeTK/actions/runs/9628422655/job/26556652788?pr=162#step:6:1507

@thewtex Maybe from https://github.com/search?q=repo%3AInsightSoftwareConsortium%2FITKPythonPackage%20setup.py&type=code ?

pyproject.toml Outdated Show resolved Hide resolved
@aylward
Copy link
Member

aylward commented Jun 22, 2024

The windows build failure has been an issue for awhile. It is building the shared lib, but trying to use the static lib when linking executable test drivers. I haven't had time to track it down - it builds fine on windows systems - just not dashboard machines :(

Yes, I've seen that.

Not sure where this comes from, though: https://github.com/InsightSoftwareConsortium/ITKTubeTK/actions/runs/9628422655/job/26556652788?pr=162#step:6:1507

@thewtex Maybe from https://github.com/search?q=repo%3AInsightSoftwareConsortium%2FITKPythonPackage%20setup.py&type=code ?

Perhaps we need to updated the .github/workflow/build-test-package.yml to match https://github.com/KitwareMedical/ITKRLEImage/blob/main/.github/workflows/build-test-package.yml

@jhlegarreta
Copy link
Member Author

Perhaps we need to updated the .github/workflow/build-test-package.yml to match https://github.com/KitwareMedical/ITKRLEImage/blob/main/.github/workflows/build-test-package.yml

Done. Let's see what the CI says. @aylward Please take over from here if this does not fix all issues. Thanks.

@aylward
Copy link
Member

aylward commented Jun 22, 2024

Done. Let's see what the CI says. @aylward Please take over from here if this does not fix all issues. Thanks.

Will do. Thank you very much for getting this started!

Transition project configuration to `pyproject.toml`.

Used the `setup-py-to-pyproject-toml.py` script in the
`ITKModuleTemplate` repository:
https://github.com/InsightSoftwareConsortium/ITKModuleTemplate

as a starting base, then made manual changes as necessary.

Transfer the dependencies in `docs/requirements.txt` to the `[doc]`
optional dependencies section.

Remove the `setup-readme.md` file: the project long description is read
from `README.md` in `pyproject.toml` now.
Update CI configuration for ITK 5.4.
@jhlegarreta
Copy link
Member Author

jhlegarreta commented Jun 22, 2024

Re #162 (comment) removed file in last push-force. pyproject.toml takes README.md (provides a minimalhttps://github.com//pull/162#issuecomment-2184199452) for such purpose.

@aylward aylward merged commit 5b9b4d8 into InsightSoftwareConsortium:master Jun 23, 2024
28 of 33 checks passed
@thewtex
Copy link
Member

thewtex commented Jun 23, 2024

LINK : fatal error LNK1181: cannot open input file 'D:\ITK-build\lib\itkTubeTK-5.4.lib'

I was able to reproduce this locally by using the Ninja generator.

The weird thing is that itkTubeTK-5.4.dll and itkTubeTK-5.4.pdb exist, but itkTubeTK-5.4.lib does not. It is referenced in build.ninja:

# =============================================================================
# Link build statements for SHARED_LIBRARY target TubeTK


#############################################
# Link the shared library D:\ITK-build\bin\itkTubeTK-5.4.dll

build D$:\ITK-build\bin\itkTubeTK-5.4.dll D$:\ITK-build\lib\itkTubeTK-5.4.lib: CXX_SHARED_LIBRARY_LINKER__TubeTK_Release src\CMakeFiles\TubeTK.dir\Common\tubeIndent.cxx.obj src\CMakeFiles\TubeTK.dir\Common\tubeObject.cxx.obj src\CMakeFiles\TubeTK.dir\MetaIO\itktubeMetaClassPDF.cxx.obj src\CMakeFiles\TubeTK.dir\MetaIO\itktubeMetaLDA.cxx.obj src\CMakeFiles\TubeTK.dir\MetaIO\itktubeMetaNJetLDA.cxx.obj src\CMakeFiles\TubeTK.dir\MetaIO\itktubeMetaRidgeSeed.cxx.obj src\CMakeFiles\TubeTK.dir\MetaIO\itktubeMetaTubeExtractor.cxx.obj src\CMakeFiles\TubeTK.dir\Numerics\tubeBrentOptimizer1D.cxx.obj src\CMakeFiles\TubeTK.dir\Numerics\tubeGoldenMeanOptimizer1D.cxx.obj src\CMakeFiles\TubeTK.dir\Numerics\tubeOptimizer1D.cxx.obj src\CMakeFiles\TubeTK.dir\Numerics\tubeOptimizerND.cxx.obj src\CMakeFiles\TubeTK.dir\Numerics\tubeParabolicFitOptimizer1D.cxx.obj src\CMakeFiles\TubeTK.dir\Numerics\tubeSpline1D.cxx.obj src\CMakeFiles\TubeTK.dir\Numerics\tubeSplineApproximation1D.cxx.obj src\CMakeFiles\TubeTK.dir\Numerics\tubeSplineND.cxx.obj src\CMakeFiles\TubeTK.dir\ObjectDocuments\tubeMetaDocument.cxx.obj src\CMakeFiles\TubeTK.dir\ObjectDocuments\tubeMetaObjectDocument.cxx.obj src\CMakeFiles\TubeTK.dir\ObjectDocuments\tubeOptionList.cxx.obj | D$:\ITK-build\lib\itkhdf5_cpp-shared-5.4.lib D$:\ITK-build\lib\itkhdf5_hl-shared-5.4.lib D$:\ITK-build\lib\ITKIOTransformBase-5.4.lib D$:\ITK-build\lib\ITKMetaIO-5.4.lib D$:\ITK-build\lib\ITKRegionGrowing-5.4.lib D$:\ITK-build\lib\ITKSmoothing-5.4.lib D$:\ITK-build\lib\ITKTestKernel-5.4.lib D$:\ITK-build\lib\ITKSpatialObjects-5.4.lib D$:\ITK-build\lib\ITKPath-5.4.lib D$:\ITK-build\lib\itkMinimalPathExtraction-5.4.lib D$:\ITK-build\lib\itkhdf5-shared-5.4.lib D$:\ITK-build\lib\ITKTransformFactory-5.4.lib D$:\ITK-build\lib\ITKFFT-5.4.lib D$:\ITK-build\lib\ITKIOBMP-5.4.lib D$:\ITK-build\lib\ITKIOGDCM-5.4.lib D$:\ITK-build\lib\ITKIOGIPL-5.4.lib D$:\ITK-build\lib\ITKIOJPEG-5.4.lib D$:\ITK-build\lib\ITKIOMeshBYU-5.4.lib D$:\ITK-build\lib\ITKIOMeshFreeSurfer-5.4.lib D$:\ITK-build\lib\ITKIOMeshGifti-5.4.lib D$:\ITK-build\lib\ITKIOMeshOBJ-5.4.lib D$:\ITK-build\lib\ITKIOMeshOFF-5.4.lib D$:\ITK-build\lib\ITKIOMeshVTK-5.4.lib D$:\ITK-build\lib\ITKIOMeshBase-5.4.lib D$:\ITK-build\lib\ITKQuadEdgeMesh-5.4.lib D$:\ITK-build\lib\ITKMesh-5.4.lib D$:\ITK-build\lib\ITKIOMeta-5.4.lib D$:\ITK-build\lib\ITKMetaIO-5.4.lib D$:\ITK-build\lib\itkzlib-5.4.lib D$:\ITK-build\lib\ITKIONIFTI-5.4.lib D$:\ITK-build\lib\ITKTransform-5.4.lib D$:\ITK-build\lib\ITKIONRRD-5.4.lib D$:\ITK-build\lib\ITKIOPNG-5.4.lib D$:\ITK-build\lib\ITKIOTIFF-5.4.lib D$:\ITK-build\lib\ITKIOVTK-5.4.lib D$:\ITK-build\lib\ITKIOImageBase-5.4.lib D$:\ITK-build\lib\ITKOptimizers-5.4.lib D$:\ITK-build\lib\ITKStatistics-5.4.lib D$:\ITK-build\lib\itkNetlibSlatec-5.4.lib D$:\ITK-build\lib\ITKPath-5.4.lib D$:\ITK-build\lib\ITKCommon-5.4.lib D$:\ITK-build\lib\itksys-5.4.lib D$:\ITK-build\lib\ITKVNLInstantiation-5.4.lib D$:\ITK-build\lib\itkvnl_algo-5.4.lib D$:\ITK-build\lib\itkvnl-5.4.lib D$:\ITK-build\lib\itkv3p_netlib-5.4.lib D$:\ITK-build\lib\itkvcl-5.4.lib D$:\ITK-build\lib\ITKFastMarching-5.4.lib
  LANGUAGE_COMPILE_FLAGS = /DWIN32 /D_WINDOWS /GR /EHsc  /bigobj /O2 /Ob2 /DNDEBUG -MD
  LINK_FLAGS = /machine:x64  /INCREMENTAL:NO
  LINK_LIBRARIES = D:\ITK-build\lib\itkhdf5_cpp-shared-5.4.lib  D:\ITK-build\lib\itkhdf5_hl-shared-5.4.lib  D:\ITK-build\lib\ITKIOTransformBase-5.4.lib  D:\ITK-build\lib\ITKMetaIO-5.4.lib  D:\ITK-build\lib\ITKRegionGrowing-5.4.lib  D:\ITK-build\lib\ITKSmoothing-5.4.lib  D:\ITK-build\lib\ITKTestKernel-5.4.lib  D:\ITK-build\lib\ITKSpatialObjects-5.4.lib  D:\ITK-build\lib\ITKPath-5.4.lib  D:\ITK-build\lib\itkMinimalPathExtraction-5.4.lib  D:\ITK-build\lib\itkhdf5-shared-5.4.lib  D:\ITK-build\lib\ITKTransformFactory-5.4.lib  D:\ITK-build\lib\ITKFFT-5.4.lib  D:\ITK-build\lib\ITKIOBMP-5.4.lib  D:\ITK-build\lib\ITKIOGDCM-5.4.lib  D:\ITK-build\lib\ITKIOGIPL-5.4.lib  D:\ITK-build\lib\ITKIOJPEG-5.4.lib  D:\ITK-build\lib\ITKIOMeshBYU-5.4.lib  D:\ITK-build\lib\ITKIOMeshFreeSurfer-5.4.lib  D:\ITK-build\lib\ITKIOMeshGifti-5.4.lib  D:\ITK-build\lib\ITKIOMeshOBJ-5.4.lib  D:\ITK-build\lib\ITKIOMeshOFF-5.4.lib  D:\ITK-build\lib\ITKIOMeshVTK-5.4.lib  D:\ITK-build\lib\ITKIOMeshBase-5.4.lib  D:\ITK-build\lib\ITKQuadEdgeMesh-5.4.lib  D:\ITK-build\lib\ITKMesh-5.4.lib  D:\ITK-build\lib\ITKIOMeta-5.4.lib  D:\ITK-build\lib\ITKMetaIO-5.4.lib  D:\ITK-build\lib\itkzlib-5.4.lib  comctl32.lib  wsock32.lib  D:\ITK-build\lib\ITKIONIFTI-5.4.lib  D:\ITK-build\lib\ITKTransform-5.4.lib  D:\ITK-build\lib\ITKIONRRD-5.4.lib  D:\ITK-build\lib\ITKIOPNG-5.4.lib  D:\ITK-build\lib\ITKIOTIFF-5.4.lib  D:\ITK-build\lib\ITKIOVTK-5.4.lib  D:\ITK-build\lib\ITKIOImageBase-5.4.lib  D:\ITK-build\lib\ITKOptimizers-5.4.lib  D:\ITK-build\lib\ITKStatistics-5.4.lib  D:\ITK-build\lib\itkNetlibSlatec-5.4.lib  D:\ITK-build\lib\ITKPath-5.4.lib  D:\ITK-build\lib\ITKCommon-5.4.lib  D:\ITK-build\lib\itksys-5.4.lib  ws2_32.lib  dbghelp.lib  psapi.lib  D:\ITK-build\lib\ITKVNLInstantiation-5.4.lib  D:\ITK-build\lib\itkvnl_algo-5.4.lib  D:\ITK-build\lib\itkvnl-5.4.lib  D:\ITK-build\lib\itkv3p_netlib-5.4.lib  D:\ITK-build\lib\itkvcl-5.4.lib  D:\ITK-build\lib\ITKFastMarching-5.4.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
  OBJECT_DIR = src\CMakeFiles\TubeTK.dir
  POST_BUILD = cd .
  PRE_LINK = cd .
  RESTAT = 1
  TARGET_COMPILE_PDB = src\CMakeFiles\TubeTK.dir\
  TARGET_FILE = D:\ITK-build\bin\itkTubeTK-5.4.dll
  TARGET_IMPLIB = D:\ITK-build\lib\itkTubeTK-5.4.lib
  TARGET_PDB = D:\ITK-build\bin\itkTubeTK-5.4.pdb

@thewtex
Copy link
Member

thewtex commented Jun 23, 2024

itkTubeTK-5.4.lib should be generated -- this is the "import library" that is linked against on Windows at build time to use the corresponding *.dll at runtime.

@thewtex
Copy link
Member

thewtex commented Jun 23, 2024

CC @aylward @jhlegarreta

@jhlegarreta jhlegarreta deleted the TransitionToPyprojectToml branch June 23, 2024 19:34
@aylward
Copy link
Member

aylward commented Jun 23, 2024

This bug exists prior to conversion to pyproject, so I merged this and will start a separate PR for fixing this bug...when we have some insight.

It is happening when compiling two executables I use during testing: CompareImage and CompareTextFiles in TubeTK/test/CompareTools.

Instead of building those two as test drivers, I am going to try building them as executables. Perhaps that will create the necessary cmake/build/link dependencies?

@thewtex
Copy link
Member

thewtex commented Jun 23, 2024

@aylward 🥇 👍 good plan!

@aylward
Copy link
Member

aylward commented Jun 27, 2024

itkTubeTK-5.4.lib should be generated -- this is the "import library" that is linked against on Windows at build time to use the corresponding *.dll at runtime.

Hi Matt (@thewtex) - this does not happen on the two windows 11 machines I have. Compiling using vs2022 and ninja 1.11.0. It also doesn't happen for me on Ubuntu 22.04 with ninja. This is when I am doing things manually (cmake-gui version 3.27.7 for config, and typing ninja to compile). But I'm not building shared libs. Will try adding that option and seeing what happens. Other suggestions are welcomed!

Thanks,

@aylward
Copy link
Member

aylward commented Jun 27, 2024

Yes - only happens with BUILD_SHARED_LIBS ON

@aylward
Copy link
Member

aylward commented Jun 28, 2024

Seems like TubeTK is not creating any exports.

See the documentation on /IMPLIB here:
https://learn.microsoft.com/en-us/cpp/build/reference/implib-name-import-library?view=msvc-170

The correct command is being generated by cmake/ninja, but the "/implib lib/itkTubeTK-6.0.lib' file isn't being generated even though it is being correctly specified. There is a bug in the class defs of tubetk. Below is the ninja / cmake command that should be generating the lib.

cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_dll --intdir=Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir --rc=C:\PROGRA2\WI3CF21\10\bin\1002261.0\x64\rc.exe --mt=C:\PROGRA2\WI3CF21\10\bin\1002261.0\x64\mt.exe --manifests -- C:\PROGRA1\MIB0551\2022\COMMUN1\VC\Tools\MSVC\14371.328\bin\Hostx64\x64\link.exe /nologo Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\Common\tubeIndent.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\Common\tubeObject.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\MetaIO\itktubeMetaClassPDF.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\MetaIO\itktubeMetaLDA.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\MetaIO\itktubeMetaNJetLDA.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\MetaIO\itktubeMetaRidgeSeed.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\MetaIO\itktubeMetaTubeExtractor.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\Numerics\tubeBrentOptimizer1D.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\Numerics\tubeGoldenMeanOptimizer1D.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\Numerics\tubeOptimizer1D.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\Numerics\tubeOptimizerND.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\Numerics\tubeParabolicFitOptimizer1D.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\Numerics\tubeSpline1D.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\Numerics\tubeSplineApproximation1D.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\Numerics\tubeSplineND.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\ObjectDocuments\tubeMetaDocument.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\ObjectDocuments\tubeMetaObjectDocument.cxx.obj Modules\Remote\TubeTK\src\CMakeFiles\TubeTK.dir\ObjectDocuments\tubeOptionList.cxx.obj /out:Wrapping\Generators\Python\itk\itkTubeTK-6.0.dll /implib:lib\itkTubeTK-6.0.lib /pdb:Wrapping\Generators\Python\itk\itkTubeTK-6.0.pdb /dll /version:1.0 /machine:x64 /INCREMENTAL:NO lib\itkhdf5_cpp-shared-6.0.lib lib\itkhdf5_hl-shared-6.0.lib lib\ITKIOTransformBase-6.0.lib lib\ITKMetaIO-6.0.lib lib\ITKRegionGrowing-6.0.lib lib\ITKSmoothing-6.0.lib lib\ITKTestKernel-6.0.lib lib\ITKSpatialObjects-6.0.lib lib\ITKPath-6.0.lib lib\itkMinimalPathExtraction-6.0.lib lib\itkhdf5-shared-6.0.lib lib\ITKTransformFactory-6.0.lib lib\ITKFFT-6.0.lib lib\ITKIOBMP-6.0.lib lib\ITKIOGDCM-6.0.lib lib\ITKIOGIPL-6.0.lib lib\ITKIOJPEG-6.0.lib lib\ITKIOMeshBYU-6.0.lib lib\ITKIOMeshFreeSurfer-6.0.lib lib\ITKIOMeshGifti-6.0.lib lib\ITKIOMeshOBJ-6.0.lib lib\ITKIOMeshOFF-6.0.lib lib\ITKIOMeshVTK-6.0.lib lib\ITKIOMeshBase-6.0.lib lib\ITKQuadEdgeMesh-6.0.lib lib\ITKMesh-6.0.lib lib\ITKIOMeta-6.0.lib lib\ITKMetaIO-6.0.lib lib\itkzlib-6.0.lib comctl32.lib wsock32.lib lib\ITKIONIFTI-6.0.lib lib\ITKTransform-6.0.lib lib\ITKIONRRD-6.0.lib lib\ITKIOPNG-6.0.lib lib\ITKIOTIFF-6.0.lib lib\ITKIOVTK-6.0.lib lib\ITKIOImageBase-6.0.lib lib\ITKOptimizers-6.0.lib lib\ITKStatistics-6.0.lib lib\itkNetlibSlatec-6.0.lib lib\ITKPath-6.0.lib lib\ITKCommon-6.0.lib lib\itksys-6.0.lib ws2_32.lib dbghelp.lib psapi.lib lib\ITKVNLInstantiation-6.0.lib lib\itkvnl_algo-6.0.lib lib\itkvnl-6.0.lib lib\itkv3p_netlib-6.0.lib lib\itkvcl-6.0.lib lib\ITKFastMarching-6.0.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."

@aylward
Copy link
Member

aylward commented Jun 28, 2024

Simple fix explained and being investigated via PR #167.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants