diff --git a/dev/make-distrib.sh b/dev/make-distrib.sh index 7e2ea1b03670c8637ab6c0743158d6836f9a9168..18733a1b3b7c8c73f0b528714c4042bee2bb1e75 100755 --- a/dev/make-distrib.sh +++ b/dev/make-distrib.sh @@ -21,8 +21,6 @@ # # ########################################################################## -set -euxo pipefail - ################################################################################ # Configuration @@ -69,6 +67,7 @@ git archive HEAD -o $FRAMAC_TAR --prefix "$FRAMAC/" TAR_ACC=$FRAMAC_TAR +PLUGINS=$(find src/plugins -mindepth 1 -maxdepth 1 -type d) EXTERNAL_PLUGINS=$(find src/plugins -type d -name ".git" | sed "s/\/.git//") for plugin in $EXTERNAL_PLUGINS ; do @@ -79,24 +78,12 @@ done tar --concatenate --file=$TAR_ACC -################################################################################ -# Prepare header options - -if [[ "$OPEN_SOURCE" == "yes" ]]; then - HEADER_KIND="open-source" - HEADER_OPT= -else - HEADER_KIND="close-source" - HEADER_OPT="-update" -fi - ################################################################################ # Prepare header spec HEADER_SPEC="header-spec.txt" -git ls-files -z | git check-attr --stdin -z header_spec > $HEADER_SPEC -HEADER_DIRS="-header-dirs headers/$HEADER_KIND" +git ls-files -z | git check-attr --stdin -z header_spec > $HEADER_SPEC for plugin in $EXTERNAL_PLUGINS ; do git -C $plugin ls-files -z |\ @@ -105,10 +92,47 @@ for plugin in $EXTERNAL_PLUGINS ; do tr '\n' '\0' >> $HEADER_SPEC done -PLUGINS=$(find src/plugins -mindepth 1 -maxdepth 1 -type d) +################################################################################ +# Build option for check +# Frama-C is checked in open-source mode +CHECK_HEADER_OPT="-header-dirs headers/open-source" + +# For plugins, either they can be open-source and we assume they have OS headers +# or they are close-source for plugin in $PLUGINS ; do - HEADER_DIRS="$HEADER_DIRS -header-dirs $plugin/headers/$HEADER_KIND" + if [ -d "$plugin/headers/open-source" ] ; then + CHECK_HEADER_OPT="$CHECK_HEADER_OPT -header-dirs $plugin/headers/open-source" + else + CHECK_HEADER_OPT="$CHECK_HEADER_OPT -header-dirs $plugin/headers/close-source" + fi +done + +################################################################################ +# Build option for update + +if [[ "$OPEN_SOURCE" == "yes" ]]; then + HEADER_KIND="open-source" +else + HEADER_KIND="close-source" +fi + +MAKE_HEADER_OPT="-header-dirs headers/$HEADER_KIND" + +# Plugins can: +# - have both open and close -> just use header kind +# - have only close -> just use header kind, if it is open, build will fail +# - have only open -> just use open +for plugin in $PLUGINS ; do + if [ "$OPEN_SOURCE" == "yes" ] ; then + MAKE_HEADER_OPT="$MAKE_HEADER_OPT -header-dirs $plugin/headers/open-source" + else + if [ ! -d "$plugin/headers/close-source" ] ; then + MAKE_HEADER_OPT="$MAKE_HEADER_OPT -header-dirs $plugin/headers/open-source" + else + MAKE_HEADER_OPT="$MAKE_HEADER_OPT -header-dirs $plugin/headers/close-source" + fi + fi done ################################################################################ @@ -118,13 +142,28 @@ TMP_DIR=$(mktemp -d) echo $TMP_DIR tar xf $FRAMAC_TAR -C $TMP_DIR -$HDRCK $HEADER_OPT $HEADER_DIRS -spec-format="3-zeros" -C "$TMP_DIR/$FRAMAC" $HEADER_SPEC -echo $VERSION_SAFE > $TMP_DIR/$FRAMAC/VERSION -echo $VERSION_CODENAME > $TMP_DIR/$FRAMAC/VERSION_CODENAME +# Check +$HDRCK $CHECK_HEADER_OPT -spec-format="3-zeros" -C "$TMP_DIR/$FRAMAC" $HEADER_SPEC +# Update +$HDRCK -update $MAKE_HEADER_OPT -spec-format="3-zeros" -C "$TMP_DIR/$FRAMAC" $HEADER_SPEC + +################################################################################ +# Sanity check + +if [ "$OPEN_SOURCE" == "yes" ] ; then + OUT=$(grep -Iir "Contact CEA LIST for licensing." $TMP_DIR | grep -v "headers/" | grep -v "dev/make-distrib.sh") + if [ "$?" == "0" ]; then + echo "Looks like there are some files containing undetected close source licences" + exit 1 + fi +fi ################################################################################ # Finalize archive +echo $VERSION_SAFE > $TMP_DIR/$FRAMAC/VERSION +echo $VERSION_CODENAME > $TMP_DIR/$FRAMAC/VERSION_CODENAME + tar czf $FRAMAC_TAR.gz -C $TMP_DIR $FRAMAC if [[ "$CI_LINK" == "yes" ]]; then