Build Information
Failed to build Openhealthcardkit, reference 5.10.1 (423006
), with Swift 5.10 for macOS (SPM) on 20 Aug 2024 13:47:44 UTC.
Build Command
env DEVELOPER_DIR=/Applications/Xcode-15.4.0.app xcrun swift build --arch arm64
Build Log
========================================
RunAll
========================================
Builder version: 4.50.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/gematik/ref-OpenHealthCardKit.git
Reference: 5.10.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/gematik/ref-OpenHealthCardKit
* tag 5.10.1 -> FETCH_HEAD
HEAD is now at 4230060 Increase Package.swift iOS version to 14 (#33)
Cloned https://github.com/gematik/ref-OpenHealthCardKit.git
Revision (git rev-parse @):
4230060f01eaf707379949ade9866b325ab21cea
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/gematik/ref-OpenHealthCardKit.git at 5.10.1
Fetching http://github.com/Carthage/Commandant
Fetching https://github.com/gematik/OpenSSL-Swift
Fetching http://github.com/Quick/Nimble
Fetching https://github.com/mattgallagher/CwlCatchException.git
Fetching https://github.com/gematik/ASN1Kit.git
Fetching https://github.com/mattgallagher/CwlPreconditionTesting.git
Fetching https://github.com/apple/swift-docc-plugin
[1/1257] Fetching cwlpreconditiontesting
[203/1712] Fetching cwlpreconditiontesting, cwlcatchexception
[495/2517] Fetching cwlpreconditiontesting, cwlcatchexception, openssl-swift
[552/3725] Fetching cwlpreconditiontesting, cwlcatchexception, openssl-swift, asn1kit
[589/5553] Fetching cwlpreconditiontesting, cwlcatchexception, openssl-swift, asn1kit, swift-docc-plugin
[2602/7876] Fetching cwlpreconditiontesting, cwlcatchexception, openssl-swift, asn1kit, swift-docc-plugin, commandant
Fetched https://github.com/gematik/OpenSSL-Swift from cache (2.08s)
Fetching https://github.com/apple/swift-docc-symbolkit
[5518/7071] Fetching cwlpreconditiontesting, cwlcatchexception, asn1kit, swift-docc-plugin, commandant
[7072/25922] Fetching cwlpreconditiontesting, cwlcatchexception, asn1kit, swift-docc-plugin, commandant, nimble
[19514/28981] Fetching cwlpreconditiontesting, cwlcatchexception, asn1kit, swift-docc-plugin, commandant, nimble, swift-docc-symbolkit
Fetched https://github.com/apple/swift-docc-symbolkit from cache (1.31s)
Fetched https://github.com/mattgallagher/CwlPreconditionTesting.git from cache (3.55s)
Fetched https://github.com/mattgallagher/CwlCatchException.git from cache (3.56s)
Fetched https://github.com/apple/swift-docc-plugin from cache (3.56s)
Fetched https://github.com/gematik/ASN1Kit.git from cache (3.56s)
Fetched http://github.com/Quick/Nimble from cache (3.56s)
Computing version for https://github.com/apple/swift-docc-plugin
Fetched http://github.com/Carthage/Commandant from cache (3.56s)
Computed https://github.com/apple/swift-docc-plugin at 1.3.0 (2.77s)
Computing version for https://github.com/gematik/OpenSSL-Swift
Computed https://github.com/gematik/OpenSSL-Swift at 4.2.0 (0.62s)
Computing version for https://github.com/gematik/ASN1Kit.git
Computed https://github.com/gematik/ASN1Kit.git at 1.3.1 (0.61s)
Computing version for https://github.com/apple/swift-docc-symbolkit
Computed https://github.com/apple/swift-docc-symbolkit at 1.0.0 (0.64s)
Computing version for http://github.com/Carthage/Commandant
Computed http://github.com/Carthage/Commandant at 0.18.0 (0.62s)
Creating working copy for https://github.com/gematik/ASN1Kit.git
Working copy of https://github.com/gematik/ASN1Kit.git resolved at 1.3.1
Creating working copy for http://github.com/Carthage/Commandant
Working copy of http://github.com/Carthage/Commandant resolved at 0.18.0
Creating working copy for https://github.com/gematik/OpenSSL-Swift
Working copy of https://github.com/gematik/OpenSSL-Swift resolved at 4.2.0
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.3.0
Creating working copy for https://github.com/apple/swift-docc-symbolkit
Working copy of https://github.com/apple/swift-docc-symbolkit resolved at 1.0.0
[16375/12818417] Downloading https://github.com/gematik/OpenSSL-Swift/releases/download/4.2.0/OpenSSL.xcframework.zip
Downloading binary artifact https://github.com/gematik/OpenSSL-Swift/releases/download/4.2.0/OpenSSL.xcframework.zip
Downloaded https://github.com/gematik/OpenSSL-Swift/releases/download/4.2.0/OpenSSL.xcframework.zip (1.89s)
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"dependencies": [
{
"identity": "ref-openhealthcardkit",
"name": "Openhealthcardkit",
"url": "https://github.com/gematik/ref-OpenHealthCardKit.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/ref-OpenHealthCardKit",
"dependencies": [
{
"identity": "asn1kit",
"name": "ASN1Kit",
"url": "https://github.com/gematik/ASN1Kit.git",
"version": "1.3.1",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/ASN1Kit",
"dependencies": [
{
"identity": "commandant",
"name": "Commandant",
"url": "http://github.com/Carthage/Commandant",
"version": "0.18.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Commandant",
"dependencies": [
]
}
]
},
{
"identity": "openssl-swift",
"name": "OpenSSL-Swift",
"url": "https://github.com/gematik/OpenSSL-Swift",
"version": "4.3.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/OpenSSL-Swift",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/gematik/ref-OpenHealthCardKit.git
[1/5181] Fetching ref-openhealthcardkit
Fetched https://github.com/gematik/ref-OpenHealthCardKit.git from cache (2.03s)
Fetching https://github.com/gematik/OpenSSL-Swift from cache
Fetching https://github.com/gematik/ASN1Kit.git from cache
Fetched https://github.com/gematik/OpenSSL-Swift from cache (0.47s)
Fetched https://github.com/gematik/ASN1Kit.git from cache (0.47s)
Computing version for https://github.com/gematik/OpenSSL-Swift
Computed https://github.com/gematik/OpenSSL-Swift at 4.3.0 (0.66s)
Computing version for https://github.com/gematik/ASN1Kit.git
Computed https://github.com/gematik/ASN1Kit.git at 1.3.1 (0.02s)
Fetching http://github.com/Carthage/Commandant from cache
Fetched http://github.com/Carthage/Commandant from cache (0.69s)
Computing version for http://github.com/Carthage/Commandant
Computed http://github.com/Carthage/Commandant at 0.18.0 (0.04s)
Creating working copy for http://github.com/Carthage/Commandant
Working copy of http://github.com/Carthage/Commandant resolved at 0.18.0
Creating working copy for https://github.com/gematik/ASN1Kit.git
Working copy of https://github.com/gematik/ASN1Kit.git resolved at 1.3.1
Creating working copy for https://github.com/gematik/OpenSSL-Swift
Working copy of https://github.com/gematik/OpenSSL-Swift resolved at 4.3.0
Creating working copy for https://github.com/gematik/ref-OpenHealthCardKit.git
Working copy of https://github.com/gematik/ref-OpenHealthCardKit.git resolved at 5.10.1 (4230060)
[16375/12863183] Downloading https://github.com/gematik/OpenSSL-Swift/releases/download/4.3.0/OpenSSL.xcframework.zip
Downloading binary artifact https://github.com/gematik/OpenSSL-Swift/releases/download/4.3.0/OpenSSL.xcframework.zip
Downloaded https://github.com/gematik/OpenSSL-Swift/releases/download/4.3.0/OpenSSL.xcframework.zip (1.49s)
warning: '.resolve-product-dependencies': dependency 'ref-openhealthcardkit' is not used by any target
Found 2 product dependencies
- ASN1Kit
- OpenSSL-Swift
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 5.10
Building package at path: $PWD
https://github.com/gematik/ref-OpenHealthCardKit.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.4.0.app xcrun swift build --arch arm64
[1/1] Compiling plugin Swift-DocC
[2/2] Compiling plugin Swift-DocC Preview
Building for debugging...
[2/11] Write sources
[9/11] Copying OpenSSL.framework
[10/11] Write swift-version-33747A42983211AE.txt
[12/40] Emitting module ASN1Kit
[13/40] Compiling ASN1Kit ASN1Tag.swift
[14/40] Compiling ASN1Kit DataScanner.swift
[15/40] Compiling ASN1Kit Data+Hex.swift
[16/40] Compiling ASN1Kit ASN1Data.swift
[17/40] Compiling ASN1Kit ASN1DecodedTag.swift
[18/40] Compiling ASN1Kit ASN1Decoder.swift
[19/42] Compiling ASN1Kit ObjectIdentifier.swift
[20/42] Compiling ASN1Kit ASN1CodableType.swift
[21/42] Compiling ASN1Kit ASN1Object+Encoding.swift
[22/42] Compiling ASN1Kit Array+ASN1Encoding.swift
[23/42] Compiling ASN1Kit Bool+ASN1Encoding.swift
[24/42] Compiling ASN1Kit Data+ASN1Encoding.swift
[25/42] Compiling ASN1Kit Int+Length.swift
[26/42] Compiling ASN1Kit OutputStream+UInt8.swift
[27/42] Compiling ASN1Kit Date+ASN1Encoding.swift
[28/42] Compiling ASN1Kit GeneralizedTimeDateFormatter.swift
[29/42] Compiling ASN1Kit Int+ASN1Encoding.swift
[30/42] Compiling ASN1Kit ASN1Primitive+Description.swift
[31/42] Compiling ASN1Kit Data+ASN1Int.swift
[32/42] Compiling ASN1Kit Data+UInt.swift
[33/42] Compiling ASN1Kit String+ASN1Encoding.swift
[34/42] Compiling ASN1Kit ASN1DecodedTag+Encoding.swift
[35/42] Compiling ASN1Kit ASN1Object+Subscript.swift
[36/42] Compiling ASN1Kit ASN1Error.swift
[37/42] Compiling ASN1Kit ASN1Int.swift
[38/42] Compiling ASN1Kit ASN1Object.swift
[39/42] Emitting module Helper
[40/42] Compiling Helper CommandLogger.swift
[41/57] Compiling ASN1Kit String+Subscript.swift
[42/57] Compiling ASN1Kit UInt+TagNo.swift
[43/57] Compiling CardReaderProviderApi CardReaderControllerType.swift
[44/58] Compiling CardReaderProviderApi ProviderDescriptor.swift
[45/58] Compiling CardReaderProviderApi CommandType+LogicChannel.swift
[46/58] Compiling CardReaderProviderApi CommandType.swift
[47/58] Compiling CardReaderProviderApi CardChannelType.swift
/Users/admin/builder/spi-builder-workspace/Sources/CardReaderProviderApi/Card/CardError.swift:28:10: warning: associated value 'objcError' of 'Sendable'-conforming enum 'CardError' has non-sendable type 'NSException?'
case objcError(NSException?)
^
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
@frozen public enum Optional<Wrapped> : ExpressibleByNilLiteral {
^
[48/58] Compiling CardReaderProviderApi CardError.swift
/Users/admin/builder/spi-builder-workspace/Sources/CardReaderProviderApi/Card/CardError.swift:28:10: warning: associated value 'objcError' of 'Sendable'-conforming enum 'CardError' has non-sendable type 'NSException?'
case objcError(NSException?)
^
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
@frozen public enum Optional<Wrapped> : ExpressibleByNilLiteral {
^
[49/58] Compiling CardReaderProviderApi CardProtocol.swift
[50/58] Compiling CardReaderProviderApi CardType.swift
[51/58] Emitting module CardReaderProviderApi
/Users/admin/builder/spi-builder-workspace/Sources/CardReaderProviderApi/Card/CardError.swift:28:10: warning: associated value 'objcError' of 'Sendable'-conforming enum 'CardError' has non-sendable type 'NSException?'
case objcError(NSException?)
^
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
@frozen public enum Optional<Wrapped> : ExpressibleByNilLiteral {
^
[52/58] Compiling CardReaderProviderApi CardReaderType.swift
[53/58] Compiling CardReaderProviderApi ProviderDescriptorType.swift
[54/58] Compiling CardReaderProviderApi CardReaderProviderType.swift
[55/58] Compiling CardReaderProviderApi ResponseType+APDU.swift
[56/58] Compiling CardReaderProviderApi ResponseType.swift
[57/58] Compiling CardReaderProviderApi APDU.swift
[58/58] Compiling CardReaderProviderApi CommandType+APDU.swift
[59/61] Compiling CardReaderAccess CardReaderControllerManager.swift
[60/61] Compiling CardReaderAccess Swift+Reflection.swift
[61/61] Emitting module CardReaderAccess
[62/103] Compiling HealthCardAccess Data+Hex.swift
[63/103] Compiling HealthCardAccess UInt8+Data.swift
[64/103] Compiling HealthCardAccess HealthCard.swift
[65/103] Compiling HealthCardAccess HealthCardCommandType.swift
[66/103] Compiling HealthCardAccess ApplicationIdentifier.swift
[67/103] Compiling HealthCardAccess CardItemType.swift
[68/103] Compiling HealthCardAccess CardKeyReferenceType.swift
[69/103] Compiling HealthCardAccess CardObjectIdentifierType.swift
[70/103] Compiling HealthCardAccess DedicatedFile.swift
[71/107] Compiling HealthCardAccess CAN.swift
[72/107] Compiling HealthCardAccess CardGeneration.swift
[73/107] Compiling HealthCardAccess CardVersion2.swift
[74/107] Compiling HealthCardAccess CertificateInfo.swift
[75/107] Compiling HealthCardAccess Key.swift
[76/107] Compiling HealthCardAccess PSOAlgorithm.swift
[77/107] Compiling HealthCardAccess Password.swift
[78/107] Compiling HealthCardAccess ShortFileIdentifier.swift
[79/107] Compiling HealthCardAccess Data+Normalize.swift
[80/107] Emitting module HealthCardAccess
[81/107] Compiling HealthCardAccess HealthCardCommand+AccessStructuredData.swift
[82/107] Compiling HealthCardAccess HealthCardCommand+AccessTransparentData.swift
[83/107] Compiling HealthCardAccess HealthCardCommand+Authentication.swift
[84/107] Compiling HealthCardAccess HealthCardCommand+ManageSE.swift
[85/107] Compiling HealthCardAccess HealthCardCommand+Misc.swift
[86/107] Compiling HealthCardAccess HealthCardPropertyType.swift
[87/107] Compiling HealthCardAccess HealthCardResponseType.swift
[88/107] Compiling HealthCardAccess HealthCardStatus.swift
[89/107] Compiling HealthCardAccess HealthCardType.swift
[90/107] Compiling HealthCardAccess EgkFileSystem.swift
[91/107] Compiling HealthCardAccess HbaFileSystem.swift
[92/107] Compiling HealthCardAccess HealthCardFileSystemType.swift
[93/107] Compiling HealthCardAccess SmcbFileSystem.swift
[94/107] Compiling HealthCardAccess HealthCardCommand+ObjectSystemManagement.swift
[95/107] Compiling HealthCardAccess HealthCardCommand+PerfomSecurityOperation.swift
[96/107] Compiling HealthCardAccess HealthCardCommand+UserVerification.swift
[97/107] Compiling HealthCardAccess HealthCardCommand.swift
[98/107] Compiling HealthCardAccess HealthCardCommandBuilder.swift
[99/107] Compiling HealthCardAccess ElementaryFile.swift
[100/107] Compiling HealthCardAccess FileControlParameter.swift
[101/107] Compiling HealthCardAccess FileIdentifier.swift
[102/107] Compiling HealthCardAccess Format2Pin.swift
[103/107] Compiling HealthCardAccess GemCvCertificate.swift
[104/107] Compiling HealthCardAccess ECCurveInfo.swift
[105/107] Compiling HealthCardAccess SignatureAlgorithm.swift
[106/107] Compiling HealthCardAccess HealthCardResponse.swift
[107/107] Compiling HealthCardAccess ResponseStatus.swift
[108/128] Compiling HealthCardControl CardChannelType+Version.swift
[109/128] Compiling HealthCardControl HealthCard+Error.swift
[110/128] Compiling HealthCardControl AES.swift
[111/128] Compiling HealthCardControl Data+Secure.swift
[112/128] Compiling HealthCardControl HealthCardType+Authenticate.swift
[113/128] Compiling HealthCardControl HealthCardType+ChangeReferenceData.swift
[114/128] Compiling HealthCardControl HealthCardType+ESIGN.swift
[115/130] Compiling HealthCardControl KeyAgreement.swift
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/KeyAgreement.swift:231:20: warning: 'publisher(for:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
$0.publisher(for: card, writeTimeout: writeTimeout, readTimeout: readTimeout)
^
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/KeyAgreement.swift:269:20: warning: 'publisher(for:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
$0.publisher(for: card, writeTimeout: writeTimeout, readTimeout: readTimeout)
^
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/KeyAgreement.swift:332:21: warning: 'publisher(for:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
command.publisher(for: card, writeTimeout: writeTimeout, readTimeout: readTimeout)
^
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/KeyAgreement.swift:390:20: warning: 'publisher(for:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
$0.publisher(for: card, writeTimeout: writeTimeout, readTimeout: readTimeout)
^
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/KeyAgreement.swift:450:20: warning: 'publisher(for:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
$0.publisher(for: card, writeTimeout: writeTimeout, readTimeout: readTimeout)
^
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/SecureCardChannel.swift:60:45: warning: 'transmit(command:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
let encryptedResponse = try channel.transmit(command: encryptedCommand,
^
[116/130] Compiling HealthCardControl SecureCardChannel.swift
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/KeyAgreement.swift:231:20: warning: 'publisher(for:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
$0.publisher(for: card, writeTimeout: writeTimeout, readTimeout: readTimeout)
^
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/KeyAgreement.swift:269:20: warning: 'publisher(for:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
$0.publisher(for: card, writeTimeout: writeTimeout, readTimeout: readTimeout)
^
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/KeyAgreement.swift:332:21: warning: 'publisher(for:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
command.publisher(for: card, writeTimeout: writeTimeout, readTimeout: readTimeout)
^
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/KeyAgreement.swift:390:20: warning: 'publisher(for:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
$0.publisher(for: card, writeTimeout: writeTimeout, readTimeout: readTimeout)
^
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/KeyAgreement.swift:450:20: warning: 'publisher(for:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
$0.publisher(for: card, writeTimeout: writeTimeout, readTimeout: readTimeout)
^
/Users/admin/builder/spi-builder-workspace/Sources/HealthCardControl/SecureMessaging/SecureCardChannel.swift:60:45: warning: 'transmit(command:writeTimeout:readTimeout:)' is deprecated: Use structured concurrency version instead
let encryptedResponse = try channel.transmit(command: encryptedCommand,
^
[117/130] Emitting module HealthCardControl
[118/130] Compiling HealthCardControl KeyDerivationFunction.swift
[119/130] Compiling HealthCardControl Logger.swift
[120/130] Compiling HealthCardControl CardChannelType+CardAID.swift
[121/130] Compiling HealthCardControl CardChannelType+CardAccess.swift
[122/130] Compiling HealthCardControl HealthCardType+ReadFile.swift
[123/130] Compiling HealthCardControl AES128PaceKey.swift
[124/130] Compiling HealthCardControl HealthCardType+ResetRetryCounter.swift
[125/130] Compiling HealthCardControl HealthCardType+VerifyPin.swift
[126/130] Compiling HealthCardControl ResponseStatus+WrongSecret.swift
[127/130] Compiling HealthCardControl CardType+SecureMessaging.swift
[128/130] Compiling HealthCardControl Data+Hex.swift
[129/130] Compiling HealthCardControl SecureHealthCard.swift
[130/130] Compiling HealthCardControl SecureMessaging.swift
[131/140] Compiling NFCCardReaderProvider NFCHealthCardSession.swift
[132/140] Compiling NFCCardReaderProvider CoreNFCError.swift
[133/140] Compiling NFCCardReaderProvider NFCTagReaderSession+Publisher.swift
/Users/admin/builder/spi-builder-workspace/Sources/NFCCardReaderProvider/Reader/NFCTagReaderSession+Publisher.swift:307:25: error: cannot find 'NSRecursiveLock' in scope
private let mutex = NSRecursiveLock()
^~~~~~~~~~~~~~~
[134/140] Compiling NFCCardReaderProvider NFCISO7816APDU+CommandType.swift
[135/140] Compiling NFCCardReaderProvider NFCCardError.swift
[136/140] Compiling NFCCardReaderProvider NFCCardChannel.swift
[137/140] Compiling NFCCardReaderProvider Logger.swift
[138/140] Compiling NFCCardReaderProvider NFCCard.swift
[139/140] Compiling NFCCardReaderProvider Data+Hex.swift
error: emit-module command failed with exit code 1 (use -v to see invocation)
[140/140] Emitting module NFCCardReaderProvider
/Users/admin/builder/spi-builder-workspace/Sources/NFCCardReaderProvider/Reader/NFCTagReaderSession+Publisher.swift:307:25: error: cannot find 'NSRecursiveLock' in scope
private let mutex = NSRecursiveLock()
^~~~~~~~~~~~~~~
error: fatalError
BUILD FAILURE 5.10 macosSpm