![]() Therefore, once you do you’ll need to manually delete languages.csv to have make build it again. Since that isn’t a prerequisite, make won’t recognize that languages.csv is out of date even if you fix the bug. Now imagine there is a bug in extract_languages.py. Problem 2: defects in missing dependencies □ DELETE_ON_ERROR prevents this from occurring. If an empty languages.csv didn’t cause problems downstream, make would successfully complete, possibly without the developer realizing the build targets are invalid. It’s easy to imagine a developer-especially one not familiar with the project-rerunning make without fixing the error. However, imagine this rule is part of a complex makefile which was run in parallel. Thus languages.csv will be empty, although make considers it up to date.įixing the syntax error in projects.json increments its last modified time and informs make that it needs to rebuild languages.csv. You run our example makefile and extract_languages.py has a non-zero exit status-but not before the shell’s output redirection truncates language.csv and updates its last modified time. Imagine that you introduce a syntax error while updating projects.json. Problem 1: rerunning Make with invalid targets □ DELETE_ON_ERROR special target, then make deletes the target file if a recipe has an error. This behavior is often confusing and may lead to malformed build artifacts. Thus, next time make runs it won’t update the target file. If the target file was altered prior to exiting, then its last modified time will indicate that it’s up to date-even though it’s likely corrupt or incomplete. Make executes each recipe line in a new shell, one by one, and quits if an invocation exits with a non-zero status. If a prerequisite is newer than the target (or doesn’t exist), then make runs the recipe. Make processes a rule when it compares the last modification time of the target to that of its prerequisites. DELETE_ON_ERROR is the target of a rule, even though it has no prerequisites and no recipe. Python extract_languages.py projects.json > languages.csvĪ trailing colon signals that. Software related to the Haskell language.DELETE_ON_ERROR : languages.csv : projects.json Software related to the GNUstep desktop environment. ![]() If the port speaks both FTP and HTTP, put it in ftp with a secondary category of www. Monetary, financial and related applications. ![]() Ports related to the Enlightenment window manager. X-based ones go to x11 and text-based ones to either comms or misc, depending on the exact functionality. It also includes course-writing applications, course-delivery applications, and classroom or school management applications This includes applications, utilities, or games primarily or substantially designed to help the user learn a specific topic or study in general. For example, a mathematical-formula editor will go in math, and have editors as a second category. Specialized editors go in the section for those tools. They should not be in this category unless they truly do not belong anywhere else. Things that used to be on the desktop before computers were invented.ĭo not put libraries here just because they are libraries. Mostly software to talk to the serial port. Ports to support the AfterStep window manager. Paper size hardcoded at package build timeįor non-virtual categories, there is a one-line description in COMMENT in that subdirectory’s Makefile. In that case, pl1 means patch level, so using DISTVERSION is not possible. No version in the filename, use what upstream says it is This is version 1 of mule, and version 2 already exists Package Naming Examples Distribution Name Here are some (real) examples on how to convert the name as called by the software authors to a suitable package name, for each line, only one of DISTVERSION or PORTVERSION is set in, depending on which would be used in the port’s Makefile: Table 2. Portscout: the FreeBSD Ports Distfile Scanner The Web Interface to the Source Repository ![]() Generic BROKEN/ IGNORE/ DEPRECATED Messages Marking a Port for Removal with DEPRECATED or EXPIRATION_DATE Marking a Port Not Installable with BROKEN, FORBIDDEN, or IGNORE Use the exec Statement in Wrapper Scripts Differentiating Operating Systems and OS Versions Changing pkg-plist Based on Make Variables Starting and Stopping Services ( rc Scripts) Ports with Distribution Restrictions or Legal Concerns Use BINARY_ALIAS to Rename Commands Instead of Patching the Build
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |