actflow
actflow copied to clipboard
Automated gnu/linux build
@rmanohar please let me know what changes you would like, it is now ready for review
This Pull request implements an automated build
for a gnu/linux package which is uploaded to github releases. they are pulished automatically: see https://github.com/bics-rug/yale-asyncvlsi-actflow/releases .
this package is very distribution independent and should work out of the box on most systems with kernel 3.10 and newer.
it depends on the pre build dependencies currently in https://github.com/bics-rug/actflow-dependencies
actsim is build with xyce support, magic, yosys and abc is also included.
It adds the additional packaging scripts in packaging it adds linker tests and test runners in tests it uses the toplevel build and test scripts
changes in detail:
- circle CI config added (with 3 stages: build, test, deploy, test has substages)
- packaging scripts: scripts that handle the individual steps of creating the release package, they are splitt into numbered files to keep them organized/readable and make external step insertion possible. incl readme and release info. also includes the ci compiler toolchain package install.
- tests: test scripts are added to check that the shared object linker loading works and test suits - if availble - are also executed, there is one file per tool,
- test: scripts that runs all tests in tests
- changes to build:
- the cmake helper functions have the following new arguments: -DCMAKE_LIBRARY_PATH=$ACT_HOME/lib specify that static and dynamic libaries are to be found in act home - not used by all but ignored when not used -DCMAKE_INCLUDE_PATH=$ACT_HOME/include specify that header files are to be found in act home - not used by all but ignored when not used -DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath,'$ORIGIN/../lib' tell the linker to first seach runtime libraries relative to the executable location, and not hard coded/in the standard system locations. -DCMAKE_SHARED_LINKER_FLAGS=-Wl,-rpath,'$ORIGIN/../lib' tell the linker to first seach runtime libraries relative to the library location, and not hard coded/in the standard system locations. -DCMAKE_BUILD_TYPE=Release dont build with debug symbols -DCMAKE_POSITION_INDEPENDENT_CODE=ON build with -PIC option
- some cmake calls have an additional
CTEST_OUTPUT_ON_FAILURE=TRUE make testto run cmake unit test after build, they cant be run from the install package on all OSes as cmake only support build tree testing. ~~3. dflowmap gets patchd to search for expropt (can be removed if the PR is merged)~~ - the normal act configure gets additional CFLAGS="-I${ACT_HOME}/include -L${ACT_HOME}/lib" to configure all act make builds to search their headers and libraries in act_home additionally to the standard locations
- for act sim see if a xyce.in file exists in act_home/include and copy it in, as we just import the prebuild dependencies but not the cmake build trees.
- libgalios is sym linked relative now otherwise the symlik would be corrupt in the package
steps that i cant do:
- [x] merge the test patch PRs https://github.com/asyncvlsi/actsim/pull/1 https://github.com/asyncvlsi/chp2prs/pull/21 https://github.com/asyncvlsi/layout/pull/1
- [x] optionally merge the dflowmap expropt patch https://github.com/asyncvlsi/dflowmap/pull/2
- [x] update actflow subrepos act, actsim, chp2prs, dali and layout after merging the above PRs
- [ ] transfer or fork repository actflow-dependencies and maybe add me as a dev so i can update the source references from time to time go to https://github.com/bics-rug/actflow-dependencies/settings -> Transfer ownership -> asyncvlsi
- [ ] merge this PR
- [ ] add both repositories in circleci, and cancel any automatically started runs.
- [ ] create a bot-user eg asyncvlsi-bot or act-bot, give it dev access to both repos
- [ ] create a token with permission repo_public for that user
- [ ] add to both circleci settings the environment variables GITHUB_TOKEN = [token from previous step]
- [ ] trigger run of actflow-dependencies takes ca 3h10
- [ ] after trigger actflow in circleci and after 30-40 min the release should be published
making releases permanent:
is described in readme
@rmanohar the pull request would now be ready for your review, let me know if i shoud rework something, in case you want to merge i made a list of steps to do in the description above, i also tried to explain a bit better what is happening.
CircleCI config has already been added to the repo; closing.