Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


 user_steps.winget   Interaktion und
Portierbarkeitunbekannt

 
# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2

# configuration to setup the dependencies in ~/lo and add make, jom and clang-format to ~/bin
# and install a wsl distro with the required packages
# this configuration is meant to be applied as the build user, and after the admin_java_and_deps one
# has been applied. It also creates a ~/lo/autogen.input with some sensible defaults that can be
# used as a template for own modifications

properties:
  assertions:
    - resource: xPSDesiredStateConfiguration/xScript
      id: prerequisitecheck
      directives:
        description: check that everything had been downloaded by the admin-step
      settings:
        GetScript: return $false
        SetSCript: return $false
        # the empty string element is so that each file can be specified with trailing comma
        TestScript: |
          $files = @(
              "apache-ant-1.10.15-bin.zip",
              "clang-format-5.0.0-win.exe",
              "jom_1_1_4.zip",
              "junit-4.10.jar",
              "make-4.2.1-msvc.exe",
              "meson-1.7.2.zip",
              "pkgconf-2.4.3.exe",
              "strawberry-perl-5.40.0.1-64bit-portable.zip",
          "")
          !(($files | foreach {Test-Path "$env:PUBLIC/Downloads/$_"}) -contains $false)
    - resource: xPSDesiredStateConfiguration/xScript
      id: wsl-check
      directives:
        description: check that wsl utility is available/working - i.e. whether wsl is installed
      settings:
        TestScript: wsl.exe --status ; return ![bool]$LASTEXITCODE
        GetScript: return $false
        SetScript: return $false
  resources:
    - resource: xPSDesiredStateConfiguration/xScript
      id: bindir
      directives:
        description: create the ~/bin directory
      settings:
        TestScript: Test-Path -Path "$env:UserProfile/bin" -PathType "Container"
        GetScript:  Test-Path -Path "$env:UserProfile/bin" -PathType "Container"
        SetScript: New-Item -ItemType "directory" -Path "$env:UserProfile" -Name "bin"
    - resource: xPSDesiredStateConfiguration/xScript
      id: lodir
      directives:
        description: create the ~/lo directory
      settings:
        TestScript: Test-Path -Path "$env:UserProfile/lo" -PathType "Container"
        GetScript:  Test-Path -Path "$env:UserProfile/lo" -PathType "Container"
        SetScript: New-Item -ItemType "directory" -Path "$env:UserProfile" -Name "lo"
    - resource: xPSDesiredStateConfiguration/xScript
      id: make
      dependsOn:
        - bindir
      directives:
        description: copy make.exe to the ~/bin directory
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/bin/make.exe"
        GetScript:  Test-Path -Path "$env:USERPROFILE/bin/make.exe"
        SetScript: Copy-Item -Path "$env:PUBLIC/Downloads/make-4.2.1-msvc.exe" -Destination "$env:USERPROFILE/bin/make.exe"
    - resource: xPSDesiredStateConfiguration/xScript
      id: clang-format
      dependsOn:
        - bindir
      directives:
        description: copy clang-format.exe to the ~/bin directory
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/bin/clang-format.exe"
        GetScript:  Test-Path -Path "$env:USERPROFILE/bin/clang-format.exe"
        SetScript: Copy-Item -LiteralPath "$env:PUBLIC/Downloads/clang-format-5.0.0-win.exe" -Destination "$env:USERPROFILE/bin/clang-format.exe"
    - resource: xPSDesiredStateConfiguration/xScript
      id: pkgconf
      dependsOn:
        - bindir
      directives:
        description: copy pkgconf-2.4.3.exe to the ~/bin directory
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/bin/pkgconf-2.4.3.exe"
        GetScript:  Test-Path -Path "$env:USERPROFILE/bin/pkgconf-2.4.3.exe"
        SetScript: Copy-Item -LiteralPath "$env:PUBLIC/Downloads/pkgconf-2.4.3.exe" -Destination "$env:USERPROFILE/bin/pkgconf-2.4.3.exe"
    - resource: xPSDesiredStateConfiguration/xScript
      id: junit
      dependsOn:
        - lodir
      directives:
        description: copy junit to the ~/lo directory
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/lo/junit-4.10.jar"
        GetScript:  Test-Path -Path "$env:USERPROFILE/lo/junit-4.10.jar"
        SetScript: Copy-Item -LiteralPath "$env:PUBLIC/Downloads/junit-4.10.jar" -Destination "$env:USERPROFILE/lo/junit-4.10.jar"
    # the DSC Archive module doesn't operate with $env:FOO / would need hardcoded paths
    - resource: xPSDesiredStateConfiguration/xScript
      id: ant-extract
      dependsOn:
        - lodir
      directives:
        description: extract ant to the ~/lo directory
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/lo/apache-ant-1.10.15/bin/ant"
        GetScript:  Test-Path -Path "$env:USERPROFILE/lo/apache-ant-1.10.15/bin/ant"
        SetScript: Expand-Archive -LiteralPath "$env:PUBLIC/Downloads/apache-ant-1.10.15-bin.zip" -Destination "$env:USERPROFILE/lo/"
    - resource: xPSDesiredStateConfiguration/xScript
      id: meson-extract
      dependsOn:
        - lodir
      directives:
        description: extract meson to the ~/lo directory
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/lo/meson-1.7.2/meson.py"
        GetScript:  Test-Path -Path "$env:USERPROFILE/lo/meson-1.7.2/meson.py"
        SetScript: Expand-Archive -LiteralPath "$env:PUBLIC/Downloads/meson-1.7.2.zip" -Destination "$env:USERPROFILE/lo/"
    - resource: xPSDesiredStateConfiguration/xScript
      id: spp-extract
      dependsOn:
        - lodir
      directives:
        description: extract strawberry-perl-portable to the ~/lo directory
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/lo/spp/perl/bin/perl.exe"
        GetScript:  Test-Path -Path "$env:USERPROFILE/lo/spp/perl/bin/perl.exe"
        SetScript: Expand-Archive -LiteralPath "$env:PUBLIC/Downloads/strawberry-perl-5.40.0.1-64bit-portable.zip" -Destination "$env:USERPROFILE/lo/spp"
    - resource: xPSDesiredStateConfiguration/xScript
      id: spp-install-font-ttf
      dependsOn:
        - spp-extract
      directives:
        description: install perl-font-TTF to spp via cpan
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/lo/spp/perl/site/lib/Font/TTF.pm"
        GetScript:  Test-Path -Path "$env:USERPROFILE/lo/spp/perl/site/lib/Font/TTF.pm"
        SetScript: |
          $env:Path = "$env:USERPROFILE/lo/spp/c/bin;$env:USERPROFILE/lo/spp/perl/bin;$env:path"
          cpanm Font::TTF
    - resource: xPSDesiredStateConfiguration/xScript
      id: jom
      dependsOn:
        - bindir
        - lodir
      directives:
        description: extract and copy jom to the ~/bin directory
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/bin/jom.exe"
        GetScript:  Test-Path -Path "$env:USERPROFILE/bin/jom.exe"
        SetScript: |
          Expand-Archive -LiteralPath "$env:PUBLIC/Downloads/jom_1_1_4.zip" -Destination "$env:USERPROFILE/lo/jom_unpack"
          Copy-Item -LiteralPath "$env:USERPROFILE/lo/jom_unpack/jom.exe" -Destination "$env:USERPROFILE/bin/jom.exe"
          Remove-Item -LiteralPath "$env:USERPROFILE/lo/jom_unpack" -Recurse
    - resource: xPSDesiredStateConfiguration/xScript
      id: gitsettings
      directives:
        description: configure git to use protocol.version 2 and core.autocrlf false
      settings:
        TestScript: return $false
        GetScript:  return $false
        SetScript: |
          git config --global core.autocrlf false
          git config --global protocol.version 2
    - resource: xPSDesiredStateConfiguration/xScript
      id: autogensnippet
      dependsOn:
        - lodir
      directives:
        description: create an autogen.input snippet with some sensible defaults
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/lo/autogen.input"
        GetScript:  Test-Path -Path "$env:USERPROFILE/lo/autogen.input"
        SetScript: |
          New-Item -Path "$env:USERPROFILE/lo" -Name "autogen.input" -ItemType "file" -Value "# adjust to your needs
          --host=x86_64-pc-cygwin
          #--host=i686-pc-cygwin
          --disable-ccache
          --with-visual-studio=2022
          --enable-python=fully-internal
          --without-lxml
          --disable-online-update
          --with-external-tar=$env:USERPROFILE\lo\lo-externaltar
          --with-strawberry-perl-portable=$env:USERPROFILE\lo\spp
          --with-ant-home=$env:USERPROFILE\lo\apache-ant-1.10.15
          --with-junit=$env:USERPROFILE\lo\junit-4.10.jar
          --with-doxygen=$env:USERPROFILE\lo\spp\c\bin\doxygen.exe
          #--enable-odk
          #--disable-dependency-tracking
          #--enable-dbgutil
          #--with-lang=fr ja
          MESON=$env:USERPROFILE\lo\meson-1.7.2\meson.py
          PKG_CONFIG=pkgconf-2.4.3.exe
          "
    - resource: xPSDesiredStateConfiguration/xScript
      id: cloud-init-dir
      directives:
        description: create the ~/.cloud-init directory
      settings:
        TestScript: Test-Path -Path "$env:UserProfile/.cloud-init" -PathType "Container"
        GetScript:  Test-Path -Path "$env:UserProfile/.cloud-init" -PathType "Container"
        SetScript: New-Item -ItemType "directory" -Path "$env:UserProfile" -Name ".cloud-init"
    - resource: xPSDesiredStateConfiguration/xScript
      id: cloud-init-config
      dependsOn:
        - cloud-init-dir
      directives:
        description: create a cloud-init configuration to automate the installation of Ubuntu 24.04
      settings:
        TestScript: Test-Path -Path "$env:USERPROFILE/.cloud-init/Ubuntu-24.04.user-data"
        GetScript:  Test-Path -Path "$env:USERPROFILE/.cloud-init/Ubuntu-24.04.user-data"
        SetScript: |
          New-Item -Path "$env:USERPROFILE/.cloud-init" -Name "Ubuntu-24.04.user-data" -ItemType "file" -Value '#cloud-config
          users:
            - name: ubuntu
              # ubuntu
              password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
              groups: [user, adm, dialout, cdrom, floppy, sudo, audio, dip, video, plugdev, netdev]
              shell: /bin/bash

          write_files:
          - path: /etc/wsl.conf
            append: true
            content: |
              [user]
              default=ubuntu

          packages: [pkg-config, automake, make, gperf, bison, nasm, flex, zip, libfont-ttf-perl]
          '
    - resource: xPSDesiredStateConfiguration/xScript
      id: install-Ubuntu
      dependsOn:
        - cloud-init-config
      directives:
        description: installs Ubuntu with help of the cloud-init file
      settings:
        TestScript: wsl.exe --list ; return ![bool]$LASTEXITCODE
        GetScript:  wsl.exe --list ; return ![bool]$LASTEXITCODE
        SetScript: |
          wsl.exe --install --no-launch --distribution Ubuntu-24.04
          ubuntu2404.exe install --root
          ubuntu2404.exe run cloud-init status --wait
  configurationVersion: 0.2.0

[ Konzepte0.43Was zu einem Entwurf gehört  Wie die Entwicklung von Software durchgeführt wird  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge