The sound distributed version control system

#676 Generated diff cannot be parsed

Opened by quickdudley on April 25, 2022
quickdudley on April 25, 2022

pijul record has been failing for me with the error Error: Cannot parse change

This is the diff generated:

message = ''
timestamp = '2022-04-26T03:09:08.434990Z'

[[authors]]
key = '94BGzJNAVHTvXncvPdTN6GWHkvjUsye6ePXJtFXddMGi'

# Dependencies
[2] A5FZL66L55I2G3QLSEHYTQDB5RTJKDIVPJWIPPDJZAJRZ7L7A3QQC
[3] RDWZQD4CMLD77FQFQV2PZHNF5LVZ2DVBKRIXT37GIOQ7AGCYVQRAC
[4]+4K6N3NQIDYAQYKOKPWRRDOZZBCT44Q3O4KCCGGLPL5K64G6Q7DCQC
[5]+7Q5PDV3Y5T2XVNZ5HAOAFWVWHTL5ZZNTAWHBUW262C6KXWKVSQUQC
[6]+MFVZ32OZOYQAQFI5FU3QHP77BZV2ZZFKAVYGVLU4SOCV32QUMFGQC
[7]+AZ4AKKBFPKH53BISHUIEM7AJESH7EZMD57BX36XFAY4IQDCJ25TQC
[*] 4K6N3NQIDYAQYKOKPWRRDOZZBCT44Q3O4KCCGGLPL5K64G6Q7DCQC
[*] 7Q5PDV3Y5T2XVNZ5HAOAFWVWHTL5ZZNTAWHBUW262C6KXWKVSQUQC
[*] GBOI6XYBRN2TOGPZMFNOGK6YS7E2LAKW6SWBTLJV4OMCNI434CLQC
[*] G4ICQLCQ2FDGM7REWFUFXC6EXUH5NFOBSC22C2YIPJAJH33IB5ZAC
[*] AZ4AKKBFPKH53BISHUIEM7AJESH7EZMD57BX36XFAY4IQDCJ25TQC
[*] L4KONRCO3AR5QPKH7UD7EPVB7V2FNV5L5ZG6XMRIR2OI5LMBR6QAC
[*] MFVZ32OZOYQAQFI5FU3QHP77BZV2ZZFKAVYGVLU4SOCV32QUMFGQC

# Hunks

1. File deletion: "build" 5.256 "binary"
BF:BFD 4.1 -> 5.239:255/5, BF:BFD 5.255 -> 5.256:256/5

2. File deletion: "build/BuildSettings" 5.24173 "UTF-8"
BF:BFD 5.256 -> 5.24135:24172/5, BF:BFD 5.24172 -> 5.24173:24173/5
B:BD 5.24173 -> 5.24174:27665/5
- # BuildSettings
- #
- # Setup global variables.
- 
- # C and C++ flags
- if $(OS) = HAIKU {
- 	CCFLAGS += -DBONE_BUILD -fno-omit-frame-pointer ;
- 	C++FLAGS += -DBONE_BUILD -fno-omit-frame-pointer ;
- 	LINKLIBS += -lnetwork ;
- 	COMMON_FOLDER = /boot/common ;
- } else {
- 	# BeOS
- 
- 	COMMON_FOLDER = /boot/home/config ;
- 	if $(OSPLAT) = PPC {
- 		# filter out -nosyspath
- 		CFLAGS = [ FFilter $(CFLAGS) : -nosyspath ] ;
- 		C++FLAGS = [ FFilter $(C++FLAGS) : -nosyspath ] ;
- 		LINKFLAGS += -warn -export pragma ;
- 
- 		# set file containing preprocessed headers:
- 		PREFIX_FILE ?= [ FDirName $(LOCATE_TARGET) pe.headers ] ;
- 	}
- 
- 	if $(OSPLAT) = X86 {
- 		# check for BONE...
- 		local haveBone = [ GLOB /boot/develop/headers/be/bone/arpa : inet.h ] ;
- 		if $(haveBone)	{
- 			CCFLAGS += -DBONE_BUILD ;
- 			C++FLAGS += -DBONE_BUILD ;
- 			SYSHDRS += /boot/develop/headers/be/bone /boot/develop/headers/be/bone/sys ;
- 			LINKLIBS += -lsocket -lbind ;
- 		} else {
- 			LINKLIBS += -lnet ;
- 		}
- 	}
- 
- 	# check for Zeta...
- 	local haveZeta = [ GLOB /boot/develop/lib/x86 : libzeta.so ] ;
- 	if $(haveZeta)	{
- 		LINKLIBS += -lzeta ;
- 	}
- }
- 
- # Use copyattr for copying.
- CP = copyattr --data ;
- 
- # Default paths for bison and flex:
- BISON = bison ;
- LEX = flex ;
- 
- # mkdir shall not fail, if the directory already exists.
- MKDIR = mkdir -p ;
- 
- # Modify the main target dirs for languages and extensions.
- SetConfigVar LOCATE_MAIN_TARGET : TOP Languages
- 	: [ FDirName $(DISTRO_DIR) Languages ] ;
- SetConfigVar LOCATE_MAIN_TARGET : TOP Extensions
- 	: [ FDirName $(DISTRO_DIR) Extensions ] ;
- 
- rule SetUpSubDirBuildSettings {
- 	# SetUpSubDirBuildSettings <dir> ;
- 	#
- 	# Sets up the compiler flags and defines based on the WARNINGS, DEBUG, and
- 	# OPTIMIZE variables. Also sets the locations for the targets (objects,
- 	# libraries and executables).
- 	#
- 	# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
- 	#        TOP variable and the subdir tokens.
- 	#
- 	local dir = $(1) ;
- 
- 	# warnings settings
- 	if $(WARNINGS) != 0 {
- 		if $(OSPLAT) = X86 {
- 			CCFLAGS += -Wall -Wno-multichar -Wmissing-prototypes ;
- 			CCFLAGS += -Wpointer-arith -Wcast-align -Wsign-compare ;
- 			C++FLAGS += -Wall -Wno-multichar ;
- 			C++FLAGS += -Wno-ctor-dtor-privacy -Woverloaded-virtual ;
- 			C++FLAGS += -Wpointer-arith -Wcast-align -Wsign-compare ;
- 			C++FLAGS += -Wno-unknown-pragmas ;
- 		} else {
- 			CCFLAGS += -w on -requireprotos ;
- 		}
- 	}
- 
- 	# set the objects-folder according to debugging settings:
- 	if $(DEBUG) && $(DEBUG) != 0
- 	{
- 		OBJECTS_DIR			= [ FDirName $(TOP) generated objects-debug ] ;
- 	} 
- 	else 
- 	{
- 		OBJECTS_DIR			= [ FDirName $(TOP) generated objects-nodebug ] ;
- 	}
- 	
- 	# debugging settings
- 	if $(DEBUG) > 0 {
- 		OPTIMIZE = 0 ;
- 		STRIP_APPS = 0 ;
- 		DEFINES += DEBUG=$(DEBUG) ;
- 		CCFLAGS += -g ;
- 		C++FLAGS += -g ;
- 		LINKFLAGS += -g ;
- 	}
- 
- 	# optimization settings
- 	if $(OPTIMIZE) = 0 {
- 		if $(OSPLAT) = X86 {
- 			OPTIM = -O0 ;
- 		} else {
- 			OPTIM = -O0 ;
- 		}
- 	} else {
- 		if $(OSPLAT) = X86 {
- 			OPTIM ?= -O2 ;
- 		} else {
- 			OPTIM ?= -O7 ;
- 		}
- 	}
- 
- 	# setup objects location
- 	local objdir = [ FDirName $(OBJECTS_DIR) $(dir[2-]) ] ;
- 	SEARCH_SOURCE += $(objdir) ;
- 	LOCATE_SOURCE = $(objdir) ;
- 	LOCATE_TARGET = $(objdir) ;
- 
- 	# setup main targets location
- 	LOCATE_MAIN_TARGET ?= [ FDirName $(DISTRO_DIR) ] ;
- }
- 
- # The LOCATE_MAIN_TARGET variable shall be reset for each subdirectory.
- AUTO_SET_UP_CONFIG_VARIABLES += LOCATE_MAIN_TARGET ;
- 
- # Add the rules setting up the build settings for a subdirectory to the
- # rules invoked by SubDir.
- SUBDIRRULES += SetUpSubDirBuildSettings ;

