In a recent trunk version new code was introduced in the compiler Makefile to make use of codesign for comparing stage compilers.

Problem is that there was an algorithm implemented to detect codesign in the path and this code is not properly covering the case when for some reason codesign is visible in two places... (Which happens for me when I try to use fpcupdeluxe to build latest trunk)


Here's the magic code:

ifeq ($(OS_TARGET), darwin)
CODESIGN?=$(strip $(wildcard $(addsuffix /codesign,$(SEARCHPATH))))
endif


I have added debug output and there can be cases where $CODESIGN is set to "/usr/bin/codesign /usr/bin/codesign"

which results in codesign trying to sign codesign, which fortunately fails because of /usr/bin protection in Darwin:


/Library/Developer/CommandLineTools/usr/bin/make -C compiler distclean

$CODESIGN is [/usr/bin/codesign /usr/bin/codesign]

.....

error: /Library/Developer/CommandLineTools/usr/bin/codesign_allocate: can't create output file: /usr/bin/codesign.cstemp (Operation not permitted)


and finally, later the build fails:


strip -no_uuid ppca64.tmp
/usr/bin/codesign /usr/bin/codesign --remove-signature ppc3.tmp


there is also another issue:


ifneq ($(CODESIGN),)
DIFFRESULT:=$(shell $(COPY) $(OLDFPC) $(OLDFPC).tmp; $(COPY) $(FPC) $(FPC).tmp; strip -no_uuid $(OLDFPC).tmp; strip -no_uuid $(FPC).tmp; $(CODESIGN) --remove-signature $(OLDFPC).tmp; *codesign* --remove-signature $(FPC).tmp; $(DIFF) $(OLDFPC).tmp $(FPC).tmp; $(RMPROG) $(OLDFPC).tmp $(FPC).tmp)

One instance of 'codesign' is still left in the code which has to get replaced with $(CODESIGN)


So, question one is if it is necessary to detect codesign path at all, at least for my Mac's it is in /usr/bin

and, if this step is needed,

please make the result of the detection unique so that codesign stops trying to codesign itself.


Thank you,


Michael

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to