Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Streamlining Release and Build Processes for WRF and WPS #241

Closed
HathewayWill opened this issue Dec 28, 2023 · 0 comments
Closed

Streamlining Release and Build Processes for WRF and WPS #241

HathewayWill opened this issue Dec 28, 2023 · 0 comments

Comments

@HathewayWill
Copy link

Objective: To propose enhancements in the versioning, directory naming, and build completion notification for the WRF (Weather Research and Forecasting) and WPS (WRF Preprocessing System) to improve user experience and consistency.

Proposal Overview: This document outlines three key suggestions aimed at standardizing and streamlining the release process and build procedures for WRF and WPS.

1. Standardization of Version Numbering Format

Current Issue: Inconsistency in version numbering formats between WRF and WPS.

Suggestion: Align WPS version release numbers with the format used by WRF. Specifically, add a trailing zero to major releases. For instance, "WPSV4.5" should be formatted as "WPSV4.5.0".

Rationale: Consistency in version numbering eases tracking of releases and aligns with standard software versioning practices.

Reference: GitHub Issue - WRF #1850

2. Standardization of Folder Names Post-Extraction

Current Issue: Variability in folder names for WRF and WPS (e.g., "WPS", "WPS-4.0.0", "WPSV4.0") causes confusion.

Suggestion: Implement a standardized naming convention for folders created from source file extraction.

Rationale: A consistent naming convention reduces user confusion and simplifies script writing for automated setups.

Reference: GitHub Issue - WPS #205

3. Addition of a 'Build Complete' Statement

Current Issue: Lack of a clear notification or log statement indicating the completion of the WPS build process.

Suggestion: Introduce a "build complete" statement and log file at the end of the WPS build process, similar to WRF.

Rationale: A clear notification enhances user experience and provides a definitive end-point for the build process, which is beneficial for both manual and automated builds.

Reference:

