@@ -221,24 +221,8 @@ update_infix() {
221221 exit 1
222222 fi
223223
224- # Update ChangeLog.md with new kernel version
225- log_info " Updating ChangeLog.md..."
226- if [ -f " doc/ChangeLog.md" ]; then
227- # Check if there's already a kernel upgrade entry in the latest release
228- if grep -q " ^- Upgrade Linux kernel to" doc/ChangeLog.md | head -20; then
229- # Find and update the existing kernel upgrade line
230- sed -i " 0,/^- Upgrade Linux kernel to.*/{s/^- Upgrade Linux kernel to.*/- Upgrade Linux kernel to $NEW_VERSION (LTS)/}" doc/ChangeLog.md
231- log_info " Updated existing kernel version entry to $NEW_VERSION "
232- else
233- # Add new kernel upgrade entry after the first "### Changes" section
234- sed -i " 0,/^### Changes/a\\
235- \\
236- - Upgrade Linux kernel to $NEW_VERSION (LTS)" doc/ChangeLog.md
237- log_info " Added new kernel version entry: $NEW_VERSION "
238- fi
239- else
240- log_warn " doc/ChangeLog.md not found, skipping changelog update"
241- fi
224+ # Update changelog
225+ update_changelog " $NEW_VERSION "
242226
243227 # Commit all changes
244228 log_info " Committing changes to infix..."
@@ -251,6 +235,64 @@ update_infix() {
251235 fi
252236}
253237
238+ # Update ChangeLog.md with new kernel version
239+ update_changelog () {
240+ local NEW_VERSION=" $1 "
241+
242+ log_info " Updating ChangeLog.md..."
243+ if [ ! -f " doc/ChangeLog.md" ]; then
244+ log_warn " doc/ChangeLog.md not found, skipping changelog update"
245+ return 0
246+ fi
247+
248+ # Check if the latest release is UNRELEASED, if not create one
249+ if ! grep -q " ^\[.*\]\[UNRELEASED\]" doc/ChangeLog.md; then
250+ log_info " No UNRELEASED section found, creating new one"
251+ # Extract current version and increment it
252+ CURRENT_VER=$( grep -m1 " ^\[v" doc/ChangeLog.md | grep -oP ' v\d+\.\d+\.\d+' | head -1)
253+ if [ -n " $CURRENT_VER " ]; then
254+ # Parse version (e.g., v25.10.0 = year.month.patch)
255+ YEAR=$( echo " $CURRENT_VER " | cut -d' .' -f1 | sed ' s/v//' )
256+ MONTH=$( echo " $CURRENT_VER " | cut -d' .' -f2)
257+ PATCH=$( echo " $CURRENT_VER " | cut -d' .' -f3)
258+
259+ # Increment month, roll over to next year if needed
260+ NEXT_MONTH=$(( 10 #$MONTH + 1 ))
261+ NEXT_YEAR=$YEAR
262+ if [ $NEXT_MONTH -gt 12 ]; then
263+ NEXT_MONTH=1
264+ NEXT_YEAR=$(( YEAR + 1 ))
265+ fi
266+ NEXT_VER=$( printf " v%d.%02d.0" $NEXT_YEAR $NEXT_MONTH )
267+
268+ log_info " Creating new section for $NEXT_VER "
269+ # Insert new unreleased header at the top
270+ sed -i " 1a\\
271+ [$NEXT_VER ][UNRELEASED] - TBD\\
272+ -----------------------------\\
273+ \\
274+ ### Changes" doc/ChangeLog.md
275+ log_info " Created new UNRELEASED header"
276+ else
277+ log_error " Could not determine current version from ChangeLog.md"
278+ exit 1
279+ fi
280+ fi
281+
282+ # Now add or update the kernel upgrade entry in the UNRELEASED section
283+ if grep -q " ^- Upgrade Linux kernel to" doc/ChangeLog.md | head -20; then
284+ # Update existing kernel upgrade line
285+ sed -i " 0,/^- Upgrade Linux kernel to.*/{s/^- Upgrade Linux kernel to.*/- Upgrade Linux kernel to $NEW_VERSION (LTS)/}" doc/ChangeLog.md
286+ log_info " Updated existing kernel version entry to $NEW_VERSION "
287+ else
288+ # Add new kernel upgrade entry after the first "### Changes" section
289+ sed -i " 0,/^### Changes/a\\
290+ \\
291+ - Upgrade Linux kernel to $NEW_VERSION (LTS)" doc/ChangeLog.md
292+ log_info " Added new kernel version entry: $NEW_VERSION "
293+ fi
294+ }
295+
254296# Check for uncommitted changes
255297check_clean_working_tree () {
256298 log_info " Checking for uncommitted changes..."
0 commit comments