Our project uses CMake, which generates a .xcodeproj bundle. Our project has an existing network extension (Transparent Proxy Provider); I'm trying to add a second one, which is a packet filter. Xcode is extremely unhappy:
error: Multiple commands produce '/Build/mybuild/Entitlements.plist'
note: Target 'PacketFilter' (project 'project') has write command with output /Build/mybuild/Entitlements.plist
note: Target 'ProxyProvier' (project 'project') has write command with output /Build/mybuild/Entitlements.plist
My problem is: I can't tell what is generating the Entitlements.plist file! If I build each of those two targets separately, it does get generated. But if I search for "Entitlements" in the bundle, there is nothing. So I am unable to tell what is going on.
Each of the extension targets has their own entitlements file -- each of them has their own CMakeLists.txt file, and has this setting:
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.entitlements"
but something -- and I assume it's CMake, although I can't find anything that does that -- is producing a rule somewhere that says it creates Entitlements.plist. And it's doing it outside of the project.xcodeproj bundle?
How can I track this down and/or fix it?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Is it actually usable as a fireawall in macOS? I tried (as an example) adding a rule to block port 80, and it did not seem to work. But, that's all I tried -- just added a line to /etc/pf.conf
I was trying to have a date picker show up conditionally; it seems to work for iOS, but macOS (13, haven't tried it on 14 yet) it ... doesn't. In particular, if I select "custom" in this code, and then click on a date part, it brings up the graphical picker, and I can select a date, but then... it doesn't go away. Clearly I am doing something wrong, but is it clear to anyone who isn't me what that is?
import SwiftUI
extension View {
/// Hide or show the view based on a boolean value.
///
/// Example for visibility:
///
/// Text("Label")
/// .isHidden(true)
///
/// Example for complete removal:
///
/// Text("Label")
/// .isHidden(true, remove: true)
///
/// - Parameters:
/// - hidden: Set to `false` to show the view. Set to `true` to hide the view.
/// - remove: Boolean value indicating whether or not to remove the view.
@ViewBuilder func isHidden(_ hidden: Bool, remove: Bool = false, disable: Bool = false) -> some View {
if hidden {
if !remove {
self.hidden()
.disabled(disable)
}
} else {
self
}
}
}
enum ExpireType: CustomStringConvertible, Hashable, CaseIterable {
case never
case oneWeek
case twoWeek
case oneMonth
case sixMonth
case custom
func expires(given date: Date) -> Date? {
let calendar = Calendar.current
switch self {
case .never:
return nil
case .custom:
return nil
case .oneWeek:
return calendar.date(byAdding: .weekOfYear, value: 1, to: Date())
case .twoWeek:
return calendar.date(byAdding: .weekOfYear, value: 2, to: Date())
case .oneMonth:
return calendar.date(byAdding:.month, value: 1, to: Date())
case .sixMonth:
return calendar.date(byAdding: .month, value: 6, to: Date())
}
}
var description: String {
switch self {
case .never: return "Never"
case .custom:
return "Custom"
case .oneWeek:
return "One week"
case .twoWeek:
return "Two weeks"
case .oneMonth:
return "One month"
case .sixMonth:
return "Six months"
}
}
}
struct ExpireDatePicker: View {
@State var expires = Date()
@State var expireType = ExpireType.never
@State var didChange = false
@State var dateString = ""
@State var showDatePicker = false
private func updateText() {
if self.expireType == .never {
self.dateString = ""
} else if self.expireType == .custom {
self.dateString = self.expires.formatted(.dateTime.day().month().year())
} else {
self.dateString = self.expireType.expires(given: Date())!.formatted(.dateTime.day().month().year())
}
}
/*
* For the expire date, we want to let
* the user pick one of the predfined dates,
* or a custom date.
*/
var body: some View {
VStack(alignment: .trailing) {
let _ = print("showDatePicker \(self.showDatePicker)")
Picker("Expiration date", selection: self.$expireType) {
ForEach(ExpireType.allCases, id: \.self) { et in
Text(String(describing: et))
.tag(et)
}
}
ZStack(alignment: .trailing) {
Text(dateString)
.fontWeight(.ultraLight)
.isHidden(self.showDatePicker, disable: true)
/*
* This does not work well.
* I can't get it to disappear,
* or relinquish control
*/
DatePicker("", selection: self.$expires, displayedComponents: .date)
.datePickerStyle(.compact)
.isHidden(!self.showDatePicker, disable: true)
}
}
.onChange(of: self.expireType) { to in
self.showDatePicker = (to == .custom)
self.updateText()
}
.onChange(of: self.expires) { to in
print("expires changed to \(self.expires)")
self.showDatePicker = false
}
}
}
I've got
@Environment(\.managedObjectContext) var context
private var home: Home
private var predicate: NSPredicate
@State var sortBy: SortDescriptor<Room>
@FetchRequest private var rooms: FetchedResults<Room>
init(home: Home) {
self.home = home
_sortBy = State(initialValue: SortDescriptor<Room>(\.name))
self.predicate = NSPredicate(format: "%K = %@", "home", self.home)
_rooms = FetchRequest<Room>( sortDescriptors: [self.sortBy], predicate: self.predicate)
}
But it won't compile -- it says Variable 'self.rooms' used before being initialized. But... how?
root# malloc_history /tmp/stack-logs.60147.10f5f7000.agent-tests.0EDkOu.index -callTree
malloc_history[60193]: [fatal] unable to read input graph: The data couldn’t be read because it isn’t in the correct format.
I ran my program as
root# env MallocDebugReport=stderr MallocGuardEdges=1 MallocStackLogging=1 MallocStackLoggingNoCompact=1 MallocScribble=1 MallocErrorAbort=1 DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib ./test/agent-test
(The program then segfaults, which looks to be due to a memory stomper.)
I just wrote code for our app to use ASWebAuthenticationSession for 3rd-party authentication (in particular, YUBIKEYS WOOHOO). Our app registers a URI scheme of x-com-kithrup for launch services events, so I used x-com-kithrup-yubi for ASWebAUthenticationSession.
Only, I didn't change the back end, so it still redirects to x-com-kithrup://success on a successful login. And... ASWebAuthenticationSession is still calling the handler when it gets a URL with the x-com-kithrup URI, instead of the x-com-kithrup-yubi URI scheme.
This seems to show that a bunch of memory being allocated in... mach_vm_deallocate. That doesn't seem likely, so I have to assume I'm misreading the output? (This is on macOS.)
I don't have enough physical machines to install Sonoma; I do, however, have lots of CPU cycles, memory, and disk space -- so can I get Sonoma running in VMWare Fusion? Ideally on both AS and Intel.
I searched to see if this had been asked, but I will be the first to admit my searching skills are bad. (This is why I like find and grep.)
We have our own root CA that is installed with our application. For non-MDM installs, the system asks if the user wants to do that, which is all well and good.
It also used to ask us when removing that certificate. It doesn't now. So now I am wondering if I dreamed it, except other people say they also got prompted and don't now.
It's being installed and removed using the security command, in scripts.
macOS, really, so there are a bunch of things that may be running during various types of sleep. I know I can get notifications from IOKit about the system going to sleep or waking up, but if I've got a daemon that crashed, and is then relaunched automatically, can I tell whether the machine is awake, or in some sort of sleep state other than hibernation?
In some cases, one of our daemons will end up with thousands of threads. Clearly a bug somewhere, but I can't see it in the code. (Admittedly, it's C++ which is a bit alien to me still. Anyway.)
If I wanted to just be notified each time a thread was created in the process, what are some ways to do that? I assume dtrace and lldb have ways to od it, but I'm not quite sure what.
I got the permission from Apple (yay), and when I generate a profile on the portal, I can select it. But when I download it... it doesn't have it. Looking at the profile on the portal again, it says I have "Enabled Capabilities Endpoint Security, In-App Purchase". (Although how did that get there?)
I searched and couldn't find anything, which shocks me, I can't be the only person to ask this. Therefore my search skills are once again demonstrated to be weak.
Given an EKCalendar, I can get the source thence sourceIdentifier... but that's just a UUID; can I get the actual URL for that? I assume it's somewhere?
Playing with EventKit, I wanted to test requesting access. Which I did once. Yay.
Now it's stuck in System Settings... and I don't know how to reset it. (This is on Ventura.)
sef% mdls /Applications/Google\ Chrome.app/Contents/Frameworks/Google\ Chrome\ Framework.framework/Versions/112.0.5615.137/Helpers/Google\ Chrome\ Helper.app
kMDItemFSContentChangeDate = 2023-04-17 23:59:16 +0000
kMDItemFSCreationDate = 2023-04-17 23:59:16 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = 0
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = 0
kMDItemFSLabel = 0
kMDItemFSName = "Google Chrome Helper.app"
kMDItemFSNodeCount = 1
kMDItemFSOwnerGroupID = 0
kMDItemFSOwnerUserID = 0
kMDItemFSSize = 1
kMDItemFSTypeCode = ""
sef% mdfind 'kMDItemFSName == "Google Chrome Helper.app"'
So there's a metadata key that has a value... but mdfind won't find it. I haven't tried writing a small program to see if it would find it yet, although I am somewhat curious if it would.