@echo " "
	@echo "=========================================================================="
	@echo "build started:   $(START_OF_COMPILE)"
	@echo "build completed:" `date`
	@if test -e main/wrf.exe -a -e main/real.exe -a -e main/ndown.exe -a -e main/tc.exe  ; then \
		echo " " ; \
		echo "--->                  Executables successfully built                  <---" ; \
		echo " " ; \
		ls -l main/*.exe ; \
		echo " " ; \
		echo "==========================================================================" ; \
		echo " " ; \
	else \
		echo " " ; \
		echo "---> Problems building executables, look for errors in the build log  <---" ; \
		echo " " ; \
		echo "==========================================================================" ; \
		echo " " ; \
	fi


em_hill2d_x : wrf
	@/bin/rm -f ideal.exe > /dev/null 2>&1
	@/bin/rm -f wrf.exe   > /dev/null 2>&1
	@ echo '--------------------------------------'
	( cd main ; $(MAKE) RLFLAGS="$(RLFLAGS)" MODULE_DIRS="$(ALL_MODULES)" SOLVER=em IDEAL_CASE=ideal em_ideal )
	( cd test/em_hill2d_x ; /bin/rm -f wrf.exe ; ln -s ../../main/wrf.exe . )
	( cd test/em_hill2d_x ; /bin/rm -f ideal.exe ; ln -s ../../main/ideal.exe . )
	( cd test/em_hill2d_x ; /bin/rm -f README.namelist ; ln -s ../../run/README.namelist . )
	( cd run ; /bin/rm -f ideal.exe ; ln -s ../main/ideal.exe . )
	( cd run ; if test -f namelist.input ; then \
		/bin/cp -f namelist.input namelist.input.backup.`date +%Y-%m-%d_%H_%M_%S` ; fi ; \
		/bin/rm -f namelist.input ; cp ../test/em_hill2d_x/namelist.input . )
	( cd run ; /bin/rm -f input_sounding ; ln -s ../test/em_hill2d_x/input_sounding . )
	@echo " "
	@echo "=========================================================================="
	@echo "build started:   $(START_OF_COMPILE)"
	@echo "build completed:" `date`
	@if test -e main/wrf.exe -a -e main/ideal.exe ; then \
		echo " " ; \
		echo "--->                  Executables successfully built                  <---" ; \
		echo " " ; \
		ls -l main/*.exe ; \
		echo " " ; \
		echo "==========================================================================" ; \
		echo " " ; \
	else \
		echo " " ; \
		echo "---> Problems building executables, look for errors in the build log  <---" ; \
		echo " " ; \
		echo "==========================================================================" ; \
		echo " " ; \
	fi

em_grav2d_x : wrf
	@/bin/rm -f ideal.exe > /dev/null 2>&1
	@/bin/rm -f wrf.exe   > /dev/null 2>&1
	@ echo '--------------------------------------'
	( cd main ; $(MAKE) RLFLAGS="$(RLFLAGS)" MODULE_DIRS="$(ALL_MODULES)" SOLVER=em IDEAL_CASE=ideal em_ideal )
	( cd test/em_grav2d_x ; /bin/rm -f wrf.exe ; ln -s ../../main/wrf.exe . )
	( cd test/em_grav2d_x ; /bin/rm -f ideal.exe ; ln -s ../../main/ideal.exe . )
	( cd test/em_grav2d_x ; /bin/rm -f README.namelist ; ln -s ../../run/README.namelist . )
	( cd run ; /bin/rm -f ideal.exe ; ln -s ../main/ideal.exe . )
	( cd run ; if test -f namelist.input ; then \
		/bin/cp -f namelist.input namelist.input.backup.`date +%Y-%m-%d_%H_%M_%S` ; fi ; \
		/bin/rm -f namelist.input ; cp ../test/em_grav2d_x/namelist.input . )
	( cd run ; /bin/rm -f input_sounding ; ln -s ../test/em_grav2d_x/input_sounding . )
	@echo " "
	@echo "=========================================================================="
	@echo "build started:   $(START_OF_COMPILE)"
	@echo "build completed:" `date`
	@if test -e main/wrf.exe -a -e main/ideal.exe ; then \
		echo " " ; \
		echo "--->                  Executables successfully built                  <---" ; \
		echo " " ; \
		ls -l main/*.exe ; \
		echo " " ; \
		echo "==========================================================================" ; \
		echo " " ; \
	else \
		echo " " ; \
		echo "---> Problems building executables, look for errors in the build log  <---" ; \
		echo " " ; \
		echo "==========================================================================" ; \
		echo " " ; \
	fi

em_heldsuarez : wrf
	@/bin/rm -f ideal.exe > /dev/null 2>&1
	@/bin/rm -f wrf.exe   > /dev/null 2>&1
	@ echo '--------------------------------------'
	( cd main ; $(MAKE) RLFLAGS="$(RLFLAGS)" MODULE_DIRS="$(ALL_MODULES)" SOLVER=em IDEAL_CASE=heldsuarez em_ideal )
	( cd test/em_heldsuarez ; /bin/rm -f wrf.exe ; ln -s ../../main/wrf.exe . )
	( cd test/em_heldsuarez ; /bin/rm -f ideal.exe ; ln -s ../../main/ideal.exe . )
	( cd test/em_heldsuarez ; /bin/rm -f README.namelist ; ln -s ../../run/README.namelist . )
	( cd run ; /bin/rm -f ideal.exe ; ln -s ../main/ideal.exe . )
	( cd run ; if test -f namelist.input ; then \
		/bin/cp -f namelist.input namelist.input.backup.`date +%Y-%m-%d_%H_%M_%S` ; fi ; \
		/bin/rm -f namelist.input ; cp ../test/em_heldsuarez/namelist.input . )
	@echo " "
	@echo "=========================================================================="
	@echo "build started:   $(START_OF_COMPILE)"
	@echo "build completed:" `date`
	@if test -e main/wrf.exe -a -e main/ideal.exe ; then \
		echo " " ; \
		echo "--->                  Executables successfully built                  <---" ; \
		echo " " ; \
		ls -l main/*.exe ; \
		echo " " ; \
		echo "==========================================================================" ; \
		echo " " ; \
	else \
		echo " " ; \
		echo "---> Problems building executables, look for errors in the build log  <---" ; \
		echo " " ; \
		echo "==========================================================================" ; \
		echo " " ; \
	fi

Conclusion:
The adoption of these suggestions will contribute to a more streamlined, user-friendly, and consistent experience for developers and users of WRF and WPS. This proposal seeks to address current issues that have been raised within the community, aligning both systems more closely in terms of operational standards.

@mgduda @weiwangncar @kkeene44

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant