csup vs. svn / release, releng, stable

Dan Lukes dan at obluda.cz
Wed May 1 10:14:13 CEST 2013


Radek Krejča wrote:
> mi tedy vychazi, ze v 9.2 oprava bude, ale u 9.1 si to musim stale hlidat.

Presne.

> Z jakeho duvodu ji neumistil do vetve s opravami chyb mi zatim unika

Tady je to nedorozumeni - to neni vetev pro opravu jakychkoliv chyb, ale
vetev s opravami zavaznych bezpecnostnich chyb. Jestli by tahle
konkretni chyba mela byt klasifikovana jako vazna bezpecnostni chyba je
zase jina otazka, pazdopadne, z textu, ktery jsi mel k dispozici
plynulo, ze nebyla.

> v 9.2 oprava bude, ale u 9.1 si to musim stale hlidat

No, jestli aktualizujes kompilovanim zdrojaku, tak tady ti pomoc
nabidnout muzu.

To /usr/src vloz prilozeny soubor pod jmenem BSDmakefile (tedy bez
pripony) *).

Do /etc/make.conf dej celou cestu ke svemu soukromemu patchi, viz
priklad (obsahuje odkaz na tri ruzne patche):

> LOCAL_SRC_PATCHES =/usr/src/patch-GLOBAL /usr/src/patch-IPFW /usr/src/patch-UHID

Patche musi byt vyrobeny tak, aby sly aplikovat z /usr/src (tj. aby mely
v sobe spravne relativni cesty k patchovanym souborum) a mohou se tykat
jak kernelu tak worldu.

Cele je to odladene pro update pomoci csup, podporu pro svn-style
updating jsem tam dobastlil prave ted kvuli tobe, takze muze pripadne
nefungovat.

Pak uz nic dalsiho hlidat nemusis. Tvoje patche ve zdrojacich zustanou i
po pripadnem make update aniz bys musel spustit jakykoliv prikaz ci
jakkoliv jinak pamatovat na to, ze tam mas takovouhle obezlicku

(ze "je to automaticke" plati pro preklady pomoci
make universe | make buildworld | make world | make buildkernel
).

Dokonce kdyz si vyrobis vlastni instalacni CD (make release v
/usr/src/release) tak na nem taky budou.

Samozrejme, az budes jednou updatovat zdrojaky na uplne jinou verzi
(treba 9.2) musis posoudit, ktere vlastni patche maji byt i nadale
aplikovany - a ty ostatni musis odstranit.


Dan


*) poslechnout me znamena z bezpecnostniho hlediska totez jako z emailu
vykopirovat spustitelny soubor a spustit ho na Windowsech. Tak si to
rozmysli.

-------------- next part --------------
TGTS=${.TARGETS:Nupdate}
TGTU=${.TARGETS:Mupdate}

.undef _VOPT
_MAKE=cd ${.CURDIR} ; ${MAKE:Q} 
.for _V in ${.MAKEFLAGS}
.if ! ( empty (${_V:N-V}) || defined(_VOPT) )
_MAKE+=${_V:Q}
.endif
.undef _VOPT
.if empty (${_V:N-V})
_VOPT=1
.endif
.endfor
_MAKE+=-s -f ${.CURDIR}/Makefile
_NULLRUN=${.MAKEFLAGS:M-n}

PATCHREQD=universe buildworld world buildkernel kernel

.undef _VOPT
.for _V in ${MFLAGS}
.if defined (_VOPT)
${_V}!=${_MAKE} -V ${_V}
.endif
.undef _VOPT
.if empty (${_V:N-V})
_VOPT=1
.endif
.endfor

.NOTPARALLEL:

.ORDER: _update ${.CURDIR}/.patch_done

update: _update ${.CURDIR}/.patch_done

_update:
	@${ECHO} "***** RUNNING UPDATE" >&2
.if !(defined(SUP_UPDATE) || defined(CVS_UPDATE)) && exists(${.CURDIR}/.svn)
	@${ECHO} ">>> Reverting ${.CURDIR} using Subversion"
	+svn -R revert .
.endif
	+${_MAKE} update
	+touch ${.CURDIR}/.update_done

${.CURDIR}/.patch_done: .update_done
.if defined(LOCAL_SRC_PATCHES) && !empty(LOCAL_SRC_PATCHES)
.for p in ${LOCAL_SRC_PATCHES}
.if !exists(${p})
	@${ECHO} "The patch file ${p} does not exist!" >&2
	@exit 1
.endif
.endfor
.endif
.if defined(LOCAL_SRC_PATCHES) && !empty(LOCAL_SRC_PATCHES)
	@${ECHO} "***** RUNNING PATCH" >&2
.for p in ${LOCAL_SRC_PATCHES}
	 patch -d ${.CURDIR} ${PATCH_FLAGS} < ${p}
.endfor
	 touch ${.CURDIR}/.patch_done
#	 touch ${.OBJDIR}/.patch_done
.endif

_PX=
.for I in ${TGTS}
_PX+=${PATCHREQD:M${I}}
.endfor

.if ${_PX:S/ //g} != "" 
_NEEDPATCH=${.CURDIR}/.patch_done
.endif

.undef _RUNDONE
.for ASRC in ${TGTS}
.if !target(${ASRC})
${ASRC}: ${_NEEDPATCH}
.ifndef _RUNDONE
	@${ECHO} "***** BUILDING FOR ${TGTS} (TARGET ${ASRC}, DEPEND TO ${_NEEDPATCH})" >&2
	+${_MAKE} ${TGTS}
	@${ECHO} "***** RETURN FROM ${TGTS}" >&2
_RUNDONE=1
.endif
.endif
.endfor
.undef _RUNDONE

.BEGIN: ${TGTU}
	@${ECHO} "***** GLOBAL START FOR ${.TARGETS}" >&2

.END:
	@${ECHO} "***** GLOBAL END FOR ${.TARGETS}" >&2


More information about the Users-l mailing list