This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CODECOMPOSER: Installing CCS 20.2.0 into a Docker container

Part Number: CODECOMPOSER

Tool/software:

Hi Folks -

We are using Code Composer Studio 20.2.0 to build our MSP430 project. I recently discovered the documentation on building projects from the command line, and it's been great for our team to be able to quickly run builds without starting up the IDE. As a next step, I'm trying to get the CCS build tools installed inside a Docker container image so we can run these builds from our CI/CD pipeline.

Doing some research around the forums, I've discovered the options to run the installer from the command line in unattended mode. This is the current command we are working with:

CCS_20.2.0.00012_linux/ccs_setup_20.2.0.00012.run \
  --unattendedmodeui none --mode unattended --prefix /opt/ti/ccs --enable-components PF_MSP430,PF_MSP432

The install is failing on one of the components that appears to require access to udev:

Script output:
 Problem running post-install step. Installation may not complete correctly
 Error running /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Install/bh_driver_install.sh --install: cp: cannot create regular file '/etc/udev/rules.d/71-bh-permissions.rules': No such file or directory

The purpose of this container is only to build the code, so we do not need any components related to JTAG or device debugging, but I cannot figure out how to disable them during the install. Does anyone have experience with setting up this version inside a Docker container for CI builds?

Our container image is currently based on Ubuntu 24.04.

Full component install log attached:

Log started 06/26/2025 at 01:58:37
Preferred installation mode : unattended
Trying to init installer in mode unattended
Mode unattended successfully initialized
[01:58:37] DEBUG:  Backing up USCIF.OUT
Preparing to Install
Preparing to Install
Directory already exists: /opt/ti/ccs/ccs/ccs_base
Directory already exists: /opt/ti/ccs/ccs/ccs_base/emulation
Creating directory /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk
Creating directory /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Bh560v2
Creating directory /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Bh560v2/firmware
Creating directory /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Docs
Directory already exists: /opt/ti/ccs/ccs/ccs_base/common
Directory already exists: /opt/ti/ccs/ccs/ccs_base/common/uscif
Unpacking files
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/BH-SLA-01.rtf
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/BH-SLA-01.txt
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/BH560v2-Config.ico
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/blackhawk.ico
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/ReadMe.txt
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Bh560v2/firmware/ReadMe.txt
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Docs/ReadMe.htm
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/Bh560v2Config.properties
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/logo.jpg
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/Bh560v2Config.jar
Directory already exists: /opt/ti/ccs/ccs/ccs_base
Directory already exists: /opt/ti/ccs/ccs/ccs_base/common
Directory already exists: /opt/ti/ccs/ccs/ccs_base/common/uscif
Directory already exists: /opt/ti/ccs/ccs/ccs_base/emulation
Directory already exists: /opt/ti/ccs/ccs/ccs_base/emulation/drivers
Directory already exists: /opt/ti/ccs/ccs/ccs_base/common
Directory already exists: /opt/ti/ccs/ccs/ccs_base/common/targetdb
Directory already exists: /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections
Directory already exists: /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers
Directory already exists: /opt/ti/ccs/ccs/ccs_base/common/uscif
Directory already exists: /opt/ti/ccs/ccs/ccs_base/emulation
Directory already exists: /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk
Creating directory /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Install
Creating directory /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Utility
Unpacking files
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh510usb_server
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560eth_server
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/libbhemuapi.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhcmapi.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemu28x.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemu55x.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemu6400_11.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemucortexm.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemucortexm0.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemuicepick_c.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemuicepick_d.so
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560v2u_server
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-LAN560_20pin_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-LAN560_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-USB2000_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-USB510L_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-USB510W_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-USB560bp_20pin_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-USB560bp_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-USB560m_20pin_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-USB560m_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-USB560_20pin_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-USB560_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-XDS560v2-LAN_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-XDS560v2-USB_Connection.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/connections/BH-XDS560v2-USB_Mezzanine.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510arm11.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510arm7.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510arm9.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510arp32.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510c28x.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510c55x.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510c646x.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510c64xp.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510c64x_11.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510c669x.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510c66xx.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510c674x.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510c6x.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cla.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cla1.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cortexA.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cortexA15.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cortexA7.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cortexA9.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cortexM.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cortexM0.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cortexR.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510csstm.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cs_child.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510cs_dap.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510dap_pc.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510etb11.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510etbcs.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510icepick_c.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510icepick_d.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510iLF.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510iME.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510iva2_arp32.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510iva2_calc5.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510iva2_ecd5.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510iva2_ilf5.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510iva2_ime5.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510iva2_ipe5.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510iva2_mc5.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/targetdb/drivers/bhemu510pru.xml
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh510w-wifi.cfg
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560v2-dbgjtag.sh
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560v2-help.sh
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/Bh560v2Config_start.sh
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/BH560v2-Config.PNG
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/BH560v2-Help.PNG
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Install/71-bh-permissions.rules
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Install/bh_driver_install.sh
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Utility/ReadMe.txt
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/BhEthStatus
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bhnetcfg
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560eth_io.so
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560ubp_io.so
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560usbm_io.so
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560usb_io.so
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560usb_server
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/libbh560v2e_io.so
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/libbh560v2u_io.so
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/libbhemujscl.so
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/libxds560v1_ecom.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemu6000.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemu6400_plus.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemuarm7.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemuarm9.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemucortexa.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemucortexa15.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemucortexa7.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemucortexa9.so
Unpacking /opt/ti/ccs/ccs/ccs_base/emulation/drivers/libbhemucortexr.so
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560eth.out
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560ubp.out
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560usb.out
Unpacking /opt/ti/ccs/ccs/ccs_base/common/uscif/bh560usbm.out
[01:58:37] DEBUG_x64: Changing File Permissions 755 (common/uscif, emulation/drivers, emulation/Blackhawk/Install)
LINUX
[01:58:37] DEBUG:  USCIF.OUT exists or BHUSCIF.OUT does not exist.
[01:58:37] DEBUG: Cleaning Up BHUSCIF.OUT
Creating Uninstaller
Creating uninstaller 25%
Creating uninstaller 50%
Creating uninstaller 75%
Creating uninstaller 100%
Installation completed
LINUX
[01:58:38] DEBUG: Changing File Permissions 755 (uninstallers: /opt/ti/ccs/ccs/uninstallers/{uninstall_bh_emupack})
[01:58:38] DEBUG: Changing File Permissions 666 (log file: /tmp/bitrock_installer.log)
[01:58:38] DEBUG: Running script to install device driver RULES file.
Executing /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Install/bh_driver_install.sh --install
Script exit code: 1

