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