pax_global_header 0000666 0000000 0000000 00000000064 14772465674 0014540 g ustar 00root root 0000000 0000000 52 comment=ac94c79cbe16c5e2cfec1ad9129c15d75f0dc6fc dub-1.40.0/ 0000775 0000000 0000000 00000000000 14772465674 0012374 5 ustar 00root root 0000000 0000000 dub-1.40.0/.codecov.yml 0000664 0000000 0000000 00000001700 14772465674 0014615 0 ustar 00root root 0000000 0000000 # Documentation: https://docs.codecov.io/docs/codecov-yaml # Validate with: `curl --data-binary @.codecov.yml https://codecov.io/validate` codecov: notify: # We don't want to wait for the CodeCov report # See https://github.com/codecov/support/issues/312 require_ci_to_pass: false after_n_builds: 1 # send notifications after the first upload wait_for_ci: false bot: dlang-bot # At Travis, the PR is merged into `master` before the testsuite is run. # This allows CodeCov to adjust the resulting coverage diff, s.t. it matches # with the GitHub diff. # https://github.com/codecov/support/issues/363 # https://docs.codecov.io/v4.3.6/docs/comparing-commits allow_coverage_offsets: true coverage: precision: 3 round: down range: "80...100" # Learn more at https://docs.codecov.io/docs/commit-status status: project: off changes: off patch: default: informational: true comment: false dub-1.40.0/.dockerignore 0000664 0000000 0000000 00000000224 14772465674 0015046 0 ustar 00root root 0000000 0000000 # Build files are ignored to avoid collision and large context # in the event someone hasn't run `dub clean` for a while *.a *.o .dub/ test/*/.dub/ dub-1.40.0/.editorconfig 0000664 0000000 0000000 00000000244 14772465674 0015051 0 ustar 00root root 0000000 0000000 root = true [*.{c,h,d,di,dd,json}] end_of_line = lf insert_final_newline = true indent_style = tab indent_size = 4 trim_trailing_whitespace = true charset = utf-8 dub-1.40.0/.github/ 0000775 0000000 0000000 00000000000 14772465674 0013734 5 ustar 00root root 0000000 0000000 dub-1.40.0/.github/issue_template.md 0000664 0000000 0000000 00000001111 14772465674 0017273 0 ustar 00root root 0000000 0000000 ### System information - **dub version**: (e.g. dub 1.3.0) - **OS Platform and distribution**: (e.g. Windows 10, Linux Ubuntu 16.04) - **compiler version** (e.g. dmd-2.074.1) ### Bug Description ### How to reproduce? ### Expected Behavior ### Logs dub-1.40.0/.github/workflows/ 0000775 0000000 0000000 00000000000 14772465674 0015771 5 ustar 00root root 0000000 0000000 dub-1.40.0/.github/workflows/alpine.yml 0000664 0000000 0000000 00000002170 14772465674 0017764 0 ustar 00root root 0000000 0000000 # Build dub on Alpine Linux, testing compatibility with Musl name: Alpine on: pull_request: branches: - master - stable paths-ignore: - 'changelog/**' push: branches: - master - stable # Use this branch name in your fork to test changes - github-actions jobs: main: name: Run strategy: # Default, disable if you want to debug fail-fast: false matrix: include: # Disabled as we rely on DIP1000 `foreach (scope)` which GDC < 12 doesn't support # - { dc: gdc, dcpkg: gcc-gdc, dcbin: gdc } - { dc: ldc, dcpkg: ldc, dcbin: ldc2 } - { dc: dmd, dcpkg: dmd, dcbin: dmd } # OS doesn't matter, we just need Docker runs-on: ubuntu-latest steps: # Checkout the repository - name: Checkout uses: actions/checkout@v4 - name: Build run: | docker build -t alpine-dub-image \ --build-arg="DCPKG=${{ matrix.dcpkg}}" \ --build-arg="DCBIN=${{ matrix.dcbin}}" \ -f docker/Dockerfile.alpine $(pwd) - name: Test run: docker run alpine-dub-image dub-1.40.0/.github/workflows/main.yml 0000664 0000000 0000000 00000012041 14772465674 0017436 0 ustar 00root root 0000000 0000000 # Cross platform tests for DUB name: Testsuite # Only triggers on pushes to master & stable, as well as PR to master and stable # Sometimes reverts appear in the upstream repository (e.g. when the revert button # is clicked by a contributor with commit access), this should be tested as PR). # # Also note that Github actions does not retrigger on target branch changes, # hence the check on push. on: pull_request: branches: - master - stable paths-ignore: - 'changelog/**' push: branches: - master - stable # Use this branch name in your fork to test changes - github-actions jobs: single_checks: name: "Single sanity check" runs-on: ubuntu-latest steps: - name: Install latest DMD uses: dlang-community/setup-dlang@v1 - name: Checkout uses: actions/checkout@v4 - name: Run tests run: | # check for trailing whitespace TRAILING_WS_COUNT=$(find . -type f -name '*.d' -exec grep -Hn "[[:blank:]]$" {} \; | wc -l) if [ $TRAILING_WS_COUNT -ne 0 ]; then echo "========================================" find . -type f -name '*.d' -exec grep -Hn "[[:blank:]]$" {} \; echo "========================================" echo "The files above have trailing whitespace" exit 1 fi # check that the man page generation still works dub --single -v scripts/man/gen_man.d main: name: Run strategy: # Default, disable if you want to debug fail-fast: false matrix: # Latest stable version, update at will os: [ macOS-13, ubuntu-22.04, windows-2019 ] dc: # Always test latest as that is what we use to compile on release - dmd-latest - ldc-latest # Provide some testing for upstream - dmd-master - ldc-master # Test some intermediate versions - ldc-1.29.0 - dmd-2.099.1 - dmd-2.102.2 - dmd-2.105.3 - dmd-2.108.1 include: - { do_test: false } - { dc: dmd-latest, do_test: true } - { dc: ldc-latest, do_test: true } - { dc: dmd-master, do_test: true } - { dc: ldc-master, do_test: true } # Test on ARM64 - { os: macOS-14, dc: ldc-latest, do_test: true } exclude: # Error with those versions: # ld: multiple errors: symbol count from symbol table and dynamic symbol table differ in [.../dub.o]; address=0x0 points to section(2) with no content in '[...]/osx/lib/libphobos2.a[3177](config_a68_4c3.o)' - { os: macOS-13, dc: dmd-2.099.1 } - { os: macOS-13, dc: dmd-2.102.2 } - { os: macOS-13, dc: dmd-2.105.3 } runs-on: ${{ matrix.os }} steps: # Install required dependencies - name: '[OSX] Install dependencies' if: runner.os == 'macOS' run: | # We need to install GNU utils as the test-suite scripts expect it. # Without them we may get slightly different behavior in tests and hard-to-track failures brew install coreutils diffutils echo "PKG_CONFIG_PATH=/usr/local/opt/openssl@1.1/lib/pkgconfig/" >> $GITHUB_ENV - name: '[Linux] Install dependencies' if: runner.os == 'Linux' run: | sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev netcat # Compiler to test with - name: Prepare compiler uses: dlang-community/setup-dlang@v1 with: compiler: ${{ matrix.dc }} # Checkout the repository - name: Checkout uses: actions/checkout@v4 - name: '[POSIX] Test' if: runner.os != 'Windows' env: COVERAGE: true run: | dub build --compiler=${{ env.DC }} if [[ ${{ matrix.do_test }} == 'true' ]]; then dub run --compiler=${{ env.DC }} --single test/issue2051_running_unittests_from_dub_single_file_packages_fails.d ./scripts/ci/ci.sh fi - name: '[Windows] Test' if: runner.os == 'Windows' env: DUB: ${{ github.workspace }}\bin\dub.exe run: | dub build --compiler=${{ env.DC }} if [[ ${{ matrix.do_test }} == 'true' ]]; then dub test --compiler=${{ env.DC }} dub run --compiler=${{ env.DC }} --single test/issue2051_running_unittests_from_dub_single_file_packages_fails.d dub --single test/run-unittest.d # FIXME: DMD fails a few tests on Windows; remove them for now if [[ '${{ matrix.dc }}' = dmd* ]]; then # DLL support is lacking rm -rf test/{1-dynLib-simple,2-dynLib-dep,2-dynLib-with-staticLib-dep} # Unicode in paths too rm -rf test/issue130-unicode-СНА* # ImportC probably requires set-up MSVC environment variables rm -rf test/use-c-sources fi test/run-unittest.sh fi shell: bash - name: Codecov if: matrix.do_test && runner.os != 'Windows' uses: codecov/codecov-action@v4 dub-1.40.0/.github/workflows/pr_info_intro.yml 0000664 0000000 0000000 00000001231 14772465674 0021360 0 ustar 00root root 0000000 0000000 name: PR Info (pre-comment) on: # NOTE: high probability for security vulnerabilities if doing ANYTHING in # this file other than commenting something! pull_request_target: branches: - master - stable permissions: pull-requests: write jobs: intro_comment: name: Make intro comment runs-on: ubuntu-latest steps: - name: 'Prepare sticky comment' uses: marocchino/sticky-pull-request-comment@v2.9.0 with: message: | Thanks for your Pull Request and making D better! This comment will automatically be updated to summarize some statistics in a few minutes. only_create: true dub-1.40.0/.github/workflows/pr_info_post.yml 0000664 0000000 0000000 00000003012 14772465674 0021211 0 ustar 00root root 0000000 0000000 name: PR Info (comment) on: workflow_run: workflows: ["PR Info"] types: - completed permissions: pull-requests: write jobs: comment: name: PR Info runs-on: ubuntu-latest if: > github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' steps: # from https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ - name: 'Download artifact' uses: actions/github-script@v7 with: script: | var artifacts = await github.rest.actions.listWorkflowRunArtifacts({ owner: context.repo.owner, repo: context.repo.repo, run_id: ${{github.event.workflow_run.id }}, }); var matchArtifact = artifacts.data.artifacts.filter((artifact) => { return artifact.name == "pr" })[0]; var download = await github.rest.actions.downloadArtifact({ owner: context.repo.owner, repo: context.repo.repo, artifact_id: matchArtifact.id, archive_format: 'zip', }); var fs = require('fs'); fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data)); - run: unzip pr.zip - name: Set variable run: | PR_ID=$(cat ./NR) echo "PR_ID=$PR_ID" >> $GITHUB_ENV - name: Update GitHub comment uses: marocchino/sticky-pull-request-comment@v2.9.0 with: path: ./comment.txt number: ${{ env.PR_ID }} dub-1.40.0/.github/workflows/pr_info_untrusted.yml 0000664 0000000 0000000 00000003442 14772465674 0022270 0 ustar 00root root 0000000 0000000 name: PR Info # This workflow builds the whole project once and: # - comments build deprecations/warnings (highlighting new ones since last tested PR) on: pull_request: branches: - master - stable jobs: pr_info: name: PR Info runs-on: ubuntu-latest steps: # we first create a comment thanking the user in pr_info_intro.yml # (separate step due to needing GITHUB_TOKEN access) - name: '[Linux] Install dependencies' if: runner.os == 'Linux' run: | sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev # Compiler to test with - name: Prepare compiler uses: dlang-community/setup-dlang@v1 with: compiler: ldc-latest - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Checkout old stuff, with new comment script run: | git checkout ${{ github.base_ref }} git checkout ${{ github.sha }} -- ./scripts/ci/summary_comment.sh ./scripts/ci/summary_comment_diff.sh # first dump old info - name: Check pre-PR status run: ./scripts/ci/summary_comment.sh | tee ../OLD_OUTPUT.txt - name: Checkout PR target run: | git checkout ${{ github.sha }} git clean -fd git reset --hard - name: Evaluate PR run: ./scripts/ci/summary_comment.sh | tee ../NEW_OUTPUT.txt - name: Generate comment run: ./scripts/ci/summary_comment_diff.sh ../OLD_OUTPUT.txt ../NEW_OUTPUT.txt | tee comment.txt - name: Prepare comment for upload run: | mkdir -p ./pr mv comment.txt pr echo ${{ github.event.number }} > ./pr/NR - name: upload comment to high-trust action making the comment uses: actions/upload-artifact@v4 with: name: pr path: pr/ dub-1.40.0/.github/workflows/release.yml 0000664 0000000 0000000 00000007454 14772465674 0020146 0 ustar 00root root 0000000 0000000 # When a release is published, build the assets and upload them name: Build release assets on: release: types: - published jobs: # First we define a job with a matrix that will build all relevant assets, # and collect them in a temporary storage using `actions/upload-artifacts` build: name: 'Build artifacts for ${{ github.event.release.tag_name }}' strategy: fail-fast: false matrix: os: [ macOS-13, ubuntu-22.04, windows-2019 ] arch: [ x86_64 ] include: - { os: windows-2019, arch: i686 } - { os: macOS-latest, arch: arm64 } runs-on: ${{ matrix.os }} steps: ## Dependencies - name: '[OSX] Install dependencies' if: runner.os == 'macOS' run: | brew install pkg-config coreutils echo "PKG_CONFIG_PATH=/usr/local/opt/openssl@1.1/lib/pkgconfig/" >> $GITHUB_ENV - name: '[Linux] Install dependencies' if: runner.os == 'Linux' run: | sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev ## Boileterplate (compiler/repo) - name: Install compiler uses: dlang-community/setup-dlang@v1 with: compiler: ldc-latest - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ github.event.release.tag_name }} ## Actually build the releases - name: '[POSIX] Build release' if: runner.os == 'Linux' || runner.os == 'macOS' env: GITVER: ${{ github.event.release.tag_name }} DMD: "ldmd2" ARCH_TRIPLE: ${{ matrix.arch }}-${{ runner.os == 'linux' && 'pc-linux' || 'apple-darwin' }} run: | ldc2 -run ./build.d -release -mtriple=${ARCH_TRIPLE} pushd bin if [ ${{ runner.os }} == 'Linux' ]; then tar -c -f 'dub-${{ github.event.release.tag_name }}-linux-${{ matrix.arch }}.tar.gz' -v -z --owner=0 --group=0 dub else gtar -c -f 'dub-${{ github.event.release.tag_name }}-osx-${{ matrix.arch }}.tar.gz' -v -z --owner=0 --group=0 dub fi popd - name: '[Windows] Build release' if: runner.os == 'Windows' env: GITVER: ${{ github.event.release.tag_name }} DMD: "ldmd2" run: | ldc2 -run ./build.d -release -mtriple=${{ matrix.arch }}-pc-windows-msvc pushd bin 7z a dub-${{ github.event.release.tag_name }}-windows-${{ matrix.arch }}.zip dub.exe popd - name: 'Upload temporary binaries' uses: actions/upload-artifact@v4 with: name: dub-release-${{ matrix.os }}-${{ matrix.arch }} path: | bin/dub-${{ github.event.release.tag_name }}-* if-no-files-found: error retention-days: 1 # Uploads collected builds to the release release: name: "Update release artifacts" runs-on: ubuntu-latest needs: - build steps: - name: Download artifacts to release uses: actions/download-artifact@v4 with: path: ~/artifacts/ - name: List all artifacts included in the release id: list-artifacts shell: bash run: | set -euox pipefail ls -aulR ~/artifacts echo "artifacts_directory=$HOME/artifacts" >> $GITHUB_OUTPUT - name: Update release artifacts uses: ncipollo/release-action@v1 with: token: "${{ secrets.GITHUB_TOKEN }}" tag: ${{ github.event.release.tag_name }} artifacts: ${{ steps.list-artifacts.outputs.artifacts_directory }}/*/* # Keep the existing state of the release allowUpdates: true artifactErrorsFailBuild: true omitNameDuringUpdate: true omitBodyDuringUpdate: true omitPrereleaseDuringUpdate: true dub-1.40.0/.gitignore 0000664 0000000 0000000 00000002110 14772465674 0014356 0 ustar 00root root 0000000 0000000 *.o *.obj *.pdb *~ # Unknown hidden files .* !.gitignore !/.github !/.editorconfig !/.codecov.yml # Unknown script files /*.sh /*.bat /*.cmd !/build.cmd !/build.sh # dub generation files dub.selections.json docs.json __dummy.html # Ignore build files. /bin/dub /bin/__test__library-nonet__ /bin/__test__library__ /bin/dub-test-library /bin/libdub.a /bin/dub-* /bin/dub.* # Ignore files or directories created by the test suite. *.exe *.lib *.log /test/*/* /test/*.* !/test/*.d !/test/*.d.min_frontend !/test/*.sh !/test/*.sh.min_frontend !/test/*/.no_* !/test/*/.min_frontend !/test/*/.fail_build !/test/*/dub.json !/test/*/dub.sdl !/test/*/dub.settings.json !/test/*/source/ !/test/*/src/ # Ignore coverage files cov/ # Ignore auto-generated docs /docs scripts/man/dub*.1.gz # Ignore generated files for examples /examples/generated-sources/generated-sources /examples/generated-sources/source/test.d dub_test_root.sh.*/ test-cov-ctfe-test.lst test-unittest-cov-ctfe-source-mod.lst test-unittest-cov-ctfe-.dub-code-test-test-library-unittest-cov-ctfe-*-dub_test_root.lst example.yaml dub-1.40.0/ARCHITECTURE.md 0000664 0000000 0000000 00000002436 14772465674 0014605 0 ustar 00root root 0000000 0000000 ## Architecture  ## Terminology
dependency "vibe-d" version="~>0.8.1"
.