tree: 9dd840cb41e7766e08dd91ab3ee65f6fadef28e7 [path history] [tgz]
  1. base/
  2. bash_tests/
  3. golden/
  4. templates/
  5. test/
  6. test_project/
  7. testdata/
  8. .gitattributes
  9. BUILD.gn
  10. generate.py
  11. METADATA.textproto
  12. OWNERS
  13. README.md
  14. test_generate.py
  15. update_golden.py
scripts/sdk/gn/README.md

GN SDK

The GN SDK frontend produces a GN workspace. Note that this directory has been deprecated. The GN SDK will be removed soon. Changes made to this directory will no longer take effect. Further changes should be made to https://chromium.googlesource.com/chromium/src/third_party/fuchsia-gn-sdk/ instead.

Directory structure

Generation files & folders

  • generate.py: the script that generates the SDK
  • BUILD.gn: GN build rules to build & test the GN SDK and generation process
  • templates: Mako templates used to produce various SDK files
  • base: SDK contents that are copied verbatim

Testing files & folders

  • test_generate.py: script to test the GN SDK generation process
  • update_golden.py: script to update the contents of the golden directory
  • host_test.go: Go script to run test defined in GN build rules
  • testdata: files used as input during tests
  • golden: files used to verify generator output during tests
  • test_project: GN project used to test building a projects with the GN SDK
  • bash_tests: contains test for bash scripts in base/bin

Generating

  1. Generate a IDK/core SDK:

    fx set minimal.x64
    fx build sdk:final_fuchsia_idk
    
  2. Run the generate script:

    $ fuchsia-vendored-python scripts/sdk/gn/generate.py \
        --archive out/default/sdk/archive/fuchsia_idk.tar.gz \
        --output gn_sdk_dir
    

Testing

Note: many of these tests require ${FUCHSIA_DIR}/.jiri_root/bin to be on $PATH. This might need to be added.

Execute GN SDK scripts/tools

The internal GN SDK helper scripts/tools can be executed after the GN SDK has been generated.

$ gn_sdk_dir/tools/x64/fserve

SDK generator tests

To test the generator, run the test_generate.py script.

$ fuchsia-vendored-python scripts/sdk/gn/test_generate.py

This runs the generator against the testdata directory and compares the output to the files in the golden directory.

After making changes to the generator, update the contents of testdata as needed to exercise your new code, then run the update_golden.py script to fix the golden files.

$ fuchsia-vendored-python scripts/sdk/gn/update_golden.py

Commit your changes to the generator, testdata contents, and golden contents together.

Bash scripts test

Make sure the tests are part of your build by adding --with //scripts/sdk/gn:tests to your fx set command.

To test the bash scripts, run fx test host_x64/gn_sdk_script_tests

Test project test

To test the SDK on a test project, the generate.py must be run with the --tests flag. generate.py requires a IDK (integrator development kit) build

  1. Download the latest IDK (integrator development kit) to a temporary directory (assuming the current directory is $FUCHSIA_DIR):

    $ mkdir -p out/temp
    $ BUILD_ID="$(gsutil cat gs://fuchsia/development/LATEST_LINUX)"
    $ gsutil cp gs://fuchsia/development/$BUILD_ID/sdk/linux-amd64/core.tar.gz out/temp/idk.tar.gz
    
  2. Generate the test workspace into a temporary directory:

    $ fuchsia-vendored-python scripts/sdk/gn/generate.py \
     --archive out/temp/idk.tar.gz \
     --output out/temp/gn_sdk_dir/ \
     --tests out/temp/test_workspace
    
  3. Run the run.py file in the test workspace:

    $ fuchsia-vendored-python out/temp/test_workspace/run.py