Commit Graph

14 Commits

Author SHA1 Message Date
Kevin Leonardic
47603dca6e
[dcmtk] Add prefix to vendored libjpeg symbols (#36274)
<!-- If your PR fixes issues, please note that here by adding "Fixes
#NNNNNN." for each fixed issue on separate lines. -->
<!-- If you are still working on the PR, open it as a Draft:
https://github.blog/2019-02-14-introducing-draft-pull-requests/. -->
<!-- If this PR updates an existing port, please uncomment and fill out
this checklist:END OF PORT UPDATE CHECKLIST (delete this line) -->
Fixes #33512.

DCMTK comes with a vendored version of libjpeg that has custom
adjustments (e. g. a special lossless mode ).
The vendored version of libjpeg has conflicting symbols with the
libjpeg-turbo>=3.0.0 library that is built and linked in by vcpkg via
transitive dependencies, e.g. when linking in `tiff` support, where
libtiff has been built with `jpeg` support.

This PR implements a search and replace operation that prefixes the
exported symbols of the vendored libjpeg version with `dcmtk_`, thus
enabling us to link against both the vendored and the vcpkg version of
libjpeg at the same time without conflicting symbols.

The generated static library files have been checked with `nm -g
libijg{8,12,16}.a | grep -v dcmtk_` to see if there are any exported
symbols without `dcmtk_` remaining. There are none except for
`0000000000000000 B jaritab` which is not defined in `libjpeg.a`.

The PR has been tested with x64-linux and arm64-osx triplets and builds
`dcmtk[tools,tiff,zlib]` cleanly.

In order to fix #33512, we have to work around that vendored version of
libjpeg one way or another.

- Changes do not fully comply with the [maintainer
guide](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/contributing/maintainer-guide.md).
Avoiding the vendored dependency would imply creating a dcmtk-jpeg
package from the vendored one, that is exclusively used for dcmtk and
needs to be kept in sync with dcmtk.
- ~~SHA512s are updated for each updated download.~~
- ~~The "supports" clause reflects platforms that may be fixed by this
new version.~~
- ~~Any fixed [CI
baseline](https://github.com/microsoft/vcpkg/blob/master/scripts/ci.baseline.txt)
entries are removed from that file.~~
- [x] Any patches that are no longer applied are deleted from the port's
directory.
- [x] The version database is fixed by rerunning `./vcpkg x-add-version
--all` and committing the result.
- [x] Only one version is added to each modified port's versions file.



<!-- If this PR adds a new port, please uncomment and fill out this
checklist:

- [_] Changes comply with the [maintainer
guide](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/contributing/maintainer-guide.md).
- [ ] The name of the port matches an existing name for this component
on https://repology.org/ if possible, and/or is strongly associated with
that component on search engines.
- [ ] Optional dependencies are resolved in exactly one way. For
example, if the component is built with CMake, all `find_package` calls
are REQUIRED, are satisfied by `vcpkg.json`'s declared dependencies, or
disabled with
[CMAKE_DISABLE_FIND_PACKAGE_Xxx](https://cmake.org/cmake/help/latest/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.html).
- [ ] The versioning scheme in `vcpkg.json` matches what upstream says.
- [ ] The license declaration in `vcpkg.json` matches what upstream
says.
- [ ] The installed as the "copyright" file matches what upstream says.
- [ ] The source code of the component installed comes from an
authoritative source.
- [ ] The generated "usage text" is accurate. See
[adding-usage](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/examples/adding-usage.md)
for context.
- [ ] The version database is fixed by rerunning `./vcpkg x-add-version
--all` and committing the result.
- [ ] Only one version is in the new port's versions file.
- [ ] Only one version is added to each modified port's versions file.

END OF NEW PORT CHECKLIST (delete this line) -->
2024-02-27 01:01:39 -08:00
jim wang
fe9f0b22b3
[dcmtk] Fix dependencies (#36607)
* fix dep

* update version

* fix link

* update vertsion

* update version

* fix patch

* update version
2024-02-07 22:27:35 -08:00
Kevin Leonardic
039cb74bbb
[dcmtk] Enable toggling external dictionary as a feature (#36136) 2024-01-23 11:55:04 -08:00
Kevin Leonardic
a1c22c4aab
[dcmtk] Update to 3.6.8 (#36124) 2024-01-17 12:02:49 -08:00
jim wang
a5bc2a1b25
[dcmtk] Fix link xml2 error (#35414) 2023-12-04 17:24:32 -08:00
Cheney Wang
a26fc81350
[vcpkg baseline][dcmtk] Remove the leading spaces of pc file (#32049)
* [vcpkg baseline][dcmtk] Adding SKIP_CHECK for vcpkg_fixup_pkgconfig()

* Fix the format of pc.in file

* Remove local change
2023-06-26 13:08:05 -07:00
reito
8c9416f444
[multiple-ports] Fix missing usage (#29345)
* Fix missing usage

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes
2023-02-09 10:59:04 -08:00
kevle
cdf0a242e4
[dcmtk] re-enable support on arm64-osx (#27611) 2022-11-03 15:16:39 -07:00
ALittleDruid
4330517344
[Dcmtk] enable dependencies (#26255)
* dcmtk: Enable dependencies, shared libs, stl, c++17 ...

* dcmtk: Update port version

* modify portfile based on comments from the review

* Update version database

* Use vcpkg_check_features' FEATURE_OPTIONS and other nitipicks.

Co-authored-by: ALittleDruid <297957399@qq.com>
Co-authored-by: Billy O'Neal <bion@microsoft.com>
2022-08-12 15:42:05 -07:00
autoantwort
12a005017b
[dcmtk] no absolute paths (#25964) 2022-07-27 11:41:12 -07:00
JonLiu1993
ee51cc2346
[DCMTK] update to 3.6.7 (#25887)
* [DCMTK] update to 3.6.7

* update version

* Add license

* update version
2022-07-22 11:07:51 -07:00
autoantwort
6ce8ef3337
[ports] add support expressions (#23034) 2022-02-17 17:23:21 -08:00
autoantwort
c4f3862e4c
[dcmtk] no absolute paths (#21277) 2021-11-18 21:02:06 -08:00
Billy O'Neal
b295670e4b
Bulk convert control files. (#19986)
```
function Convert-Control {
    Param($full)
    .\vcpkg.exe format-manifest $full
    $root = $full.Substring(0, $full.Length - 7) # CONTROL
    $new = $root + 'vcpkg.json'
    $content = Get-Content -Raw $new
    $asJson = ConvertFrom-Json $content -AsHashtable -Depth 100
    $oldVersion = $asJson['port-version']
    if ($null -eq $oldVersion) {
        $oldVersionFull = $asJson['version-string']
        Write-Host "Got version $oldVersionFull"
        $match = [System.Text.RegularExpressions.Regex]::Match($oldVersionFull, '^(.+)-(\d+)$')
        if ($match.Success -and -not [System.Text.RegularExpressions.Regex]::IsMatch($oldVersionFull, '^\d\d\d\d-\d\d-\d\d$')) {
            $newFullVersion = [string]$match.Groups[1].Value
            $oldVersion = [int]$match.Groups[2].Value
            Write-Host "newFullVersion $newFullVersion oldVersion $oldVersion"
            $newVersion = $oldVersion + 1
            $asJson['version-string'] = $newFullVersion
            Write-Host "Previous version for $full extracted from version field -- setting version-string $newFullVersion and port-version $newVersion"
        } else {
            Write-Host "No previous version for $full -- setting 1"
            $newVersion = 1
        }
    } else {
        $newVersion = [int]$oldVersion + 1
        Write-Host "New version for $full : $newVersion"
    }

    $asJson['port-version'] = $newVersion

    $content = ConvertTo-Json $asJson -Depth 100
    Set-Content -Path $new -Value $content
    .\vcpkg.exe format-manifest $new
}

Get-ChildItem ports\CONTROL -Recurse | Foreach-Object {
    Convert-Control $_.FullName
}

git commit -am "this message"
.\vcpkg.exe x-add-version -all
git commit -a --amend
```
2021-09-09 01:24:04 -07:00