Script output:
 ERROR: failed to copy /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Install/71-bh-permissions.rules to /etc/udev/rules.d/71-bh-permissions.rules

Script stderr:
 cp: cannot create regular file '/etc/udev/rules.d/71-bh-permissions.rules': No such file or directory

Error running /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Install/bh_driver_install.sh --install: cp: cannot create regular file '/etc/udev/rules.d/71-bh-permissions.rules': No such file or directory
Problem running post-install step. Installation may not complete correctly
 Error running /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Install/bh_driver_install.sh --install: cp: cannot create regular file '/etc/udev/rules.d/71-bh-permissions.rules': No such file or directory
Problem running post-install step. Installation may not complete correctly
 Error running /opt/ti/ccs/ccs/ccs_base/emulation/Blackhawk/Install/bh_driver_install.sh --install: cp: cannot create regular file '/etc/udev/rules.d/71-bh-permissions.rules': No such file or directory
Log finished 06/26/2025 at 01:58:38

  • Thank you for the reference and apologies that I did not find it these posts searching the forums.

    I've managed to get past the install successfully by "faking" udev as follows in the container build:

    ln -s /bin/true /usr/local/bin/udevadm \
      && ln -s /bin/true /sbin/start_udev \
      && mkdir -p /etc/udev/rules.d

    We will watch intently for a resolution to this: https://sir.ext.ti.com/jira/browse/EXT_EP-12145

  • Even though the installer is now completing successfully, CCS doesn't appear to be properly installed.

    Running a CLI build appears to do nothing like the CCS binary isn't actually running:

    $ ccs-server-cli.sh -noSplash -workspace /tmp/workspace -application projectBuild -ccs.buildType clean
    Building workspace: /tmp/workspace/...
    
    # ================================================================================
    # [Thu Jun 26 20:25:24 UTC 2025]: CCS headless build starting... 
    
    
    # ----------------------------------------
    
    # --------------------------------------------------------------------------------
    # [Thu Jun 26 20:25:24 UTC 2025]: CCS headless build complete - 0 out of 0 projects have errors
    
    Job found still running after platform shutdown.  Jobs should be canceled by the plugin that scheduled them during shutdown: com.ti.ccs.project.devices.DeviceModelLoader$InitializationJob$2

    Does the unattended installer verify that all the necessary dependencies are installed in the environment? If not, is there a complete list in the documentation somewhere?

  • Never mind on this, it was an unrelated problem to the way the Theia workspace was set up. With the previous change, we can successfully invoke the build tools inside a container.