3. File deletion: "build/ConfigRules" 5.19016 "UTF-8"
BF:BFD 5.256 -> 5.18980:19015/5, BF:BFD 5.19015 -> 5.19016:19016/5
B:BD 5.19016 -> 5.19017:24134/5
- # ConfigRules
- #
- # Contains rules providing the config variable feature. It allows to set the
- # values for certain variables for subdirectories in a central place. That is
- # one can, for instance, specify in a file like UserBuildConfig for which
- # directories to enable debugging, warnings, set special defines, compiler
- # flags and the like without needing to edit the Jamfiles for the respective
- # dirs.
- 
- rule ConfigObject
- {
- 	# ConfigObject <dir> ;
- 	#
- 	# Private rule. Returns the dummy object on which the config variables are
- 	# set for a given subdir.
- 	#
- 	# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
- 	#        TOP variable and the subdir tokens.
- 	#
- 	local config = __config__ ;
- 	local grist = [ FGrist root $(1) ] ;
- 	return $(config:G=$(grist)) ;
- }
- 
- rule SetConfigVar
- {
- 	# SetConfigVar <var> : <dir> : <value> [ : <scope> ] ;
- 	#
- 	# Sets a config variable for a specified directory to the given value.
- 	#
- 	# <var>: The name of the variable to be set.
- 	# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
- 	#        TOP variable and the subdir tokens.
- 	# <value>: The value to which the variable shall be set.
- 	# <scope>: Either "global" or "local". The former implies that the variable
- 	#          value shall also be used for subdirectories (recursively), if
- 	#          for them the variable has not been set. The latter has the same
- 	#          effect regarding subdirs as if the variable for the directory
- 	#          is not set. Defaults to "global".
- 	#
- 	local var = $(1[1]) ;
- 	local config = [ ConfigObject $(2) ] ;
- 	local scope = $(4) ;
- 	if ! $(scope) {
- 		scope = global ;
- 	}
- 	$(var) on $(config) = $(3) ;
- 	__set_$(var) on $(config) = $(scope) ;
- }
- 
- rule AppendToConfigVar
- {
- 	# AppendToConfigVar <var> : <dir> : <value> [ : <scope> ] ;
- 	#
- 	# Appends a value to a config variable for a specified directory. Shortcut
- 	# for
- 	#   SetConfigVar <var> : <dir> : [ ConfigVar <var> : <dir> ] <value
- 	#                : <scope> ;
- 	#
- 	# <var>: The name of the variable to be set.
- 	# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
- 	#        TOP variable and the subdir tokens.
- 	# <value>: The value which to append to the variables current value.
- 	# <scope>: Either "global" or "local". The former implies that the variable
- 	#          value shall also be used for subdirectories (recursively), if
- 	#          for them the variable has not been set. The latter has the same
- 	#          effect regarding subdirs as if the variable for the directory
- 	#          is not set. Defaults to "global".
- 	#
- 	SetConfigVar $(1) : $(2) : [ ConfigVar $(1) : $(2) ] $(3) : $(4) ;
- }
- 
- rule ConfigVar
- {
- 	# ConfigVar <var> : <dir> [ : <scope> ] ;
- 	#
- 	# Returns the value of a configuration variable for a given subdir.
- 	# If the variable is not set for the subdir, the rule is invoked
- 	# recursively for the parent directory with the scope "global". When
- 	# the root is reached without yielding a value, the value of the global
- 	# variable <var> is returned.
- 	#
- 	# <var>: The name of the variable whose value shall be returned.
- 	# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
- 	#        TOP variable and the subdir tokens.
- 	# <scope>: If not given any scope passed to SetConfigVar for the given
- 	#          directory will be accepted, otherwise it must match the scope
- 	#          passed to SetConfigVar.
- 	#
- 	local var = $(1[1]) ;
- 	local dir = $(2) ;
- 	local config = [ ConfigObject $(dir) ] ;
- 	local scope = $(3) ;
- 	local varScope = [ on $(config) return $(__set_$(var)) ] ;
- 	if ( ! $(scope) && $(varScope) )
- 		|| ( $(scope) && $(scope) = $(varScope) )
- 		|| ! $(dir) {
- 		on $(config) return $($(var)) ;
- 	} else {
- 		dir = [ FReverse $(dir) ] ;
- 		return [ ConfigVar $(var) : [ FReverse $(dir[2-]) ] : global ] ;
- 	}
- }
- 
- rule SetUpConfigVars {
- 	# SetUpConfigVars <dir> ;
- 	#
- 	# Sets the global variables defined in AUTO_SET_UP_CONFIG_VARIABLES to the
- 	# values specified for the subdirectory <dir>.
- 	#
- 	# <dir>: Parameters as passed to the SubDir rule, i.e. the name of the
- 	#        TOP variable and the subdir tokens.
- 	#
- 	local dir = $(1) ;
- 
- 	# Backup the global variable value on first invocation, otherwise restore
- 	# them, so that ConfigVar returns the right values for not explicity set
- 	# local variables.
- 	local var ;
- 	if ! $(__config_var_backup__) {
- 		__config_var_backup__ = true ;
- 		for var in $(AUTO_SET_UP_CONFIG_VARIABLES) {
- 			__config_var_backup_$(var)__ = $($(var)) ;
- 		}
- 	} else {
- 		for var in $(AUTO_SET_UP_CONFIG_VARIABLES) {
- 			$(var) = $(__config_var_backup_$(var)__) ;
- 		}
- 	}
- 
- 	# Set the variables to their configured values.
- 	for var in $(AUTO_SET_UP_CONFIG_VARIABLES) {
- 		$(var) = [ ConfigVar $(var) : $(dir) ] ;
- 	}
- }
- 
- # Add the SetUpConfigVars rule to the rules that are invoked at the end of the
- # SubDir rule. Prepend it, so that the variables are set up before any other
- # rule is invoked.
- SUBDIRRULES = SetUpConfigVars $(SUBDIRRULES) ;
- 
- # Some config variables that should be set up automatically for subdirs.
- AUTO_SET_UP_CONFIG_VARIABLES +=
- 	CCFLAGS C++FLAGS DEBUG DEFINES HDRS LINKFLAGS OPTIM OPTIMIZE
- 	SYSHDRS WARNINGS
- ;

4. File deletion: "build/HelperRules" 5.18051 "UTF-8"
BF:BFD 5.256 -> 5.18015:18050/5, BF:BFD 5.18050 -> 5.18051:18051/5
B:BD 5.18051 -> 5.18052:18979/5
- # HelperRules
- #
- # Helper rules without side effects.
- 
- rule FFilter
- {
- 	# FFilter <list> : <excludes> ;
- 	#
- 	# Removes all occurrences of <excludes> in <list>.
- 
- 	local list = $(1) ;
- 	local excludes = $(2) ;
- 	local newList ;
- 	local item ;
- 	for item in $(list) {
- 		local skip ;
- 		local exclude ;
- 		for exclude in $(excludes) {
- 			if $(item) = $(exclude) {
- 				skip = true ;
- 			}
- 		}
- 		if ! $(skip) {
- 			newList += $(item) ;
- 		}
- 	}
- 	return $(newList) ;
- }
- 
- rule FSplitPath
- {
- 	# FSplitPath <path> ;
- 	#
- 	# Decomposes a path into its components.
- 	#
- 	# <path>: The path to be decomposed.
- 	#
- 	local path = $(1:G=) ;
- 
- 	local components ;
- 	# $(path:D) for "/" is "/". Therefore the second condition.
- 	while $(path:D) && $(path:D) != $(path)
- 	{
- 		# Note: $(path:B) returns "." for "..", but $(path:D=) is fine.
- 		components = $(path:D=) $(components) ;
- 		path = $(path:D) ;
- 	}
- 	components = $(path) $(components) ;
- 	return $(components) ;
- }
- 

5. File deletion: "build/MainBuildRules" 5.8281 "UTF-8"
BF:BFD 5.256 -> 5.8242:8280/5, BF:BFD 5.8280 -> 5.8281:8281/5
B:BD 5.8281 -> 5.8282:9024/5, :D 6.2701 -> 5.9024:9027/6, B:BD 5.9024 -> 5.9024:9027/5, :D 6.2958 -> 5.9027:15039/6, B:BD 5.9027 -> 5.9027:15039/5, B:BD 5.15893 -> 5.15893:18014/5, B:BD 5.9027 -> 6.2702:2958/6, B:BD 5.9024 -> 6.2426:2701/6
- # MainBuildRules
- #
- # Rules that specify what to build and how to do it.
- 
- rule Application
- {
- 	# Application <name> : <sources> : <libraries> ;
- 	#
- 	# Creates an application from sources.
- 	#
- 	# <name>: Name of the application. Grist is allowed.
- 	# <sources>: List of source files. Grist will be set.
- 	# <libraries>: List of libraries to link against.
- 	#
- 	local app = $(1) ;
- 	local sources = $(2) ;
- 	local libs = $(3) ;
- 
- 	Main $(app) : $(sources) ;
- 	MakeLocate $(app) : $(LOCATE_MAIN_TARGET) ;
- 	local linkFlags ;
- 	if $(OSPLAT) = X86 {
- 		linkFlags = -Xlinker -soname=\"_APP_\" ;
- 	} else {
- 		linkFlags = ;
- 	}
- 	LINKFLAGS on $(app) = [ on $(app) return $(LINKFLAGS) ] $(linkFlags) ;
- 	LinkAgainst $(app) : $(libs) ;
- }
- 
- actions Strip
- {
- 	strip "$(1)" ;
- }
- 
- rule AddOn
- {
- 	# AddOn <name> : <sources> : <libraries> ;
- 	#
- 	# Creates an add-on from sources.
- 	#
- 	# <name>: Name of the add-on. Grist is allowed.
- 	# <sources>: List of source files. Grist will be set.
- 	# <libraries>: List of libraries to link against.
- 	#
- 	SharedLibrary $(1) : $(2) : $(3) ;
- }
- 
- rule SharedLibrary
- {
- 	# SharedLibrary <name> : <sources> : <libraries> ;
- 	#
- 	# Creates a shared library from sources.
- 	#
- 	# <name>: Name of the shared library. Grist is allowed.
- 	# <sources>: List of source files. Grist will be set.
- 	# <libraries>: List of libraries to link against.
- 	#
- 	local lib = $(1) ;
- 	local sources = $(2) ;
- 	local libs = $(3) ;
- 
- 	Main $(lib) : $(sources) ;
- 	MakeLocate $(lib) : $(LOCATE_MAIN_TARGET) ;
- 	local linkFlags ;
- 	if $(OSPLAT) = X86 {
- 		linkFlags = -shared -Xlinker -soname=\"$(lib)\" 
- 			-Xlinker --no-undefined ;
- 	} else {
- 		linkFlags = -xms ;
- 	}
- 	LINKFLAGS on $(lib) = [ on $(lib) return $(LINKFLAGS) ] $(linkFlags) ;
- 	LinkAgainst $(lib) : $(libs) ;
- }
- 
- rule StaticLibrary
- {
- 	# StaticLibrary <name> : <sources> ;
- 	#
- 	# Creates a static library from sources.
- 	#
- 	# <name>: Name of the static library. Grist is allowed.
- 	# <source>: List of source files. Grist will be set.
- 	#
- 	local lib = $(1) ;
- 	Library $(lib) : $(2) ;
- 	MakeLocate $(lib) : $(LOCATE_MAIN_TARGET) ;
- 
- 	# If KEEPOBJS is set, Library doesn't make the library depend on `lib'.
- 	if $(KEEPOBJS) {
- 		Depends lib : $(lib) ;
- 	}
- }
- 
- rule LinkAgainst
- {
- 	# LinkAgainst <name> : <libs> ;
- 	#
- 	# Adds libraries to the list of libraries a (Main) target shall be linked
- 	# against.
- 	#
- 	# <name>: The name of the target for which to add libraries.
- 	# <libs>: The libraries (actually arbitrary shared objects and static
- 	#         libraries) to be added. Valid elements are e.g. "be" or
- 	#         "libopenbeos.so" or "/boot/.../libfoo.so". If the basename starts
- 	#         with "lib" or the thingy has a dirname or grist, it is added to
- 	#         the NEEDLIBS variable (i.e. the file will be bound!), otherwise
- 	#         it is prefixed "-l" and added to LINKLIBS. If you want to specify
- 	#         a target that isn't a library and also has neither grist nor a
- 	#         dirname, you can prepend "<nogrist>" as grist; it will be
- 	#         stripped by this rule.
- 	#
- 	for i in $(>)
- 	{
- 		local isfile = ;
- 		if $(i:D) || $(i:G) {
- 			isfile = true ;
- 			if $(i:G) = <nogrist> {
- 				i = $(i:G=) ;
- 			}
- 		} else {
- 			switch $(i:B)
- 			{
- 				# XXX: _APP_ and _KERNEL_ should not be needed for ELF.
- 				case _APP_ : isfile = true ;
- 				case _KERNEL_ : isfile = true ;
- 				case lib*	: isfile = true ;
- 				case *	: isfile = ;
- 			}
- 			if ! $(isfile) && ( $(i:S) = .so || $(i:S) = .a ) {
- 				isfile = true ;
- 			}
- 		}
- 		if $(isfile) {
- 			NEEDLIBS on $(1) = [ on $(1) return $(NEEDLIBS) ] $(i) ;
- 			Depends $(1) : $(i) ;
- 		} else {
- 			LINKLIBS on $(1) = [ on $(1) return $(LINKLIBS) ] -l$(i) ;
- 		}
- 	}
- }
- 
- rule XRes
- {
- 	# XRes <target> : <resource files> ;
- 	#
- 	# Adds resources to a file.
- 	#
- 	# <target>: The files to which resources shall be added.
- 	# <resource files>: The resource files.
- 	#
- 	if $(2)
- 	{
- 		Depends $(1) : $(2) ;
- 		XRes1 $(1) : $(2) ;
- 	}
- }
- 
- actions XRes1
- {
- 	xres -o "$(1)" "$(2)" ;
- }
- 
- actions MimeSet
- {
- 	mimeset -f "$(1)" ;
- }
- 
- rule LexC++
- {
- 	Depends $(1) : $(2) ;
- 	MakeLocate $(1) : $(LOCATE_SOURCE) ;
- 	Clean clean : $(1) ;
- }
- 
- actions LexC++
- {
- 	$(LEX) -i -o$(1) $(2)
- }
- 
- rule Bison
- {
- 	local _h ;
- 
- 	_h = $(1).h ;
- 
- 	MakeLocate $(<) $(_h) : $(LOCATE_SOURCE) ;
- 
-     Depends $(<) $(_h) : $(>) ;
-     BisonC++ $(<) $(_h) : $(>) ;
-     Clean clean : $(<) $(_h) ;
- 
- 	# make sure someone includes $(_h) else it will be
- 	# a deadly independent target
- 
- 	Includes $(<) : $(_h) ;
- }
- 
- actions BisonC++
- {
- 	# TODO: this ignores $(YACCFLAGS)
- 	$(BISON) --defines=$(1[1]).h -o $(1[1]) $(2) || $(BISON) $(YACCFLAGS) -o $(1[1]) $(2)
- }
- 
- rule Rez
- {
- 	# Rez <output> : <rezFile> [ : <flags> ] ;
- 	#
- 	local output = $(1) ;
- 	local rezFile = $(2) ;
- 	local flags = $(3) ;
- 	
- 	REZHDRS on $(output) = [ on $(output) return "-I"$(HDRS) ] ;
- 	REZFLAGS on $(output) = [ on $(output) return $(REZFLAGS) ] $(flags) ;
- 	Depends $(output) : rez $(rezFile) ;
- 	Rez1 $(output) : rez $(rezFile) ;
- }
- 
- actions Rez1
- {
- 	$(2[1]) $(REZFLAGS) $(REZHDRS) -o "$(1)" "$(2[2-])" ;
- }
- 
- rule RezObjects
- {
- 	local rezFiles = $(1) ;
- 	local rezFile ;
- 	for rezFile in $(rezFiles) {
- 		local rsrcFile = $(rezFile:BS=.rsrc) ;
- 		RezObject $(rsrcFile) : [ FGristFiles $(rezFile) ] ;
- 	}
- }
- 
- rule RezObject
- {
- 	# RezObject <resource file> : <rez file> ;
- 	#
- 	local _rsrc = $(1) ;
- 	local _r = $(2) ;
- 
- 	local tmp = [ FGristFiles $(_rsrc)_tmp ] ;
- 
- 	SEARCH on $(_r) = $(SEARCH_SOURCE) ;
- 
- 	# include directories to be used
- 	HDRS on $(_rsrc) $(tmp) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ;
- 
- 	# preprocess the rez file
- 	PreProcess $(tmp) : $(_r) ;
- 
- 	# generate the resource file from the preprocessed rez file
- 	MakeLocate $(_rsrc) : $(LOCATE_TARGET) ;
- 	Rez $(_rsrc) : $(tmp) : -t ;
- }
- 
- rule PreProcess
- {
- 	# PreProcess <target> : <source> ;
- 	#
- 	local target = $(1) ;
- 	local source = $(2) ;
- 
- 	Depends $(target) : $(source) ;
- 
- 	CPPHDRS on $(target) = [ on $(target) FIncludes $(HDRS) ] ;
- 
- 	MakeLocate $(target) : $(LOCATE_SOURCE) ;
- }
- 
- if $(OSPLAT) = PPC {
- 	actions PreProcess
- 	{
- 		mwcc -preprocess $(CPPHDRS) -o "$(1)" $(2)
- 	}
- } else {
- 	actions PreProcess
- 	{
- 		gcc -E -x c $(CPPHDRS) -o "$(1)" $(2)
- 	}
- }
- 
- rule RezHeader
- {
- 	# RezHeader : <hdr> : <rsrc>
- 	#
- 	# generates a header from a given resource file.
- 	#
- 	local _hdr = $(1) ;
- 	local _rsrc = $(2) ;
- 
- 	SEARCH on $(_rsrc) = $(SEARCH_SOURCE) ;
- 	HDRS on $(_hdr) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ;
- 	MakeLocate $(_hdr) : $(LOCATE_SOURCE) ;
- 	Clean clean : $(_hdr) ;
- 
- 	Rez $(_hdr) : $(_rsrc) : -h ;
- }
- 
- rule PreCompile
- {
- 	# PreCompile <hdr> : <src>
- 	#
- 	# precompiles the given src (a headerfile) into the specified header.
- 	#
- 	local _hdr = $(1) ;
- 	local _src = $(2) ;
- 	MakeLocate $(_hdr) : $(LOCATE_TARGET) ;
- 	PreComp $(_hdr) : $(_src) ;
- 	Clean clean : $(_hdr) ;
- }
- 
- rule PreComp
- {
- 	Depends $(<) : $(>) ;
- }
- 
- actions PreComp
- {
- 	mwcc -precompile $(<) -lang cplus "$(>)" ;
- }
- 
- rule SymlinkDistroExtensionsLibDir
- {
- 	# SymlinkDistroExtensionsLibDir <extension> ;
- 	#
- 	local extension = $(1) ;
- 
- 	Depends $(extension) : <distro_extensions_dir_symlink>lib ;
- 	NoUpdate <distro_extensions_dir_symlink>lib ;
- 	MakeLocate <distro_extensions_dir_symlink>lib : $(DISTRO_DIR)/Extensions ;
- 
- 	SymlinkDistroExtensionsLibDir1 <distro_extensions_dir_symlink>lib ;
- }
- 
- actions together SymlinkDistroExtensionsLibDir1
- {	# create a link to the folder where libhekkel.so lives
- 	ln -sfn ../lib $(1) ;
- }
- 
- rule SubDirSysHdrs
- {
- 	# SubDirSysHdrs <dirs> ;
- 	#
- 	# Adds directories to the system include search paths for the current
- 	# subdirectory. Counterpart of SubDirHdrs which adds non-system include
- 	# search paths.
- 	#
- 	# <dirs>: The directories to be added to the current subdir's system
- 	#         include search paths.
- 	#
- 	SUBDIRSYSHDRS += [ FDirName $(1) ] ;
- }
- 
- rule ObjectSysHdrs
- {
- 	# SubDirSysHdrs <sources or objects> : <dirs> ;
- 	#
- 	# Adds directories to the system include search paths for the given
- 	# sources or objects. Counterpart of ObjectHdrs which adds non-system
- 	# include search paths.
- 	#
- 	# NOTE: This rule must be invoked *after* the rule that generates the
- 	# objects.
- 	#
- 	# <sources or objects>: The targets for which to add system include
- 	#                       search paths.
- 	# <dirs>: The directories to be added to the given objects' system
- 	#         include search paths.
- 	#
- 
- 	local s ;
- 	for s in [ FGristFiles $(<:S=$(SUFOBJ)) ] {
- 		SYSHDRS on $(s) += $(>) ;
- 		CCHDRS on $(s) = [ on $(s) FIncludes $(HDRS) ]
- 			$(HDRS_INCLUDES_SEPARATOR) [ on $(s) FSysIncludes $(SYSHDRS) ] ;
- 	}
- }
- 
- # FSysIncludes <dirs> ;
- #
- # Counterpart of FIncludes for system include search paths.
- #
- if $(IS_GCC_4_PLATFORM) {
- 	rule FSysIncludes { return -I$(<) ; }
- } else {
- 	if $(OSPLAT) = X86 {
- 		rule FSysIncludes { return -I$(<) ; }
- 	} else {
- 		rule FSysIncludes { return "-i "$(<) ; }
- 	}
- }
- 
- # Variable referring to the STL.
- if $(IS_GCC_4_PLATFORM) {
- 	# gcc 4 Haiku
- 	STDC++LIB = stdc++ ;
- } else {
- 	# BeOS or BeOS compatible Haiku
- 	if $(OSPLAT) = X86 {
- 		STDC++LIB = stdc++.r4 ;
- 	} else {
- 		STDC++LIB = mslcpp_4_0 ;
- 	}
- }
- rule Catalog
- {
- 	SEARCH on $(2).catkeys = $(TOP)/locales ;
- 	Catalog1 $(1) : $(2).catkeys ;
- 	Depends $(1) : $(2).catkeys ;
- }
- 
- actions Catalog1
- {
- 	linkcatkeys -o $(1) -s application/x-vnd.habitat -tr -l `echo $(2) | sed s#.*/##g | sed s#.catkeys##` $(2) ;
- }
- 
- }
- 
- actions PreCatfile
- {
- 	cat $(2) | cc -E -x c++ -iquote./ -iquotesrc/ -O3 -DB_COLLECTING_CATKEYS - | grep -av '^#' > $(1) ;
- }
- 
- actions Catfile
- {
- 	collectcatkeys -s application/x-vnd.habitat $(2) -o $(1) ;
- }
- 
- rule Catalogs
- {
- 	for code in $(2) {
- 		Catalog $(1) : $(code) ;
- 	}

6. File deletion: "build/OverriddenJamRules" 5.2688 "UTF-8"
BF:BFD 5.256 -> 5.2645:2687/5, BF:BFD 5.2687 -> 5.2688:2688/5
B:BD 5.2688 -> 5.2689:8241/5
- # OverriddenJamRules
- #
- # Jam rules that need to be overridden for good reasons.
- 
- # Overridden to allow for spaces in file names and to support resources.
- # Also set the on target LINKFLAGS variable to prevent later changes to
- # the global variable from having an effect on the setting for the target.
- rule Link
- {
- 	local dbg = [ on $(1) return $(DEBUG) ] ;
- 	if $(STRIP_APPS) && $(STRIP_APPS) != 0 && (!$(dbg) || $(dbg) = 0) {
- 		# strip app if requested so and if not in debug mode!
- 		Strip $(1) ;
- 	}
- 	# Note: RESFILES must be set before invocation.
- 	MODE on $(1) = $(EXEMODE) ;
- 	on $(1) XRes $(1) : $(RESFILES) ;
- 	Chmod $(1) ;
- 	MimeSet $(1) ;
- 	LINKFLAGS on $(1) = [ on $(1) return $(LINKFLAGS) ] ;
- }
- 
- actions Link bind NEEDLIBS
- {
- 	$(LINK) $(LINKFLAGS) -o "$(1)" $(UNDEFS) "$(2)" "$(NEEDLIBS)" $(LINKLIBS)
- }
- 
- 
- # Overridden to allow for spaces in file names.
- actions Chmod1
- {
- 	$(CHMOD) "$(MODE)" "$(1)"
- }
- 
- # Overridden to allow for spaces in file names.
- actions piecemeal together existing Clean
- {
- 	$(RM) "$(>)"
- }
- 
- # Changes to rules for sake of discrimination between system and non-system
- # headers.
- 
- if $(IS_GCC_4_PLATFORM) {
- 	HDRS_INCLUDES_SEPARATOR = ;
- } else {
- 	if $(OSPLAT) = X86 {
- 		HDRS_INCLUDES_SEPARATOR = -I- ;
- 	} else {
- 		HDRS_INCLUDES_SEPARATOR = -i- ;
- 	}
- }
- 
- # FIncludes <dirs> ;
- #
- # Overridden for gcc 4 platforms to use the correct
- #
- if $(IS_GCC_4_PLATFORM) {
- 	rule FIncludes { return "-iquote "$(1) ; }
- }
- 
- rule Cc
- {
- 	Depends $(<) : $(>) ;
- 
- 	# If the compiler's -o flag doesn't work, relocate the .o
- 
- 	if $(RELOCATE)
- 	{
- 	    CcMv $(<) : $(>) ;
- 	}
- 
- 	# Just to clarify here: this sets the per-target CCFLAGS to
- 	# be the current value of (global) CCFLAGS and SUBDIRCCFLAGS.
- 	# CCHDRS and CCDEFS must be reformatted each time for some
- 	# compiles (VMS, NT) that malign multiple -D or -I flags.
- 
- 	CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) $(OPTIM) ;
- 
- 	CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ]
- 		$(HDRS_INCLUDES_SEPARATOR) [ on $(<) FSysIncludes $(SYSHDRS) ] ;
- 	CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
- }
- 
- rule C++
- {
- 	Depends $(<) : $(>) ;
- 
- 	if $(RELOCATE)
- 	{
- 	    CcMv $(<) : $(>) ;
- 	}
- 
- 	C++FLAGS on $(<) += $(C++FLAGS) $(SUBDIRC++FLAGS) $(OPTIM) ;
- 
- 	CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ]
- 		$(HDRS_INCLUDES_SEPARATOR) [ on $(<) FSysIncludes $(SYSHDRS) ] ;
- 	CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
- }
- 
- rule Object
- {
- 	# locate object and search for source, if wanted
- 
- 	Clean clean : $(<) ;
- 
- 	MakeLocate $(<) : $(LOCATE_TARGET) ;
- 	SEARCH on $(>) = $(SEARCH_SOURCE) ;
- 
- 	# Save HDRS for -I$(HDRS) on compile.
- 	# We shouldn't need -I$(SEARCH_SOURCE) as cc can find headers
- 	# in the .c file's directory, but generated .c files (from
- 	# yacc, lex, etc) are located in $(LOCATE_TARGET), possibly
- 	# different from $(SEARCH_SOURCE).
- 
- 	HDRS on $(<) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ;
- 	SYSHDRS on $(<) = $(SUBDIRSYSHDRS) $(SYSHDRS) ;
- 
- 	# handle #includes for source: Jam scans for headers with
- 	# the regexp pattern $(HDRSCAN) and then invokes $(HDRRULE)
- 	# with the scanned file as the target and the found headers
- 	# as the sources.  HDRSEARCH is the value of SEARCH used for
- 	# the found header files.  Finally, if jam must deal with 
- 	# header files of the same name in different directories,
- 	# they can be distinguished with HDRGRIST.
- 
- 	# $(SEARCH_SOURCE:E) is where cc first looks for #include 
- 	# "foo.h" files.  If the source file is in a distant directory, 
- 	# look there.  Else, look in "" (the current directory).
- 
- 	HDRRULE on $(>) = HdrRule ;
- 	HDRSCAN on $(>) = $(HDRPATTERN) ;
- 	HDRSEARCH on $(>) = 
- 		$(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(SYSHDRS) $(STDHDRS) ;
- 
- 	HDRGRIST on $(>) = $(HDRGRIST) ;
- 
- 	# propagate target specific-defines
- 
- 	DEFINES on $(<) += $(DEFINES) ;
- 
- 	# if source is not .c, generate .c with specific rule
- 
- 	switch $(>:S)
- 	{
- 	    case .asm : As $(<) : $(>) ;
- 	    case .c :	Cc $(<) : $(>) ;
- 	    case .C :	C++ $(<) : $(>) ;
- 	    case .cc :	C++ $(<) : $(>) ;
- 	    case .cpp : C++ $(<) : $(>) ;
- 	    case .f :	Fortran $(<) : $(>) ;
- 	    case .l :	C++ $(<) : $(<:S=.cpp) ;
- 			LexC++ $(<:S=.cpp) : $(>) ;
- 	    case .s :	As $(<) : $(>) ;
- 	    case .y :	C++ $(<) : $(<:S=.cpp) ;
- 			Bison $(<:S=.cpp) : $(>) ;
- 	    case * :	UserObject $(<) : $(>) ;
- 	}
- }
- 
- rule ObjectHdrs
- {
- 	local s ;
- 	for s in [ FGristFiles $(<:S=$(SUFOBJ)) ] {
- 		HDRS on $(s) += $(>) ;
- 		CCHDRS on $(s) = [ on $(s) FIncludes $(HDRS) ]
- 			$(HDRS_INCLUDES_SEPARATOR) [ on $(s) FSysIncludes $(SYSHDRS) ] ;
- 	}
- }
- 
- # Override Jam 2.5rc3 MakeLocate and MkDir to deal more intelligently
- # with grist set on the supplied directory name.
- rule MakeLocate
- {
- 	if $(2[1])
- 	{
- 		local dir = $(2[1]) ;
- 		if ! $(dir:G) {
- 			dir = $(dir:G=dir) ;
- 		}
- 	    LOCATE on $(1) = $(dir:G=) ;
- 	    Depends $(1) : $(dir) ;
- 	    MkDir $(dir) ;
- 	}
- }
- 
- rule MkDir
- {
- 	# If dir exists, don't update it
- 	# Do this even for $(DOT).
- 
- 	local dir = $(<) ;
- 	if ! $(dir:G) {
- 		dir = $(dir:G=dir) ;
- 	}
- 
- 	NoUpdate $(dir) ;
- 
- 	if $(dir:G=) != $(DOT) && ! $($(dir:G=)-mkdir) {
- 		local s ;
- 
- 		# Cheesy gate to prevent multiple invocations on same dir
- 		# MkDir1 has the actions 
- 		# Arrange for jam dirs
- 
- 		$(dir:G=)-mkdir = true ;
- 		MkDir1 $(dir) ;
- 		Depends dirs : $(dir) ;
- 
- 		# Recursively make parent directories.
- 		# $(dir:P) = $(dir)'s parent, & we recurse until root
- 
- 		s = $(dir:P) ;	# parent keeps grist
- 	
- 		if $(s:G=) && $(s) != $(dir) {
- 			Depends $(dir) : $(s) ;
- 			MkDir $(s) ;
- 		} else if $(s) {
- 			NotFile $(s) ;
- 		}
- 	}
- }
- 
- # Add SUBDIRSYSHDRS to the variables that shall be reset automatically by the
- # SubDir rule.
- SUBDIRRESET += SYSHDRS ;

7. File deletion: "build/UserBuildConfig.sample" 5.305 "UTF-8"
BF:BFD 5.256 -> 5.258:304/5, BF:BFD 5.304 -> 5.305:305/5
B:BD 5.305 -> 5.306:2644/5
- # UserBuildConfig
- #
- # Sample of a UserBuildConfig file. It is a central place where the user can
- # set variables affecting certain aspects of the build, such as debug,
- # warnings and optimization settings. The file is ignored by CVS.
- #
- # The following variables can be set:
- # 
- # CCFLAGS, C++FLAGS		- Flags passed to the C/C++ compiler.
- # DEBUG					- If not empty, will turn on debugging, i.e. will
- #						  add respective C/C++ compiler and linker flags and
- #						  the CPP DEBUG macro.
- # DEFINES				- CPP macros to be defined, e.g. something like
- #						  `SPECIAL_FEATURE' or `CACHE_SIZE=1024'.
- # HDRS					- List of directories to be added to the local include
- #						  search paths.
- # LINKFLAGS				- Flags passed to the linker.
- # LOCATE_MAIN_TARGET	- Directory where the main targets (i.e. applications,
- #						  libraries shall be placed). Should usually not be
- #						  tampered with by the user.
- # OPTIM					- Optimization specific flags passed to the C/C++
- #						  compiler. Usually you want to use OPTIMIZE instead.
- # OPTIMIZE				- If not set to `0', will turn on optimization, i.e.
- #						  will set the respective C/C++ compiler flags
- #						  (i.e. the OPTIM variable).
- # STRIP_APPS			- if not set to '0', will cause all generated apps to
- #						  be stripped. Default is '0', i.e. no stripping
- # SYSHDRS				- List of directories to be added to the system include
- #						  search paths.
- # WARNINGS				- If not set to `0', will turn on warnings, i.e. will
- #						  set the respective C/C++ compiler flags.
- 
- # Examples:
- 
- # Globally turn off debugging:
- #
- # DEBUG = 0 ;
- 
- # Globally activate debugging:
- #
- # DEBUG = 1 ;
- 
- # ... e.g. like this, for the `add-ons/catalogs' directory and all its
- # subdirectories.
- #
- # SetConfigVar WARNINGS : TOP add-ons catalogs : 1 ;
- 
- # Turn on debugging for the the directory `Languages' and all its subdirectories.
- #
- # SetConfigVar DEBUG : TOP Languages : 1 ;
- 
- # Turn off optimization for the `rez' directory and all its subdirectories.
- #
- # SetConfigVar OPTIMIZE : TOP rez : 0 ;
- 
- # Define the CPP macro INSANE_DEBUGGING_LEVEL to the value `100' in the
- # `lpe' directory, but NOT in its subdirectories (note the use of the
- # optional fourth parameter `local', which works for both SetConfigVar and
- # AppendToConfigVar).
- #
- # AppendToConfigVar DEFINES : TOP lpe : INSANE_DEBUGGING_LEVEL=100 : local ;

8. File deletion: "Jamrules" 5.27699 "UTF-8"
BF:BFD 4.1 -> 5.27666:27698/5, BF:BFD 5.27698 -> 5.27699:27699/5
B:BD 5.27699 -> 5.27700:27883/5, :D 6.3014 -> 5.27883:29685/6, B:BD 5.27883 -> 5.27883:29685/5, B:BD 5.27883 -> 6.2959:3014/6
- 
- # The directories used by the build.
- BUILD_DIR			= [ FDirName $(TOP) build ] ;
- GENERATED_DIR		= [ FDirName $(TOP) generated ] ;
- DISTRO_DIR			= [ FDirName $(TOP) generated distro ] ;
- 
- # First find out which gcc version the platform uses.
- IS_GCC_4_PLATFORM = ;
- if $(OS) = HAIKU {
- 	# Only Haiku might use gcc 4. We use the existence of a libstdc++.r4.so in
- 	# /boot/develop/lib/x86 to judge whether this is a BeOS compatible and thus
- 	# gcc 2 platform. This is not entirely correct, but should be good enough
- 	# for the time being.
- 	local hasLibStdC++.R4 = [ Glob /boot/system/lib : libstdc++.r4.so ] ;
- 	if ! $(hasLibStdC++.R4) {
- 		IS_GCC_4_PLATFORM = 1 ;
- 	}
- }
- 
- include [ FDirName $(BUILD_DIR) HelperRules ] ;
- include [ FDirName $(BUILD_DIR) ConfigRules ] ;
- include [ FDirName $(BUILD_DIR) OverriddenJamRules ] ;
- include [ FDirName $(BUILD_DIR) MainBuildRules ] ;
- include [ FDirName $(BUILD_DIR) BuildSettings ] ;
- 
- # Include UserBuildConfig.
- {
- 	local userBuildConfig = [ GLOB $(BUILD_DIR) : UserBuildConfig ] ;
- 	if $(userBuildConfig)
- 	{
- 		LOCATE on UserBuildConfig = $(BUILD_DIR) ;
- 		include UserBuildConfig ;
- 	}
- }
- 
- # default to strip generated apps if not specified otherwise:
- STRIP_APPS ?= 1 ;
- 
- # Cache files for header scanning and jamfile caching.
- HCACHEFILE = header_cache ;
- JCACHEFILE = jamfile_cache ;
- LOCATE on $(HCACHEFILE) $(JCACHEFILE) = $(GENERATED_DIR) ;
- 
- 
- rule MakeDistro
- {
- 	# MakeDistro <target> 
- 
- 	local target = $1 ;
- 
- 	NotFile $(target) ;
- 	Always $(target) ;
- }
- 
- actions MakeDistro
- {
- 	echo "making distro $(DISTRO_DIR)" ;
- 	rm -rf $(DISTRO_DIR)/Documentation ;
- 	mkdir $(DISTRO_DIR)/Documentation ;
- 	cp -a $(TOP)/doc/*.html $(DISTRO_DIR)/Documentation/ ;
- 	mkdir $(DISTRO_DIR)/Documentation/gifs ;
- 	cp -a $(TOP)/doc/gifs/*.gif $(DISTRO_DIR)/Documentation/gifs/ ;
- 	ln -sf Documentation/index.html $(DISTRO_DIR)/Documentation.html ;
- 	ln -sfn $(COMMON_FOLDER)/bin $(DISTRO_DIR)/\(drag\ lpe\ here\ to\ install\) ;
- 	cp -a $(COMMON_FOLDER)/lib/libpcre*.so $(DISTRO_DIR)/lib/ ;
- }
- 
- CATALOG_DIR  = [ FDirName $(GENERATED_DIR) catalog ] ;

9. File deletion: "Jamfile" 5.29718 "UTF-8"
BF:BFD 4.1 -> 5.29686:29717/5, BF:BFD 5.29717 -> 5.29718:29718/5
B:BD 5.29718 -> 5.29719:29778/5
- SubDir TOP ;
- 
- SubInclude TOP src ;
- 
- # MakeDistro distro ;
- 

10. File deletion: "src/Jamfile" 5.140 "UTF-8"
BF:BFD 5.15 -> 5.108:139/5, BF:BFD 5.139 -> 5.140:140/5
B:BD 5.140 -> 5.141:159/5, :D 7.17 -> 5.181:192/7, :D 6.561 -> 5.181:192/6, B:BD 5.181 -> 5.181:192/5, B:BD 5.192 -> 6.562:655/6, :D 6.655 -> 5.192:196/6, B:BD 5.192 -> 5.192:196/5, :D 7.43 -> 5.214:238/7, :D 6.698 -> 5.214:238/6, B:BD 5.214 -> 5.214:238/5, B:BD 5.238 -> 6.699:842/6, :D 2.44 -> 6.884:981/2, B:BD 6.884 -> 6.884:981/6, B:BD 6.842 -> 2.0:44/2, B:BD 5.196 -> 6.656:698/6, B:BD 5.159 -> 6.536:561/6
- SubDir TOP src ;
- 
-   Main.cpp
-   ;
- SEARCH on $(SOURCES) = $(SUBDIR) ;
- Echo $(SOURCES) ;
- 
- Application Habitat :
-   $(SOURCES)
-   :
-   ;
- 
- MimeSet Habitat ;
- 
- Depends habitat.pre : $(SOURCES) ;
- PreCatfile habitat.pre : $(SOURCES) ;
- Depends en.catkeys : habitat.pre ;
- Catfile en.catkeys : habitat.pre ;
- Depends Habitat : en.catkeys ;
- MakeLocate en.catkeys : $(TOP)/locales ;
- 
- Catalogs Habitat : en ;
- MakeLocate habitat.pre : $(GENERATED_DIR) ;
-   be
-   localestub
-   sodium
-   $(STDC++LIB)
- SOURCES = Connection.cpp

11. Replacement in "locales/zh.catkeys":2 3.35 "UTF-8"
B:BD 3.88 -> 3.88:157/3
  up 3.88, new 12277:12348, down
- Failed to initialize libsodium	MainWindow	初始化libsodium失败了
\
+ Failed to initialize libsodium	MainWindow		初始化libsodium失败了

12. File addition: "Makefile" in "" "UTF-8"
  up 4.1, new 12237:12269
+ ## Haiku Generic Makefile v2.6 ##
+ 
+ ## Fill in this file to specify the project being created, and the referenced
+ ## Makefile-Engine will do all of the hard work for you. This handles any
+ ## architecture of Haiku.
+ ##
+ ## For more information, see:
+ ## file:///system/develop/documentation/makefile-engine.html
+ 
+ # The name of the binary.
+ NAME = Habitat
+ 
+ # The type of binary, must be one of:
+ #	APP:	Application
+ #	SHARED:	Shared library or add-on
+ #	STATIC:	Static library archive
+ #	DRIVER: Kernel driver
+ TYPE = APP
+ 
+ # If you plan to use localization, specify the application's MIME signature.
+ APP_MIME_SIG = application/x-vnd.habitat
+ 
+ #	The following lines tell Pe and Eddie where the SRCS, RDEFS, and RSRCS are
+ #	so that Pe and Eddie can fill them in for you.
+ #%{
+ # @src->@
+ 
+ #	Specify the source files to use. Full paths or paths relative to the
+ #	Makefile can be included. All files, regardless of directory, will have
+ #	their object files created in the common object directory. Note that this
+ #	means this Makefile will not work correctly if two source files with the
+ #	same name (source.c or source.cpp) are included from different directories.
+ #	Also note that spaces in folder names do not work well with this Makefile.
+ SRCS = src/Connection.cpp src/Main.cpp
+ 
+ #	Specify the resource definition files to use. Full or relative paths can be
+ #	used.
+ RDEFS =
+ 
+ #	Specify the resource files to use. Full or relative paths can be used.
+ #	Both RDEFS and RSRCS can be utilized in the same Makefile.
+ RSRCS =
+ 
+ # End Pe/Eddie support.
+ # @<[email protected]
+ #%}
+ 
+ #	Specify libraries to link against.
+ #	There are two acceptable forms of library specifications:
+ #	-	if your library follows the naming pattern of libXXX.so or libXXX.a,
+ #		you can simply specify XXX for the library. (e.g. the entry for
+ #		"libtracker.so" would be "tracker")
+ #
+ #	-	for GCC-independent linking of standard C++ libraries, you can use
+ #		$(STDCPPLIBS) instead of the raw "stdc++[.r4] [supc++]" library names.
+ #
+ #	- 	if your library does not follow the standard library naming scheme,
+ #		you need to specify the path to the library and it's name.
+ #		(e.g. for mylib.a, specify "mylib.a" or "path/mylib.a")
+ LIBS = be localestub sodium $(STDCPPLIBS)
+ 
+ #	Specify additional paths to directories following the standard libXXX.so
+ #	or libXXX.a naming scheme. You can specify full paths or paths relative
+ #	to the Makefile. The paths included are not parsed recursively, so
+ #	include all of the paths where libraries must be found. Directories where
+ #	source files were specified are	automatically included.
+ LIBPATHS =
+ 
+ #	Additional paths to look for system headers. These use the form
+ #	"#include <header>". Directories that contain the files in SRCS are
+ #	NOT auto-included here.
+ SYSTEM_INCLUDE_PATHS =
+ 
+ #	Additional paths paths to look for local headers. These use the form
+ #	#include "header". Directories that contain the files in SRCS are
+ #	automatically included.
+ LOCAL_INCLUDE_PATHS =
+ 
+ #	Specify the level of optimization that you want. Specify either NONE (O0),
+ #	SOME (O1), FULL (O3), or leave blank (for the default optimization level).
+ OPTIMIZE :=
+ 
+ # 	Specify the codes for languages you are going to support in this
+ # 	application. The default "en" one must be provided too. "make catkeys"
+ # 	will recreate only the "locales/en.catkeys" file. Use it as a template
+ # 	for creating catkeys for other languages. All localization files must be
+ # 	placed in the "locales" subdirectory.
+ LOCALES = en zh
+ 
+ #	Specify all the preprocessor symbols to be defined. The symbols will not
+ #	have their values set automatically; you must supply the value (if any) to
+ #	use. For example, setting DEFINES to "DEBUG=1" will cause the compiler
+ #	option "-DDEBUG=1" to be used. Setting DEFINES to "DEBUG" would pass
+ #	"-DDEBUG" on the compiler's command line.
+ DEFINES =
+ 
+ #	Specify the warning level. Either NONE (suppress all warnings),
+ #	ALL (enable all warnings), or leave blank (enable default warnings).
+ WARNINGS =
+ 
+ #	With image symbols, stack crawls in the debugger are meaningful.
+ #	If set to "TRUE", symbols will be created.
+ SYMBOLS :=
+ 
+ #	Includes debug information, which allows the binary to be debugged easily.
+ #	If set to "TRUE", debug info will be created.
+ DEBUGGER :=
+ 
+ #	Specify any additional compiler flags to be used.
+ COMPILER_FLAGS =
+ 
+ #	Specify any additional linker flags to be used.
+ LINKER_FLAGS =
+ 
+ #	Specify the version of this binary. Example:
+ #		-app 3 4 0 d 0 -short 340 -long "340 "`echo -n -e '\302\251'`"1999 GNU GPL"
+ #	This may also be specified in a resource.
+ APP_VERSION := 0.0.1
+ 
+ # Determine the CPU type
+ MACHINE=$(shell uname -m)
+ ifeq ($(MACHINE), BePC)
+ 	CPU = x86
+ else
+ 	CPU = $(MACHINE)
+ endif
+ 
+ # Set the core tools if they're not already specified.
+ MIMESET	:= mimeset
+ XRES	:= xres
+ RESCOMP	:= rc
+ CC		:= $(CC)
+ C++		:= $(CXX)
+ 
+ # Set up the linker & linker flags.
+ ifeq ($(origin LD), default)
+ 	LD			:= $(CC)
+ endif
+ LDFLAGS += -Xlinker -soname=_APP_
+ 
+ OBJ_DIR := generated/objects
+ TARGET_DIR := generated/distro
+ TARGET := $(TARGET_DIR)/$(NAME)
+ 
+ # Psuedo-function for converting a list of source files in SRCS variable to a
+ # corresponding list of object files in $(OBJ_DIR)/xxx.o. The "function" strips
+ # off the src file suffix (.ccp or .c or whatever) and then strips off the
+ # off the directory name, leaving just the root file name. It then appends the
+ # .o suffix and prepends the $(OBJ_DIR)/ path
+ define SRCS_LIST_TO_OBJS
+ 	$(addprefix $(OBJ_DIR)/, $(addsuffix .o, $(foreach file, $(SRCS), \
+ 	$(basename $(notdir $(file))))))
+ endef
+ 
+ define SRCS_LIST_TO_DEPENDS
+ 	$(addprefix $(OBJ_DIR)/, $(addsuffix .d, $(foreach file, $(SRCS), \
+ 	$(basename $(notdir $(file))))))
+ endef
+ 
+ OBJS = $(SRCS_LIST_TO_OBJS)
+ DEPENDS = $(SRCS_LIST_TO_DEPENDS)
+ 
+ # Create a unique list of paths to our sourcefiles and resources.
+ SRC_PATHS += $(sort $(foreach file, $(SRCS) $(RSRCS) $(RDEFS), $(dir $(file))))
+ 
+ # Add source paths to VPATH if not already present.
+ VPATH :=
+ VPATH += $(addprefix :, $(subst  ,:, $(filter-out $($(subst, :, ,$(VPATH))), $(SRC_PATHS))))
+ 
+ # Set up the local & system include paths and C++ stdlibs.
+ ifneq (,$(filter $(CPU),x86 x86_64))
+ 	LOC_INCLUDES = $(foreach path, $(SRC_PATHS) $(LOCAL_INCLUDE_PATHS), $(addprefix -I, $(path)))
+  ifeq ($(CC_VER), 2)
+ 	INCLUDES = $(LOC_INCLUDES)
+ 	INCLUDES += -I-
+ 	INCLUDES += $(foreach path, $(SYSTEM_INCLUDE_PATHS), $(addprefix -I, $(path)))
+ 
+ 	STDCPPLIBS = stdc++.r4
+  else
+ 	INCLUDES = -iquote./
+ 	INCLUDES += $(foreach path, $(SRC_PATHS) $(LOCAL_INCLUDE_PATHS), $(addprefix -iquote, $(path)))
+ 	INCLUDES += $(foreach path, $(SYSTEM_INCLUDE_PATHS), $(addprefix -isystem, $(path)))
+ 
+ 	STDCPPLIBS = stdc++ supc++
+  endif
+ else
+ ifeq ($(CPU), ppc)
+ 	LOC_INCLUDES = $(foreach path, $(SRC_PATHS) $(LOCAL_INCLUDE_PATHS), $(addprefix -I, $(path)))
+ 	SYS_INCLUDES += -i-
+ 	SYS_INCLUDES += $(foreach path, $(SYSTEM_INCLUDE_PATHS), $(addprefix -i , $(path)))
+ 
+ 	INCLUDES = $(LOC_INCLUDES) $(SYS_INCLUDES)
+ endif
+ endif
+ # Add the -L prefix to all of the library paths.
+ LINK_PATHS = $(foreach path, $(SRC_PATHS) $(LIBPATHS), \
+ 	$(addprefix -L, $(path)))
+ 
+ # Handle the additional libraries specified. If the libraries have a .so or
+ # a .a prefix, or if they are _APP_ or _KERNEL_, simply add them to the list.
+ LINK_LIBS += $(filter %.so %.a _APP_ _KERNEL_, $(LIBS))
+ # If the libraries do not have suffixes and are not _APP_ or _KERNEL_,
+ # prepend -l to each name:(e.g. "be" becomes "-lbe").
+ LINK_LIBS += $(foreach lib, $(filter-out %.so %.a _APP_ _KERNEL_, $(LIBS)), $(addprefix -l, $(lib)))
+ 
+ # Add the linkpaths and linklibs to LDFLAGS.
+ LDFLAGS += $(LINK_PATHS)  $(LINK_LIBS)
+ 
+ # Add the defines to CFLAGS.
+ CFLAGS += $(foreach define, $(DEFINES), $(addprefix -D, $(define)))
+ 
+ # Add the additional compiler flags to CFLAGS.
+ CFLAGS += $(COMPILER_FLAGS)
+ 
+ # Add the additional linkflags to LDFLAGS
+ LDFLAGS += $(LINKER_FLAGS)
+ 
+ # Use the archiving tools to create an an archive if we're building a static
+ # library, otherwise use the linker.
+ ifeq ($(strip $(TYPE)), STATIC)
+ 	BUILD_LINE = ar -cru "$(TARGET)" $(OBJS)
+ else
+ 	BUILD_LINE = $(LD) -o "[email protected]" $(OBJS) $(LDFLAGS)
+ endif
+ 
+ # Pseudo-function for converting a list of resource definition files in RDEFS
+ # variable to a corresponding list of object files in $(OBJ_DIR)/xxx.rsrc.
+ # The "function" strips off the rdef file suffix (.rdef) and then strips
+ # of the directory name, leaving just the root file name. It then appends the
+ # the .rsrc suffix and prepends the $(OBJ_DIR)/ path.
+ define RDEFS_LIST_TO_RSRCS
+ 	$(addprefix $(OBJ_DIR)/, $(addsuffix .rsrc, $(foreach file, $(RDEFS), \
+ 	$(basename $(notdir $(file))))))
+ endef
+ 
+ # Create the resource definitions instruction in case RDEFS is not empty.
+ ifeq ($(RDEFS), )
+ 	RSRCS +=
+ else
+ 	RSRCS += $(RDEFS_LIST_TO_RSRCS)
+ endif
+ 
+ # Create the resource instruction.
+ ifeq ($(RSRCS), )
+ 	DO_RSRCS :=
+ else
+ 	DO_RSRCS := $(XRES) -o $(TARGET) $(RSRCS)
+ endif
+ 
+ # Set the directory for internationalization sources (catkeys) if it isn't
+ # already.
+ CATKEYS_DIR	:= locales
+ 
+ define LOCALES_LIST_TO_CATKEYS
+ 	$(addprefix $(CATKEYS_DIR)/, $(addsuffix .catkeys, $(foreach lang, $(LOCALES), $(lang))))
+ endef
+ CATKEYS = $(LOCALES_LIST_TO_CATKEYS)
+ 
+ default: $(TARGET)
+ 
+ $(TARGET):	$(OBJ_DIR) $(TARGET_DIR) $(OBJS) $(RSRCS) $(CATKEYS)
+ 	$(BUILD_LINE)
+ 	$(DO_RSRCS)
+ 	$(MIMESET) -f "[email protected]"
+ 	for lc in $(LOCALES); do linkcatkeys -o $(TARGET) -s $(APP_MIME_SIG) -tr -l $$lc $(CATKEYS_DIR)/$$lc.catkeys; done
+ 
+ # Create OBJ_DIR if it doesn't exist.
+ $(OBJ_DIR)::
+ 	@[ -d $(OBJ_DIR) ] || mkdir $(OBJ_DIR) >/dev/null 2>&1
+ 
+ $(TARGET_DIR)::
+ 	@[ -d $(TARGET_DIR) ] || mkdir $(TARGET_DIR) >/dev/null 2>&1
+ 
+ # Create the localization sources directory if it doesn't exist.
+ $(CATKEYS_DIR)::
+ 	@[ -d $(CATKEYS_DIR) ] || mkdir $(CATKEYS_DIR) >/dev/null 2>&1
+ 
+ # Rules to create the dependency files.
+ $(OBJ_DIR)/%.d : %.c
+ 	mkdir -p $(OBJ_DIR); \
+ 	mkdepend $(LOC_INCLUDES) -p .c:$(OBJ_DIR)/%n.o -m -f "[email protected]" $<
+ $(OBJ_DIR)/%.d : %.cpp
+ 	mkdir -p $(OBJ_DIR); \
+ 	mkdepend $(LOC_INCLUDES) -p .cpp:$(OBJ_DIR)/%n.o -m -f "[email protected]" $<
+ $(OBJ_DIR)/%.d : %.cp
+ 	mkdir -p $(OBJ_DIR); \
+ 	mkdepend $(LOC_INCLUDES) -p .cp:$(OBJ_DIR)/%n.o -m -f "[email protected]" $<
+ $(OBJ_DIR)/%.d : %.cc
+ 	mkdir -p $(OBJ_DIR); \
+ 	mkdepend $(LOC_INCLUDES) -p .cc:$(OBJ_DIR)/%n.o -m -f "[email protected]" $<
+ $(OBJ_DIR)/%.d : %.cxx
+ 	mkdir -p $(OBJ_DIR); \
+ 	mkdepend $(LOC_INCLUDES) -p .cxx:$(OBJ_DIR)/%n.o -m -f "[email protected]" $<
+ $(OBJ_DIR)/%.d : %.C
+ 	mkdir -p $(OBJ_DIR); \
+ 	mkdepend $(LOC_INCLUDES) -p .C:$(OBJ_DIR)/%n.o -m -f "[email protected]" $<
+ $(OBJ_DIR)/%.d : %.CC
+ 	mkdir -p $(OBJ_DIR); \
+ 	mkdepend $(LOC_INCLUDES) -p .CC:$(OBJ_DIR)/%n.o -m -f "[email protected]" $<
+ $(OBJ_DIR)/%.d : %.CPP
+ 	mkdir -p $(OBJ_DIR); \
+ 	mkdepend $(LOC_INCLUDES) -p .CPP:$(OBJ_DIR)/%n.o -m -f "[email protected]" $<
+ $(OBJ_DIR)/%.d : %.CXX
+ 	mkdir -p $(OBJ_DIR); \
+ 	mkdepend $(LOC_INCLUDES) -p .CXX:$(OBJ_DIR)/%n.o -m -f "[email protected]" $<
+ 
+ -include $(DEPENDS)
+ # Rules to make the object files.
+ $(OBJ_DIR)/%.o : %.c
+ 	$(CC) -c $< $(INCLUDES) $(CFLAGS) -o "[email protected]"
+ $(OBJ_DIR)/%.o : %.cpp
+ 	$(C++) -c $< $(INCLUDES) $(CFLAGS) -o "[email protected]"
+ $(OBJ_DIR)/%.o : %.cp
+ 	$(CC) -c $< $(INCLUDES) $(CFLAGS) -o "[email protected]"
+ $(OBJ_DIR)/%.o : %.cc
+ 	$(C++) -c $< $(INCLUDES) $(CFLAGS) -o "[email protected]"
+ $(OBJ_DIR)/%.o : %.cxx
+ 	$(C++) -c $< $(INCLUDES) $(CFLAGS) -o "[email protected]"
+ $(OBJ_DIR)/%.o : %.C
+ 	$(CC) -c $< $(INCLUDES) $(CFLAGS) -o "[email protected]"
+ $(OBJ_DIR)/%.o : %.CC
+ 	$(C++) -c $< $(INCLUDES) $(CFLAGS) -o "[email protected]"
+ $(OBJ_DIR)/%.o : %.CPP
+ 	$(C++) -c $< $(INCLUDES) $(CFLAGS) -o "[email protected]"
+ $(OBJ_DIR)/%.o : %.CXX
+ 	$(C++) -c $< $(INCLUDES) $(CFLAGS) -o "[email protected]"
+ 
+ # Rules to compile the resource definition files.
+ $(OBJ_DIR)/%.rsrc : %.rdef
+ 	cat $< | $(CC) -E $(INCLUDES) $(CFLAGS) - | grep -av '^#' | $(RESCOMP) -I $(dir $<) -o "[email protected]" -
+ $(OBJ_DIR)/%.rsrc : %.RDEF
+ 	cat $< | $(CC) -E $(INCLUDES) $(CFLAGS) - | grep -av '^#' | $(RESCOMP) -I $(dir $<) -o "[email protected]" -
+ 
+ # Rule to preprocess program sources into file ready for collecting catkeys.
+ $(OBJ_DIR)/$(NAME).pre : $(SRCS)
+ 	-cat $(SRCS) | $(CC) -E -x c++ $(INCLUDES) $(CFLAGS) -DB_COLLECTING_CATKEYS - | grep -av '^#' > $(OBJ_DIR)/$(NAME).pre
+ 
+ $(CATKEYS_DIR)/en.catkeys : $(CATKEYS_DIR) $(OBJ_DIR)/$(NAME).pre
+ 	collectcatkeys -s $(APP_MIME_SIG) $(OBJ_DIR)/$(NAME).pre -o $(CATKEYS_DIR)/en.catkeys
+ 
+ # The generic "clean" command. (Deletes everything in the object folder.)
+ .PHONY: clean
+ clean:
+ 	-rm -rf "$(OBJ_DIR)"
+ 
+ # Remove just the application from the object folder.
+ .PHONY: rmapp
+ rmapp ::
+ 	-rm -f $(TARGET)
+ 

quickdudley on April 25, 2022

I have managed to reproduce with a smaller change:

message = ''
timestamp = '2022-04-26T03:26:54.272457Z'

[[authors]]
key = '94BGzJNAVHTvXncvPdTN6GWHkvjUsye6ePXJtFXddMGi'

# Dependencies
[2] 7Q5PDV3Y5T2XVNZ5HAOAFWVWHTL5ZZNTAWHBUW262C6KXWKVSQUQC
[3]+4K6N3NQIDYAQYKOKPWRRDOZZBCT44Q3O4KCCGGLPL5K64G6Q7DCQC
[*] 4K6N3NQIDYAQYKOKPWRRDOZZBCT44Q3O4KCCGGLPL5K64G6Q7DCQC
[*] GBOI6XYBRN2TOGPZMFNOGK6YS7E2LAKW6SWBTLJV4OMCNI434CLQC
[*] G4ICQLCQ2FDGM7REWFUFXC6EXUH5NFOBSC22C2YIPJAJH33IB5ZAC
[*] L4KONRCO3AR5QPKH7UD7EPVB7V2FNV5L5ZG6XMRIR2OI5LMBR6QAC
[*] MFVZ32OZOYQAQFI5FU3QHP77BZV2ZZFKAVYGVLU4SOCV32QUMFGQC
[*] FLFRPTT3PZMSNVV6II24IXRPNHKDXKG5JGJMPGYVPAKREJRT7QHQC
[*] CPN2HCEVLRBQ7UWTARPGJPJMCDUWBN7AIXTSCXRSNVNFEKZPRTNAC
[*] FAAALW4QE6OJIVRYVCF2NGUYIKSK7OFSNLTOS2TIKPRQMMDDIVZAC
[*] 3VCG3CQASYKYIPWOUDE6KKASJIRBYKKQZNXPRXST4Y3CGBT6HKAQC

# Hunks

1. File deletion: "build" 2.256 "binary"
BF:BFD 3.1 -> 2.239:255/2, BF:BFD 2.255 -> 2.256:256/2
spacefrogg on April 27, 2022

How did you create this change? Could post a shell script to recreate it?

quickdudley on April 27, 2022

@spacefrogg both changes were generated entirely by pijul record; no other tools were involved.

quickdudley on April 28, 2022

@spacefrogg sorry I misunderstood. This script is sufficient to replicate the bug:

mkdir 676
cd 676
pijul init
mkdir a
touch a/b
pijul add a/b
pijul record -m 1
rm -r a
pijul record -m 2 a
rohan on April 29, 2022

It’s an issue with deleting empty files (or directories) as an even simpler replications is:

mkdir 676
cd 676
pijul init
mkdir a
pijul add a
pijul record -m 1
rmdir a
pijul record -m 2 a
rohan on April 29, 2022

Empty files are recorded but when viewing the change errors Invalid change.

The Can't parse change is due to directory deletion. The parser doesn’t know it’s a directory because there’s not enough context and instead thinks it’s a binary file

1. File deletion: "a" 2.13 "binary"
BF:BFD 3.1 -> 2.0:12/2, BF:BFD 2.12 -> 2.13:13/2

Binary files can’t be recorded interactively so there’s no parsing logic for them.

However, real binary changes should never have got this far so the attached change makes the assumption it’s a directory. Still produces an Invalid change.

rohan added a change on April 29, 2022
4QGVAI46ZDCZBZWW3EVL3JMG46FXMZRIQUFGN5PZ7AKAE5F4D73AC
rohan on May 6, 2022

pmeunier seems to have fixed this in the main channel