neilcsmith-net commented on code in PR #6496:
URL: https://github.com/apache/netbeans/pull/6496#discussion_r1339712426


##########
.github/workflows/native-binary-build-lib.profiler.yml:
##########
@@ -73,75 +72,112 @@ on:
 
 
 jobs:
-  build-linux:
+  
+  source:
+
+    name: Build source zip
 
     runs-on: ubuntu-latest
 
     steps:
-    # Step 1
-    #   Checkout source code from repository
-    #
-    - name: Checkout source code
-      uses: actions/checkout@v2
-      with:
-        persist-credentials: false
-    #
-    # Step 2
-    #   Ant build NetBeans lib.profiler module. The sole reason for doing this 
- in the
-    #   context of the native binaries for the Profiler - is to have JNI 
header files
-    #   generated which are needed in step 3.
-    #
-    - name: Generate JNI header files
-      run: |
-         export JDK_HOME=${JAVA_HOME_8_X64}
-         echo "Building NbBuild bootstrap (needed for next step)"
-         ant bootstrap
-         echo "Building lib.profiler module"
-         cd profiler/lib.profiler && ant compile
-    #
-    # Step 3
-    #   Build the native binary from C source code
-    #
-    - name: Build native lib
-      run: |
-         export JDK_HOME=${JAVA_HOME_8_X64}
-         #
-         #
-         echo "Building 64-bit binary"
-         rm -f ../../release/lib/deployed/jdk16/linux-amd64/*.*
-         bash -e -x ./buildnative-linux64.sh
-         ls -l -R ../../release/lib/deployed/jdk16/linux-amd64
-         #
-         #
-         echo "Building 32-bit binary"
-         # Since we are on 64-bit system it means we do not by default have 
support
-         # for creating 32-bit binaries, however this support comes if we 
install
-         # the 'gcc-multilib' package for GNU C/C++.
-         sudo apt-get update
-         sudo apt-get install gcc-multilib
-         rm -f ../../release/lib/deployed/jdk16/linux/*.*
-         bash -e -x ./buildnative-linux.sh
-         ls -l -R ../../release/lib/deployed/jdk16/linux
-         #
-         #
-         echo "done"
-      working-directory: profiler/lib.profiler/native/scripts
-    #
-    # Step 4
-    #   Upload interim build artifacts to GitHub
-    #
-    - name: Upload artifact Linux 64 bit
-      uses: actions/upload-artifact@v2
-      with:
-        name: linux-amd64
-        path: profiler/lib.profiler/release/lib/deployed/jdk16/linux-amd64/
-        if-no-files-found: error
-    - name: Upload artifact Linux 32 bit
-      uses: actions/upload-artifact@v2
-      with:
-        name: linux
-        path: profiler/lib.profiler/release/lib/deployed/jdk16/linux/
-        if-no-files-found: error
+
+      - name: Checkout
+        uses: actions/checkout@v3
+        with:
+          persist-credentials: false
+          submodules: false
+
+      - name: Caching dependencies
+        uses: actions/cache@v3
+        with:
+          path: ~/.hgexternalcache
+          key: ${{ runner.os }}-${{ hashFiles('*/external/binaries-list', 
'*/*/external/binaries-list') }}
+          restore-keys: ${{ runner.os }}-
+
+      #   Ant build NetBeans lib.profiler module. The sole reason for doing 
this - in the
+      #   context of the native binaries for the Profiler - is to have JNI 
header files
+      - name: Generate JNI header files
+        run: |
+          export JDK_HOME=${JAVA_HOME_8_X64} 
+          echo "Building NbBuild bootstrap (needed for next step)"
+          ant bootstrap
+          echo "Building lib.profiler module"
+          cd profiler/lib.profiler && ant compile
+
+      - name: Generate source bundle
+        run: |
+          SOURCES="profiler/lib.profiler/build/sources"
+          mkdir -p ${SOURCES}/profiler/lib.profiler
+          cp -r profiler/lib.profiler/native/ ${SOURCES}/profiler/lib.profiler/
+          find profiler/lib.profiler/release/lib/deployed -type d -exec mkdir 
-p "${SOURCES}/{}" \; -exec touch "${SOURCES}/{}/PLACEHOLDER" \;
+          cp LICENSE ${SOURCES}/LICENSE
+          cp NOTICE ${SOURCES}/NOTICE
+          ls -l -R ${SOURCES}
+      - name: Upload native sources 
+        uses: actions/upload-artifact@v3
+        with:
+          name: profiler-external-sources-ASF
+          path: profiler/lib.profiler/build/sources/
+          if-no-files-found: error

Review Comment:
   Yes, it could solve the issue.  But in the main workflow the only role of 
that artefact is to be consumed by other jobs.  The primary role here (and what 
was missing) is to create a source archive we can vote on.  Using it in the 
jobs to create the binaries is also proof that that source archive is complete.
   
   What we should do as a follow up is fix the various build scripts to ensure 
the target directories are created.  For NB20 it would be good to update the 
Apple binaries.  For NB21 we should look at shipping all the binaries we can 
build.
   
   I'm fairly sure we can use `tar` with other Windows shells.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to